occam-verify-cli 1.0.984 → 1.0.985
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/action/verify.js +22 -27
- package/lib/constants.js +1 -41
- package/lib/index.js +1 -2
- package/lib/utilities/fileContext.js +3 -8
- package/lib/utilities/releaseContext.js +2 -2
- package/package.json +5 -6
- package/src/action/verify.js +8 -18
- package/src/constants.js +0 -10
- package/src/index.js +0 -2
- package/src/utilities/fileContext.js +1 -2
- package/src/utilities/releaseContext.js +1 -1
- package/lib/context/aphasic.js +0 -27
- package/lib/context/bounded.js +0 -244
- package/lib/context/branching.js +0 -61
- package/lib/context/file/nominal.js +0 -586
- package/lib/context/illative.js +0 -28
- package/lib/context/liminal.js +0 -200
- package/lib/context/literal.js +0 -44
- package/lib/context/mnemic.js +0 -454
- package/lib/context/nested.js +0 -31
- package/lib/context/nominal.js +0 -57
- package/lib/context/phaneric.js +0 -44
- package/lib/context/thetic.js +0 -28
- package/lib/context.js +0 -445
- package/lib/element/assertion/contained.js +0 -218
- package/lib/element/assertion/defined.js +0 -213
- package/lib/element/assertion/property.js +0 -176
- package/lib/element/assertion/signature.js +0 -170
- package/lib/element/assertion/subproof.js +0 -220
- package/lib/element/assertion/type.js +0 -227
- package/lib/element/assertion.js +0 -49
- package/lib/element/assumption/metaLevel.js +0 -244
- package/lib/element/assumption.js +0 -252
- package/lib/element/combinator/bracketed.js +0 -36
- package/lib/element/combinator.js +0 -104
- package/lib/element/conclusion.js +0 -131
- package/lib/element/constructor/bracketed.js +0 -57
- package/lib/element/constructor.js +0 -129
- package/lib/element/declaration/combinator.js +0 -58
- package/lib/element/declaration/complexType.js +0 -180
- package/lib/element/declaration/constructor.js +0 -93
- package/lib/element/declaration/metavariable.js +0 -77
- package/lib/element/declaration/property.js +0 -88
- package/lib/element/declaration/simpleType.js +0 -148
- package/lib/element/declaration/typePrefix.js +0 -53
- package/lib/element/declaration/variable.js +0 -99
- package/lib/element/declaration.js +0 -15
- package/lib/element/deduction.js +0 -131
- package/lib/element/derivation.js +0 -46
- package/lib/element/equality.js +0 -211
- package/lib/element/equivalence.js +0 -200
- package/lib/element/error.js +0 -27
- package/lib/element/frame.js +0 -238
- package/lib/element/hypothesis.js +0 -135
- package/lib/element/judgement.js +0 -212
- package/lib/element/label.js +0 -135
- package/lib/element/metaType.js +0 -57
- package/lib/element/metavariable.js +0 -452
- package/lib/element/parameter.js +0 -69
- package/lib/element/procedureCall.js +0 -116
- package/lib/element/procedureReference.js +0 -56
- package/lib/element/proof.js +0 -52
- package/lib/element/proofAssertion/premise.js +0 -238
- package/lib/element/proofAssertion/step.js +0 -235
- package/lib/element/proofAssertion/supposition.js +0 -249
- package/lib/element/proofAssertion.js +0 -56
- package/lib/element/property.js +0 -176
- package/lib/element/propertyRelation.js +0 -132
- package/lib/element/reference.js +0 -227
- package/lib/element/rule.js +0 -242
- package/lib/element/section.js +0 -64
- package/lib/element/signature.js +0 -195
- package/lib/element/statement.js +0 -228
- package/lib/element/subDerivation.js +0 -46
- package/lib/element/subproof.js +0 -91
- package/lib/element/substitution/frame.js +0 -256
- package/lib/element/substitution/reference.js +0 -192
- package/lib/element/substitution/statement.js +0 -294
- package/lib/element/substitution/term.js +0 -266
- package/lib/element/substitution.js +0 -183
- package/lib/element/term.js +0 -217
- package/lib/element/topLevelAssertion/axiom.js +0 -158
- package/lib/element/topLevelAssertion/conjecture.js +0 -42
- package/lib/element/topLevelAssertion/lemma.js +0 -39
- package/lib/element/topLevelAssertion/theorem.js +0 -42
- package/lib/element/topLevelAssertion.js +0 -286
- package/lib/element/topLevelMetaAssertion/metaLemma.js +0 -42
- package/lib/element/topLevelMetaAssertion/metatheorem.js +0 -42
- package/lib/element/topLevelMetaAssertion.js +0 -179
- package/lib/element/type.js +0 -240
- package/lib/element/typePrefix.js +0 -85
- package/lib/element/variable.js +0 -206
- package/lib/elements.js +0 -27
- package/lib/metaTypeNames.js +0 -26
- package/lib/metaTypes.js +0 -66
- package/lib/node/argument.js +0 -31
- package/lib/node/assertion/contained.js +0 -51
- package/lib/node/assertion/defined.js +0 -47
- package/lib/node/assertion/property.js +0 -36
- package/lib/node/assertion/signature.js +0 -32
- package/lib/node/assertion/subproof.js +0 -28
- package/lib/node/assertion/type.js +0 -32
- package/lib/node/assertion.js +0 -18
- package/lib/node/assumption/metaLevel.js +0 -27
- package/lib/node/assumption.js +0 -27
- package/lib/node/body/axiom.js +0 -23
- package/lib/node/body/conjecture.js +0 -23
- package/lib/node/body/lemma.js +0 -23
- package/lib/node/body/metaLemma.js +0 -23
- package/lib/node/body/metatheorem.js +0 -23
- package/lib/node/body/rule.js +0 -44
- package/lib/node/body/theorem.js +0 -23
- package/lib/node/body.js +0 -31
- package/lib/node/combinator.js +0 -23
- package/lib/node/conclusion.js +0 -27
- package/lib/node/constructor.js +0 -23
- package/lib/node/declaration/combinator.js +0 -28
- package/lib/node/declaration/complexType.js +0 -72
- package/lib/node/declaration/constructor.js +0 -47
- package/lib/node/declaration/metavariable.js +0 -36
- package/lib/node/declaration/property.js +0 -44
- package/lib/node/declaration/simpleType.js +0 -72
- package/lib/node/declaration/typePrefix.js +0 -32
- package/lib/node/declaration/variable.js +0 -51
- package/lib/node/declaration.js +0 -18
- package/lib/node/deduction.js +0 -27
- package/lib/node/derivation.js +0 -26
- package/lib/node/document.js +0 -18
- package/lib/node/equality.js +0 -33
- package/lib/node/equivalence.js +0 -23
- package/lib/node/equivalences.js +0 -18
- package/lib/node/error.js +0 -18
- package/lib/node/frame.js +0 -38
- package/lib/node/header/axiom.js +0 -28
- package/lib/node/header/conjecture.js +0 -23
- package/lib/node/header/lemma.js +0 -23
- package/lib/node/header/metaLemma.js +0 -23
- package/lib/node/header/metatheorem.js +0 -23
- package/lib/node/header/rule.js +0 -23
- package/lib/node/header/theorem.js +0 -23
- package/lib/node/header.js +0 -47
- package/lib/node/hypothesis.js +0 -27
- package/lib/node/judgement.js +0 -31
- package/lib/node/label.js +0 -23
- package/lib/node/labels.js +0 -23
- package/lib/node/metaArgument.js +0 -23
- package/lib/node/metaType.js +0 -30
- package/lib/node/metavariable.js +0 -39
- package/lib/node/parameter.js +0 -47
- package/lib/node/parenthesisedLabel.js +0 -23
- package/lib/node/parenthesisedLabels.js +0 -27
- package/lib/node/placeholder.js +0 -18
- package/lib/node/procedureCall.js +0 -31
- package/lib/node/procedureReference.js +0 -30
- package/lib/node/proof.js +0 -23
- package/lib/node/proofAssertion/premise.js +0 -28
- package/lib/node/proofAssertion/step.js +0 -52
- package/lib/node/proofAssertion/supposition.js +0 -28
- package/lib/node/proofAssertion.js +0 -27
- package/lib/node/property.js +0 -30
- package/lib/node/propertyRelation.js +0 -31
- package/lib/node/qualification.js +0 -27
- package/lib/node/reference.js +0 -23
- package/lib/node/rule.js +0 -43
- package/lib/node/section.js +0 -39
- package/lib/node/signature.js +0 -23
- package/lib/node/statement.js +0 -103
- package/lib/node/subDerivation.js +0 -26
- package/lib/node/subproof.js +0 -35
- package/lib/node/substitution/frame.js +0 -40
- package/lib/node/substitution/reference.js +0 -40
- package/lib/node/substitution/statement.js +0 -60
- package/lib/node/substitution/term.js +0 -40
- package/lib/node/substitution.js +0 -18
- package/lib/node/term.js +0 -60
- package/lib/node/topLevelAssertion/axiom.js +0 -26
- package/lib/node/topLevelAssertion/conjecture.js +0 -26
- package/lib/node/topLevelAssertion/lemma.js +0 -26
- package/lib/node/topLevelAssertion/theorem.js +0 -26
- package/lib/node/topLevelAssertion.js +0 -46
- package/lib/node/topLevelMetaAssertion/metaLemma.js +0 -26
- package/lib/node/topLevelMetaAssertion/metatheorem.js +0 -26
- package/lib/node/topLevelMetaAssertion.js +0 -42
- package/lib/node/type.js +0 -60
- package/lib/node/typePrefix.js +0 -30
- package/lib/node/types.js +0 -23
- package/lib/node/variable.js +0 -30
- package/lib/nominal/lexer.js +0 -15
- package/lib/nominal/parser.js +0 -24
- package/lib/nonTerminalNodeMap.js +0 -189
- package/lib/pass/zip.js +0 -23
- package/lib/preamble.js +0 -73
- package/lib/process/assign.js +0 -62
- package/lib/process/discharge.js +0 -38
- package/lib/process/equate.js +0 -73
- package/lib/process/instantiate.js +0 -261
- package/lib/process/unification.js +0 -228
- package/lib/process/unify.js +0 -336
- package/lib/process/validate.js +0 -135
- package/lib/process/validation.js +0 -291
- package/lib/process/verify.js +0 -205
- package/lib/ruleNames.js +0 -350
- package/lib/tokenTypes.js +0 -22
- package/lib/utilities/assignment.js +0 -47
- package/lib/utilities/bnf.js +0 -21
- package/lib/utilities/brackets.js +0 -77
- package/lib/utilities/breakPoint.js +0 -38
- package/lib/utilities/context.js +0 -220
- package/lib/utilities/element.js +0 -1851
- package/lib/utilities/equivalence.js +0 -27
- package/lib/utilities/equivalences.js +0 -134
- package/lib/utilities/instance.js +0 -44
- package/lib/utilities/json.js +0 -1109
- package/lib/utilities/string.js +0 -231
- package/lib/utilities/substitutions.js +0 -86
- package/lib/utilities/synoptic.js +0 -159
- package/lib/utilities/type.js +0 -27
- package/src/context/aphasic.js +0 -15
- package/src/context/bounded.js +0 -362
- package/src/context/branching.js +0 -69
- package/src/context/file/nominal.js +0 -955
- package/src/context/illative.js +0 -17
- package/src/context/liminal.js +0 -280
- package/src/context/literal.js +0 -42
- package/src/context/mnemic.js +0 -778
- package/src/context/nested.js +0 -21
- package/src/context/nominal.js +0 -62
- package/src/context/phaneric.js +0 -43
- package/src/context/thetic.js +0 -17
- package/src/context.js +0 -722
- package/src/element/assertion/contained.js +0 -313
- package/src/element/assertion/defined.js +0 -310
- package/src/element/assertion/property.js +0 -252
- package/src/element/assertion/signature.js +0 -239
- package/src/element/assertion/subproof.js +0 -335
- package/src/element/assertion/type.js +0 -328
- package/src/element/assertion.js +0 -65
- package/src/element/assumption/metaLevel.js +0 -373
- package/src/element/assumption.js +0 -374
- package/src/element/combinator/bracketed.js +0 -32
- package/src/element/combinator.js +0 -145
- package/src/element/conclusion.js +0 -185
- package/src/element/constructor/bracketed.js +0 -68
- package/src/element/constructor.js +0 -188
- package/src/element/declaration/combinator.js +0 -66
- package/src/element/declaration/complexType.js +0 -257
- package/src/element/declaration/constructor.js +0 -122
- package/src/element/declaration/metavariable.js +0 -93
- package/src/element/declaration/property.js +0 -108
- package/src/element/declaration/simpleType.js +0 -208
- package/src/element/declaration/typePrefix.js +0 -58
- package/src/element/declaration/variable.js +0 -130
- package/src/element/declaration.js +0 -7
- package/src/element/deduction.js +0 -185
- package/src/element/derivation.js +0 -57
- package/src/element/equality.js +0 -325
- package/src/element/equivalence.js +0 -276
- package/src/element/error.js +0 -26
- package/src/element/frame.js +0 -356
- package/src/element/hypothesis.js +0 -186
- package/src/element/judgement.js +0 -303
- package/src/element/label.js +0 -186
- package/src/element/metaType.js +0 -75
- package/src/element/metavariable.js +0 -662
- package/src/element/parameter.js +0 -90
- package/src/element/procedureCall.js +0 -159
- package/src/element/procedureReference.js +0 -71
- package/src/element/proof.js +0 -61
- package/src/element/proofAssertion/premise.js +0 -354
- package/src/element/proofAssertion/step.js +0 -271
- package/src/element/proofAssertion/supposition.js +0 -377
- package/src/element/proofAssertion.js +0 -74
- package/src/element/property.js +0 -258
- package/src/element/propertyRelation.js +0 -193
- package/src/element/reference.js +0 -345
- package/src/element/rule.js +0 -358
- package/src/element/section.js +0 -78
- package/src/element/signature.js +0 -292
- package/src/element/statement.js +0 -358
- package/src/element/subDerivation.js +0 -56
- package/src/element/subproof.js +0 -116
- package/src/element/substitution/frame.js +0 -392
- package/src/element/substitution/reference.js +0 -274
- package/src/element/substitution/statement.js +0 -452
- package/src/element/substitution/term.js +0 -407
- package/src/element/substitution.js +0 -261
- package/src/element/term.js +0 -339
- package/src/element/topLevelAssertion/axiom.js +0 -244
- package/src/element/topLevelAssertion/conjecture.js +0 -40
- package/src/element/topLevelAssertion/lemma.js +0 -42
- package/src/element/topLevelAssertion/theorem.js +0 -40
- package/src/element/topLevelAssertion.js +0 -436
- package/src/element/topLevelMetaAssertion/metaLemma.js +0 -40
- package/src/element/topLevelMetaAssertion/metatheorem.js +0 -40
- package/src/element/topLevelMetaAssertion.js +0 -276
- package/src/element/type.js +0 -374
- package/src/element/typePrefix.js +0 -113
- package/src/element/variable.js +0 -259
- package/src/elements.js +0 -13
- package/src/metaTypeNames.js +0 -5
- package/src/metaTypes.js +0 -71
- package/src/node/argument.js +0 -30
- package/src/node/assertion/contained.js +0 -53
- package/src/node/assertion/defined.js +0 -46
- package/src/node/assertion/property.js +0 -30
- package/src/node/assertion/signature.js +0 -23
- package/src/node/assertion/subproof.js +0 -16
- package/src/node/assertion/type.js +0 -23
- package/src/node/assertion.js +0 -7
- package/src/node/assumption/metaLevel.js +0 -23
- package/src/node/assumption.js +0 -23
- package/src/node/body/axiom.js +0 -7
- package/src/node/body/conjecture.js +0 -7
- package/src/node/body/lemma.js +0 -7
- package/src/node/body/metaLemma.js +0 -7
- package/src/node/body/metatheorem.js +0 -7
- package/src/node/body/rule.js +0 -42
- package/src/node/body/theorem.js +0 -7
- package/src/node/body.js +0 -30
- package/src/node/combinator.js +0 -16
- package/src/node/conclusion.js +0 -23
- package/src/node/constructor.js +0 -16
- package/src/node/declaration/combinator.js +0 -16
- package/src/node/declaration/complexType.js +0 -88
- package/src/node/declaration/constructor.js +0 -46
- package/src/node/declaration/metavariable.js +0 -30
- package/src/node/declaration/property.js +0 -42
- package/src/node/declaration/simpleType.js +0 -87
- package/src/node/declaration/typePrefix.js +0 -24
- package/src/node/declaration/variable.js +0 -53
- package/src/node/declaration.js +0 -7
- package/src/node/deduction.js +0 -23
- package/src/node/derivation.js +0 -19
- package/src/node/document.js +0 -7
- package/src/node/equality.js +0 -35
- package/src/node/equivalence.js +0 -16
- package/src/node/equivalences.js +0 -7
- package/src/node/error.js +0 -7
- package/src/node/frame.js +0 -40
- package/src/node/header/axiom.js +0 -16
- package/src/node/header/conjecture.js +0 -7
- package/src/node/header/lemma.js +0 -7
- package/src/node/header/metaLemma.js +0 -7
- package/src/node/header/metatheorem.js +0 -7
- package/src/node/header/rule.js +0 -7
- package/src/node/header/theorem.js +0 -7
- package/src/node/header.js +0 -54
- package/src/node/hypothesis.js +0 -23
- package/src/node/judgement.js +0 -30
- package/src/node/label.js +0 -16
- package/src/node/labels.js +0 -16
- package/src/node/metaArgument.js +0 -16
- package/src/node/metaType.js +0 -26
- package/src/node/metavariable.js +0 -42
- package/src/node/parameter.js +0 -51
- package/src/node/parenthesisedLabel.js +0 -16
- package/src/node/parenthesisedLabels.js +0 -23
- package/src/node/placeholder.js +0 -7
- package/src/node/procedureCall.js +0 -30
- package/src/node/procedureReference.js +0 -26
- package/src/node/proof.js +0 -16
- package/src/node/proofAssertion/premise.js +0 -16
- package/src/node/proofAssertion/step.js +0 -52
- package/src/node/proofAssertion/supposition.js +0 -16
- package/src/node/proofAssertion.js +0 -23
- package/src/node/property.js +0 -28
- package/src/node/propertyRelation.js +0 -30
- package/src/node/qualification.js +0 -23
- package/src/node/reference.js +0 -16
- package/src/node/rule.js +0 -51
- package/src/node/section.js +0 -44
- package/src/node/signature.js +0 -16
- package/src/node/statement.js +0 -167
- package/src/node/subDerivation.js +0 -19
- package/src/node/subproof.js +0 -35
- package/src/node/substitution/frame.js +0 -37
- package/src/node/substitution/reference.js +0 -38
- package/src/node/substitution/statement.js +0 -70
- package/src/node/substitution/term.js +0 -38
- package/src/node/substitution.js +0 -7
- package/src/node/term.js +0 -75
- package/src/node/topLevelAssertion/axiom.js +0 -13
- package/src/node/topLevelAssertion/conjecture.js +0 -13
- package/src/node/topLevelAssertion/lemma.js +0 -13
- package/src/node/topLevelAssertion/theorem.js +0 -13
- package/src/node/topLevelAssertion.js +0 -58
- package/src/node/topLevelMetaAssertion/metaLemma.js +0 -13
- package/src/node/topLevelMetaAssertion/metatheorem.js +0 -13
- package/src/node/topLevelMetaAssertion.js +0 -51
- package/src/node/type.js +0 -74
- package/src/node/typePrefix.js +0 -26
- package/src/node/types.js +0 -16
- package/src/node/variable.js +0 -26
- package/src/nominal/lexer.js +0 -5
- package/src/nominal/parser.js +0 -12
- package/src/nonTerminalNodeMap.js +0 -261
- package/src/pass/zip.js +0 -19
- package/src/preamble.js +0 -64
- package/src/process/assign.js +0 -53
- package/src/process/discharge.js +0 -33
- package/src/process/equate.js +0 -94
- package/src/process/instantiate.js +0 -198
- package/src/process/unification.js +0 -332
- package/src/process/unify.js +0 -504
- package/src/process/validate.js +0 -174
- package/src/process/validation.js +0 -410
- package/src/process/verify.js +0 -299
- package/src/ruleNames.js +0 -86
- package/src/tokenTypes.js +0 -4
- package/src/utilities/assignment.js +0 -57
- package/src/utilities/bnf.js +0 -20
- package/src/utilities/brackets.js +0 -87
- package/src/utilities/breakPoint.js +0 -29
- package/src/utilities/context.js +0 -223
- package/src/utilities/element.js +0 -2293
- package/src/utilities/equivalence.js +0 -25
- package/src/utilities/equivalences.js +0 -158
- package/src/utilities/instance.js +0 -40
- package/src/utilities/json.js +0 -1273
- package/src/utilities/string.js +0 -282
- package/src/utilities/substitutions.js +0 -93
- package/src/utilities/synoptic.js +0 -135
- package/src/utilities/type.js +0 -19
package/lib/context/mnemic.js
DELETED
|
@@ -1,454 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return MnemicContext;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _necessary = require("necessary");
|
|
12
|
-
const _context = /*#__PURE__*/ _interop_require_default(require("../context"));
|
|
13
|
-
const _synoptic = require("../utilities/synoptic");
|
|
14
|
-
const _json = require("../utilities/json");
|
|
15
|
-
function _interop_require_default(obj) {
|
|
16
|
-
return obj && obj.__esModule ? obj : {
|
|
17
|
-
default: obj
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
const { push } = _necessary.arrayUtilities;
|
|
21
|
-
class MnemicContext extends _context.default {
|
|
22
|
-
constructor(context, terms, frames, properties, equalities, judgements, assertions, statements, signatures, references, assumptions, metavariables, substitutions, propertyRelations){
|
|
23
|
-
super(context);
|
|
24
|
-
this.terms = terms;
|
|
25
|
-
this.frames = frames;
|
|
26
|
-
this.properties = properties;
|
|
27
|
-
this.equalities = equalities;
|
|
28
|
-
this.judgements = judgements;
|
|
29
|
-
this.assertions = assertions;
|
|
30
|
-
this.statements = statements;
|
|
31
|
-
this.signatures = signatures;
|
|
32
|
-
this.references = references;
|
|
33
|
-
this.assumptions = assumptions;
|
|
34
|
-
this.metavariables = metavariables;
|
|
35
|
-
this.substitutions = substitutions;
|
|
36
|
-
this.propertyRelations = propertyRelations;
|
|
37
|
-
}
|
|
38
|
-
getTerms(terms = []) {
|
|
39
|
-
const context = this.getContext();
|
|
40
|
-
push(terms, this.terms);
|
|
41
|
-
context.getTerms(terms);
|
|
42
|
-
(0, _synoptic.compressTerms)(context);
|
|
43
|
-
return terms;
|
|
44
|
-
}
|
|
45
|
-
getFrames(frames = []) {
|
|
46
|
-
const context = this.getContext();
|
|
47
|
-
push(frames, this.frames);
|
|
48
|
-
context.getFrames(frames);
|
|
49
|
-
(0, _synoptic.compressFrames)(context);
|
|
50
|
-
return frames;
|
|
51
|
-
}
|
|
52
|
-
getProperties(properties = []) {
|
|
53
|
-
const context = this.getContext();
|
|
54
|
-
push(properties, this.properties);
|
|
55
|
-
context.getProperties(properties);
|
|
56
|
-
(0, _synoptic.compressProperties)(context);
|
|
57
|
-
return properties;
|
|
58
|
-
}
|
|
59
|
-
getEqualities(equalities = []) {
|
|
60
|
-
const context = this.getContext();
|
|
61
|
-
push(equalities, this.equalities);
|
|
62
|
-
context.getEqualities(equalities);
|
|
63
|
-
(0, _synoptic.compressEqualities)(context);
|
|
64
|
-
return equalities;
|
|
65
|
-
}
|
|
66
|
-
getJudgements(judgements = []) {
|
|
67
|
-
const context = this.getContext();
|
|
68
|
-
push(judgements, this.judgements);
|
|
69
|
-
context.getJudgements(judgements);
|
|
70
|
-
(0, _synoptic.compressJudgements)(context);
|
|
71
|
-
return judgements;
|
|
72
|
-
}
|
|
73
|
-
getStatements(statements = []) {
|
|
74
|
-
const context = this.getContext();
|
|
75
|
-
push(statements, this.statements);
|
|
76
|
-
context.getStatements(statements);
|
|
77
|
-
(0, _synoptic.compressStatements)(context);
|
|
78
|
-
return statements;
|
|
79
|
-
}
|
|
80
|
-
getSignatures(signatures = []) {
|
|
81
|
-
const context = this.getContext();
|
|
82
|
-
push(signatures, this.signatures);
|
|
83
|
-
context.getSignatures(signatures);
|
|
84
|
-
(0, _synoptic.compressSignatures)(context);
|
|
85
|
-
return signatures;
|
|
86
|
-
}
|
|
87
|
-
getAssertions(assertions = []) {
|
|
88
|
-
const context = this.getContext();
|
|
89
|
-
push(assertions, this.assertions);
|
|
90
|
-
context.getAssertions(assertions);
|
|
91
|
-
(0, _synoptic.compressAssertions)(context);
|
|
92
|
-
return assertions;
|
|
93
|
-
}
|
|
94
|
-
getReferences(references = []) {
|
|
95
|
-
const context = this.getContext();
|
|
96
|
-
push(references, this.references);
|
|
97
|
-
context.getReferences(references);
|
|
98
|
-
(0, _synoptic.compressReferences)(context);
|
|
99
|
-
return references;
|
|
100
|
-
}
|
|
101
|
-
getAssumptions(assumptions = []) {
|
|
102
|
-
const context = this.getContext();
|
|
103
|
-
push(assumptions, this.assumptions);
|
|
104
|
-
context.getAssumptions(assumptions);
|
|
105
|
-
(0, _synoptic.compressAssumptions)(context);
|
|
106
|
-
return assumptions;
|
|
107
|
-
}
|
|
108
|
-
getMetavariables(metavariables = []) {
|
|
109
|
-
const context = this.getContext();
|
|
110
|
-
push(metavariables, this.metavariables);
|
|
111
|
-
context.getMetavariables(metavariables);
|
|
112
|
-
(0, _synoptic.compressMetavariables)(context);
|
|
113
|
-
return metavariables;
|
|
114
|
-
}
|
|
115
|
-
getSubstitutions(substitutions = []) {
|
|
116
|
-
const context = this.getContext();
|
|
117
|
-
push(substitutions, this.substitutions);
|
|
118
|
-
context.getSubstitutions(substitutions);
|
|
119
|
-
(0, _synoptic.compressSubstitutions)(context);
|
|
120
|
-
return substitutions;
|
|
121
|
-
}
|
|
122
|
-
getPropertyRelations(propertyRelations = []) {
|
|
123
|
-
const context = this.getContext();
|
|
124
|
-
push(propertyRelations, this.propertyRelations);
|
|
125
|
-
context.getPropertyRelations(propertyRelations);
|
|
126
|
-
(0, _synoptic.compressPropertyRelations)(context);
|
|
127
|
-
return propertyRelations;
|
|
128
|
-
}
|
|
129
|
-
addTerm(term) {
|
|
130
|
-
const context = this, termString = term.getString();
|
|
131
|
-
context.trace(`Adding the '${termString}' term to the mnemic context...`);
|
|
132
|
-
this.terms.push(term);
|
|
133
|
-
context.debug(`...added the '${termString}' term to the mnemic context.`);
|
|
134
|
-
}
|
|
135
|
-
addFrame(frame) {
|
|
136
|
-
const context = this, frameString = frame.getString();
|
|
137
|
-
context.trace(`Adding the '${frameString}' frame to the mnemic context...`);
|
|
138
|
-
this.frames.push(frame);
|
|
139
|
-
context.debug(`...added the '${frameString}' frame to the mnemic context.`);
|
|
140
|
-
}
|
|
141
|
-
addEquality(equality) {
|
|
142
|
-
const context = this, equalityString = equality.getString();
|
|
143
|
-
context.trace(`Adding the '${equalityString}' equality to the mnemic context...`);
|
|
144
|
-
this.equalities.push(equality);
|
|
145
|
-
context.debug(`...added the '${equalityString}' equality to the mnemic context.`);
|
|
146
|
-
}
|
|
147
|
-
addProperty(property) {
|
|
148
|
-
const context = this, propertyString = property.getString();
|
|
149
|
-
context.trace(`Adding the '${propertyString}' property to the mnemic context...`);
|
|
150
|
-
this.properties.push(property);
|
|
151
|
-
context.debug(`...added the '${propertyString}' property to the mnemic context.`);
|
|
152
|
-
}
|
|
153
|
-
addJudgement(judgement) {
|
|
154
|
-
const context = this, judgementString = judgement.getString();
|
|
155
|
-
context.trace(`Adding the '${judgementString}' judgement to the mnemic context...`);
|
|
156
|
-
this.judgements.push(judgement);
|
|
157
|
-
context.debug(`...added the '${judgementString}' judgement to the mnemic context.`);
|
|
158
|
-
}
|
|
159
|
-
addAssertion(assertion) {
|
|
160
|
-
const context = this, assertionString = assertion.getString();
|
|
161
|
-
context.trace(`Adding the '${assertionString}' assertion to the mnemic context...`);
|
|
162
|
-
this.assertions.push(assertion);
|
|
163
|
-
context.debug(`...added the '${assertionString}' assertion to the mnemic context.`);
|
|
164
|
-
}
|
|
165
|
-
addStatement(statement) {
|
|
166
|
-
const context = this, statementString = statement.getString();
|
|
167
|
-
context.trace(`Adding the '${statementString}' statement to the mnemic context...`);
|
|
168
|
-
this.statements.push(statement);
|
|
169
|
-
context.debug(`...added the '${statementString}' statement to the mnemic context.`);
|
|
170
|
-
}
|
|
171
|
-
addSignature(signature) {
|
|
172
|
-
const context = this, signatureString = signature.getString();
|
|
173
|
-
context.trace(`Adding the '${signatureString}' signature to the mnemic context...`);
|
|
174
|
-
this.signatures.push(signature);
|
|
175
|
-
context.debug(`...added the '${signatureString}' signature to the mnemic context.`);
|
|
176
|
-
}
|
|
177
|
-
addReference(reference) {
|
|
178
|
-
const context = this, referenceString = reference.getString();
|
|
179
|
-
context.trace(`Adding the '${referenceString}' reference to the mnemic context...`);
|
|
180
|
-
this.references.push(reference);
|
|
181
|
-
context.debug(`...added the '${referenceString}' reference to the mnemic context.`);
|
|
182
|
-
}
|
|
183
|
-
addAssumption(assumption) {
|
|
184
|
-
const context = this, assumptionString = assumption.getString();
|
|
185
|
-
context.trace(`Adding the '${assumptionString}' assumption to the mnemic context...`);
|
|
186
|
-
this.assumptions.push(assumption);
|
|
187
|
-
context.debug(`...added the '${assumptionString}' assumption to the mnemic context.`);
|
|
188
|
-
}
|
|
189
|
-
addMetavariable(metavariable) {
|
|
190
|
-
const context = this, metavariableString = metavariable.getString();
|
|
191
|
-
context.trace(`Adding the '${metavariableString}' metavariable to the mnemic context...`);
|
|
192
|
-
this.metavariables.push(metavariable);
|
|
193
|
-
context.debug(`...added the '${metavariableString}' metavariable to the mnemic context.`);
|
|
194
|
-
}
|
|
195
|
-
addSubstitution(substitution) {
|
|
196
|
-
const context = this, substitutionString = substitution.getString();
|
|
197
|
-
context.trace(`Adding the '${substitutionString}' substitution to the mnemic context...`);
|
|
198
|
-
this.substitutions.push(substitution);
|
|
199
|
-
context.debug(`...added the '${substitutionString}' substitution to the mnemic context.`);
|
|
200
|
-
}
|
|
201
|
-
addPropertyRelation(propertyRelation) {
|
|
202
|
-
const context = this, propertyRelationString = propertyRelation.getString();
|
|
203
|
-
context.trace(`Adding the '${propertyRelationString}' property relation to the mnemic context...`);
|
|
204
|
-
this.propertyRelations.push(propertyRelation);
|
|
205
|
-
context.debug(`...added the '${propertyRelationString}' property relation to the mnemic context.`);
|
|
206
|
-
}
|
|
207
|
-
addTerms(terms) {
|
|
208
|
-
terms.forEach((term)=>{
|
|
209
|
-
this.addTerm(term);
|
|
210
|
-
});
|
|
211
|
-
}
|
|
212
|
-
findTermByTermNode(termNode) {
|
|
213
|
-
const terms = this.getTerms(), term = terms.find((term)=>{
|
|
214
|
-
const termNodeMatches = term.matchTermNode(termNode);
|
|
215
|
-
if (termNodeMatches) {
|
|
216
|
-
return true;
|
|
217
|
-
}
|
|
218
|
-
}) || null;
|
|
219
|
-
return term;
|
|
220
|
-
}
|
|
221
|
-
findFrameByFrameNode(frameNode) {
|
|
222
|
-
const frames = this.getFrames(), frame = frames.find((frame)=>{
|
|
223
|
-
const frameNodeMatches = frame.matchFrameNode(frameNode);
|
|
224
|
-
if (frameNodeMatches) {
|
|
225
|
-
return true;
|
|
226
|
-
}
|
|
227
|
-
}) || null;
|
|
228
|
-
return frame;
|
|
229
|
-
}
|
|
230
|
-
findEqualityByEqualityNode(equalityNode) {
|
|
231
|
-
const equalities = this.getEqualities(), equality = equalities.find((equality)=>{
|
|
232
|
-
const equalityNodeMatches = equality.matchEqualityNode(equalityNode);
|
|
233
|
-
if (equalityNodeMatches) {
|
|
234
|
-
return true;
|
|
235
|
-
}
|
|
236
|
-
}) || null;
|
|
237
|
-
return equality;
|
|
238
|
-
}
|
|
239
|
-
findPropertyByPropertyNode(propertyNode) {
|
|
240
|
-
const properties = this.getProperties(), property = properties.find((property)=>{
|
|
241
|
-
const propertyNodeMatches = property.matchEqualityNode(propertyNode);
|
|
242
|
-
if (propertyNodeMatches) {
|
|
243
|
-
return true;
|
|
244
|
-
}
|
|
245
|
-
}) || null;
|
|
246
|
-
return property;
|
|
247
|
-
}
|
|
248
|
-
findJudgementByJudgementNode(judgementNode) {
|
|
249
|
-
const judgements = this.getJudgements(), judgement = judgements.find((judgement)=>{
|
|
250
|
-
const judgementNodeMatches = judgement.matchJudgementNode(judgementNode);
|
|
251
|
-
if (judgementNodeMatches) {
|
|
252
|
-
return true;
|
|
253
|
-
}
|
|
254
|
-
}) || null;
|
|
255
|
-
return judgement;
|
|
256
|
-
}
|
|
257
|
-
findAssertionByAssertionNode(assertionNode) {
|
|
258
|
-
const assertions = this.getAssertions(), assertion = assertions.find((assertion)=>{
|
|
259
|
-
const assertionNodeMatches = assertion.matchAssertionNode(assertionNode);
|
|
260
|
-
if (assertionNodeMatches) {
|
|
261
|
-
return true;
|
|
262
|
-
}
|
|
263
|
-
}) || null;
|
|
264
|
-
return assertion;
|
|
265
|
-
}
|
|
266
|
-
findStatementByStatementNode(statementNode) {
|
|
267
|
-
const statements = this.getStatements(), statement = statements.find((statement)=>{
|
|
268
|
-
const statementNodeMatches = statement.matchStatementNode(statementNode);
|
|
269
|
-
if (statementNodeMatches) {
|
|
270
|
-
return true;
|
|
271
|
-
}
|
|
272
|
-
}) || null;
|
|
273
|
-
return statement;
|
|
274
|
-
}
|
|
275
|
-
findSignatureBySignatureNode(signatureNode) {
|
|
276
|
-
const signatures = this.getSignatures(), signature = signatures.find((signature)=>{
|
|
277
|
-
const signatureNodeMatches = signature.matchSignatureNode(signatureNode);
|
|
278
|
-
if (signatureNodeMatches) {
|
|
279
|
-
return true;
|
|
280
|
-
}
|
|
281
|
-
}) || null;
|
|
282
|
-
return signature;
|
|
283
|
-
}
|
|
284
|
-
findReferenceByReferenceNode(referenceNode) {
|
|
285
|
-
const references = this.getReferences(), reference = references.find((reference)=>{
|
|
286
|
-
const referenceMatcheReferenceNode = reference.matchReferenceNode(referenceNode);
|
|
287
|
-
if (referenceMatcheReferenceNode) {
|
|
288
|
-
return true;
|
|
289
|
-
}
|
|
290
|
-
}) || null;
|
|
291
|
-
return reference;
|
|
292
|
-
}
|
|
293
|
-
findAssumptionByAssumptionNode(assumptionNode) {
|
|
294
|
-
const assumptions = this.getAssumptions(), assumption = assumptions.find((assumption)=>{
|
|
295
|
-
const assumptionNodeMatches = assumption.matchAssumptionNode(assumptionNode);
|
|
296
|
-
if (assumptionNodeMatches) {
|
|
297
|
-
return true;
|
|
298
|
-
}
|
|
299
|
-
}) || null;
|
|
300
|
-
return assumption;
|
|
301
|
-
}
|
|
302
|
-
findReferenceByMetavariableNode(metavariableNode) {
|
|
303
|
-
const references = this.getReferences(), reference = references.find((reference)=>{
|
|
304
|
-
const referenceMatcheMetavariableNode = reference.matchMetavariableNode(metavariableNode);
|
|
305
|
-
if (referenceMatcheMetavariableNode) {
|
|
306
|
-
return true;
|
|
307
|
-
}
|
|
308
|
-
}) || null;
|
|
309
|
-
return reference;
|
|
310
|
-
}
|
|
311
|
-
findMetavariableByMetavariableNode(metavariableNode) {
|
|
312
|
-
const metavariables = this.getMetavariables(), metavariable = metavariables.find((metavariable)=>{
|
|
313
|
-
const metavariableNodeMatches = metavariable.matchMetavariableNode(metavariableNode);
|
|
314
|
-
if (metavariableNodeMatches) {
|
|
315
|
-
return true;
|
|
316
|
-
}
|
|
317
|
-
}) || null;
|
|
318
|
-
return metavariable;
|
|
319
|
-
}
|
|
320
|
-
findSubstitutionBySubstitutionNode(substitutionNode) {
|
|
321
|
-
const substitutions = this.getSubstitutions(), substitution = substitutions.find((substitution)=>{
|
|
322
|
-
const substitutionNodeMatches = substitution.matchSubstitutionNode(substitutionNode);
|
|
323
|
-
if (substitutionNodeMatches) {
|
|
324
|
-
return true;
|
|
325
|
-
}
|
|
326
|
-
}) || null;
|
|
327
|
-
return substitution;
|
|
328
|
-
}
|
|
329
|
-
findPropertyRelationByPropertyRelationNode(propertyRelationNode) {
|
|
330
|
-
const propertyRelations = this.getPropertyRelations(), propertyRelation = propertyRelations.find((propertyRelation)=>{
|
|
331
|
-
const propertyRelationNodeMatches = propertyRelation.matchEqualityNode(propertyRelationNode);
|
|
332
|
-
if (propertyRelationNodeMatches) {
|
|
333
|
-
return true;
|
|
334
|
-
}
|
|
335
|
-
}) || null;
|
|
336
|
-
return propertyRelation;
|
|
337
|
-
}
|
|
338
|
-
findVariableByVariableNode(variableNode) {
|
|
339
|
-
const variableIdentifier = variableNode.getVariableIdentifier(), declaredVariable = this.findDeclaredVariableByVariableIdentifier(variableIdentifier), variable = declaredVariable; ///
|
|
340
|
-
return variable;
|
|
341
|
-
}
|
|
342
|
-
isTermPresentByTermNode(termNode) {
|
|
343
|
-
const term = this.findTermByTermNode(termNode), termPresent = term !== null;
|
|
344
|
-
return termPresent;
|
|
345
|
-
}
|
|
346
|
-
isFramePresentByFrameNode(frameNode) {
|
|
347
|
-
const frame = this.findFrameByFrameNode(frameNode), framePresent = frame !== null;
|
|
348
|
-
return framePresent;
|
|
349
|
-
}
|
|
350
|
-
isEqualityPresentByEqualityNode(equalityNode) {
|
|
351
|
-
const equality = this.findEqualityByEqualityNode(equalityNode), equalityPresent = equality !== null;
|
|
352
|
-
return equalityPresent;
|
|
353
|
-
}
|
|
354
|
-
isPropertyPresentByPropertyNode(propertyNode) {
|
|
355
|
-
const property = this.findPropertyByPropertyNode(propertyNode), propertyPresent = property !== null;
|
|
356
|
-
return propertyPresent;
|
|
357
|
-
}
|
|
358
|
-
isJudgementPresentByJudgementNode(judgementNode) {
|
|
359
|
-
const judgement = this.findJudgementByJudgementNode(judgementNode), judgementPresent = judgement !== null;
|
|
360
|
-
return judgementPresent;
|
|
361
|
-
}
|
|
362
|
-
isAssertionPresentByAssertionNode(assertionNode) {
|
|
363
|
-
const assertion = this.findAssertionByAssertionNode(assertionNode), assertionPresent = assertion !== null;
|
|
364
|
-
return assertionPresent;
|
|
365
|
-
}
|
|
366
|
-
isStatementPresentByStatementNode(statementNode) {
|
|
367
|
-
const statement = this.findStatementByStatementNode(statementNode), statementPresent = statement !== null;
|
|
368
|
-
return statementPresent;
|
|
369
|
-
}
|
|
370
|
-
isSignaturePresentBySignatureNode(signatureNode) {
|
|
371
|
-
const signature = this.findSignatureBySignatureNode(signatureNode), signaturePresent = signature !== null;
|
|
372
|
-
return signaturePresent;
|
|
373
|
-
}
|
|
374
|
-
isAssumptionPresentByAssumptionNode(assumptionNode) {
|
|
375
|
-
const assumption = this.findAssumptionByAssumptionNode(assumptionNode), assumptionPresent = assumption !== null;
|
|
376
|
-
return assumptionPresent;
|
|
377
|
-
}
|
|
378
|
-
isReferencePresentByMetavariableNode(metavariableNode) {
|
|
379
|
-
const reference = this.findReferenceByMetavariableNode(metavariableNode), referencePresent = reference !== null;
|
|
380
|
-
return referencePresent;
|
|
381
|
-
}
|
|
382
|
-
isMetavariablePresentByMetavariableNode(metavariablenNode) {
|
|
383
|
-
const metavariablen = this.findMetavariableByMetavariableNode(metavariablenNode), metavariablenPresent = metavariablen !== null;
|
|
384
|
-
return metavariablenPresent;
|
|
385
|
-
}
|
|
386
|
-
isPropertyRelationresentByPropertyRelationNode(propertyRelationNode) {
|
|
387
|
-
const propertyRelation = this.findPropertyRelationByPropertyRelationNode(propertyRelationNode), propertyRelationresent = propertyRelation !== null;
|
|
388
|
-
return propertyRelationresent;
|
|
389
|
-
}
|
|
390
|
-
commit(element) {
|
|
391
|
-
const context = this; ///
|
|
392
|
-
element.setContext(context);
|
|
393
|
-
}
|
|
394
|
-
initialise(json) {
|
|
395
|
-
const context = this; ///
|
|
396
|
-
this.terms = (0, _json.termsFromJSON)(json, context);
|
|
397
|
-
this.metavariables = (0, _json.metavariablesFromJSON)(json, context);
|
|
398
|
-
this.statements = (0, _json.statementsFromJSON)(json, context);
|
|
399
|
-
this.references = (0, _json.referencesFromJSON)(json, context);
|
|
400
|
-
this.equalities = (0, _json.equalitiesFromJSON)(json, context);
|
|
401
|
-
this.assumptions = (0, _json.assumptionsFromJSON)(json, context);
|
|
402
|
-
this.frames = (0, _json.framesFromJSON)(json, context);
|
|
403
|
-
this.properties = (0, _json.propertiesFromJSON)(json, context);
|
|
404
|
-
this.judgements = (0, _json.judgementsFromJSON)(json, context);
|
|
405
|
-
this.assertions = (0, _json.assertionsFromJSON)(json, context);
|
|
406
|
-
this.signatures = (0, _json.signaturesFromJSON)(json, context);
|
|
407
|
-
this.substitutions = (0, _json.substitutionsFromJSON)(json, context);
|
|
408
|
-
this.propertyRelations = (0, _json.propertyRelationsFromJSON)(json, context);
|
|
409
|
-
}
|
|
410
|
-
toJSON() {
|
|
411
|
-
let terms = this.getTerms(), frames = this.getFrames(), properties = this.getProperties(), equalities = this.getEqualities(), judgements = this.getJudgements(), assertions = this.getAssertions(), statements = this.getStatements(), signatures = this.getSignatures(), references = this.getReferences(), assumptions = this.getAssumptions(), metavariables = this.getMetavariables(), substitutions = this.getSubstitutions(), propertyRelations = this.getPropertyRelations();
|
|
412
|
-
const termsJSON = (0, _json.termsToTermsJSON)(terms), framesJSON = (0, _json.framesToFramesJSON)(frames), propertiesJSON = (0, _json.propertiesToPropertiesJSON)(properties), equalitiesJSON = (0, _json.equalitiesToEqualitiesJSON)(equalities), judgementsJSON = (0, _json.judgementsToJudgementsJSON)(judgements), assertionsJSON = (0, _json.assertionsToAssertionsJSON)(assertions), statementsJSON = (0, _json.statementsToStatementsJSON)(statements), signaturesJSON = (0, _json.signaturesToSignaturesJSON)(signatures), referencesJSON = (0, _json.referencesToReferencesJSON)(references), assumptionsJSON = (0, _json.assumptionsToAssumptionsJSON)(assumptions), metavariablesJSON = (0, _json.metavariablesToMetavariablesJSON)(metavariables), substitutionsJSON = (0, _json.substitutionsToSubstitutionsJSON)(substitutions), propertyRelationsJSON = (0, _json.propertyRelationsToPropertyRelationsJSON)(propertyRelations);
|
|
413
|
-
terms = termsJSON; ///
|
|
414
|
-
frames = framesJSON; ///
|
|
415
|
-
properties = propertiesJSON; ///
|
|
416
|
-
equalities = equalitiesJSON; ///
|
|
417
|
-
judgements = judgementsJSON; ///
|
|
418
|
-
assertions = assertionsJSON; ///
|
|
419
|
-
statements = statementsJSON; ///
|
|
420
|
-
signatures = signaturesJSON; ///
|
|
421
|
-
references = referencesJSON; ///
|
|
422
|
-
assumptions = assumptionsJSON; ///
|
|
423
|
-
metavariables = metavariablesJSON; //
|
|
424
|
-
substitutions = substitutionsJSON; ///
|
|
425
|
-
propertyRelations = propertyRelationsJSON; ///
|
|
426
|
-
const json = {
|
|
427
|
-
terms,
|
|
428
|
-
frames,
|
|
429
|
-
properties,
|
|
430
|
-
equalities,
|
|
431
|
-
judgements,
|
|
432
|
-
assertions,
|
|
433
|
-
statements,
|
|
434
|
-
signatures,
|
|
435
|
-
references,
|
|
436
|
-
assumptions,
|
|
437
|
-
metavariables,
|
|
438
|
-
substitutions,
|
|
439
|
-
propertyRelations
|
|
440
|
-
};
|
|
441
|
-
return json;
|
|
442
|
-
}
|
|
443
|
-
static fromJSON(json, context) {
|
|
444
|
-
const terms = null, frames = null, properties = null, equalities = null, judgements = null, statements = null, assertions = null, signatures = null, references = null, assumptions = null, metavariables = null, substitutions = null, propertyRelations = null, mnemicContext = new MnemicContext(context, terms, frames, properties, equalities, judgements, assertions, statements, signatures, references, assumptions, metavariables, substitutions, propertyRelations);
|
|
445
|
-
mnemicContext.initialise(json);
|
|
446
|
-
return mnemicContext;
|
|
447
|
-
}
|
|
448
|
-
static fromNothing(context) {
|
|
449
|
-
const terms = [], frames = [], properties = [], equalities = [], judgements = [], statements = [], assertions = [], signatures = [], references = [], assumptions = [], metavariables = [], substitutions = [], propertyRelations = [], mnemicContext = new MnemicContext(context, terms, frames, properties, equalities, judgements, assertions, statements, signatures, references, assumptions, metavariables, substitutions, propertyRelations);
|
|
450
|
-
return mnemicContext;
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L21uZW1pYy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCBDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0XCI7XG5cbmltcG9ydCB7IGNvbXByZXNzVGVybXMsXG4gICAgICAgICBjb21wcmVzc0ZyYW1lcyxcbiAgICAgICAgIGNvbXByZXNzUHJvcGVydGllcyxcbiAgICAgICAgIGNvbXByZXNzRXF1YWxpdGllcyxcbiAgICAgICAgIGNvbXByZXNzSnVkZ2VtZW50cyxcbiAgICAgICAgIGNvbXByZXNzQXNzZXJ0aW9ucyxcbiAgICAgICAgIGNvbXByZXNzU3RhdGVtZW50cyxcbiAgICAgICAgIGNvbXByZXNzU2lnbmF0dXJlcyxcbiAgICAgICAgIGNvbXByZXNzUmVmZXJlbmNlcyxcbiAgICAgICAgIGNvbXByZXNzQXNzdW1wdGlvbnMsXG4gICAgICAgICBjb21wcmVzc01ldGF2YXJpYWJsZXMsXG4gICAgICAgICBjb21wcmVzc1N1YnN0aXR1dGlvbnMsXG4gICAgICAgICBjb21wcmVzc1Byb3BlcnR5UmVsYXRpb25zLH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zeW5vcHRpY1wiO1xuaW1wb3J0IHsgdGVybXNGcm9tSlNPTixcbiAgICAgICAgIGZyYW1lc0Zyb21KU09OLFxuICAgICAgICAgdGVybXNUb1Rlcm1zSlNPTixcbiAgICAgICAgIGZyYW1lc1RvRnJhbWVzSlNPTixcbiAgICAgICAgIHByb3BlcnRpZXNGcm9tSlNPTixcbiAgICAgICAgIGVxdWFsaXRpZXNGcm9tSlNPTixcbiAgICAgICAgIGp1ZGdlbWVudHNGcm9tSlNPTixcbiAgICAgICAgIHN0YXRlbWVudHNGcm9tSlNPTixcbiAgICAgICAgIGFzc2VydGlvbnNGcm9tSlNPTixcbiAgICAgICAgIHJlZmVyZW5jZXNGcm9tSlNPTixcbiAgICAgICAgIHNpZ25hdHVyZXNGcm9tSlNPTixcbiAgICAgICAgIGFzc3VtcHRpb25zRnJvbUpTT04sXG4gICAgICAgICBtZXRhdmFyaWFibGVzRnJvbUpTT04sXG4gICAgICAgICBzdWJzdGl0dXRpb25zRnJvbUpTT04sXG4gICAgICAgICBwcm9wZXJ0eVJlbGF0aW9uc0Zyb21KU09OLFxuICAgICAgICAgcHJvcGVydGllc1RvUHJvcGVydGllc0pTT04sXG4gICAgICAgICBqdWRnZW1lbnRzVG9KdWRnZW1lbnRzSlNPTixcbiAgICAgICAgIGVxdWFsaXRpZXNUb0VxdWFsaXRpZXNKU09OLFxuICAgICAgICAgc3RhdGVtZW50c1RvU3RhdGVtZW50c0pTT04sXG4gICAgICAgICBzaWduYXR1cmVzVG9TaWduYXR1cmVzSlNPTixcbiAgICAgICAgIGFzc2VydGlvbnNUb0Fzc2VydGlvbnNKU09OLFxuICAgICAgICAgcmVmZXJlbmNlc1RvUmVmZXJlbmNlc0pTT04sXG4gICAgICAgICBhc3N1bXB0aW9uc1RvQXNzdW1wdGlvbnNKU09OLFxuICAgICAgICAgbWV0YXZhcmlhYmxlc1RvTWV0YXZhcmlhYmxlc0pTT04sXG4gICAgICAgICBzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTixcbiAgICAgICAgIHByb3BlcnR5UmVsYXRpb25zVG9Qcm9wZXJ0eVJlbGF0aW9uc0pTT04gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2pzb25cIjtcblxuY29uc3QgeyBwdXNoIH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTW5lbWljQ29udGV4dCBleHRlbmRzIENvbnRleHQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCB0ZXJtcywgZnJhbWVzLCBwcm9wZXJ0aWVzLCBlcXVhbGl0aWVzLCBqdWRnZW1lbnRzLCBhc3NlcnRpb25zLCBzdGF0ZW1lbnRzLCBzaWduYXR1cmVzLCByZWZlcmVuY2VzLCBhc3N1bXB0aW9ucywgbWV0YXZhcmlhYmxlcywgc3Vic3RpdHV0aW9ucywgcHJvcGVydHlSZWxhdGlvbnMpIHtcbiAgICBzdXBlcihjb250ZXh0KTtcblxuICAgIHRoaXMudGVybXMgPSB0ZXJtcztcbiAgICB0aGlzLmZyYW1lcyA9IGZyYW1lcztcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzO1xuICAgIHRoaXMuZXF1YWxpdGllcyA9IGVxdWFsaXRpZXM7XG4gICAgdGhpcy5qdWRnZW1lbnRzID0ganVkZ2VtZW50cztcbiAgICB0aGlzLmFzc2VydGlvbnMgPSBhc3NlcnRpb25zO1xuICAgIHRoaXMuc3RhdGVtZW50cyA9IHN0YXRlbWVudHM7XG4gICAgdGhpcy5zaWduYXR1cmVzID0gc2lnbmF0dXJlcztcbiAgICB0aGlzLnJlZmVyZW5jZXMgPSByZWZlcmVuY2VzO1xuICAgIHRoaXMuYXNzdW1wdGlvbnMgPSBhc3N1bXB0aW9ucztcbiAgICB0aGlzLm1ldGF2YXJpYWJsZXMgPSBtZXRhdmFyaWFibGVzO1xuICAgIHRoaXMuc3Vic3RpdHV0aW9ucyA9IHN1YnN0aXR1dGlvbnM7XG4gICAgdGhpcy5wcm9wZXJ0eVJlbGF0aW9ucyA9IHByb3BlcnR5UmVsYXRpb25zO1xuICB9XG5cbiAgZ2V0VGVybXModGVybXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHB1c2godGVybXMsIHRoaXMudGVybXMpO1xuXG4gICAgY29udGV4dC5nZXRUZXJtcyh0ZXJtcyk7XG5cbiAgICBjb21wcmVzc1Rlcm1zKGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHRlcm1zO1xuICB9XG5cbiAgZ2V0RnJhbWVzKGZyYW1lcyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcHVzaChmcmFtZXMsIHRoaXMuZnJhbWVzKTtcblxuICAgIGNvbnRleHQuZ2V0RnJhbWVzKGZyYW1lcyk7XG5cbiAgICBjb21wcmVzc0ZyYW1lcyhjb250ZXh0KTtcblxuICAgIHJldHVybiBmcmFtZXM7XG4gIH1cblxuICBnZXRQcm9wZXJ0aWVzKHByb3BlcnRpZXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHB1c2gocHJvcGVydGllcywgdGhpcy5wcm9wZXJ0aWVzKTtcblxuICAgIGNvbnRleHQuZ2V0UHJvcGVydGllcyhwcm9wZXJ0aWVzKTtcblxuICAgIGNvbXByZXNzUHJvcGVydGllcyhjb250ZXh0KTtcblxuICAgIHJldHVybiBwcm9wZXJ0aWVzO1xuICB9XG5cbiAgZ2V0RXF1YWxpdGllcyhlcXVhbGl0aWVzID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBwdXNoKGVxdWFsaXRpZXMsIHRoaXMuZXF1YWxpdGllcyk7XG5cbiAgICBjb250ZXh0LmdldEVxdWFsaXRpZXMoZXF1YWxpdGllcyk7XG5cbiAgICBjb21wcmVzc0VxdWFsaXRpZXMoY29udGV4dCk7XG5cbiAgICByZXR1cm4gZXF1YWxpdGllcztcbiAgfVxuXG4gIGdldEp1ZGdlbWVudHMoanVkZ2VtZW50cyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcHVzaChqdWRnZW1lbnRzLCB0aGlzLmp1ZGdlbWVudHMpO1xuXG4gICAgY29udGV4dC5nZXRKdWRnZW1lbnRzKGp1ZGdlbWVudHMpO1xuXG4gICAgY29tcHJlc3NKdWRnZW1lbnRzKGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGp1ZGdlbWVudHM7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnRzKHN0YXRlbWVudHMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHB1c2goc3RhdGVtZW50cywgdGhpcy5zdGF0ZW1lbnRzKTtcblxuICAgIGNvbnRleHQuZ2V0U3RhdGVtZW50cyhzdGF0ZW1lbnRzKTtcblxuICAgIGNvbXByZXNzU3RhdGVtZW50cyhjb250ZXh0KTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnRzO1xuICB9XG5cbiAgZ2V0U2lnbmF0dXJlcyhzaWduYXR1cmVzID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBwdXNoKHNpZ25hdHVyZXMsIHRoaXMuc2lnbmF0dXJlcyk7XG5cbiAgICBjb250ZXh0LmdldFNpZ25hdHVyZXMoc2lnbmF0dXJlcyk7XG5cbiAgICBjb21wcmVzc1NpZ25hdHVyZXMoY29udGV4dCk7XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlcztcbiAgfVxuXG4gIGdldEFzc2VydGlvbnMoYXNzZXJ0aW9ucyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcHVzaChhc3NlcnRpb25zLCB0aGlzLmFzc2VydGlvbnMpO1xuXG4gICAgY29udGV4dC5nZXRBc3NlcnRpb25zKGFzc2VydGlvbnMpO1xuXG4gICAgY29tcHJlc3NBc3NlcnRpb25zKGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGFzc2VydGlvbnM7XG4gIH1cblxuICBnZXRSZWZlcmVuY2VzKHJlZmVyZW5jZXMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHB1c2gocmVmZXJlbmNlcywgdGhpcy5yZWZlcmVuY2VzKTtcblxuICAgIGNvbnRleHQuZ2V0UmVmZXJlbmNlcyhyZWZlcmVuY2VzKTtcblxuICAgIGNvbXByZXNzUmVmZXJlbmNlcyhjb250ZXh0KTtcblxuICAgIHJldHVybiByZWZlcmVuY2VzO1xuICB9XG5cbiAgZ2V0QXNzdW1wdGlvbnMoYXNzdW1wdGlvbnMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHB1c2goYXNzdW1wdGlvbnMsIHRoaXMuYXNzdW1wdGlvbnMpO1xuXG4gICAgY29udGV4dC5nZXRBc3N1bXB0aW9ucyhhc3N1bXB0aW9ucyk7XG5cbiAgICBjb21wcmVzc0Fzc3VtcHRpb25zKGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb25zO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlcyhtZXRhdmFyaWFibGVzID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBwdXNoKG1ldGF2YXJpYWJsZXMsIHRoaXMubWV0YXZhcmlhYmxlcyk7XG5cbiAgICBjb250ZXh0LmdldE1ldGF2YXJpYWJsZXMobWV0YXZhcmlhYmxlcyk7XG5cbiAgICBjb21wcmVzc01ldGF2YXJpYWJsZXMoY29udGV4dCk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlcztcbiAgfVxuXG4gIGdldFN1YnN0aXR1dGlvbnMoc3Vic3RpdHV0aW9ucyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcHVzaChzdWJzdGl0dXRpb25zLCB0aGlzLnN1YnN0aXR1dGlvbnMpO1xuXG4gICAgY29udGV4dC5nZXRTdWJzdGl0dXRpb25zKHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgY29tcHJlc3NTdWJzdGl0dXRpb25zKGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnM7XG4gIH1cblxuICBnZXRQcm9wZXJ0eVJlbGF0aW9ucyhwcm9wZXJ0eVJlbGF0aW9ucyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcHVzaChwcm9wZXJ0eVJlbGF0aW9ucywgdGhpcy5wcm9wZXJ0eVJlbGF0aW9ucyk7XG5cbiAgICBjb250ZXh0LmdldFByb3BlcnR5UmVsYXRpb25zKHByb3BlcnR5UmVsYXRpb25zKTtcblxuICAgIGNvbXByZXNzUHJvcGVydHlSZWxhdGlvbnMoY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJvcGVydHlSZWxhdGlvbnM7XG4gIH1cblxuICBhZGRUZXJtKHRlcm0pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHRvIHRoZSBtbmVtaWMgY29udGV4dC4uLmApO1xuXG4gICAgdGhpcy50ZXJtcy5wdXNoKHRlcm0pO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4uYWRkZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHRvIHRoZSBtbmVtaWMgY29udGV4dC5gKTtcbiAgfVxuXG4gIGFkZEZyYW1lKGZyYW1lKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMsIC8vL1xuICAgICAgICAgIGZyYW1lU3RyaW5nID0gZnJhbWUuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke2ZyYW1lU3RyaW5nfScgZnJhbWUgdG8gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICB0aGlzLmZyYW1lcy5wdXNoKGZyYW1lKTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLmFkZGVkIHRoZSAnJHtmcmFtZVN0cmluZ30nIGZyYW1lIHRvIHRoZSBtbmVtaWMgY29udGV4dC5gKTtcbiAgfVxuXG4gIGFkZEVxdWFsaXR5KGVxdWFsaXR5KSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMsIC8vL1xuICAgICAgICAgIGVxdWFsaXR5U3RyaW5nID0gZXF1YWxpdHkuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkgdG8gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICB0aGlzLmVxdWFsaXRpZXMucHVzaChlcXVhbGl0eSk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBlcXVhbGl0eSB0byB0aGUgbW5lbWljIGNvbnRleHQuYCk7XG4gIH1cblxuICBhZGRQcm9wZXJ0eShwcm9wZXJ0eSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICBwcm9wZXJ0eVN0cmluZyA9IHByb3BlcnR5LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgQWRkaW5nIHRoZSAnJHtwcm9wZXJ0eVN0cmluZ30nIHByb3BlcnR5IHRvIHRoZSBtbmVtaWMgY29udGV4dC4uLmApO1xuXG4gICAgdGhpcy5wcm9wZXJ0aWVzLnB1c2gocHJvcGVydHkpO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4uYWRkZWQgdGhlICcke3Byb3BlcnR5U3RyaW5nfScgcHJvcGVydHkgdG8gdGhlIG1uZW1pYyBjb250ZXh0LmApO1xuICB9XG5cbiAgYWRkSnVkZ2VtZW50KGp1ZGdlbWVudCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICBqdWRnZW1lbnRTdHJpbmcgPSBqdWRnZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke2p1ZGdlbWVudFN0cmluZ30nIGp1ZGdlbWVudCB0byB0aGUgbW5lbWljIGNvbnRleHQuLi5gKTtcblxuICAgIHRoaXMuanVkZ2VtZW50cy5wdXNoKGp1ZGdlbWVudCk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7anVkZ2VtZW50U3RyaW5nfScganVkZ2VtZW50IHRvIHRoZSBtbmVtaWMgY29udGV4dC5gKTtcbiAgfVxuXG4gIGFkZEFzc2VydGlvbihhc3NlcnRpb24pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgYXNzZXJ0aW9uU3RyaW5nID0gYXNzZXJ0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgQWRkaW5nIHRoZSAnJHthc3NlcnRpb25TdHJpbmd9JyBhc3NlcnRpb24gdG8gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICB0aGlzLmFzc2VydGlvbnMucHVzaChhc3NlcnRpb24pO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4uYWRkZWQgdGhlICcke2Fzc2VydGlvblN0cmluZ30nIGFzc2VydGlvbiB0byB0aGUgbW5lbWljIGNvbnRleHQuYCk7XG4gIH1cblxuICBhZGRTdGF0ZW1lbnQoc3RhdGVtZW50KSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMsIC8vL1xuICAgICAgICAgIHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYEFkZGluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHRvIHRoZSBtbmVtaWMgY29udGV4dC4uLmApO1xuXG4gICAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLmFkZGVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgdG8gdGhlIG1uZW1pYyBjb250ZXh0LmApO1xuICB9XG5cbiAgYWRkU2lnbmF0dXJlKHNpZ25hdHVyZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICBzaWduYXR1cmVTdHJpbmcgPSBzaWduYXR1cmUuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke3NpZ25hdHVyZVN0cmluZ30nIHNpZ25hdHVyZSB0byB0aGUgbW5lbWljIGNvbnRleHQuLi5gKTtcblxuICAgIHRoaXMuc2lnbmF0dXJlcy5wdXNoKHNpZ25hdHVyZSk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlIHRvIHRoZSBtbmVtaWMgY29udGV4dC5gKTtcbiAgfVxuXG4gIGFkZFJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgcmVmZXJlbmNlU3RyaW5nID0gcmVmZXJlbmNlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgQWRkaW5nIHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2UgdG8gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICB0aGlzLnJlZmVyZW5jZXMucHVzaChyZWZlcmVuY2UpO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4uYWRkZWQgdGhlICcke3JlZmVyZW5jZVN0cmluZ30nIHJlZmVyZW5jZSB0byB0aGUgbW5lbWljIGNvbnRleHQuYCk7XG4gIH1cblxuICBhZGRBc3N1bXB0aW9uKGFzc3VtcHRpb24pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgYXNzdW1wdGlvblN0cmluZyA9IGFzc3VtcHRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uIHRvIHRoZSBtbmVtaWMgY29udGV4dC4uLmApO1xuXG4gICAgdGhpcy5hc3N1bXB0aW9ucy5wdXNoKGFzc3VtcHRpb24pO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4uYWRkZWQgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uIHRvIHRoZSBtbmVtaWMgY29udGV4dC5gKTtcbiAgfVxuXG4gIGFkZE1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgQWRkaW5nIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUgdG8gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICB0aGlzLm1ldGF2YXJpYWJsZXMucHVzaChtZXRhdmFyaWFibGUpO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4uYWRkZWQgdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZSB0byB0aGUgbW5lbWljIGNvbnRleHQuYCk7XG4gIH1cblxuICBhZGRTdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMsIC8vL1xuICAgICAgICAgIHN1YnN0aXR1dGlvblN0cmluZyA9IHN1YnN0aXR1dGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYEFkZGluZyB0aGUgJyR7c3Vic3RpdHV0aW9uU3RyaW5nfScgc3Vic3RpdHV0aW9uIHRvIHRoZSBtbmVtaWMgY29udGV4dC4uLmApO1xuXG4gICAgdGhpcy5zdWJzdGl0dXRpb25zLnB1c2goc3Vic3RpdHV0aW9uKTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLmFkZGVkIHRoZSAnJHtzdWJzdGl0dXRpb25TdHJpbmd9JyBzdWJzdGl0dXRpb24gdG8gdGhlIG1uZW1pYyBjb250ZXh0LmApO1xuICB9XG5cbiAgYWRkUHJvcGVydHlSZWxhdGlvbihwcm9wZXJ0eVJlbGF0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMsIC8vL1xuICAgICAgICAgIHByb3BlcnR5UmVsYXRpb25TdHJpbmcgPSBwcm9wZXJ0eVJlbGF0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgQWRkaW5nIHRoZSAnJHtwcm9wZXJ0eVJlbGF0aW9uU3RyaW5nfScgcHJvcGVydHkgcmVsYXRpb24gdG8gdGhlIG1uZW1pYyBjb250ZXh0Li4uYCk7XG5cbiAgICB0aGlzLnByb3BlcnR5UmVsYXRpb25zLnB1c2gocHJvcGVydHlSZWxhdGlvbik7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7cHJvcGVydHlSZWxhdGlvblN0cmluZ30nIHByb3BlcnR5IHJlbGF0aW9uIHRvIHRoZSBtbmVtaWMgY29udGV4dC5gKTtcbiAgfVxuXG4gIGFkZFRlcm1zKHRlcm1zKSB7XG4gICAgdGVybXMuZm9yRWFjaCgodGVybSkgPT4ge1xuICAgICAgdGhpcy5hZGRUZXJtKHRlcm0pO1xuICAgIH0pO1xuICB9XG5cbiAgZmluZFRlcm1CeVRlcm1Ob2RlKHRlcm1Ob2RlKSB7XG4gICAgY29uc3QgdGVybXMgPSB0aGlzLmdldFRlcm1zKCksXG4gICAgICAgICAgdGVybSA9IHRlcm1zLmZpbmQoKHRlcm0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRlcm1Ob2RlTWF0Y2hlcyA9IHRlcm0ubWF0Y2hUZXJtTm9kZSh0ZXJtTm9kZSk7XG4gICAgICBcbiAgICAgICAgICAgIGlmICh0ZXJtTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiB0ZXJtO1xuICB9XG5cbiAgZmluZEZyYW1lQnlGcmFtZU5vZGUoZnJhbWVOb2RlKSB7XG4gICAgY29uc3QgZnJhbWVzID0gdGhpcy5nZXRGcmFtZXMoKSxcbiAgICAgICAgICBmcmFtZSA9IGZyYW1lcy5maW5kKChmcmFtZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZnJhbWVOb2RlTWF0Y2hlcyA9IGZyYW1lLm1hdGNoRnJhbWVOb2RlKGZyYW1lTm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChmcmFtZU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gZnJhbWU7XG4gIH1cblxuICBmaW5kRXF1YWxpdHlCeUVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUpIHtcbiAgICBjb25zdCBlcXVhbGl0aWVzID0gdGhpcy5nZXRFcXVhbGl0aWVzKCksXG4gICAgICBlcXVhbGl0eSA9IGVxdWFsaXRpZXMuZmluZCgoZXF1YWxpdHkpID0+IHtcbiAgICAgICAgY29uc3QgZXF1YWxpdHlOb2RlTWF0Y2hlcyA9IGVxdWFsaXR5Lm1hdGNoRXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSk7XG5cbiAgICAgICAgaWYgKGVxdWFsaXR5Tm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBlcXVhbGl0eTtcbiAgfVxuXG4gIGZpbmRQcm9wZXJ0eUJ5UHJvcGVydHlOb2RlKHByb3BlcnR5Tm9kZSkge1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmdldFByb3BlcnRpZXMoKSxcbiAgICAgICAgICBwcm9wZXJ0eSA9IHByb3BlcnRpZXMuZmluZCgocHJvcGVydHkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5Tm9kZU1hdGNoZXMgPSBwcm9wZXJ0eS5tYXRjaEVxdWFsaXR5Tm9kZShwcm9wZXJ0eU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAocHJvcGVydHlOb2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5O1xuICB9XG5cbiAgZmluZEp1ZGdlbWVudEJ5SnVkZ2VtZW50Tm9kZShqdWRnZW1lbnROb2RlKSB7XG4gICAgY29uc3QganVkZ2VtZW50cyA9IHRoaXMuZ2V0SnVkZ2VtZW50cygpLFxuICAgICAgICAgIGp1ZGdlbWVudCA9IGp1ZGdlbWVudHMuZmluZCgoanVkZ2VtZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBqdWRnZW1lbnROb2RlTWF0Y2hlcyA9IGp1ZGdlbWVudC5tYXRjaEp1ZGdlbWVudE5vZGUoanVkZ2VtZW50Tm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChqdWRnZW1lbnROb2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIGp1ZGdlbWVudDtcbiAgfVxuXG4gIGZpbmRBc3NlcnRpb25CeUFzc2VydGlvbk5vZGUoYXNzZXJ0aW9uTm9kZSkge1xuICAgIGNvbnN0IGFzc2VydGlvbnMgPSB0aGlzLmdldEFzc2VydGlvbnMoKSxcbiAgICAgICAgICBhc3NlcnRpb24gPSBhc3NlcnRpb25zLmZpbmQoKGFzc2VydGlvbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgYXNzZXJ0aW9uTm9kZU1hdGNoZXMgPSBhc3NlcnRpb24ubWF0Y2hBc3NlcnRpb25Ob2RlKGFzc2VydGlvbk5vZGUpO1xuXG4gICAgICAgICAgICBpZiAoYXNzZXJ0aW9uTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBhc3NlcnRpb247XG4gIH1cblxuICBmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRzID0gdGhpcy5nZXRTdGF0ZW1lbnRzKCksXG4gICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50cy5maW5kKChzdGF0ZW1lbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlbWVudE5vZGVNYXRjaGVzID0gc3RhdGVtZW50Lm1hdGNoU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICAgICAgICAgICAgaWYgKHN0YXRlbWVudE5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50O1xuICB9XG5cbiAgZmluZFNpZ25hdHVyZUJ5U2lnbmF0dXJlTm9kZShzaWduYXR1cmVOb2RlKSB7XG4gICAgY29uc3Qgc2lnbmF0dXJlcyA9IHRoaXMuZ2V0U2lnbmF0dXJlcygpLFxuICAgICAgICAgIHNpZ25hdHVyZSA9IHNpZ25hdHVyZXMuZmluZCgoc2lnbmF0dXJlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzaWduYXR1cmVOb2RlTWF0Y2hlcyA9IHNpZ25hdHVyZS5tYXRjaFNpZ25hdHVyZU5vZGUoc2lnbmF0dXJlTm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChzaWduYXR1cmVOb2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZTtcbiAgfVxuXG4gIGZpbmRSZWZlcmVuY2VCeVJlZmVyZW5jZU5vZGUocmVmZXJlbmNlTm9kZSkge1xuICAgIGNvbnN0IHJlZmVyZW5jZXMgPSB0aGlzLmdldFJlZmVyZW5jZXMoKSxcbiAgICAgICAgICByZWZlcmVuY2UgPSByZWZlcmVuY2VzLmZpbmQoKHJlZmVyZW5jZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVmZXJlbmNlTWF0Y2hlUmVmZXJlbmNlTm9kZSA9IHJlZmVyZW5jZS5tYXRjaFJlZmVyZW5jZU5vZGUocmVmZXJlbmNlTm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChyZWZlcmVuY2VNYXRjaGVSZWZlcmVuY2VOb2RlKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlO1xuICB9XG5cbiAgZmluZEFzc3VtcHRpb25CeUFzc3VtcHRpb25Ob2RlKGFzc3VtcHRpb25Ob2RlKSB7XG4gICAgY29uc3QgYXNzdW1wdGlvbnMgPSB0aGlzLmdldEFzc3VtcHRpb25zKCksXG4gICAgICAgICAgYXNzdW1wdGlvbiA9IGFzc3VtcHRpb25zLmZpbmQoKGFzc3VtcHRpb24pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFzc3VtcHRpb25Ob2RlTWF0Y2hlcyA9IGFzc3VtcHRpb24ubWF0Y2hBc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChhc3N1bXB0aW9uTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBhc3N1bXB0aW9uO1xuICB9XG5cbiAgZmluZFJlZmVyZW5jZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3QgcmVmZXJlbmNlcyA9IHRoaXMuZ2V0UmVmZXJlbmNlcygpLFxuICAgICAgICAgIHJlZmVyZW5jZSA9IHJlZmVyZW5jZXMuZmluZCgocmVmZXJlbmNlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZWZlcmVuY2VNYXRjaGVNZXRhdmFyaWFibGVOb2RlID0gcmVmZXJlbmNlLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICAgICAgaWYgKHJlZmVyZW5jZU1hdGNoZU1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiByZWZlcmVuY2U7XG4gIH1cblxuICBmaW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVzID0gdGhpcy5nZXRNZXRhdmFyaWFibGVzKCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gbWV0YXZhcmlhYmxlcy5maW5kKChtZXRhdmFyaWFibGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gbWV0YXZhcmlhYmxlLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICAgICAgaWYgKG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgZmluZFN1YnN0aXR1dGlvbkJ5U3Vic3RpdHV0aW9uTm9kZShzdWJzdGl0dXRpb25Ob2RlKSB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9ucyA9IHRoaXMuZ2V0U3Vic3RpdHV0aW9ucygpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbnMuZmluZCgoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRpb25Ob2RlTWF0Y2hlcyA9IHN1YnN0aXR1dGlvbi5tYXRjaFN1YnN0aXR1dGlvbk5vZGUoc3Vic3RpdHV0aW9uTm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChzdWJzdGl0dXRpb25Ob2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGZpbmRQcm9wZXJ0eVJlbGF0aW9uQnlQcm9wZXJ0eVJlbGF0aW9uTm9kZShwcm9wZXJ0eVJlbGF0aW9uTm9kZSkge1xuICAgIGNvbnN0IHByb3BlcnR5UmVsYXRpb25zID0gdGhpcy5nZXRQcm9wZXJ0eVJlbGF0aW9ucygpLFxuICAgICAgICAgIHByb3BlcnR5UmVsYXRpb24gPSBwcm9wZXJ0eVJlbGF0aW9ucy5maW5kKChwcm9wZXJ0eVJlbGF0aW9uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eVJlbGF0aW9uTm9kZU1hdGNoZXMgPSBwcm9wZXJ0eVJlbGF0aW9uLm1hdGNoRXF1YWxpdHlOb2RlKHByb3BlcnR5UmVsYXRpb25Ob2RlKTtcblxuICAgICAgICAgICAgaWYgKHByb3BlcnR5UmVsYXRpb25Ob2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5UmVsYXRpb247XG4gIH1cblxuICBmaW5kVmFyaWFibGVCeVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXIgPSB2YXJpYWJsZU5vZGUuZ2V0VmFyaWFibGVJZGVudGlmaWVyKCksXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZSA9IHRoaXMuZmluZERlY2xhcmVkVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpLFxuICAgICAgICAgIHZhcmlhYmxlID0gZGVjbGFyZWRWYXJpYWJsZTsgIC8vL1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlO1xuICB9XG5cbiAgaXNUZXJtUHJlc2VudEJ5VGVybU5vZGUodGVybU5vZGUpIHtcbiAgICBjb25zdCB0ZXJtID0gdGhpcy5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpLFxuICAgICAgICAgIHRlcm1QcmVzZW50ID0gKHRlcm0gIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHRlcm1QcmVzZW50O1xuICB9XG5cbiAgaXNGcmFtZVByZXNlbnRCeUZyYW1lTm9kZShmcmFtZU5vZGUpIHtcbiAgICBjb25zdCBmcmFtZSA9IHRoaXMuZmluZEZyYW1lQnlGcmFtZU5vZGUoZnJhbWVOb2RlKSxcbiAgICAgICAgICBmcmFtZVByZXNlbnQgPSAoZnJhbWUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIGZyYW1lUHJlc2VudDtcbiAgfVxuXG4gIGlzRXF1YWxpdHlQcmVzZW50QnlFcXVhbGl0eU5vZGUoZXF1YWxpdHlOb2RlKSB7XG4gICAgY29uc3QgZXF1YWxpdHkgPSB0aGlzLmZpbmRFcXVhbGl0eUJ5RXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSksXG4gICAgICAgICAgZXF1YWxpdHlQcmVzZW50ID0gKGVxdWFsaXR5ICE9PSBudWxsKTtcblxuICAgIHJldHVybiBlcXVhbGl0eVByZXNlbnQ7XG4gIH1cblxuICBpc1Byb3BlcnR5UHJlc2VudEJ5UHJvcGVydHlOb2RlKHByb3BlcnR5Tm9kZSkge1xuICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5maW5kUHJvcGVydHlCeVByb3BlcnR5Tm9kZShwcm9wZXJ0eU5vZGUpLFxuICAgICAgICAgIHByb3BlcnR5UHJlc2VudCA9IChwcm9wZXJ0eSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gcHJvcGVydHlQcmVzZW50O1xuICB9XG5cbiAgaXNKdWRnZW1lbnRQcmVzZW50QnlKdWRnZW1lbnROb2RlKGp1ZGdlbWVudE5vZGUpIHtcbiAgICBjb25zdCBqdWRnZW1lbnQgPSB0aGlzLmZpbmRKdWRnZW1lbnRCeUp1ZGdlbWVudE5vZGUoanVkZ2VtZW50Tm9kZSksXG4gICAgICAgICAganVkZ2VtZW50UHJlc2VudCA9IChqdWRnZW1lbnQgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIGp1ZGdlbWVudFByZXNlbnQ7XG4gIH1cblxuICBpc0Fzc2VydGlvblByZXNlbnRCeUFzc2VydGlvbk5vZGUoYXNzZXJ0aW9uTm9kZSkge1xuICAgIGNvbnN0IGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbkJ5QXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlKSxcbiAgICAgICAgICBhc3NlcnRpb25QcmVzZW50ID0gKGFzc2VydGlvbiAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9uUHJlc2VudDtcbiAgfVxuXG4gIGlzU3RhdGVtZW50UHJlc2VudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50ID0gdGhpcy5maW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudFByZXNlbnQgPSAoc3RhdGVtZW50ICE9PSBudWxsKTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnRQcmVzZW50O1xuICB9XG5cbiAgaXNTaWduYXR1cmVQcmVzZW50QnlTaWduYXR1cmVOb2RlKHNpZ25hdHVyZU5vZGUpIHtcbiAgICBjb25zdCBzaWduYXR1cmUgPSB0aGlzLmZpbmRTaWduYXR1cmVCeVNpZ25hdHVyZU5vZGUoc2lnbmF0dXJlTm9kZSksXG4gICAgICAgICAgc2lnbmF0dXJlUHJlc2VudCA9IChzaWduYXR1cmUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZVByZXNlbnQ7XG4gIH1cblxuICBpc0Fzc3VtcHRpb25QcmVzZW50QnlBc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSkge1xuICAgIGNvbnN0IGFzc3VtcHRpb24gPSB0aGlzLmZpbmRBc3N1bXB0aW9uQnlBc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSksXG4gICAgICAgICAgYXNzdW1wdGlvblByZXNlbnQgPSAoYXNzdW1wdGlvbiAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gYXNzdW1wdGlvblByZXNlbnQ7XG4gIH1cblxuICBpc1JlZmVyZW5jZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IHJlZmVyZW5jZSA9IHRoaXMuZmluZFJlZmVyZW5jZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgICByZWZlcmVuY2VQcmVzZW50ID0gKHJlZmVyZW5jZSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlUHJlc2VudDtcbiAgfVxuXG4gIGlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVuTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZW4gPSB0aGlzLmZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlbk5vZGUpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZW5QcmVzZW50ID0gKG1ldGF2YXJpYWJsZW4gIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZW5QcmVzZW50O1xuICB9XG5cbiAgaXNQcm9wZXJ0eVJlbGF0aW9ucmVzZW50QnlQcm9wZXJ0eVJlbGF0aW9uTm9kZShwcm9wZXJ0eVJlbGF0aW9uTm9kZSkge1xuICAgIGNvbnN0IHByb3BlcnR5UmVsYXRpb24gPSB0aGlzLmZpbmRQcm9wZXJ0eVJlbGF0aW9uQnlQcm9wZXJ0eVJlbGF0aW9uTm9kZShwcm9wZXJ0eVJlbGF0aW9uTm9kZSksXG4gICAgICAgICAgcHJvcGVydHlSZWxhdGlvbnJlc2VudCA9IChwcm9wZXJ0eVJlbGF0aW9uICE9PSBudWxsKTtcblxuICAgIHJldHVybiBwcm9wZXJ0eVJlbGF0aW9ucmVzZW50O1xuICB9XG5cbiAgY29tbWl0KGVsZW1lbnQpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpczsgLy8vXG5cbiAgICBlbGVtZW50LnNldENvbnRleHQoY29udGV4dCk7XG4gIH1cblxuICBpbml0aWFsaXNlKGpzb24pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpczsgLy8vXG5cbiAgICB0aGlzLnRlcm1zID0gdGVybXNGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHRoaXMubWV0YXZhcmlhYmxlcyA9IG1ldGF2YXJpYWJsZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHRoaXMuc3RhdGVtZW50cyA9IHN0YXRlbWVudHNGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcbiAgICB0aGlzLnJlZmVyZW5jZXMgPSByZWZlcmVuY2VzRnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICB0aGlzLmVxdWFsaXRpZXMgPSBlcXVhbGl0aWVzRnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gICAgdGhpcy5hc3N1bXB0aW9ucyA9IGFzc3VtcHRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICB0aGlzLmZyYW1lcyA9IGZyYW1lc0Zyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgdGhpcy5wcm9wZXJ0aWVzID0gcHJvcGVydGllc0Zyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgdGhpcy5qdWRnZW1lbnRzID0ganVkZ2VtZW50c0Zyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICAgIHRoaXMuYXNzZXJ0aW9ucyA9IGFzc2VydGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcbiAgICB0aGlzLnNpZ25hdHVyZXMgPSBzaWduYXR1cmVzRnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gICAgdGhpcy5zdWJzdGl0dXRpb25zID0gc3Vic3RpdHV0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICAgIHRoaXMucHJvcGVydHlSZWxhdGlvbnMgPSBwcm9wZXJ0eVJlbGF0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCB0ZXJtcyA9IHRoaXMuZ2V0VGVybXMoKSxcbiAgICAgICAgZnJhbWVzID0gdGhpcy5nZXRGcmFtZXMoKSxcbiAgICAgICAgcHJvcGVydGllcyA9IHRoaXMuZ2V0UHJvcGVydGllcygpLFxuICAgICAgICBlcXVhbGl0aWVzID0gdGhpcy5nZXRFcXVhbGl0aWVzKCksXG4gICAgICAgIGp1ZGdlbWVudHMgPSB0aGlzLmdldEp1ZGdlbWVudHMoKSxcbiAgICAgICAgYXNzZXJ0aW9ucyA9IHRoaXMuZ2V0QXNzZXJ0aW9ucygpLFxuICAgICAgICBzdGF0ZW1lbnRzID0gdGhpcy5nZXRTdGF0ZW1lbnRzKCksXG4gICAgICAgIHNpZ25hdHVyZXMgPSB0aGlzLmdldFNpZ25hdHVyZXMoKSxcbiAgICAgICAgcmVmZXJlbmNlcyA9IHRoaXMuZ2V0UmVmZXJlbmNlcygpLFxuICAgICAgICBhc3N1bXB0aW9ucyA9IHRoaXMuZ2V0QXNzdW1wdGlvbnMoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlcyA9IHRoaXMuZ2V0TWV0YXZhcmlhYmxlcygpLFxuICAgICAgICBzdWJzdGl0dXRpb25zID0gdGhpcy5nZXRTdWJzdGl0dXRpb25zKCksXG4gICAgICAgIHByb3BlcnR5UmVsYXRpb25zID0gdGhpcy5nZXRQcm9wZXJ0eVJlbGF0aW9ucygpO1xuXG4gICAgY29uc3QgdGVybXNKU09OID0gdGVybXNUb1Rlcm1zSlNPTih0ZXJtcyksXG4gICAgICAgICAgZnJhbWVzSlNPTiA9IGZyYW1lc1RvRnJhbWVzSlNPTihmcmFtZXMpLFxuICAgICAgICAgIHByb3BlcnRpZXNKU09OID0gcHJvcGVydGllc1RvUHJvcGVydGllc0pTT04ocHJvcGVydGllcyksXG4gICAgICAgICAgZXF1YWxpdGllc0pTT04gPSBlcXVhbGl0aWVzVG9FcXVhbGl0aWVzSlNPTihlcXVhbGl0aWVzKSxcbiAgICAgICAgICBqdWRnZW1lbnRzSlNPTiA9IGp1ZGdlbWVudHNUb0p1ZGdlbWVudHNKU09OKGp1ZGdlbWVudHMpLFxuICAgICAgICAgIGFzc2VydGlvbnNKU09OID0gYXNzZXJ0aW9uc1RvQXNzZXJ0aW9uc0pTT04oYXNzZXJ0aW9ucyksXG4gICAgICAgICAgc3RhdGVtZW50c0pTT04gPSBzdGF0ZW1lbnRzVG9TdGF0ZW1lbnRzSlNPTihzdGF0ZW1lbnRzKSxcbiAgICAgICAgICBzaWduYXR1cmVzSlNPTiA9IHNpZ25hdHVyZXNUb1NpZ25hdHVyZXNKU09OKHNpZ25hdHVyZXMpLFxuICAgICAgICAgIHJlZmVyZW5jZXNKU09OID0gcmVmZXJlbmNlc1RvUmVmZXJlbmNlc0pTT04ocmVmZXJlbmNlcyksXG4gICAgICAgICAgYXNzdW1wdGlvbnNKU09OID0gYXNzdW1wdGlvbnNUb0Fzc3VtcHRpb25zSlNPTihhc3N1bXB0aW9ucyksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlc0pTT04gPSBtZXRhdmFyaWFibGVzVG9NZXRhdmFyaWFibGVzSlNPTihtZXRhdmFyaWFibGVzKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb25zSlNPTiA9IHN1YnN0aXR1dGlvbnNUb1N1YnN0aXR1dGlvbnNKU09OKHN1YnN0aXR1dGlvbnMpLFxuICAgICAgICAgIHByb3BlcnR5UmVsYXRpb25zSlNPTiA9IHByb3BlcnR5UmVsYXRpb25zVG9Qcm9wZXJ0eVJlbGF0aW9uc0pTT04ocHJvcGVydHlSZWxhdGlvbnMpO1xuXG4gICAgdGVybXMgPSB0ZXJtc0pTT047IC8vL1xuICAgIGZyYW1lcyA9IGZyYW1lc0pTT047IC8vL1xuICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzSlNPTjsgIC8vL1xuICAgIGVxdWFsaXRpZXMgPSBlcXVhbGl0aWVzSlNPTjsgLy8vXG4gICAganVkZ2VtZW50cyA9IGp1ZGdlbWVudHNKU09OOyAvLy9cbiAgICBhc3NlcnRpb25zID0gYXNzZXJ0aW9uc0pTT047IC8vL1xuICAgIHN0YXRlbWVudHMgPSBzdGF0ZW1lbnRzSlNPTjsgLy8vXG4gICAgc2lnbmF0dXJlcyA9IHNpZ25hdHVyZXNKU09OOyAvLy9cbiAgICByZWZlcmVuY2VzID0gcmVmZXJlbmNlc0pTT047IC8vL1xuICAgIGFzc3VtcHRpb25zID0gYXNzdW1wdGlvbnNKU09OOyAvLy9cbiAgICBtZXRhdmFyaWFibGVzID0gbWV0YXZhcmlhYmxlc0pTT047ICAvL1xuICAgIHN1YnN0aXR1dGlvbnMgPSBzdWJzdGl0dXRpb25zSlNPTjsgLy8vXG4gICAgcHJvcGVydHlSZWxhdGlvbnMgPSBwcm9wZXJ0eVJlbGF0aW9uc0pTT047IC8vL1xuXG4gICAgY29uc3QganNvbiA9IHtcbiAgICAgIHRlcm1zLFxuICAgICAgZnJhbWVzLFxuICAgICAgcHJvcGVydGllcyxcbiAgICAgIGVxdWFsaXRpZXMsXG4gICAgICBqdWRnZW1lbnRzLFxuICAgICAgYXNzZXJ0aW9ucyxcbiAgICAgIHN0YXRlbWVudHMsXG4gICAgICBzaWduYXR1cmVzLFxuICAgICAgcmVmZXJlbmNlcyxcbiAgICAgIGFzc3VtcHRpb25zLFxuICAgICAgbWV0YXZhcmlhYmxlcyxcbiAgICAgIHN1YnN0aXR1dGlvbnMsXG4gICAgICBwcm9wZXJ0eVJlbGF0aW9uc1xuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgY29uc3QgdGVybXMgPSBudWxsLFxuICAgICAgICAgIGZyYW1lcyA9IG51bGwsXG4gICAgICAgICAgcHJvcGVydGllcyA9IG51bGwsXG4gICAgICAgICAgZXF1YWxpdGllcyA9IG51bGwsXG4gICAgICAgICAganVkZ2VtZW50cyA9IG51bGwsXG4gICAgICAgICAgc3RhdGVtZW50cyA9IG51bGwsXG4gICAgICAgICAgYXNzZXJ0aW9ucyA9IG51bGwsXG4gICAgICAgICAgc2lnbmF0dXJlcyA9IG51bGwsXG4gICAgICAgICAgcmVmZXJlbmNlcyA9IG51bGwsXG4gICAgICAgICAgYXNzdW1wdGlvbnMgPSBudWxsLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZXMgPSBudWxsLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbnMgPSBudWxsLFxuICAgICAgICAgIHByb3BlcnR5UmVsYXRpb25zID0gbnVsbCxcbiAgICAgICAgICBtbmVtaWNDb250ZXh0ID0gbmV3IE1uZW1pY0NvbnRleHQoY29udGV4dCwgdGVybXMsIGZyYW1lcywgcHJvcGVydGllcywgZXF1YWxpdGllcywganVkZ2VtZW50cywgYXNzZXJ0aW9ucywgc3RhdGVtZW50cywgc2lnbmF0dXJlcywgcmVmZXJlbmNlcywgYXNzdW1wdGlvbnMsIG1ldGF2YXJpYWJsZXMsIHN1YnN0aXR1dGlvbnMsIHByb3BlcnR5UmVsYXRpb25zKTtcblxuICAgIG1uZW1pY0NvbnRleHQuaW5pdGlhbGlzZShqc29uKTtcblxuICAgIHJldHVybiBtbmVtaWNDb250ZXh0O1xuICB9XG5cbiAgc3RhdGljIGZyb21Ob3RoaW5nKGNvbnRleHQpIHtcbiAgICBjb25zdCB0ZXJtcyA9IFtdLFxuICAgICAgICAgIGZyYW1lcyA9IFtdLFxuICAgICAgICAgIHByb3BlcnRpZXMgPSBbXSxcbiAgICAgICAgICBlcXVhbGl0aWVzID0gW10sXG4gICAgICAgICAganVkZ2VtZW50cyA9IFtdLFxuICAgICAgICAgIHN0YXRlbWVudHMgPSBbXSxcbiAgICAgICAgICBhc3NlcnRpb25zID0gW10sXG4gICAgICAgICAgc2lnbmF0dXJlcyA9IFtdLFxuICAgICAgICAgIHJlZmVyZW5jZXMgPSBbXSxcbiAgICAgICAgICBhc3N1bXB0aW9ucyA9IFtdLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZXMgPSBbXSxcbiAgICAgICAgICBzdWJzdGl0dXRpb25zID0gW10sXG4gICAgICAgICAgcHJvcGVydHlSZWxhdGlvbnMgPSBbXSxcbiAgICAgICAgICBtbmVtaWNDb250ZXh0ID0gbmV3IE1uZW1pY0NvbnRleHQoY29udGV4dCwgdGVybXMsIGZyYW1lcywgcHJvcGVydGllcywgZXF1YWxpdGllcywganVkZ2VtZW50cywgYXNzZXJ0aW9ucywgc3RhdGVtZW50cywgc2lnbmF0dXJlcywgcmVmZXJlbmNlcywgYXNzdW1wdGlvbnMsIG1ldGF2YXJpYWJsZXMsIHN1YnN0aXR1dGlvbnMsIHByb3BlcnR5UmVsYXRpb25zKTtcblxuICAgIHJldHVybiBtbmVtaWNDb250ZXh0O1xuICB9XG59XG4iXSwibmFtZXMiOlsiTW5lbWljQ29udGV4dCIsInB1c2giLCJhcnJheVV0aWxpdGllcyIsIkNvbnRleHQiLCJjb250ZXh0IiwidGVybXMiLCJmcmFtZXMiLCJwcm9wZXJ0aWVzIiwiZXF1YWxpdGllcyIsImp1ZGdlbWVudHMiLCJhc3NlcnRpb25zIiwic3RhdGVtZW50cyIsInNpZ25hdHVyZXMiLCJyZWZlcmVuY2VzIiwiYXNzdW1wdGlvbnMiLCJtZXRhdmFyaWFibGVzIiwic3Vic3RpdHV0aW9ucyIsInByb3BlcnR5UmVsYXRpb25zIiwiZ2V0VGVybXMiLCJnZXRDb250ZXh0IiwiY29tcHJlc3NUZXJtcyIsImdldEZyYW1lcyIsImNvbXByZXNzRnJhbWVzIiwiZ2V0UHJvcGVydGllcyIsImNvbXByZXNzUHJvcGVydGllcyIsImdldEVxdWFsaXRpZXMiLCJjb21wcmVzc0VxdWFsaXRpZXMiLCJnZXRKdWRnZW1lbnRzIiwiY29tcHJlc3NKdWRnZW1lbnRzIiwiZ2V0U3RhdGVtZW50cyIsImNvbXByZXNzU3RhdGVtZW50cyIsImdldFNpZ25hdHVyZXMiLCJjb21wcmVzc1NpZ25hdHVyZXMiLCJnZXRBc3NlcnRpb25zIiwiY29tcHJlc3NBc3NlcnRpb25zIiwiZ2V0UmVmZXJlbmNlcyIsImNvbXByZXNzUmVmZXJlbmNlcyIsImdldEFzc3VtcHRpb25zIiwiY29tcHJlc3NBc3N1bXB0aW9ucyIsImdldE1ldGF2YXJpYWJsZXMiLCJjb21wcmVzc01ldGF2YXJpYWJsZXMiLCJnZXRTdWJzdGl0dXRpb25zIiwiY29tcHJlc3NTdWJzdGl0dXRpb25zIiwiZ2V0UHJvcGVydHlSZWxhdGlvbnMiLCJjb21wcmVzc1Byb3BlcnR5UmVsYXRpb25zIiwiYWRkVGVybSIsInRlcm0iLCJ0ZXJtU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWJ1ZyIsImFkZEZyYW1lIiwiZnJhbWUiLCJmcmFtZVN0cmluZyIsImFkZEVxdWFsaXR5IiwiZXF1YWxpdHkiLCJlcXVhbGl0eVN0cmluZyIsImFkZFByb3BlcnR5IiwicHJvcGVydHkiLCJwcm9wZXJ0eVN0cmluZyIsImFkZEp1ZGdlbWVudCIsImp1ZGdlbWVudCIsImp1ZGdlbWVudFN0cmluZyIsImFkZEFzc2VydGlvbiIsImFzc2VydGlvbiIsImFzc2VydGlvblN0cmluZyIsImFkZFN0YXRlbWVudCIsInN0YXRlbWVudCIsInN0YXRlbWVudFN0cmluZyIsImFkZFNpZ25hdHVyZSIsInNpZ25hdHVyZSIsInNpZ25hdHVyZVN0cmluZyIsImFkZFJlZmVyZW5jZSIsInJlZmVyZW5jZSIsInJlZmVyZW5jZVN0cmluZyIsImFkZEFzc3VtcHRpb24iLCJhc3N1bXB0aW9uIiwiYXNzdW1wdGlvblN0cmluZyIsImFkZE1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZVN0cmluZyIsImFkZFN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvblN0cmluZyIsImFkZFByb3BlcnR5UmVsYXRpb24iLCJwcm9wZXJ0eVJlbGF0aW9uIiwicHJvcGVydHlSZWxhdGlvblN0cmluZyIsImFkZFRlcm1zIiwiZm9yRWFjaCIsImZpbmRUZXJtQnlUZXJtTm9kZSIsInRlcm1Ob2RlIiwiZmluZCIsInRlcm1Ob2RlTWF0Y2hlcyIsIm1hdGNoVGVybU5vZGUiLCJmaW5kRnJhbWVCeUZyYW1lTm9kZSIsImZyYW1lTm9kZSIsImZyYW1lTm9kZU1hdGNoZXMiLCJtYXRjaEZyYW1lTm9kZSIsImZpbmRFcXVhbGl0eUJ5RXF1YWxpdHlOb2RlIiwiZXF1YWxpdHlOb2RlIiwiZXF1YWxpdHlOb2RlTWF0Y2hlcyIsIm1hdGNoRXF1YWxpdHlOb2RlIiwiZmluZFByb3BlcnR5QnlQcm9wZXJ0eU5vZGUiLCJwcm9wZXJ0eU5vZGUiLCJwcm9wZXJ0eU5vZGVNYXRjaGVzIiwiZmluZEp1ZGdlbWVudEJ5SnVkZ2VtZW50Tm9kZSIsImp1ZGdlbWVudE5vZGUiLCJqdWRnZW1lbnROb2RlTWF0Y2hlcyIsIm1hdGNoSnVkZ2VtZW50Tm9kZSIsImZpbmRBc3NlcnRpb25CeUFzc2VydGlvbk5vZGUiLCJhc3NlcnRpb25Ob2RlIiwiYXNzZXJ0aW9uTm9kZU1hdGNoZXMiLCJtYXRjaEFzc2VydGlvbk5vZGUiLCJmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGVNYXRjaGVzIiwibWF0Y2hTdGF0ZW1lbnROb2RlIiwiZmluZFNpZ25hdHVyZUJ5U2lnbmF0dXJlTm9kZSIsInNpZ25hdHVyZU5vZGUiLCJzaWduYXR1cmVOb2RlTWF0Y2hlcyIsIm1hdGNoU2lnbmF0dXJlTm9kZSIsImZpbmRSZWZlcmVuY2VCeVJlZmVyZW5jZU5vZGUiLCJyZWZlcmVuY2VOb2RlIiwicmVmZXJlbmNlTWF0Y2hlUmVmZXJlbmNlTm9kZSIsIm1hdGNoUmVmZXJlbmNlTm9kZSIsImZpbmRBc3N1bXB0aW9uQnlBc3N1bXB0aW9uTm9kZSIsImFzc3VtcHRpb25Ob2RlIiwiYXNzdW1wdGlvbk5vZGVNYXRjaGVzIiwibWF0Y2hBc3N1bXB0aW9uTm9kZSIsImZpbmRSZWZlcmVuY2VCeU1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlIiwicmVmZXJlbmNlTWF0Y2hlTWV0YXZhcmlhYmxlTm9kZSIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsImZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyIsImZpbmRTdWJzdGl0dXRpb25CeVN1YnN0aXR1dGlvbk5vZGUiLCJzdWJzdGl0dXRpb25Ob2RlIiwic3Vic3RpdHV0aW9uTm9kZU1hdGNoZXMiLCJtYXRjaFN1YnN0aXR1dGlvbk5vZGUiLCJmaW5kUHJvcGVydHlSZWxhdGlvbkJ5UHJvcGVydHlSZWxhdGlvbk5vZGUiLCJwcm9wZXJ0eVJlbGF0aW9uTm9kZSIsInByb3BlcnR5UmVsYXRpb25Ob2RlTWF0Y2hlcyIsImZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOb2RlIiwidmFyaWFibGVOb2RlIiwidmFyaWFibGVJZGVudGlmaWVyIiwiZ2V0VmFyaWFibGVJZGVudGlmaWVyIiwiZGVjbGFyZWRWYXJpYWJsZSIsImZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIiLCJ2YXJpYWJsZSIsImlzVGVybVByZXNlbnRCeVRlcm1Ob2RlIiwidGVybVByZXNlbnQiLCJpc0ZyYW1lUHJlc2VudEJ5RnJhbWVOb2RlIiwiZnJhbWVQcmVzZW50IiwiaXNFcXVhbGl0eVByZXNlbnRCeUVxdWFsaXR5Tm9kZSIsImVxdWFsaXR5UHJlc2VudCIsImlzUHJvcGVydHlQcmVzZW50QnlQcm9wZXJ0eU5vZGUiLCJwcm9wZXJ0eVByZXNlbnQiLCJpc0p1ZGdlbWVudFByZXNlbnRCeUp1ZGdlbWVudE5vZGUiLCJqdWRnZW1lbnRQcmVzZW50IiwiaXNBc3NlcnRpb25QcmVzZW50QnlBc3NlcnRpb25Ob2RlIiwiYXNzZXJ0aW9uUHJlc2VudCIsImlzU3RhdGVtZW50UHJlc2VudEJ5U3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudFByZXNlbnQiLCJpc1NpZ25hdHVyZVByZXNlbnRCeVNpZ25hdHVyZU5vZGUiLCJzaWduYXR1cmVQcmVzZW50IiwiaXNBc3N1bXB0aW9uUHJlc2VudEJ5QXNzdW1wdGlvbk5vZGUiLCJhc3N1bXB0aW9uUHJlc2VudCIsImlzUmVmZXJlbmNlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZSIsInJlZmVyZW5jZVByZXNlbnQiLCJpc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVuTm9kZSIsIm1ldGF2YXJpYWJsZW4iLCJtZXRhdmFyaWFibGVuUHJlc2VudCIsImlzUHJvcGVydHlSZWxhdGlvbnJlc2VudEJ5UHJvcGVydHlSZWxhdGlvbk5vZGUiLCJwcm9wZXJ0eVJlbGF0aW9ucmVzZW50IiwiY29tbWl0IiwiZWxlbWVudCIsInNldENvbnRleHQiLCJpbml0aWFsaXNlIiwianNvbiIsInRlcm1zRnJvbUpTT04iLCJtZXRhdmFyaWFibGVzRnJvbUpTT04iLCJzdGF0ZW1lbnRzRnJvbUpTT04iLCJyZWZlcmVuY2VzRnJvbUpTT04iLCJlcXVhbGl0aWVzRnJvbUpTT04iLCJhc3N1bXB0aW9uc0Zyb21KU09OIiwiZnJhbWVzRnJvbUpTT04iLCJwcm9wZXJ0aWVzRnJvbUpTT04iLCJqdWRnZW1lbnRzRnJvbUpTT04iLCJhc3NlcnRpb25zRnJvbUpTT04iLCJzaWduYXR1cmVzRnJvbUpTT04iLCJzdWJzdGl0dXRpb25zRnJvbUpTT04iLCJwcm9wZXJ0eVJlbGF0aW9uc0Zyb21KU09OIiwidG9KU09OIiwidGVybXNKU09OIiwidGVybXNUb1Rlcm1zSlNPTiIsImZyYW1lc0pTT04iLCJmcmFtZXNUb0ZyYW1lc0pTT04iLCJwcm9wZXJ0aWVzSlNPTiIsInByb3BlcnRpZXNUb1Byb3BlcnRpZXNKU09OIiwiZXF1YWxpdGllc0pTT04iLCJlcXVhbGl0aWVzVG9FcXVhbGl0aWVzSlNPTiIsImp1ZGdlbWVudHNKU09OIiwianVkZ2VtZW50c1RvSnVkZ2VtZW50c0pTT04iLCJhc3NlcnRpb25zSlNPTiIsImFzc2VydGlvbnNUb0Fzc2VydGlvbnNKU09OIiwic3RhdGVtZW50c0pTT04iLCJzdGF0ZW1lbnRzVG9TdGF0ZW1lbnRzSlNPTiIsInNpZ25hdHVyZXNKU09OIiwic2lnbmF0dXJlc1RvU2lnbmF0dXJlc0pTT04iLCJyZWZlcmVuY2VzSlNPTiIsInJlZmVyZW5jZXNUb1JlZmVyZW5jZXNKU09OIiwiYXNzdW1wdGlvbnNKU09OIiwiYXNzdW1wdGlvbnNUb0Fzc3VtcHRpb25zSlNPTiIsIm1ldGF2YXJpYWJsZXNKU09OIiwibWV0YXZhcmlhYmxlc1RvTWV0YXZhcmlhYmxlc0pTT04iLCJzdWJzdGl0dXRpb25zSlNPTiIsInN1YnN0aXR1dGlvbnNUb1N1YnN0aXR1dGlvbnNKU09OIiwicHJvcGVydHlSZWxhdGlvbnNKU09OIiwicHJvcGVydHlSZWxhdGlvbnNUb1Byb3BlcnR5UmVsYXRpb25zSlNPTiIsImZyb21KU09OIiwibW5lbWljQ29udGV4dCIsImZyb21Ob3RoaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFnREE7OztlQUFxQkE7OzsyQkE5Q1U7Z0VBRVg7MEJBY3NCO3NCQTBCZTs7Ozs7O0FBRXpELE1BQU0sRUFBRUMsSUFBSSxFQUFFLEdBQUdDLHlCQUFjO0FBRWhCLE1BQU1GLHNCQUFzQkcsZ0JBQU87SUFDaEQsWUFBWUMsT0FBTyxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sRUFBRUMsVUFBVSxFQUFFQyxVQUFVLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxFQUFFQyxVQUFVLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxFQUFFQyxXQUFXLEVBQUVDLGFBQWEsRUFBRUMsYUFBYSxFQUFFQyxpQkFBaUIsQ0FBRTtRQUNwTCxLQUFLLENBQUNiO1FBRU4sSUFBSSxDQUFDQyxLQUFLLEdBQUdBO1FBQ2IsSUFBSSxDQUFDQyxNQUFNLEdBQUdBO1FBQ2QsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO1FBQ2xCLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtRQUNsQixJQUFJLENBQUNDLFVBQVUsR0FBR0E7UUFDbEIsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO1FBQ2xCLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtRQUNsQixJQUFJLENBQUNDLFVBQVUsR0FBR0E7UUFDbEIsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO1FBQ2xCLElBQUks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
|
package/lib/context/nested.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return NestedContext;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _context = /*#__PURE__*/ _interop_require_default(require("../context"));
|
|
12
|
-
function _interop_require_default(obj) {
|
|
13
|
-
return obj && obj.__esModule ? obj : {
|
|
14
|
-
default: obj
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
class NestedContext extends _context.default {
|
|
18
|
-
addAssignment(assignment) {
|
|
19
|
-
///
|
|
20
|
-
}
|
|
21
|
-
isStated() {
|
|
22
|
-
const stated = true;
|
|
23
|
-
return stated;
|
|
24
|
-
}
|
|
25
|
-
static fromNothing(context) {
|
|
26
|
-
const nestedContext = new NestedContext(context);
|
|
27
|
-
return nestedContext;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L25lc3RlZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IENvbnRleHQgZnJvbSBcIi4uL2NvbnRleHRcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmVzdGVkQ29udGV4dCBleHRlbmRzIENvbnRleHQge1xuICBhZGRBc3NpZ25tZW50KGFzc2lnbm1lbnQpIHtcbiAgICAvLy9cbiAgfVxuXG4gIGlzU3RhdGVkKCkge1xuICAgIGNvbnN0IHN0YXRlZCA9IHRydWU7XG5cbiAgICByZXR1cm4gc3RhdGVkO1xuICB9XG5cbiAgc3RhdGljIGZyb21Ob3RoaW5nKGNvbnRleHQpIHtcbiAgICBjb25zdCBuZXN0ZWRDb250ZXh0ID0gbmV3IE5lc3RlZENvbnRleHQoY29udGV4dCk7XG5cbiAgICByZXR1cm4gbmVzdGVkQ29udGV4dDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIk5lc3RlZENvbnRleHQiLCJDb250ZXh0IiwiYWRkQXNzaWdubWVudCIsImFzc2lnbm1lbnQiLCJpc1N0YXRlZCIsInN0YXRlZCIsImZyb21Ob3RoaW5nIiwiY29udGV4dCIsIm5lc3RlZENvbnRleHQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQUlBOzs7ZUFBcUJBOzs7Z0VBRkQ7Ozs7OztBQUVMLE1BQU1BLHNCQUFzQkMsZ0JBQU87SUFDaERDLGNBQWNDLFVBQVUsRUFBRTtJQUN4QixHQUFHO0lBQ0w7SUFFQUMsV0FBVztRQUNULE1BQU1DLFNBQVM7UUFFZixPQUFPQTtJQUNUO0lBRUEsT0FBT0MsWUFBWUMsT0FBTyxFQUFFO1FBQzFCLE1BQU1DLGdCQUFnQixJQUFJUixjQUFjTztRQUV4QyxPQUFPQztJQUNUO0FBQ0YifQ==
|