occam-verify-cli 0.0.537 → 0.0.539

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.
Files changed (73) hide show
  1. package/bin/action/verify.js +3 -24
  2. package/bin/actions.js +20 -6
  3. package/lib/axiom.js +4 -4
  4. package/lib/axiomLemmaTheoremConjecture.js +28 -25
  5. package/lib/conclusion.js +5 -5
  6. package/lib/conjecture.js +4 -4
  7. package/lib/consequence.js +3 -3
  8. package/lib/context/file.js +90 -28
  9. package/lib/equality.js +3 -3
  10. package/lib/kinds.js +5 -1
  11. package/lib/lemma.js +4 -4
  12. package/lib/metaType.js +201 -0
  13. package/lib/metavariable.js +75 -0
  14. package/lib/premise.js +9 -9
  15. package/lib/rule.js +36 -29
  16. package/lib/supposition.js +5 -5
  17. package/lib/theorem.js +4 -4
  18. package/lib/utilities/query.js +13 -2
  19. package/lib/variable.js +12 -12
  20. package/lib/verifier/metastatementForMetavariable.js +8 -8
  21. package/lib/verifier/statementForMetavariable.js +9 -9
  22. package/lib/verifier/termForVariable.js +22 -11
  23. package/lib/verify/assertion/type.js +2 -2
  24. package/lib/verify/axiom.js +2 -2
  25. package/lib/verify/conjecture.js +2 -2
  26. package/lib/verify/declaration/metavariable.js +26 -0
  27. package/lib/verify/declaration/topLevel.js +7 -3
  28. package/lib/verify/lemma.js +2 -2
  29. package/lib/verify/metastatement/qualified.js +6 -19
  30. package/lib/verify/metastatement/unqualified.js +5 -5
  31. package/lib/verify/metavariable.js +34 -0
  32. package/lib/verify/rule.js +2 -2
  33. package/lib/verify/statement/qualified.js +32 -44
  34. package/lib/verify/statement/unqualified.js +4 -4
  35. package/lib/verify/statement.js +5 -5
  36. package/lib/verify/theorem.js +2 -2
  37. package/lib/verify/variable.js +4 -4
  38. package/package.json +3 -3
  39. package/src/axiom.js +1 -1
  40. package/src/axiomLemmaTheoremConjecture.js +27 -28
  41. package/src/conclusion.js +8 -4
  42. package/src/conjecture.js +1 -1
  43. package/src/consequence.js +2 -2
  44. package/src/context/file.js +97 -28
  45. package/src/equality.js +2 -2
  46. package/src/kinds.js +1 -0
  47. package/src/lemma.js +1 -1
  48. package/src/metaType.js +81 -0
  49. package/src/metavariable.js +35 -0
  50. package/src/premise.js +16 -8
  51. package/src/rule.js +32 -27
  52. package/src/supposition.js +8 -4
  53. package/src/theorem.js +1 -1
  54. package/src/utilities/query.js +14 -0
  55. package/src/variable.js +8 -8
  56. package/src/verifier/metastatementForMetavariable.js +7 -7
  57. package/src/verifier/statementForMetavariable.js +8 -8
  58. package/src/verifier/termForVariable.js +33 -13
  59. package/src/verify/assertion/type.js +3 -3
  60. package/src/verify/axiom.js +1 -1
  61. package/src/verify/conjecture.js +2 -1
  62. package/src/verify/declaration/metavariable.js +20 -0
  63. package/src/verify/declaration/topLevel.js +9 -2
  64. package/src/verify/lemma.js +1 -1
  65. package/src/verify/metastatement/qualified.js +8 -18
  66. package/src/verify/metastatement/unqualified.js +5 -5
  67. package/src/verify/metavariable.js +32 -0
  68. package/src/verify/rule.js +1 -1
  69. package/src/verify/statement/qualified.js +33 -42
  70. package/src/verify/statement/unqualified.js +4 -4
  71. package/src/verify/statement.js +12 -12
  72. package/src/verify/theorem.js +2 -1
  73. package/src/verify/variable.js +4 -4
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ default: function() {
13
+ return MetaType;
14
+ },
15
+ statementMetaType: function() {
16
+ return statementMetaType;
17
+ }
18
+ });
19
+ var _kinds = require("./kinds");
20
+ var _metaTypeNames = require("./metaTypeNames");
21
+ function _assertThisInitialized(self) {
22
+ if (self === void 0) {
23
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
24
+ }
25
+ return self;
26
+ }
27
+ function _classCallCheck(instance, Constructor) {
28
+ if (!(instance instanceof Constructor)) {
29
+ throw new TypeError("Cannot call a class as a function");
30
+ }
31
+ }
32
+ function _defineProperties(target, props) {
33
+ for(var i = 0; i < props.length; i++){
34
+ var descriptor = props[i];
35
+ descriptor.enumerable = descriptor.enumerable || false;
36
+ descriptor.configurable = true;
37
+ if ("value" in descriptor) descriptor.writable = true;
38
+ Object.defineProperty(target, descriptor.key, descriptor);
39
+ }
40
+ }
41
+ function _createClass(Constructor, protoProps, staticProps) {
42
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
43
+ if (staticProps) _defineProperties(Constructor, staticProps);
44
+ return Constructor;
45
+ }
46
+ function _getPrototypeOf(o) {
47
+ _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
48
+ return o.__proto__ || Object.getPrototypeOf(o);
49
+ };
50
+ return _getPrototypeOf(o);
51
+ }
52
+ function _inherits(subClass, superClass) {
53
+ if (typeof superClass !== "function" && superClass !== null) {
54
+ throw new TypeError("Super expression must either be null or a function");
55
+ }
56
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
57
+ constructor: {
58
+ value: subClass,
59
+ writable: true,
60
+ configurable: true
61
+ }
62
+ });
63
+ if (superClass) _setPrototypeOf(subClass, superClass);
64
+ }
65
+ function _possibleConstructorReturn(self, call) {
66
+ if (call && (_typeof(call) === "object" || typeof call === "function")) {
67
+ return call;
68
+ }
69
+ return _assertThisInitialized(self);
70
+ }
71
+ function _setPrototypeOf(o, p) {
72
+ _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
73
+ o.__proto__ = p;
74
+ return o;
75
+ };
76
+ return _setPrototypeOf(o, p);
77
+ }
78
+ var _typeof = function(obj) {
79
+ "@swc/helpers - typeof";
80
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
81
+ };
82
+ function _isNativeReflectConstruct() {
83
+ if (typeof Reflect === "undefined" || !Reflect.construct) return false;
84
+ if (Reflect.construct.sham) return false;
85
+ if (typeof Proxy === "function") return true;
86
+ try {
87
+ Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
88
+ return true;
89
+ } catch (e) {
90
+ return false;
91
+ }
92
+ }
93
+ function _createSuper(Derived) {
94
+ var hasNativeReflectConstruct = _isNativeReflectConstruct();
95
+ return function _createSuperInternal() {
96
+ var Super = _getPrototypeOf(Derived), result;
97
+ if (hasNativeReflectConstruct) {
98
+ var NewTarget = _getPrototypeOf(this).constructor;
99
+ result = Reflect.construct(Super, arguments, NewTarget);
100
+ } else {
101
+ result = Super.apply(this, arguments);
102
+ }
103
+ return _possibleConstructorReturn(this, result);
104
+ };
105
+ }
106
+ var MetaType = /*#__PURE__*/ function() {
107
+ function MetaType(name) {
108
+ _classCallCheck(this, MetaType);
109
+ this.name = name;
110
+ }
111
+ _createClass(MetaType, [
112
+ {
113
+ key: "getName",
114
+ value: function getName() {
115
+ return this.name;
116
+ }
117
+ },
118
+ {
119
+ key: "isEqualTo",
120
+ value: function isEqualTo(metaType) {
121
+ var equalTo = this === metaType;
122
+ return equalTo;
123
+ }
124
+ },
125
+ {
126
+ key: "match",
127
+ value: function match(metaType) {
128
+ var equalToMetaType = this.isEqualTo(metaType), matches = equalToMetaType; ///
129
+ return matches;
130
+ }
131
+ },
132
+ {
133
+ key: "matchName",
134
+ value: function matchName(name) {
135
+ var matchesName = this.name === name;
136
+ return matchesName;
137
+ }
138
+ },
139
+ {
140
+ key: "matchMetaTypeName",
141
+ value: function matchMetaTypeName(metaTypeName) {
142
+ var matchesMetaTypeName = this.name === metaTypeName;
143
+ return matchesMetaTypeName;
144
+ }
145
+ },
146
+ {
147
+ key: "asString",
148
+ value: function asString(tokens) {
149
+ var string = "".concat(this.name);
150
+ return string;
151
+ }
152
+ },
153
+ {
154
+ key: "toJSON",
155
+ value: function toJSON(tokens) {
156
+ var kind = _kinds.META_TYPE_KIND, name = this.name, json = {
157
+ kind: kind,
158
+ name: name
159
+ };
160
+ return json;
161
+ }
162
+ }
163
+ ], [
164
+ {
165
+ key: "fromJSON",
166
+ value: function fromJSON(json, context) {
167
+ var name = json.name, metaType = new MetaType(name);
168
+ return metaType;
169
+ }
170
+ },
171
+ {
172
+ key: "fromMetaTypeName",
173
+ value: function fromMetaTypeName(metaTypeName) {
174
+ var name = metaTypeName, metaType = new MetaType(name);
175
+ return metaType;
176
+ }
177
+ }
178
+ ]);
179
+ return MetaType;
180
+ }();
181
+ var StatementMetaType = /*#__PURE__*/ function(MetaType) {
182
+ _inherits(StatementMetaType, MetaType);
183
+ var _super = _createSuper(StatementMetaType);
184
+ function StatementMetaType() {
185
+ _classCallCheck(this, StatementMetaType);
186
+ return _super.apply(this, arguments);
187
+ }
188
+ _createClass(StatementMetaType, null, [
189
+ {
190
+ key: "fromNothing",
191
+ value: function fromNothing() {
192
+ var name = _metaTypeNames.STATEMENT_META_TYPE_NAME, objectMetaType = new StatementMetaType(name);
193
+ return objectMetaType;
194
+ }
195
+ }
196
+ ]);
197
+ return StatementMetaType;
198
+ }(MetaType);
199
+ var statementMetaType = StatementMetaType.fromNothing();
200
+
201
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXRhVHlwZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgTUVUQV9UWVBFX0tJTkQgfSBmcm9tIFwiLi9raW5kc1wiO1xuaW1wb3J0IHsgU1RBVEVNRU5UX01FVEFfVFlQRV9OQU1FIH0gZnJvbSBcIi4vbWV0YVR5cGVOYW1lc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRhVHlwZSB7XG4gIGNvbnN0cnVjdG9yKG5hbWUpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG5cbiAgZ2V0TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgaXNFcXVhbFRvKG1ldGFUeXBlKSB7XG4gICAgY29uc3QgZXF1YWxUbyA9ICh0aGlzID09PSBtZXRhVHlwZSk7XG5cbiAgICByZXR1cm4gZXF1YWxUbztcbiAgfVxuXG4gIG1hdGNoKG1ldGFUeXBlKSB7XG4gICAgY29uc3QgZXF1YWxUb01ldGFUeXBlID0gdGhpcy5pc0VxdWFsVG8obWV0YVR5cGUpLFxuICAgICAgICAgIG1hdGNoZXMgPSBlcXVhbFRvTWV0YVR5cGU7ICAvLy9cblxuICAgIHJldHVybiBtYXRjaGVzO1xuICB9XG5cbiAgbWF0Y2hOYW1lKG5hbWUpIHtcbiAgICBjb25zdCBtYXRjaGVzTmFtZSA9ICh0aGlzLm5hbWUgPT09IG5hbWUpO1xuXG4gICAgcmV0dXJuIG1hdGNoZXNOYW1lO1xuICB9XG5cbiAgbWF0Y2hNZXRhVHlwZU5hbWUobWV0YVR5cGVOYW1lKSB7XG4gICAgY29uc3QgbWF0Y2hlc01ldGFUeXBlTmFtZSA9ICh0aGlzLm5hbWUgPT09IG1ldGFUeXBlTmFtZSk7XG5cbiAgICByZXR1cm4gbWF0Y2hlc01ldGFUeXBlTmFtZTtcbiAgfVxuXG4gIGFzU3RyaW5nKHRva2Vucykge1xuICAgIGNvbnN0IHN0cmluZyA9IGAke3RoaXMubmFtZX1gO1xuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIHRvSlNPTih0b2tlbnMpIHtcbiAgICBjb25zdCBraW5kID0gTUVUQV9UWVBFX0tJTkQsXG4gICAgICAgICAgbmFtZSA9IHRoaXMubmFtZSxcbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAga2luZCxcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGNvbnN0IHsgbmFtZSB9ID0ganNvbixcbiAgICAgICAgICBtZXRhVHlwZSA9IG5ldyBNZXRhVHlwZShuYW1lKTtcblxuICAgIHJldHVybiBtZXRhVHlwZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTWV0YVR5cGVOYW1lKG1ldGFUeXBlTmFtZSkge1xuICAgIGNvbnN0IG5hbWUgPSBtZXRhVHlwZU5hbWUsICAvLy9cbiAgICAgICAgICBtZXRhVHlwZSA9IG5ldyBNZXRhVHlwZShuYW1lKTtcblxuICAgIHJldHVybiBtZXRhVHlwZTtcbiAgfVxufVxuXG5jbGFzcyBTdGF0ZW1lbnRNZXRhVHlwZSBleHRlbmRzIE1ldGFUeXBlIHtcbiAgc3RhdGljIGZyb21Ob3RoaW5nKCkge1xuICAgIGNvbnN0IG5hbWUgPSBTVEFURU1FTlRfTUVUQV9UWVBFX05BTUUsXG4gICAgICAgICAgb2JqZWN0TWV0YVR5cGUgPSBuZXcgU3RhdGVtZW50TWV0YVR5cGUobmFtZSk7XG5cbiAgICByZXR1cm4gb2JqZWN0TWV0YVR5cGU7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHN0YXRlbWVudE1ldGFUeXBlID0gU3RhdGVtZW50TWV0YVR5cGUuZnJvbU5vdGhpbmcoKTtcbiJdLCJuYW1lcyI6WyJNZXRhVHlwZSIsInN0YXRlbWVudE1ldGFUeXBlIiwibmFtZSIsImdldE5hbWUiLCJpc0VxdWFsVG8iLCJtZXRhVHlwZSIsImVxdWFsVG8iLCJtYXRjaCIsImVxdWFsVG9NZXRhVHlwZSIsIm1hdGNoZXMiLCJtYXRjaE5hbWUiLCJtYXRjaGVzTmFtZSIsIm1hdGNoTWV0YVR5cGVOYW1lIiwibWV0YVR5cGVOYW1lIiwibWF0Y2hlc01ldGFUeXBlTmFtZSIsImFzU3RyaW5nIiwidG9rZW5zIiwic3RyaW5nIiwidG9KU09OIiwia2luZCIsIk1FVEFfVFlQRV9LSU5EIiwianNvbiIsImZyb21KU09OIiwiY29udGV4dCIsImZyb21NZXRhVHlwZU5hbWUiLCJTdGF0ZW1lbnRNZXRhVHlwZSIsImZyb21Ob3RoaW5nIiwiU1RBVEVNRU5UX01FVEFfVFlQRV9OQU1FIiwib2JqZWN0TWV0YVR5cGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7ZUFLcUJBOztJQTJFUkMsaUJBQWlCO2VBQWpCQTs7O3FCQTlFa0I7NkJBQ1U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTFCLElBQUEsQUFBTUQseUJBa0VsQixBQWxFWTthQUFNQSxTQUNQRSxJQUFJOzhCQURHRjtRQUVqQixJQUFJLENBQUNFLElBQUksR0FBR0E7O2lCQUZLRjs7WUFLbkJHLEtBQUFBO21CQUFBQSxTQUFBQSxVQUFVO2dCQUNSLE9BQU8sSUFBSSxDQUFDRCxJQUFJO1lBQ2xCOzs7WUFFQUUsS0FBQUE7bUJBQUFBLFNBQUFBLFVBQVVDLFFBQVEsRUFBRTtnQkFDbEIsSUFBTUMsVUFBVyxJQUFJLEtBQUtEO2dCQUUxQixPQUFPQztZQUNUOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBLE1BQU1GLFFBQVEsRUFBRTtnQkFDZCxJQUFNRyxrQkFBa0IsSUFBSSxDQUFDSixTQUFTLENBQUNDLFdBQ2pDSSxVQUFVRCxpQkFBa0IsR0FBRztnQkFFckMsT0FBT0M7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSxVQUFVUixJQUFJLEVBQUU7Z0JBQ2QsSUFBTVMsY0FBZSxJQUFJLENBQUNULElBQUksS0FBS0E7Z0JBRW5DLE9BQU9TO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsa0JBQWtCQyxZQUFZLEVBQUU7Z0JBQzlCLElBQU1DLHNCQUF1QixJQUFJLENBQUNaLElBQUksS0FBS1c7Z0JBRTNDLE9BQU9DO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsU0FBU0MsTUFBTSxFQUFFO2dCQUNmLElBQU1DLFNBQVMsQUFBQyxHQUFZLE9BQVYsSUFBSSxDQUFDZixJQUFJO2dCQUUzQixPQUFPZTtZQUNUOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBLE9BQU9GLE1BQU0sRUFBRTtnQkFDYixJQUFNRyxPQUFPQyxxQkFBYyxFQUNyQmxCLE9BQU8sSUFBSSxDQUFDQSxJQUFJLEVBQ2hCbUIsT0FBTztvQkFDTEYsTUFBQUE7b0JBQ0FqQixNQUFBQTtnQkFDRjtnQkFFTixPQUFPbUI7WUFDVDs7OztZQUVPQyxLQUFBQTttQkFBUCxTQUFPQSxTQUFTRCxJQUFJLEVBQUVFLE9BQU8sRUFBRTtnQkFDN0IsSUFBTSxBQUFFckIsT0FBU21CLEtBQVRuQixNQUNGRyxXQUFXLElBckRBTCxTQXFEYUU7Z0JBRTlCLE9BQU9HO1lBQ1Q7OztZQUVPbUIsS0FBQUE7bUJBQVAsU0FBT0EsaUJBQWlCWCxZQUFZLEVBQUU7Z0JBQ3BDLElBQU1YLE9BQU9XLGNBQ1BSLFdBQVcsSUE1REFMLFNBNERhRTtnQkFFOUIsT0FBT0c7WUFDVDs7O1dBL0RtQkw7O0FBa0VyQixJQUFBLEFBQU15QixrQ0FTSCxBQVRIO2NBQU1BOzhCQUFBQTthQUFBQTs4QkFBQUE7OztpQkFBQUE7O1lBQ0dDLEtBQUFBO21CQUFQLFNBQU9BLGNBQWM7Z0JBQ25CLElBQU14QixPQUFPeUIsdUNBQXdCLEVBQy9CQyxpQkFBaUIsSUFIckJILGtCQUcyQ3ZCO2dCQUU3QyxPQUFPMEI7WUFDVDs7O1dBTklIO0VBQTBCekI7QUFTekIsSUFBTUMsb0JBQW9Cd0Isa0JBQWtCQyxXQUFXIn0=
@@ -0,0 +1,75 @@
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 Metavariable;
9
+ }
10
+ });
11
+ function _classCallCheck(instance, Constructor) {
12
+ if (!(instance instanceof Constructor)) {
13
+ throw new TypeError("Cannot call a class as a function");
14
+ }
15
+ }
16
+ function _defineProperties(target, props) {
17
+ for(var i = 0; i < props.length; i++){
18
+ var descriptor = props[i];
19
+ descriptor.enumerable = descriptor.enumerable || false;
20
+ descriptor.configurable = true;
21
+ if ("value" in descriptor) descriptor.writable = true;
22
+ Object.defineProperty(target, descriptor.key, descriptor);
23
+ }
24
+ }
25
+ function _createClass(Constructor, protoProps, staticProps) {
26
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
27
+ if (staticProps) _defineProperties(Constructor, staticProps);
28
+ return Constructor;
29
+ }
30
+ var Metavariable = /*#__PURE__*/ function() {
31
+ function Metavariable(name, metaType) {
32
+ _classCallCheck(this, Metavariable);
33
+ this.name = name;
34
+ this.metaType = metaType;
35
+ }
36
+ _createClass(Metavariable, [
37
+ {
38
+ key: "getName",
39
+ value: function getName() {
40
+ return this.name;
41
+ }
42
+ },
43
+ {
44
+ key: "getMetaType",
45
+ value: function getMetaType() {
46
+ return this.metaType;
47
+ }
48
+ },
49
+ {
50
+ key: "matchName",
51
+ value: function matchName(name) {
52
+ var matchesName = this.name === name;
53
+ return matchesName;
54
+ }
55
+ },
56
+ {
57
+ key: "asString",
58
+ value: function asString(tokens) {
59
+ var metaTypeName = this.metaType.getName(), string = "".concat(this.name, ":").concat(metaTypeName);
60
+ return string;
61
+ }
62
+ }
63
+ ], [
64
+ {
65
+ key: "fromNameAndMetaType",
66
+ value: function fromNameAndMetaType(name, metaType) {
67
+ var metavariable = new Metavariable(name, metaType);
68
+ return metavariable;
69
+ }
70
+ }
71
+ ]);
72
+ return Metavariable;
73
+ }();
74
+
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXRhdmFyaWFibGUuanMiLCI8PGpzeC1jb25maWctcHJhZ21hLmpzPj4iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldGF2YXJpYWJsZSB7XG4gIGNvbnN0cnVjdG9yKG5hbWUsIG1ldGFUeXBlKSB7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLm1ldGFUeXBlID0gbWV0YVR5cGU7XG4gIH1cblxuICBnZXROYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICBnZXRNZXRhVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRhVHlwZTtcbiAgfVxuXG4gIG1hdGNoTmFtZShuYW1lKSB7XG4gICAgY29uc3QgbWF0Y2hlc05hbWUgPSAodGhpcy5uYW1lID09PSBuYW1lKTtcblxuICAgIHJldHVybiBtYXRjaGVzTmFtZTtcbiAgfVxuXG4gIGFzU3RyaW5nKHRva2Vucykge1xuICAgIGNvbnN0IG1ldGFUeXBlTmFtZSA9IHRoaXMubWV0YVR5cGUuZ2V0TmFtZSgpLFxuICAgICAgICAgIHN0cmluZyA9IGAke3RoaXMubmFtZX06JHttZXRhVHlwZU5hbWV9YDtcblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5hbWVBbmRNZXRhVHlwZShuYW1lLCBtZXRhVHlwZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZSA9IG5ldyBNZXRhdmFyaWFibGUobmFtZSwgbWV0YVR5cGUpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfVxufVxuIiwiUmVhY3QuY3JlYXRlRWxlbWVudCJdLCJuYW1lcyI6WyJNZXRhdmFyaWFibGUiLCJuYW1lIiwibWV0YVR5cGUiLCJnZXROYW1lIiwiZ2V0TWV0YVR5cGUiLCJtYXRjaE5hbWUiLCJtYXRjaGVzTmFtZSIsImFzU3RyaW5nIiwidG9rZW5zIiwibWV0YVR5cGVOYW1lIiwic3RyaW5nIiwiZnJvbU5hbWVBbmRNZXRhVHlwZSIsIm1ldGF2YXJpYWJsZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFFcUJBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQU4sSUFBQSxBQUFNQSw2QkFBTjthQUFNQSxhQUNQQyxJQUFJLEVBQUVDLFFBQVE7OEJBRFBGO1FBRWpCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsUUFBUSxHQUFHQTs7aUJBSENGOztZQU1uQkcsS0FBQUE7bUJBQUFBLFNBQUFBLFVBQVU7Z0JBQ1IsT0FBTyxJQUFJLENBQUNGLElBQUk7WUFDbEI7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUEsY0FBYztnQkFDWixPQUFPLElBQUksQ0FBQ0YsUUFBUTtZQUN0Qjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSxVQUFVSixJQUFJLEVBQUU7Z0JBQ2QsSUFBTUssY0FBZSxJQUFJLENBQUNMLElBQUksS0FBS0E7Z0JBRW5DLE9BQU9LO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsU0FBU0MsTUFBTSxFQUFFO2dCQUNmLElBQU1DLGVBQWUsSUFBSSxDQUFDUCxRQUFRLENBQUNDLE9BQU8sSUFDcENPLFNBQVMsQUFBQyxHQUFlRCxPQUFiLElBQUksQ0FBQ1IsSUFBSSxFQUFDLEtBQWdCLE9BQWJRO2dCQUUvQixPQUFPQztZQUNUOzs7O1lBRU9DLEtBQUFBO21CQUFQLFNBQU9BLG9CQUFvQlYsSUFBSSxFQUFFQyxRQUFRLEVBQUU7Z0JBQ3pDLElBQU1VLGVBQWUsSUE1QkpaLGFBNEJxQkMsTUFBTUM7Z0JBRTVDLE9BQU9VO1lBQ1Q7OztXQS9CbUJaIn0=
package/lib/premise.js CHANGED
@@ -72,7 +72,7 @@ var Premise = /*#__PURE__*/ function() {
72
72
  },
