ts2famix 2.0.3 → 2.1.0-beta.1

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 (190) hide show
  1. package/.eslintrc.json +24 -24
  2. package/.vscode/settings.json +4 -0
  3. package/LICENSE +24 -24
  4. package/README.md +78 -78
  5. package/TODO +1 -0
  6. package/arwea-fix.json +1 -0
  7. package/bogus.ts +3 -0
  8. package/class-diagram.puml +792 -0
  9. package/debug.txt +13332 -0
  10. package/debuglog.txt +12073 -0
  11. package/dist/analyze.js +2 -2
  12. package/dist/analyze_functions/process_functions.js +84 -64
  13. package/dist/famix2puml.js +126 -0
  14. package/dist/famix_functions/EntityDictionary.js +865 -503
  15. package/dist/famix_functions/helpers_creation.js +1 -1
  16. package/dist/fqn.js +44 -11
  17. package/dist/getClasses-arrow-body.js +43 -0
  18. package/dist/lib/famix/famix_JSON_exporter.js +1 -1
  19. package/dist/lib/famix/famix_base_element.js +1 -1
  20. package/dist/lib/famix/famix_repository.js +57 -2
  21. package/dist/lib/famix/index.js +1 -1
  22. package/dist/lib/famix/model/famix/access.js +1 -1
  23. package/dist/lib/famix/model/famix/accessor.js +1 -1
  24. package/dist/lib/famix/model/famix/alias.js +1 -1
  25. package/dist/lib/famix/model/famix/arrow_function.js +1 -1
  26. package/dist/lib/famix/model/famix/behavioral_entity.js +1 -1
  27. package/dist/lib/famix/model/famix/class.js +1 -1
  28. package/dist/lib/famix/model/famix/comment.js +1 -1
  29. package/dist/lib/famix/model/famix/concretisation.js +1 -1
  30. package/dist/lib/famix/model/famix/container_entity.js +1 -1
  31. package/dist/lib/famix/model/famix/decorator.js +1 -1
  32. package/dist/lib/famix/model/famix/entity.js +1 -1
  33. package/dist/lib/famix/model/famix/enum.js +1 -1
  34. package/dist/lib/famix/model/famix/enum_value.js +1 -1
  35. package/dist/lib/famix/model/famix/function.js +1 -1
  36. package/dist/lib/famix/model/famix/import_clause.js +1 -1
  37. package/dist/lib/famix/model/famix/index.js +1 -1
  38. package/dist/lib/famix/model/famix/indexed_file_anchor.js +1 -1
  39. package/dist/lib/famix/model/famix/inheritance.js +1 -1
  40. package/dist/lib/famix/model/famix/interface.js +1 -1
  41. package/dist/lib/famix/model/famix/invocation.js +1 -1
  42. package/dist/lib/famix/model/famix/method.js +1 -1
  43. package/dist/lib/famix/model/famix/module.js +1 -1
  44. package/dist/lib/famix/model/famix/named_entity.js +1 -1
  45. package/dist/lib/famix/model/famix/parameter.js +1 -1
  46. package/dist/lib/famix/model/famix/parameter_concretisation.js +1 -1
  47. package/dist/lib/famix/model/famix/parameter_type.js +1 -1
  48. package/dist/lib/famix/model/famix/parametric_arrow_function.js +1 -1
  49. package/dist/lib/famix/model/famix/parametric_class.js +1 -1
  50. package/dist/lib/famix/model/famix/parametric_function.js +1 -1
  51. package/dist/lib/famix/model/famix/parametric_interface.js +1 -1
  52. package/dist/lib/famix/model/famix/parametric_method.js +1 -1
  53. package/dist/lib/famix/model/famix/primitive_type.js +1 -1
  54. package/dist/lib/famix/model/famix/property.js +1 -1
  55. package/dist/lib/famix/model/famix/reference.js +1 -1
  56. package/dist/lib/famix/model/famix/scoping_entity.js +1 -1
  57. package/dist/lib/famix/model/famix/script_entity.js +1 -1
  58. package/dist/lib/famix/model/famix/source_anchor.js +1 -1
  59. package/dist/lib/famix/model/famix/source_language.js +1 -1
  60. package/dist/lib/famix/model/famix/sourced_entity.js +1 -1
  61. package/dist/lib/famix/model/famix/structural_entity.js +1 -1
  62. package/dist/lib/famix/model/famix/type.js +1 -1
  63. package/dist/lib/famix/model/famix/variable.js +1 -1
  64. package/dist/lib/famix/src/famix_JSON_exporter.js +55 -0
  65. package/dist/lib/famix/src/famix_base_element.js +18 -0
  66. package/dist/lib/famix/src/famix_repository.js +224 -0
  67. package/dist/lib/famix/src/index.js +31 -0
  68. package/dist/lib/famix/src/model/famix/access.js +40 -0
  69. package/dist/lib/famix/src/model/famix/accessor.js +17 -0
  70. package/dist/lib/famix/src/model/famix/alias.js +33 -0
  71. package/dist/lib/famix/src/model/famix/arrowFunction.js +17 -0
  72. package/dist/lib/famix/src/model/famix/arrow_function.js +17 -0
  73. package/dist/lib/famix/src/model/famix/behavioral_entity.js +79 -0
  74. package/dist/lib/famix/src/model/famix/class.js +71 -0
  75. package/dist/lib/famix/src/model/famix/comment.js +39 -0
  76. package/dist/lib/famix/src/model/famix/concretisation.js +31 -0
  77. package/dist/lib/famix/src/model/famix/container_entity.js +126 -0
  78. package/dist/lib/famix/src/model/famix/decorator.js +32 -0
  79. package/dist/lib/famix/src/model/famix/entity.js +17 -0
  80. package/dist/lib/famix/src/model/famix/enum.js +31 -0
  81. package/dist/lib/famix/src/model/famix/enum_value.js +25 -0
  82. package/dist/lib/famix/src/model/famix/function.js +17 -0
  83. package/dist/lib/famix/src/model/famix/implicit_variable.js +17 -0
  84. package/dist/lib/famix/src/model/famix/import_clause.js +41 -0
  85. package/dist/lib/famix/src/model/famix/index.js +86 -0
  86. package/dist/lib/famix/src/model/famix/indexed_file_anchor.js +38 -0
  87. package/dist/lib/famix/src/model/famix/inheritance.js +33 -0
  88. package/dist/lib/famix/src/model/famix/interface.js +64 -0
  89. package/dist/lib/famix/src/model/famix/invocation.js +54 -0
  90. package/dist/lib/famix/src/model/famix/method.js +67 -0
  91. package/dist/lib/famix/src/model/famix/module.js +60 -0
  92. package/dist/lib/famix/src/model/famix/named_entity.js +78 -0
  93. package/dist/lib/famix/src/model/famix/parameter.js +25 -0
  94. package/dist/lib/famix/src/model/famix/parameterConcretisation.js +44 -0
  95. package/dist/lib/famix/src/model/famix/parameter_concretisation.js +44 -0
  96. package/dist/lib/famix/src/model/famix/parameter_type.js +45 -0
  97. package/dist/lib/famix/src/model/famix/parametricArrowFunction.js +29 -0
  98. package/dist/lib/famix/src/model/famix/parametric_arrow_function.js +31 -0
  99. package/dist/lib/famix/src/model/famix/parametric_class.js +44 -0
  100. package/dist/lib/famix/src/model/famix/parametric_function.js +31 -0
  101. package/dist/lib/famix/src/model/famix/parametric_interface.js +44 -0
  102. package/dist/lib/famix/src/model/famix/parametric_method.js +31 -0
  103. package/dist/lib/famix/src/model/famix/primitive_type.js +17 -0
  104. package/dist/lib/famix/src/model/famix/property.js +73 -0
  105. package/dist/lib/famix/src/model/famix/reference.js +33 -0
  106. package/dist/lib/famix/src/model/famix/scoping_entity.js +36 -0
  107. package/dist/lib/famix/src/model/famix/script_entity.js +29 -0
  108. package/dist/lib/famix/src/model/famix/source_anchor.js +27 -0
  109. package/dist/lib/famix/src/model/famix/source_language.js +35 -0
  110. package/dist/lib/famix/src/model/famix/sourced_entity.js +60 -0
  111. package/dist/lib/famix/src/model/famix/structural_entity.js +39 -0
  112. package/dist/lib/famix/src/model/famix/text_anchor.js +38 -0
  113. package/dist/lib/famix/src/model/famix/type.js +73 -0
  114. package/dist/lib/famix/src/model/famix/variable.js +24 -0
  115. package/dist/lib/ts-complex/cyclomatic-service.js +1 -1
  116. package/dist/refactorer/refactor-getter-setter.js +1 -1
  117. package/dist/ts2famix-cli-wrapper.js +1 -1
  118. package/dist/ts2famix-cli.js +1 -1
  119. package/doc-uml/famix-typescript-model.puml +607 -607
  120. package/eslint.config.mjs +28 -0
  121. package/fqn-model.json +1 -0
  122. package/iterateGenericTypes.ts +69 -0
  123. package/out/class-diagram/class-diagram.svg +1 -0
  124. package/package.json +70 -66
  125. package/sample.json +1 -0
  126. package/sample.ts +1 -0
  127. package/src/analyze.ts +120 -120
  128. package/src/analyze_functions/process_functions.ts +1040 -1019
  129. package/src/famix_functions/EntityDictionary.ts +2016 -1593
  130. package/src/famix_functions/helpers_creation.ts +135 -135
  131. package/src/fqn.ts +50 -16
  132. package/src/generate_uml.sh +20 -20
  133. package/src/lib/famix/License.md +22 -22
  134. package/src/lib/famix/famix_JSON_exporter.ts +56 -56
  135. package/src/lib/famix/famix_base_element.ts +22 -22
  136. package/src/lib/famix/famix_repository.ts +278 -243
  137. package/src/lib/famix/index.ts +8 -8
  138. package/src/lib/famix/model/famix/access.ts +50 -50
  139. package/src/lib/famix/model/famix/accessor.ts +15 -15
  140. package/src/lib/famix/model/famix/alias.ts +39 -39
  141. package/src/lib/famix/model/famix/arrow_function.ts +15 -15
  142. package/src/lib/famix/model/famix/behavioral_entity.ts +97 -97
  143. package/src/lib/famix/model/famix/class.ts +85 -85
  144. package/src/lib/famix/model/famix/comment.ts +47 -47
  145. package/src/lib/famix/model/famix/concretisation.ts +40 -40
  146. package/src/lib/famix/model/famix/container_entity.ts +160 -160
  147. package/src/lib/famix/model/famix/decorator.ts +37 -37
  148. package/src/lib/famix/model/famix/entity.ts +15 -15
  149. package/src/lib/famix/model/famix/enum.ts +30 -30
  150. package/src/lib/famix/model/famix/enum_value.ts +28 -28
  151. package/src/lib/famix/model/famix/function.ts +15 -15
  152. package/src/lib/famix/model/famix/import_clause.ts +51 -51
  153. package/src/lib/famix/model/famix/index.ts +41 -41
  154. package/src/lib/famix/model/famix/indexed_file_anchor.ts +46 -46
  155. package/src/lib/famix/model/famix/inheritance.ts +40 -40
  156. package/src/lib/famix/model/famix/interface.ts +75 -75
  157. package/src/lib/famix/model/famix/invocation.ts +65 -65
  158. package/src/lib/famix/model/famix/method.ts +89 -89
  159. package/src/lib/famix/model/famix/module.ts +71 -71
  160. package/src/lib/famix/model/famix/named_entity.ts +95 -95
  161. package/src/lib/famix/model/famix/parameter.ts +28 -28
  162. package/src/lib/famix/model/famix/parameter_concretisation.ts +51 -51
  163. package/src/lib/famix/model/famix/parameter_type.ts +58 -58
  164. package/src/lib/famix/model/famix/parametric_arrow_function.ts +32 -32
  165. package/src/lib/famix/model/famix/parametric_class.ts +49 -49
  166. package/src/lib/famix/model/famix/parametric_function.ts +32 -32
  167. package/src/lib/famix/model/famix/parametric_interface.ts +49 -49
  168. package/src/lib/famix/model/famix/parametric_method.ts +32 -32
  169. package/src/lib/famix/model/famix/primitive_type.ts +15 -15
  170. package/src/lib/famix/model/famix/property.ts +94 -94
  171. package/src/lib/famix/model/famix/reference.ts +40 -40
  172. package/src/lib/famix/model/famix/scoping_entity.ts +35 -35
  173. package/src/lib/famix/model/famix/script_entity.ts +34 -34
  174. package/src/lib/famix/model/famix/source_anchor.ts +30 -30
  175. package/src/lib/famix/model/famix/source_language.ts +35 -35
  176. package/src/lib/famix/model/famix/sourced_entity.ts +70 -70
  177. package/src/lib/famix/model/famix/structural_entity.ts +43 -43
  178. package/src/lib/famix/model/famix/type.ts +87 -87
  179. package/src/lib/famix/model/famix/variable.ts +27 -27
  180. package/src/lib/famix/package.json +28 -28
  181. package/src/lib/ts-complex/cyclomatic-service.ts +83 -83
  182. package/src/refactorer/refactor-getter-setter.ts +140 -140
  183. package/src/ts2famix-cli-wrapper.ts +21 -21
  184. package/src/ts2famix-cli.ts +60 -60
  185. package/stats.txt +3091 -0
  186. package/tabby-debug-output.txt +19433 -0
  187. package/ts2famix.log +22656 -0
  188. package/tsconfig.check-tests.json +14 -14
  189. package/tsconfig.json +72 -72
  190. package/validate-references.js +103 -0
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Type = void 0;
4
+ const famix_JSON_exporter_1 = require("../../famix_JSON_exporter");
5
+ const container_entity_1 = require("./container_entity");
6
+ class Type extends container_entity_1.ContainerEntity {
7
+ constructor() {
8
+ super(...arguments);
9
+ this._typeAliases = new Set();
10
+ this._structuresWithDeclaredType = new Set();
11
+ this._behavioralEntitiesWithDeclaredType = new Set();
12
+ this._incomingReferences = new Set();
13
+ }
14
+ addTypeAlias(typeAlias) {
15
+ if (!this._typeAliases.has(typeAlias)) {
16
+ this._typeAliases.add(typeAlias);
17
+ typeAlias.aliasedEntity = this;
18
+ }
19
+ }
20
+ addStructureWithDeclaredType(structureWithDeclaredType) {
21
+ if (!this._structuresWithDeclaredType.has(structureWithDeclaredType)) {
22
+ this._structuresWithDeclaredType.add(structureWithDeclaredType);
23
+ structureWithDeclaredType.declaredType = this;
24
+ }
25
+ }
26
+ addBehavioralEntityWithDeclaredType(behavioralEntityWithDeclaredType) {
27
+ if (!this._behavioralEntitiesWithDeclaredType.has(behavioralEntityWithDeclaredType)) {
28
+ this._behavioralEntitiesWithDeclaredType.add(behavioralEntityWithDeclaredType);
29
+ behavioralEntityWithDeclaredType.declaredType = this;
30
+ }
31
+ }
32
+ addIncomingReference(incomingReference) {
33
+ if (!this._incomingReferences.has(incomingReference)) {
34
+ this._incomingReferences.add(incomingReference);
35
+ incomingReference.target = this;
36
+ }
37
+ }
38
+ getJSON() {
39
+ const json = new famix_JSON_exporter_1.FamixJSONExporter("Type", this);
40
+ this.addPropertiesToExporter(json);
41
+ return json.getJSON();
42
+ }
43
+ addPropertiesToExporter(exporter) {
44
+ super.addPropertiesToExporter(exporter);
45
+ exporter.addProperty("typeContainer", this.container);
46
+ /* unsupported properties in MM so far */
47
+ // exporter.addProperty("typeAliases", this.getTypeAliases());
48
+ // exporter.addProperty("structuresWithDeclaredType", this.getStructuresWithDeclaredType());
49
+ // exporter.addProperty("behavioralEntitiesWithDeclaredType", this.getBehavioralEntitiesWithDeclaredType());
50
+ exporter.addProperty("incomingReferences", this.incomingReferences);
51
+ }
52
+ get container() {
53
+ return this._container;
54
+ }
55
+ set container(container) {
56
+ this._container = container;
57
+ container.addType(this);
58
+ }
59
+ get typeAliases() {
60
+ return this._typeAliases;
61
+ }
62
+ get structuresWithDeclaredType() {
63
+ return this._structuresWithDeclaredType;
64
+ }
65
+ get behavioralEntitiesWithDeclaredType() {
66
+ return this._behavioralEntitiesWithDeclaredType;
67
+ }
68
+ get incomingReferences() {
69
+ return this._incomingReferences;
70
+ }
71
+ }
72
+ exports.Type = Type;
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZmFtaXgvc3JjL21vZGVsL2ZhbWl4L3R5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUVBQThEO0FBRTlELHlEQUFxRDtBQUtyRCxNQUFhLElBQUssU0FBUSxrQ0FBZTtJQUF6Qzs7UUFHWSxpQkFBWSxHQUFlLElBQUksR0FBRyxFQUFFLENBQUM7UUFTckMsZ0NBQTJCLEdBQTBCLElBQUksR0FBRyxFQUFFLENBQUM7UUFTL0Qsd0NBQW1DLEdBQTBCLElBQUksR0FBRyxFQUFFLENBQUM7UUFTdkUsd0JBQW1CLEdBQW1CLElBQUksR0FBRyxFQUFFLENBQUM7SUFpRDVELENBQUM7SUExRVUsWUFBWSxDQUFDLFNBQWdCO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2pDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ25DLENBQUM7SUFDTCxDQUFDO0lBSU0sNEJBQTRCLENBQUMseUJBQTJDO1FBQzNFLElBQUksQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLEVBQUUsQ0FBQztZQUNuRSxJQUFJLENBQUMsMkJBQTJCLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7WUFDaEUseUJBQXlCLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUNsRCxDQUFDO0lBQ0wsQ0FBQztJQUlNLG1DQUFtQyxDQUFDLGdDQUFrRDtRQUN6RixJQUFJLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLEdBQUcsQ0FBQyxnQ0FBZ0MsQ0FBQyxFQUFFLENBQUM7WUFDbEYsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLEdBQUcsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1lBQy9FLGdDQUFnQyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekQsQ0FBQztJQUNMLENBQUM7SUFJTSxvQkFBb0IsQ0FBQyxpQkFBNEI7UUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUNoRCxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3BDLENBQUM7SUFDTCxDQUFDO0lBRU0sT0FBTztRQUNWLE1BQU0sSUFBSSxHQUFzQixJQUFJLHVDQUFpQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVNLHVCQUF1QixDQUFDLFFBQTJCO1FBQ3RELEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxRQUFRLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEQseUNBQXlDO1FBQ3pDLDhEQUE4RDtRQUM5RCw0RkFBNEY7UUFDNUYsNEdBQTRHO1FBQzVHLFFBQVEsQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsU0FBMEI7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLDBCQUEwQjtRQUMxQixPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBSSxrQ0FBa0M7UUFDbEMsT0FBTyxJQUFJLENBQUMsbUNBQW1DLENBQUM7SUFDcEQsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3BDLENBQUM7Q0FDSjtBQS9FRCxvQkErRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGYW1peEpTT05FeHBvcnRlciB9IGZyb20gXCIuLi8uLi9mYW1peF9KU09OX2V4cG9ydGVyXCI7XHJcbmltcG9ydCB7IFN0cnVjdHVyYWxFbnRpdHkgfSBmcm9tIFwiLi9zdHJ1Y3R1cmFsX2VudGl0eVwiO1xyXG5pbXBvcnQgeyBDb250YWluZXJFbnRpdHkgfSBmcm9tIFwiLi9jb250YWluZXJfZW50aXR5XCI7XHJcbmltcG9ydCB7IFJlZmVyZW5jZSB9IGZyb20gXCIuL3JlZmVyZW5jZVwiO1xyXG5pbXBvcnQgeyBCZWhhdmlvcmFsRW50aXR5IH0gZnJvbSBcIi4vYmVoYXZpb3JhbF9lbnRpdHlcIjtcclxuaW1wb3J0IHsgQWxpYXMgfSBmcm9tIFwiLi9hbGlhc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFR5cGUgZXh0ZW5kcyBDb250YWluZXJFbnRpdHkge1xyXG5cclxuICAgIHByaXZhdGUgX2NvbnRhaW5lciE6IENvbnRhaW5lckVudGl0eTtcclxuICAgIHByaXZhdGUgX3R5cGVBbGlhc2VzOiBTZXQ8QWxpYXM+ID0gbmV3IFNldCgpO1xyXG5cclxuICAgIHB1YmxpYyBhZGRUeXBlQWxpYXModHlwZUFsaWFzOiBBbGlhcyk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5fdHlwZUFsaWFzZXMuaGFzKHR5cGVBbGlhcykpIHtcclxuICAgICAgICAgICAgdGhpcy5fdHlwZUFsaWFzZXMuYWRkKHR5cGVBbGlhcyk7XHJcbiAgICAgICAgICAgIHR5cGVBbGlhcy5hbGlhc2VkRW50aXR5ID0gdGhpcztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfc3RydWN0dXJlc1dpdGhEZWNsYXJlZFR5cGU6IFNldDxTdHJ1Y3R1cmFsRW50aXR5PiA9IG5ldyBTZXQoKTtcclxuXHJcbiAgICBwdWJsaWMgYWRkU3RydWN0dXJlV2l0aERlY2xhcmVkVHlwZShzdHJ1Y3R1cmVXaXRoRGVjbGFyZWRUeXBlOiBTdHJ1Y3R1cmFsRW50aXR5KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9zdHJ1Y3R1cmVzV2l0aERlY2xhcmVkVHlwZS5oYXMoc3RydWN0dXJlV2l0aERlY2xhcmVkVHlwZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5fc3RydWN0dXJlc1dpdGhEZWNsYXJlZFR5cGUuYWRkKHN0cnVjdHVyZVdpdGhEZWNsYXJlZFR5cGUpO1xyXG4gICAgICAgICAgICBzdHJ1Y3R1cmVXaXRoRGVjbGFyZWRUeXBlLmRlY2xhcmVkVHlwZSA9IHRoaXM7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2JlaGF2aW9yYWxFbnRpdGllc1dpdGhEZWNsYXJlZFR5cGU6IFNldDxCZWhhdmlvcmFsRW50aXR5PiA9IG5ldyBTZXQoKTtcclxuXHJcbiAgICBwdWJsaWMgYWRkQmVoYXZpb3JhbEVudGl0eVdpdGhEZWNsYXJlZFR5cGUoYmVoYXZpb3JhbEVudGl0eVdpdGhEZWNsYXJlZFR5cGU6IEJlaGF2aW9yYWxFbnRpdHkpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2JlaGF2aW9yYWxFbnRpdGllc1dpdGhEZWNsYXJlZFR5cGUuaGFzKGJlaGF2aW9yYWxFbnRpdHlXaXRoRGVjbGFyZWRUeXBlKSkge1xyXG4gICAgICAgICAgICB0aGlzLl9iZWhhdmlvcmFsRW50aXRpZXNXaXRoRGVjbGFyZWRUeXBlLmFkZChiZWhhdmlvcmFsRW50aXR5V2l0aERlY2xhcmVkVHlwZSk7XHJcbiAgICAgICAgICAgIGJlaGF2aW9yYWxFbnRpdHlXaXRoRGVjbGFyZWRUeXBlLmRlY2xhcmVkVHlwZSA9IHRoaXM7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2luY29taW5nUmVmZXJlbmNlczogU2V0PFJlZmVyZW5jZT4gPSBuZXcgU2V0KCk7XHJcblxyXG4gICAgcHVibGljIGFkZEluY29taW5nUmVmZXJlbmNlKGluY29taW5nUmVmZXJlbmNlOiBSZWZlcmVuY2UpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2luY29taW5nUmVmZXJlbmNlcy5oYXMoaW5jb21pbmdSZWZlcmVuY2UpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2luY29taW5nUmVmZXJlbmNlcy5hZGQoaW5jb21pbmdSZWZlcmVuY2UpO1xyXG4gICAgICAgICAgICBpbmNvbWluZ1JlZmVyZW5jZS50YXJnZXQgPSB0aGlzO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0SlNPTigpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGpzb246IEZhbWl4SlNPTkV4cG9ydGVyID0gbmV3IEZhbWl4SlNPTkV4cG9ydGVyKFwiVHlwZVwiLCB0aGlzKTtcclxuICAgICAgICB0aGlzLmFkZFByb3BlcnRpZXNUb0V4cG9ydGVyKGpzb24pO1xyXG4gICAgICAgIHJldHVybiBqc29uLmdldEpTT04oKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWRkUHJvcGVydGllc1RvRXhwb3J0ZXIoZXhwb3J0ZXI6IEZhbWl4SlNPTkV4cG9ydGVyKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIuYWRkUHJvcGVydGllc1RvRXhwb3J0ZXIoZXhwb3J0ZXIpO1xyXG4gICAgICAgIGV4cG9ydGVyLmFkZFByb3BlcnR5KFwidHlwZUNvbnRhaW5lclwiLCB0aGlzLmNvbnRhaW5lcik7XHJcbiAgICAgICAgLyogdW5zdXBwb3J0ZWQgcHJvcGVydGllcyBpbiBNTSBzbyBmYXIgKi9cclxuICAgICAgICAvLyBleHBvcnRlci5hZGRQcm9wZXJ0eShcInR5cGVBbGlhc2VzXCIsIHRoaXMuZ2V0VHlwZUFsaWFzZXMoKSk7XHJcbiAgICAgICAgLy8gZXhwb3J0ZXIuYWRkUHJvcGVydHkoXCJzdHJ1Y3R1cmVzV2l0aERlY2xhcmVkVHlwZVwiLCB0aGlzLmdldFN0cnVjdHVyZXNXaXRoRGVjbGFyZWRUeXBlKCkpO1xyXG4gICAgICAgIC8vIGV4cG9ydGVyLmFkZFByb3BlcnR5KFwiYmVoYXZpb3JhbEVudGl0aWVzV2l0aERlY2xhcmVkVHlwZVwiLCB0aGlzLmdldEJlaGF2aW9yYWxFbnRpdGllc1dpdGhEZWNsYXJlZFR5cGUoKSk7XHJcbiAgICAgICAgZXhwb3J0ZXIuYWRkUHJvcGVydHkoXCJpbmNvbWluZ1JlZmVyZW5jZXNcIiwgdGhpcy5pbmNvbWluZ1JlZmVyZW5jZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjb250YWluZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRhaW5lcjtcclxuICAgIH1cclxuXHJcbiAgICBzZXQgY29udGFpbmVyKGNvbnRhaW5lcjogQ29udGFpbmVyRW50aXR5KSB7XHJcbiAgICAgICAgdGhpcy5fY29udGFpbmVyID0gY29udGFpbmVyO1xyXG4gICAgICAgIGNvbnRhaW5lci5hZGRUeXBlKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB0eXBlQWxpYXNlcygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdHlwZUFsaWFzZXM7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHN0cnVjdHVyZXNXaXRoRGVjbGFyZWRUeXBlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zdHJ1Y3R1cmVzV2l0aERlY2xhcmVkVHlwZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYmVoYXZpb3JhbEVudGl0aWVzV2l0aERlY2xhcmVkVHlwZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYmVoYXZpb3JhbEVudGl0aWVzV2l0aERlY2xhcmVkVHlwZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaW5jb21pbmdSZWZlcmVuY2VzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pbmNvbWluZ1JlZmVyZW5jZXM7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Variable = void 0;
4
+ const famix_JSON_exporter_1 = require("../../famix_JSON_exporter");
5
+ const structural_entity_1 = require("./structural_entity");
6
+ class Variable extends structural_entity_1.StructuralEntity {
7
+ getJSON() {
8
+ const json = new famix_JSON_exporter_1.FamixJSONExporter("Variable", this);
9
+ this.addPropertiesToExporter(json);
10
+ return json.getJSON();
11
+ }
12
+ addPropertiesToExporter(exporter) {
13
+ super.addPropertiesToExporter(exporter);
14
+ exporter.addProperty("parentBehaviouralEntity", this.parentContainerEntity);
15
+ }
16
+ get parentContainerEntity() {
17
+ return this._parentContainerEntity;
18
+ }
19
+ set parentContainerEntity(parentContainerEntity) {
20
+ this._parentContainerEntity = parentContainerEntity;
21
+ }
22
+ }
23
+ exports.Variable = Variable;
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ZhbWl4L3NyYy9tb2RlbC9mYW1peC92YXJpYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtRUFBOEQ7QUFFOUQsMkRBQXVEO0FBRXZELE1BQWEsUUFBUyxTQUFRLG9DQUFnQjtJQUluQyxPQUFPO1FBQ1YsTUFBTSxJQUFJLEdBQXNCLElBQUksdUNBQWlCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU0sdUJBQXVCLENBQUMsUUFBMkI7UUFDdEQsS0FBSyxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLFFBQVEsQ0FBQyxXQUFXLENBQUMseUJBQXlCLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVELElBQUkscUJBQXFCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFJLHFCQUFxQixDQUFDLHFCQUFzQztRQUM1RCxJQUFJLENBQUMsc0JBQXNCLEdBQUcscUJBQXFCLENBQUM7SUFDeEQsQ0FBQztDQUNKO0FBdEJELDRCQXNCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhbWl4SlNPTkV4cG9ydGVyIH0gZnJvbSBcIi4uLy4uL2ZhbWl4X0pTT05fZXhwb3J0ZXJcIjtcclxuaW1wb3J0IHsgQ29udGFpbmVyRW50aXR5IH0gZnJvbSBcIi4vY29udGFpbmVyX2VudGl0eVwiO1xyXG5pbXBvcnQgeyBTdHJ1Y3R1cmFsRW50aXR5IH0gZnJvbSBcIi4vc3RydWN0dXJhbF9lbnRpdHlcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBWYXJpYWJsZSBleHRlbmRzIFN0cnVjdHVyYWxFbnRpdHkge1xyXG5cclxuICAgIHByaXZhdGUgX3BhcmVudENvbnRhaW5lckVudGl0eSE6IENvbnRhaW5lckVudGl0eTtcclxuXHJcbiAgICBwdWJsaWMgZ2V0SlNPTigpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGpzb246IEZhbWl4SlNPTkV4cG9ydGVyID0gbmV3IEZhbWl4SlNPTkV4cG9ydGVyKFwiVmFyaWFibGVcIiwgdGhpcyk7XHJcbiAgICAgICAgdGhpcy5hZGRQcm9wZXJ0aWVzVG9FeHBvcnRlcihqc29uKTtcclxuICAgICAgICByZXR1cm4ganNvbi5nZXRKU09OKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFkZFByb3BlcnRpZXNUb0V4cG9ydGVyKGV4cG9ydGVyOiBGYW1peEpTT05FeHBvcnRlcik6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLmFkZFByb3BlcnRpZXNUb0V4cG9ydGVyKGV4cG9ydGVyKTtcclxuICAgICAgICBleHBvcnRlci5hZGRQcm9wZXJ0eShcInBhcmVudEJlaGF2aW91cmFsRW50aXR5XCIsIHRoaXMucGFyZW50Q29udGFpbmVyRW50aXR5KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgcGFyZW50Q29udGFpbmVyRW50aXR5KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9wYXJlbnRDb250YWluZXJFbnRpdHk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IHBhcmVudENvbnRhaW5lckVudGl0eShwYXJlbnRDb250YWluZXJFbnRpdHk6IENvbnRhaW5lckVudGl0eSkge1xyXG4gICAgICAgIHRoaXMuX3BhcmVudENvbnRhaW5lckVudGl0eSA9IHBhcmVudENvbnRhaW5lckVudGl0eTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -79,4 +79,4 @@ const calculate = (filePath) => {
79
79
  return calculateFromSource(source);
80
80
  };
