occam-verify-cli 1.0.696 → 1.0.702

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 (91) hide show
  1. package/lib/action/verify.js +3 -2
  2. package/lib/context/ephemeral.js +14 -5
  3. package/lib/context.js +9 -1
  4. package/lib/element/assertion/contained.js +6 -9
  5. package/lib/element/assertion/defined.js +6 -8
  6. package/lib/element/assertion/property.js +11 -5
  7. package/lib/element/assertion/satisfies.js +9 -3
  8. package/lib/element/assertion/subproof.js +4 -5
  9. package/lib/element/assertion/type.js +12 -7
  10. package/lib/element/assumption.js +22 -4
  11. package/lib/element/combinator.js +6 -6
  12. package/lib/element/conclusion.js +5 -5
  13. package/lib/element/constructor.js +9 -4
  14. package/lib/element/deduction.js +5 -5
  15. package/lib/element/equality.js +26 -1
  16. package/lib/element/frame.js +14 -7
  17. package/lib/element/hypothesis.js +13 -6
  18. package/lib/element/judgement.js +69 -3
  19. package/lib/element/label.js +27 -22
  20. package/lib/element/metaType.js +1 -1
  21. package/lib/element/metavariable.js +4 -4
  22. package/lib/element/parameter.js +7 -7
  23. package/lib/element/procedureCall.js +7 -7
  24. package/lib/element/procedureReference.js +7 -6
  25. package/lib/element/proofAssertion/premise.js +6 -7
  26. package/lib/element/proofAssertion/supposition.js +6 -7
  27. package/lib/element/property.js +12 -4
  28. package/lib/element/propertyRelation.js +28 -6
  29. package/lib/element/reference.js +10 -6
  30. package/lib/element/rule.js +26 -16
  31. package/lib/element/signature.js +59 -19
  32. package/lib/element/statement.js +4 -2
  33. package/lib/element/substitution/frame.js +16 -7
  34. package/lib/element/substitution/reference.js +17 -8
  35. package/lib/element/substitution/statement.js +17 -8
  36. package/lib/element/substitution/term.js +17 -8
  37. package/lib/element/term.js +4 -2
  38. package/lib/element/topLevelAssertion.js +28 -17
  39. package/lib/element/topLevelMetaAssertion.js +7 -8
  40. package/lib/element/type.js +16 -9
  41. package/lib/element/typePrefix.js +13 -6
  42. package/lib/element/variable.js +8 -11
  43. package/lib/process/instantiate.js +75 -11
  44. package/lib/utilities/element.js +101 -7
  45. package/lib/utilities/json.js +15 -1
  46. package/package.json +1 -1
  47. package/src/action/verify.js +3 -1
  48. package/src/context/ephemeral.js +19 -4
  49. package/src/context.js +15 -1
  50. package/src/element/assertion/contained.js +8 -25
  51. package/src/element/assertion/defined.js +7 -14
  52. package/src/element/assertion/property.js +16 -5
  53. package/src/element/assertion/satisfies.js +14 -3
  54. package/src/element/assertion/subproof.js +3 -5
  55. package/src/element/assertion/type.js +16 -8
  56. package/src/element/assumption.js +37 -3
  57. package/src/element/combinator.js +6 -13
  58. package/src/element/conclusion.js +5 -7
  59. package/src/element/constructor.js +13 -6
  60. package/src/element/deduction.js +7 -9
  61. package/src/element/equality.js +43 -0
  62. package/src/element/frame.js +21 -12
  63. package/src/element/hypothesis.js +19 -7
  64. package/src/element/judgement.js +45 -0
  65. package/src/element/label.js +35 -26
  66. package/src/element/metaType.js +1 -1
  67. package/src/element/metavariable.js +3 -6
  68. package/src/element/parameter.js +9 -12
  69. package/src/element/procedureCall.js +9 -12
  70. package/src/element/procedureReference.js +8 -8
  71. package/src/element/proofAssertion/premise.js +8 -14
  72. package/src/element/proofAssertion/supposition.js +6 -12
  73. package/src/element/property.js +20 -6
  74. package/src/element/propertyRelation.js +43 -6
  75. package/src/element/reference.js +16 -9
  76. package/src/element/rule.js +41 -24
  77. package/src/element/signature.js +87 -22
  78. package/src/element/statement.js +5 -2
  79. package/src/element/substitution/frame.js +26 -9
  80. package/src/element/substitution/reference.js +29 -11
  81. package/src/element/substitution/statement.js +27 -10
  82. package/src/element/substitution/term.js +27 -10
  83. package/src/element/term.js +5 -2
  84. package/src/element/topLevelAssertion.js +44 -25
  85. package/src/element/topLevelMetaAssertion.js +7 -8
  86. package/src/element/type.js +30 -19
  87. package/src/element/typePrefix.js +19 -7
  88. package/src/element/variable.js +9 -22
  89. package/src/process/instantiate.js +60 -10
  90. package/src/utilities/element.js +105 -10
  91. package/src/utilities/json.js +13 -1
@@ -12,6 +12,7 @@ const _occamlanguages = require("occam-languages");
12
12
  const _elements = /*#__PURE__*/ _interop_require_wildcard(require("../elements"));
13
13
  const _context = require("../utilities/context");
14
14
  const _instantiate = require("../process/instantiate");
15
+ const _element = require("../utilities/element");
15
16
  const _json = require("../utilities/json");
