occam-verify-cli 1.0.428 → 1.0.437
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/context/file.js +1 -1
- package/lib/element/assertion.js +115 -24
- package/lib/element/assumption.js +120 -20
- package/lib/element/axiomLemmaTheoremConjecture.js +118 -30
- package/lib/element/conclusion.js +113 -25
- package/lib/element/declaration.js +112 -37
- package/lib/element/deduction.js +112 -66
- package/lib/element/derivation.js +114 -5
- package/lib/element/equality.js +119 -26
- package/lib/element/equivalence.js +121 -28
- package/lib/element/equivalences.js +122 -7
- package/lib/element/error.js +115 -32
- package/lib/element/frame.js +119 -59
- package/lib/element/hypothesis.js +115 -27
- package/lib/element/judgement.js +120 -33
- package/lib/element/label.js +116 -63
- package/lib/element/lemma.js +1 -9
- package/lib/element/metaLemma.js +1 -8
- package/lib/element/metaLemmaMetatheorem.js +117 -29
- package/lib/element/metaType.js +68 -61
- package/lib/element/metatheorem.js +1 -8
- package/lib/element/metavariable.js +122 -93
- package/lib/element/parameter.js +120 -20
- package/lib/element/premise.js +114 -35
- package/lib/element/procedureCall.js +117 -99
- package/lib/element/procedureReference.js +120 -20
- package/lib/element/proof.js +111 -55
- package/lib/element/property.js +121 -35
- package/lib/element/propertyRelation.js +116 -72
- package/lib/element/reference.js +120 -70
- package/lib/element/rule.js +116 -41
- package/lib/element/section.js +114 -133
- package/lib/element/signature.js +120 -20
- package/lib/element/statement/combinator/bracketed.js +4 -9
- package/lib/element/statement.js +110 -125
- package/lib/element/step.js +115 -27
- package/lib/element/subDerivation.js +111 -43
- package/lib/element/subproof.js +115 -20
- package/lib/element/substitution.js +115 -31
- package/lib/element/substitutions.js +120 -6
- package/lib/element/supposition.js +114 -35
- package/lib/element/term/constructor/bracketed.js +4 -8
- package/lib/element/term.js +111 -98
- package/lib/element/theorem.js +1 -8
- package/lib/element/type.js +71 -91
- package/lib/element/typePrefix.js +120 -20
- package/lib/element/variable.js +116 -111
- package/lib/element.js +67 -0
- package/lib/node/{nonsense.js → equivalences.js} +10 -10
- package/lib/node/frame.js +11 -5
- package/lib/node/procedureReference.js +6 -6
- package/lib/node/statement.js +11 -5
- package/lib/node/term.js +8 -1
- package/lib/nonTerminalNodeMap.js +3 -3
- package/lib/process/instantiate.js +8 -39
- package/lib/process/verify.js +22 -29
- package/lib/ruleNames.js +5 -5
- package/lib/utilities/brackets.js +11 -11
- package/lib/utilities/element.js +588 -94
- package/lib/utilities/instance.js +61 -0
- package/lib/utilities/string.js +73 -1
- package/package.json +10 -10
- package/src/context/file.js +1 -1
- package/src/element/assertion.js +4 -16
- package/src/element/assumption.js +5 -12
- package/src/element/axiomLemmaTheoremConjecture.js +4 -16
- package/src/element/conclusion.js +4 -16
- package/src/element/declaration.js +4 -16
- package/src/element/deduction.js +5 -19
- package/src/element/derivation.js +5 -2
- package/src/element/equality.js +4 -16
- package/src/element/equivalence.js +4 -16
- package/src/element/equivalences.js +12 -5
- package/src/element/error.js +4 -24
- package/src/element/frame.js +5 -56
- package/src/element/hypothesis.js +6 -23
- package/src/element/judgement.js +5 -30
- package/src/element/label.js +8 -19
- package/src/element/lemma.js +0 -7
- package/src/element/metaLemma.js +0 -7
- package/src/element/metaLemmaMetatheorem.js +4 -16
- package/src/element/metaType.js +23 -64
- package/src/element/metatheorem.js +0 -7
- package/src/element/metavariable.js +6 -94
- package/src/element/parameter.js +10 -18
- package/src/element/premise.js +4 -31
- package/src/element/procedureCall.js +5 -77
- package/src/element/procedureReference.js +7 -17
- package/src/element/proof.js +5 -17
- package/src/element/property.js +8 -30
- package/src/element/propertyRelation.js +5 -33
- package/src/element/reference.js +8 -72
- package/src/element/rule.js +4 -41
- package/src/element/section.js +4 -129
- package/src/element/signature.js +7 -13
- package/src/element/statement/combinator/bracketed.js +3 -9
- package/src/element/statement.js +3 -126
- package/src/element/step.js +4 -16
- package/src/element/subDerivation.js +5 -3
- package/src/element/subproof.js +5 -12
- package/src/element/substitution.js +4 -24
- package/src/element/substitutions.js +6 -2
- package/src/element/supposition.js +4 -31
- package/src/element/term/constructor/bracketed.js +4 -9
- package/src/element/term.js +6 -59
- package/src/element/theorem.js +0 -7
- package/src/element/type.js +9 -104
- package/src/element/typePrefix.js +8 -13
- package/src/element/variable.js +6 -109
- package/src/element.js +29 -0
- package/src/node/{nonsense.js → equivalences.js} +2 -2
- package/src/node/frame.js +10 -5
- package/src/node/procedureReference.js +4 -4
- package/src/node/statement.js +10 -5
- package/src/node/term.js +7 -0
- package/src/nonTerminalNodeMap.js +3 -3
- package/src/process/instantiate.js +4 -36
- package/src/process/verify.js +42 -47
- package/src/ruleNames.js +1 -1
- package/src/utilities/brackets.js +13 -13
- package/src/utilities/element.js +731 -129
- package/src/utilities/instance.js +53 -0
- package/src/utilities/string.js +97 -0
package/lib/element/error.js
CHANGED
|
@@ -8,12 +8,40 @@ Object.defineProperty(exports, "default", {
|
|
|
8
8
|
return _default;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
+
var _element = /*#__PURE__*/ _interop_require_default(require("../element"));
|
|
11
12
|
var _elements = require("../elements");
|
|
13
|
+
function _assert_this_initialized(self) {
|
|
14
|
+
if (self === void 0) {
|
|
15
|
+
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
16
|
+
}
|
|
17
|
+
return self;
|
|
18
|
+
}
|
|
19
|
+
function _call_super(_this, derived, args) {
|
|
20
|
+
derived = _get_prototype_of(derived);
|
|
21
|
+
return _possible_constructor_return(_this, _is_native_reflect_construct() ? Reflect.construct(derived, args || [], _get_prototype_of(_this).constructor) : derived.apply(_this, args));
|
|
22
|
+
}
|
|
12
23
|
function _class_call_check(instance, Constructor) {
|
|
13
24
|
if (!(instance instanceof Constructor)) {
|
|
14
25
|
throw new TypeError("Cannot call a class as a function");
|
|
15
26
|
}
|
|
16
27
|
}
|
|
28
|
+
function _construct(Parent, args, Class) {
|
|
29
|
+
if (_is_native_reflect_construct()) {
|
|
30
|
+
_construct = Reflect.construct;
|
|
31
|
+
} else {
|
|
32
|
+
_construct = function construct(Parent, args, Class) {
|
|
33
|
+
var a = [
|
|
34
|
+
null
|
|
35
|
+
];
|
|
36
|
+
a.push.apply(a, args);
|
|
37
|
+
var Constructor = Function.bind.apply(Parent, a);
|
|
38
|
+
var instance = new Constructor();
|
|
39
|
+
if (Class) _set_prototype_of(instance, Class.prototype);
|
|
40
|
+
return instance;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
return _construct.apply(null, arguments);
|
|
44
|
+
}
|
|
17
45
|
function _defineProperties(target, props) {
|
|
18
46
|
for(var i = 0; i < props.length; i++){
|
|
19
47
|
var descriptor = props[i];
|
|
@@ -41,33 +69,96 @@ function _define_property(obj, key, value) {
|
|
|
41
69
|
}
|
|
42
70
|
return obj;
|
|
43
71
|
}
|
|
72
|
+
function _get_prototype_of(o) {
|
|
73
|
+
_get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
|
|
74
|
+
return o.__proto__ || Object.getPrototypeOf(o);
|
|
75
|
+
};
|
|
76
|
+
return _get_prototype_of(o);
|
|
77
|
+
}
|
|
78
|
+
function _inherits(subClass, superClass) {
|
|
79
|
+
if (typeof superClass !== "function" && superClass !== null) {
|
|
80
|
+
throw new TypeError("Super expression must either be null or a function");
|
|
81
|
+
}
|
|
82
|
+
subClass.prototype = Object.create(superClass && superClass.prototype, {
|
|
83
|
+
constructor: {
|
|
84
|
+
value: subClass,
|
|
85
|
+
writable: true,
|
|
86
|
+
configurable: true
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
if (superClass) _set_prototype_of(subClass, superClass);
|
|
90
|
+
}
|
|
91
|
+
function _interop_require_default(obj) {
|
|
92
|
+
return obj && obj.__esModule ? obj : {
|
|
93
|
+
default: obj
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
function _is_native_function(fn) {
|
|
97
|
+
return Function.toString.call(fn).indexOf("[native code]") !== -1;
|
|
98
|
+
}
|
|
99
|
+
function _possible_constructor_return(self, call) {
|
|
100
|
+
if (call && (_type_of(call) === "object" || typeof call === "function")) {
|
|
101
|
+
return call;
|
|
102
|
+
}
|
|
103
|
+
return _assert_this_initialized(self);
|
|
104
|
+
}
|
|
105
|
+
function _set_prototype_of(o, p) {
|
|
106
|
+
_set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
|
|
107
|
+
o.__proto__ = p;
|
|
108
|
+
return o;
|
|
109
|
+
};
|
|
110
|
+
return _set_prototype_of(o, p);
|
|
111
|
+
}
|
|
112
|
+
function _type_of(obj) {
|
|
113
|
+
"@swc/helpers - typeof";
|
|
114
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
115
|
+
}
|
|
116
|
+
function _wrap_native_super(Class) {
|
|
117
|
+
var _cache = typeof Map === "function" ? new Map() : undefined;
|
|
118
|
+
_wrap_native_super = function wrapNativeSuper(Class) {
|
|
119
|
+
if (Class === null || !_is_native_function(Class)) return Class;
|
|
120
|
+
if (typeof Class !== "function") {
|
|
121
|
+
throw new TypeError("Super expression must either be null or a function");
|
|
122
|
+
}
|
|
123
|
+
if (typeof _cache !== "undefined") {
|
|
124
|
+
if (_cache.has(Class)) return _cache.get(Class);
|
|
125
|
+
_cache.set(Class, Wrapper);
|
|
126
|
+
}
|
|
127
|
+
function Wrapper() {
|
|
128
|
+
return _construct(Class, arguments, _get_prototype_of(this).constructor);
|
|
129
|
+
}
|
|
130
|
+
Wrapper.prototype = Object.create(Class.prototype, {
|
|
131
|
+
constructor: {
|
|
132
|
+
value: Wrapper,
|
|
133
|
+
enumerable: false,
|
|
134
|
+
writable: true,
|
|
135
|
+
configurable: true
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
return _set_prototype_of(Wrapper, Class);
|
|
139
|
+
};
|
|
140
|
+
return _wrap_native_super(Class);
|
|
141
|
+
}
|
|
142
|
+
function _is_native_reflect_construct() {
|
|
143
|
+
try {
|
|
144
|
+
var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
|
|
145
|
+
} catch (_) {}
|
|
146
|
+
return (_is_native_reflect_construct = function() {
|
|
147
|
+
return !!result;
|
|
148
|
+
})();
|
|
149
|
+
}
|
|
44
150
|
var _Error;
|
|
45
|
-
var _default = (0, _elements.define)((_Error = /*#__PURE__*/ function() {
|
|
151
|
+
var _default = (0, _elements.define)((_Error = /*#__PURE__*/ function(Element) {
|
|
152
|
+
_inherits(Error, Element);
|
|
46
153
|
function Error(context, string, node) {
|
|
47
154
|
_class_call_check(this, Error);
|
|
48
|
-
this
|
|
49
|
-
|
|
50
|
-
|
|
155
|
+
return _call_super(this, Error, [
|
|
156
|
+
context,
|
|
157
|
+
string,
|
|
158
|
+
node
|
|
159
|
+
]);
|
|
51
160
|
}
|
|
52
161
|
_create_class(Error, [
|
|
53
|
-
{
|
|
54
|
-
key: "getContext",
|
|
55
|
-
value: function getContext() {
|
|
56
|
-
return this.context;
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
key: "getString",
|
|
61
|
-
value: function getString() {
|
|
62
|
-
return this.string;
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
key: "getNode",
|
|
67
|
-
value: function getNode() {
|
|
68
|
-
return this.node;
|
|
69
|
-
}
|
|
70
|
-
},
|
|
71
162
|
{
|
|
72
163
|
key: "verify",
|
|
73
164
|
value: function verify() {
|
|
@@ -77,16 +168,8 @@ var _default = (0, _elements.define)((_Error = /*#__PURE__*/ function() {
|
|
|
77
168
|
return verifies;
|
|
78
169
|
}
|
|
79
170
|
}
|
|
80
|
-
], [
|
|
81
|
-
{
|
|
82
|
-
key: "fromErrorNode",
|
|
83
|
-
value: function fromErrorNode(errorNode, context) {
|
|
84
|
-
var node = errorNode, string = context.nodeAsString(node), error = new Error(context, string, node);
|
|
85
|
-
return error;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
171
|
]);
|
|
89
172
|
return Error;
|
|
90
|
-
}(), _define_property(_Error, "name", "Error"), _Error));
|
|
173
|
+
}(_wrap_native_super(_element.default)), _define_property(_Error, "name", "Error"), _Error));
|
|
91
174
|
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2Vycm9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgRWxlbWVudCBmcm9tIFwiLi4vZWxlbWVudFwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIEVycm9yIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSk7XG4gIH1cblxuICB2ZXJpZnkoKSB7XG4gICAgbGV0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBlcnJvclN0cmluZyA9IHRoaXMuc3RyaW5nOyAgLy8vXG5cbiAgICB0aGlzLmNvbnRleHQud2FybmluZyhgVGhlICcke2Vycm9yU3RyaW5nfScgZXJyb3IgY2Fubm90IGJlIHZlcmlmaWVkLmAsIHRoaXMubm9kZSk7XG5cbiAgICByZXR1cm4gdmVyaWZpZXM7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiRXJyb3JcIjtcbn0pO1xuIl0sIm5hbWVzIjpbImRlZmluZSIsIkVycm9yIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJ2ZXJpZnkiLCJ2ZXJpZmllcyIsImVycm9yU3RyaW5nIiwid2FybmluZyIsIkVsZW1lbnQiLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFNQTs7O2VBQUE7Ozs4REFKb0I7d0JBRUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFdkIsV0FBZUEsSUFBQUEsZ0JBQU0sMEJBQUM7O2FBQU1DLE1BQ2RDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJO2dDQURQSDtRQUV4QixPQUFBLGtCQUZ3QkE7WUFFbEJDO1lBQVNDO1lBQVFDOzs7OztZQUd6QkMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQUlDLFdBQVc7Z0JBRWYsSUFBTUMsY0FBYyxJQUFJLENBQUNKLE1BQU0sRUFBRyxHQUFHO2dCQUVyQyxJQUFJLENBQUNELE9BQU8sQ0FBQ00sT0FBTyxDQUFDLEFBQUMsUUFBbUIsT0FBWkQsYUFBWSxnQ0FBOEIsSUFBSSxDQUFDSCxJQUFJO2dCQUVoRixPQUFPRTtZQUNUOzs7O3FCQWJ3Q0csZ0JBQU8sSUFlL0MseUJBQU9DLFFBQU8ifQ==
|
package/lib/element/frame.js
CHANGED
|
@@ -9,15 +9,42 @@ Object.defineProperty(exports, "default", {
|
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
var _necessary = require("necessary");
|
|
12
|
+
var _element = /*#__PURE__*/ _interop_require_default(require("../element"));
|
|
12
13
|
var _elements = /*#__PURE__*/ _interop_require_wildcard(require("../elements"));
|
|
13
14
|
var _constants = require("../constants");
|
|
14
|
-
var _element = require("../utilities/element");
|
|
15
15
|
var _metaTypeNames = require("../metaTypeNames");
|
|
16
|
+
function _assert_this_initialized(self) {
|
|
17
|
+
if (self === void 0) {
|
|
18
|
+
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
19
|
+
}
|
|
20
|
+
return self;
|
|
21
|
+
}
|
|
22
|
+
function _call_super(_this, derived, args) {
|
|
23
|
+
derived = _get_prototype_of(derived);
|
|
24
|
+
return _possible_constructor_return(_this, _is_native_reflect_construct() ? Reflect.construct(derived, args || [], _get_prototype_of(_this).constructor) : derived.apply(_this, args));
|
|
25
|
+
}
|
|
16
26
|
function _class_call_check(instance, Constructor) {
|
|
17
27
|
if (!(instance instanceof Constructor)) {
|
|
18
28
|
throw new TypeError("Cannot call a class as a function");
|
|
19
29
|
}
|
|
20
30
|
}
|
|
31
|
+
function _construct(Parent, args, Class) {
|
|
32
|
+
if (_is_native_reflect_construct()) {
|
|
33
|
+
_construct = Reflect.construct;
|
|
34
|
+
} else {
|
|
35
|
+
_construct = function construct(Parent, args, Class) {
|
|
36
|
+
var a = [
|
|
37
|
+
null
|
|
38
|
+
];
|
|
39
|
+
a.push.apply(a, args);
|
|
40
|
+
var Constructor = Function.bind.apply(Parent, a);
|
|
41
|
+
var instance = new Constructor();
|
|
42
|
+
if (Class) _set_prototype_of(instance, Class.prototype);
|
|
43
|
+
return instance;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
return _construct.apply(null, arguments);
|
|
47
|
+
}
|
|
21
48
|
function _defineProperties(target, props) {
|
|
22
49
|
for(var i = 0; i < props.length; i++){
|
|
23
50
|
var descriptor = props[i];
|
|
@@ -45,6 +72,30 @@ function _define_property(obj, key, value) {
|
|
|
45
72
|
}
|
|
46
73
|
return obj;
|
|
47
74
|
}
|
|
75
|
+
function _get_prototype_of(o) {
|
|
76
|
+
_get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
|
|
77
|
+
return o.__proto__ || Object.getPrototypeOf(o);
|
|
78
|
+
};
|
|
79
|
+
return _get_prototype_of(o);
|
|
80
|
+
}
|
|
81
|
+
function _inherits(subClass, superClass) {
|
|
82
|
+
if (typeof superClass !== "function" && superClass !== null) {
|
|
83
|
+
throw new TypeError("Super expression must either be null or a function");
|
|
84
|
+
}
|
|
85
|
+
subClass.prototype = Object.create(superClass && superClass.prototype, {
|
|
86
|
+
constructor: {
|
|
87
|
+
value: subClass,
|
|
88
|
+
writable: true,
|
|
89
|
+
configurable: true
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
if (superClass) _set_prototype_of(subClass, superClass);
|
|
93
|
+
}
|
|
94
|
+
function _interop_require_default(obj) {
|
|
95
|
+
return obj && obj.__esModule ? obj : {
|
|
96
|
+
default: obj
|
|
97
|
+
};
|
|
98
|
+
}
|
|
48
99
|
function _getRequireWildcardCache(nodeInterop) {
|
|
49
100
|
if (typeof WeakMap !== "function") return null;
|
|
50
101
|
var cacheBabelInterop = new WeakMap();
|
|
@@ -86,28 +137,76 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
86
137
|
}
|
|
87
138
|
return newObj;
|
|
88
139
|
}
|
|
140
|
+
function _is_native_function(fn) {
|
|
141
|
+
return Function.toString.call(fn).indexOf("[native code]") !== -1;
|
|
142
|
+
}
|
|
143
|
+
function _possible_constructor_return(self, call) {
|
|
144
|
+
if (call && (_type_of(call) === "object" || typeof call === "function")) {
|
|
145
|
+
return call;
|
|
146
|
+
}
|
|
147
|
+
return _assert_this_initialized(self);
|
|
148
|
+
}
|
|
149
|
+
function _set_prototype_of(o, p) {
|
|
150
|
+
_set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
|
|
151
|
+
o.__proto__ = p;
|
|
152
|
+
return o;
|
|
153
|
+
};
|
|
154
|
+
return _set_prototype_of(o, p);
|
|
155
|
+
}
|
|
156
|
+
function _type_of(obj) {
|
|
157
|
+
"@swc/helpers - typeof";
|
|
158
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
159
|
+
}
|
|
160
|
+
function _wrap_native_super(Class) {
|
|
161
|
+
var _cache = typeof Map === "function" ? new Map() : undefined;
|
|
162
|
+
_wrap_native_super = function wrapNativeSuper(Class) {
|
|
163
|
+
if (Class === null || !_is_native_function(Class)) return Class;
|
|
164
|
+
if (typeof Class !== "function") {
|
|
165
|
+
throw new TypeError("Super expression must either be null or a function");
|
|
166
|
+
}
|
|
167
|
+
if (typeof _cache !== "undefined") {
|
|
168
|
+
if (_cache.has(Class)) return _cache.get(Class);
|
|
169
|
+
_cache.set(Class, Wrapper);
|
|
170
|
+
}
|
|
171
|
+
function Wrapper() {
|
|
172
|
+
return _construct(Class, arguments, _get_prototype_of(this).constructor);
|
|
173
|
+
}
|
|
174
|
+
Wrapper.prototype = Object.create(Class.prototype, {
|
|
175
|
+
constructor: {
|
|
176
|
+
value: Wrapper,
|
|
177
|
+
enumerable: false,
|
|
178
|
+
writable: true,
|
|
179
|
+
configurable: true
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
return _set_prototype_of(Wrapper, Class);
|
|
183
|
+
};
|
|
184
|
+
return _wrap_native_super(Class);
|
|
185
|
+
}
|
|
186
|
+
function _is_native_reflect_construct() {
|
|
187
|
+
try {
|
|
188
|
+
var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
|
|
189
|
+
} catch (_) {}
|
|
190
|
+
return (_is_native_reflect_construct = function() {
|
|
191
|
+
return !!result;
|
|
192
|
+
})();
|
|
193
|
+
}
|
|
89
194
|
var _Frame;
|
|
90
195
|
var first = _necessary.arrayUtilities.first;
|
|
91
|
-
var _default = (0, _elements.define)((_Frame = /*#__PURE__*/ function() {
|
|
92
|
-
|
|
196
|
+
var _default = (0, _elements.define)((_Frame = /*#__PURE__*/ function(Element) {
|
|
197
|
+
_inherits(Frame, Element);
|
|
198
|
+
function Frame(context, string, node, assumptions) {
|
|
93
199
|
_class_call_check(this, Frame);
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
200
|
+
var _this;
|
|
201
|
+
_this = _call_super(this, Frame, [
|
|
202
|
+
context,
|
|
203
|
+
string,
|
|
204
|
+
node
|
|
205
|
+
]);
|
|
206
|
+
_this.assumptions = assumptions;
|
|
207
|
+
return _this;
|
|
97
208
|
}
|
|
98
209
|
_create_class(Frame, [
|
|
99
|
-
{
|
|
100
|
-
key: "getString",
|
|
101
|
-
value: function getString() {
|
|
102
|
-
return this.string;
|
|
103
|
-
}
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
key: "getNode",
|
|
107
|
-
value: function getNode() {
|
|
108
|
-
return this.node;
|
|
109
|
-
}
|
|
110
|
-
},
|
|
111
210
|
{
|
|
112
211
|
key: "getAssumptions",
|
|
113
212
|
value: function getAssumptions() {
|
|
@@ -161,13 +260,6 @@ var _default = (0, _elements.define)((_Frame = /*#__PURE__*/ function() {
|
|
|
161
260
|
return this.node.isSingular();
|
|
162
261
|
}
|
|
163
262
|
},
|
|
164
|
-
{
|
|
165
|
-
key: "isEqualTo",
|
|
166
|
-
value: function isEqualTo(frame) {
|
|
167
|
-
var frameNode = frame.getNode(), matches = this.node.match(frameNode), equalTo = matches; ///
|
|
168
|
-
return equalTo;
|
|
169
|
-
}
|
|
170
|
-
},
|
|
171
263
|
{
|
|
172
264
|
key: "isMetavariableEqualToMetavariable",
|
|
173
265
|
value: function isMetavariableEqualToMetavariable(metavariable, context) {
|
|
@@ -347,41 +439,9 @@ var _default = (0, _elements.define)((_Frame = /*#__PURE__*/ function() {
|
|
|
347
439
|
}
|
|
348
440
|
return frame;
|
|
349
441
|
}
|
|
350
|
-
},
|
|
351
|
-
{
|
|
352
|
-
key: "fromFrameNode",
|
|
353
|
-
value: function fromFrameNode(frameNode, context) {
|
|
354
|
-
return (0, _element.frameFromFrameNode)(frameNode, context);
|
|
355
|
-
}
|
|
356
|
-
},
|
|
357
|
-
{
|
|
358
|
-
key: "fromJudgementNode",
|
|
359
|
-
value: function fromJudgementNode(judgementNode, context) {
|
|
360
|
-
var frameNode = judgementNode.getFrameNode(), frame = (0, _element.frameFromFrameNode)(frameNode, context);
|
|
361
|
-
return frame;
|
|
362
|
-
}
|
|
363
|
-
},
|
|
364
|
-
{
|
|
365
|
-
key: "fromDefinedAssertionNode",
|
|
366
|
-
value: function fromDefinedAssertionNode(definedAssertionNode, context) {
|
|
367
|
-
var frame = null;
|
|
368
|
-
var frameNode = definedAssertionNode.getFrameNode();
|
|
369
|
-
if (frameNode !== null) {
|
|
370
|
-
frame = (0, _element.frameFromFrameNode)(frameNode, context);
|
|
371
|
-
}
|
|
372
|
-
return frame;
|
|
373
|
-
}
|
|
374
442
|
}
|
|
375
443
|
]);
|
|
376
444
|
return Frame;
|
|
377
|
-
}(), _define_property(_Frame, "name", "Frame"), _Frame));
|
|
378
|
-
function assumptionsStringFromAssumptions(assumptions) {
|
|
379
|
-
var assumptionsString = assumptions.reduce(function(assumptionsString, assumption) {
|
|
380
|
-
var assumptionString = assumption.getString();
|
|
381
|
-
assumptionsString = assumptionsString === null ? assumptionString : "".concat(assumptionsString, ", ").concat(assumptionString);
|
|
382
|
-
return assumptionsString;
|
|
383
|
-
}, null);
|
|
384
|
-
return assumptionsString;
|
|
385
|
-
}
|
|
445
|
+
}(_wrap_native_super(_element.default)), _define_property(_Frame, "name", "Frame"), _Frame));
|
|
386
446
|
|
|
387
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2ZyYW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IFMsIE5PVEhJTkcgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBmcmFtZUZyb21GcmFtZU5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcbmltcG9ydCB7IEZSQU1FX01FVEFfVFlQRV9OQU1FIH0gZnJvbSBcIi4uL21ldGFUeXBlTmFtZXNcIjtcblxuY29uc3QgeyBmaXJzdCB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBGcmFtZSB7XG4gIGNvbnN0cnVjdG9yKHN0cmluZywgbm9kZSwgYXNzdW1wdGlvbnMpIHtcbiAgICB0aGlzLnN0cmluZyA9IHN0cmluZztcbiAgICB0aGlzLm5vZGUgPSBub2RlO1xuICAgIHRoaXMuYXNzdW1wdGlvbnMgPSBhc3N1bXB0aW9ucztcbiAgfVxuXG4gIGdldFN0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmc7XG4gIH1cblxuICBnZXROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm5vZGU7XG4gIH1cblxuICBnZXRBc3N1bXB0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5hc3N1bXB0aW9ucztcbiAgfVxuXG4gIGdldExlbmd0aCgpIHsgcmV0dXJuIHRoaXMuYXNzdW1wdGlvbnMubGVuZ3RoOyB9XG5cbiAgZ2V0QXNzdW1wdGlvbigpIHtcbiAgICBsZXQgYXNzdW1wdGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCBsZW5ndGggPSB0aGlzLmdldExlbmd0aCgpO1xuXG4gICAgaWYgKGxlbmd0aCA9PT0gMSkge1xuICAgICAgY29uc3QgZmlyc3RBc3N1bXB0aW9uID0gZmlyc3QodGhpcy5hc3N1bXB0aW9ucyk7XG5cbiAgICAgIGFzc3VtcHRpb24gPSBmaXJzdEFzc3VtcHRpb247IC8vL1xuICAgIH1cblxuICAgIHJldHVybiBhc3N1bXB0aW9uO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlKCkge1xuICAgIGxldCBtZXRhdmFyaWFibGUgPSBudWxsO1xuXG4gICAgY29uc3Qgc2luZ3VsYXIgPSB0aGlzLmlzU2luZ3VsYXIoKTtcblxuICAgIGlmIChzaW5ndWxhcikge1xuICAgICAgY29uc3QgYXNzdW1wdGlvbiA9IHRoaXMuZ2V0QXNzdW1wdGlvbigpO1xuXG4gICAgICBtZXRhdmFyaWFibGUgPSBhc3N1bXB0aW9uLmdldE1ldGF2YXJpYWJsZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBtZXRhdmFyaWFibGU7XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGVOYW1lKCkge1xuICAgIGxldCBtZXRhdmFyaWFibGVOYW1lID0gbnVsbDtcblxuICAgIGNvbnN0IHNpbmd1bGFyID0gdGhpcy5pc1Npbmd1bGFyKCk7XG5cbiAgICBpZiAoc2luZ3VsYXIpIHtcbiAgICAgIG1ldGF2YXJpYWJsZU5hbWUgPSB0aGlzLm5vZGUuZ2V0TWV0YXZhcmlhYmxlTmFtZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVOYW1lO1xuICB9XG5cbiAgaXNTaW5ndWxhcigpIHsgcmV0dXJuIHRoaXMubm9kZS5pc1Npbmd1bGFyKCk7IH1cblxuICBpc0VxdWFsVG8oZnJhbWUpIHtcbiAgICBjb25zdCBmcmFtZU5vZGUgPSBmcmFtZS5nZXROb2RlKCksXG4gICAgICAgICAgbWF0Y2hlcyA9IHRoaXMubm9kZS5tYXRjaChmcmFtZU5vZGUpLFxuICAgICAgICAgIGVxdWFsVG8gPSBtYXRjaGVzOyAgLy8vXG5cbiAgICByZXR1cm4gZXF1YWxUbztcbiAgfVxuXG4gIGlzTWV0YXZhcmlhYmxlRXF1YWxUb01ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUsIGNvbnRleHQpIHtcbiAgICBsZXQgbWV0YXZhcmlhYmxlRXF1YWxUb01ldGF2YXJpYWJsZTtcblxuICAgIGNvbnN0IHNpbmd1bGFyID0gdGhpcy5pc1Npbmd1bGFyKCk7XG5cbiAgICBpZiAoc2luZ3VsYXIpIHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZUEgPSBtZXRhdmFyaWFibGUsIC8vL1xuICAgICAgICAgICAgc2luZ3VsYXJNZXRhdmFyaWFibGVOb2RlID0gdGhpcy5ub2RlLmdldFNpbmd1bGFyTWV0YXZhcmlhYmxlTm9kZSgpLFxuICAgICAgICAgICAgbWV0YXZhcmlhYmxlTmFtZSA9IHNpbmd1bGFyTWV0YXZhcmlhYmxlTm9kZS5nZXRNZXRhdmFyaWFibGVOYW1lKCk7XG5cbiAgICAgIG1ldGF2YXJpYWJsZSA9IGNvbnRleHQuZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKVxuXG4gICAgICBjb25zdCBtZXRhdmFyaWFibGVCID0gbWV0YXZhcmlhYmxlLFxuICAgICAgICAgICAgZXF1YWxUbyA9IG1ldGF2YXJpYWJsZUEuaXNFcXVhbFRvKG1ldGF2YXJpYWJsZUIpO1xuXG4gICAgICBtZXRhdmFyaWFibGVFcXVhbFRvTWV0YXZhcmlhYmxlID0gZXF1YWxUbzsgIC8vL1xuICAgIH1cblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVFcXVhbFRvTWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgbWF0Y2hGcmFtZU5vZGUoZnJhbWVOb2RlKSB7IHJldHVybiB0aGlzLm5vZGUubWF0Y2goZnJhbWVOb2RlKTsgfVxuXG4gIG1hdGNoU3Vic3RpdHV0aW9uKHN1YnN0aXR1dGlvbiwgY29udGV4dCkge1xuICAgIGxldCBzdWJzdGl0dXRpb25NYXRjaGVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBmcmFtZVN0cmluZyA9IHRoaXMuc3RyaW5nLCAgLy8vXG4gICAgICAgICAgc3Vic3RpdHV0aW9uU3RyaW5nID0gc3Vic3RpdHV0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgTWF0Y2hpbmcgdGhlICcke3N1YnN0aXR1dGlvblN0cmluZ30nIHN1YnN0aXR1dGlvbiBhZ2FpbnN0IHRoZSAnJHtmcmFtZVN0cmluZ30nIGZyYW1lLi4uYCk7XG5cbiAgICBpZiAoIXN1YnN0aXR1dGlvbk1hdGNoZXMpIHtcbiAgICAgIHN1YnN0aXR1dGlvbk1hdGNoZXMgPSB0aGlzLmFzc3VtcHRpb25zLnNvbWUoKGFzc3VtcHRpb24pID0+IHtcbiAgICAgICAgY29uc3Qgc3Vic3RpdHV0aW9uTWF0Y2hlc0Fzc3VtcHRpb24gPSBhc3N1bXB0aW9uLm1hdGNoU3Vic3RpdHV0aW9uKHN1YnN0aXR1dGlvbiwgY29udGV4dCk7XG5cbiAgICAgICAgaWYgKHN1YnN0aXR1dGlvbk1hdGNoZXNBc3N1bXB0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChzdWJzdGl0dXRpb25NYXRjaGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5tYXRjaGVkIHRoZSAnJHtzdWJzdGl0dXRpb25TdHJpbmd9JyBzdWJzdGl0dXRpb25zIGFnYWluc3QgdGhlICcke2ZyYW1lU3RyaW5nfScgZnJhbWUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbk1hdGNoZXM7XG4gIH1cblxuICBtYXRjaFN1YnN0aXR1dGlvbnMoc3Vic3RpdHV0aW9ucywgY29udGV4dCkge1xuICAgIGxldCBzdWJzdGl0dXRpb25zTWF0Y2g7XG5cbiAgICBjb25zdCBmcmFtZVN0cmluZyA9IHRoaXMuc3RyaW5nLCAgLy8vXG4gICAgICAgICAgc3Vic3RpdHV0aW9uc1N0cmluZyA9IHN1YnN0aXR1dGlvbnMuYXNTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYE1hdGNoaW5nIHRoZSAnJHtzdWJzdGl0dXRpb25zU3RyaW5nfScgc3Vic3RpdHV0aW9ucyBhZ2FpbnN0IHRoZSAnJHtmcmFtZVN0cmluZ30nIGZyYW1lLi4uYCk7XG5cbiAgICBzdWJzdGl0dXRpb25zTWF0Y2ggPSBzdWJzdGl0dXRpb25zLmV2ZXJ5U3Vic3RpdHV0aW9uKChzdWJzdGl0dXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbk1hdGNoZXMgPSB0aGlzLm1hdGNoU3Vic3RpdHV0aW9uKHN1YnN0aXR1dGlvbiwgY29udGV4dCk7XG5cbiAgICAgIGlmIChzdWJzdGl0dXRpb25NYXRjaGVzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHN1YnN0aXR1dGlvbnNNYXRjaCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4ubWF0Y2hlZCB0aGUgJyR7c3Vic3RpdHV0aW9uc1N0cmluZ30nIHN1YnN0aXR1dGlvbnMgYWdhaW5zdCB0aGUgJyR7ZnJhbWVTdHJpbmd9JyBmcmFtZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uc01hdGNoO1xuICB9XG5cbiAgdmVyaWZ5KGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpIHtcbiAgICBsZXQgdmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGZyYW1lU3RyaW5nID0gdGhpcy5zdHJpbmc7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7ZnJhbWVTdHJpbmd9JyBmcmFtZS4uLmApO1xuXG4gICAgY29uc3QgYXNzdW1wdGlvbnNWZXJpZnkgPSB0aGlzLnZlcmlmeUFzc3VtcHRpb25zKGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpO1xuXG4gICAgaWYgKGFzc3VtcHRpb25zVmVyaWZ5KSB7XG4gICAgICBsZXQgdmVyaWZpZXNXaGVuU3RhdGVkID0gZmFsc2UsXG4gICAgICAgICAgdmVyaWZpZXNXaGVuRGVyaXZlZCA9IGZhbHNlO1xuXG4gICAgICBpZiAoc3RhdGVkKSB7XG4gICAgICAgIHZlcmlmaWVzV2hlblN0YXRlZCA9IHRoaXMudmVyaWZ5V2hlblN0YXRlZChhc3NpZ25tZW50cywgY29udGV4dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2ZXJpZmllc1doZW5EZXJpdmVkID0gdGhpcy52ZXJpZnlXaGVuRGVyaXZlZChjb250ZXh0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZlcmlmaWVzV2hlblN0YXRlZCB8fCB2ZXJpZmllc1doZW5EZXJpdmVkKSB7XG4gICAgICAgIHZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGNvbnN0IGZyYW1lID0gdGhpczsgLy8vXG5cbiAgICAgIGNvbnRleHQuYWRkRnJhbWUoZnJhbWUpO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7ZnJhbWVTdHJpbmd9JyBmcmFtZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZXM7XG4gIH1cblxuICB2ZXJpZnlXaGVuU3RhdGVkKGFzc2lnbm1lbnRzLCBjb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVzV2hlblN0YXRlZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgZnJhbWVTdHJpbmcgPSB0aGlzLnN0cmluZzsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtmcmFtZVN0cmluZ30nIHN0YXRlZCBmcmFtZS4uLmApO1xuXG4gICAgY29uc3Qgc2luZ3VsYXIgPSB0aGlzLmlzU2luZ3VsYXIoKTtcblxuICAgIGlmICghc2luZ3VsYXIpIHtcbiAgICAgIGNvbnRleHQudHJhY2UoYFRoZSAnJHtmcmFtZVN0cmluZ30nIHN0YXRlZCBmcmFtZSBtdXN0IGJlIHNpbmd1bGFyLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2ZXJpZmllc1doZW5TdGF0ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh2ZXJpZmllc1doZW5TdGF0ZWQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtmcmFtZVN0cmluZ30nIHN0YXRlZCBmcmFtZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZXNXaGVuU3RhdGVkO1xuICB9XG5cbiAgdmVyaWZ5V2hlbkRlcml2ZWQoY29udGV4dCkge1xuICAgIGxldCB2ZXJpZmllc1doZW5EZXJpdmVkO1xuXG4gICAgY29uc3QgZnJhbWVTdHJpbmcgPSB0aGlzLnN0cmluZzsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtmcmFtZVN0cmluZ30nIGRlcml2ZWQgZnJhbWUuLi5gKTtcblxuICAgIHZlcmlmaWVzV2hlbkRlcml2ZWQgPSB0cnVlO1xuXG4gICAgaWYgKHZlcmlmaWVzV2hlbkRlcml2ZWQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtmcmFtZVN0cmluZ30nIGRlcml2ZWQgZnJhbWUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVzV2hlbkRlcml2ZWQ7XG4gIH1cblxuICB2ZXJpZnlBc3N1bXB0aW9ucyhhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KSB7XG4gICAgbGV0IGFzc3VtcHRpb25zVmVyaWZ5ID0gdHJ1ZTsgIC8vL1xuXG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy5nZXRMZW5ndGgoKTtcblxuICAgIGlmIChsZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBzT3JOb3RoaW5nID0gKGxlbmd0aCA+IDEpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOT1RISU5HLFxuICAgICAgICAgICAgYXNzdW1wdGlvbnNTdHJpbmcgPSBhc3N1bXB0aW9uc1N0cmluZ0Zyb21Bc3N1bXB0aW9ucyh0aGlzLmFzc3VtcHRpb25zKTtcblxuICAgICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHthc3N1bXB0aW9uc1N0cmluZ30nIGFzc3VtcHRpb24ke3NPck5vdGhpbmd9Li4uYCk7XG5cbiAgICAgIHN0YXRlZCA9IHRydWU7ICAvLy9cblxuICAgICAgYXNzaWdubWVudHMgPSBudWxsOyAvLy9cblxuICAgICAgYXNzdW1wdGlvbnNWZXJpZnkgPSB0aGlzLmFzc3VtcHRpb25zLmV2ZXJ5KChhc3N1bXB0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IGFzc3VtcHRpb25WZXJpZmllcyA9IGFzc3VtcHRpb24udmVyaWZ5KGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiBhc3N1bXB0aW9uVmVyaWZpZXM7XG4gICAgICB9KTtcblxuICAgICAgaWYgKGFzc3VtcHRpb25zVmVyaWZ5KSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHthc3N1bXB0aW9uc1N0cmluZ30nIGFzc3VtcHRpb24ke3NPck5vdGhpbmd9LmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhc3N1bXB0aW9uc1ZlcmlmeTtcbiAgfVxuXG4gIHZlcmlmeUdpdmVuTWV0YVR5cGUobWV0YVR5cGUsIGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpIHtcbiAgICBsZXQgdmVyaWZpZXNHaXZlbk1ldGFUeXBlID0gZmFsc2U7XG5cbiAgICBjb25zdCBmcmFtZVN0cmluZyA9IHRoaXMuc3RyaW5nLCAgLy8vXG4gICAgICAgICAgbWV0YVR5cGVTdHJpbmcgPSBtZXRhVHlwZS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7ZnJhbWVTdHJpbmd9JyBmcmFtZSBnaXZlbiB0aGUgJyR7bWV0YVR5cGVTdHJpbmd9JyBtZXRhLXR5cGUuLi5gKTtcblxuICAgIGNvbnN0IG1ldGFUeXBlTmFtZSA9IG1ldGFUeXBlLmdldE5hbWUoKTtcblxuICAgIGlmIChtZXRhVHlwZU5hbWUgPT09IEZSQU1FX01FVEFfVFlQRV9OQU1FKSB7XG4gICAgICBjb25zdCB2ZXJpZmllcyA9IHRoaXMudmVyaWZ5KGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpXG5cbiAgICAgIHZlcmlmaWVzR2l2ZW5NZXRhVHlwZSA9IHZlcmlmaWVzOyAvLy9cbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZXNHaXZlbk1ldGFUeXBlKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7ZnJhbWVTdHJpbmd9JyBmcmFtZSBnaXZlbiB0aGUgJyR7bWV0YVR5cGVTdHJpbmd9JyBtZXRhLXR5cGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVzR2l2ZW5NZXRhVHlwZTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQganNvbiA9IG51bGw7XG5cbiAgICBjb25zdCBzaW5ndWxhciA9IHRoaXMuaXNTaW5ndWxhcigpO1xuXG4gICAgaWYgKHNpbmd1bGFyKSB7XG4gICAgICBjb25zdCBhc3N1bXB0aW9uID0gdGhpcy5nZXRBc3N1bXB0aW9uKCksXG4gICAgICAgICAgICBhc3N1bXB0aW9uSlNPTiA9IGFzc3VtcHRpb24udG9KU09OKCk7XG5cbiAgICAgIGpzb24gPSBhc3N1bXB0aW9uSlNPTjsgIC8vL1xuICAgIH1cblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkZyYW1lXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgZnJhbWUgPSBudWxsO1xuXG4gICAgaWYgKGpzb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHsgQXNzdW1wdGlvbiB9ID1lbGVtZW50cyxcbiAgICAgICAgICAgIGFzc3VtcHRpb24gPSBBc3N1bXB0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgICAgYXNzdW1wdGlvbnMgPSBbXG4gICAgICAgICAgICAgIGFzc3VtcHRpb25cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBzdHJpbmcgPSBudWxsLFxuICAgICAgICAgICAgbm9kZSA9IG51bGw7XG5cbiAgICAgIGZyYW1lID0gbmV3IEZyYW1lKHN0cmluZywgbm9kZSwgYXNzdW1wdGlvbnMpO1xuICAgIH1cblxuICAgIHJldHVybiBmcmFtZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRnJhbWVOb2RlKGZyYW1lTm9kZSwgY29udGV4dCkgeyByZXR1cm4gZnJhbWVGcm9tRnJhbWVOb2RlKGZyYW1lTm9kZSwgY29udGV4dCk7IH1cblxuICBzdGF0aWMgZnJvbUp1ZGdlbWVudE5vZGUoanVkZ2VtZW50Tm9kZSwgY29udGV4dCkge1xuICAgIGNvbnN0IGZyYW1lTm9kZSA9IGp1ZGdlbWVudE5vZGUuZ2V0RnJhbWVOb2RlKCksXG4gICAgICAgICAgZnJhbWUgPSBmcmFtZUZyb21GcmFtZU5vZGUoZnJhbWVOb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBmcmFtZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRGVmaW5lZEFzc2VydGlvbk5vZGUoZGVmaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgICBsZXQgZnJhbWUgPSBudWxsO1xuXG4gICAgY29uc3QgZnJhbWVOb2RlID0gZGVmaW5lZEFzc2VydGlvbk5vZGUuZ2V0RnJhbWVOb2RlKCk7XG5cbiAgICBpZiAoZnJhbWVOb2RlICE9PSBudWxsKSB7XG4gICAgICBmcmFtZSA9IGZyYW1lRnJvbUZyYW1lTm9kZShmcmFtZU5vZGUsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBmcmFtZTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGFzc3VtcHRpb25zU3RyaW5nRnJvbUFzc3VtcHRpb25zKGFzc3VtcHRpb25zKSB7XG4gIGNvbnN0IGFzc3VtcHRpb25zU3RyaW5nID0gYXNzdW1wdGlvbnMucmVkdWNlKChhc3N1bXB0aW9uc1N0cmluZywgYXNzdW1wdGlvbikgPT4ge1xuICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSBhc3N1bXB0aW9uLmdldFN0cmluZygpO1xuXG4gICAgYXNzdW1wdGlvbnNTdHJpbmcgPSAoYXNzdW1wdGlvbnNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc3VtcHRpb25TdHJpbmcgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke2Fzc3VtcHRpb25zU3RyaW5nfSwgJHthc3N1bXB0aW9uU3RyaW5nfWA7XG5cbiAgICByZXR1cm4gYXNzdW1wdGlvbnNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBhc3N1bXB0aW9uc1N0cmluZztcbn1cbiJdLCJuYW1lcyI6WyJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwiZGVmaW5lIiwiRnJhbWUiLCJzdHJpbmciLCJub2RlIiwiYXNzdW1wdGlvbnMiLCJnZXRTdHJpbmciLCJnZXROb2RlIiwiZ2V0QXNzdW1wdGlvbnMiLCJnZXRMZW5ndGgiLCJsZW5ndGgiLCJnZXRBc3N1bXB0aW9uIiwiYXNzdW1wdGlvbiIsImZpcnN0QXNzdW1wdGlvbiIsImdldE1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZSIsInNpbmd1bGFyIiwiaXNTaW5ndWxhciIsImdldE1ldGF2YXJpYWJsZU5hbWUiLCJtZXRhdmFyaWFibGVOYW1lIiwiaXNFcXVhbFRvIiwiZnJhbWUiLCJmcmFtZU5vZGUiLCJtYXRjaGVzIiwibWF0Y2giLCJlcXVhbFRvIiwiaXNNZXRhdmFyaWFibGVFcXVhbFRvTWV0YXZhcmlhYmxlIiwiY29udGV4dCIsIm1ldGF2YXJpYWJsZUVxdWFsVG9NZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVBIiwic2luZ3VsYXJNZXRhdmFyaWFibGVOb2RlIiwiZ2V0U2luZ3VsYXJNZXRhdmFyaWFibGVOb2RlIiwiZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZSIsIm1ldGF2YXJpYWJsZUIiLCJtYXRjaEZyYW1lTm9kZSIsIm1hdGNoU3Vic3RpdHV0aW9uIiwic3Vic3RpdHV0aW9uIiwic3Vic3RpdHV0aW9uTWF0Y2hlcyIsImZyYW1lU3RyaW5nIiwic3Vic3RpdHV0aW9uU3RyaW5nIiwidHJhY2UiLCJzb21lIiwic3Vic3RpdHV0aW9uTWF0Y2hlc0Fzc3VtcHRpb24iLCJkZWJ1ZyIsIm1hdGNoU3Vic3RpdHV0aW9ucyIsInN1YnN0aXR1dGlvbnMiLCJzdWJzdGl0dXRpb25zTWF0Y2giLCJzdWJzdGl0dXRpb25zU3RyaW5nIiwiYXNTdHJpbmciLCJldmVyeVN1YnN0aXR1dGlvbiIsInZlcmlmeSIsImFzc2lnbm1lbnRzIiwic3RhdGVkIiwidmVyaWZpZXMiLCJhc3N1bXB0aW9uc1ZlcmlmeSIsInZlcmlmeUFzc3VtcHRpb25zIiwidmVyaWZpZXNXaGVuU3RhdGVkIiwidmVyaWZpZXNXaGVuRGVyaXZlZCIsInZlcmlmeVdoZW5TdGF0ZWQiLCJ2ZXJpZnlXaGVuRGVyaXZlZCIsImFkZEZyYW1lIiwic09yTm90aGluZyIsIlMiLCJOT1RISU5HIiwiYXNzdW1wdGlvbnNTdHJpbmciLCJhc3N1bXB0aW9uc1N0cmluZ0Zyb21Bc3N1bXB0aW9ucyIsImV2ZXJ5IiwiYXNzdW1wdGlvblZlcmlmaWVzIiwidmVyaWZ5R2l2ZW5NZXRhVHlwZSIsIm1ldGFUeXBlIiwidmVyaWZpZXNHaXZlbk1ldGFUeXBlIiwibWV0YVR5cGVTdHJpbmciLCJtZXRhVHlwZU5hbWUiLCJnZXROYW1lIiwiRlJBTUVfTUVUQV9UWVBFX05BTUUiLCJ0b0pTT04iLCJqc29uIiwiYXNzdW1wdGlvbkpTT04iLCJmcm9tSlNPTiIsIkFzc3VtcHRpb24iLCJlbGVtZW50cyIsImZyb21GcmFtZU5vZGUiLCJmcmFtZUZyb21GcmFtZU5vZGUiLCJmcm9tSnVkZ2VtZW50Tm9kZSIsImp1ZGdlbWVudE5vZGUiLCJnZXRGcmFtZU5vZGUiLCJmcm9tRGVmaW5lZEFzc2VydGlvbk5vZGUiLCJkZWZpbmVkQXNzZXJ0aW9uTm9kZSIsIm5hbWUiLCJyZWR1Y2UiLCJhc3N1bXB0aW9uU3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFhQTs7O2VBQUE7Ozt5QkFYK0I7Z0VBRVY7eUJBR007dUJBQ1E7NkJBQ0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
447
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2ZyYW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IEVsZW1lbnQgZnJvbSBcIi4uL2VsZW1lbnRcIjtcbmltcG9ydCBlbGVtZW50cyBmcm9tIFwiLi4vZWxlbWVudHNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBTLCBOT1RISU5HIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgRlJBTUVfTUVUQV9UWVBFX05BTUUgfSBmcm9tIFwiLi4vbWV0YVR5cGVOYW1lc1wiO1xuXG5jb25zdCB7IGZpcnN0IH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIEZyYW1lIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYXNzdW1wdGlvbnMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUpO1xuXG4gICAgdGhpcy5hc3N1bXB0aW9ucyA9IGFzc3VtcHRpb25zO1xuICB9XG5cbiAgZ2V0QXNzdW1wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXNzdW1wdGlvbnM7XG4gIH1cblxuICBnZXRMZW5ndGgoKSB7IHJldHVybiB0aGlzLmFzc3VtcHRpb25zLmxlbmd0aDsgfVxuXG4gIGdldEFzc3VtcHRpb24oKSB7XG4gICAgbGV0IGFzc3VtcHRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy5nZXRMZW5ndGgoKTtcblxuICAgIGlmIChsZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IGZpcnN0QXNzdW1wdGlvbiA9IGZpcnN0KHRoaXMuYXNzdW1wdGlvbnMpO1xuXG4gICAgICBhc3N1bXB0aW9uID0gZmlyc3RBc3N1bXB0aW9uOyAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gYXNzdW1wdGlvbjtcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZSgpIHtcbiAgICBsZXQgbWV0YXZhcmlhYmxlID0gbnVsbDtcblxuICAgIGNvbnN0IHNpbmd1bGFyID0gdGhpcy5pc1Npbmd1bGFyKCk7XG5cbiAgICBpZiAoc2luZ3VsYXIpIHtcbiAgICAgIGNvbnN0IGFzc3VtcHRpb24gPSB0aGlzLmdldEFzc3VtcHRpb24oKTtcblxuICAgICAgbWV0YXZhcmlhYmxlID0gYXNzdW1wdGlvbi5nZXRNZXRhdmFyaWFibGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlTmFtZSgpIHtcbiAgICBsZXQgbWV0YXZhcmlhYmxlTmFtZSA9IG51bGw7XG5cbiAgICBjb25zdCBzaW5ndWxhciA9IHRoaXMuaXNTaW5ndWxhcigpO1xuXG4gICAgaWYgKHNpbmd1bGFyKSB7XG4gICAgICBtZXRhdmFyaWFibGVOYW1lID0gdGhpcy5ub2RlLmdldE1ldGF2YXJpYWJsZU5hbWUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlTmFtZTtcbiAgfVxuXG4gIGlzU2luZ3VsYXIoKSB7IHJldHVybiB0aGlzLm5vZGUuaXNTaW5ndWxhcigpOyB9XG5cbiAgaXNNZXRhdmFyaWFibGVFcXVhbFRvTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSwgY29udGV4dCkge1xuICAgIGxldCBtZXRhdmFyaWFibGVFcXVhbFRvTWV0YXZhcmlhYmxlO1xuXG4gICAgY29uc3Qgc2luZ3VsYXIgPSB0aGlzLmlzU2luZ3VsYXIoKTtcblxuICAgIGlmIChzaW5ndWxhcikge1xuICAgICAgY29uc3QgbWV0YXZhcmlhYmxlQSA9IG1ldGF2YXJpYWJsZSwgLy8vXG4gICAgICAgICAgICBzaW5ndWxhck1ldGF2YXJpYWJsZU5vZGUgPSB0aGlzLm5vZGUuZ2V0U2luZ3VsYXJNZXRhdmFyaWFibGVOb2RlKCksXG4gICAgICAgICAgICBtZXRhdmFyaWFibGVOYW1lID0gc2luZ3VsYXJNZXRhdmFyaWFibGVOb2RlLmdldE1ldGF2YXJpYWJsZU5hbWUoKTtcblxuICAgICAgbWV0YXZhcmlhYmxlID0gY29udGV4dC5maW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpXG5cbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZUIgPSBtZXRhdmFyaWFibGUsXG4gICAgICAgICAgICBlcXVhbFRvID0gbWV0YXZhcmlhYmxlQS5pc0VxdWFsVG8obWV0YXZhcmlhYmxlQik7XG5cbiAgICAgIG1ldGF2YXJpYWJsZUVxdWFsVG9NZXRhdmFyaWFibGUgPSBlcXVhbFRvOyAgLy8vXG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZUVxdWFsVG9NZXRhdmFyaWFibGU7XG4gIH1cblxuICBtYXRjaEZyYW1lTm9kZShmcmFtZU5vZGUpIHsgcmV0dXJuIHRoaXMubm9kZS5tYXRjaChmcmFtZU5vZGUpOyB9XG5cbiAgbWF0Y2hTdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uLCBjb250ZXh0KSB7XG4gICAgbGV0IHN1YnN0aXR1dGlvbk1hdGNoZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGZyYW1lU3RyaW5nID0gdGhpcy5zdHJpbmcsICAvLy9cbiAgICAgICAgICBzdWJzdGl0dXRpb25TdHJpbmcgPSBzdWJzdGl0dXRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBNYXRjaGluZyB0aGUgJyR7c3Vic3RpdHV0aW9uU3RyaW5nfScgc3Vic3RpdHV0aW9uIGFnYWluc3QgdGhlICcke2ZyYW1lU3RyaW5nfScgZnJhbWUuLi5gKTtcblxuICAgIGlmICghc3Vic3RpdHV0aW9uTWF0Y2hlcykge1xuICAgICAgc3Vic3RpdHV0aW9uTWF0Y2hlcyA9IHRoaXMuYXNzdW1wdGlvbnMuc29tZSgoYXNzdW1wdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBzdWJzdGl0dXRpb25NYXRjaGVzQXNzdW1wdGlvbiA9IGFzc3VtcHRpb24ubWF0Y2hTdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uLCBjb250ZXh0KTtcblxuICAgICAgICBpZiAoc3Vic3RpdHV0aW9uTWF0Y2hlc0Fzc3VtcHRpb24pIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHN1YnN0aXR1dGlvbk1hdGNoZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLm1hdGNoZWQgdGhlICcke3N1YnN0aXR1dGlvblN0cmluZ30nIHN1YnN0aXR1dGlvbnMgYWdhaW5zdCB0aGUgJyR7ZnJhbWVTdHJpbmd9JyBmcmFtZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uTWF0Y2hlcztcbiAgfVxuXG4gIG1hdGNoU3Vic3RpdHV0aW9ucyhzdWJzdGl0dXRpb25zLCBjb250ZXh0KSB7XG4gICAgbGV0IHN1YnN0aXR1dGlvbnNNYXRjaDtcblxuICAgIGNvbnN0IGZyYW1lU3RyaW5nID0gdGhpcy5zdHJpbmcsICAvLy9cbiAgICAgICAgICBzdWJzdGl0dXRpb25zU3RyaW5nID0gc3Vic3RpdHV0aW9ucy5hc1N0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgTWF0Y2hpbmcgdGhlICcke3N1YnN0aXR1dGlvbnNTdHJpbmd9JyBzdWJzdGl0dXRpb25zIGFnYWluc3QgdGhlICcke2ZyYW1lU3RyaW5nfScgZnJhbWUuLi5gKTtcblxuICAgIHN1YnN0aXR1dGlvbnNNYXRjaCA9IHN1YnN0aXR1dGlvbnMuZXZlcnlTdWJzdGl0dXRpb24oKHN1YnN0aXR1dGlvbikgPT4ge1xuICAgICAgY29uc3Qgc3Vic3RpdHV0aW9uTWF0Y2hlcyA9IHRoaXMubWF0Y2hTdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHN1YnN0aXR1dGlvbk1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoc3Vic3RpdHV0aW9uc01hdGNoKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5tYXRjaGVkIHRoZSAnJHtzdWJzdGl0dXRpb25zU3RyaW5nfScgc3Vic3RpdHV0aW9ucyBhZ2FpbnN0IHRoZSAnJHtmcmFtZVN0cmluZ30nIGZyYW1lLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25zTWF0Y2g7XG4gIH1cblxuICB2ZXJpZnkoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCkge1xuICAgIGxldCB2ZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgZnJhbWVTdHJpbmcgPSB0aGlzLnN0cmluZzsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtmcmFtZVN0cmluZ30nIGZyYW1lLi4uYCk7XG5cbiAgICBjb25zdCBhc3N1bXB0aW9uc1ZlcmlmeSA9IHRoaXMudmVyaWZ5QXNzdW1wdGlvbnMoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCk7XG5cbiAgICBpZiAoYXNzdW1wdGlvbnNWZXJpZnkpIHtcbiAgICAgIGxldCB2ZXJpZmllc1doZW5TdGF0ZWQgPSBmYWxzZSxcbiAgICAgICAgICB2ZXJpZmllc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgICAgIGlmIChzdGF0ZWQpIHtcbiAgICAgICAgdmVyaWZpZXNXaGVuU3RhdGVkID0gdGhpcy52ZXJpZnlXaGVuU3RhdGVkKGFzc2lnbm1lbnRzLCBjb250ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZlcmlmaWVzV2hlbkRlcml2ZWQgPSB0aGlzLnZlcmlmeVdoZW5EZXJpdmVkKGNvbnRleHQpO1xuICAgICAgfVxuXG4gICAgICBpZiAodmVyaWZpZXNXaGVuU3RhdGVkIHx8IHZlcmlmaWVzV2hlbkRlcml2ZWQpIHtcbiAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgY29uc3QgZnJhbWUgPSB0aGlzOyAvLy9cblxuICAgICAgY29udGV4dC5hZGRGcmFtZShmcmFtZSk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtmcmFtZVN0cmluZ30nIGZyYW1lLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllcztcbiAgfVxuXG4gIHZlcmlmeVdoZW5TdGF0ZWQoYXNzaWdubWVudHMsIGNvbnRleHQpIHtcbiAgICBsZXQgdmVyaWZpZXNXaGVuU3RhdGVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBmcmFtZVN0cmluZyA9IHRoaXMuc3RyaW5nOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2ZyYW1lU3RyaW5nfScgc3RhdGVkIGZyYW1lLi4uYCk7XG5cbiAgICBjb25zdCBzaW5ndWxhciA9IHRoaXMuaXNTaW5ndWxhcigpO1xuXG4gICAgaWYgKCFzaW5ndWxhcikge1xuICAgICAgY29udGV4dC50cmFjZShgVGhlICcke2ZyYW1lU3RyaW5nfScgc3RhdGVkIGZyYW1lIG11c3QgYmUgc2luZ3VsYXIuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZlcmlmaWVzV2hlblN0YXRlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHZlcmlmaWVzV2hlblN0YXRlZCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2ZyYW1lU3RyaW5nfScgc3RhdGVkIGZyYW1lLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllc1doZW5TdGF0ZWQ7XG4gIH1cblxuICB2ZXJpZnlXaGVuRGVyaXZlZChjb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVzV2hlbkRlcml2ZWQ7XG5cbiAgICBjb25zdCBmcmFtZVN0cmluZyA9IHRoaXMuc3RyaW5nOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2ZyYW1lU3RyaW5nfScgZGVyaXZlZCBmcmFtZS4uLmApO1xuXG4gICAgdmVyaWZpZXNXaGVuRGVyaXZlZCA9IHRydWU7XG5cbiAgICBpZiAodmVyaWZpZXNXaGVuRGVyaXZlZCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2ZyYW1lU3RyaW5nfScgZGVyaXZlZCBmcmFtZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZXNXaGVuRGVyaXZlZDtcbiAgfVxuXG4gIHZlcmlmeUFzc3VtcHRpb25zKGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpIHtcbiAgICBsZXQgYXNzdW1wdGlvbnNWZXJpZnkgPSB0cnVlOyAgLy8vXG5cbiAgICBjb25zdCBsZW5ndGggPSB0aGlzLmdldExlbmd0aCgpO1xuXG4gICAgaWYgKGxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHNPck5vdGhpbmcgPSAobGVuZ3RoID4gMSkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgUyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5PVEhJTkcsXG4gICAgICAgICAgICBhc3N1bXB0aW9uc1N0cmluZyA9IGFzc3VtcHRpb25zU3RyaW5nRnJvbUFzc3VtcHRpb25zKHRoaXMuYXNzdW1wdGlvbnMpO1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2Fzc3VtcHRpb25zU3RyaW5nfScgYXNzdW1wdGlvbiR7c09yTm90aGluZ30uLi5gKTtcblxuICAgICAgc3RhdGVkID0gdHJ1ZTsgIC8vL1xuXG4gICAgICBhc3NpZ25tZW50cyA9IG51bGw7IC8vL1xuXG4gICAgICBhc3N1bXB0aW9uc1ZlcmlmeSA9IHRoaXMuYXNzdW1wdGlvbnMuZXZlcnkoKGFzc3VtcHRpb24pID0+IHtcbiAgICAgICAgY29uc3QgYXNzdW1wdGlvblZlcmlmaWVzID0gYXNzdW1wdGlvbi52ZXJpZnkoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIGFzc3VtcHRpb25WZXJpZmllcztcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoYXNzdW1wdGlvbnNWZXJpZnkpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2Fzc3VtcHRpb25zU3RyaW5nfScgYXNzdW1wdGlvbiR7c09yTm90aGluZ30uYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFzc3VtcHRpb25zVmVyaWZ5O1xuICB9XG5cbiAgdmVyaWZ5R2l2ZW5NZXRhVHlwZShtZXRhVHlwZSwgYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCkge1xuICAgIGxldCB2ZXJpZmllc0dpdmVuTWV0YVR5cGUgPSBmYWxzZTtcblxuICAgIGNvbnN0IGZyYW1lU3RyaW5nID0gdGhpcy5zdHJpbmcsICAvLy9cbiAgICAgICAgICBtZXRhVHlwZVN0cmluZyA9IG1ldGFUeXBlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtmcmFtZVN0cmluZ30nIGZyYW1lIGdpdmVuIHRoZSAnJHttZXRhVHlwZVN0cmluZ30nIG1ldGEtdHlwZS4uLmApO1xuXG4gICAgY29uc3QgbWV0YVR5cGVOYW1lID0gbWV0YVR5cGUuZ2V0TmFtZSgpO1xuXG4gICAgaWYgKG1ldGFUeXBlTmFtZSA9PT0gRlJBTUVfTUVUQV9UWVBFX05BTUUpIHtcbiAgICAgIGNvbnN0IHZlcmlmaWVzID0gdGhpcy52ZXJpZnkoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dClcblxuICAgICAgdmVyaWZpZXNHaXZlbk1ldGFUeXBlID0gdmVyaWZpZXM7IC8vL1xuICAgIH1cblxuICAgIGlmICh2ZXJpZmllc0dpdmVuTWV0YVR5cGUpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtmcmFtZVN0cmluZ30nIGZyYW1lIGdpdmVuIHRoZSAnJHttZXRhVHlwZVN0cmluZ30nIG1ldGEtdHlwZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZXNHaXZlbk1ldGFUeXBlO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uID0gbnVsbDtcblxuICAgIGNvbnN0IHNpbmd1bGFyID0gdGhpcy5pc1Npbmd1bGFyKCk7XG5cbiAgICBpZiAoc2luZ3VsYXIpIHtcbiAgICAgIGNvbnN0IGFzc3VtcHRpb24gPSB0aGlzLmdldEFzc3VtcHRpb24oKSxcbiAgICAgICAgICAgIGFzc3VtcHRpb25KU09OID0gYXNzdW1wdGlvbi50b0pTT04oKTtcblxuICAgICAganNvbiA9IGFzc3VtcHRpb25KU09OOyAgLy8vXG4gICAgfVxuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiRnJhbWVcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBmcmFtZSA9IG51bGw7XG5cbiAgICBpZiAoanNvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgeyBBc3N1bXB0aW9uIH0gPWVsZW1lbnRzLFxuICAgICAgICAgICAgYXNzdW1wdGlvbiA9IEFzc3VtcHRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgICBhc3N1bXB0aW9ucyA9IFtcbiAgICAgICAgICAgICAgYXNzdW1wdGlvblxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHN0cmluZyA9IG51bGwsXG4gICAgICAgICAgICBub2RlID0gbnVsbDtcblxuICAgICAgZnJhbWUgPSBuZXcgRnJhbWUoc3RyaW5nLCBub2RlLCBhc3N1bXB0aW9ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwiZGVmaW5lIiwiRnJhbWUiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImFzc3VtcHRpb25zIiwiZ2V0QXNzdW1wdGlvbnMiLCJnZXRMZW5ndGgiLCJsZW5ndGgiLCJnZXRBc3N1bXB0aW9uIiwiYXNzdW1wdGlvbiIsImZpcnN0QXNzdW1wdGlvbiIsImdldE1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZSIsInNpbmd1bGFyIiwiaXNTaW5ndWxhciIsImdldE1ldGF2YXJpYWJsZU5hbWUiLCJtZXRhdmFyaWFibGVOYW1lIiwiaXNNZXRhdmFyaWFibGVFcXVhbFRvTWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlRXF1YWxUb01ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZUEiLCJzaW5ndWxhck1ldGF2YXJpYWJsZU5vZGUiLCJnZXRTaW5ndWxhck1ldGF2YXJpYWJsZU5vZGUiLCJmaW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lIiwibWV0YXZhcmlhYmxlQiIsImVxdWFsVG8iLCJpc0VxdWFsVG8iLCJtYXRjaEZyYW1lTm9kZSIsImZyYW1lTm9kZSIsIm1hdGNoIiwibWF0Y2hTdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25NYXRjaGVzIiwiZnJhbWVTdHJpbmciLCJzdWJzdGl0dXRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInNvbWUiLCJzdWJzdGl0dXRpb25NYXRjaGVzQXNzdW1wdGlvbiIsImRlYnVnIiwibWF0Y2hTdWJzdGl0dXRpb25zIiwic3Vic3RpdHV0aW9ucyIsInN1YnN0aXR1dGlvbnNNYXRjaCIsInN1YnN0aXR1dGlvbnNTdHJpbmciLCJhc1N0cmluZyIsImV2ZXJ5U3Vic3RpdHV0aW9uIiwidmVyaWZ5IiwiYXNzaWdubWVudHMiLCJzdGF0ZWQiLCJ2ZXJpZmllcyIsImFzc3VtcHRpb25zVmVyaWZ5IiwidmVyaWZ5QXNzdW1wdGlvbnMiLCJ2ZXJpZmllc1doZW5TdGF0ZWQiLCJ2ZXJpZmllc1doZW5EZXJpdmVkIiwidmVyaWZ5V2hlblN0YXRlZCIsInZlcmlmeVdoZW5EZXJpdmVkIiwiZnJhbWUiLCJhZGRGcmFtZSIsInNPck5vdGhpbmciLCJTIiwiTk9USElORyIsImFzc3VtcHRpb25zU3RyaW5nIiwiYXNzdW1wdGlvbnNTdHJpbmdGcm9tQXNzdW1wdGlvbnMiLCJldmVyeSIsImFzc3VtcHRpb25WZXJpZmllcyIsInZlcmlmeUdpdmVuTWV0YVR5cGUiLCJtZXRhVHlwZSIsInZlcmlmaWVzR2l2ZW5NZXRhVHlwZSIsIm1ldGFUeXBlU3RyaW5nIiwibWV0YVR5cGVOYW1lIiwiZ2V0TmFtZSIsIkZSQU1FX01FVEFfVFlQRV9OQU1FIiwidG9KU09OIiwianNvbiIsImFzc3VtcHRpb25KU09OIiwiZnJvbUpTT04iLCJBc3N1bXB0aW9uIiwiZWxlbWVudHMiLCJFbGVtZW50IiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFBOzs7eUJBWCtCOzhEQUVYO2dFQUNDO3lCQUdNOzZCQUNVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFckMsSUFBTSxBQUFFQSxRQUFVQyx5QkFBYyxDQUF4QkQ7SUFFUixXQUFlRSxJQUFBQSxnQkFBTSwwQkFBQzs7YUFBTUMsTUFDZEMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsV0FBVztnQ0FEcEJKOztnQkFFeEIsa0JBRndCQTtZQUVsQkM7WUFBU0M7WUFBUUM7O1FBRXZCLE1BQUtDLFdBQVcsR0FBR0E7Ozs7O1lBR3JCQyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNELFdBQVc7WUFDekI7OztZQUVBRSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQWMsT0FBTyxJQUFJLENBQUNGLFdBQVcsQ0FBQ0csTUFBTTtZQUFFOzs7WUFFOUNDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFJQyxhQUFhO2dCQUVqQixJQUFNRixTQUFTLElBQUksQ0FBQ0QsU0FBUztnQkFFN0IsSUFBSUMsV0FBVyxHQUFHO29CQUNoQixJQUFNRyxrQkFBa0JiLE1BQU0sSUFBSSxDQUFDTyxX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
|