81
81
  exports.calculate = calculate;
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ljbG9tYXRpYy1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cy1jb21wbGV4L2N5Y2xvbWF0aWMtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7OztFQVlFOzs7QUFFRiwyQ0FBaUs7QUFDaksscUNBQTZDO0FBQzdDLDJCQUF3RDtBQUV4RCxNQUFNLFdBQVcsR0FBRyxDQUFDLElBQTZCLEVBQUUsRUFBRTtJQUNwRCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFDaEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLFNBQVMsSUFBSSxJQUFBLHlCQUFZLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNoRyxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQztBQUVGLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxJQUFVLEVBQUUsRUFBRTtJQUN6QywyQkFBMkI7SUFDM0IsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEIsS0FBSyx1QkFBVSxDQUFDLFVBQVU7WUFDeEIsT0FBUSxJQUFtQixDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3BELEtBQUssdUJBQVUsQ0FBQyxXQUFXLENBQUM7UUFDNUIsS0FBSyx1QkFBVSxDQUFDLHFCQUFxQixDQUFDO1FBQ3RDLEtBQUssdUJBQVUsQ0FBQyxXQUFXLENBQUM7UUFDNUIsS0FBSyx1QkFBVSxDQUFDLFlBQVksQ0FBQztRQUM3QixLQUFLLHVCQUFVLENBQUMsY0FBYyxDQUFDO1FBQy9CLEtBQUssdUJBQVUsQ0FBQyxjQUFjLENBQUM7UUFDL0IsS0FBSyx1QkFBVSxDQUFDLFdBQVcsQ0FBQztRQUM1QixLQUFLLHVCQUFVLENBQUMsY0FBYztZQUM1QixPQUFPLElBQUksQ0FBQztRQUVkLEtBQUssdUJBQVUsQ0FBQyxnQkFBZ0I7WUFDOUIsUUFBUyxJQUF5QixDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDdEQsS0FBSyx1QkFBVSxDQUFDLFdBQVcsQ0FBQztnQkFDNUIsS0FBSyx1QkFBVSxDQUFDLHVCQUF1QjtvQkFDckMsT0FBTyxJQUFJLENBQUM7Z0JBQ2Q7b0JBQ0UsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztRQUVIO1lBQ0UsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUNELDBCQUEwQjtBQUM1QixDQUFDLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFHLENBQUMsR0FBUyxFQUFFLEVBQUU7SUFDeEMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLE1BQU0sTUFBTSxHQUE4QixFQUFFLENBQUM7SUFDN0MsSUFBQSx5QkFBWSxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxJQUFJO1FBQ2hDLElBQUksSUFBQSw0QkFBa0IsRUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzdCLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQztZQUN2QixVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsSUFBQSx5QkFBWSxFQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN2QixNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDM0MsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQztZQUMxQixVQUFVLEdBQUcsR0FBRyxDQUFDO1FBQ25CLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM5QixVQUFVLElBQUksQ0FBQyxDQUFDO1lBQ2xCLENBQUM7WUFDRCxJQUFBLHlCQUFZLEVBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVLLE1BQU0sU0FBUyxHQUFHLENBQUMsUUFBa0IsRUFBRSxFQUFFO0lBQzlDLElBQUksQ0FBQyxJQUFBLGVBQVUsRUFBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsU0FBUyxRQUFRLG1CQUFtQixDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUNELE1BQU0sVUFBVSxHQUFHLElBQUEsaUJBQVksRUFBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyRCxNQUFNLE1BQU0sR0FBRyxJQUFBLDZCQUFnQixFQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxVQUFVLEVBQUUseUJBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RixPQUFPLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3JDLENBQUMsQ0FBQztBQVBXLFFBQUEsU0FBUyxhQU9wQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG5Qb3J0aW9ucyBvZiB0aGlzIGZpbGU6XG5cbk1JVCBMaWNlbnNlXG5cbkNvcHlyaWdodCAoYykgMjAxOCBBbmFuZCBVbmRhdmlhXG5cblBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG5cblRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cbiovXG5cbmltcG9ydCB7IGZvckVhY2hDaGlsZCwgaXNJZGVudGlmaWVyLCBTeW50YXhLaW5kLCBjcmVhdGVTb3VyY2VGaWxlLCBTY3JpcHRUYXJnZXQsIE5vZGUsIENhc2VDbGF1c2UsIEJpbmFyeUV4cHJlc3Npb24sIEZ1bmN0aW9uTGlrZURlY2xhcmF0aW9uIH0gZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uV2l0aEJvZHkgfSBmcm9tICd0c3V0aWxzJztcbmltcG9ydCB7IGV4aXN0c1N5bmMsIFBhdGhMaWtlLCByZWFkRmlsZVN5bmMgfSBmcm9tICdmcyc7XG5cbmNvbnN0IGdldE5vZGVOYW1lID0gKG5vZGU6IEZ1bmN0aW9uTGlrZURlY2xhcmF0aW9uKSA9PiB7XG4gIGNvbnN0IHsgbmFtZSwgcG9zLCBlbmQgfSA9IG5vZGU7XG4gIGNvbnN0IGtleSA9IG5hbWUgIT09IHVuZGVmaW5lZCAmJiBpc0lkZW50aWZpZXIobmFtZSkgPyBuYW1lLnRleHQgOiBKU09OLnN0cmluZ2lmeSh7IHBvcywgZW5kIH0pO1xuICByZXR1cm4ga2V5O1xufTtcblxuY29uc3QgaW5jcmVhc2VzQ29tcGxleGl0eSA9IChub2RlOiBOb2RlKSA9PiB7XG4gIC8qIGVzbGludC1kaXNhYmxlIGluZGVudCAqL1xuICBzd2l0Y2ggKG5vZGUua2luZCkge1xuICAgIGNhc2UgU3ludGF4S2luZC5DYXNlQ2xhdXNlOlxuICAgICAgcmV0dXJuIChub2RlIGFzIENhc2VDbGF1c2UpLnN0YXRlbWVudHMubGVuZ3RoID4gMDtcbiAgICBjYXNlIFN5bnRheEtpbmQuQ2F0Y2hDbGF1c2U6XG4gICAgY2FzZSBTeW50YXhLaW5kLkNvbmRpdGlvbmFsRXhwcmVzc2lvbjpcbiAgICBjYXNlIFN5bnRheEtpbmQuRG9TdGF0ZW1lbnQ6XG4gICAgY2FzZSBTeW50YXhLaW5kLkZvclN0YXRlbWVudDpcbiAgICBjYXNlIFN5bnRheEtpbmQuRm9ySW5TdGF0ZW1lbnQ6XG4gICAgY2FzZSBTeW50YXhLaW5kLkZvck9mU3RhdGVtZW50OlxuICAgIGNhc2UgU3ludGF4S2luZC5JZlN0YXRlbWVudDpcbiAgICBjYXNlIFN5bnRheEtpbmQuV2hpbGVTdGF0ZW1lbnQ6XG4gICAgICByZXR1cm4gdHJ1ZTtcblxuICAgIGNhc2UgU3ludGF4S2luZC5CaW5hcnlFeHByZXNzaW9uOlxuICAgICAgc3dpdGNoICgobm9kZSBhcyBCaW5hcnlFeHByZXNzaW9uKS5vcGVyYXRvclRva2VuLmtpbmQpIHtcbiAgICAgICAgY2FzZSBTeW50YXhLaW5kLkJhckJhclRva2VuOlxuICAgICAgICBjYXNlIFN5bnRheEtpbmQuQW1wZXJzYW5kQW1wZXJzYW5kVG9rZW46XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvKiBlc2xpbnQtZW5hYmxlIGluZGVudCAqL1xufTtcblxuY29uc3QgY2FsY3VsYXRlRnJvbVNvdXJjZSA9IChjdHg6IE5vZGUpID0+IHtcbiAgbGV0IGNvbXBsZXhpdHkgPSAwO1xuICBjb25zdCBvdXRwdXQ6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcbiAgZm9yRWFjaENoaWxkKGN0eCwgZnVuY3Rpb24gY2Iobm9kZSkge1xuICAgIGlmIChpc0Z1bmN0aW9uV2l0aEJvZHkobm9kZSkpIHtcbiAgICAgIGNvbnN0IG9sZCA9IGNvbXBsZXhpdHk7XG4gICAgICBjb21wbGV4aXR5ID0gMTtcbiAgICAgIGZvckVhY2hDaGlsZChub2RlLCBjYik7XG4gICAgICBjb25zdCBuYW1lID0gZ2V0Tm9kZU5hbWUobm9kZSk/LnRvU3RyaW5nKCk7XG4gICAgICBvdXRwdXRbbmFtZV0gPSBjb21wbGV4aXR5O1xuICAgICAgY29tcGxleGl0eSA9IG9sZDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGluY3JlYXNlc0NvbXBsZXhpdHkobm9kZSkpIHtcbiAgICAgICAgY29tcGxleGl0eSArPSAxO1xuICAgICAgfVxuICAgICAgZm9yRWFjaENoaWxkKG5vZGUsIGNiKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gb3V0cHV0O1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZSA9IChmaWxlUGF0aDogUGF0aExpa2UpID0+IHtcbiAgaWYgKCFleGlzdHNTeW5jKGZpbGVQYXRoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSBcIiR7ZmlsZVBhdGh9XCIgZG9lcyBub3QgZXhpc3RzYCk7XG4gIH1cbiAgY29uc3Qgc291cmNlVGV4dCA9IHJlYWRGaWxlU3luYyhmaWxlUGF0aCkudG9TdHJpbmcoKTtcbiAgY29uc3Qgc291cmNlID0gY3JlYXRlU291cmNlRmlsZShmaWxlUGF0aC50b1N0cmluZygpLCBzb3VyY2VUZXh0LCBTY3JpcHRUYXJnZXQuRVMyMDE1KTtcbiAgcmV0dXJuIGNhbGN1bGF0ZUZyb21Tb3VyY2Uoc291cmNlKTtcbn07XG4iXX0=
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ljbG9tYXRpYy1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cy1jb21wbGV4L2N5Y2xvbWF0aWMtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7OztFQVlFOzs7QUFFRiwyQ0FBaUs7QUFDaksscUNBQTZDO0FBQzdDLDJCQUF3RDtBQUV4RCxNQUFNLFdBQVcsR0FBRyxDQUFDLElBQTZCLEVBQUUsRUFBRTtJQUNwRCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFDaEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLFNBQVMsSUFBSSxJQUFBLHlCQUFZLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNoRyxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQztBQUVGLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxJQUFVLEVBQUUsRUFBRTtJQUN6QywyQkFBMkI7SUFDM0IsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEIsS0FBSyx1QkFBVSxDQUFDLFVBQVU7WUFDeEIsT0FBUSxJQUFtQixDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3BELEtBQUssdUJBQVUsQ0FBQyxXQUFXLENBQUM7UUFDNUIsS0FBSyx1QkFBVSxDQUFDLHFCQUFxQixDQUFDO1FBQ3RDLEtBQUssdUJBQVUsQ0FBQyxXQUFXLENBQUM7UUFDNUIsS0FBSyx1QkFBVSxDQUFDLFlBQVksQ0FBQztRQUM3QixLQUFLLHVCQUFVLENBQUMsY0FBYyxDQUFDO1FBQy9CLEtBQUssdUJBQVUsQ0FBQyxjQUFjLENBQUM7UUFDL0IsS0FBSyx1QkFBVSxDQUFDLFdBQVcsQ0FBQztRQUM1QixLQUFLLHVCQUFVLENBQUMsY0FBYztZQUM1QixPQUFPLElBQUksQ0FBQztRQUVkLEtBQUssdUJBQVUsQ0FBQyxnQkFBZ0I7WUFDOUIsUUFBUyxJQUF5QixDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDdEQsS0FBSyx1QkFBVSxDQUFDLFdBQVcsQ0FBQztnQkFDNUIsS0FBSyx1QkFBVSxDQUFDLHVCQUF1QjtvQkFDckMsT0FBTyxJQUFJLENBQUM7Z0JBQ2Q7b0JBQ0UsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztRQUVIO1lBQ0UsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUNELDBCQUEwQjtBQUM1QixDQUFDLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFHLENBQUMsR0FBUyxFQUFFLEVBQUU7SUFDeEMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLE1BQU0sTUFBTSxHQUE4QixFQUFFLENBQUM7SUFDN0MsSUFBQSx5QkFBWSxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxJQUFJO1FBQ2hDLElBQUksSUFBQSw0QkFBa0IsRUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzdCLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQztZQUN2QixVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsSUFBQSx5QkFBWSxFQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN2QixNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDM0MsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQztZQUMxQixVQUFVLEdBQUcsR0FBRyxDQUFDO1FBQ25CLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM5QixVQUFVLElBQUksQ0FBQyxDQUFDO1lBQ2xCLENBQUM7WUFDRCxJQUFBLHlCQUFZLEVBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVLLE1BQU0sU0FBUyxHQUFHLENBQUMsUUFBa0IsRUFBRSxFQUFFO0lBQzlDLElBQUksQ0FBQyxJQUFBLGVBQVUsRUFBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsU0FBUyxRQUFRLG1CQUFtQixDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUNELE1BQU0sVUFBVSxHQUFHLElBQUEsaUJBQVksRUFBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyRCxNQUFNLE1BQU0sR0FBRyxJQUFBLDZCQUFnQixFQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxVQUFVLEVBQUUseUJBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RixPQUFPLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3JDLENBQUMsQ0FBQztBQVBXLFFBQUEsU0FBUyxhQU9wQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcblBvcnRpb25zIG9mIHRoaXMgZmlsZTpcclxuXHJcbk1JVCBMaWNlbnNlXHJcblxyXG5Db3B5cmlnaHQgKGMpIDIwMTggQW5hbmQgVW5kYXZpYVxyXG5cclxuUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcclxuXHJcblRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxyXG5cclxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXHJcbiovXHJcblxyXG5pbXBvcnQgeyBmb3JFYWNoQ2hpbGQsIGlzSWRlbnRpZmllciwgU3ludGF4S2luZCwgY3JlYXRlU291cmNlRmlsZSwgU2NyaXB0VGFyZ2V0LCBOb2RlLCBDYXNlQ2xhdXNlLCBCaW5hcnlFeHByZXNzaW9uLCBGdW5jdGlvbkxpa2VEZWNsYXJhdGlvbiB9IGZyb20gJ3R5cGVzY3JpcHQnO1xyXG5pbXBvcnQgeyBpc0Z1bmN0aW9uV2l0aEJvZHkgfSBmcm9tICd0c3V0aWxzJztcclxuaW1wb3J0IHsgZXhpc3RzU3luYywgUGF0aExpa2UsIHJlYWRGaWxlU3luYyB9IGZyb20gJ2ZzJztcclxuXHJcbmNvbnN0IGdldE5vZGVOYW1lID0gKG5vZGU6IEZ1bmN0aW9uTGlrZURlY2xhcmF0aW9uKSA9PiB7XHJcbiAgY29uc3QgeyBuYW1lLCBwb3MsIGVuZCB9ID0gbm9kZTtcclxuICBjb25zdCBrZXkgPSBuYW1lICE9PSB1bmRlZmluZWQgJiYgaXNJZGVudGlmaWVyKG5hbWUpID8gbmFtZS50ZXh0IDogSlNPTi5zdHJpbmdpZnkoeyBwb3MsIGVuZCB9KTtcclxuICByZXR1cm4ga2V5O1xyXG59O1xyXG5cclxuY29uc3QgaW5jcmVhc2VzQ29tcGxleGl0eSA9IChub2RlOiBOb2RlKSA9PiB7XHJcbiAgLyogZXNsaW50LWRpc2FibGUgaW5kZW50ICovXHJcbiAgc3dpdGNoIChub2RlLmtpbmQpIHtcclxuICAgIGNhc2UgU3ludGF4S2luZC5DYXNlQ2xhdXNlOlxyXG4gICAgICByZXR1cm4gKG5vZGUgYXMgQ2FzZUNsYXVzZSkuc3RhdGVtZW50cy5sZW5ndGggPiAwO1xyXG4gICAgY2FzZSBTeW50YXhLaW5kLkNhdGNoQ2xhdXNlOlxyXG4gICAgY2FzZSBTeW50YXhLaW5kLkNvbmRpdGlvbmFsRXhwcmVzc2lvbjpcclxuICAgIGNhc2UgU3ludGF4S2luZC5Eb1N0YXRlbWVudDpcclxuICAgIGNhc2UgU3ludGF4S2luZC5Gb3JTdGF0ZW1lbnQ6XHJcbiAgICBjYXNlIFN5bnRheEtpbmQuRm9ySW5TdGF0ZW1lbnQ6XHJcbiAgICBjYXNlIFN5bnRheEtpbmQuRm9yT2ZTdGF0ZW1lbnQ6XHJcbiAgICBjYXNlIFN5bnRheEtpbmQuSWZTdGF0ZW1lbnQ6XHJcbiAgICBjYXNlIFN5bnRheEtpbmQuV2hpbGVTdGF0ZW1lbnQ6XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG5cclxuICAgIGNhc2UgU3ludGF4S2luZC5CaW5hcnlFeHByZXNzaW9uOlxyXG4gICAgICBzd2l0Y2ggKChub2RlIGFzIEJpbmFyeUV4cHJlc3Npb24pLm9wZXJhdG9yVG9rZW4ua2luZCkge1xyXG4gICAgICAgIGNhc2UgU3ludGF4S2luZC5CYXJCYXJUb2tlbjpcclxuICAgICAgICBjYXNlIFN5bnRheEtpbmQuQW1wZXJzYW5kQW1wZXJzYW5kVG9rZW46XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgZGVmYXVsdDpcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICAvKiBlc2xpbnQtZW5hYmxlIGluZGVudCAqL1xyXG59O1xyXG5cclxuY29uc3QgY2FsY3VsYXRlRnJvbVNvdXJjZSA9IChjdHg6IE5vZGUpID0+IHtcclxuICBsZXQgY29tcGxleGl0eSA9IDA7XHJcbiAgY29uc3Qgb3V0cHV0OiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge307XHJcbiAgZm9yRWFjaENoaWxkKGN0eCwgZnVuY3Rpb24gY2Iobm9kZSkge1xyXG4gICAgaWYgKGlzRnVuY3Rpb25XaXRoQm9keShub2RlKSkge1xyXG4gICAgICBjb25zdCBvbGQgPSBjb21wbGV4aXR5O1xyXG4gICAgICBjb21wbGV4aXR5ID0gMTtcclxuICAgICAgZm9yRWFjaENoaWxkKG5vZGUsIGNiKTtcclxuICAgICAgY29uc3QgbmFtZSA9IGdldE5vZGVOYW1lKG5vZGUpPy50b1N0cmluZygpO1xyXG4gICAgICBvdXRwdXRbbmFtZV0gPSBjb21wbGV4aXR5O1xyXG4gICAgICBjb21wbGV4aXR5ID0gb2xkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGluY3JlYXNlc0NvbXBsZXhpdHkobm9kZSkpIHtcclxuICAgICAgICBjb21wbGV4aXR5ICs9IDE7XHJcbiAgICAgIH1cclxuICAgICAgZm9yRWFjaENoaWxkKG5vZGUsIGNiKTtcclxuICAgIH1cclxuICB9KTtcclxuICByZXR1cm4gb3V0cHV0O1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZSA9IChmaWxlUGF0aDogUGF0aExpa2UpID0+IHtcclxuICBpZiAoIWV4aXN0c1N5bmMoZmlsZVBhdGgpKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZpbGUgXCIke2ZpbGVQYXRofVwiIGRvZXMgbm90IGV4aXN0c2ApO1xyXG4gIH1cclxuICBjb25zdCBzb3VyY2VUZXh0ID0gcmVhZEZpbGVTeW5jKGZpbGVQYXRoKS50b1N0cmluZygpO1xyXG4gIGNvbnN0IHNvdXJjZSA9IGNyZWF0ZVNvdXJjZUZpbGUoZmlsZVBhdGgudG9TdHJpbmcoKSwgc291cmNlVGV4dCwgU2NyaXB0VGFyZ2V0LkVTMjAxNSk7XHJcbiAgcmV0dXJuIGNhbGN1bGF0ZUZyb21Tb3VyY2Uoc291cmNlKTtcclxufTtcclxuIl19
@@ -139,4 +139,4 @@ function replaceMethodCalls(cls, methodName, propName) {
139
139
  function capitalize(str) {
140
140
  return str.charAt(0).toUpperCase() + str.slice(1);
141
141
  }
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmYWN0b3ItZ2V0dGVyLXNldHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWZhY3RvcmVyL3JlZmFjdG9yLWdldHRlci1zZXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUE2RTtBQUM3RSwyQ0FBNkI7QUFFN0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQkFBTyxFQUFFLENBQUM7QUFDOUIsT0FBTyxDQUFDLHFCQUFxQixDQUFDLGlEQUFpRCxDQUFDLENBQUM7QUFDakYsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUUzRixPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0lBQzFDLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUUxQyxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDeEMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNsQixNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkMsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM5QixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEMsSUFBSSxRQUFnQixDQUFDO1lBRXJCLElBQUksZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsUUFBUSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsVUFBVSxDQUFDLEtBQUss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QUMsQ0FBQyxDQUFDLENBQUM7QUFDdEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENsYXNzRGVjbGFyYXRpb24sIFByb2plY3QsIFNvdXJjZUZpbGUsIFN5bnRheEtpbmQgfSBmcm9tIFwidHMtbW9ycGhcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuY29uc3QgcHJvamVjdCA9IG5ldyBQcm9qZWN0KCk7XG5wcm9qZWN0LmFkZFNvdXJjZUZpbGVzQXRQYXRocyhcInNyYy9saWIvZmFtaXgvbW9kZWwvZmFtaXgvZmFtaXhfYmFzZV9lbGVtZW50LnRzXCIpO1xucHJvamVjdC5nZXRTb3VyY2VGaWxlcygpLmZvckVhY2goc291cmNlRmlsZSA9PiB7IGNvbnNvbGUubG9nKHNvdXJjZUZpbGUuZ2V0RmlsZVBhdGgoKSk7IH0pO1xuXG5wcm9qZWN0LmdldFNvdXJjZUZpbGVzKCkuZm9yRWFjaChzb3VyY2VGaWxlID0+IHtcbiAgICBjb25zdCB0eXBlTWFwID0gY3JlYXRlVHlwZU1hcChzb3VyY2VGaWxlKTtcblxuICAgIGNvbnN0IGNsYXNzZXMgPSBzb3VyY2VGaWxlLmdldENsYXNzZXMoKTtcbiAgICBjbGFzc2VzLmZvckVhY2goY2xzID0+IHtcbiAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IGNscy5nZXRQcm9wZXJ0aWVzKCk7XG4gICAgICAgIGNscy5nZXRNZXRob2RzKCkuZm9yRWFjaChtZXRob2QgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWV0aG9kTmFtZSA9IG1ldGhvZC5nZXROYW1lKCk7XG4gICAgICAgICAgICBsZXQgcHJvcE5hbWU6IHN0cmluZztcblxuICAgICAgICAgICAgaWYgKGlzRWxpZ2libGVHZXR0ZXIobWV0aG9kTmFtZSkpIHtcbiAgICAgICAgICAgICAgICBwcm9wTmFtZSA9IG1ldGhvZE5hbWUuY2hhckF0KDMpLnRvTG93ZXJDYXNlKCkgKyBtZXRob2ROYW1lLnNsaWNlKDQpO1xuICAgICAgICAgICAgICAgIHJlbmFtZVByb3BlcnR5SWZFeGlzdHMoY2xzLCBwcm9wTmFtZSwgcHJvcGVydGllcyk7XG4gICAgICAgICAgICAgICAgcmVmYWN0b3JUb0dldHRlcihjbHMsIG1ldGhvZCwgcHJvcE5hbWUsIHR5cGVNYXApO1xuICAgICAgICAgICAgICAgIHJlcGxhY2VNZXRob2RDYWxscyhjbHMsIGBnZXQke2NhcGl0YWxpemUocHJvcE5hbWUpfWAsIHByb3BOYW1lKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNFbGlnaWJsZVNldHRlcihtZXRob2ROYW1lKSkge1xuICAgICAgICAgICAgICAgIHByb3BOYW1lID0gbWV0aG9kTmFtZS5jaGFyQXQoMykudG9Mb3dlckNhc2UoKSArIG1ldGhvZE5hbWUuc2xpY2UoNCk7XG4gICAgICAgICAgICAgICAgcmVuYW1lUHJvcGVydHlJZkV4aXN0cyhjbHMsIHByb3BOYW1lLCBwcm9wZXJ0aWVzKTtcbiAgICAgICAgICAgICAgICByZWZhY3RvclRvU2V0dGVyKGNscywgbWV0aG9kLCBwcm9wTmFtZSwgdHlwZU1hcCk7XG4gICAgICAgICAgICAgICAgcmVwbGFjZU1ldGhvZENhbGxzKGNscywgYHNldCR7Y2FwaXRhbGl6ZShwcm9wTmFtZSl9YCwgcHJvcE5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn0pO1xuXG5wcm9qZWN0LnNhdmUoKS50aGVuKCgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhcIlJlZmFjdG9yaW5nIGNvbXBsZXRlIVwiKTtcbn0pO1xuXG5mdW5jdGlvbiBpc0VsaWdpYmxlR2V0dGVyKG1ldGhvZE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBtZXRob2ROYW1lLnN0YXJ0c1dpdGgoXCJnZXRcIikgJiYgL15bQS1aXVthLXpBLVowLTldKiQvLnRlc3QobWV0aG9kTmFtZS5zbGljZSgzKSkgJiYgIW1ldGhvZE5hbWUuaW5jbHVkZXMoXCJKU09OXCIpO1xufVxuXG5mdW5jdGlvbiBpc0VsaWdpYmxlU2V0dGVyKG1ldGhvZE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBtZXRob2ROYW1lLnN0YXJ0c1dpdGgoXCJzZXRcIikgJiYgL15bQS1aXVthLXpBLVowLTldKiQvLnRlc3QobWV0aG9kTmFtZS5zbGljZSgzKSk7XG59XG5cbmZ1bmN0aW9uIHJlbmFtZVByb3BlcnR5SWZFeGlzdHMoY2xzOiBhbnksIHByb3BOYW1lOiBzdHJpbmcsIHByb3BlcnRpZXM6IGFueVtdKSB7XG4gICAgY29uc3QgZXhpc3RpbmdQcm9wZXJ0eSA9IHByb3BlcnRpZXMuZmluZChwcm9wID0+IHByb3AuZ2V0TmFtZSgpID09PSBwcm9wTmFtZSk7XG4gICAgaWYgKGV4aXN0aW5nUHJvcGVydHkpIHtcbiAgICAgICAgZXhpc3RpbmdQcm9wZXJ0eS5yZW5hbWUoYF8ke3Byb3BOYW1lfWApO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlVHlwZU1hcChzb3VyY2VGaWxlOiBTb3VyY2VGaWxlKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgY29uc3QgdHlwZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgY29uc3QgaW1wb3J0RGVjbGFyYXRpb25zID0gc291cmNlRmlsZS5nZXRJbXBvcnREZWNsYXJhdGlvbnMoKTtcblxuICAgIGltcG9ydERlY2xhcmF0aW9ucy5mb3JFYWNoKGltcG9ydERlY2wgPT4ge1xuICAgICAgICBjb25zdCBtb2R1bGVTcGVjaWZpZXIgPSBpbXBvcnREZWNsLmdldE1vZHVsZVNwZWNpZmllcigpLmdldFRleHQoKS5yZXBsYWNlKC9bJ1wiXS9nLCAnJyk7XG4gICAgICAgIGNvbnN0IGFic29sdXRlUGF0aCA9IHBhdGgucmVzb2x2ZShzb3VyY2VGaWxlLmdldERpcmVjdG9yeSgpLmdldFBhdGgoKSwgbW9kdWxlU3BlY2lmaWVyKTtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVQYXRoKGFic29sdXRlUGF0aCk7XG4gICAgICAgIGNvbnN0IG5hbWVkSW1wb3J0cyA9IGltcG9ydERlY2wuZ2V0TmFtZWRJbXBvcnRzKCk7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRJbXBvcnQgPSBpbXBvcnREZWNsLmdldERlZmF1bHRJbXBvcnQoKTtcblxuICAgICAgICBuYW1lZEltcG9ydHMuZm9yRWFjaChuYW1lZEltcG9ydCA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgTmFtZWQgaW1wb3J0OiAke25hbWVkSW1wb3J0LmdldE5hbWUoKX0sIHBhdGg6ICR7bm9ybWFsaXplZFBhdGh9YCk7XG4gICAgICAgICAgICB0eXBlTWFwLnNldChuYW1lZEltcG9ydC5nZXROYW1lKCksIG5vcm1hbGl6ZWRQYXRoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGRlZmF1bHRJbXBvcnQpIHtcbiAgICAgICAgICAgIHR5cGVNYXAuc2V0KGRlZmF1bHRJbXBvcnQuZ2V0VGV4dCgpLCBub3JtYWxpemVkUGF0aCk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB0eXBlTWFwO1xufVxuXG5mdW5jdGlvbiByZWZhY3RvclRvR2V0dGVyKGNsczogYW55LCBtZXRob2Q6IGFueSwgcHJvcE5hbWU6IHN0cmluZywgdHlwZU1hcDogTWFwPHN0cmluZywgc3RyaW5nPikge1xuICAgIGNvbnN0IGdldHRlck5hbWUgPSBwcm9wTmFtZTtcbiAgICBjb25zdCByZW5hbWVkUHJvcCA9IGBfJHtwcm9wTmFtZX1gO1xuICAgIGNvbnN0IHJldHVyblR5cGUgPSBtZXRob2QuZ2V0UmV0dXJuVHlwZSgpLmdldFRleHQoKTtcbiAgICBjb25zdCBzaW1wbGlmaWVkVHlwZSA9IHJlcGxhY2VMb25nVHlwZVBhdGhzKHJldHVyblR5cGUsIHR5cGVNYXApO1xuXG4gICAgY29uc3QgZ2V0dGVyQm9keSA9IG1ldGhvZC5nZXRCb2R5VGV4dCgpLnJlcGxhY2UobmV3IFJlZ0V4cChgdGhpc1xcXFwuJHtwcm9wTmFtZX1gLCAnZycpLCBgdGhpcy4ke3JlbmFtZWRQcm9wfWApO1xuXG4gICAgY2xzLmFkZEdldEFjY2Vzc29yKHtcbiAgICAgICAgbmFtZTogZ2V0dGVyTmFtZSxcbiAgICAgICAgc3RhdGVtZW50czogZ2V0dGVyQm9keSxcbiAgICAgICAgLy8gcmV0dXJuVHlwZTogc2ltcGxpZmllZFR5cGUsICAvLyBkb24ndCBuZWVkIGEgcmV0dXJuIHR5cGUgZm9yIGdldHRlclxuICAgIH0pO1xuXG4gICAgbWV0aG9kLnJlbW92ZSgpO1xufVxuXG5mdW5jdGlvbiByZWZhY3RvclRvU2V0dGVyKGNsczogYW55LCBtZXRob2Q6IGFueSwgcHJvcE5hbWU6IHN0cmluZywgdHlwZU1hcDogTWFwPHN0cmluZywgc3RyaW5nPikge1xuICAgIGNvbnN0IHNldHRlck5hbWUgPSBwcm9wTmFtZTtcbiAgICBjb25zdCByZW5hbWVkUHJvcCA9IGBfJHtwcm9wTmFtZX1gO1xuXG4gICAgY29uc3QgcGFyYW1ldGVyID0gbWV0aG9kLmdldFBhcmFtZXRlcnMoKVswXTtcbiAgICBjb25zdCBwYXJhbU5hbWUgPSBwYXJhbWV0ZXIuZ2V0TmFtZSgpO1xuICAgIGNvbnN0IHBhcmFtVHlwZSA9IHJlcGxhY2VMb25nVHlwZVBhdGhzKHBhcmFtZXRlci5nZXRUeXBlKCkuZ2V0VGV4dCgpLCB0eXBlTWFwKTtcblxuICAgIGNvbnN0IHNldHRlckJvZHkgPSBtZXRob2QuZ2V0Qm9keVRleHQoKS5yZXBsYWNlKG5ldyBSZWdFeHAoYHRoaXNcXFxcLiR7cHJvcE5hbWV9YCwgJ2cnKSwgYHRoaXMuJHtyZW5hbWVkUHJvcH1gKTtcblxuICAgIGNscy5hZGRTZXRBY2Nlc3Nvcih7XG4gICAgICAgIG5hbWU6IHNldHRlck5hbWUsXG4gICAgICAgIHN0YXRlbWVudHM6IHNldHRlckJvZHksXG4gICAgICAgIHBhcmFtZXRlcnM6IFt7IG5hbWU6IHBhcmFtTmFtZSwgdHlwZTogcGFyYW1UeXBlIH1dLFxuICAgIH0pO1xuXG4gICAgbWV0aG9kLnJlbW92ZSgpO1xufVxuXG5mdW5jdGlvbiByZXBsYWNlTG9uZ1R5cGVQYXRocyh0eXBlOiBzdHJpbmcsIHR5cGVNYXA6IE1hcDxzdHJpbmcsIHN0cmluZz4pOiBzdHJpbmcge1xuICAgIGZvciAoY29uc3QgW2ltcG9ydE5hbWUsIGltcG9ydFBhdGhdIG9mIHR5cGVNYXAuZW50cmllcygpKSB7XG4gICAgICAgIGNvbnN0IGxvbmdQYXRoID0gYGltcG9ydChcIiR7aW1wb3J0UGF0aH1cIikke2ltcG9ydE5hbWV9YDtcbiAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGBpbXBvcnRcXFxcKFtcIiddJHtub3JtYWxpemVQYXRoKGltcG9ydFBhdGgpfVtcIiddXFxcXClcXFxcLiR7aW1wb3J0TmFtZX1gLCAnZycpO1xuICAgICAgICBpZiAocmVnZXgudGVzdCh0eXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuIGltcG9ydE5hbWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHR5cGU7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVBhdGgoZmlsZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGZpbGVQYXRoLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcbn1cblxuZnVuY3Rpb24gcmVwbGFjZU1ldGhvZENhbGxzKGNsczogQ2xhc3NEZWNsYXJhdGlvbiwgbWV0aG9kTmFtZTogc3RyaW5nLCBwcm9wTmFtZTogc3RyaW5nKSB7XG4gICAgY2xzLmdldERlc2NlbmRhbnRzT2ZLaW5kKFN5bnRheEtpbmQuQ2FsbEV4cHJlc3Npb24pLmZvckVhY2goY2FsbEV4cHIgPT4ge1xuICAgICAgICBjb25zdCBleHByID0gY2FsbEV4cHIuZ2V0RXhwcmVzc2lvbigpO1xuICAgICAgICBpZiAoZXhwci5nZXRUZXh0KCkgPT09IGB0aGlzLiR7bWV0aG9kTmFtZX1gKSB7XG4gICAgICAgICAgICBjYWxsRXhwci5yZXBsYWNlV2l0aFRleHQoYHRoaXMuJHtwcm9wTmFtZX1gKTtcbiAgICAgICAgfSBlbHNlIGlmIChleHByLmdldFRleHQoKSA9PT0gYHRoaXMuJHttZXRob2ROYW1lfWAgJiYgY2FsbEV4cHIuZ2V0QXJndW1lbnRzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY2FsbEV4cHIucmVwbGFjZVdpdGhUZXh0KGB0aGlzLiR7cHJvcE5hbWV9ID0gJHtjYWxsRXhwci5nZXRBcmd1bWVudHMoKVswXS5nZXRUZXh0KCl9YCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gY2FwaXRhbGl6ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKTtcbn1cbiJdfQ==
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmYWN0b3ItZ2V0dGVyLXNldHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWZhY3RvcmVyL3JlZmFjdG9yLWdldHRlci1zZXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUE2RTtBQUM3RSwyQ0FBNkI7QUFFN0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQkFBTyxFQUFFLENBQUM7QUFDOUIsT0FBTyxDQUFDLHFCQUFxQixDQUFDLGlEQUFpRCxDQUFDLENBQUM7QUFDakYsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUUzRixPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0lBQzFDLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUUxQyxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDeEMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNsQixNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkMsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM5QixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEMsSUFBSSxRQUFnQixDQUFDO1lBRXJCLElBQUksZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsUUFBUSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsVUFBVSxDQUFDLEtBQUss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QUMsQ0FBQyxDQUFDLENBQUM7QUFDdEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENsYXNzRGVjbGFyYXRpb24sIFByb2plY3QsIFNvdXJjZUZpbGUsIFN5bnRheEtpbmQgfSBmcm9tIFwidHMtbW9ycGhcIjtcclxuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xyXG5cclxuY29uc3QgcHJvamVjdCA9IG5ldyBQcm9qZWN0KCk7XHJcbnByb2plY3QuYWRkU291cmNlRmlsZXNBdFBhdGhzKFwic3JjL2xpYi9mYW1peC9tb2RlbC9mYW1peC9mYW1peF9iYXNlX2VsZW1lbnQudHNcIik7XHJcbnByb2plY3QuZ2V0U291cmNlRmlsZXMoKS5mb3JFYWNoKHNvdXJjZUZpbGUgPT4geyBjb25zb2xlLmxvZyhzb3VyY2VGaWxlLmdldEZpbGVQYXRoKCkpOyB9KTtcclxuXHJcbnByb2plY3QuZ2V0U291cmNlRmlsZXMoKS5mb3JFYWNoKHNvdXJjZUZpbGUgPT4ge1xyXG4gICAgY29uc3QgdHlwZU1hcCA9IGNyZWF0ZVR5cGVNYXAoc291cmNlRmlsZSk7XHJcblxyXG4gICAgY29uc3QgY2xhc3NlcyA9IHNvdXJjZUZpbGUuZ2V0Q2xhc3NlcygpO1xyXG4gICAgY2xhc3Nlcy5mb3JFYWNoKGNscyA9PiB7XHJcbiAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IGNscy5nZXRQcm9wZXJ0aWVzKCk7XHJcbiAgICAgICAgY2xzLmdldE1ldGhvZHMoKS5mb3JFYWNoKG1ldGhvZCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBtZXRob2QuZ2V0TmFtZSgpO1xyXG4gICAgICAgICAgICBsZXQgcHJvcE5hbWU6IHN0cmluZztcclxuXHJcbiAgICAgICAgICAgIGlmIChpc0VsaWdpYmxlR2V0dGVyKG1ldGhvZE5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICBwcm9wTmFtZSA9IG1ldGhvZE5hbWUuY2hhckF0KDMpLnRvTG93ZXJDYXNlKCkgKyBtZXRob2ROYW1lLnNsaWNlKDQpO1xyXG4gICAgICAgICAgICAgICAgcmVuYW1lUHJvcGVydHlJZkV4aXN0cyhjbHMsIHByb3BOYW1lLCBwcm9wZXJ0aWVzKTtcclxuICAgICAgICAgICAgICAgIHJlZmFjdG9yVG9HZXR0ZXIoY2xzLCBtZXRob2QsIHByb3BOYW1lLCB0eXBlTWFwKTtcclxuICAgICAgICAgICAgICAgIHJlcGxhY2VNZXRob2RDYWxscyhjbHMsIGBnZXQke2NhcGl0YWxpemUocHJvcE5hbWUpfWAsIHByb3BOYW1lKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0VsaWdpYmxlU2V0dGVyKG1ldGhvZE5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICBwcm9wTmFtZSA9IG1ldGhvZE5hbWUuY2hhckF0KDMpLnRvTG93ZXJDYXNlKCkgKyBtZXRob2ROYW1lLnNsaWNlKDQpO1xyXG4gICAgICAgICAgICAgICAgcmVuYW1lUHJvcGVydHlJZkV4aXN0cyhjbHMsIHByb3BOYW1lLCBwcm9wZXJ0aWVzKTtcclxuICAgICAgICAgICAgICAgIHJlZmFjdG9yVG9TZXR0ZXIoY2xzLCBtZXRob2QsIHByb3BOYW1lLCB0eXBlTWFwKTtcclxuICAgICAgICAgICAgICAgIHJlcGxhY2VNZXRob2RDYWxscyhjbHMsIGBzZXQke2NhcGl0YWxpemUocHJvcE5hbWUpfWAsIHByb3BOYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbn0pO1xyXG5cclxucHJvamVjdC5zYXZlKCkudGhlbigoKSA9PiB7XHJcbiAgICBjb25zb2xlLmxvZyhcIlJlZmFjdG9yaW5nIGNvbXBsZXRlIVwiKTtcclxufSk7XHJcblxyXG5mdW5jdGlvbiBpc0VsaWdpYmxlR2V0dGVyKG1ldGhvZE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIG1ldGhvZE5hbWUuc3RhcnRzV2l0aChcImdldFwiKSAmJiAvXltBLVpdW2EtekEtWjAtOV0qJC8udGVzdChtZXRob2ROYW1lLnNsaWNlKDMpKSAmJiAhbWV0aG9kTmFtZS5pbmNsdWRlcyhcIkpTT05cIik7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzRWxpZ2libGVTZXR0ZXIobWV0aG9kTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gbWV0aG9kTmFtZS5zdGFydHNXaXRoKFwic2V0XCIpICYmIC9eW0EtWl1bYS16QS1aMC05XSokLy50ZXN0KG1ldGhvZE5hbWUuc2xpY2UoMykpO1xyXG59XHJcblxyXG5mdW5jdGlvbiByZW5hbWVQcm9wZXJ0eUlmRXhpc3RzKGNsczogYW55LCBwcm9wTmFtZTogc3RyaW5nLCBwcm9wZXJ0aWVzOiBhbnlbXSkge1xyXG4gICAgY29uc3QgZXhpc3RpbmdQcm9wZXJ0eSA9IHByb3BlcnRpZXMuZmluZChwcm9wID0+IHByb3AuZ2V0TmFtZSgpID09PSBwcm9wTmFtZSk7XHJcbiAgICBpZiAoZXhpc3RpbmdQcm9wZXJ0eSkge1xyXG4gICAgICAgIGV4aXN0aW5nUHJvcGVydHkucmVuYW1lKGBfJHtwcm9wTmFtZX1gKTtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gY3JlYXRlVHlwZU1hcChzb3VyY2VGaWxlOiBTb3VyY2VGaWxlKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICBjb25zdCB0eXBlTWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcclxuICAgIGNvbnN0IGltcG9ydERlY2xhcmF0aW9ucyA9IHNvdXJjZUZpbGUuZ2V0SW1wb3J0RGVjbGFyYXRpb25zKCk7XHJcblxyXG4gICAgaW1wb3J0RGVjbGFyYXRpb25zLmZvckVhY2goaW1wb3J0RGVjbCA9PiB7XHJcbiAgICAgICAgY29uc3QgbW9kdWxlU3BlY2lmaWVyID0gaW1wb3J0RGVjbC5nZXRNb2R1bGVTcGVjaWZpZXIoKS5nZXRUZXh0KCkucmVwbGFjZSgvWydcIl0vZywgJycpO1xyXG4gICAgICAgIGNvbnN0IGFic29sdXRlUGF0aCA9IHBhdGgucmVzb2x2ZShzb3VyY2VGaWxlLmdldERpcmVjdG9yeSgpLmdldFBhdGgoKSwgbW9kdWxlU3BlY2lmaWVyKTtcclxuICAgICAgICBjb25zdCBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZVBhdGgoYWJzb2x1dGVQYXRoKTtcclxuICAgICAgICBjb25zdCBuYW1lZEltcG9ydHMgPSBpbXBvcnREZWNsLmdldE5hbWVkSW1wb3J0cygpO1xyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRJbXBvcnQgPSBpbXBvcnREZWNsLmdldERlZmF1bHRJbXBvcnQoKTtcclxuXHJcbiAgICAgICAgbmFtZWRJbXBvcnRzLmZvckVhY2gobmFtZWRJbXBvcnQgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgTmFtZWQgaW1wb3J0OiAke25hbWVkSW1wb3J0LmdldE5hbWUoKX0sIHBhdGg6ICR7bm9ybWFsaXplZFBhdGh9YCk7XHJcbiAgICAgICAgICAgIHR5cGVNYXAuc2V0KG5hbWVkSW1wb3J0LmdldE5hbWUoKSwgbm9ybWFsaXplZFBhdGgpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAoZGVmYXVsdEltcG9ydCkge1xyXG4gICAgICAgICAgICB0eXBlTWFwLnNldChkZWZhdWx0SW1wb3J0LmdldFRleHQoKSwgbm9ybWFsaXplZFBhdGgpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB0eXBlTWFwO1xyXG59XHJcblxyXG5mdW5jdGlvbiByZWZhY3RvclRvR2V0dGVyKGNsczogYW55LCBtZXRob2Q6IGFueSwgcHJvcE5hbWU6IHN0cmluZywgdHlwZU1hcDogTWFwPHN0cmluZywgc3RyaW5nPikge1xyXG4gICAgY29uc3QgZ2V0dGVyTmFtZSA9IHByb3BOYW1lO1xyXG4gICAgY29uc3QgcmVuYW1lZFByb3AgPSBgXyR7cHJvcE5hbWV9YDtcclxuICAgIGNvbnN0IHJldHVyblR5cGUgPSBtZXRob2QuZ2V0UmV0dXJuVHlwZSgpLmdldFRleHQoKTtcclxuICAgIGNvbnN0IHNpbXBsaWZpZWRUeXBlID0gcmVwbGFjZUxvbmdUeXBlUGF0aHMocmV0dXJuVHlwZSwgdHlwZU1hcCk7XHJcblxyXG4gICAgY29uc3QgZ2V0dGVyQm9keSA9IG1ldGhvZC5nZXRCb2R5VGV4dCgpLnJlcGxhY2UobmV3IFJlZ0V4cChgdGhpc1xcXFwuJHtwcm9wTmFtZX1gLCAnZycpLCBgdGhpcy4ke3JlbmFtZWRQcm9wfWApO1xyXG5cclxuICAgIGNscy5hZGRHZXRBY2Nlc3Nvcih7XHJcbiAgICAgICAgbmFtZTogZ2V0dGVyTmFtZSxcclxuICAgICAgICBzdGF0ZW1lbnRzOiBnZXR0ZXJCb2R5LFxyXG4gICAgICAgIC8vIHJldHVyblR5cGU6IHNpbXBsaWZpZWRUeXBlLCAgLy8gZG9uJ3QgbmVlZCBhIHJldHVybiB0eXBlIGZvciBnZXR0ZXJcclxuICAgIH0pO1xyXG5cclxuICAgIG1ldGhvZC5yZW1vdmUoKTtcclxufVxyXG5cclxuZnVuY3Rpb24gcmVmYWN0b3JUb1NldHRlcihjbHM6IGFueSwgbWV0aG9kOiBhbnksIHByb3BOYW1lOiBzdHJpbmcsIHR5cGVNYXA6IE1hcDxzdHJpbmcsIHN0cmluZz4pIHtcclxuICAgIGNvbnN0IHNldHRlck5hbWUgPSBwcm9wTmFtZTtcclxuICAgIGNvbnN0IHJlbmFtZWRQcm9wID0gYF8ke3Byb3BOYW1lfWA7XHJcblxyXG4gICAgY29uc3QgcGFyYW1ldGVyID0gbWV0aG9kLmdldFBhcmFtZXRlcnMoKVswXTtcclxuICAgIGNvbnN0IHBhcmFtTmFtZSA9IHBhcmFtZXRlci5nZXROYW1lKCk7XHJcbiAgICBjb25zdCBwYXJhbVR5cGUgPSByZXBsYWNlTG9uZ1R5cGVQYXRocyhwYXJhbWV0ZXIuZ2V0VHlwZSgpLmdldFRleHQoKSwgdHlwZU1hcCk7XHJcblxyXG4gICAgY29uc3Qgc2V0dGVyQm9keSA9IG1ldGhvZC5nZXRCb2R5VGV4dCgpLnJlcGxhY2UobmV3IFJlZ0V4cChgdGhpc1xcXFwuJHtwcm9wTmFtZX1gLCAnZycpLCBgdGhpcy4ke3JlbmFtZWRQcm9wfWApO1xyXG5cclxuICAgIGNscy5hZGRTZXRBY2Nlc3Nvcih7XHJcbiAgICAgICAgbmFtZTogc2V0dGVyTmFtZSxcclxuICAgICAgICBzdGF0ZW1lbnRzOiBzZXR0ZXJCb2R5LFxyXG4gICAgICAgIHBhcmFtZXRlcnM6IFt7IG5hbWU6IHBhcmFtTmFtZSwgdHlwZTogcGFyYW1UeXBlIH1dLFxyXG4gICAgfSk7XHJcblxyXG4gICAgbWV0aG9kLnJlbW92ZSgpO1xyXG59XHJcblxyXG5mdW5jdGlvbiByZXBsYWNlTG9uZ1R5cGVQYXRocyh0eXBlOiBzdHJpbmcsIHR5cGVNYXA6IE1hcDxzdHJpbmcsIHN0cmluZz4pOiBzdHJpbmcge1xyXG4gICAgZm9yIChjb25zdCBbaW1wb3J0TmFtZSwgaW1wb3J0UGF0aF0gb2YgdHlwZU1hcC5lbnRyaWVzKCkpIHtcclxuICAgICAgICBjb25zdCBsb25nUGF0aCA9IGBpbXBvcnQoXCIke2ltcG9ydFBhdGh9XCIpJHtpbXBvcnROYW1lfWA7XHJcbiAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGBpbXBvcnRcXFxcKFtcIiddJHtub3JtYWxpemVQYXRoKGltcG9ydFBhdGgpfVtcIiddXFxcXClcXFxcLiR7aW1wb3J0TmFtZX1gLCAnZycpO1xyXG4gICAgICAgIGlmIChyZWdleC50ZXN0KHR5cGUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBpbXBvcnROYW1lO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0eXBlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBub3JtYWxpemVQYXRoKGZpbGVQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGZpbGVQYXRoLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcclxufVxyXG5cclxuZnVuY3Rpb24gcmVwbGFjZU1ldGhvZENhbGxzKGNsczogQ2xhc3NEZWNsYXJhdGlvbiwgbWV0aG9kTmFtZTogc3RyaW5nLCBwcm9wTmFtZTogc3RyaW5nKSB7XHJcbiAgICBjbHMuZ2V0RGVzY2VuZGFudHNPZktpbmQoU3ludGF4S2luZC5DYWxsRXhwcmVzc2lvbikuZm9yRWFjaChjYWxsRXhwciA9PiB7XHJcbiAgICAgICAgY29uc3QgZXhwciA9IGNhbGxFeHByLmdldEV4cHJlc3Npb24oKTtcclxuICAgICAgICBpZiAoZXhwci5nZXRUZXh0KCkgPT09IGB0aGlzLiR7bWV0aG9kTmFtZX1gKSB7XHJcbiAgICAgICAgICAgIGNhbGxFeHByLnJlcGxhY2VXaXRoVGV4dChgdGhpcy4ke3Byb3BOYW1lfWApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXhwci5nZXRUZXh0KCkgPT09IGB0aGlzLiR7bWV0aG9kTmFtZX1gICYmIGNhbGxFeHByLmdldEFyZ3VtZW50cygpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY2FsbEV4cHIucmVwbGFjZVdpdGhUZXh0KGB0aGlzLiR7cHJvcE5hbWV9ID0gJHtjYWxsRXhwci5nZXRBcmd1bWVudHMoKVswXS5nZXRUZXh0KCl9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNhcGl0YWxpemUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKTtcclxufVxyXG4iXX0=
@@ -39,4 +39,4 @@ const child = (0, child_process_1.spawn)('node', args, { stdio: 'inherit' });
39
39
  child.on('close', (code) => {
40
40
  process.exit(code);
41
41
  });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHMyZmFtaXgtY2xpLXdyYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHMyZmFtaXgtY2xpLXdyYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxpREFBc0M7QUFDdEMsMkNBQTZCO0FBRTdCLHFFQUFxRTtBQUNyRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0FBRTNELHNFQUFzRTtBQUN0RSxNQUFNLElBQUksR0FBRztJQUNYLHNCQUFzQjtJQUN0QiwwQ0FBMEM7SUFDMUMsT0FBTztJQUNQLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0NBQ3pCLENBQUM7QUFFRixNQUFNLEtBQUssR0FBRyxJQUFBLHFCQUFLLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBRXhELEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7SUFDekIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyQixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcblxuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5cbi8vIFJlc29sdmUgdGhlIHBhdGggdG8gdHMyZmFtaXgtY2xpLmpzIHJlbGF0aXZlIHRvIHRoZSB3cmFwcGVyIHNjcmlwdFxuY29uc3QgY2xpUGF0aCA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICd0czJmYW1peC1jbGkuanMnKTtcblxuLy8gQWxsb3cgdHNsb2cgdG8gZGlzcGxheSB0aGUgcHJvcGVyIFR5cGVTY3JpcHQgZmlsZXMgYW5kIGxpbmUgbnVtYmVyc1xuY29uc3QgYXJncyA9IFtcbiAgJy0tZW5hYmxlLXNvdXJjZS1tYXBzJyxcbiAgJy0tZXhwZXJpbWVudGFsLXNwZWNpZmllci1yZXNvbHV0aW9uPW5vZGUnLFxuICBjbGlQYXRoLFxuICAuLi5wcm9jZXNzLmFyZ3Yuc2xpY2UoMilcbl07XG5cbmNvbnN0IGNoaWxkID0gc3Bhd24oJ25vZGUnLCBhcmdzLCB7IHN0ZGlvOiAnaW5oZXJpdCcgfSk7XG5cbmNoaWxkLm9uKCdjbG9zZScsIChjb2RlKSA9PiB7XG4gIHByb2Nlc3MuZXhpdChjb2RlKTtcbn0pO1xuIl19
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHMyZmFtaXgtY2xpLXdyYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHMyZmFtaXgtY2xpLXdyYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxpREFBc0M7QUFDdEMsMkNBQTZCO0FBRTdCLHFFQUFxRTtBQUNyRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0FBRTNELHNFQUFzRTtBQUN0RSxNQUFNLElBQUksR0FBRztJQUNYLHNCQUFzQjtJQUN0QiwwQ0FBMEM7SUFDMUMsT0FBTztJQUNQLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0NBQ3pCLENBQUM7QUFFRixNQUFNLEtBQUssR0FBRyxJQUFBLHFCQUFLLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBRXhELEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7SUFDekIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyQixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcclxuXHJcbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XHJcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XHJcblxyXG4vLyBSZXNvbHZlIHRoZSBwYXRoIHRvIHRzMmZhbWl4LWNsaS5qcyByZWxhdGl2ZSB0byB0aGUgd3JhcHBlciBzY3JpcHRcclxuY29uc3QgY2xpUGF0aCA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICd0czJmYW1peC1jbGkuanMnKTtcclxuXHJcbi8vIEFsbG93IHRzbG9nIHRvIGRpc3BsYXkgdGhlIHByb3BlciBUeXBlU2NyaXB0IGZpbGVzIGFuZCBsaW5lIG51bWJlcnNcclxuY29uc3QgYXJncyA9IFtcclxuICAnLS1lbmFibGUtc291cmNlLW1hcHMnLFxyXG4gICctLWV4cGVyaW1lbnRhbC1zcGVjaWZpZXItcmVzb2x1dGlvbj1ub2RlJyxcclxuICBjbGlQYXRoLFxyXG4gIC4uLnByb2Nlc3MuYXJndi5zbGljZSgyKVxyXG5dO1xyXG5cclxuY29uc3QgY2hpbGQgPSBzcGF3bignbm9kZScsIGFyZ3MsIHsgc3RkaW86ICdpbmhlcml0JyB9KTtcclxuXHJcbmNoaWxkLm9uKCdjbG9zZScsIChjb2RlKSA9PiB7XHJcbiAgcHJvY2Vzcy5leGl0KGNvZGUpO1xyXG59KTtcclxuIl19
@@ -80,4 +80,4 @@ fs.writeFile(jsonFilePath, jsonOutput, (err) => {
80
80
  }
81
81
  });