16
17
  function _getRequireWildcardCache(nodeInterop) {
17
18
  if (typeof WeakMap !== "function") return null;
@@ -55,11 +56,10 @@ function _interop_require_wildcard(obj, nodeInterop) {
55
56
  return newObj;
56
57
  }
57
58
  const _default = (0, _elements.define)(class Variable extends _occamlanguages.Element {
58
- constructor(context, string, node, type, identifier, propertyRelations){
59
+ constructor(context, string, node, type, identifier){
59
60
  super(context, string, node);
60
61
  this.type = type;
61
62
  this.identifier = identifier;
62
- this.propertyRelations = propertyRelations;
63
63
  }
64
64
  getIdentifier() {
65
65
  return this.identifier;
@@ -67,9 +67,6 @@ const _default = (0, _elements.define)(class Variable extends _occamlanguages.El
67
67
  getType() {
68
68
  return this.type;
69
69
  }
70
- getPropertyRelations() {
71
- return this.propertyRelations;
72
- }
73
70
  setType(type) {
74
71
  this.type = type;
75
72
  }
@@ -167,22 +164,22 @@ const _default = (0, _elements.define)(class Variable extends _occamlanguages.El
167
164
  return termUnifies;
168
165
  }
169
166
  toJSON() {
170
- const typeJSON = (0, _json.typeToTypeJSON)(this.type), identifierJSON = (0, _json.identifierToIdentifierJSON)(this.identifier), propertyRelationsJSON = (0, _json.propertyRelationsToPropertyRelationsJSON)(this.propertyRelations), type = typeJSON, identifier = identifierJSON, propertyRelations = propertyRelationsJSON, string = this.getString(), json = {
167
+ const typeJSON = (0, _json.typeToTypeJSON)(this.type), type = typeJSON, string = this.getString(), json = {
171
168
  string,
172
- type,
173
- identifier,
174
- propertyRelations
169
+ type
175
170
  };
176
171
  return json;
177
172
  }
178
173
  static name = "Variable";
179
174
  static fromJSON(json, context) {
180
175
  const variable = (0, _context.literally)((context)=>{
181
- const { string } = json, variableNode = (0, _instantiate.instantiateVariable)(string, context), node = variableNode, type = (0, _json.typeFromJSON)(json, context), identifier = (0, _json.identifierFromJSON)(json, context), propertyRelations = (0, _json.propertyRelationsFromJSON)(json, context), variable = new Variable(context, string, node, type, identifier, propertyRelations);
176
+ const { string } = json, variableNode = (0, _instantiate.instantiateVariable)(string, context), node = variableNode, type = (0, _json.typeFromJSON)(json, context), identifier = (0, _element.identifierFromVarialbeNode)(variableNode, context);
177
+ context = null;
178
+ const variable = new Variable(context, string, node, type, identifier);
182
179
  return variable;
183
180
  }, context);
184
181
  return variable;
185
182
  }
186
183
  });
187
184
 
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3ZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgZWxlbWVudHMgZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgbGl0ZXJhbGx5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZVZhcmlhYmxlIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHR5cGVGcm9tSlNPTixcbiAgICAgICAgIHR5cGVUb1R5cGVKU09OLFxuICAgICAgICAgaWRlbnRpZmllckZyb21KU09OLFxuICAgICAgICAgcHJvcGVydHlSZWxhdGlvbnNGcm9tSlNPTixcbiAgICAgICAgIGlkZW50aWZpZXJUb0lkZW50aWZpZXJKU09OLFxuICAgICAgICAgcHJvcGVydHlSZWxhdGlvbnNUb1Byb3BlcnR5UmVsYXRpb25zSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgVmFyaWFibGUgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCB0eXBlLCBpZGVudGlmaWVyLCBwcm9wZXJ0eVJlbGF0aW9ucykge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSk7XG5cbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuaWRlbnRpZmllciA9IGlkZW50aWZpZXI7XG4gICAgdGhpcy5wcm9wZXJ0eVJlbGF0aW9ucyA9IHByb3BlcnR5UmVsYXRpb25zO1xuICB9XG5cbiAgZ2V0SWRlbnRpZmllcigpIHtcbiAgICByZXR1cm4gdGhpcy5pZGVudGlmaWVyO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0UHJvcGVydHlSZWxhdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlSZWxhdGlvbnM7XG4gIH1cblxuICBzZXRUeXBlKHR5cGUpIHtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgZ2V0VmFyaWFibGVOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICB2YXJpYWJsZU5vZGUgPSBub2RlOyAgLy9cblxuICAgIHJldHVybiB2YXJpYWJsZU5vZGU7XG4gIH1cblxuICBnZXRUeXBlU3RyaW5nKCkgeyByZXR1cm4gdGhpcy50eXBlLmdldFN0cmluZygpOyB9XG5cbiAgaXNJZGVudGlmaWVyRXF1YWxUbyhpZGVudGlmaWVyKSB7XG4gICAgY29uc3QgaWRlbnRpZmllckVxdWFsVG8gPSAodGhpcy5pZGVudGlmaWVyID09PSBpZGVudGlmaWVyKTtcblxuICAgIHJldHVybiBpZGVudGlmaWVyRXF1YWxUbztcbiAgfVxuXG4gIGNvbXBhcmUodmFyaWFibGUpIHtcbiAgICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXIgPSB2YXJpYWJsZS5nZXRJZGVudGlmaWVyKCksXG4gICAgICAgICAgY29tcGFyZXNUbyA9ICh0aGlzLmlkZW50aWZpZXIgPT09IHZhcmlhYmxlSWRlbnRpZmllcik7XG5cbiAgICByZXR1cm4gY29tcGFyZXNUbztcbiAgfVxuXG4gIGNvbXBhcmVQYXJhbXRlcihwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCBpZGVudGlmaWVyID0gcGFyYW1ldGVyLmdldElkZW50aWZpZXIoKSxcbiAgICAgICAgICBpZGVudGlmaWVyRXF1YWxUbyA9IHRoaXMuaXNJZGVudGlmaWVyRXF1YWxUbyhpZGVudGlmaWVyKSxcbiAgICAgICAgICBjb21wYXJlc1RvUGFyYW10ZXIgPSBpZGVudGlmaWVyRXF1YWxUbzsgLy8vXG5cbiAgICByZXR1cm4gY29tcGFyZXNUb1BhcmFtdGVyO1xuICB9XG5cbiAgY29tcGFyZVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpIHtcbiAgICBjb25zdCBpZGVudGlmaWVyID0gdmFyaWFibGVJZGVudGlmaWVyLCAvLy9cbiAgICAgICAgICBpZGVudGlmaWVyRXF1YWxUbyA9IHRoaXMuaXNJZGVudGlmaWVyRXF1YWxUbyhpZGVudGlmaWVyKSxcbiAgICAgICAgICBjb21wYXJlc1RvVmFyaWFibGVJZGVudGlmaWVyID0gaWRlbnRpZmllckVxdWFsVG87IC8vL1xuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aWZpZXI7XG4gIH1cblxuICB2YWxpZGF0ZShjb250ZXh0KSB7XG4gICAgbGV0IHZhbGlkYXRlcztcblxuICAgIGNvbnN0IHZhcmlhYmxlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlLi4uYCk7XG5cbiAgICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXIgPSB0aGlzLmlkZW50aWZpZXIsXG4gICAgICAgICAgdmFyaWFibGUgPSBjb250ZXh0LmZpbmRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcik7XG5cbiAgICBpZiAodmFyaWFibGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHR5cGUgPSB2YXJpYWJsZS5nZXRUeXBlKCk7XG5cbiAgICAgIHRoaXMudHlwZSA9IHR5cGU7XG5cbiAgICAgIHZhbGlkYXRlcyA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlIGlzIG5vdCBwcmVzZW50LmApO1xuICAgIH1cblxuICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVUeXBlKGNvbnRleHQpIHtcbiAgICBsZXQgdHlwZVZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3R5cGVTdHJpbmd9JyB0eXBlLi4uYCk7XG5cbiAgICBjb25zdCBwcmVmaXhlZFR5cGVOYW1lID0gdGhpcy50eXBlLmdldFByZWZpeGVkTmFtZSgpLFxuICAgICAgICAgIHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlQcmVmaXhlZFR5cGVOYW1lKHByZWZpeGVkVHlwZU5hbWUpO1xuXG4gICAgaWYgKHR5cGUgPT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBub3QgcHJlc2VudC5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50eXBlID0gdHlwZTsgLy8vXG5cbiAgICAgIHR5cGVWYWxpZGF0ZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0eXBlVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3R5cGVTdHJpbmd9JyB0eXBlLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlVmFsaWRhdGVzO1xuICB9XG5cbiAgdW5pZnlUZXJtKHRlcm0sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgICBsZXQgdGVybVVuaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICB2YXJpYWJsZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHdpdGggdGhlICcke3ZhcmlhYmxlU3RyaW5nfScgdmFyaWFibGUuLi5gKTtcblxuICAgIGxldCB2YXJpYWJsZSxcbiAgICAgICAgc3Vic3RpdHV0aW9uO1xuXG4gICAgdmFyaWFibGUgPSB0aGlzOyAvLy9cblxuICAgIGNvbnN0IHZhcmlhYmxlSWRlbnRpZmllciA9IHZhcmlhYmxlLmdldElkZW50aWZpZXIoKTtcblxuICAgIHN1YnN0aXR1dGlvbiA9IGNvbnRleHQuZmluZFN1YnN0aXR1dGlvbkJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcik7XG5cbiAgICBpZiAoc3Vic3RpdHV0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25Db21wYXJlc1RvVGVybSA9IHN1YnN0aXR1dGlvbi5jb21wYXJlVGVybSh0ZXJtLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHN1YnN0aXR1dGlvbkNvbXBhcmVzVG9UZXJtKSB7XG4gICAgICAgIHRlcm1VbmlmaWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgIC8vL1xuXG4gICAgICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXIgPSB2YXJpYWJsZS5nZXRJZGVudGlmaWVyKCk7XG5cbiAgICAgIHZhcmlhYmxlID0gY29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpO1xuXG4gICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgIGNvbnN0IHRlcm1Ob2RlID0gdGVybS5nZXROb2RlKCk7XG5cbiAgICAgIHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgICAgIGNvbnN0IHRlcm1UeXBlID0gdGVybS5nZXRUeXBlKCksXG4gICAgICAgICAgICB2YXJpYWJsZVR5cGUgPSB2YXJpYWJsZS5nZXRUeXBlKCksXG4gICAgICAgICAgICB0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlZhcmlhYmxlVHlwZSA9IHRlcm1UeXBlLmlzRXF1YWxUb09yU3ViVHlwZU9mKHZhcmlhYmxlVHlwZSk7XG5cbiAgICAgIGlmICh0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlZhcmlhYmxlVHlwZSkge1xuICAgICAgICBjb25zdCB7IFRlcm1TdWJzdGl0dXRpb24gfSA9IGVsZW1lbnRzO1xuXG4gICAgICAgIGxldCB0ZXJtU3Vic3RpdHV0aW9uO1xuXG4gICAgICAgIHRlcm1TdWJzdGl0dXRpb24gPSBUZXJtU3Vic3RpdHV0aW9uLmZyb21UZXJtQW5kVmFyaWFibGUodGVybSwgdmFyaWFibGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHRlcm1TdWJzdGl0dXRpb24gPSB0ZXJtU3Vic3RpdHV0aW9uLnZhbGlkYXRlKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpOyAgLy8vXG5cbiAgICAgICAgaWYgKHRlcm1TdWJzdGl0dXRpb24gIT09IG51bGwpIHtcbiAgICAgICAgICB0ZXJtVW5pZmllcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGVybVVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHdpdGggdGhlICcke3ZhcmlhYmxlU3RyaW5nfScgdmFyaWFibGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1VbmlmaWVzO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IHR5cGVKU09OID0gdHlwZVRvVHlwZUpTT04odGhpcy50eXBlKSxcbiAgICAgICAgICBpZGVudGlmaWVySlNPTiA9IGlkZW50aWZpZXJUb0lkZW50aWZpZXJKU09OKHRoaXMuaWRlbnRpZmllciksXG4gICAgICAgICAgcHJvcGVydHlSZWxhdGlvbnNKU09OID0gcHJvcGVydHlSZWxhdGlvbnNUb1Byb3BlcnR5UmVsYXRpb25zSlNPTih0aGlzLnByb3BlcnR5UmVsYXRpb25zKSxcbiAgICAgICAgICB0eXBlID0gdHlwZUpTT04sICAvLy9cbiAgICAgICAgICBpZGVudGlmaWVyID0gaWRlbnRpZmllckpTT04sICAvLy9cbiAgICAgICAgICBwcm9wZXJ0eVJlbGF0aW9ucyA9IHByb3BlcnR5UmVsYXRpb25zSlNPTiwgIC8vL1xuICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgaWRlbnRpZmllcixcbiAgICAgICAgICAgIHByb3BlcnR5UmVsYXRpb25zXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlZhcmlhYmxlXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBjb25zdCB2YXJpYWJsZSA9IGxpdGVyYWxseSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICB2YXJpYWJsZU5vZGUgPSBpbnN0YW50aWF0ZVZhcmlhYmxlKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgICAgICB0eXBlID0gdHlwZUZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgICAgaWRlbnRpZmllciA9IGlkZW50aWZpZXJGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHByb3BlcnR5UmVsYXRpb25zID0gcHJvcGVydHlSZWxhdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHZhcmlhYmxlID0gbmV3IFZhcmlhYmxlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgdHlwZSwgaWRlbnRpZmllciwgcHJvcGVydHlSZWxhdGlvbnMpO1xuXG4gICAgICByZXR1cm4gdmFyaWFibGU7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdmFyaWFibGU7XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImRlZmluZSIsIlZhcmlhYmxlIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwidHlwZSIsImlkZW50aWZpZXIiLCJwcm9wZXJ0eVJlbGF0aW9ucyIsImdldElkZW50aWZpZXIiLCJnZXRUeXBlIiwiZ2V0UHJvcGVydHlSZWxhdGlvbnMiLCJzZXRUeXBlIiwiZ2V0VmFyaWFibGVOb2RlIiwiZ2V0Tm9kZSIsInZhcmlhYmxlTm9kZSIsImdldFR5cGVTdHJpbmciLCJnZXRTdHJpbmciLCJpc0lkZW50aWZpZXJFcXVhbFRvIiwiaWRlbnRpZmllckVxdWFsVG8iLCJjb21wYXJlIiwidmFyaWFibGUiLCJ2YXJpYWJsZUlkZW50aWZpZXIiLCJjb21wYXJlc1RvIiwiY29tcGFyZVBhcmFtdGVyIiwicGFyYW1ldGVyIiwiY29tcGFyZXNUb1BhcmFtdGVyIiwiY29tcGFyZVZhcmlhYmxlSWRlbnRpZmllciIsImNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aWZpZXIiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlcyIsInZhcmlhYmxlU3RyaW5nIiwidHJhY2UiLCJmaW5kVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllciIsImRlYnVnIiwidmFsaWRhdGVUeXBlIiwidHlwZVZhbGlkYXRlcyIsInR5cGVTdHJpbmciLCJwcmVmaXhlZFR5cGVOYW1lIiwiZ2V0UHJlZml4ZWROYW1lIiwiZmluZFR5cGVCeVByZWZpeGVkVHlwZU5hbWUiLCJ1bmlmeVRlcm0iLCJ0ZXJtIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJ0ZXJtVW5pZmllcyIsInRlcm1TdHJpbmciLCJzdWJzdGl0dXRpb24iLCJmaW5kU3Vic3RpdHV0aW9uQnlWYXJpYWJsZUlkZW50aWZpZXIiLCJzdWJzdGl0dXRpb25Db21wYXJlc1RvVGVybSIsImNvbXBhcmVUZXJtIiwidGVybU5vZGUiLCJmaW5kVGVybUJ5VGVybU5vZGUiLCJ0ZXJtVHlwZSIsInZhcmlhYmxlVHlwZSIsInRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVmFyaWFibGVUeXBlIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2YiLCJUZXJtU3Vic3RpdHV0aW9uIiwiZWxlbWVudHMiLCJ0ZXJtU3Vic3RpdHV0aW9uIiwiZnJvbVRlcm1BbmRWYXJpYWJsZSIsInRvSlNPTiIsInR5cGVKU09OIiwidHlwZVRvVHlwZUpTT04iLCJpZGVudGlmaWVySlNPTiIsImlkZW50aWZpZXJUb0lkZW50aWZpZXJKU09OIiwicHJvcGVydHlSZWxhdGlvbnNKU09OIiwicHJvcGVydHlSZWxhdGlvbnNUb1Byb3BlcnR5UmVsYXRpb25zSlNPTiIsImpzb24iLCJuYW1lIiwiZnJvbUpTT04iLCJsaXRlcmFsbHkiLCJpbnN0YW50aWF0ZVZhcmlhYmxlIiwidHlwZUZyb21KU09OIiwiaWRlbnRpZmllckZyb21KU09OIiwicHJvcGVydHlSZWxhdGlvbnNGcm9tSlNPTiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBZ0JBOzs7ZUFBQTs7O2dDQWR3QjtrRUFFSDt5QkFHSzs2QkFDVTtzQkFNcUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQUV6RCxXQUFlQSxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLGlCQUFpQkMsdUJBQU87SUFDbEQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLGlCQUFpQixDQUFFO1FBQ3RFLEtBQUssQ0FBQ0wsU0FBU0MsUUFBUUM7UUFFdkIsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxVQUFVLEdBQUdBO1FBQ2xCLElBQUksQ0FBQ0MsaUJBQWlCLEdB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
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3ZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgZWxlbWVudHMgZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgbGl0ZXJhbGx5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZVZhcmlhYmxlIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IGlkZW50aWZpZXJGcm9tVmFyaWFsYmVOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyB0eXBlRnJvbUpTT04sIHR5cGVUb1R5cGVKU09OIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9qc29uXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBWYXJpYWJsZSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIHR5cGUsIGlkZW50aWZpZXIpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUpO1xuXG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLmlkZW50aWZpZXIgPSBpZGVudGlmaWVyO1xuICB9XG5cbiAgZ2V0SWRlbnRpZmllcigpIHtcbiAgICByZXR1cm4gdGhpcy5pZGVudGlmaWVyO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgc2V0VHlwZSh0eXBlKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgfVxuXG4gIGdldFZhcmlhYmxlTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgdmFyaWFibGVOb2RlID0gbm9kZTsgIC8vXG5cbiAgICByZXR1cm4gdmFyaWFibGVOb2RlO1xuICB9XG5cbiAgZ2V0VHlwZVN0cmluZygpIHsgcmV0dXJuIHRoaXMudHlwZS5nZXRTdHJpbmcoKTsgfVxuXG4gIGlzSWRlbnRpZmllckVxdWFsVG8oaWRlbnRpZmllcikge1xuICAgIGNvbnN0IGlkZW50aWZpZXJFcXVhbFRvID0gKHRoaXMuaWRlbnRpZmllciA9PT0gaWRlbnRpZmllcik7XG5cbiAgICByZXR1cm4gaWRlbnRpZmllckVxdWFsVG87XG4gIH1cblxuICBjb21wYXJlKHZhcmlhYmxlKSB7XG4gICAgY29uc3QgdmFyaWFibGVJZGVudGlmaWVyID0gdmFyaWFibGUuZ2V0SWRlbnRpZmllcigpLFxuICAgICAgICAgIGNvbXBhcmVzVG8gPSAodGhpcy5pZGVudGlmaWVyID09PSB2YXJpYWJsZUlkZW50aWZpZXIpO1xuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG87XG4gIH1cblxuICBjb21wYXJlUGFyYW10ZXIocGFyYW1ldGVyKSB7XG4gICAgY29uc3QgaWRlbnRpZmllciA9IHBhcmFtZXRlci5nZXRJZGVudGlmaWVyKCksXG4gICAgICAgICAgaWRlbnRpZmllckVxdWFsVG8gPSB0aGlzLmlzSWRlbnRpZmllckVxdWFsVG8oaWRlbnRpZmllciksXG4gICAgICAgICAgY29tcGFyZXNUb1BhcmFtdGVyID0gaWRlbnRpZmllckVxdWFsVG87IC8vL1xuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9QYXJhbXRlcjtcbiAgfVxuXG4gIGNvbXBhcmVWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgY29uc3QgaWRlbnRpZmllciA9IHZhcmlhYmxlSWRlbnRpZmllciwgLy8vXG4gICAgICAgICAgaWRlbnRpZmllckVxdWFsVG8gPSB0aGlzLmlzSWRlbnRpZmllckVxdWFsVG8oaWRlbnRpZmllciksXG4gICAgICAgICAgY29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllciA9IGlkZW50aWZpZXJFcXVhbFRvOyAvLy9cblxuICAgIHJldHVybiBjb21wYXJlc1RvVmFyaWFibGVJZGVudGlmaWVyO1xuICB9XG5cbiAgdmFsaWRhdGUoY29udGV4dCkge1xuICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICBjb25zdCB2YXJpYWJsZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZS4uLmApO1xuXG4gICAgY29uc3QgdmFyaWFibGVJZGVudGlmaWVyID0gdGhpcy5pZGVudGlmaWVyLFxuICAgICAgICAgIHZhcmlhYmxlID0gY29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpO1xuXG4gICAgaWYgKHZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB0eXBlID0gdmFyaWFibGUuZ2V0VHlwZSgpO1xuXG4gICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuXG4gICAgICB2YWxpZGF0ZXMgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZSBpcyBub3QgcHJlc2VudC5gKTtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3ZhcmlhYmxlU3RyaW5nfScgdmFyaWFibGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlVHlwZShjb250ZXh0KSB7XG4gICAgbGV0IHR5cGVWYWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZS4uLmApO1xuXG4gICAgY29uc3QgcHJlZml4ZWRUeXBlTmFtZSA9IHRoaXMudHlwZS5nZXRQcmVmaXhlZE5hbWUoKSxcbiAgICAgICAgICB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5UHJlZml4ZWRUeXBlTmFtZShwcmVmaXhlZFR5cGVOYW1lKTtcblxuICAgIGlmICh0eXBlID09PSBudWxsKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgbm90IHByZXNlbnQuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudHlwZSA9IHR5cGU7IC8vL1xuXG4gICAgICB0eXBlVmFsaWRhdGVzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodHlwZVZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZVZhbGlkYXRlcztcbiAgfVxuXG4gIHVuaWZ5VGVybSh0ZXJtLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gICAgbGV0IHRlcm1VbmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgdmFyaWFibGVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlLi4uYCk7XG5cbiAgICBsZXQgdmFyaWFibGUsXG4gICAgICAgIHN1YnN0aXR1dGlvbjtcblxuICAgIHZhcmlhYmxlID0gdGhpczsgLy8vXG5cbiAgICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXIgPSB2YXJpYWJsZS5nZXRJZGVudGlmaWVyKCk7XG5cbiAgICBzdWJzdGl0dXRpb24gPSBjb250ZXh0LmZpbmRTdWJzdGl0dXRpb25CeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpO1xuXG4gICAgaWYgKHN1YnN0aXR1dGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3Vic3RpdHV0aW9uQ29tcGFyZXNUb1Rlcm0gPSBzdWJzdGl0dXRpb24uY29tcGFyZVRlcm0odGVybSwgY29udGV4dCk7XG5cbiAgICAgIGlmIChzdWJzdGl0dXRpb25Db21wYXJlc1RvVGVybSkge1xuICAgICAgICB0ZXJtVW5pZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBjb250ZXh0O1xuXG4gICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7ICAvLy9cblxuICAgICAgY29uc3QgdmFyaWFibGVJZGVudGlmaWVyID0gdmFyaWFibGUuZ2V0SWRlbnRpZmllcigpO1xuXG4gICAgICB2YXJpYWJsZSA9IGNvbnRleHQuZmluZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICBjb25zdCB0ZXJtTm9kZSA9IHRlcm0uZ2V0Tm9kZSgpO1xuXG4gICAgICB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgICBjb25zdCB0ZXJtVHlwZSA9IHRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgdmFyaWFibGVUeXBlID0gdmFyaWFibGUuZ2V0VHlwZSgpLFxuICAgICAgICAgICAgdGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZWYXJpYWJsZVR5cGUgPSB0ZXJtVHlwZS5pc0VxdWFsVG9PclN1YlR5cGVPZih2YXJpYWJsZVR5cGUpO1xuXG4gICAgICBpZiAodGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZWYXJpYWJsZVR5cGUpIHtcbiAgICAgICAgY29uc3QgeyBUZXJtU3Vic3RpdHV0aW9uIH0gPSBlbGVtZW50cztcblxuICAgICAgICBsZXQgdGVybVN1YnN0aXR1dGlvbjtcblxuICAgICAgICB0ZXJtU3Vic3RpdHV0aW9uID0gVGVybVN1YnN0aXR1dGlvbi5mcm9tVGVybUFuZFZhcmlhYmxlKHRlcm0sIHZhcmlhYmxlLCBjb250ZXh0KTtcblxuICAgICAgICB0ZXJtU3Vic3RpdHV0aW9uID0gdGVybVN1YnN0aXR1dGlvbi52YWxpZGF0ZShnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTsgIC8vL1xuXG4gICAgICAgIGlmICh0ZXJtU3Vic3RpdHV0aW9uICE9PSBudWxsKSB7XG4gICAgICAgICAgdGVybVVuaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRlcm1VbmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXJtVW5pZmllcztcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCB0eXBlSlNPTiA9IHR5cGVUb1R5cGVKU09OKHRoaXMudHlwZSksXG4gICAgICAgICAgdHlwZSA9IHR5cGVKU09OLCAgLy8vXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgIHR5cGVcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiVmFyaWFibGVcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGNvbnN0IHZhcmlhYmxlID0gbGl0ZXJhbGx5KChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgIHZhcmlhYmxlTm9kZSA9IGluc3RhbnRpYXRlVmFyaWFibGUoc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgIG5vZGUgPSB2YXJpYWJsZU5vZGUsICAvLy9cbiAgICAgICAgICAgIHR5cGUgPSB0eXBlRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgICBpZGVudGlmaWVyID0gaWRlbnRpZmllckZyb21WYXJpYWxiZU5vZGUodmFyaWFibGVOb2RlLCBjb250ZXh0KTtcblxuICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgICAgIGNvbnN0IHZhcmlhYmxlID0gbmV3IFZhcmlhYmxlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgdHlwZSwgaWRlbnRpZmllcik7XG5cbiAgICAgIHJldHVybiB2YXJpYWJsZTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiB2YXJpYWJsZTtcbiAgfVxufSk7XG4iXSwibmFtZXMiOlsiZGVmaW5lIiwiVmFyaWFibGUiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJ0eXBlIiwiaWRlbnRpZmllciIsImdldElkZW50aWZpZXIiLCJnZXRUeXBlIiwic2V0VHlwZSIsImdldFZhcmlhYmxlTm9kZSIsImdldE5vZGUiLCJ2YXJpYWJsZU5vZGUiLCJnZXRUeXBlU3RyaW5nIiwiZ2V0U3RyaW5nIiwiaXNJZGVudGlmaWVyRXF1YWxUbyIsImlkZW50aWZpZXJFcXVhbFRvIiwiY29tcGFyZSIsInZhcmlhYmxlIiwidmFyaWFibGVJZGVudGlmaWVyIiwiY29tcGFyZXNUbyIsImNvbXBhcmVQYXJhbXRlciIsInBhcmFtZXRlciIsImNvbXBhcmVzVG9QYXJhbXRlciIsImNvbXBhcmVWYXJpYWJsZUlkZW50aWZpZXIiLCJjb21wYXJlc1RvVmFyaWFibGVJZGVudGlmaWVyIiwidmFsaWRhdGUiLCJ2YWxpZGF0ZXMiLCJ2YXJpYWJsZVN0cmluZyIsInRyYWNlIiwiZmluZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIiLCJkZWJ1ZyIsInZhbGlkYXRlVHlwZSIsInR5cGVWYWxpZGF0ZXMiLCJ0eXBlU3RyaW5nIiwicHJlZml4ZWRUeXBlTmFtZSIsImdldFByZWZpeGVkTmFtZSIsImZpbmRUeXBlQnlQcmVmaXhlZFR5cGVOYW1lIiwidW5pZnlUZXJtIiwidGVybSIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwidGVybVVuaWZpZXMiLCJ0ZXJtU3RyaW5nIiwic3Vic3RpdHV0aW9uIiwiZmluZFN1YnN0aXR1dGlvbkJ5VmFyaWFibGVJZGVudGlmaWVyIiwic3Vic3RpdHV0aW9uQ29tcGFyZXNUb1Rlcm0iLCJjb21wYXJlVGVybSIsInRlcm1Ob2RlIiwiZmluZFRlcm1CeVRlcm1Ob2RlIiwidGVybVR5cGUiLCJ2YXJpYWJsZVR5cGUiLCJ0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlZhcmlhYmxlVHlwZSIsImlzRXF1YWxUb09yU3ViVHlwZU9mIiwiVGVybVN1YnN0aXR1dGlvbiIsImVsZW1lbnRzIiwidGVybVN1YnN0aXR1dGlvbiIsImZyb21UZXJtQW5kVmFyaWFibGUiLCJ0b0pTT04iLCJ0eXBlSlNPTiIsInR5cGVUb1R5cGVKU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImxpdGVyYWxseSIsImluc3RhbnRpYXRlVmFyaWFibGUiLCJ0eXBlRnJvbUpTT04iLCJpZGVudGlmaWVyRnJvbVZhcmlhbGJlTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBWUE7OztlQUFBOzs7Z0NBVndCO2tFQUVIO3lCQUdLOzZCQUNVO3lCQUNPO3NCQUNFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFFN0MsV0FBZUEsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxpQkFBaUJDLHVCQUFPO0lBQ2xELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLElBQUksRUFBRUMsVUFBVSxDQUFFO1FBQ25ELEtBQUssQ0FBQ0os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
@@ -9,6 +9,9 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
+ get instantiateAssumption () {
13
+ return instantiateAssumption;
14
+ },
12
15
  get instantiateCombinator () {
13
16
  return instantiateCombinator;
14
17
  },
@@ -21,9 +24,15 @@ _export(exports, {
21
24
  get instantiateContainedAssertion () {
22
25
  return instantiateContainedAssertion;
23
26
  },
27
+ get instantiateDeduction () {
28
+ return instantiateDeduction;
29
+ },
24
30
  get instantiateDefinedAssertion () {
25
31
  return instantiateDefinedAssertion;
26
32
  },
33
+ get instantiateEquality () {
34
+ return instantiateEquality;
35
+ },
27
36
  get instantiateEquivalence () {
28
37
  return instantiateEquivalence;
29
38
  },
@@ -33,6 +42,12 @@ _export(exports, {
33
42
  get instantiateFrameSubstitution () {
34
43
  return instantiateFrameSubstitution;
35
44
  },
45
+ get instantiateHypothesis () {
46
+ return instantiateHypothesis;
47
+ },
48
+ get instantiateJudgement () {
49
+ return instantiateJudgement;
50
+ },
36
51
  get instantiateLabel () {
37
52
  return instantiateLabel;
38
53
  },
@@ -51,12 +66,21 @@ _export(exports, {
51
66
  get instantiateProcedureReference () {
52
67
  return instantiateProcedureReference;
53
68
  },
69
+ get instantiateProperty () {
70
+ return instantiateProperty;
71
+ },
72
+ get instantiatePropertyRelation () {
73
+ return instantiatePropertyRelation;
74
+ },
54
75
  get instantiateReference () {
55
76
  return instantiateReference;
56
77
  },
57
78
  get instantiateReferenceSubstitution () {
58
79
  return instantiateReferenceSubstitution;
59
80
  },
81
+ get instantiateSatisfiesAssertion () {
82
+ return instantiateSatisfiesAssertion;
83
+ },
60
84
  get instantiateStatement () {
61
85
  return instantiateStatement;
62
86
  },
@@ -66,19 +90,45 @@ _export(exports, {
66
90
  get instantiateSubproofAssertion () {
67
91
  return instantiateSubproofAssertion;
68
92
  },
93
+ get instantiateSupposition () {
94
+ return instantiateSupposition;
95
+ },
69
96
  get instantiateTerm () {
70
97
  return instantiateTerm;
71
98
  },
72
99
  get instantiateTermSubstitution () {
73
100
  return instantiateTermSubstitution;
74
101
  },
102
+ get instantiateTypePrefix () {
103
+ return instantiateTypePrefix;
104
+ },
75
105
  get instantiateVariable () {
76
106
  return instantiateVariable;
77
107
  }
78
108
  });
79
109
  const _bnf = require("../utilities/bnf");
80
110
  const _ruleNames = require("../ruleNames");
81
- const termPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.TERM_RULE_NAME), framePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.FRAME_RULE_NAME), labelPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.LABEL_RULE_NAME), premisePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PREMISE_RULE_NAME), variablePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.VARIABLE_RULE_NAME), parameterPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PARAMETER_RULE_NAME), statementPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.STATEMENT_RULE_NAME), referencePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.REFERENCE_RULE_NAME), combinatorPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.COMBINATOR_RULE_NAME), conclusionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.CONCLUSION_RULE_NAME), constructorPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.CONSTRUCTOR_RULE_NAME), equivalencePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.EQUIVALENCE_RULE_NAME), metavariablePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.METAVARIABLE_RULE_NAME), procedureCalllaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PROCEDURE_CALL_RULE_NAME), definedAssertionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.DEFINED_ASSERTION_RULE_NAME), termSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.TERM_SUBSTITUTION_RULE_NAME), subproofAssertionlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.SUBPROOF_ASSERTION_RULE_NAME), frameSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.FRAME_SUBSTITUTION_RULE_NAME), procedureReferencelaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PROCEDURE_REFERENCE_RULE_NAME), containedAssertionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.CONTAINED_ASSERTION_RULE_NAME), statementSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.STATEMENT_SUBSTITUTION_RULE_NAME), referenceSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.REFERENCE_SUBSTITUTION_RULE_NAME);
111
+ const termPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.TERM_RULE_NAME), framePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.FRAME_RULE_NAME), labelPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.LABEL_RULE_NAME), premisePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PREMISE_RULE_NAME), variablePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.VARIABLE_RULE_NAME), equalityPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.EQUALITY_RULE_NAME), propertyPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PROPERTY_RULE_NAME), judgementlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.JUDGEMENT_RULE_NAME), deductionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.DEDUCTION_RULE_NAME), parameterPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PARAMETER_RULE_NAME), statementPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.STATEMENT_RULE_NAME), referencePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.REFERENCE_RULE_NAME), combinatorPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.COMBINATOR_RULE_NAME), conclusionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.CONCLUSION_RULE_NAME), hypothesisPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.HYPOTHESIS_RULE_NAME), assumptionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.ASSUMPTION_RULE_NAME), typePrefixPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.TYPE_PREFIX_RULE_NAME), suppositionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.SUPPOSITION_RULE_NAME), constructorPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.CONSTRUCTOR_RULE_NAME), equivalencePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.EQUIVALENCE_RULE_NAME), metavariablePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.METAVARIABLE_RULE_NAME), procedureCalllaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PROCEDURE_CALL_RULE_NAME), propertyRelationlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PROPERTY_RELATION_RULE_NAME), definedAssertionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.DEFINED_ASSERTION_RULE_NAME), termSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.TERM_SUBSTITUTION_RULE_NAME), subproofAssertionlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.SUBPROOF_ASSERTION_RULE_NAME), frameSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.FRAME_SUBSTITUTION_RULE_NAME), procedureReferencelaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PROCEDURE_REFERENCE_RULE_NAME), containedAssertionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.CONTAINED_ASSERTION_RULE_NAME), satisfiesAssertionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.SATISFIES_ASSERTION_RULE_NAME), statementSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.STATEMENT_SUBSTITUTION_RULE_NAME), referenceSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.REFERENCE_SUBSTITUTION_RULE_NAME);
112
+ function instantiatePremise(string, context) {
113
+ string = `${string}
114
+ `; ///
115
+ return instantiate(premisePlaceholderRule, string, context);
116
+ }
117
+ function instantiateDeduction(string, context) {
118
+ string = `${string}
119
+ `; ///
120
+ return instantiate(deductionPlaceholderRule, string, context);
121
+ }
122
+ function instantiateConclusion(string, context) {
123
+ string = `${string}
124
+ `; ///
125
+ return instantiate(conclusionPlaceholderRule, string, context);
126
+ }
127
+ function instantiateSupposition(string, context) {
128
+ string = `${string}
129
+ `; ///
130
+ return instantiate(suppositionPlaceholderRule, string, context);
131
+ }
82
132
  function instantiateTerm(string, context) {
83
133
  return instantiate(termPlaceholderRule, string, context);
84
134
  }
