occam-furtle 2.0.291 → 2.0.293

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 (71) hide show
  1. package/lib/context/file.js +5 -6
  2. package/lib/element/returnBlock.js +198 -0
  3. package/lib/node/assignment/array.js +2 -2
  4. package/lib/node/assignment/object.js +2 -2
  5. package/lib/node/assignment/variable.js +2 -2
  6. package/lib/node/assignment.js +9 -4
  7. package/lib/node/assignments/variable.js +4 -4
  8. package/lib/node/assignments.js +9 -4
  9. package/lib/node/comparison.js +9 -4
  10. package/lib/node/declaration.js +9 -4
  11. package/lib/node/error.js +107 -0
  12. package/lib/node/every.js +9 -4
  13. package/lib/node/expression.js +9 -4
  14. package/lib/node/expressions.js +9 -4
  15. package/lib/node/label.js +9 -4
  16. package/lib/node/parameter.js +9 -4
  17. package/lib/node/parameters.js +9 -4
  18. package/lib/node/procedure.js +9 -4
  19. package/lib/node/procedureCall.js +9 -4
  20. package/lib/node/query.js +9 -4
  21. package/lib/node/reduce.js +9 -4
  22. package/lib/node/reference.js +9 -4
  23. package/lib/node/returnBlock.js +9 -4
  24. package/lib/node/some.js +107 -0
  25. package/lib/node/statement.js +9 -4
  26. package/lib/node/step.js +9 -4
  27. package/lib/node/ternary.js +9 -4
  28. package/lib/node/variable.js +9 -4
  29. package/lib/nonTerminalNodeMap.js +2 -3
  30. package/lib/preamble.js +3 -3
  31. package/lib/ruleNames.js +1 -5
  32. package/lib/utilities/furtle.js +31 -0
  33. package/lib/utilities/lexers.js +55 -0
  34. package/lib/utilities/parsers.js +74 -0
  35. package/package.json +6 -4
  36. package/src/context/file.js +1 -6
  37. package/src/element/{block/return.js → returnBlock.js} +5 -5
  38. package/src/node/assignment/array.js +1 -1
  39. package/src/node/assignment/object.js +1 -1
  40. package/src/node/assignment/variable.js +1 -1
  41. package/src/node/assignment.js +1 -1
  42. package/src/node/assignments/variable.js +3 -3
  43. package/src/node/assignments.js +1 -1
  44. package/src/node/comparison.js +1 -1
  45. package/src/node/declaration.js +1 -1
  46. package/src/node/error.js +7 -0
  47. package/src/node/every.js +1 -1
  48. package/src/node/expression.js +1 -1
  49. package/src/node/expressions.js +1 -1
  50. package/src/node/label.js +1 -1
  51. package/src/node/parameter.js +1 -1
  52. package/src/node/parameters.js +1 -1
  53. package/src/node/procedure.js +1 -1
  54. package/src/node/procedureCall.js +1 -1
  55. package/src/node/query.js +1 -1
  56. package/src/node/reduce.js +1 -1
  57. package/src/node/reference.js +1 -1
  58. package/src/node/returnBlock.js +1 -1
  59. package/src/node/some.js +7 -0
  60. package/src/node/statement.js +1 -1
  61. package/src/node/step.js +1 -1
  62. package/src/node/ternary.js +1 -1
  63. package/src/node/variable.js +1 -1
  64. package/src/nonTerminalNodeMap.js +0 -3
  65. package/src/preamble.js +1 -1
  66. package/src/ruleNames.js +0 -1
  67. package/src/utilities/furtle.js +11 -0
  68. package/src/utilities/lexers.js +44 -0
  69. package/src/utilities/parsers.js +70 -0
  70. package/test/main.js +1 -1
  71. package/lib/element/block/return.js +0 -198