82
82
  analyze_3.logger.info(`Created: ${jsonFilePath}`);
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHMyZmFtaXgtY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RzMmZhbWl4LWNsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLHVDQUF5QjtBQUN6QixrREFBMEI7QUFDMUIsdUNBQXFDO0FBRXJDLHVDQUFtQztBQUNuQyx1Q0FBbUM7QUFFbkMsTUFBTSxJQUFJLEdBQUcsZUFBSztLQUNiLE9BQU8sQ0FBQyxzRUFBc0UsRUFBRSx3REFBd0QsQ0FBQztLQUN6SSxPQUFPLENBQUMsa0VBQWtFLEVBQUUsc0RBQXNELENBQUM7S0FDbkksS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUM7S0FDbkIsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7S0FDYixLQUFLLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQztLQUNwQixLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztLQUNiLEtBQUssQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDO0tBQ3RCLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0tBQ2IsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7S0FDZixRQUFRLENBQUMsR0FBRyxFQUFFLDhGQUE4RixDQUFDO0tBQzdHLE9BQU8sQ0FBQyxXQUFXLENBQUM7S0FDcEIsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUM7S0FDM0IsUUFBUSxDQUFDLFdBQVcsRUFBRSxzSUFBc0ksQ0FBQztLQUM3SixZQUFZLENBQUMsT0FBTyxDQUFDO0tBQ3JCLFlBQVksQ0FBQyxRQUFRLENBQUM7S0FDdEIsU0FBUyxFQUFFLENBQUM7QUFFakIsdUNBQW1DO0FBQ25DLGdCQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBVyxDQUFDO0FBQzNELGdCQUFNLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxTQUFvQixDQUFDO0FBRW5ELE1BQU0sUUFBUSxHQUFHLElBQUksa0JBQVEsRUFBRSxDQUFDO0FBQ2hDLElBQUksUUFBeUIsQ0FBQztBQUU5QixJQUFLLElBQUksQ0FBQyxLQUFnQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO0lBQ25ELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQWUsQ0FBQztJQUM5Qyx5Q0FBeUM7SUFDekMsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqRixnQkFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQkFBTyxDQUFDO1FBQ3hCLGdCQUFnQjtRQUNoQixlQUFlLEVBQUU7WUFDYixPQUFPLEVBQUUsT0FBTztTQUNuQjtLQUNGLENBQUMsQ0FBQztJQUNMLFFBQVEsR0FBRyxRQUFRLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFckQsQ0FBQztLQUFNLENBQUM7SUFDSixNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO0lBQ2xDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQWUsQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakQsQ0FBQztBQUVELE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQztBQUNyRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBZ0IsQ0FBQztBQUUzQyxFQUFFLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtJQUMzQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQUMsTUFBTSxHQUFHLENBQUM7SUFBQyxDQUFDO0FBQzNCLENBQUMsQ0FBQyxDQUFDO0FBRUgsZ0JBQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxZQUFZLEVBQUUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgeWFyZ3MgZnJvbSBcInlhcmdzXCI7XG5pbXBvcnQgeyBJbXBvcnRlciB9IGZyb20gJy4vYW5hbHl6ZSc7XG5pbXBvcnQgeyBGYW1peFJlcG9zaXRvcnkgfSBmcm9tIFwiLi9saWIvZmFtaXgvZmFtaXhfcmVwb3NpdG9yeVwiO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gXCJ0cy1tb3JwaFwiO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSBcIi4vYW5hbHl6ZVwiO1xuXG5jb25zdCBhcmd2ID0geWFyZ3NcbiAgICAuZXhhbXBsZShgdHMyZmFtaXggLWkgXCJwYXRoL3RvL3Byb2plY3QvKiovKi50c1wiIC1vIEpTT05Nb2RlbHMvcHJvamVjdE5hbWUuanNvbmAsICdDcmVhdGVzIGEgSlNPTi1mb3JtYXQgRmFtaXggbW9kZWwgb2YgdHlwZXNjcmlwdCBmaWxlcy4nKVxuICAgIC5leGFtcGxlKGB0czJmYW1peCAtaSBwYXRoL3RvL3RzY29uZmlnLmpzb24gLW8gSlNPTk1vZGVscy9wcm9qZWN0TmFtZS5qc29uYCwgJ0NyZWF0ZXMgYSBKU09OLWZvcm1hdCBtb2RlbCBvZiBhIHR5cGVzY3JpcHQgcHJvamVjdC4nKVxuICAgIC5hbGlhcygnaScsICdpbnB1dCcpXG4gICAgLm5hcmdzKCdpJywgMSlcbiAgICAuYWxpYXMoJ28nLCAnb3V0cHV0JylcbiAgICAubmFyZ3MoJ28nLCAxKVxuICAgIC5hbGlhcygnbCcsICdsb2dsZXZlbCcpXG4gICAgLm5hcmdzKCdsJywgMSlcbiAgICAuZGVmYXVsdCgnbCcsIDMpXG4gICAgLmRlc2NyaWJlKCdsJywgJ1NldCBtaW5pbXVtIGxvZ2dpbmcgbGV2ZWwgMDogc2lsbHksIDE6IHRyYWNlLCAyOiBkZWJ1ZywgMzogaW5mbywgNDogd2FybiwgNTogZXJyb3IsIDY6IGZhdGFsJylcbiAgICAuYm9vbGVhbignZ3JhcGhlbWVzJylcbiAgICAuZGVmYXVsdCgnZ3JhcGhlbWVzJywgZmFsc2UpXG4gICAgLmRlc2NyaWJlKCdncmFwaGVtZXMnLCAnUHJvY2VzcyBncmFwaGVtZXMgKG91dHNpZGUgb2YgdGhlIEJNUCkgdG8gYXZvaWQgc291cmNlIGFuY2hvciBvZmZzZXQgZXJyb3JzIChkdWUgdG8gcGVyZm9ybWFuY2UgaXNzdWVzLCB0aGlzIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQpJylcbiAgICAuZGVtYW5kT3B0aW9uKCdpbnB1dCcpXG4gICAgLmRlbWFuZE9wdGlvbignb3V0cHV0JylcbiAgICAucGFyc2VTeW5jKCk7XG5cbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vYW5hbHl6ZSc7XG5sb2dnZXIuc2V0dGluZ3MubWluTGV2ZWwgPSBOdW1iZXIoYXJndi5sb2dsZXZlbCkgYXMgbnVtYmVyO1xuY29uZmlnLmV4cGVjdEdyYXBoZW1lcyA9IGFyZ3YuZ3JhcGhlbWVzIGFzIGJvb2xlYW47XG5cbmNvbnN0IGltcG9ydGVyID0gbmV3IEltcG9ydGVyKCk7XG5sZXQgZmFtaXhSZXA6IEZhbWl4UmVwb3NpdG9yeTtcblxuaWYgKChhcmd2LmlucHV0IGFzIHN0cmluZykuZW5kc1dpdGgoJ3RzY29uZmlnLmpzb24nKSkge1xuICAgIGNvbnN0IHRzQ29uZmlnRmlsZVBhdGggPSBhcmd2LmlucHV0IGFzIHN0cmluZztcbiAgICAvLyBnZXQgdGhlIGJhc2VVcmwgZnJvbSB0aGUgdHNjb25maWcgZmlsZVxuICAgIGNvbnN0IGJhc2VVcmwgPSB0c0NvbmZpZ0ZpbGVQYXRoLnN1YnN0cmluZygwLCB0c0NvbmZpZ0ZpbGVQYXRoLmxhc3RJbmRleE9mKCcvJykpO1xuICAgIGxvZ2dlci5pbmZvKGBiYXNlVXJsOiAke2Jhc2VVcmx9YCk7XG4gICAgY29uc3QgcHJvamVjdCA9IG5ldyBQcm9qZWN0KHtcbiAgICAgICAgdHNDb25maWdGaWxlUGF0aCxcbiAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgICAgICBiYXNlVXJsOiBiYXNlVXJsLFxuICAgICAgICB9XG4gICAgICB9KTsgXG4gICAgZmFtaXhSZXAgPSBpbXBvcnRlci5mYW1peFJlcEZyb21Qcm9qZWN0KHByb2plY3QpO1xuXG59IGVsc2Uge1xuICAgIGNvbnN0IHBhdGhzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgICBwYXRocy5wdXNoKGFyZ3YuaW5wdXQgYXMgc3RyaW5nKTtcbiAgICBmYW1peFJlcCA9IGltcG9ydGVyLmZhbWl4UmVwRnJvbVBhdGhzKHBhdGhzKTtcbn1cblxuY29uc3QganNvbk91dHB1dCA9IGZhbWl4UmVwLmV4cG9ydCh7Zm9ybWF0OiBcImpzb25cIn0pO1xuY29uc3QganNvbkZpbGVQYXRoID0gYXJndi5vdXRwdXQgYXMgc3RyaW5nO1xuXG5mcy53cml0ZUZpbGUoanNvbkZpbGVQYXRoLCBqc29uT3V0cHV0LCAoZXJyKSA9PiB7XG4gICAgaWYgKGVycikgeyB0aHJvdyBlcnI7IH1cbn0pO1xuXG5sb2dnZXIuaW5mbyhgQ3JlYXRlZDogJHtqc29uRmlsZVBhdGh9YCk7IFxuIl19
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHMyZmFtaXgtY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RzMmZhbWl4LWNsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLHVDQUF5QjtBQUN6QixrREFBMEI7QUFDMUIsdUNBQXFDO0FBRXJDLHVDQUFtQztBQUNuQyx1Q0FBbUM7QUFFbkMsTUFBTSxJQUFJLEdBQUcsZUFBSztLQUNiLE9BQU8sQ0FBQyxzRUFBc0UsRUFBRSx3REFBd0QsQ0FBQztLQUN6SSxPQUFPLENBQUMsa0VBQWtFLEVBQUUsc0RBQXNELENBQUM7S0FDbkksS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUM7S0FDbkIsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7S0FDYixLQUFLLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQztLQUNwQixLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztLQUNiLEtBQUssQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDO0tBQ3RCLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0tBQ2IsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7S0FDZixRQUFRLENBQUMsR0FBRyxFQUFFLDhGQUE4RixDQUFDO0tBQzdHLE9BQU8sQ0FBQyxXQUFXLENBQUM7S0FDcEIsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUM7S0FDM0IsUUFBUSxDQUFDLFdBQVcsRUFBRSxzSUFBc0ksQ0FBQztLQUM3SixZQUFZLENBQUMsT0FBTyxDQUFDO0tBQ3JCLFlBQVksQ0FBQyxRQUFRLENBQUM7S0FDdEIsU0FBUyxFQUFFLENBQUM7QUFFakIsdUNBQW1DO0FBQ25DLGdCQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBVyxDQUFDO0FBQzNELGdCQUFNLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxTQUFvQixDQUFDO0FBRW5ELE1BQU0sUUFBUSxHQUFHLElBQUksa0JBQVEsRUFBRSxDQUFDO0FBQ2hDLElBQUksUUFBeUIsQ0FBQztBQUU5QixJQUFLLElBQUksQ0FBQyxLQUFnQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO0lBQ25ELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQWUsQ0FBQztJQUM5Qyx5Q0FBeUM7SUFDekMsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqRixnQkFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQkFBTyxDQUFDO1FBQ3hCLGdCQUFnQjtRQUNoQixlQUFlLEVBQUU7WUFDYixPQUFPLEVBQUUsT0FBTztTQUNuQjtLQUNGLENBQUMsQ0FBQztJQUNMLFFBQVEsR0FBRyxRQUFRLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFckQsQ0FBQztLQUFNLENBQUM7SUFDSixNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO0lBQ2xDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQWUsQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakQsQ0FBQztBQUVELE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQztBQUNyRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBZ0IsQ0FBQztBQUUzQyxFQUFFLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtJQUMzQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQUMsTUFBTSxHQUFHLENBQUM7SUFBQyxDQUFDO0FBQzNCLENBQUMsQ0FBQyxDQUFDO0FBRUgsZ0JBQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxZQUFZLEVBQUUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxyXG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcclxuaW1wb3J0IHlhcmdzIGZyb20gXCJ5YXJnc1wiO1xyXG5pbXBvcnQgeyBJbXBvcnRlciB9IGZyb20gJy4vYW5hbHl6ZSc7XHJcbmltcG9ydCB7IEZhbWl4UmVwb3NpdG9yeSB9IGZyb20gXCIuL2xpYi9mYW1peC9mYW1peF9yZXBvc2l0b3J5XCI7XHJcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwidHMtbW9ycGhcIjtcclxuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSBcIi4vYW5hbHl6ZVwiO1xyXG5cclxuY29uc3QgYXJndiA9IHlhcmdzXHJcbiAgICAuZXhhbXBsZShgdHMyZmFtaXggLWkgXCJwYXRoL3RvL3Byb2plY3QvKiovKi50c1wiIC1vIEpTT05Nb2RlbHMvcHJvamVjdE5hbWUuanNvbmAsICdDcmVhdGVzIGEgSlNPTi1mb3JtYXQgRmFtaXggbW9kZWwgb2YgdHlwZXNjcmlwdCBmaWxlcy4nKVxyXG4gICAgLmV4YW1wbGUoYHRzMmZhbWl4IC1pIHBhdGgvdG8vdHNjb25maWcuanNvbiAtbyBKU09OTW9kZWxzL3Byb2plY3ROYW1lLmpzb25gLCAnQ3JlYXRlcyBhIEpTT04tZm9ybWF0IG1vZGVsIG9mIGEgdHlwZXNjcmlwdCBwcm9qZWN0LicpXHJcbiAgICAuYWxpYXMoJ2knLCAnaW5wdXQnKVxyXG4gICAgLm5hcmdzKCdpJywgMSlcclxuICAgIC5hbGlhcygnbycsICdvdXRwdXQnKVxyXG4gICAgLm5hcmdzKCdvJywgMSlcclxuICAgIC5hbGlhcygnbCcsICdsb2dsZXZlbCcpXHJcbiAgICAubmFyZ3MoJ2wnLCAxKVxyXG4gICAgLmRlZmF1bHQoJ2wnLCAzKVxyXG4gICAgLmRlc2NyaWJlKCdsJywgJ1NldCBtaW5pbXVtIGxvZ2dpbmcgbGV2ZWwgMDogc2lsbHksIDE6IHRyYWNlLCAyOiBkZWJ1ZywgMzogaW5mbywgNDogd2FybiwgNTogZXJyb3IsIDY6IGZhdGFsJylcclxuICAgIC5ib29sZWFuKCdncmFwaGVtZXMnKVxyXG4gICAgLmRlZmF1bHQoJ2dyYXBoZW1lcycsIGZhbHNlKVxyXG4gICAgLmRlc2NyaWJlKCdncmFwaGVtZXMnLCAnUHJvY2VzcyBncmFwaGVtZXMgKG91dHNpZGUgb2YgdGhlIEJNUCkgdG8gYXZvaWQgc291cmNlIGFuY2hvciBvZmZzZXQgZXJyb3JzIChkdWUgdG8gcGVyZm9ybWFuY2UgaXNzdWVzLCB0aGlzIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQpJylcclxuICAgIC5kZW1hbmRPcHRpb24oJ2lucHV0JylcclxuICAgIC5kZW1hbmRPcHRpb24oJ291dHB1dCcpXHJcbiAgICAucGFyc2VTeW5jKCk7XHJcblxyXG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuL2FuYWx5emUnO1xyXG5sb2dnZXIuc2V0dGluZ3MubWluTGV2ZWwgPSBOdW1iZXIoYXJndi5sb2dsZXZlbCkgYXMgbnVtYmVyO1xyXG5jb25maWcuZXhwZWN0R3JhcGhlbWVzID0gYXJndi5ncmFwaGVtZXMgYXMgYm9vbGVhbjtcclxuXHJcbmNvbnN0IGltcG9ydGVyID0gbmV3IEltcG9ydGVyKCk7XHJcbmxldCBmYW1peFJlcDogRmFtaXhSZXBvc2l0b3J5O1xyXG5cclxuaWYgKChhcmd2LmlucHV0IGFzIHN0cmluZykuZW5kc1dpdGgoJ3RzY29uZmlnLmpzb24nKSkge1xyXG4gICAgY29uc3QgdHNDb25maWdGaWxlUGF0aCA9IGFyZ3YuaW5wdXQgYXMgc3RyaW5nO1xyXG4gICAgLy8gZ2V0IHRoZSBiYXNlVXJsIGZyb20gdGhlIHRzY29uZmlnIGZpbGVcclxuICAgIGNvbnN0IGJhc2VVcmwgPSB0c0NvbmZpZ0ZpbGVQYXRoLnN1YnN0cmluZygwLCB0c0NvbmZpZ0ZpbGVQYXRoLmxhc3RJbmRleE9mKCcvJykpO1xyXG4gICAgbG9nZ2VyLmluZm8oYGJhc2VVcmw6ICR7YmFzZVVybH1gKTtcclxuICAgIGNvbnN0IHByb2plY3QgPSBuZXcgUHJvamVjdCh7XHJcbiAgICAgICAgdHNDb25maWdGaWxlUGF0aCxcclxuICAgICAgICBjb21waWxlck9wdGlvbnM6IHtcclxuICAgICAgICAgICAgYmFzZVVybDogYmFzZVVybCxcclxuICAgICAgICB9XHJcbiAgICAgIH0pOyBcclxuICAgIGZhbWl4UmVwID0gaW1wb3J0ZXIuZmFtaXhSZXBGcm9tUHJvamVjdChwcm9qZWN0KTtcclxuXHJcbn0gZWxzZSB7XHJcbiAgICBjb25zdCBwYXRocyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XHJcbiAgICBwYXRocy5wdXNoKGFyZ3YuaW5wdXQgYXMgc3RyaW5nKTtcclxuICAgIGZhbWl4UmVwID0gaW1wb3J0ZXIuZmFtaXhSZXBGcm9tUGF0aHMocGF0aHMpO1xyXG59XHJcblxyXG5jb25zdCBqc29uT3V0cHV0ID0gZmFtaXhSZXAuZXhwb3J0KHtmb3JtYXQ6IFwianNvblwifSk7XHJcbmNvbnN0IGpzb25GaWxlUGF0aCA9IGFyZ3Yub3V0cHV0IGFzIHN0cmluZztcclxuXHJcbmZzLndyaXRlRmlsZShqc29uRmlsZVBhdGgsIGpzb25PdXRwdXQsIChlcnIpID0+IHtcclxuICAgIGlmIChlcnIpIHsgdGhyb3cgZXJyOyB9XHJcbn0pO1xyXG5cclxubG9nZ2VyLmluZm8oYENyZWF0ZWQ6ICR7anNvbkZpbGVQYXRofWApOyBcclxuIl19