@@ -88,14 +138,18 @@ function instantiateFrame(string, context) {
88
138
  function instantiateLabel(string, context) {
89
139
  return instantiate(labelPlaceholderRule, string, context);
90
140
  }
91
- function instantiatePremise(string, context) {
92
- string = `${string}
93
- `; ///
94
- return instantiate(premisePlaceholderRule, string, context);
95
- }
96
141
  function instantiateVariable(string, context) {
97
142
  return instantiate(variablePlaceholderRule, string, context);
98
143
  }
144
+ function instantiateEquality(string, context) {
145
+ return instantiate(equalityPlaceholderRule, string, context);
146
+ }
147
+ function instantiateProperty(string, context) {
148
+ return instantiate(propertyPlaceholderRule, string, context);
149
+ }
150
+ function instantiateJudgement(string, context) {
151
+ return instantiate(judgementlaceholderRule, string, context);
152
+ }
99
153
  function instantiateParameter(string, context) {
100
154
  return instantiate(parameterPlaceholderRule, string, context);
101
155
  }
@@ -108,10 +162,14 @@ function instantiateReference(string, context) {
108
162
  function instantiateCombinator(string, context) {
109
163
  return instantiate(combinatorPlaceholderRule, string, context);
110
164
  }
111
- function instantiateConclusion(string, context) {
112
- string = `${string}
113
- `; ///
114
- return instantiate(conclusionPlaceholderRule, string, context);
165
+ function instantiateHypothesis(string, context) {
166
+ return instantiate(hypothesisPlaceholderRule, string, context);
167
+ }
168
+ function instantiateAssumption(string, context) {
169
+ return instantiate(assumptionPlaceholderRule, string, context);
170
+ }
171
+ function instantiateTypePrefix(string, context) {
172
+ return instantiate(typePrefixPlaceholderRule, string, context);
115
173
  }
116
174
  function instantiateConstructor(string, context) {
117
175
  return instantiate(constructorPlaceholderRule, string, context);
@@ -125,6 +183,9 @@ function instantiateMetavariable(string, context) {
125
183
  function instantiateProcedureCall(string, context) {
126
184
  return instantiate(procedureCalllaceholderRule, string, context);
127
185
  }
186
+ function instantiatePropertyRelation(string, context) {
187
+ return instantiate(propertyRelationlaceholderRule, string, context);
188
+ }
128
189
  function instantiateDefinedAssertion(string, context) {
129
190
  return instantiate(definedAssertionPlaceholderRule, string, context);
130
191
  }
@@ -143,6 +204,9 @@ function instantiateProcedureReference(string, context) {
143
204
  function instantiateContainedAssertion(string, context) {
144
205
  return instantiate(containedAssertionPlaceholderRule, string, context);
145
206
  }
207
+ function instantiateSatisfiesAssertion(string, context) {
208
+ return instantiate(satisfiesAssertionPlaceholderRule, string, context);
209
+ }
146
210
  function instantiateStatementSubstitution(string, context) {
147
211
  return instantiate(statementSubstitutionPlaceholderRule, string, context);
148
212
  }
@@ -164,4 +228,4 @@ function instantiate(placeholderRule, string, context) {
164
228
  return node;
165
229
  }
166
230
 
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL2luc3RhbnRpYXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBydWxlRnJvbVJ1bGVOYW1lIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9ibmZcIjtcbmltcG9ydCB7IFRFUk1fUlVMRV9OQU1FLFxuICAgICAgICAgRlJBTUVfUlVMRV9OQU1FLFxuICAgICAgICAgTEFCRUxfUlVMRV9OQU1FLFxuICAgICAgICAgUFJFTUlTRV9SVUxFX05BTUUsXG4gICAgICAgICBWQVJJQUJMRV9SVUxFX05BTUUsXG4gICAgICAgICBQQVJBTUVURVJfUlVMRV9OQU1FLFxuICAgICAgICAgU1RBVEVNRU5UX1JVTEVfTkFNRSxcbiAgICAgICAgIFJFRkVSRU5DRV9SVUxFX05BTUUsXG4gICAgICAgICBDT01CSU5BVE9SX1JVTEVfTkFNRSxcbiAgICAgICAgIENPTkNMVVNJT05fUlVMRV9OQU1FLFxuICAgICAgICAgQ09OU1RSVUNUT1JfUlVMRV9OQU1FLFxuICAgICAgICAgRVFVSVZBTEVOQ0VfUlVMRV9OQU1FLFxuICAgICAgICAgTUVUQVZBUklBQkxFX1JVTEVfTkFNRSxcbiAgICAgICAgIFBST0NFRFVSRV9DQUxMX1JVTEVfTkFNRSxcbiAgICAgICAgIERFRklORURfQVNTRVJUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIFRFUk1fU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIFNVQlBST09GX0FTU0VSVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBGUkFNRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgUFJPQ0VEVVJFX1JFRkVSRU5DRV9SVUxFX05BTUUsXG4gICAgICAgICBDT05UQUlORURfQVNTRVJUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIFNUQVRFTUVOVF9TVUJTVElUVVRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgUkVGRVJFTkNFX1NVQlNUSVRVVElPTl9SVUxFX05BTUUgfSBmcm9tIFwiLi4vcnVsZU5hbWVzXCI7XG5cbmNvbnN0IHRlcm1QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFRFUk1fUlVMRV9OQU1FKSxcbiAgICAgIGZyYW1lUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShGUkFNRV9SVUxFX05BTUUpLFxuICAgICAgbGFiZWxQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKExBQkVMX1JVTEVfTkFNRSksXG4gICAgICBwcmVtaXNlUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShQUkVNSVNFX1JVTEVfTkFNRSksXG4gICAgICB2YXJpYWJsZVBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoVkFSSUFCTEVfUlVMRV9OQU1FKSxcbiAgICAgIHBhcmFtZXRlclBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoUEFSQU1FVEVSX1JVTEVfTkFNRSksXG4gICAgICBzdGF0ZW1lbnRQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFNUQVRFTUVOVF9SVUxFX05BTUUpLFxuICAgICAgcmVmZXJlbmNlUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShSRUZFUkVOQ0VfUlVMRV9OQU1FKSxcbiAgICAgIGNvbWJpbmF0b3JQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKENPTUJJTkFUT1JfUlVMRV9OQU1FKSxcbiAgICAgIGNvbmNsdXNpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKENPTkNMVVNJT05fUlVMRV9OQU1FKSxcbiAgICAgIGNvbnN0cnVjdG9yUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShDT05TVFJVQ1RPUl9SVUxFX05BTUUpLFxuICAgICAgZXF1aXZhbGVuY2VQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKEVRVUlWQUxFTkNFX1JVTEVfTkFNRSksXG4gICAgICBtZXRhdmFyaWFibGVQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKE1FVEFWQVJJQUJMRV9SVUxFX05BTUUpLFxuICAgICAgcHJvY2VkdXJlQ2FsbGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShQUk9DRURVUkVfQ0FMTF9SVUxFX05BTUUpLFxuICAgICAgZGVmaW5lZEFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoREVGSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FKSxcbiAgICAgIHRlcm1TdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFRFUk1fU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSksXG4gICAgICBzdWJwcm9vZkFzc2VydGlvbmxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShTVUJQUk9PRl9BU1NFUlRJT05fUlVMRV9OQU1FKSxcbiAgICAgIGZyYW1lU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShGUkFNRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FKSxcbiAgICAgIHByb2NlZHVyZVJlZmVyZW5jZWxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShQUk9DRURVUkVfUkVGRVJFTkNFX1JVTEVfTkFNRSksXG4gICAgICBjb250YWluZWRBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKENPTlRBSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FKSxcbiAgICAgIHN0YXRlbWVudFN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoU1RBVEVNRU5UX1NVQlNUSVRVVElPTl9SVUxFX05BTUUpLFxuICAgICAgcmVmZXJlbmNlU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShSRUZFUkVOQ0VfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVRlcm0oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZSh0ZXJtUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUZyYW1lKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoZnJhbWVQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlTGFiZWwoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShsYWJlbFBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVQcmVtaXNlKHN0cmluZywgY29udGV4dCkge1xuICBzdHJpbmcgPSBgJHtzdHJpbmd9XG5gOyAgLy8vXG5cbiAgcmV0dXJuIGluc3RhbnRpYXRlKHByZW1pc2VQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVZhcmlhYmxlKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUodmFyaWFibGVQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlUGFyYW1ldGVyKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUocGFyYW1ldGVyUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVN0YXRlbWVudChzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHN0YXRlbWVudFBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVSZWZlcmVuY2Uoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShyZWZlcmVuY2VQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlQ29tYmluYXRvcihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGNvbWJpbmF0b3JQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlQ29uY2x1c2lvbihzdHJpbmcsIGNvbnRleHQpIHtcbiAgc3RyaW5nID0gYCR7c3RyaW5nfVxuYDsgIC8vL1xuXG4gIHJldHVybiBpbnN0YW50aWF0ZShjb25jbHVzaW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVDb25zdHJ1Y3RvcihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGNvbnN0cnVjdG9yUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUVxdWl2YWxlbmNlKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoZXF1aXZhbGVuY2VQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlTWV0YXZhcmlhYmxlKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUobWV0YXZhcmlhYmxlUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVByb2NlZHVyZUNhbGwoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShwcm9jZWR1cmVDYWxsbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlRGVmaW5lZEFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGRlZmluZWRBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlVGVybVN1YnN0aXR1dGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHRlcm1TdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlU3VicHJvb2ZBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShzdWJwcm9vZkFzc2VydGlvbmxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUZyYW1lU3Vic3RpdHV0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoZnJhbWVTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlUHJvY2VkdXJlUmVmZXJlbmNlKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUocHJvY2VkdXJlUmVmZXJlbmNlbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlQ29udGFpbmVkQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoY29udGFpbmVkQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVN0YXRlbWVudFN1YnN0aXR1dGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHN0YXRlbWVudFN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVSZWZlcmVuY2VTdWJzdGl0dXRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShyZWZlcmVuY2VTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZnVuY3Rpb24gaW5zdGFudGlhdGUocGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpIHtcbiAgbGV0IG5vZGU7XG5cbiAgY29uc3QgbGV4ZXIgPSBjb250ZXh0LmdldExleGVyKCksXG4gICAgICAgIHBhcnNlciA9IGNvbnRleHQuZ2V0UGFyc2VyKCksXG4gICAgICAgIGNvbnRlbnQgPSBgJHtzdHJpbmd9XG5gLFxuICAgICAgICB0b2tlbnMgPSBsZXhlci50b2tlbmlzZShjb250ZW50KTtcblxuICBjb250ZXh0LnNldFRva2Vucyh0b2tlbnMpO1xuXG4gIGNvbnN0IHN0YXJ0UnVsZSA9IHBsYWNlaG9sZGVyUnVsZTsgIC8vL1xuXG4gIG5vZGUgPSBwYXJzZXIucGFyc2UodG9rZW5zLCBzdGFydFJ1bGUpO1xuXG4gIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGU7IC8vL1xuXG4gIG5vblRlcm1pbmFsTm9kZS5zb21lQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICBub2RlID0gY2hpbGROb2RlOyAvLy9cblxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcblxuICByZXR1cm4gbm9kZTtcbn1cbiJdLCJuYW1lcyI6WyJpbnN0YW50aWF0ZUNvbWJpbmF0b3IiLCJpbnN0YW50aWF0ZUNvbmNsdXNpb24iLCJpbnN0YW50aWF0ZUNvbnN0cnVjdG9yIiwiaW5zdGFudGlhdGVDb250YWluZWRBc3NlcnRpb24iLCJpbnN0YW50aWF0ZURlZmluZWRBc3NlcnRpb24iLCJpbnN0YW50aWF0ZUVxdWl2YWxlbmNlIiwiaW5zdGFudGlhdGVGcmFtZSIsImluc3RhbnRpYXRlRnJhbWVTdWJzdGl0dXRpb24iLCJpbnN0YW50aWF0ZUxhYmVsIiwiaW5zdGFudGlhdGVNZXRhdmFyaWFibGUiLCJpbnN0YW50aWF0ZVBhcmFtZXRlciIsImluc3RhbnRpYXRlUHJlbWlzZSIsImluc3RhbnRpYXRlUHJvY2VkdXJlQ2FsbCIsImluc3RhbnRpYXRlUHJvY2VkdXJlUmVmZXJlbmNlIiwiaW5zdGFudGlhdGVSZWZlcmVuY2UiLCJpbnN0YW50aWF0ZVJlZmVyZW5jZVN1YnN0aXR1dGlvbiIsImluc3RhbnRpYXRlU3RhdGVtZW50IiwiaW5zdGFudGlhdGVTdGF0ZW1lbnRTdWJzdGl0dXRpb24iLCJpbnN0YW50aWF0ZVN1YnByb29mQXNzZXJ0aW9uIiwiaW5zdGFudGlhdGVUZXJtIiwiaW5zdGFudGlhdGVUZXJtU3Vic3RpdHV0aW9uIiwiaW5zdGFudGlhdGVWYXJpYWJsZSIsInRlcm1QbGFjZWhvbGRlclJ1bGUiLCJydWxlRnJvbVJ1bGVOYW1lIiwiVEVSTV9SVUxFX05BTUUiLCJmcmFtZVBsYWNlaG9sZGVyUnVsZSIsIkZSQU1FX1JVTEVfTkFNRSIsImxhYmVsUGxhY2Vob2xkZXJSdWxlIiwiTEFCRUxfUlVMRV9OQU1FIiwicHJlbWlzZVBsYWNlaG9sZGVyUnVsZSIsIlBSRU1JU0VfUlVMRV9OQU1FIiwidmFyaWFibGVQbGFjZWhvbGRlclJ1bGUiLCJWQVJJQUJMRV9SVUxFX05BTUUiLCJwYXJhbWV0ZXJQbGFjZWhvbGRlclJ1bGUiLCJQQVJBTUVURVJfUlVMRV9OQU1FIiwic3RhdGVtZW50UGxhY2Vob2xkZXJSdWxlIiwiU1RBVEVNRU5UX1JVTEVfTkFNRSIsInJlZmVyZW5jZVBsYWNlaG9sZGVyUnVsZSIsIlJFRkVSRU5DRV9SVUxFX05BTUUiLCJjb21iaW5hdG9yUGxhY2Vob2xkZXJSdWxlIiwiQ09NQklOQVRPUl9SVUxFX05BTUUiLCJjb25jbHVzaW9uUGxhY2Vob2xkZXJSdWxlIiwiQ09OQ0xVU0lPTl9SVUxFX05BTUUiLCJjb25zdHJ1Y3RvclBsYWNlaG9sZGVyUnVsZSIsIkNPTlNUUlVDVE9SX1JVTEVfTkFNRSIsImVxdWl2YWxlbmNlUGxhY2Vob2xkZXJSdWxlIiwiRVFVSVZBTEVOQ0VfUlVMRV9OQU1FIiwibWV0YXZhcmlhYmxlUGxhY2Vob2xkZXJSdWxlIiwiTUVUQVZBUklBQkxFX1JVTEVfTkFNRSIsInByb2NlZHVyZUNhbGxsYWNlaG9sZGVyUnVsZSIsIlBST0NFRFVSRV9DQUxMX1JVTEVfTkFNRSIsImRlZmluZWRBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUiLCJERUZJTkVEX0FTU0VSVElPTl9SVUxFX05BTUUiLCJ0ZXJtU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlIiwiVEVSTV9TVUJTVElUVVRJT05fUlVMRV9OQU1FIiwic3VicHJvb2ZBc3NlcnRpb25sYWNlaG9sZGVyUnVsZSIsIlNVQlBST09GX0FTU0VSVElPTl9SVUxFX05BTUUiLCJmcmFtZVN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSIsIkZSQU1FX1NVQlNUSVRVVElPTl9SVUxFX05BTUUiLCJwcm9jZWR1cmVSZWZlcmVuY2VsYWNlaG9sZGVyUnVsZSIsIlBST0NFRFVSRV9SRUZFUkVOQ0VfUlVMRV9OQU1FIiwiY29udGFpbmVkQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlIiwiQ09OVEFJTkVEX0FTU0VSVElPTl9SVUxFX05BTUUiLCJzdGF0ZW1lbnRTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUiLCJTVEFURU1FTlRfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSIsInJlZmVyZW5jZVN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSIsIlJFRkVSRU5DRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FIiwic3RyaW5nIiwiY29udGV4dCIsImluc3RhbnRpYXRlIiwicGxhY2Vob2xkZXJSdWxlIiwibm9kZSIsImxleGVyIiwiZ2V0TGV4ZXIiLCJwYXJzZXIiLCJnZXRQYXJzZXIiLCJjb250ZW50IiwidG9rZW5zIiwidG9rZW5pc2UiLCJzZXRUb2tlbnMiLCJzdGFydFJ1bGUiLCJwYXJzZSIsIm5vblRlcm1pbmFsTm9kZSIsInNvbWVDaGlsZE5vZGUiLCJjaGlsZE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXNFZ0JBO2VBQUFBOztRQUVBQztlQUFBQTs7UUFPQUM7ZUFBQUE7O1FBa0JBQztlQUFBQTs7UUFWQUM7ZUFBQUE7O1FBTkFDO2VBQUFBOztRQTlCQUM7ZUFBQUE7O1FBMENBQztlQUFBQTs7UUF4Q0FDO2VBQUFBOztRQThCQUM7ZUFBQUE7O1FBbkJBQztlQUFBQTs7UUFUQUM7ZUFBQUE7O1FBOEJBQztlQUFBQTs7UUFVQUM7ZUFBQUE7O1FBM0JBQztlQUFBQTs7UUFpQ0FDO2VBQUFBOztRQW5DQUM7ZUFBQUE7O1FBaUNBQztlQUFBQTs7UUFSQUM7ZUFBQUE7O1FBMUNBQztlQUFBQTs7UUF3Q0FDO2VBQUFBOztRQTNCQUM7ZUFBQUE7OztxQkE1RGlCOzJCQXNCZ0I7QUFFakQsTUFBTUMsc0JBQXNCQyxJQUFBQSxxQkFBZ0IsRUFBQ0MseUJBQWMsR0FDckRDLHVCQUF1QkYsSUFBQUEscUJBQWdCLEVBQUNHLDBCQUFlLEdBQ3ZEQyx1QkFBdUJKLElBQUFBLHFCQUFnQixFQUFDSywwQkFBZSxHQUN2REMseUJBQXlCTixJQUFBQSxxQkFBZ0IsRUFBQ08sNEJBQWlCLEdBQzNEQywwQkFBMEJSLElBQUFBLHFCQUFnQixFQUFDUyw2QkFBa0IsR0FDN0RDLDJCQUEyQlYsSUFBQUEscUJBQWdCLEVBQUNXLDhCQUFtQixHQUMvREMsMkJBQTJCWixJQUFBQSxxQkFBZ0IsRUFBQ2EsOEJBQW1CLEdBQy9EQywyQkFBMkJkLElBQUFBLHFCQUFnQixFQUFDZSw4QkFBbUIsR0FDL0RDLDRCQUE0QmhCLElBQUFBLHFCQUFnQixFQUFDaUIsK0JBQW9CLEdBQ2pFQyw0QkFBNEJsQixJQUFBQSxxQkFBZ0IsRUFBQ21CLCtCQUFvQixHQUNqRUMsNkJBQTZCcEIsSUFBQUEscUJBQWdCLEVBQUNxQixnQ0FBcUIsR0FDbkVDLDZCQUE2QnRC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
231
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL2luc3RhbnRpYXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBydWxlRnJvbVJ1bGVOYW1lIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9ibmZcIjtcbmltcG9ydCB7IFRFUk1fUlVMRV9OQU1FLFxuICAgICAgICAgRlJBTUVfUlVMRV9OQU1FLFxuICAgICAgICAgTEFCRUxfUlVMRV9OQU1FLFxuICAgICAgICAgUFJFTUlTRV9SVUxFX05BTUUsXG4gICAgICAgICBWQVJJQUJMRV9SVUxFX05BTUUsXG4gICAgICAgICBFUVVBTElUWV9SVUxFX05BTUUsXG4gICAgICAgICBQUk9QRVJUWV9SVUxFX05BTUUsXG4gICAgICAgICBKVURHRU1FTlRfUlVMRV9OQU1FLFxuICAgICAgICAgREVEVUNUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIFBBUkFNRVRFUl9SVUxFX05BTUUsXG4gICAgICAgICBTVEFURU1FTlRfUlVMRV9OQU1FLFxuICAgICAgICAgUkVGRVJFTkNFX1JVTEVfTkFNRSxcbiAgICAgICAgIENPTUJJTkFUT1JfUlVMRV9OQU1FLFxuICAgICAgICAgQ09OQ0xVU0lPTl9SVUxFX05BTUUsXG4gICAgICAgICBIWVBPVEhFU0lTX1JVTEVfTkFNRSxcbiAgICAgICAgIEFTU1VNUFRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgVFlQRV9QUkVGSVhfUlVMRV9OQU1FLFxuICAgICAgICAgU1VQUE9TSVRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgQ09OU1RSVUNUT1JfUlVMRV9OQU1FLFxuICAgICAgICAgRVFVSVZBTEVOQ0VfUlVMRV9OQU1FLFxuICAgICAgICAgTUVUQVZBUklBQkxFX1JVTEVfTkFNRSxcbiAgICAgICAgIFBST0NFRFVSRV9DQUxMX1JVTEVfTkFNRSxcbiAgICAgICAgIFBST1BFUlRZX1JFTEFUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIERFRklORURfQVNTRVJUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIFRFUk1fU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIFNVQlBST09GX0FTU0VSVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBGUkFNRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgUFJPQ0VEVVJFX1JFRkVSRU5DRV9SVUxFX05BTUUsXG4gICAgICAgICBDT05UQUlORURfQVNTRVJUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIFNBVElTRklFU19BU1NFUlRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgU1RBVEVNRU5UX1NVQlNUSVRVVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBSRUZFUkVOQ0VfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSB9IGZyb20gXCIuLi9ydWxlTmFtZXNcIjtcblxuY29uc3QgdGVybVBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoVEVSTV9SVUxFX05BTUUpLFxuICAgICAgZnJhbWVQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKEZSQU1FX1JVTEVfTkFNRSksXG4gICAgICBsYWJlbFBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoTEFCRUxfUlVMRV9OQU1FKSxcbiAgICAgIHByZW1pc2VQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFBSRU1JU0VfUlVMRV9OQU1FKSxcbiAgICAgIHZhcmlhYmxlUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShWQVJJQUJMRV9SVUxFX05BTUUpLFxuICAgICAgZXF1YWxpdHlQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKEVRVUFMSVRZX1JVTEVfTkFNRSksXG4gICAgICBwcm9wZXJ0eVBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoUFJPUEVSVFlfUlVMRV9OQU1FKSxcbiAgICAgIGp1ZGdlbWVudGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShKVURHRU1FTlRfUlVMRV9OQU1FKSxcbiAgICAgIGRlZHVjdGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoREVEVUNUSU9OX1JVTEVfTkFNRSksXG4gICAgICBwYXJhbWV0ZXJQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFBBUkFNRVRFUl9SVUxFX05BTUUpLFxuICAgICAgc3RhdGVtZW50UGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShTVEFURU1FTlRfUlVMRV9OQU1FKSxcbiAgICAgIHJlZmVyZW5jZVBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoUkVGRVJFTkNFX1JVTEVfTkFNRSksXG4gICAgICBjb21iaW5hdG9yUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShDT01CSU5BVE9SX1JVTEVfTkFNRSksXG4gICAgICBjb25jbHVzaW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShDT05DTFVTSU9OX1JVTEVfTkFNRSksXG4gICAgICBoeXBvdGhlc2lzUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShIWVBPVEhFU0lTX1JVTEVfTkFNRSksXG4gICAgICBhc3N1bXB0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShBU1NVTVBUSU9OX1JVTEVfTkFNRSksXG4gICAgICB0eXBlUHJlZml4UGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShUWVBFX1BSRUZJWF9SVUxFX05BTUUpLFxuICAgICAgc3VwcG9zaXRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFNVUFBPU0lUSU9OX1JVTEVfTkFNRSksXG4gICAgICBjb25zdHJ1Y3RvclBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoQ09OU1RSVUNUT1JfUlVMRV9OQU1FKSxcbiAgICAgIGVxdWl2YWxlbmNlUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShFUVVJVkFMRU5DRV9SVUxFX05BTUUpLFxuICAgICAgbWV0YXZhcmlhYmxlUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShNRVRBVkFSSUFCTEVfUlVMRV9OQU1FKSxcbiAgICAgIHByb2NlZHVyZUNhbGxsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoUFJPQ0VEVVJFX0NBTExfUlVMRV9OQU1FKSxcbiAgICAgIHByb3BlcnR5UmVsYXRpb25sYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoUFJPUEVSVFlfUkVMQVRJT05fUlVMRV9OQU1FKSxcbiAgICAgIGRlZmluZWRBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKERFRklORURfQVNTRVJUSU9OX1JVTEVfTkFNRSksXG4gICAgICB0ZXJtU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShURVJNX1NVQlNUSVRVVElPTl9SVUxFX05BTUUpLFxuICAgICAgc3VicHJvb2ZBc3NlcnRpb25sYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoU1VCUFJPT0ZfQVNTRVJUSU9OX1JVTEVfTkFNRSksXG4gICAgICBmcmFtZVN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoRlJBTUVfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSksXG4gICAgICBwcm9jZWR1cmVSZWZlcmVuY2VsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoUFJPQ0VEVVJFX1JFRkVSRU5DRV9SVUxFX05BTUUpLFxuICAgICAgY29udGFpbmVkQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShDT05UQUlORURfQVNTRVJUSU9OX1JVTEVfTkFNRSksXG4gICAgICBzYXRpc2ZpZXNBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFNBVElTRklFU19BU1NFUlRJT05fUlVMRV9OQU1FKSxcbiAgICAgIHN0YXRlbWVudFN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoU1RBVEVNRU5UX1NVQlNUSVRVVElPTl9SVUxFX05BTUUpLFxuICAgICAgcmVmZXJlbmNlU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShSRUZFUkVOQ0VfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVByZW1pc2Uoc3RyaW5nLCBjb250ZXh0KSB7XG4gIHN0cmluZyA9IGAke3N0cmluZ31cbmA7ICAvLy9cblxuICByZXR1cm4gaW5zdGFudGlhdGUocHJlbWlzZVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlRGVkdWN0aW9uKHN0cmluZywgY29udGV4dCkge1xuICBzdHJpbmcgPSBgJHtzdHJpbmd9XG5gOyAgLy8vXG5cbiAgcmV0dXJuIGluc3RhbnRpYXRlKGRlZHVjdGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlQ29uY2x1c2lvbihzdHJpbmcsIGNvbnRleHQpIHtcbiAgc3RyaW5nID0gYCR7c3RyaW5nfVxuYDsgIC8vL1xuXG4gIHJldHVybiBpbnN0YW50aWF0ZShjb25jbHVzaW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVTdXBwb3NpdGlvbihzdHJpbmcsIGNvbnRleHQpIHtcbiAgc3RyaW5nID0gYCR7c3RyaW5nfVxuYDsgIC8vL1xuXG4gIHJldHVybiBpbnN0YW50aWF0ZShzdXBwb3NpdGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlVGVybShzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHRlcm1QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlRnJhbWUoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShmcmFtZVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVMYWJlbChzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGxhYmVsUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVZhcmlhYmxlKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUodmFyaWFibGVQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlRXF1YWxpdHkoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShlcXVhbGl0eVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVQcm9wZXJ0eShzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHByb3BlcnR5UGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUp1ZGdlbWVudChzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGp1ZGdlbWVudGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVBhcmFtZXRlcihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHBhcmFtZXRlclBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVTdGF0ZW1lbnQoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShzdGF0ZW1lbnRQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlUmVmZXJlbmNlKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUocmVmZXJlbmNlUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUNvbWJpbmF0b3Ioc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShjb21iaW5hdG9yUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUh5cG90aGVzaXMoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShoeXBvdGhlc2lzUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUFzc3VtcHRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShhc3N1bXB0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVR5cGVQcmVmaXgoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZSh0eXBlUHJlZml4UGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUNvbnN0cnVjdG9yKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoY29uc3RydWN0b3JQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlRXF1aXZhbGVuY2Uoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShlcXVpdmFsZW5jZVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVNZXRhdmFyaWFibGUoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShtZXRhdmFyaWFibGVQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlUHJvY2VkdXJlQ2FsbChzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHByb2NlZHVyZUNhbGxsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVQcm9wZXJ0eVJlbGF0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUocHJvcGVydHlSZWxhdGlvbmxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZURlZmluZWRBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShkZWZpbmVkQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVRlcm1TdWJzdGl0dXRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZSh0ZXJtU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVN1YnByb29mQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoc3VicHJvb2ZBc3NlcnRpb25sYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVGcmFtZVN1YnN0aXR1dGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGZyYW1lU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVByb2NlZHVyZVJlZmVyZW5jZShzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHByb2NlZHVyZVJlZmVyZW5jZWxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUNvbnRhaW5lZEFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGNvbnRhaW5lZEFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVTYXRpc2ZpZXNBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShzYXRpc2ZpZXNBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlU3RhdGVtZW50U3Vic3RpdHV0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoc3RhdGVtZW50U3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVJlZmVyZW5jZVN1YnN0aXR1dGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHJlZmVyZW5jZVN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5mdW5jdGlvbiBpbnN0YW50aWF0ZShwbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCkge1xuICBsZXQgbm9kZTtcblxuICBjb25zdCBsZXhlciA9IGNvbnRleHQuZ2V0TGV4ZXIoKSxcbiAgICAgICAgcGFyc2VyID0gY29udGV4dC5nZXRQYXJzZXIoKSxcbiAgICAgICAgY29udGVudCA9IGAke3N0cmluZ31cbmAsXG4gICAgICAgIHRva2VucyA9IGxleGVyLnRva2VuaXNlKGNvbnRlbnQpO1xuXG4gIGNvbnRleHQuc2V0VG9rZW5zKHRva2Vucyk7XG5cbiAgY29uc3Qgc3RhcnRSdWxlID0gcGxhY2Vob2xkZXJSdWxlOyAgLy8vXG5cbiAgbm9kZSA9IHBhcnNlci5wYXJzZSh0b2tlbnMsIHN0YXJ0UnVsZSk7XG5cbiAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZTsgLy8vXG5cbiAgbm9uVGVybWluYWxOb2RlLnNvbWVDaGlsZE5vZGUoKGNoaWxkTm9kZSkgPT4ge1xuICAgIG5vZGUgPSBjaGlsZE5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xuXG4gIHJldHVybiBub2RlO1xufVxuIl0sIm5hbWVzIjpbImluc3RhbnRpYXRlQXNzdW1wdGlvbiIsImluc3RhbnRpYXRlQ29tYmluYXRvciIsImluc3RhbnRpYXRlQ29uY2x1c2lvbiIsImluc3RhbnRpYXRlQ29uc3RydWN0b3IiLCJpbnN0YW50aWF0ZUNvbnRhaW5lZEFzc2VydGlvbiIsImluc3RhbnRpYXRlRGVkdWN0aW9uIiwiaW5zdGFudGlhdGVEZWZpbmVkQXNzZXJ0aW9uIiwiaW5zdGFudGlhdGVFcXVhbGl0eSIsImluc3RhbnRpYXRlRXF1aXZhbGVuY2UiLCJpbnN0YW50aWF0ZUZyYW1lIiwiaW5zdGFudGlhdGVGcmFtZVN1YnN0aXR1dGlvbiIsImluc3RhbnRpYXRlSHlwb3RoZXNpcyIsImluc3RhbnRpYXRlSnVkZ2VtZW50IiwiaW5zdGFudGlhdGVMYWJlbCIsImluc3RhbnRpYXRlTWV0YXZhcmlhYmxlIiwiaW5zdGFudGlhdGVQYXJhbWV0ZXIiLCJpbnN0YW50aWF0ZVByZW1pc2UiLCJpbnN0YW50aWF0ZVByb2NlZHVyZUNhbGwiLCJpbnN0YW50aWF0ZVByb2NlZHVyZVJlZmVyZW5jZSIsImluc3RhbnRpYXRlUHJvcGVydHkiLCJpbnN0YW50aWF0ZVByb3BlcnR5UmVsYXRpb24iLCJpbnN0YW50aWF0ZVJlZmVyZW5jZSIsImluc3RhbnRpYXRlUmVmZXJlbmNlU3Vic3RpdHV0aW9uIiwiaW5zdGFudGlhdGVTYXRpc2ZpZXNBc3NlcnRpb24iLCJpbnN0YW50aWF0ZVN0YXRlbWVudCIsImluc3RhbnRpYXRlU3RhdGVtZW50U3Vic3RpdHV0aW9uIiwiaW5zdGFudGlhdGVTdWJwcm9vZkFzc2VydGlvbiIsImluc3RhbnRpYXRlU3VwcG9zaXRpb24iLCJpbnN0YW50aWF0ZVRlcm0iLCJpbnN0YW50aWF0ZVRlcm1TdWJzdGl0dXRpb24iLCJpbnN0YW50aWF0ZVR5cGVQcmVmaXgiLCJpbnN0YW50aWF0ZVZhcmlhYmxlIiwidGVybVBsYWNlaG9sZGVyUnVsZSIsInJ1bGVGcm9tUnVsZU5hbWUiLCJURVJNX1JVTEVfTkFNRSIsImZyYW1lUGxhY2Vob2xkZXJSdWxlIiwiRlJBTUVfUlVMRV9OQU1FIiwibGFiZWxQbGFjZWhvbGRlclJ1bGUiLCJMQUJFTF9SVUxFX05BTUUiLCJwcmVtaXNlUGxhY2Vob2xkZXJSdWxlIiwiUFJFTUlTRV9SVUxFX05BTUUiLCJ2YXJpYWJsZVBsYWNlaG9sZGVyUnVsZSIsIlZBUklBQkxFX1JVTEVfTkFNRSIsImVxdWFsaXR5UGxhY2Vob2xkZXJSdWxlIiwiRVFVQUxJVFlfUlVMRV9OQU1FIiwicHJvcGVydHlQbGFjZWhvbGRlclJ1bGUiLCJQUk9QRVJUWV9SVUxFX05BTUUiLCJqdWRnZW1lbnRsYWNlaG9sZGVyUnVsZSIsIkpVREdFTUVOVF9SVUxFX05BTUUiLCJkZWR1Y3Rpb25QbGFjZWhvbGRlclJ1bGUiLCJERURVQ1RJT05fUlVMRV9OQU1FIiwicGFyYW1ldGVyUGxhY2Vob2xkZXJSdWxlIiwiUEFSQU1FVEVSX1JVTEVfTkFNRSIsInN0YXRlbWVudFBsYWNlaG9sZGVyUnVsZSIsIlNUQVRFTUVOVF9SVUxFX05BTUUiLCJyZWZlcmVuY2VQbGFjZWhvbGRlclJ1bGUiLCJSRUZFUkVOQ0VfUlVMRV9OQU1FIiwiY29tYmluYXRvclBsYWNlaG9sZGVyUnVsZSIsIkNPTUJJTkFUT1JfUlVMRV9OQU1FIiwiY29uY2x1c2lvblBsYWNlaG9sZGVyUnVsZSIsIkNPTkNMVVNJT05fUlVMRV9OQU1FIiwiaHlwb3RoZXNpc1BsYWNlaG9sZGVyUnVsZSIsIkhZUE9USEVTSVNfUlVMRV9OQU1FIiwiYXNzdW1wdGlvblBsYWNlaG9sZGVyUnVsZSIsIkFTU1VNUFRJT05fUlVMRV9OQU1FIiwidHlwZVByZWZpeFBsYWNlaG9sZGVyUnVsZSIsIlRZUEVfUFJFRklYX1JVTEVfTkFNRSIsInN1cHBvc2l0aW9uUGxhY2Vob2xkZXJSdWxlIiwiU1VQUE9TSVRJT05fUlVMRV9OQU1FIiwiY29uc3RydWN0b3JQbGFjZWhvbGRlclJ1bGUiLCJDT05TVFJVQ1RPUl9SVUxFX05BTUUiLCJlcXVpdmFsZW5jZVBsYWNlaG9sZGVyUnVsZSIsIkVRVUlWQUxFTkNFX1JVTEVfTkFNRSIsIm1ldGF2YXJpYWJsZVBsYWNlaG9sZGVyUnVsZSIsIk1FVEFWQVJJQUJMRV9SVUxFX05BTUUiLCJwcm9jZWR1cmVDYWxsbGFjZWhvbGRlclJ1bGUiLCJQUk9DRURVUkVfQ0FMTF9SVUxFX05BTUUiLCJwcm9wZXJ0eVJlbGF0aW9ubGFjZWhvbGRlclJ1bGUiLCJQUk9QRVJUWV9SRUxBVElPTl9SVUxFX05BTUUiLCJkZWZpbmVkQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlIiwiREVGSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FIiwidGVybVN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSIsIlRFUk1fU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSIsInN1YnByb29mQXNzZXJ0aW9ubGFjZWhvbGRlclJ1bGUiLCJTVUJQUk9PRl9BU1NFUlRJT05fUlVMRV9OQU1FIiwiZnJhbWVTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUiLCJGUkFNRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FIiwicHJvY2VkdXJlUmVmZXJlbmNlbGFjZWhvbGRlclJ1bGUiLCJQUk9DRURVUkVfUkVGRVJFTkNFX1JVTEVfTkFNRSIsImNvbnRhaW5lZEFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSIsIkNPTlRBSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FIiwic2F0aXNmaWVzQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlIiwiU0FUSVNGSUVTX0FTU0VSVElPTl9SVUxFX05BTUUiLCJzdGF0ZW1lbnRTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUiLCJTVEFURU1FTlRfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSIsInJlZmVyZW5jZVN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSIsIlJFRkVSRU5DRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FIiwic3RyaW5nIiwiY29udGV4dCIsImluc3RhbnRpYXRlIiwicGxhY2Vob2xkZXJSdWxlIiwibm9kZSIsImxleGVyIiwiZ2V0TGV4ZXIiLCJwYXJzZXIiLCJnZXRQYXJzZXIiLCJjb250ZW50IiwidG9rZW5zIiwidG9rZW5pc2UiLCJzZXRUb2tlbnMiLCJzdGFydFJ1bGUiLCJwYXJzZSIsIm5vblRlcm1pbmFsTm9kZSIsInNvbWVDaGlsZE5vZGUiLCJjaGlsZE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXlIZ0JBO2VBQUFBOztRQUpBQztlQUFBQTs7UUFsQ0FDO2VBQUFBOztRQTBDQUM7ZUFBQUE7O1FBb0JBQztlQUFBQTs7UUFyRUFDO2VBQUFBOztRQTJEQUM7ZUFBQUE7O1FBOUJBQztlQUFBQTs7UUFzQkFDO2VBQUFBOztRQTVCQUM7ZUFBQUE7O1FBMENBQztlQUFBQTs7UUF0QkFDO2VBQUFBOztRQVZBQztlQUFBQTs7UUFSQUM7ZUFBQUE7O1FBNEJBQztlQUFBQTs7UUFsQkFDO2VBQUFBOztRQTFDQUM7ZUFBQUE7O1FBOERBQztlQUFBQTs7UUFZQUM7ZUFBQUE7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