@@ -1,198 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
9
- }
10
- });
11
- var _elements = /*#__PURE__*/ _interop_require_wildcard(require("../../elements"));
12
- var _exception = /*#__PURE__*/ _interop_require_default(require("../../exception"));
13
- var _block = /*#__PURE__*/ _interop_require_default(require("../../context/block"));
14
- var _query = require("../../utilities/query");
15
- function _class_call_check(instance, Constructor) {
16
- if (!(instance instanceof Constructor)) {
17
- throw new TypeError("Cannot call a class as a function");
18
- }
19
- }
20
- function _defineProperties(target, props) {
21
- for(var i = 0; i < props.length; i++){
22
- var descriptor = props[i];
23
- descriptor.enumerable = descriptor.enumerable || false;
24
- descriptor.configurable = true;
25
- if ("value" in descriptor) descriptor.writable = true;
26
- Object.defineProperty(target, descriptor.key, descriptor);
27
- }
28
- }
29
- function _create_class(Constructor, protoProps, staticProps) {
30
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
31
- if (staticProps) _defineProperties(Constructor, staticProps);
32
- return Constructor;
33
- }
34
- function _define_property(obj, key, value) {
35
- if (key in obj) {
36
- Object.defineProperty(obj, key, {
37
- value: value,
38
- enumerable: true,
39
- configurable: true,
40
- writable: true
41
- });
42
- } else {
43
- obj[key] = value;
44
- }
45
- return obj;
46
- }
47
- function _interop_require_default(obj) {
48
- return obj && obj.__esModule ? obj : {
49
- default: obj
50
- };
51
- }
52
- function _getRequireWildcardCache(nodeInterop) {
53
- if (typeof WeakMap !== "function") return null;
54
- var cacheBabelInterop = new WeakMap();
55
- var cacheNodeInterop = new WeakMap();
56
- return (_getRequireWildcardCache = function(nodeInterop) {
57
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
58
- })(nodeInterop);
59
- }
60
- function _interop_require_wildcard(obj, nodeInterop) {
61
- if (!nodeInterop && obj && obj.__esModule) {
62
- return obj;
63
- }
64
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
65
- return {
66
- default: obj
67
- };
68
- }
69
- var cache = _getRequireWildcardCache(nodeInterop);
70
- if (cache && cache.has(obj)) {
71
- return cache.get(obj);
72
- }
73
- var newObj = {
74
- __proto__: null
75
- };
76
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
77
- for(var key in obj){
78
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
79
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
80
- if (desc && (desc.get || desc.set)) {
81
- Object.defineProperty(newObj, key, desc);
82
- } else {
83
- newObj[key] = obj[key];
84
- }
85
- }
86
- }
87
- newObj.default = obj;
88
- if (cache) {
89
- cache.set(obj, newObj);
90
- }
91
- return newObj;
92
- }
93
- var _ReturnBlock;
94
- var stepNodesQuery = (0, _query.nodesQuery)("/returnBlock/step"), nonsenseNodesQuery = (0, _query.nodesQuery)("/returnBlock/nonsense"), expressionReturnBlockNodeQuery = (0, _query.nodeQuery)("/expression/returnBlock"), anonymousProcedureReturnBlockNodeQuery = (0, _query.nodeQuery)("/anonymousProcedure/returnBlock"), procedureDeclarationReturnBlockNodeQuery = (0, _query.nodeQuery)("/procedureDeclaration/returnBlock");
95
- var _default = (0, _elements.define)((_ReturnBlock = /*#__PURE__*/ function() {
96
- function ReturnBlock(string, steps, nonsensical, returnStatement) {
97
- _class_call_check(this, ReturnBlock);
98
- this.string = string;
99
- this.steps = steps;
100
- this.nonsensical = nonsensical;
101
- this.returnStatement = returnStatement;
102
- }
103
- _create_class(ReturnBlock, [
104
- {
105
- key: "getString",
106
- value: function getString() {
107
- return this.string;
108
- }
109
- },
110
- {
111
- key: "getSteps",
112
- value: function getSteps() {
113
- return this.steps;
114
- }
115
- },
116
- {
117
- key: "isNonsensical",
118
- value: function isNonsensical() {
119
- return this.nonsensical;
120
- }
121
- },
122
- {
123
- key: "getReturnStatement",
124
- value: function getReturnStatement() {
125
- return this.returnStatement;
126
- }
127
- },
128
- {
129
- key: "evaluate",
130
- value: function evaluate(variables, context) {
131
- if (context === undefined) {
132
- context = variables; ///
133
- variables = [];
134
- }
135
- if (this.nonsensical) {
136
- var message = "The return block is nonsensical.", exception = _exception.default.fromMessage(message);
137
- throw exception;
138
- }
139
- var blockContext = _block.default.fromVariables(variables, context);
140
- context = blockContext; ///
141
- this.steps.forEach(function(step) {
142
- step.evaluate(context);
143
- });
144
- var expression = this.returnStatement.evaluate(context);
145
- return expression;
146
- }
147
- }
148
- ], [
149
- {
150
- key: "fromExpressionNode",
151
- value: function fromExpressionNode(expressionNode, context) {
152
- var returnBlock = null;
153
- var expressionReturnBlockNode = expressionReturnBlockNodeQuery(expressionNode);
154
- if (expressionReturnBlockNode !== null) {
155
- var returnBlockNode = expressionReturnBlockNode; ///
156
- returnBlock = returnBlockFromReturnBlockNode(returnBlockNode, context);
157
- }
158
- return returnBlock;
159
- }
160
- },
161
- {
162
- key: "fromAnonymousProcedureNode",
163
- value: function fromAnonymousProcedureNode(anonymousProcedureNode, context) {
164
- var anonymousProcedureReturnBlockNode = anonymousProcedureReturnBlockNodeQuery(anonymousProcedureNode), returnBlockNode = anonymousProcedureReturnBlockNode, returnBlock = returnBlockFromReturnBlockNode(returnBlockNode, context);
165
- return returnBlock;
166
- }
167
- },
168
- {
169
- key: "fromProcedureDeclarationNode",
170
- value: function fromProcedureDeclarationNode(procedureDeclarationNode, context) {
171
- var procedureDeclarationReturnBlockNode = procedureDeclarationReturnBlockNodeQuery(procedureDeclarationNode), returnBlockNode = procedureDeclarationReturnBlockNode, returnBlock = returnBlockFromReturnBlockNode(returnBlockNode, context);
172
- return returnBlock;
173
- }
174
- }
175
- ]);
176
- return ReturnBlock;
177
- }(), _define_property(_ReturnBlock, "name", "ReturnBlock"), _ReturnBlock));
178
- function stringFromReturnStatement(returnStatement, context) {
179
- var returnStatementString = returnStatement.getString(), string = "{ ... ".concat(returnStatementString, " }");
180
- return string;
181
- }
182
- function stepsFromReturnBlockNode(returnBlockNode, context) {
183
- var Step = _elements.default.Step, stepNodes = stepNodesQuery(returnBlockNode), steps = stepNodes.map(function(stepNode) {
184
- var step = Step.fromStepNode(stepNode, context);
185
- return step;
186
- });
187
- return steps;
188
- }
189
- function returnBlockFromReturnBlockNode(returnBlockNode, context) {
190
- var ReturnBlock = _elements.default.ReturnBlock, ReturnStatement = _elements.default.ReturnStatement, returnStatement = ReturnStatement.fromReturnBlockNode(returnBlockNode, context), nonsensical = nonsensicalFromReturnBlockNode(returnBlockNode, context), steps = stepsFromReturnBlockNode(returnBlockNode, context), string = stringFromReturnStatement(returnStatement, context), returnBlock = new ReturnBlock(string, steps, nonsensical, returnStatement);
191
- return returnBlock;
192
- }
193
- function nonsensicalFromReturnBlockNode(returnBlockNode, context) {
194
- var nonsenseNodes = nonsenseNodesQuery(returnBlockNode), nonsenseNodesLength = nonsenseNodes.length, nonsensical = nonsenseNodesLength > 0;
195
- return nonsensical;
196
- }
197
-
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Jsb2NrL3JldHVybi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tIFwiLi4vLi4vZXhjZXB0aW9uXCI7XG5pbXBvcnQgQmxvY2tDb250ZXh0IGZyb20gXCIuLi8uLi9jb250ZXh0L2Jsb2NrXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5LCBub2Rlc1F1ZXJ5IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCBzdGVwTm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvcmV0dXJuQmxvY2svc3RlcFwiKSxcbiAgICAgIG5vbnNlbnNlTm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvcmV0dXJuQmxvY2svbm9uc2Vuc2VcIiksXG4gICAgICBleHByZXNzaW9uUmV0dXJuQmxvY2tOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvZXhwcmVzc2lvbi9yZXR1cm5CbG9ja1wiKSxcbiAgICAgIGFub255bW91c1Byb2NlZHVyZVJldHVybkJsb2NrTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2Fub255bW91c1Byb2NlZHVyZS9yZXR1cm5CbG9ja1wiKSxcbiAgICAgIHByb2NlZHVyZURlY2xhcmF0aW9uUmV0dXJuQmxvY2tOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvcHJvY2VkdXJlRGVjbGFyYXRpb24vcmV0dXJuQmxvY2tcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBSZXR1cm5CbG9jayB7XG4gIGNvbnN0cnVjdG9yKHN0cmluZywgc3RlcHMsIG5vbnNlbnNpY2FsLCByZXR1cm5TdGF0ZW1lbnQpIHtcbiAgICB0aGlzLnN0cmluZyA9IHN0cmluZztcbiAgICB0aGlzLnN0ZXBzID0gc3RlcHM7XG4gICAgdGhpcy5ub25zZW5zaWNhbCA9IG5vbnNlbnNpY2FsO1xuICAgIHRoaXMucmV0dXJuU3RhdGVtZW50ID0gcmV0dXJuU3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0U3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnN0cmluZztcbiAgfVxuXG4gIGdldFN0ZXBzKCkge1xuICAgIHJldHVybiB0aGlzLnN0ZXBzO1xuICB9XG5cbiAgaXNOb25zZW5zaWNhbCgpIHtcbiAgICByZXR1cm4gdGhpcy5ub25zZW5zaWNhbDtcbiAgfVxuXG4gIGdldFJldHVyblN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5yZXR1cm5TdGF0ZW1lbnQ7XG4gIH1cblxuICBldmFsdWF0ZSh2YXJpYWJsZXMsIGNvbnRleHQpIHtcbiAgICBpZiAoY29udGV4dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb250ZXh0ID0gdmFyaWFibGVzOyAgLy8vXG5cbiAgICAgIHZhcmlhYmxlcyA9IFtdO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm5vbnNlbnNpY2FsKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYFRoZSByZXR1cm4gYmxvY2sgaXMgbm9uc2Vuc2ljYWwuYCxcbiAgICAgICAgICAgIGV4Y2VwdGlvbiA9IEV4Y2VwdGlvbi5mcm9tTWVzc2FnZShtZXNzYWdlKTtcblxuICAgICAgdGhyb3cgZXhjZXB0aW9uO1xuICAgIH1cblxuICAgIGNvbnN0IGJsb2NrQ29udGV4dCA9IEJsb2NrQ29udGV4dC5mcm9tVmFyaWFibGVzKHZhcmlhYmxlcywgY29udGV4dCk7XG5cbiAgICBjb250ZXh0ID0gYmxvY2tDb250ZXh0OyAvLy9cblxuICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgc3RlcC5ldmFsdWF0ZShjb250ZXh0KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGV4cHJlc3Npb24gPSB0aGlzLnJldHVyblN0YXRlbWVudC5ldmFsdWF0ZShjb250ZXh0KTtcblxuICAgIHJldHVybiBleHByZXNzaW9uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlJldHVybkJsb2NrXCI7XG5cbiAgc3RhdGljIGZyb21FeHByZXNzaW9uTm9kZShleHByZXNzaW9uTm9kZSwgY29udGV4dCkge1xuICAgIGxldCByZXR1cm5CbG9jayA9IG51bGw7XG5cbiAgICBjb25zdCBleHByZXNzaW9uUmV0dXJuQmxvY2tOb2RlID0gZXhwcmVzc2lvblJldHVybkJsb2NrTm9kZVF1ZXJ5KGV4cHJlc3Npb25Ob2RlKTtcblxuICAgIGlmIChleHByZXNzaW9uUmV0dXJuQmxvY2tOb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCByZXR1cm5CbG9ja05vZGUgPSBleHByZXNzaW9uUmV0dXJuQmxvY2tOb2RlOyAgLy8vXG5cbiAgICAgIHJldHVybkJsb2NrID0gcmV0dXJuQmxvY2tGcm9tUmV0dXJuQmxvY2tOb2RlKHJldHVybkJsb2NrTm9kZSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldHVybkJsb2NrO1xuICB9XG5cbiAgc3RhdGljIGZyb21Bbm9ueW1vdXNQcm9jZWR1cmVOb2RlKGFub255bW91c1Byb2NlZHVyZU5vZGUsIGNvbnRleHQpIHtcbiAgICBjb25zdCBhbm9ueW1vdXNQcm9jZWR1cmVSZXR1cm5CbG9ja05vZGUgPSBhbm9ueW1vdXNQcm9jZWR1cmVSZXR1cm5CbG9ja05vZGVRdWVyeShhbm9ueW1vdXNQcm9jZWR1cmVOb2RlKSxcbiAgICAgICAgICByZXR1cm5CbG9ja05vZGUgPSBhbm9ueW1vdXNQcm9jZWR1cmVSZXR1cm5CbG9ja05vZGUsICAvLy9cbiAgICAgICAgICByZXR1cm5CbG9jayA9IHJldHVybkJsb2NrRnJvbVJldHVybkJsb2NrTm9kZShyZXR1cm5CbG9ja05vZGUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHJldHVybkJsb2NrO1xuICB9XG5cbiAgc3RhdGljIGZyb21Qcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUocHJvY2VkdXJlRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KSB7XG4gICAgY29uc3QgcHJvY2VkdXJlRGVjbGFyYXRpb25SZXR1cm5CbG9ja05vZGUgPSBwcm9jZWR1cmVEZWNsYXJhdGlvblJldHVybkJsb2NrTm9kZVF1ZXJ5KHByb2NlZHVyZURlY2xhcmF0aW9uTm9kZSksXG4gICAgICAgICAgcmV0dXJuQmxvY2tOb2RlID0gcHJvY2VkdXJlRGVjbGFyYXRpb25SZXR1cm5CbG9ja05vZGUsICAvLy9cbiAgICAgICAgICByZXR1cm5CbG9jayA9IHJldHVybkJsb2NrRnJvbVJldHVybkJsb2NrTm9kZShyZXR1cm5CbG9ja05vZGUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHJldHVybkJsb2NrO1xuICB9XG59KTtcblxuZnVuY3Rpb24gc3RyaW5nRnJvbVJldHVyblN0YXRlbWVudChyZXR1cm5TdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgY29uc3QgcmV0dXJuU3RhdGVtZW50U3RyaW5nID0gcmV0dXJuU3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICBzdHJpbmcgPSBgeyAuLi4gJHtyZXR1cm5TdGF0ZW1lbnRTdHJpbmd9IH1gO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIHN0ZXBzRnJvbVJldHVybkJsb2NrTm9kZShyZXR1cm5CbG9ja05vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBTdGVwIH0gPSBlbGVtZW50cyxcbiAgICAgICAgc3RlcE5vZGVzID0gc3RlcE5vZGVzUXVlcnkocmV0dXJuQmxvY2tOb2RlKSxcbiAgICAgICAgc3RlcHMgPSBzdGVwTm9kZXMubWFwKChzdGVwTm9kZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0ZXAgPSBTdGVwLmZyb21TdGVwTm9kZShzdGVwTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gc3RlcDtcbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIHN0ZXBzO1xufVxuXG5mdW5jdGlvbiByZXR1cm5CbG9ja0Zyb21SZXR1cm5CbG9ja05vZGUocmV0dXJuQmxvY2tOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgUmV0dXJuQmxvY2ssIFJldHVyblN0YXRlbWVudCB9ID0gZWxlbWVudHMsXG4gICAgICAgIHJldHVyblN0YXRlbWVudCA9IFJldHVyblN0YXRlbWVudC5mcm9tUmV0dXJuQmxvY2tOb2RlKHJldHVybkJsb2NrTm9kZSwgY29udGV4dCksXG4gICAgICAgIG5vbnNlbnNpY2FsID0gbm9uc2Vuc2ljYWxGcm9tUmV0dXJuQmxvY2tOb2RlKHJldHVybkJsb2NrTm9kZSwgY29udGV4dCksXG4gICAgICAgIHN0ZXBzID0gc3RlcHNGcm9tUmV0dXJuQmxvY2tOb2RlKHJldHVybkJsb2NrTm9kZSwgY29udGV4dCksXG4gICAgICAgIHN0cmluZyA9IHN0cmluZ0Zyb21SZXR1cm5TdGF0ZW1lbnQocmV0dXJuU3RhdGVtZW50LCBjb250ZXh0KSxcbiAgICAgICAgcmV0dXJuQmxvY2sgPSBuZXcgUmV0dXJuQmxvY2soc3RyaW5nLCBzdGVwcywgbm9uc2Vuc2ljYWwsIHJldHVyblN0YXRlbWVudCk7XG5cbiAgcmV0dXJuIHJldHVybkJsb2NrO1xufVxuXG5mdW5jdGlvbiBub25zZW5zaWNhbEZyb21SZXR1cm5CbG9ja05vZGUocmV0dXJuQmxvY2tOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IG5vbnNlbnNlTm9kZXMgPSBub25zZW5zZU5vZGVzUXVlcnkocmV0dXJuQmxvY2tOb2RlKSxcbiAgICAgICAgbm9uc2Vuc2VOb2Rlc0xlbmd0aCA9IG5vbnNlbnNlTm9kZXMubGVuZ3RoLFxuICAgICAgICBub25zZW5zaWNhbCA9IChub25zZW5zZU5vZGVzTGVuZ3RoID4gMCk7XG5cbiAgcmV0dXJuIG5vbnNlbnNpY2FsO1xufVxuIl0sIm5hbWVzIjpbInN0ZXBOb2Rlc1F1ZXJ5Iiwibm9kZXNRdWVyeSIsIm5vbnNlbnNlTm9kZXNRdWVyeSIsImV4cHJlc3Npb25SZXR1cm5CbG9ja05vZGVRdWVyeSIsIm5vZGVRdWVyeSIsImFub255bW91c1Byb2NlZHVyZVJldHVybkJsb2NrTm9kZVF1ZXJ5IiwicHJvY2VkdXJlRGVjbGFyYXRpb25SZXR1cm5CbG9ja05vZGVRdWVyeSIsImRlZmluZSIsIlJldHVybkJsb2NrIiwic3RyaW5nIiwic3RlcHMiLCJub25zZW5zaWNhbCIsInJldHVyblN0YXRlbWVudCIsImdldFN0cmluZyIsImdldFN0ZXBzIiwiaXNOb25zZW5zaWNhbCIsImdldFJldHVyblN0YXRlbWVudCIsImV2YWx1YXRlIiwidmFyaWFibGVzIiwiY29udGV4dCIsInVuZGVmaW5lZCIsIm1lc3NhZ2UiLCJleGNlcHRpb24iLCJFeGNlcHRpb24iLCJmcm9tTWVzc2FnZSIsImJsb2NrQ29udGV4dCIsIkJsb2NrQ29udGV4dCIsImZyb21WYXJpYWJsZXMiLCJmb3JFYWNoIiwic3RlcCIsImV4cHJlc3Npb24iLCJmcm9tRXhwcmVzc2lvbk5vZGUiLCJleHByZXNzaW9uTm9kZSIsInJldHVybkJsb2NrIiwiZXhwcmVzc2lvblJldHVybkJsb2NrTm9kZSIsInJldHVybkJsb2NrTm9kZSIsInJldHVybkJsb2NrRnJvbVJldHVybkJsb2NrTm9kZSIsImZyb21Bbm9ueW1vdXNQcm9jZWR1cmVOb2RlIiwiYW5vbnltb3VzUHJvY2VkdXJlTm9kZSIsImFub255bW91c1Byb2NlZHVyZVJldHVybkJsb2NrTm9kZSIsImZyb21Qcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUiLCJwcm9jZWR1cmVEZWNsYXJhdGlvbk5vZGUiLCJwcm9jZWR1cmVEZWNsYXJhdGlvblJldHVybkJsb2NrTm9kZSIsIm5hbWUiLCJzdHJpbmdGcm9tUmV0dXJuU3RhdGVtZW50IiwicmV0dXJuU3RhdGVtZW50U3RyaW5nIiwic3RlcHNGcm9tUmV0dXJuQmxvY2tOb2RlIiwiU3RlcCIsImVsZW1lbnRzIiwic3RlcE5vZGVzIiwibWFwIiwic3RlcE5vZGUiLCJmcm9tU3RlcE5vZGUiLCJSZXR1cm5TdGF0ZW1lbnQiLCJmcm9tUmV0dXJuQmxvY2tOb2RlIiwibm9uc2Vuc2ljYWxGcm9tUmV0dXJuQmxvY2tOb2RlIiwibm9uc2Vuc2VO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