73
73
  {
74
74
  key: "matchSubproofNode",
75
- value: function matchSubproofNode(subproofNode, substitutions) {
75
+ value: function matchSubproofNode(subproofNode, substitutions, fileContext, statementProofContext) {
76
76
  var subproofNodeMatches = false;
77
77
  var subproofAssertionNode = ruleSubproofAssertionNodeQuery(this.metastatementNode);
78
78
  if (subproofAssertionNode !== null) {
@@ -81,7 +81,7 @@ var Premise = /*#__PURE__*/ function() {
81
81
  ]), ruleSubproofAssertionMetastatementNodes = ruleSubproofAssertionMetastatementNodesQuery(subproofAssertionNode), subproofStatementNodesLength = subproofStatementNodes.length, ruleSubproofAssertionMetastatementNodesLength = ruleSubproofAssertionMetastatementNodes.length;
82
82
  if (subproofStatementNodesLength === ruleSubproofAssertionMetastatementNodesLength) {
83
83
  subproofNodeMatches = ruleSubproofAssertionMetastatementNodes.every(function(ruleSubproofAssertionMetastatementNode, index) {
84
- var subproofStatementNode = subproofStatementNodes[index], nonTerminalNodeA = ruleSubproofAssertionMetastatementNode, nonTerminalNodeB = subproofStatementNode, nonTerminalNodeVerified = _premise.premiseStatementForMetavariableVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions);
84
+ var subproofStatementNode = subproofStatementNodes[index], nonTerminalNodeA = ruleSubproofAssertionMetastatementNode, nonTerminalNodeB = subproofStatementNode, fileContextA = fileContext, proofContextB = statementProofContext, nonTerminalNodeVerified = _premise.premiseStatementForMetavariableVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, proofContextB);
85
85
  if (nonTerminalNodeVerified) {
86
86
  return true;
87
87
  }
@@ -93,14 +93,14 @@ var Premise = /*#__PURE__*/ function() {
93
93
  },
94
94
  {
95
95
  key: "matchStatementNode",
96
- value: function matchStatementNode(statementNode, substitutions) {
97
- var nonTerminalNodeA = this.metastatementNode, nonTerminalNodeB = statementNode, nonTerminalNodeVerified = _premise.premiseStatementForMetavariableVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions), statementNodeMatches = nonTerminalNodeVerified; ///
96
+ value: function matchStatementNode(statementNode, substitutions, fileContext, statementProofContext) {
97
+ var nonTerminalNodeA = this.metastatementNode, nonTerminalNodeB = statementNode, fileContextA = fileContext, proofContextB = statementProofContext, nonTerminalNodeVerified = _premise.premiseStatementForMetavariableVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, proofContextB), statementNodeMatches = nonTerminalNodeVerified; ///
98
98
  return statementNodeMatches;
99
99
  }
100
100
  },
101
101
  {
102
102
  key: "matchRuleSubproofNode",
103
- value: function matchRuleSubproofNode(ruleSubproofNode, substitutions) {
103
+ value: function matchRuleSubproofNode(ruleSubproofNode, substitutions, fileContext, metastatementMetaproofContext) {
104
104
  var ruleSubproofNodeMatches = false;
105
105
  var ruleSubproofAssertionNode = ruleSubproofAssertionNodeQuery(this.metastatementNode);
106
106
  if (ruleSubproofAssertionNode !== null) {
@@ -109,7 +109,7 @@ var Premise = /*#__PURE__*/ function() {
109
109
  ]), ruleSubproofMetastatementNodesLength = ruleSubproofMetastatementNodes.length, ruleSubproofAssertionMetastatementNodes = ruleSubproofAssertionMetastatementNodesQuery(ruleSubproofAssertionNode), ruleSubproofAssertionMetastatementNodesLength = ruleSubproofAssertionMetastatementNodes.length;
110
110
  if (ruleSubproofMetastatementNodesLength === ruleSubproofAssertionMetastatementNodesLength) {
111
111
  ruleSubproofNodeMatches = ruleSubproofAssertionMetastatementNodes.every(function(ruleSubproofAssertionMetastatementNode, index) {
112
- var ruleSubproofMetastatementNode = ruleSubproofMetastatementNodes[index], nonTerminalNodeA = ruleSubproofAssertionMetastatementNode, nonTerminalNodeB = ruleSubproofMetastatementNode, nonTerminalNodeVerified = _premise1.premiseMetastatementForMetavariableVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions);
112
+ var ruleSubproofMetastatementNode = ruleSubproofMetastatementNodes[index], nonTerminalNodeA = ruleSubproofAssertionMetastatementNode, nonTerminalNodeB = ruleSubproofMetastatementNode, fileContextA = fileContext, metaproofContextB = metastatementMetaproofContext, nonTerminalNodeVerified = _premise1.premiseMetastatementForMetavariableVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, metaproofContextB);
113
113
  if (nonTerminalNodeVerified) {
114
114
  return true;
115
115
  }
@@ -121,8 +121,8 @@ var Premise = /*#__PURE__*/ function() {
121
121
  },
122
122
  {
123
123
  key: "matchMetastatementNode",
124
- value: function matchMetastatementNode(metastatementNode, substitutions) {
125
- var nonTerminalNodeA = this.metastatementNode, nonTerminalNodeB = metastatementNode, nonTerminalNodeVerified = _premise1.premiseMetastatementForMetavariableVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions), metastatementNodeMatches = nonTerminalNodeVerified; ///
124
+ value: function matchMetastatementNode(metastatementNode, substitutions, fileContext, metastatementMetaproofContext) {
125
+ var nonTerminalNodeA = this.metastatementNode, nonTerminalNodeB = metastatementNode, fileContextA = fileContext, metaproofContextB = metastatementMetaproofContext, nonTerminalNodeVerified = _premise1.premiseMetastatementForMetavariableVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, fileContextA, metaproofContextB), metastatementNodeMatches = nonTerminalNodeVerified; ///
126
126
  return metastatementNodeMatches;
127
127
  }
128
128
  },
@@ -154,4 +154,4 @@ var Premise = /*#__PURE__*/ function() {
154
154
  return Premise;
155
155
  }();
156
156
 
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wcmVtaXNlLmpzIiwiPDxqc3gtY29uZmlnLXByYWdtYS5qcz4+Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBub2RlQXNTdHJpbmcgfSBmcm9tIFwiLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBub2RlUXVlcnksIG5vZGVzUXVlcnkgfSBmcm9tIFwiLi91dGlsaXRpZXMvcXVlcnlcIjtcbmltcG9ydCB7IHByZW1pc2VTdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVWZXJpZmllciB9IGZyb20gXCIuL3ZlcmlmaWVyL3N0YXRlbWVudEZvck1ldGF2YXJpYWJsZS9wcmVtaXNlXCI7XG5pbXBvcnQgeyBtZXRhc3RhdGVtZW50Tm9kZUZyb21NZXRhc3RhdGVtZW50U3RyaW5nIH0gZnJvbSBcIi4vdXRpbGl0aWVzL25vZGVcIjtcbmltcG9ydCB7IHByZW1pc2VNZXRhc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlVmVyaWZpZXIgfSBmcm9tIFwiLi92ZXJpZmllci9tZXRhc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlL3ByZW1pc2VcIjtcblxuY29uc3QgcnVsZVN1YnByb29mQXNzZXJ0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGFzdGF0ZW1lbnQvcnVsZVN1YnByb29mQXNzZXJ0aW9uIVwiKSxcbiAgICAgIHJ1bGVTdWJwcm9vZlByZW1pc2VNZXRhc3RhdGVtZW50UXVlcnkgPSBub2Rlc1F1ZXJ5KFwiL3J1bGVTdWJwcm9vZi9wcmVtaXNlL3VucXVhbGlmaWVkTWV0YXN0YXRlbWVudCEvbWV0YXN0YXRlbWVudCFcIiksXG4gICAgICBzdWJwcm9vZlN1cHBvc2l0aW9uU3RhdGVtZW50Tm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvc3VicHJvb2Yvc3VwcG9zaXRpb24vdW5xdWFsaWZpZWRTdGF0ZW1lbnQhL3N0YXRlbWVudCFcIiksXG4gICAgICBzdWJwcm9vZlN1YkRlcml2YXRpb25MYXN0U3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N1YnByb29mL3N1YkRlcml2YXRpb24vcXVhbGlmaWVkU3RhdGVtZW50fHVucXVhbGlmaWVkU3RhdGVtZW50Wy0xXS9zdGF0ZW1lbnQhXCIpLFxuICAgICAgcnVsZVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVzUXVlcnkgPSBub2Rlc1F1ZXJ5KFwiL3J1bGVTdWJwcm9vZkFzc2VydGlvbi9tZXRhc3RhdGVtZW50XCIpLFxuICAgICAgcnVsZVN1YnByb29mU3ViRGVyaXZhdGlvbkxhc3RNZXRhc3RhdGVtZW50UXVlcnkgPSBub2RlUXVlcnkoXCIvcnVsZVN1YnByb29mL3J1bGVTdWJEZXJpdmF0aW9uL3F1YWxpZmllZE1ldGFzdGF0ZW1lbnR8dW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Wy0xXS9tZXRhc3RhdGVtZW50IVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUHJlbWlzZSB7XG4gIGNvbnN0cnVjdG9yKG1ldGFzdGF0ZW1lbnROb2RlKSB7XG4gICAgdGhpcy5tZXRhc3RhdGVtZW50Tm9kZSA9IG1ldGFzdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgZ2V0TWV0YXN0YXRlbWVudE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YXN0YXRlbWVudE5vZGU7XG4gIH1cblxuICBtYXRjaFN1YnByb29mTm9kZShzdWJwcm9vZk5vZGUsIHN1YnN0aXR1dGlvbnMpIHtcbiAgICBsZXQgc3VicHJvb2ZOb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3VicHJvb2ZBc3NlcnRpb25Ob2RlID0gcnVsZVN1YnByb29mQXNzZXJ0aW9uTm9kZVF1ZXJ5KHRoaXMubWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgaWYgKHN1YnByb29mQXNzZXJ0aW9uTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3VicHJvb2ZTdXBwb3NpdGlvblN0YXRlbWVudE5vZGVzID0gc3VicHJvb2ZTdXBwb3NpdGlvblN0YXRlbWVudE5vZGVzUXVlcnkoc3VicHJvb2ZOb2RlKSxcbiAgICAgICAgICAgIHN1YnByb29mU3ViRGVyaXZhdGlvbkxhc3RTdGF0ZW1lbnROb2RlID0gc3VicHJvb2ZTdWJEZXJpdmF0aW9uTGFzdFN0YXRlbWVudE5vZGVRdWVyeShzdWJwcm9vZk5vZGUpLFxuICAgICAgICAgICAgc3VicHJvb2ZTdGF0ZW1lbnROb2RlcyA9IFtcbiAgICAgICAgICAgICAgLi4uc3VicHJvb2ZTdXBwb3NpdGlvblN0YXRlbWVudE5vZGVzLFxuICAgICAgICAgICAgICBzdWJwcm9vZlN1YkRlcml2YXRpb25MYXN0U3RhdGVtZW50Tm9kZVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJ1bGVTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlcyA9IHJ1bGVTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2Rlc1F1ZXJ5KHN1YnByb29mQXNzZXJ0aW9uTm9kZSksXG4gICAgICAgICAgICBzdWJwcm9vZlN0YXRlbWVudE5vZGVzTGVuZ3RoID0gc3VicHJvb2ZTdGF0ZW1lbnROb2Rlcy5sZW5ndGgsXG4gICAgICAgICAgICBydWxlU3VicHJvb2ZBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZXNMZW5ndGggPSBydWxlU3VicHJvb2ZBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZXMubGVuZ3RoO1xuXG4gICAgICBpZiAoc3VicHJvb2ZTdGF0ZW1lbnROb2Rlc0xlbmd0aCA9PT0gcnVsZVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVzTGVuZ3RoKSB7XG4gICAgICAgIHN1YnByb29mTm9kZU1hdGNoZXMgPSBydWxlU3VicHJvb2ZBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZXMuZXZlcnkoKHJ1bGVTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN1YnByb29mU3RhdGVtZW50Tm9kZSA9IHN1YnByb29mU3RhdGVtZW50Tm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZUEgPSBydWxlU3VicHJvb2ZBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZUIgPSBzdWJwcm9vZlN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gcHJlbWlzZVN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVZlcmlmaWVyLnZlcmlmeU5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5vZGVBLCBub25UZXJtaW5hbE5vZGVCLCBzdWJzdGl0dXRpb25zKTtcblxuICAgICAgICAgIGlmIChub25UZXJtaW5hbE5vZGVWZXJpZmllZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3VicHJvb2ZOb2RlTWF0Y2hlcztcbiAgfVxuXG4gIG1hdGNoU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlQSA9IHRoaXMubWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBub25UZXJtaW5hbE5vZGVCID0gc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gcHJlbWlzZVN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVZlcmlmaWVyLnZlcmlmeU5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5vZGVBLCBub25UZXJtaW5hbE5vZGVCLCBzdWJzdGl0dXRpb25zKSxcbiAgICAgICAgICBzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkOyAvLy9cblxuICAgIHJldHVybiBzdGF0ZW1lbnROb2RlTWF0Y2hlcztcbiAgfVxuXG4gIG1hdGNoUnVsZVN1YnByb29mTm9kZShydWxlU3VicHJvb2ZOb2RlLCBzdWJzdGl0dXRpb25zKSB7XG4gICAgbGV0IHJ1bGVTdWJwcm9vZk5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBydWxlU3VicHJvb2ZBc3NlcnRpb25Ob2RlID0gcnVsZVN1YnByb29mQXNzZXJ0aW9uTm9kZVF1ZXJ5KHRoaXMubWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgaWYgKHJ1bGVTdWJwcm9vZkFzc2VydGlvbk5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHJ1bGVTdWJwcm9vZlByZW1pc2VNZXRhc3RhdGVtZW50ID0gcnVsZVN1YnByb29mUHJlbWlzZU1ldGFzdGF0ZW1lbnRRdWVyeShydWxlU3VicHJvb2ZOb2RlKSxcbiAgICAgICAgICAgIHJ1bGVTdWJwcm9vZlN1YkRlcml2YXRpb25MYXN0TWV0YXN0YXRlbWVudCA9IHJ1bGVTdWJwcm9vZlN1YkRlcml2YXRpb25MYXN0TWV0YXN0YXRlbWVudFF1ZXJ5KHJ1bGVTdWJwcm9vZk5vZGUpLFxuICAgICAgICAgICAgcnVsZVN1YnByb29mTWV0YXN0YXRlbWVudE5vZGVzID0gW1xuICAgICAgICAgICAgICAuLi5ydWxlU3VicHJvb2ZQcmVtaXNlTWV0YXN0YXRlbWVudCxcbiAgICAgICAgICAgICAgcnVsZVN1YnByb29mU3ViRGVyaXZhdGlvbkxhc3RNZXRhc3RhdGVtZW50XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcnVsZVN1YnByb29mTWV0YXN0YXRlbWVudE5vZGVzTGVuZ3RoID0gcnVsZVN1YnByb29mTWV0YXN0YXRlbWVudE5vZGVzLmxlbmd0aCxcbiAgICAgICAgICAgIHJ1bGVTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlcyA9IHJ1bGVTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2Rlc1F1ZXJ5KHJ1bGVTdWJwcm9vZkFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgICAgcnVsZVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVzTGVuZ3RoID0gcnVsZVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVzLmxlbmd0aDtcblxuICAgICAgaWYgKHJ1bGVTdWJwcm9vZk1ldGFzdGF0ZW1lbnROb2Rlc0xlbmd0aCA9PT0gcnVsZVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVzTGVuZ3RoKSB7XG4gICAgICAgIHJ1bGVTdWJwcm9vZk5vZGVNYXRjaGVzID0gcnVsZVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVzLmV2ZXJ5KChydWxlU3VicHJvb2ZBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBjb25zdCBydWxlU3VicHJvb2ZNZXRhc3RhdGVtZW50Tm9kZSA9IHJ1bGVTdWJwcm9vZk1ldGFzdGF0ZW1lbnROb2Rlc1tpbmRleF0sXG4gICAgICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlQSA9IHJ1bGVTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlQiA9IHJ1bGVTdWJwcm9vZk1ldGFzdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgICAgICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IHByZW1pc2VNZXRhc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlVmVyaWZpZXIudmVyaWZ5Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZUEsIG5vblRlcm1pbmFsTm9kZUIsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICAgICAgaWYgKG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBydWxlU3VicHJvb2ZOb2RlTWF0Y2hlcztcbiAgfVxuXG4gIG1hdGNoTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUsIHN1YnN0aXR1dGlvbnMpIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGVBID0gdGhpcy5tZXRhc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZUIgPSBtZXRhc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gcHJlbWlzZU1ldGFzdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVWZXJpZmllci52ZXJpZnlOb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlQSwgbm9uVGVybWluYWxOb2RlQiwgc3Vic3RpdHV0aW9ucyksXG4gICAgICAgICAgbWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gbm9uVGVybWluYWxOb2RlVmVyaWZpZWQ7IC8vL1xuXG4gICAgcmV0dXJuIG1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcztcbiAgfVxuXG4gIHRvSlNPTih0b2tlbnMpIHtcbiAgICBjb25zdCBtZXRhc3RhdGVtZW50U3RyaW5nID0gbm9kZUFzU3RyaW5nKHRoaXMubWV0YXN0YXRlbWVudE5vZGUsIHRva2VucyksXG4gICAgICAgICAgbWV0YXN0YXRlbWVudCA9IG1ldGFzdGF0ZW1lbnRTdHJpbmcsIC8vL1xuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICBtZXRhc3RhdGVtZW50XG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBjb25zdCB7IG1ldGFzdGF0ZW1lbnQgfSA9IGpzb24sXG4gICAgICAgICAgbWV0YXN0YXRlbWVudFN0cmluZyA9IG1ldGFzdGF0ZW1lbnQsICAvLy9cbiAgICAgICAgICBsZXhlciA9IGNvbnRleHQuZ2V0TGV4ZXIoKSxcbiAgICAgICAgICBwYXJzZXIgPSBjb250ZXh0LmdldFBhcnNlcigpLFxuICAgICAgICAgIG1ldGFzdGF0ZW1lbnROb2RlID0gbWV0YXN0YXRlbWVudE5vZGVGcm9tTWV0YXN0YXRlbWVudFN0cmluZyhtZXRhc3RhdGVtZW50U3RyaW5nLCBsZXhlciwgcGFyc2VyKSxcbiAgICAgICAgICBwcmVtaXNlID0gbmV3IFByZW1pc2UobWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgcmV0dXJuIHByZW1pc2U7XG4gIH1cblxuICBzdGF0aWMgZnJvbU1ldGFzdGF0ZW1lbnROb2RlKG1ldGFzdGF0ZW1lbnROb2RlKSB7XG4gICAgY29uc3QgcHJlbWlzZSA9IG5ldyBQcmVtaXNlKG1ldGFzdGF0ZW1lbnROb2RlKTtcblxuICAgIHJldHVybiBwcmVtaXNlO1xuICB9XG59XG4iLCJSZWFjdC5jcmVhdGVFbGVtZW50Il0sIm5hbWVzIjpbIlByZW1pc2UiLCJydWxlU3VicHJvb2ZBc3NlcnRpb25Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJydWxlU3VicHJvb2ZQcmVtaXNlTWV0YXN0YXRlbWVudFF1ZXJ5Iiwibm9kZXNRdWVyeSIsInN1YnByb29mU3VwcG9zaXRpb25TdGF0ZW1lbnROb2Rlc1F1ZXJ5Iiwic3VicHJvb2ZTdWJEZXJpdmF0aW9uTGFzdFN0YXRlbWVudE5vZGVRdWVyeSIsInJ1bGVTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2Rlc1F1ZXJ5IiwicnVsZVN1YnByb29mU3ViRGVyaXZhdGlvbkxhc3RNZXRhc3RhdGVtZW50UXVlcnkiLCJtZXRhc3RhdGVtZW50Tm9kZSIsImdldE1ldGFzdGF0ZW1lbnROb2RlIiwibWF0Y2hTdWJwcm9vZk5vZGUiLCJzdWJwcm9vZk5vZGUiLCJzdWJzdGl0dXRpb25zIiwic3VicHJvb2ZOb2RlTWF0Y2hlcyIsInN1YnByb29mQXNzZXJ0aW9uTm9kZSIsInN1YnByb29mU3VwcG9zaXRpb25TdGF0ZW1lbnROb2RlcyIsInN1YnByb29mU3ViRGVyaXZhdGlvbkxhc3RTdGF0ZW1lbnROb2RlIiwic3VicHJvb2ZTdGF0ZW1lbnROb2RlcyIsInJ1bGVTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlcyIsInN1YnByb29mU3RhdGVtZW50Tm9kZXNMZW5ndGgiLCJsZW5ndGgiLCJydWxlU3VicHJvb2ZBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZXNMZW5ndGgiLCJldmVyeSIsInJ1bGVTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlIiwiaW5kZXgiLCJzdWJwcm9vZlN0YXRlbWVudE5vZGUiLCJub25UZXJtaW5hbE5vZGVBIiwibm9uVGVybWluYWxOb2RlQiIsIm5vblRlcm1pbmFsTm9kZVZlcmlmaWVkIiwicHJlbWlzZVN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVZlcmlmaWVyIiwidmVyaWZ5Tm9uVGVybWluYWxOb2RlIiwibWF0Y2hTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGVNYXRjaGVzIiwibWF0Y2hSdWxlU3VicHJvb2ZOb2RlIiwicnVsZVN1YnByb29mTm9kZSIsInJ1bGVTdWJwcm9vZk5vZGVNYXRjaGVzIiwicnVsZVN1YnByb29mQXNzZXJ0aW9uTm9kZSIsInJ1bGVTdWJwcm9vZlByZW1pc2VNZXRhc3RhdGVtZW50IiwicnVsZVN1YnByb29mU3ViRGVyaXZhdGlvbkxhc3RNZXRhc3RhdGVtZW50IiwicnVsZVN1YnByb29mTWV0YXN0YXRlbWVudE5vZGVzIiwicnVsZVN1YnByb29mTWV0YXN0YXRlbWVudE5vZGVzTGVuZ3RoIiwicnVsZVN1YnByb29mTWV0YXN0YXRlbWVudE5vZGUiLCJwcmVtaXNlTWV0YXN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVZlcmlmaWVyIiwibWF0Y2hNZXRhc3RhdGVtZW50Tm9kZSIsIm1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyIsInRvSlNPTiIsInRva2VucyIsIm1ldGFzdGF0ZW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJtZXRhc3RhdGVtZW50IiwianNvbiIsImZyb21KU09OIiwiY29udGV4dCIsImxleGVyIiwiZ2V0TGV4ZXIiLCJwYXJzZXIiLCJnZXRQYXJzZXIiLCJtZXRhc3RhdGVtZW50Tm9kZUZyb21NZXRhc3RhdGVtZW50U3Ry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
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wcmVtaXNlLmpzIiwiPDxqc3gtY29uZmlnLXByYWdtYS5qcz4+Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBub2RlQXNTdHJpbmcgfSBmcm9tIFwiLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBub2RlUXVlcnksIG5vZGVzUXVlcnkgfSBmcm9tIFwiLi91dGlsaXRpZXMvcXVlcnlcIjtcbmltcG9ydCB7IHByZW1pc2VTdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVWZXJpZmllciB9IGZyb20gXCIuL3ZlcmlmaWVyL3N0YXRlbWVudEZvck1ldGF2YXJpYWJsZS9wcmVtaXNlXCI7XG5pbXBvcnQgeyBtZXRhc3RhdGVtZW50Tm9kZUZyb21NZXRhc3RhdGVtZW50U3RyaW5nIH0gZnJvbSBcIi4vdXRpbGl0aWVzL25vZGVcIjtcbmltcG9ydCB7IHByZW1pc2VNZXRhc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlVmVyaWZpZXIgfSBmcm9tIFwiLi92ZXJpZmllci9tZXRhc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlL3ByZW1pc2VcIjtcblxuY29uc3QgcnVsZVN1YnByb29mQXNzZXJ0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGFzdGF0ZW1lbnQvcnVsZVN1YnByb29mQXNzZXJ0aW9uIVwiKSxcbiAgICAgIHJ1bGVTdWJwcm9vZlByZW1pc2VNZXRhc3RhdGVtZW50UXVlcnkgPSBub2Rlc1F1ZXJ5KFwiL3J1bGVTdWJwcm9vZi9wcmVtaXNlL3VucXVhbGlmaWVkTWV0YXN0YXRlbWVudCEvbWV0YXN0YXRlbWVudCFcIiksXG4gICAgICBzdWJwcm9vZlN1cHBvc2l0aW9uU3RhdGVtZW50Tm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvc3VicHJvb2Yvc3VwcG9zaXRpb24vdW5xdWFsaWZpZWRTdGF0ZW1lbnQhL3N0YXRlbWVudCFcIiksXG4gICAgICBzdWJwcm9vZlN1YkRlcml2YXRpb25MYXN0U3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N1YnByb29mL3N1YkRlcml2YXRpb24vcXVhbGlmaWVkU3RhdGVtZW50fHVucXVhbGlmaWVkU3RhdGVtZW50Wy0xXS9zdGF0ZW1lbnQhXCIpLFxuICAgICAgcnVsZVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVzUXVlcnkgPSBub2Rlc1F1ZXJ5KFwiL3J1bGVTdWJwcm9vZkFzc2VydGlvbi9tZXRhc3RhdGVtZW50XCIpLFxuICAgICAgcnVsZVN1YnByb29mU3ViRGVyaXZhdGlvbkxhc3RNZXRhc3RhdGVtZW50UXVlcnkgPSBub2RlUXVlcnkoXCIvcnVsZVN1YnByb29mL3J1bGVTdWJEZXJpdmF0aW9uL3F1YWxpZmllZE1ldGFzdGF0ZW1lbnR8dW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Wy0xXS9tZXRhc3RhdGVtZW50IVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUHJlbWlzZSB7XG4gIGNvbnN0cnVjdG9yKG1ldGFzdGF0ZW1lbnROb2RlKSB7XG4gICAgdGhpcy5tZXRhc3RhdGVtZW50Tm9kZSA9IG1ldGFzdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgZ2V0TWV0YXN0YXRlbWVudE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YXN0YXRlbWVudE5vZGU7XG4gIH1cblxuICBtYXRjaFN1YnByb29mTm9kZShzdWJwcm9vZk5vZGUsIHN1YnN0aXR1dGlvbnMsIGZpbGVDb250ZXh0LCBzdGF0ZW1lbnRQcm9vZkNvbnRleHQpIHtcbiAgICBsZXQgc3VicHJvb2ZOb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3VicHJvb2ZBc3NlcnRpb25Ob2RlID0gcnVsZVN1YnByb29mQXNzZXJ0aW9uTm9kZVF1ZXJ5KHRoaXMubWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgaWYgKHN1YnByb29mQXNzZXJ0aW9uTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3VicHJvb2ZTdXBwb3NpdGlvblN0YXRlbWVudE5vZGVzID0gc3VicHJvb2ZTdXBwb3NpdGlvblN0YXRlbWVudE5vZGVzUXVlcnkoc3VicHJvb2ZOb2RlKSxcbiAgICAgICAgICAgIHN1YnByb29mU3ViRGVyaXZhdGlvbkxhc3RTdGF0ZW1lbnROb2RlID0gc3VicHJvb2ZTdWJEZXJpdmF0aW9uTGFzdFN0YXRlbWVudE5vZGVRdWVyeShzdWJwcm9vZk5vZGUpLFxuICAgICAgICAgICAgc3VicHJvb2ZTdGF0ZW1lbnROb2RlcyA9IFtcbiAgICAgICAgICAgICAgLi4uc3VicHJvb2ZTdXBwb3NpdGlvblN0YXRlbWVudE5vZGVzLFxuICAgICAgICAgICAgICBzdWJwcm9vZlN1YkRlcml2YXRpb25MYXN0U3RhdGVtZW50Tm9kZVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJ1bGVTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlcyA9IHJ1bGVTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2Rlc1F1ZXJ5KHN1YnByb29mQXNzZXJ0aW9uTm9kZSksXG4gICAgICAgICAgICBzdWJwcm9vZlN0YXRlbWVudE5vZGVzTGVuZ3RoID0gc3VicHJvb2ZTdGF0ZW1lbnROb2Rlcy5sZW5ndGgsXG4gICAgICAgICAgICBydWxlU3VicHJvb2ZBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZXNMZW5ndGggPSBydWxlU3VicHJvb2ZBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZXMubGVuZ3RoO1xuXG4gICAgICBpZiAoc3VicHJvb2ZTdGF0ZW1lbnROb2Rlc0xlbmd0aCA9PT0gcnVsZVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVzTGVuZ3RoKSB7XG4gICAgICAgIHN1YnByb29mTm9kZU1hdGNoZXMgPSBydWxlU3VicHJvb2ZBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZXMuZXZlcnkoKHJ1bGVTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN1YnByb29mU3RhdGVtZW50Tm9kZSA9IHN1YnByb29mU3RhdGVtZW50Tm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZUEgPSBydWxlU3VicHJvb2ZBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZUIgPSBzdWJwcm9vZlN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICAgICAgICAgIGZpbGVDb250ZXh0QSA9IGZpbGVDb250ZXh0LCAvLy9cbiAgICAgICAgICAgICAgICBwcm9vZkNvbnRleHRCID0gc3RhdGVtZW50UHJvb2ZDb250ZXh0LCAgLy8vXG4gICAgICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSBwcmVtaXNlU3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlVmVyaWZpZXIudmVyaWZ5Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZUEsIG5vblRlcm1pbmFsTm9kZUIsIHN1YnN0aXR1dGlvbnMsIGZpbGVDb250ZXh0QSwgcHJvb2ZDb250ZXh0Qik7XG5cbiAgICAgICAgICBpZiAobm9uVGVybWluYWxOb2RlVmVyaWZpZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnByb29mTm9kZU1hdGNoZXM7XG4gIH1cblxuICBtYXRjaFN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgZmlsZUNvbnRleHQsIHN0YXRlbWVudFByb29mQ29udGV4dCkge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZUEgPSB0aGlzLm1ldGFzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlQiA9IHN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBmaWxlQ29udGV4dEEgPSBmaWxlQ29udGV4dCwgLy8vXG4gICAgICAgICAgcHJvb2ZDb250ZXh0QiA9IHN0YXRlbWVudFByb29mQ29udGV4dCwgIC8vL1xuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gcHJlbWlzZVN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVZlcmlmaWVyLnZlcmlmeU5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5vZGVBLCBub25UZXJtaW5hbE5vZGVCLCBzdWJzdGl0dXRpb25zLCBmaWxlQ29udGV4dEEsIHByb29mQ29udGV4dEIpLFxuICAgICAgICAgIHN0YXRlbWVudE5vZGVNYXRjaGVzID0gbm9uVGVybWluYWxOb2RlVmVyaWZpZWQ7IC8vL1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudE5vZGVNYXRjaGVzO1xuICB9XG5cbiAgbWF0Y2hSdWxlU3VicHJvb2ZOb2RlKHJ1bGVTdWJwcm9vZk5vZGUsIHN1YnN0aXR1dGlvbnMsIGZpbGVDb250ZXh0LCBtZXRhc3RhdGVtZW50TWV0YXByb29mQ29udGV4dCkge1xuICAgIGxldCBydWxlU3VicHJvb2ZOb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgcnVsZVN1YnByb29mQXNzZXJ0aW9uTm9kZSA9IHJ1bGVTdWJwcm9vZkFzc2VydGlvbk5vZGVRdWVyeSh0aGlzLm1ldGFzdGF0ZW1lbnROb2RlKTtcblxuICAgIGlmIChydWxlU3VicHJvb2ZBc3NlcnRpb25Ob2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBydWxlU3VicHJvb2ZQcmVtaXNlTWV0YXN0YXRlbWVudCA9IHJ1bGVTdWJwcm9vZlByZW1pc2VNZXRhc3RhdGVtZW50UXVlcnkocnVsZVN1YnByb29mTm9kZSksXG4gICAgICAgICAgICBydWxlU3VicHJvb2ZTdWJEZXJpdmF0aW9uTGFzdE1ldGFzdGF0ZW1lbnQgPSBydWxlU3VicHJvb2ZTdWJEZXJpdmF0aW9uTGFzdE1ldGFzdGF0ZW1lbnRRdWVyeShydWxlU3VicHJvb2ZOb2RlKSxcbiAgICAgICAgICAgIHJ1bGVTdWJwcm9vZk1ldGFzdGF0ZW1lbnROb2RlcyA9IFtcbiAgICAgICAgICAgICAgLi4ucnVsZVN1YnByb29mUHJlbWlzZU1ldGFzdGF0ZW1lbnQsXG4gICAgICAgICAgICAgIHJ1bGVTdWJwcm9vZlN1YkRlcml2YXRpb25MYXN0TWV0YXN0YXRlbWVudFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJ1bGVTdWJwcm9vZk1ldGFzdGF0ZW1lbnROb2Rlc0xlbmd0aCA9IHJ1bGVTdWJwcm9vZk1ldGFzdGF0ZW1lbnROb2Rlcy5sZW5ndGgsXG4gICAgICAgICAgICBydWxlU3VicHJvb2ZBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZXMgPSBydWxlU3VicHJvb2ZBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZXNRdWVyeShydWxlU3VicHJvb2ZBc3NlcnRpb25Ob2RlKSxcbiAgICAgICAgICAgIHJ1bGVTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2Rlc0xlbmd0aCA9IHJ1bGVTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2Rlcy5sZW5ndGg7XG5cbiAgICAgIGlmIChydWxlU3VicHJvb2ZNZXRhc3RhdGVtZW50Tm9kZXNMZW5ndGggPT09IHJ1bGVTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2Rlc0xlbmd0aCkge1xuICAgICAgICBydWxlU3VicHJvb2ZOb2RlTWF0Y2hlcyA9IHJ1bGVTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2Rlcy5ldmVyeSgocnVsZVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgcnVsZVN1YnByb29mTWV0YXN0YXRlbWVudE5vZGUgPSBydWxlU3VicHJvb2ZNZXRhc3RhdGVtZW50Tm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZUEgPSBydWxlU3VicHJvb2ZBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZUIgPSBydWxlU3VicHJvb2ZNZXRhc3RhdGVtZW50Tm9kZSwgLy8vXG4gICAgICAgICAgICAgICAgZmlsZUNvbnRleHRBID0gZmlsZUNvbnRleHQsIC8vL1xuICAgICAgICAgICAgICAgIG1ldGFwcm9vZkNvbnRleHRCID0gbWV0YXN0YXRlbWVudE1ldGFwcm9vZkNvbnRleHQsICAvLy9cbiAgICAgICAgICAgICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IHByZW1pc2VNZXRhc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlVmVyaWZpZXIudmVyaWZ5Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZUEsIG5vblRlcm1pbmFsTm9kZUIsIHN1YnN0aXR1dGlvbnMsIGZpbGVDb250ZXh0QSwgbWV0YXByb29mQ29udGV4dEIpO1xuXG4gICAgICAgICAgaWYgKG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBydWxlU3VicHJvb2ZOb2RlTWF0Y2hlcztcbiAgfVxuXG4gIG1hdGNoTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUsIHN1YnN0aXR1dGlvbnMsIGZpbGVDb250ZXh0LCBtZXRhc3RhdGVtZW50TWV0YXByb29mQ29udGV4dCkge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZUEgPSB0aGlzLm1ldGFzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlQiA9IG1ldGFzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgZmlsZUNvbnRleHRBID0gZmlsZUNvbnRleHQsIC8vL1xuICAgICAgICAgIG1ldGFwcm9vZkNvbnRleHRCID0gbWV0YXN0YXRlbWVudE1ldGFwcm9vZkNvbnRleHQsICAvLy9cbiAgICAgICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IHByZW1pc2VNZXRhc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlVmVyaWZpZXIudmVyaWZ5Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZUEsIG5vblRlcm1pbmFsTm9kZUIsIHN1YnN0aXR1dGlvbnMsIGZpbGVDb250ZXh0QSwgbWV0YXByb29mQ29udGV4dEIpLFxuICAgICAgICAgIG1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkOyAvLy9cblxuICAgIHJldHVybiBtZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXM7XG4gIH1cblxuICB0b0pTT04odG9rZW5zKSB7XG4gICAgY29uc3QgbWV0YXN0YXRlbWVudFN0cmluZyA9IG5vZGVBc1N0cmluZyh0aGlzLm1ldGFzdGF0ZW1lbnROb2RlLCB0b2tlbnMpLFxuICAgICAgICAgIG1ldGFzdGF0ZW1lbnQgPSBtZXRhc3RhdGVtZW50U3RyaW5nLCAvLy9cbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgbWV0YXN0YXRlbWVudFxuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgY29uc3QgeyBtZXRhc3RhdGVtZW50IH0gPSBqc29uLFxuICAgICAgICAgIG1ldGFzdGF0ZW1lbnRTdHJpbmcgPSBtZXRhc3RhdGVtZW50LCAgLy8vXG4gICAgICAgICAgbGV4ZXIgPSBjb250ZXh0LmdldExleGVyKCksXG4gICAgICAgICAgcGFyc2VyID0gY29udGV4dC5nZXRQYXJzZXIoKSxcbiAgICAgICAgICBtZXRhc3RhdGVtZW50Tm9kZSA9IG1ldGFzdGF0ZW1lbnROb2RlRnJvbU1ldGFzdGF0ZW1lbnRTdHJpbmcobWV0YXN0YXRlbWVudFN0cmluZywgbGV4ZXIsIHBhcnNlciksXG4gICAgICAgICAgcHJlbWlzZSA9IG5ldyBQcmVtaXNlKG1ldGFzdGF0ZW1lbnROb2RlKTtcblxuICAgIHJldHVybiBwcmVtaXNlO1xuICB9XG5cbiAgc3RhdGljIGZyb21NZXRhc3RhdGVtZW50Tm9kZShtZXRhc3RhdGVtZW50Tm9kZSkge1xuICAgIGNvbnN0IHByZW1pc2UgPSBuZXcgUHJlbWlzZShtZXRhc3RhdGVtZW50Tm9kZSk7XG5cbiAgICByZXR1cm4gcHJlbWlzZTtcbiAgfVxufVxuIiwiUmVhY3QuY3JlYXRlRWxlbWVudCJdLCJuYW1lcyI6WyJQcmVtaXNlIiwicnVsZVN1YnByb29mQXNzZXJ0aW9uTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwicnVsZVN1YnByb29mUHJlbWlzZU1ldGFzdGF0ZW1lbnRRdWVyeSIsIm5vZGVzUXVlcnkiLCJzdWJwcm9vZlN1cHBvc2l0aW9uU3RhdGVtZW50Tm9kZXNRdWVyeSIsInN1YnByb29mU3ViRGVyaXZhdGlvbkxhc3RTdGF0ZW1lbnROb2RlUXVlcnkiLCJydWxlU3VicHJvb2ZBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZXNRdWVyeSIsInJ1bGVTdWJwcm9vZlN1YkRlcml2YXRpb25MYXN0TWV0YXN0YXRlbWVudFF1ZXJ5IiwibWV0YXN0YXRlbWVudE5vZGUiLCJnZXRNZXRhc3RhdGVtZW50Tm9kZSIsIm1hdGNoU3VicHJvb2ZOb2RlIiwic3VicHJvb2ZOb2RlIiwic3Vic3RpdHV0aW9ucyIsImZpbGVDb250ZXh0Iiwic3RhdGVtZW50UHJvb2ZDb250ZXh0Iiwic3VicHJvb2ZOb2RlTWF0Y2hlcyIsInN1YnByb29mQXNzZXJ0aW9uTm9kZSIsInN1YnByb29mU3VwcG9zaXRpb25TdGF0ZW1lbnROb2RlcyIsInN1YnByb29mU3ViRGVyaXZhdGlvbkxhc3RTdGF0ZW1lbnROb2RlIiwic3VicHJvb2ZTdGF0ZW1lbnROb2RlcyIsInJ1bGVTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlcyIsInN1YnByb29mU3RhdGVtZW50Tm9kZXNMZW5ndGgiLCJsZW5ndGgiLCJydWxlU3VicHJvb2ZBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZXNMZW5ndGgiLCJldmVyeSIsInJ1bGVTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlIiwiaW5kZXgiLCJzdWJwcm9vZlN0YXRlbWVudE5vZGUiLCJub25UZXJtaW5hbE5vZGVBIiwibm9uVGVybWluYWxOb2RlQiIsImZpbGVDb250ZXh0QSIsInByb29mQ29udGV4dEIiLCJub25UZXJtaW5hbE5vZGVWZXJpZmllZCIsInByZW1pc2VTdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVWZXJpZmllciIsInZlcmlmeU5vblRlcm1pbmFsTm9kZSIsIm1hdGNoU3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnROb2RlTWF0Y2hlcyIsIm1hdGNoUnVsZVN1YnByb29mTm9kZSIsInJ1bGVTdWJwcm9vZk5vZGUiLCJtZXRhc3RhdGVtZW50TWV0YXByb29mQ29udGV4dCIsInJ1bGVTdWJwcm9vZk5vZGVNYXRjaGVzIiwicnVsZVN1YnByb29mQXNzZXJ0aW9uTm9kZSIsInJ1bGVTdWJwcm9vZlByZW1pc2VNZXRhc3RhdGVtZW50IiwicnVsZVN1YnByb29mU3ViRGVyaXZhdGlvbkxhc3RNZXRhc3RhdGVtZW50IiwicnVsZVN1YnByb29mTWV0YXN0YXRlbWVudE5vZGVzIiwicnVsZVN1YnByb29mTWV0YXN0YXRlbWVudE5vZGVzTGVuZ3RoIiwicnVsZVN1YnByb29mTWV0YXN0YXRlbWVudE5vZGUiLCJtZXRhcHJvb2ZDb250ZXh0QiIsInByZW1pc2VNZXRhc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlVmVyaWZpZXIiLCJtYXRjaE1ldGFzdGF0ZW1lbnROb2RlIiwibWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzIiwidG9KU09OIiwidG9rZW5zIiwibWV0YXN0YXRlbWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyIsIm1ldGFzdGF0ZW1lbnQiLCJqc29uIiwiZnJvbUpTT04iLCJjb250ZXh0IiwibGV4ZXIiLCJnZXRMZXhlciIsInBhcnNlciIsImdldFBhcnNlciIsIm1ldGFzdGF0ZW1lbnROb2RlRnJvbU1ldGFzdGF0ZW1lbnRTdHJpbmciLCJwcmVtaXNlIiwiZnJvbU1ldGFzdGF0ZW1lbnROb2RlIl0sIm1hcHBpbmdzIjoiQUFB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