semantifold 0.3.0 → 0.4.0

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 (297) hide show
  1. package/README.md +58 -15
  2. package/build/index.d.ts +48 -2
  3. package/build/index.d.ts.map +1 -1
  4. package/build/index.js +57 -8
  5. package/build/src/artifact-path.d.ts +23 -1
  6. package/build/src/artifact-path.d.ts.map +1 -1
  7. package/build/src/artifact-path.js +45 -3
  8. package/build/src/artifacts.d.ts.map +1 -1
  9. package/build/src/artifacts.js +66 -1
  10. package/build/src/backends/c-validation.d.ts.map +1 -1
  11. package/build/src/backends/c-validation.js +7 -3
  12. package/build/src/backends/cpp-validation.d.ts.map +1 -1
  13. package/build/src/backends/cpp-validation.js +7 -3
  14. package/build/src/backends/csharp.js +7 -1
  15. package/build/src/backends/dart-runtime.d.ts +2 -0
  16. package/build/src/backends/dart-runtime.d.ts.map +1 -0
  17. package/build/src/backends/dart-runtime.js +41 -0
  18. package/build/src/backends/dart.d.ts +20 -0
  19. package/build/src/backends/dart.d.ts.map +1 -0
  20. package/build/src/backends/dart.js +321 -0
  21. package/build/src/backends/effects.d.ts +60 -0
  22. package/build/src/backends/effects.d.ts.map +1 -0
  23. package/build/src/backends/effects.js +746 -0
  24. package/build/src/backends/go.js +18 -4
  25. package/build/src/backends/identifiers.d.ts +36 -4
  26. package/build/src/backends/identifiers.d.ts.map +1 -1
  27. package/build/src/backends/identifiers.js +154 -10
  28. package/build/src/backends/index.d.ts.map +1 -1
  29. package/build/src/backends/index.js +27 -4
  30. package/build/src/backends/ios.d.ts +68 -0
  31. package/build/src/backends/ios.d.ts.map +1 -0
  32. package/build/src/backends/ios.js +1503 -0
  33. package/build/src/backends/java.d.ts.map +1 -1
  34. package/build/src/backends/java.js +429 -36
  35. package/build/src/backends/javascript.d.ts +6 -0
  36. package/build/src/backends/javascript.d.ts.map +1 -1
  37. package/build/src/backends/javascript.js +380 -24
  38. package/build/src/backends/kotlin-runtime.d.ts +3 -0
  39. package/build/src/backends/kotlin-runtime.d.ts.map +1 -0
  40. package/build/src/backends/kotlin-runtime.js +29 -0
  41. package/build/src/backends/kotlin.d.ts +23 -0
  42. package/build/src/backends/kotlin.d.ts.map +1 -0
  43. package/build/src/backends/kotlin.js +136 -0
  44. package/build/src/backends/native-validation.d.ts +2 -2
  45. package/build/src/backends/native-validation.d.ts.map +1 -1
  46. package/build/src/backends/native-validation.js +2 -2
  47. package/build/src/backends/ordered-expressions.d.ts.map +1 -1
  48. package/build/src/backends/ordered-expressions.js +39 -7
  49. package/build/src/backends/php-stdlib-support.d.ts +19 -0
  50. package/build/src/backends/php-stdlib-support.d.ts.map +1 -0
  51. package/build/src/backends/php-stdlib-support.js +227 -0
  52. package/build/src/backends/php.d.ts.map +1 -1
  53. package/build/src/backends/php.js +448 -33
  54. package/build/src/backends/program.d.ts +81 -0
  55. package/build/src/backends/program.d.ts.map +1 -0
  56. package/build/src/backends/program.js +1308 -0
  57. package/build/src/backends/python.js +7 -1
  58. package/build/src/backends/ruby.d.ts.map +1 -1
  59. package/build/src/backends/ruby.js +310 -24
  60. package/build/src/backends/rust-runtime.d.ts +7 -0
  61. package/build/src/backends/rust-runtime.d.ts.map +1 -0
  62. package/build/src/backends/rust-runtime.js +32 -0
  63. package/build/src/backends/rust-validation.d.ts +9 -0
  64. package/build/src/backends/rust-validation.d.ts.map +1 -0
  65. package/build/src/backends/rust-validation.js +78 -0
  66. package/build/src/backends/rust.d.ts +24 -0
  67. package/build/src/backends/rust.d.ts.map +1 -0
  68. package/build/src/backends/rust.js +344 -0
  69. package/build/src/backends/scalars.d.ts +14 -6
  70. package/build/src/backends/scalars.d.ts.map +1 -1
  71. package/build/src/backends/scalars.js +167 -17
  72. package/build/src/backends/shared.d.ts +23 -4
  73. package/build/src/backends/shared.d.ts.map +1 -1
  74. package/build/src/backends/shared.js +2158 -62
  75. package/build/src/backends/stdlib-support.d.ts +14 -0
  76. package/build/src/backends/stdlib-support.d.ts.map +1 -0
  77. package/build/src/backends/stdlib-support.js +237 -0
  78. package/build/src/backends/swift-runtime.d.ts +3 -0
  79. package/build/src/backends/swift-runtime.d.ts.map +1 -0
  80. package/build/src/backends/swift-runtime.js +14 -0
  81. package/build/src/backends/swift.d.ts +8 -0
  82. package/build/src/backends/swift.d.ts.map +1 -0
  83. package/build/src/backends/swift.js +127 -0
  84. package/build/src/backends/typescript.d.ts.map +1 -1
  85. package/build/src/backends/typescript.js +344 -24
  86. package/build/src/backends/wasm.d.ts +43 -0
  87. package/build/src/backends/wasm.d.ts.map +1 -0
  88. package/build/src/backends/wasm.js +2164 -0
  89. package/build/src/backends/writer.d.ts +235 -4
  90. package/build/src/backends/writer.d.ts.map +1 -1
  91. package/build/src/backends/writer.js +468 -3
  92. package/build/src/diagnostic.d.ts +4 -3
  93. package/build/src/diagnostic.d.ts.map +1 -1
  94. package/build/src/diagnostic.js +5 -3
  95. package/build/src/frontends/c.d.ts.map +1 -1
  96. package/build/src/frontends/c.js +5 -3
  97. package/build/src/frontends/cpp.d.ts.map +1 -1
  98. package/build/src/frontends/cpp.js +5 -3
  99. package/build/src/frontends/csharp.d.ts.map +1 -1
  100. package/build/src/frontends/csharp.js +7 -3
  101. package/build/src/frontends/dart.d.ts +10 -0
  102. package/build/src/frontends/dart.d.ts.map +1 -0
  103. package/build/src/frontends/dart.js +913 -0
  104. package/build/src/frontends/index.d.ts +3 -1
  105. package/build/src/frontends/index.d.ts.map +1 -1
  106. package/build/src/frontends/index.js +15 -5
  107. package/build/src/frontends/java.d.ts +110 -1
  108. package/build/src/frontends/java.d.ts.map +1 -1
  109. package/build/src/frontends/java.js +1725 -70
  110. package/build/src/frontends/javascript-typescript.d.ts +69 -1
  111. package/build/src/frontends/javascript-typescript.d.ts.map +1 -1
  112. package/build/src/frontends/javascript-typescript.js +1825 -93
  113. package/build/src/frontends/kotlin.d.ts +10 -0
  114. package/build/src/frontends/kotlin.d.ts.map +1 -0
  115. package/build/src/frontends/kotlin.js +685 -0
  116. package/build/src/frontends/php.d.ts +118 -1
  117. package/build/src/frontends/php.d.ts.map +1 -1
  118. package/build/src/frontends/php.js +1583 -76
  119. package/build/src/frontends/program.d.ts +74 -0
  120. package/build/src/frontends/program.d.ts.map +1 -0
  121. package/build/src/frontends/program.js +989 -0
  122. package/build/src/frontends/ruby.d.ts +68 -1
  123. package/build/src/frontends/ruby.d.ts.map +1 -1
  124. package/build/src/frontends/ruby.js +1446 -101
  125. package/build/src/frontends/rust-parser.d.ts +11 -0
  126. package/build/src/frontends/rust-parser.d.ts.map +1 -0
  127. package/build/src/frontends/rust-parser.js +15 -0
  128. package/build/src/frontends/rust.d.ts +14 -0
  129. package/build/src/frontends/rust.d.ts.map +1 -0
  130. package/build/src/frontends/rust.js +715 -0
  131. package/build/src/frontends/scalars.d.ts +10 -0
  132. package/build/src/frontends/scalars.d.ts.map +1 -1
  133. package/build/src/frontends/scalars.js +28 -2
  134. package/build/src/frontends/swift.d.ts +10 -0
  135. package/build/src/frontends/swift.d.ts.map +1 -0
  136. package/build/src/frontends/swift.js +860 -0
  137. package/build/src/frontends/types.d.ts +186 -0
  138. package/build/src/frontends/types.d.ts.map +1 -0
  139. package/build/src/frontends/types.js +634 -0
  140. package/build/src/language-registry.d.ts +46 -4
  141. package/build/src/language-registry.d.ts.map +1 -1
  142. package/build/src/language-registry.js +167 -13
  143. package/build/src/mapping.d.ts +2 -2
  144. package/build/src/mapping.d.ts.map +1 -1
  145. package/build/src/mapping.js +31 -10
  146. package/build/src/semantic/capabilities.d.ts +66 -0
  147. package/build/src/semantic/capabilities.d.ts.map +1 -0
  148. package/build/src/semantic/capabilities.js +649 -0
  149. package/build/src/semantic/effects.d.ts +26 -0
  150. package/build/src/semantic/effects.d.ts.map +1 -0
  151. package/build/src/semantic/effects.js +764 -0
  152. package/build/src/semantic/generics.d.ts +23 -0
  153. package/build/src/semantic/generics.d.ts.map +1 -0
  154. package/build/src/semantic/generics.js +61 -0
  155. package/build/src/semantic/lifetime.d.ts +37 -0
  156. package/build/src/semantic/lifetime.d.ts.map +1 -0
  157. package/build/src/semantic/lifetime.js +527 -0
  158. package/build/src/semantic/provenance.d.ts +9 -2
  159. package/build/src/semantic/provenance.d.ts.map +1 -1
  160. package/build/src/semantic/provenance.js +462 -20
  161. package/build/src/semantic/scalars.d.ts +11 -0
  162. package/build/src/semantic/scalars.d.ts.map +1 -1
  163. package/build/src/semantic/scalars.js +16 -1
  164. package/build/src/semantic/stdlib.d.ts +254 -0
  165. package/build/src/semantic/stdlib.d.ts.map +1 -0
  166. package/build/src/semantic/stdlib.js +880 -0
  167. package/build/src/semantic/types.d.ts +2952 -202
  168. package/build/src/semantic/types.d.ts.map +1 -1
  169. package/build/src/semantic/types.js +688 -15
  170. package/build/src/semantic/validate.d.ts +85 -5
  171. package/build/src/semantic/validate.d.ts.map +1 -1
  172. package/build/src/semantic/validate.js +2576 -98
  173. package/build/src/stdlib-facades.d.ts +304 -0
  174. package/build/src/stdlib-facades.d.ts.map +1 -0
  175. package/build/src/stdlib-facades.js +1167 -0
  176. package/build/src/stdlib-negotiation.d.ts +69 -0
  177. package/build/src/stdlib-negotiation.d.ts.map +1 -0
  178. package/build/src/stdlib-negotiation.js +403 -0
  179. package/build/src/stdlib-providers.d.ts +72 -0
  180. package/build/src/stdlib-providers.d.ts.map +1 -0
  181. package/build/src/stdlib-providers.js +339 -0
  182. package/build/src/toolchains.d.ts +55 -1
  183. package/build/src/toolchains.d.ts.map +1 -1
  184. package/build/src/toolchains.js +15 -4
  185. package/docs/architecture.md +45 -13
  186. package/docs/dart.md +60 -0
  187. package/docs/goals.md +3 -3
  188. package/docs/ios.md +121 -0
  189. package/docs/kotlin.md +42 -0
  190. package/docs/language-support.md +231 -26
  191. package/docs/multi-file-modules.md +52 -0
  192. package/docs/parser-qualification.md +121 -8
  193. package/docs/plans/2026-09-05-standard-library-portability.md +10 -10
  194. package/docs/rust.md +88 -0
  195. package/docs/source-maps.md +15 -7
  196. package/docs/standard-library-portability.md +39 -8
  197. package/docs/swift.md +44 -0
  198. package/docs/testing.md +366 -4
  199. package/docs/webassembly.md +52 -0
  200. package/index.js +63 -8
  201. package/node_modules/semantifold-tree-sitter-legacy-internal/README.md +2 -2
  202. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/LICENSE +21 -0
  203. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/README.md +45 -0
  204. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/binding.gyp +30 -0
  205. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/bindings/node/binding.cc +20 -0
  206. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/bindings/node/binding_test.js +9 -0
  207. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/bindings/node/index.d.ts +28 -0
  208. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/bindings/node/index.js +11 -0
  209. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/grammar.js +1630 -0
  210. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/package.json +64 -0
  211. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/prebuilds/darwin-arm64/tree-sitter-rust.node +0 -0
  212. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/prebuilds/darwin-x64/tree-sitter-rust.node +0 -0
  213. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/prebuilds/linux-arm64/tree-sitter-rust.node +0 -0
  214. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/prebuilds/linux-x64/tree-sitter-rust.node +0 -0
  215. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/prebuilds/win32-arm64/tree-sitter-rust.node +0 -0
  216. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/prebuilds/win32-x64/tree-sitter-rust.node +0 -0
  217. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/queries/highlights.scm +159 -0
  218. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/queries/injections.scm +9 -0
  219. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/queries/tags.scm +60 -0
  220. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/src/grammar.json +9405 -0
  221. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/src/node-types.json +5399 -0
  222. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/src/parser.c +192569 -0
  223. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/src/scanner.c +393 -0
  224. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/src/tree_sitter/alloc.h +54 -0
  225. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/src/tree_sitter/array.h +290 -0
  226. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/src/tree_sitter/parser.h +266 -0
  227. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/tree-sitter-rust.wasm +0 -0
  228. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-rust/tree-sitter.json +53 -0
  229. package/node_modules/semantifold-tree-sitter-legacy-internal/package.json +3 -2
  230. package/node_modules/semantifold-tree-sitter-legacy-internal/src/c.js +5 -4
  231. package/package.json +5 -2
  232. package/src/artifact-path.js +47 -2
  233. package/src/artifacts.js +67 -0
  234. package/src/backends/c-validation.js +6 -1
  235. package/src/backends/cpp-validation.js +6 -1
  236. package/src/backends/csharp.js +3 -0
  237. package/src/backends/dart-runtime.js +41 -0
  238. package/src/backends/dart.js +326 -0
  239. package/src/backends/effects.js +705 -0
  240. package/src/backends/go.js +14 -2
  241. package/src/backends/identifiers.js +160 -9
  242. package/src/backends/index.js +27 -2
  243. package/src/backends/ios.js +1612 -0
  244. package/src/backends/java.js +454 -36
  245. package/src/backends/javascript.js +389 -23
  246. package/src/backends/kotlin-runtime.js +29 -0
  247. package/src/backends/kotlin.js +141 -0
  248. package/src/backends/native-validation.js +1 -1
  249. package/src/backends/ordered-expressions.js +40 -6
  250. package/src/backends/php-stdlib-support.js +239 -0
  251. package/src/backends/php.js +469 -32
  252. package/src/backends/program.js +1407 -0
  253. package/src/backends/python.js +3 -0
  254. package/src/backends/ruby.js +326 -23
  255. package/src/backends/rust-runtime.js +34 -0
  256. package/src/backends/rust-validation.js +75 -0
  257. package/src/backends/rust.js +335 -0
  258. package/src/backends/scalars.js +141 -16
  259. package/src/backends/shared.js +2304 -124
  260. package/src/backends/stdlib-support.js +234 -0
  261. package/src/backends/swift-runtime.js +14 -0
  262. package/src/backends/swift.js +132 -0
  263. package/src/backends/typescript.js +349 -23
  264. package/src/backends/wasm.js +2208 -0
  265. package/src/backends/writer.js +520 -2
  266. package/src/diagnostic.js +4 -2
  267. package/src/frontends/c.js +4 -2
  268. package/src/frontends/cpp.js +4 -2
  269. package/src/frontends/csharp.js +4 -2
  270. package/src/frontends/dart.js +963 -0
  271. package/src/frontends/index.js +14 -4
  272. package/src/frontends/java.js +1977 -69
  273. package/src/frontends/javascript-typescript.js +2046 -102
  274. package/src/frontends/kotlin.js +713 -0
  275. package/src/frontends/php.js +1725 -79
  276. package/src/frontends/program.js +1062 -0
  277. package/src/frontends/ruby.js +1624 -98
  278. package/src/frontends/rust-parser.js +18 -0
  279. package/src/frontends/rust.js +714 -0
  280. package/src/frontends/scalars.js +31 -1
  281. package/src/frontends/swift.js +893 -0
  282. package/src/frontends/types.js +750 -0
  283. package/src/language-registry.js +172 -12
  284. package/src/mapping.js +33 -9
  285. package/src/semantic/capabilities.js +671 -0
  286. package/src/semantic/effects.js +737 -0
  287. package/src/semantic/generics.js +58 -0
  288. package/src/semantic/lifetime.js +517 -0
  289. package/src/semantic/provenance.js +412 -19
  290. package/src/semantic/scalars.js +17 -0
  291. package/src/semantic/stdlib.js +921 -0
  292. package/src/semantic/types.js +765 -14
  293. package/src/semantic/validate.js +2934 -209
  294. package/src/stdlib-facades.js +1211 -0
  295. package/src/stdlib-negotiation.js +446 -0
  296. package/src/stdlib-providers.js +377 -0
  297. package/src/toolchains.js +16 -3
@@ -1,7 +1,11 @@
1
1
  // @ts-check
2
2
  import { unsupportedCapability } from "../diagnostic.js";
3
- /** @type {Record<import("../semantic/types.js").SemanticLanguage, RegExp>} */
3
+ /** @type {Record<Exclude<import("../semantic/types.js").BackendLanguage, "ios">, RegExp>} */
4
4
  const identifierPatterns = {
5
+ dart: /^(?:_|\p{L})(?:_|\p{L}|\p{Nd})*$/u,
6
+ kotlin: /^(?:_|\p{L})(?:_|\p{L}|\p{Nd})*$/u,
7
+ swift: /^(?:_|\p{XID_Start})(?:_|\p{XID_Continue})*$/u,
8
+ rust: /^[A-Za-z_][A-Za-z0-9_]*$/u,
5
9
  cpp: /^[A-Za-z][A-Za-z0-9_]*$/u,
6
10
  c: /^[A-Za-z][A-Za-z0-9_]*$/u,
7
11
  csharp: /^[A-Za-z_][A-Za-z0-9_]*$/u,
@@ -11,10 +15,42 @@ const identifierPatterns = {
11
15
  php: /^[A-Za-z_][A-Za-z0-9_]*$/u,
12
16
  python: /^(?:_|\p{XID_Start})(?:_|\p{XID_Continue})*$/u,
13
17
  ruby: /^[a-z_][A-Za-z0-9_]*$/u,
14
- typescript: /^[A-Za-z_$][A-Za-z0-9_$]*$/u
18
+ typescript: /^[A-Za-z_$][A-Za-z0-9_$]*$/u,
19
+ wasm: /^(?:[$_]|\p{XID_Start})(?:[$_]|\p{XID_Continue})*$/u
15
20
  };
16
- /** @type {Record<import("../semantic/types.js").SemanticLanguage, Set<string>>} */
21
+ /** @type {Record<Exclude<import("../semantic/types.js").BackendLanguage, "ios">, Set<string>>} */
17
22
  const reservedWords = {
23
+ dart: new Set([
24
+ "Function", "Never", "Object", "RangeError", "String", "abstract", "as", "assert", "async", "await", "base",
25
+ "bool", "break", "case", "catch", "class", "const", "continue", "covariant", "default", "deferred", "do",
26
+ "double", "dynamic", "else", "enum", "export", "extends", "extension", "external", "factory", "false", "final",
27
+ "finally", "for", "get", "hide", "if", "implements", "import", "in", "int", "interface", "is", "late", "library",
28
+ "main", "mixin", "native", "new", "null", "num", "of", "on", "operator", "part", "print", "required", "rethrow",
29
+ "return", "sealed", "set", "show", "static", "super", "switch", "sync", "this", "throw", "true", "try", "typedef",
30
+ "var", "void", "when", "while", "with", "yield", "BigInt", "_"
31
+ ]),
32
+ kotlin: new Set([
33
+ "as", "break", "class", "continue", "do", "else", "false", "for", "fun", "if", "in", "interface", "is", "null",
34
+ "object", "package", "return", "super", "this", "throw", "true", "try", "typealias", "typeof", "val", "var", "when",
35
+ "while", "_", "main", "println", "Long", "Boolean", "String", "Math", "ArithmeticException"
36
+ ]),
37
+ swift: new Set([
38
+ "Any", "Self", "Type", "Protocol", "actor", "any", "as", "associatedtype", "associativity", "async", "await", "borrowing",
39
+ "break", "case", "catch", "class", "consume", "consuming", "continue", "convenience", "copy", "default", "defer", "deinit",
40
+ "didSet", "distributed", "do", "dynamic", "else", "enum", "extension", "fallthrough", "false", "fileprivate", "final", "for",
41
+ "func", "get", "guard", "if", "import", "in", "indirect", "infix", "init", "inout", "internal", "is", "isolated", "lazy",
42
+ "let", "macro", "mutating", "nil", "nonisolated", "nonmutating", "open", "operator", "optional", "override", "package",
43
+ "postfix", "precedence", "precedencegroup", "prefix", "private", "protocol", "public", "repeat", "required", "rethrows", "return",
44
+ "safe", "self", "sending", "set", "some", "static", "struct", "subscript", "super", "switch", "throws", "true", "try",
45
+ "typealias", "unowned", "unsafe", "var", "weak", "where", "while", "willSet", "yield", "_", "Bool", "Int", "Int64", "String",
46
+ "Swift", "main", "print"
47
+ ]),
48
+ rust: new Set([
49
+ "as", "async", "await", "break", "const", "continue", "crate", "dyn", "else", "enum", "extern", "false", "fn", "for", "if", "impl", "in",
50
+ "let", "loop", "match", "mod", "move", "mut", "pub", "ref", "return", "self", "Self", "static", "struct", "super", "trait", "true", "type",
51
+ "unsafe", "use", "where", "while", "abstract", "become", "box", "do", "final", "macro", "override", "priv", "typeof", "unsized", "virtual",
52
+ "yield", "try", "union", "_", "main", "String", "std", "i64", "bool"
53
+ ]),
18
54
  cpp: new Set([
19
55
  "alignas", "alignof", "and", "and_eq", "asm", "auto", "bitand", "bitor", "bool", "break", "case", "catch", "char", "char8_t", "char16_t", "char32_t", "class", "compl", "concept", "const", "consteval", "constexpr", "constinit", "const_cast", "continue", "co_await", "co_return", "co_yield", "decltype", "default", "delete", "do", "double", "dynamic_cast", "else", "enum", "explicit", "export", "extern", "false", "float", "for", "friend", "goto", "if", "inline", "int", "long", "mutable", "namespace", "new", "noexcept", "not", "not_eq", "nullptr", "operator", "or", "or_eq", "private", "protected", "public", "register", "reinterpret_cast", "requires", "return", "short", "signed", "sizeof", "static", "static_assert", "static_cast", "struct", "switch", "template", "this", "thread_local", "throw", "true", "try", "typedef", "typeid", "typename", "union", "unsigned", "using", "virtual", "void", "volatile", "wchar_t", "while", "xor", "xor_eq", "std", "string", "numeric_limits",
20
56
  // The qualified libstdc++ <string> include chain also exposes these global names.
@@ -105,15 +141,67 @@ const reservedWords = {
105
141
  "override", "package", "private", "protected", "public", "readonly", "require", "return", "satisfies", "set",
106
142
  "static", "string", "super", "switch", "symbol", "this", "throw", "true", "try", "type", "typeof", "undefined",
107
143
  "unique", "unknown", "using", "var", "void", "while", "with", "yield"
108
- ])
144
+ ]),
145
+ wasm: new Set()
109
146
  };
110
147
  const phpInvalidParameterBindings = new Set([
111
148
  "GLOBALS", "_COOKIE", "_ENV", "_FILES", "_GET", "_POST", "_REQUEST", "_SERVER", "_SESSION", "this"
112
149
  ]);
113
150
  const phpInvalidAssignedBindings = new Set(["GLOBALS", "this"]);
151
+ /** @type {Readonly<Partial<Record<import("../semantic/types.js").BackendLanguage, Set<string>>>>} */
152
+ const reservedTypeNames = Object.freeze({
153
+ java: new Set(["Boolean", "Integer", "Main", "Math", "Object", "String", "System"]),
154
+ javascript: new Set(["Array", "Boolean", "Map", "Math", "Number", "Object", "Reflect", "String"]),
155
+ php: new Set([
156
+ "addressinfo", "allowdynamicproperties", "appenditerator", "argumentcounterror", "arithmeticerror", "arrayaccess",
157
+ "arrayiterator", "arrayobject", "assertionerror", "attribute", "backedenum", "badfunctioncallexception",
158
+ "badmethodcallexception", "cachingiterator",
159
+ "callbackfilteriterator", "closedgeneratorexception", "closure", "compileerror", "countable", "dateerror", "dateexception",
160
+ "dateinterval", "dateinvalidoperationexception", "dateinvalidtimezoneexception", "datemalformedintervalstringexception",
161
+ "datemalformedperiodstringexception", "datemalformedstringexception", "dateobjecterror", "dateperiod", "daterangeerror",
162
+ "datetime", "datetimeimmutable", "datetimeinterface", "datetimezone", "deflatecontext", "delayedtargetvalidation",
163
+ "deprecated", "directory", "directoryiterator", "divisionbyzeroerror", "domainexception", "emptyiterator", "error",
164
+ "errorexception", "exception", "ffi", "fiber", "fibererror", "filesystemiterator", "filteriterator", "finfo", "generator",
165
+ "globiterator", "hashcontext", "infiniteiterator", "inflatecontext", "internaliterator", "invalidargumentexception",
166
+ "iterator", "iteratoraggregate", "iteratoriterator", "jsonexception", "jsonserializable", "lengthexception",
167
+ "libxmlerror", "limititerator", "logicexception", "multipleiterator", "nodiscard", "norewinditerator",
168
+ "opensslasymmetrickey", "opensslcertificate", "opensslcertificatesigningrequest",
169
+ "outofboundsexception", "outofrangeexception", "outeriterator", "overflowexception", "override", "parentiterator",
170
+ "parseerror", "pdo", "pdoexception", "pdorow", "pdostatement", "phar", "phardata", "pharexception", "pharfileinfo",
171
+ "php_user_filter", "phptoken", "propertyhooktype", "rangeexception", "recursivearrayiterator", "recursivecachingiterator",
172
+ "recursivecallbackfilteriterator",
173
+ "recursivedirectoryiterator", "recursivefilteriterator", "recursiveiterator", "recursiveiteratoriterator",
174
+ "recursiveregexiterator", "recursivetreeiterator", "reflection", "reflectionattribute", "reflectionclass",
175
+ "reflectionclassconstant", "reflectionconstant", "reflectionenum", "reflectionenumbackedcase", "reflectionenumunitcase",
176
+ "reflectionexception", "reflectionextension", "reflectionfiber", "reflectionfunction", "reflectionfunctionabstract",
177
+ "reflectiongenerator", "reflectionintersectiontype", "reflectionmethod", "reflectionnamedtype", "reflectionobject",
178
+ "reflectionparameter", "reflectionproperty", "reflectionreference", "reflectiontype", "reflectionuniontype",
179
+ "reflectionzendextension", "reflector", "regexiterator", "requestparsebodyexception", "returntypewillchange",
180
+ "roundingmode", "runtimeexception", "seekableiterator", "sensitiveparameter", "sensitiveparametervalue", "serializable",
181
+ "sessionhandler", "sessionhandlerinterface", "sessionidinterface", "sessionupdatetimestamphandlerinterface", "shmop",
182
+ "socket", "sodiumexception", "spldoublylinkedlist", "splfileinfo",
183
+ "splfileobject", "splfixedarray", "splheap", "splmaxheap", "splminheap", "splobjectstorage", "splobserver",
184
+ "splpriorityqueue", "splqueue", "splstack", "splsubject", "spltempfileobject", "stdclass", "streambucket", "stringable",
185
+ "sysvmessagequeue", "sysvsemaphore", "sysvsharedmemory", "throwable", "traversable", "typeerror", "underflowexception",
186
+ "unexpectedvalueexception", "unhandledmatcherror", "unitenum", "valueerror", "weakmap", "weakreference"
187
+ ]),
188
+ ruby: new Set([
189
+ "ArgumentError", "Array", "BasicObject", "Binding", "Class", "ClosedQueueError", "Comparable", "Complex", "Data", "Dir",
190
+ "Encoding", "EncodingError", "Enumerable", "Enumerator", "EOFError", "Errno", "Exception", "FalseClass", "Fiber",
191
+ "FiberError", "File", "FileTest", "Float", "FrozenError", "GC", "Hash", "IO", "IOError", "IndexError", "Integer",
192
+ "Interrupt", "Kernel", "KeyError", "LoadError", "LocalJumpError", "Marshal", "MatchData", "Math", "Method", "Module",
193
+ "Mutex", "NameError", "NilClass", "NoMemoryError", "NoMethodError", "NotImplementedError", "Numeric", "Object",
194
+ "ObjectSpace", "Proc", "Process", "Queue", "Ractor", "Random", "Range", "Rational", "Regexp", "RegexpError", "RubyVM",
195
+ "RuntimeError", "ScriptError", "SecurityError", "Signal", "SignalException", "SizedQueue", "StandardError", "StopIteration",
196
+ "String", "Struct", "Symbol", "SyntaxError", "SystemCallError", "SystemExit", "SystemStackError", "Thread", "ThreadError",
197
+ "ThreadGroup", "Time", "TracePoint", "TrueClass", "TypeError", "UnboundMethod", "UncaughtThrowError", "Warning",
198
+ "ZeroDivisionError"
199
+ ]),
200
+ typescript: new Set(["Array", "Boolean", "Map", "Math", "Number", "Object", "ReadonlyArray", "ReadonlyMap", "Reflect", "String"])
201
+ });
114
202
  /**
115
203
  * Validates an identifier against the target backend's deliberately narrow lexical contract.
116
- * @param {import("../semantic/types.js").SemanticLanguage} language - Target language.
204
+ * @param {import("../semantic/types.js").BackendLanguage} language - Target language.
117
205
  * @param {unknown} name - Candidate semantic identifier.
118
206
  * @param {string} role - Identifier role for diagnostics.
119
207
  * @param {import("../semantic/types.js").SourceLocation | undefined} location - Originating location.
@@ -123,10 +211,15 @@ export function validateTargetIdentifier(language, name, role, location) {
123
211
  if (typeof name != "string")
124
212
  unsupportedCapability(language, `${role} identifier`, location);
125
213
  const reservedName = language == "php" ? name.toLowerCase() : name;
126
- if (!identifierPatterns[language].test(name) || reservedWords[language].has(reservedName) ||
214
+ const syntaxLanguage = language == "ios" ? "swift" : language;
215
+ if (!identifierPatterns[syntaxLanguage].test(name) || reservedWords[syntaxLanguage].has(reservedName) ||
127
216
  language == "python" && name.normalize("NFKC") != name ||
128
217
  language == "c" && !isCIdentifier(name) ||
129
- language == "cpp" && !isCppIdentifier(name)) {
218
+ language == "rust" && !isRustIdentifier(name) ||
219
+ language == "cpp" && !isCppIdentifier(name) ||
220
+ language == "dart" && !isDartIdentifier(name) ||
221
+ language == "swift" && (!isSwiftIdentifier(name) || name.normalize("NFC") != name) ||
222
+ language == "kotlin" && (!isKotlinIdentifier(name) || name.normalize("NFC") != name)) {
130
223
  unsupportedCapability(language, `${role} identifier '${name}'`, location);
131
224
  }
132
225
  }
@@ -142,7 +235,7 @@ export function isCIdentifier(name) {
142
235
  }
143
236
  /**
144
237
  * Validates a binding identifier against target restrictions beyond general identifier syntax.
145
- * @param {import("../semantic/types.js").SemanticLanguage} language - Target language.
238
+ * @param {import("../semantic/types.js").BackendLanguage} language - Target language.
146
239
  * @param {unknown} name - Candidate semantic identifier.
147
240
  * @param {string} role - Binding role for diagnostics.
148
241
  * @param {import("../semantic/types.js").SourceLocation | undefined} location - Originating location.
@@ -153,12 +246,29 @@ export function validateTargetBindingIdentifier(language, name, role, location)
153
246
  const invalidTypeScriptBinding = language == "typescript" && (name == "arguments" || name == "eval");
154
247
  const invalidPhpVariable = language == "php" && typeof name == "string" &&
155
248
  ((role == "parameter" && phpInvalidParameterBindings.has(name)) ||
156
- ((role == "local" || role == "assignment target") && phpInvalidAssignedBindings.has(name)));
249
+ ((role == "local" || role == "assignment target" || role == "catch binding") && phpInvalidAssignedBindings.has(name)));
157
250
  const invalidRubyBinding = language == "ruby" && typeof name == "string" && /^_[1-9]$/u.test(name);
158
251
  if (invalidTypeScriptBinding || invalidPhpVariable || invalidRubyBinding) {
159
252
  unsupportedCapability(language, `${role} identifier '${name}'`, location);
160
253
  }
161
254
  }
255
+ /**
256
+ * Validates a nominal record/type declaration name for the original-five targets.
257
+ * @param {import("../semantic/types.js").BackendLanguage} language - Backend language.
258
+ * @param {unknown} name - Candidate type name.
259
+ * @param {import("../semantic/types.js").SourceLocation | undefined} location - Declaration location.
260
+ * @returns {void}
261
+ */
262
+ export function validateTargetTypeIdentifier(language, name, location) {
263
+ if (typeof name != "string" || !/^[A-Z][A-Za-z0-9_]*$/u.test(name)) {
264
+ unsupportedCapability(language, `record type identifier '${String(name)}'`, location);
265
+ }
266
+ const reservedName = language == "php" ? name.toLowerCase() : name;
267
+ const syntaxLanguage = language == "ios" ? "swift" : language;
268
+ if (reservedWords[syntaxLanguage].has(reservedName) || reservedTypeNames[language]?.has(reservedName)) {
269
+ unsupportedCapability(language, `record type identifier '${name}'`, location);
270
+ }
271
+ }
162
272
  /**
163
273
  * Protects C++ keywords, the actual included C library names/macros and the scaffold namespace.
164
274
  * @param {string} name - Caller scalar binding or function name.
@@ -167,4 +277,38 @@ export function validateTargetBindingIdentifier(language, name, role, location)
167
277
  export function isCppIdentifier(name) {
168
278
  return isCIdentifier(name) && !name.includes("__") && !reservedWords.cpp.has(name);
169
279
  }
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpZmllcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFja2VuZHMvaWRlbnRpZmllcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGtCQUFrQixDQUFBO0FBRXRELDhFQUE4RTtBQUM5RSxNQUFNLGtCQUFrQixHQUFHO0lBQ3pCLEdBQUcsRUFBRSwwQkFBMEI7SUFDL0IsQ0FBQyxFQUFFLDBCQUEwQjtJQUM3QixNQUFNLEVBQUUsMkJBQTJCO0lBQ25DLEVBQUUsRUFBRSwyQkFBMkI7SUFDL0IsSUFBSSxFQUFFLDZCQUE2QjtJQUNuQyxVQUFVLEVBQUUsNkJBQTZCO0lBQ3pDLEdBQUcsRUFBRSwyQkFBMkI7SUFDaEMsTUFBTSxFQUFFLCtDQUErQztJQUN2RCxJQUFJLEVBQUUsd0JBQXdCO0lBQzlCLFVBQVUsRUFBRSw2QkFBNkI7Q0FDMUMsQ0FBQTtBQUVELG1GQUFtRjtBQUNuRixNQUFNLGFBQWEsR0FBRztJQUNwQixHQUFHLEVBQUUsSUFBSSxHQUFHLENBQUM7UUFDWCxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0I7UUFDbDlCLGtGQUFrRjtRQUNsRixNQUFNLEVBQUUsUUFBUTtLQUNqQixDQUFDO0lBQ0YsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDO1FBQ1QsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRO1FBQ3pHLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUTtRQUMxRyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPO1FBQ25HLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVU7UUFDN0gsV0FBVyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTTtRQUMxRyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsYUFBYTtRQUNoSCxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLE9BQU87UUFDakcsS0FBSyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTO1FBQ3ZHLGNBQWMsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxVQUFVO1FBQ3RFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUztRQUMxRixTQUFTLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTO1FBQ3pHLFFBQVEsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVM7UUFDbkcsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVU7UUFDMUcsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVE7UUFDcEcsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUTtRQUMxRyxlQUFlLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTTtRQUM1RyxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRO1FBQ3RHLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVM7UUFDekcsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxRQUFRO0tBQzdELENBQUM7SUFDRixNQUFNLEVBQUUsSUFBSSxHQUFHLENBQUM7UUFDZCxXQUFXLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJO1FBQ3RHLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTztRQUN0RCxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUztRQUNwRyxVQUFVLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFFBQVE7UUFDekgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNO1FBQ3hHLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU07UUFDNUcsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJO1FBQzFHLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVO1FBQ2pILFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUTtRQUNoSCxZQUFZLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU87UUFDL0csV0FBVyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU07UUFDNUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTztLQUNsQyxDQUFDO0lBQ0YsRUFBRSxFQUFFLElBQUksR0FBRyxDQUFDO1FBQ1YsR0FBRyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNO1FBQ3RHLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFLO1FBQ3JHLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSztLQUMxQixDQUFDO0lBQ0YsSUFBSSxFQUFFLElBQUksR0FBRyxDQUFDO1FBQ1osR0FBRyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVO1FBQzVHLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSztRQUM1RyxNQUFNLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxRQUFRLEVB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LElBQUksZ0JBQWdCLElBQUksR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0lBQzNFLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsSUFBSTtJQUNsQyxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUNwRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCB7dW5zdXBwb3J0ZWRDYXBhYmlsaXR5fSBmcm9tIFwiLi4vZGlhZ25vc3RpYy5qc1wiXG5cbi8qKiBAdHlwZSB7UmVjb3JkPGltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljTGFuZ3VhZ2UsIFJlZ0V4cD59ICovXG5jb25zdCBpZGVudGlmaWVyUGF0dGVybnMgPSB7XG4gIGNwcDogL15bQS1aYS16XVtBLVphLXowLTlfXSokL3UsXG4gIGM6IC9eW0EtWmEtel1bQS1aYS16MC05X10qJC91LFxuICBjc2hhcnA6IC9eW0EtWmEtel9dW0EtWmEtejAtOV9dKiQvdSxcbiAgZ286IC9eW0EtWmEtel9dW0EtWmEtejAtOV9dKiQvdSxcbiAgamF2YTogL15bQS1aYS16XyRdW0EtWmEtejAtOV8kXSokL3UsXG4gIGphdmFzY3JpcHQ6IC9eW0EtWmEtel8kXVtBLVphLXowLTlfJF0qJC91LFxuICBwaHA6IC9eW0EtWmEtel9dW0EtWmEtejAtOV9dKiQvdSxcbiAgcHl0aG9uOiAvXig/Ol98XFxwe1hJRF9TdGFydH0pKD86X3xcXHB7WElEX0NvbnRpbnVlfSkqJC91LFxuICBydWJ5OiAvXlthLXpfXVtBLVphLXowLTlfXSokL3UsXG4gIHR5cGVzY3JpcHQ6IC9eW0EtWmEtel8kXVtBLVphLXowLTlfJF0qJC91XG59XG5cbi8qKiBAdHlwZSB7UmVjb3JkPGltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljTGFuZ3VhZ2UsIFNldDxzdHJpbmc+Pn0gKi9cbmNvbnN0IHJlc2VydmVkV29yZHMgPSB7XG4gIGNwcDogbmV3IFNldChbXG4gICAgXCJhbGlnbmFzXCIsIFwiYWxpZ25vZlwiLCBcImFuZFwiLCBcImFuZF9lcVwiLCBcImFzbVwiLCBcImF1dG9cIiwgXCJiaXRhbmRcIiwgXCJiaXRvclwiLCBcImJvb2xcIiwgXCJicmVha1wiLCBcImNhc2VcIiwgXCJjYXRjaFwiLCBcImNoYXJcIiwgXCJjaGFyOF90XCIsIFwiY2hhcjE2X3RcIiwgXCJjaGFyMzJfdFwiLCBcImNsYXNzXCIsIFwiY29tcGxcIiwgXCJjb25jZXB0XCIsIFwiY29uc3RcIiwgXCJjb25zdGV2YWxcIiwgXCJjb25zdGV4cHJcIiwgXCJjb25zdGluaXRcIiwgXCJjb25zdF9jYXN0XCIsIFwiY29udGludWVcIiwgXCJjb19hd2FpdFwiLCBcImNvX3JldHVyblwiLCBcImNvX3lpZWxkXCIsIFwiZGVjbHR5cGVcIiwgXCJkZWZhdWx0XCIsIFwiZGVsZXRlXCIsIFwiZG9cIiwgXCJkb3VibGVcIiwgXCJkeW5hbWljX2Nhc3RcIiwgXCJlbHNlXCIsIFwiZW51bVwiLCBcImV4cGxpY2l0XCIsIFwiZXhwb3J0XCIsIFwiZXh0ZXJuXCIsIFwiZmFsc2VcIiwgXCJmbG9hdFwiLCBcImZvclwiLCBcImZyaWVuZFwiLCBcImdvdG9cIiwgXCJpZlwiLCBcImlubGluZVwiLCBcImludFwiLCBcImxvbmdcIiwgXCJtdXRhYmxlXCIsIFwibmFtZXNwYWNlXCIsIFwibmV3XCIsIFwibm9leGNlcHRcIiwgXCJub3RcIiwgXCJub3RfZXFcIiwgXCJudWxscHRyXCIsIFwib3BlcmF0b3JcIiwgXCJvclwiLCBcIm9yX2VxXCIsIFwicHJpdmF0ZVwiLCBcInByb3RlY3RlZFwiLCBcInB1YmxpY1wiLCBcInJlZ2lzdGVyXCIsIFwicmVpbnRlcnByZXRfY2FzdFwiLCBcInJlcXVpcmVzXCIsIFwicmV0dXJuXCIsIFwic2hvcnRcIiwgXCJzaWduZWRcIiwgXCJzaXplb2ZcIiwgXCJzdGF0aWNcIiwgXCJzdGF0aWNfYXNzZXJ0XCIsIFwic3RhdGljX2Nhc3RcIiwgXCJzdHJ1Y3RcIiwgXCJzd2l0Y2hcIiwgXCJ0ZW1wbGF0ZVwiLCBcInRoaXNcIiwgXCJ0aHJlYWRfbG9jYWxcIiwgXCJ0aHJvd1wiLCBcInRydWVcIiwgXCJ0cnlcIiwgXCJ0eXBlZGVmXCIsIFwidHlwZWlkXCIsIFwidHlwZW5hbWVcIiwgXCJ1bmlvblwiLCBcInVuc2lnbmVkXCIsIFwidXNpbmdcIiwgXCJ2aXJ0dWFsXCIsIFwidm9pZFwiLCBcInZvbGF0aWxlXCIsIFwid2NoYXJfdFwiLCBcIndoaWxlXCIsIFwieG9yXCIsIFwieG9yX2VxXCIsIFwic3RkXCIsIFwic3RyaW5nXCIsIFwibnVtZXJpY19saW1pdHNcIixcbiAgICAvLyBUaGUgcXVhbGlmaWVkIGxpYnN0ZGMrKyA8c3RyaW5nPiBpbmNsdWRlIGNoYWluIGFsc28gZXhwb3NlcyB0aGVzZSBnbG9iYWwgbmFtZXMuXG4gICAgXCJXRU9GXCIsIFwid2ludF90XCJcbiAgXSksXG4gIGM6IG5ldyBTZXQoW1xuICAgIFwiYXV0b1wiLCBcImJyZWFrXCIsIFwiY2FzZVwiLCBcImNoYXJcIiwgXCJjb25zdFwiLCBcImNvbnRpbnVlXCIsIFwiZGVmYXVsdFwiLCBcImRvXCIsIFwiZG91YmxlXCIsIFwiZWxzZVwiLCBcImVudW1cIiwgXCJleHRlcm5cIixcbiAgICBcImZsb2F0XCIsIFwiZm9yXCIsIFwiZ290b1wiLCBcImlmXCIsIFwiaW5saW5lXCIsIFwiaW50XCIsIFwibG9uZ1wiLCBcInJlZ2lzdGVyXCIsIFwicmVzdHJpY3RcIiwgXCJyZXR1cm5cIiwgXCJzaG9ydFwiLCBcInNpZ25lZFwiLFxuICAgIFwic2l6ZW9mXCIsIFwic3RhdGljXCIsIFwic3RydWN0XCIsIFwic3dpdGNoXCIsIFwidHlwZWRlZlwiLCBcInVuaW9uXCIsIFwidW5zaWduZWRcIiwgXCJ2b2lkXCIsIFwidm9sYXRpbGVcIiwgXCJ3aGlsZVwiLFxuICAgIFwiYm9vbFwiLCBcInRydWVcIiwgXCJmYWxzZVwiLCBcIlRSVUVcIiwgXCJGQUxTRVwiLCBcImludDY0X3RcIiwgXCJ1aW50NjRfdFwiLCBcInNpemVfdFwiLCBcInB0cmRpZmZfdFwiLCBcIm1haW5cIiwgXCJOVUxMXCIsIFwiSU5UNjRfQ1wiLCBcIlVJTlQ2NF9DXCIsXG4gICAgXCJJTlQ2NF9NSU5cIiwgXCJJTlQ2NF9NQVhcIiwgXCJQVFJESUZGX01BWFwiLCBcIkNIQVJfQklUXCIsIFwic3RkaW5cIiwgXCJzdGRvdXRcIiwgXCJzdGRlcnJcIiwgXCJtYWxsb2NcIiwgXCJmcmVlXCIsIFwiZXhpdFwiLFxuICAgIFwiZndyaXRlXCIsIFwiZmZsdXNoXCIsIFwibWVtY3B5XCIsIFwibWVtY21wXCIsIFwiRklMRVwiLCBcImZwb3NfdFwiLCBcImRpdl90XCIsIFwibGRpdl90XCIsIFwibGxkaXZfdFwiLCBcIndjaGFyX3RcIiwgXCJtYXhfYWxpZ25fdFwiLFxuICAgIFwib2Zmc2V0b2ZcIiwgXCJhbGlnbmFzXCIsIFwiYWxpZ25vZlwiLCBcIm5vcmV0dXJuXCIsIFwidHJ1ZVwiLCBcImZhbHNlXCIsIFwiYXNzZXJ0XCIsIFwic3RhdGljX2Fzc2VydFwiLCBcImVycm5vXCIsXG4gICAgXCJFT0ZcIiwgXCJCVUZTSVpcIiwgXCJGT1BFTl9NQVhcIiwgXCJGSUxFTkFNRV9NQVhcIiwgXCJMX3RtcG5hbVwiLCBcIlNFRUtfQ1VSXCIsIFwiU0VFS19FTkRcIiwgXCJTRUVLX1NFVFwiLCBcIlRNUF9NQVhcIixcbiAgICBcIkVYSVRfRkFJTFVSRVwiLCBcIkVYSVRfU1VDQ0VTU1wiLCBcIk1CX0NVUl9NQVhcIiwgXCJNQl9MRU5fTUFYXCIsIFwiUkFORF9NQVhcIixcbiAgICBcInJlbW92ZVwiLCBcInJlbmFtZVwiLCBcInRtcGZpbGVcIiwgXCJ0bXBuYW1cIiwgXCJmY2xvc2VcIiwgXCJmb3BlblwiLCBcImZyZW9wZW5cIiwgXCJzZXRidWZcIiwgXCJzZXR2YnVmXCIsXG4gICAgXCJmcHJpbnRmXCIsIFwiZnNjYW5mXCIsIFwicHJpbnRmXCIsIFwic2NhbmZcIiwgXCJzbnByaW50ZlwiLCBcInNwcmludGZcIiwgXCJzc2NhbmZcIiwgXCJ2ZnByaW50ZlwiLCBcInZmc2NhbmZcIiwgXCJ2cHJpbnRmXCIsXG4gICAgXCJ2c2NhbmZcIiwgXCJ2c25wcmludGZcIiwgXCJ2c3ByaW50ZlwiLCBcInZzc2NhbmZcIiwgXCJmZ2V0Y1wiLCBcImZnZXRzXCIsIFwiZnB1dGNcIiwgXCJmcHV0c1wiLCBcImdldGNcIiwgXCJnZXRjaGFyXCIsXG4gICAgXCJwdXRjXCIsIFwicHV0Y2hhclwiLCBcInB1dHNcIiwgXCJ1bmdldGNcIiwgXCJmcmVhZFwiLCBcImZnZXRwb3NcIiwgXCJmc2Vla1wiLCBcImZzZXRwb3NcIiwgXCJmdGVsbFwiLCBcInJld2luZFwiLCBcImNsZWFyZXJyXCIsXG4gICAgXCJmZW9mXCIsIFwiZmVycm9yXCIsIFwicGVycm9yXCIsIFwiYXRvZlwiLCBcImF0b2lcIiwgXCJhdG9sXCIsIFwiYXRvbGxcIiwgXCJzdHJ0b2RcIiwgXCJzdHJ0b2ZcIiwgXCJzdHJ0b2xkXCIsIFwic3RydG9sXCIsXG4gICAgXCJzdHJ0b2xsXCIsIFwic3RydG91bFwiLCBcInN0cnRvdWxsXCIsIFwicmFuZFwiLCBcInNyYW5kXCIsIFwiYWxpZ25lZF9hbGxvY1wiLCBcImNhbGxvY1wiLCBcInJlYWxsb2NcIiwgXCJhYm9ydFwiLCBcImF0ZXhpdFwiLFxuICAgIFwiYXRfcXVpY2tfZXhpdFwiLCBcInF1aWNrX2V4aXRcIiwgXCJnZXRlbnZcIiwgXCJzeXN0ZW1cIiwgXCJic2VhcmNoXCIsIFwicXNvcnRcIiwgXCJhYnNcIiwgXCJsYWJzXCIsIFwibGxhYnNcIiwgXCJkaXZcIiwgXCJsZGl2XCIsXG4gICAgXCJsbGRpdlwiLCBcIm1ibGVuXCIsIFwibWJ0b3djXCIsIFwid2N0b21iXCIsIFwibWJzdG93Y3NcIiwgXCJ3Y3N0b21ic1wiLCBcIm1lbW1vdmVcIiwgXCJzdHJjcHlcIiwgXCJzdHJuY3B5XCIsIFwic3RyY2F0XCIsXG4gICAgXCJzdHJuY2F0XCIsIFwic3RyY21wXCIsIFwic3RyY29sbFwiLCBcInN0cm5jbXBcIiwgXCJzdHJ4ZnJtXCIsIFwibWVtY2hyXCIsIFwic3RyY2hyXCIsIFwic3RyY3NwblwiLCBcInN0cnBicmtcIiwgXCJzdHJyY2hyXCIsXG4gICAgXCJzdHJzcG5cIiwgXCJzdHJzdHJcIiwgXCJzdHJ0b2tcIiwgXCJtZW1zZXRcIiwgXCJzdHJlcnJvclwiLCBcInN0cmxlblwiXG4gIF0pLFxuICBjc2hhcnA6IG5ldyBTZXQoW1xuICAgIFwiX19hcmdsaXN0XCIsIFwiX19tYWtlcmVmXCIsIFwiX19yZWZ0eXBlXCIsIFwiX19yZWZ2YWx1ZVwiLCBcImFic3RyYWN0XCIsIFwiYWRkXCIsIFwiYWxpYXNcIiwgXCJhbGxvd3NcIiwgXCJhbmRcIiwgXCJhc1wiLFxuICAgIFwiYXNjZW5kaW5nXCIsIFwiYXN5bmNcIiwgXCJhd2FpdFwiLCBcImJhc2VcIiwgXCJib29sXCIsIFwiYnJlYWtcIixcbiAgICBcImJ5XCIsIFwiYnl0ZVwiLCBcImNhc2VcIiwgXCJjYXRjaFwiLCBcImNoYXJcIiwgXCJjaGVja2VkXCIsIFwiY2xhc3NcIiwgXCJjb25zdFwiLCBcImNvbnRpbnVlXCIsIFwiZGVjaW1hbFwiLCBcImRlZmF1bHRcIixcbiAgICBcImRlbGVnYXRlXCIsIFwiZGVzY2VuZGluZ1wiLCBcImRvXCIsIFwiZG91YmxlXCIsIFwiZHluYW1pY1wiLCBcImVsc2VcIiwgXCJlbnVtXCIsIFwiZXF1YWxzXCIsIFwiZXZlbnRcIiwgXCJleHBsaWNpdFwiLCBcImV4dGVuc2lvblwiLCBcImV4dGVyblwiLFxuICAgIFwiZmFsc2VcIiwgXCJmaWVsZFwiLCBcImZpbGVcIiwgXCJmaW5hbGx5XCIsIFwiZml4ZWRcIiwgXCJmbG9hdFwiLCBcImZvclwiLCBcImZvcmVhY2hcIiwgXCJmcm9tXCIsIFwiZ2V0XCIsIFwiZ2xvYmFsXCIsIFwiZ290b1wiLFxuICAgIFwiZ3JvdXBcIiwgXCJpZlwiLCBcImltcGxpY2l0XCIsIFwiaW5cIiwgXCJpbml0XCIsIFwiaW50XCIsIFwiaW50ZXJmYWNlXCIsIFwiaW50ZXJuYWxcIiwgXCJpbnRvXCIsIFwiaXNcIiwgXCJqb2luXCIsIFwibGV0XCIsIFwibG9ja1wiLFxuICAgIFwibG9uZ1wiLCBcIm1hbmFnZWRcIiwgXCJuYW1lb2ZcIiwgXCJuYW1lc3BhY2VcIiwgXCJuZXdcIiwgXCJuaW50XCIsIFwibm90XCIsIFwibm90bnVsbFwiLCBcIm51bGxcIiwgXCJudWludFwiLCBcIm9iamVjdFwiLCBcIm9uXCIsXG4gICAgXCJvcGVyYXRvclwiLCBcIm9yXCIsIFwib3JkZXJieVwiLCBcIm91dFwiLCBcIm92ZXJyaWRlXCIsIFwicGFyYW1zXCIsIFwicGFydGlhbFwiLCBcInByaXZhdGVcIiwgXCJwcm90ZWN0ZWRcIiwgXCJwdWJsaWNcIiwgXCJyZWFkb25seVwiLFxuICAgIFwicmVjb3JkXCIsIFwicmVmXCIsIFwicmVtb3ZlXCIsIFwicmVxdWlyZWRcIiwgXCJyZXR1cm5cIiwgXCJzYnl0ZVwiLCBcInNjb3BlZFwiLCBcInNlYWxlZFwiLCBcInNlbGVjdFwiLCBcInNldFwiLCBcInNob3J0XCIsIFwic2l6ZW9mXCIsXG4gICAgXCJzdGFja2FsbG9jXCIsIFwic3RhdGljXCIsIFwic3RyaW5nXCIsIFwic3RydWN0XCIsIFwic3dpdGNoXCIsIFwidGhpc1wiLCBcInRocm93XCIsIFwidHJ1ZVwiLCBcInRyeVwiLCBcInR5cGVvZlwiLCBcInVpbnRcIiwgXCJ1bG9uZ1wiLFxuICAgIFwidW5jaGVja2VkXCIsIFwidW5tYW5hZ2VkXCIsIFwidW5zYWZlXCIsIFwidXNob3J0XCIsIFwidXNpbmdcIiwgXCJ2YWx1ZVwiLCBcInZhclwiLCBcInZpcnR1YWxcIiwgXCJ2b2lkXCIsIFwidm9sYXRpbGVcIiwgXCJ3aGVuXCIsXG4gICAgXCJ3aGVyZVwiLCBcIndoaWxlXCIsIFwid2l0aFwiLCBcInlpZWxkXCJcbiAgXSksXG4gIGdvOiBuZXcgU2V0KFtcbiAgICBcIl9cIiwgXCJicmVha1wiLCBcImRlZmF1bHRcIiwgXCJmdW5jXCIsIFwiaW50ZXJmYWNlXCIsIFwic2VsZWN0XCIsIFwiY2FzZVwiLCBcImRlZmVyXCIsIFwiZ29cIiwgXCJtYXBcIiwgXCJzdHJ1Y3RcIiwgXCJjaGFuXCIsXG4gICAgXCJlbHNlXCIsIFwiZ290b1wiLCBcInBhY2thZ2VcIiwgXCJzd2l0Y2hcIiwgXCJjb25zdFwiLCBcImZhbGx0aHJvdWdoXCIsIFwiaWZcIiwgXCJyYW5nZVwiLCBcInR5cGVcIiwgXCJjb250aW51ZVwiLCBcImZvclwiLFxuICAgIFwiaW1wb3J0XCIsIFwicmV0dXJuXCIsIFwidmFyXCJcbiAgXSksXG4gIGphdmE6IG5ldyBTZXQoW1xuICAgIFwiX1wiLCBcImFic3RyYWN0XCIsIFwiYXNzZXJ0XCIsIFwiYm9vbGVhblwiLCBcImJyZWFrXCIsIFwiYnl0ZVwiLCBcImNhc2VcIiwgXCJjYXRjaFwiLCBcImNoYXJcIiwgXCJjbGFzc1wiLCBcImNvbnN0XCIsIFwiY29udGludWVcIixcbiAgICBcImRlZmF1bHRcIiwgXCJkb1wiLCBcImRvdWJsZVwiLCBcImVsc2VcIiwgXCJlbnVtXCIsIFwiZXhwb3J0c1wiLCBcImV4dGVuZHNcIiwgXCJmYWxzZVwiLCBcImZpbmFsXCIsIFwiZmluYWxseVwiLCBcImZsb2F0XCIsIFwiZm9yXCIsXG4gICAgXCJnb3RvXCIsIFwiaWZcIiwgXCJpbXBsZW1lbnRzXCIsIFwiaW1wb3J0XCIsIFwiaW5zdGFuY2VvZlwiLCBcImludFwiLCBcImludGVyZmFjZVwiLCBcImxvbmdcIiwgXCJtb2R1bGVcIiwgXCJuYXRpdmVcIiwgXCJuZXdcIixcbiAgICBcIm5vbi1zZWFsZWRcIiwgXCJudWxsXCIsIFwib3BlblwiLCBcIm9wZW5zXCIsIFwicGFja2FnZVwiLCBcInBlcm1pdHNcIiwgXCJwcml2YXRlXCIsIFwicHJvdGVjdGVkXCIsIFwicHJvdmlkZXNcIiwgXCJwdWJsaWNcIixcbiAgICBcInJlY29yZFwiLCBcInJlcXVpcmVzXCIsIFwicmV0dXJuXCIsIFwic2VhbGVkXCIsIFwic2hvcnRcIiwgXCJzdGF0aWNcIiwgXCJzdHJpY3RmcFwiLCBcInN1cGVyXCIsIFwic3dpdGNoXCIsIFwic3luY2hyb25pemVkXCIsXG4gICAgXCJ0aGlzXCIsIFwidGhyb3dcIiwgXCJ0aHJvd3NcIiwgXCJ0b1wiLCBcInRyYW5zaWVudFwiLCBcInRyYW5zaXRpdmVcIiwgXCJ0cnVlXCIsIFwidHJ5XCIsIFwidXNlc1wiLCBcInZhclwiLCBcInZvaWRcIiwgXCJ2b2xhdGlsZVwiLFxuICAgIFwid2hlblwiLCBcIndoaWxlXCIsIFwid2l0aFwiLCBcInlpZWxkXCJcbiAgXSksXG4gIGphdmFzY3JpcHQ6IG5ldyBTZXQoW1xuICAgIFwiYXdhaXRcIiwgXCJicmVha1wiLCBcImNhc2VcIiwgXCJjYXRjaFwiLCBcImNsYXNzXCIsIFwiY29uc3RcIiwgXCJjb250aW51ZVwiLCBcImRlYnVnZ2VyXCIsIFwiZGVmYXVsdFwiLCBcImRlbGV0ZVwiLCBcImRvXCIsIFwiZWxzZVwiLFxuICAgIFwiZW51bVwiLCBcImV4cG9ydFwiLCBcImV4dGVuZHNcIiwgXCJmYWxzZVwiLCBcImZpbmFsbHlcIiwgXCJmb3JcIiwgXCJmdW5jdGlvblwiLCBcImlmXCIsIFwiaW1wbGVtZW50c1wiLCBcImltcG9ydFwiLCBcImluXCIsXG4gICAgXCJpbnN0YW5jZW9mXCIsIFwiaW50ZXJmYWNlXCIsIFwibGV0XCIsIFwibmV3XCIsIFwibnVsbFwiLCBcInBhY2thZ2VcIiwgXCJwcml2YXRlXCIsIFwicHJvdGVjdGVkXCIsIFwicHVibGljXCIsIFwicmV0dXJuXCIsIFwic3RhdGljXCIsXG4gICAgXCJzdXBlclwiLCBcInN3aXRjaFwiLCBcInRoaXNcIiwgXCJ0aHJvd1wiLCBcInRydWVcIiwgXCJ0cnlcIiwgXCJ0eXBlb2ZcIiwgXCJ2YXJcIiwgXCJ2b2lkXCIsIFwid2hpbGVcIiwgXCJ3aXRoXCIsIFwieWllbGRcIlxuICBdKSxcbiAgcGhwOiBuZXcgU2V0KFtcbiAgICBcIl9faGFsdF9jb21waWxlclwiLCBcImFic3RyYWN0XCIsIFwiYW5kXCIsIFwiYXJyYXlcIiwgXCJhc1wiLCBcImJyZWFrXCIsIFwiY2FsbGFibGVcIiwgXCJjYXNlXCIsIFwiY2F0Y2hcIiwgXCJjbGFzc1wiLCBcImNsb25lXCIsXG4gICAgXCJjb25zdFwiLCBcImNvbnRpbnVlXCIsIFwiZGVjbGFyZVwiLCBcImRlZmF1bHRcIiwgXCJkaWVcIiwgXCJkb1wiLCBcImVjaG9cIiwgXCJlbHNlXCIsIFwiZWxzZWlmXCIsIFwiZW1wdHlcIiwgXCJlbmRkZWNsYXJlXCIsXG4gICAgXCJlbmRmb3JcIiwgXCJlbmRmb3JlYWNoXCIsIFwiZW5kaWZcIiwgXCJlbmRzd2l0Y2hcIiwgXCJlbmR3aGlsZVwiLCBcImVudW1cIiwgXCJldmFsXCIsIFwiZXhpdFwiLCBcImV4dGVuZHNcIiwgXCJmYWxzZVwiLCBcImZpbmFsXCIsXG4gICAgXCJmaW5hbGx5XCIsIFwiZm5cIiwgXCJmb3JcIiwgXCJmb3JlYWNoXCIsIFwiZnJvbVwiLCBcImZ1bmN0aW9uXCIsIFwiZ2xvYmFsXCIsIFwiZ290b1wiLCBcImlmXCIsIFwiaW1wbGVtZW50c1wiLCBcImluY2x1ZGVcIixcbiAgICBcImluY2x1ZGVfb25jZVwiLCBcImluc3RhbmNlb2ZcIiwgXCJpbnN0ZWFkb2ZcIiwgXCJpbnRlcmZhY2VcIiwgXCJpc3NldFwiLCBcIml0ZXJhYmxlXCIsIFwibGlzdFwiLCBcIm1hdGNoXCIsIFwibWl4ZWRcIiwgXCJuYW1lc3BhY2VcIixcbiAgICBcIm5ldmVyXCIsIFwibmV3XCIsIFwibnVsbFwiLCBcIm9iamVjdFwiLCBcIm9yXCIsIFwicGFyZW50XCIsIFwicHJpbnRcIiwgXCJwcml2YXRlXCIsIFwicHJvdGVjdGVkXCIsIFwicHVibGljXCIsIFwicmVhZG9ubHlcIiwgXCJyZXF1aXJlXCIsXG4gICAgXCJyZXF1aXJlX29uY2VcIiwgXCJyZXR1cm5cIiwgXCJzZWxmXCIsIFwic3RhdGljXCIsIFwic3dpdGNoXCIsIFwidGhyb3dcIiwgXCJ0cmFpdFwiLCBcInRydWVcIiwgXCJ0cnlcIiwgXCJ1bnNldFwiLCBcInVzZVwiLCBcInZhclwiLFxuICAgIFwidm9pZFwiLCBcIndoaWxlXCIsIFwieG9yXCIsIFwieWllbGRcIlxuICBdKSxcbiAgcHl0aG9uOiBuZXcgU2V0KFtcbiAgICBcIkZhbHNlXCIsIFwiTm9uZVwiLCBcIlRydWVcIiwgXCJhbmRcIiwgXCJhc1wiLCBcImFzc2VydFwiLCBcImFzeW5jXCIsIFwiYXdhaXRcIiwgXCJib29sXCIsIFwiYnJlYWtcIiwgXCJjYXNlXCIsIFwiY2xhc3NcIixcbiAgICBcImNvbnRpbnVlXCIsIFwiZGVmXCIsIFwiZGVsXCIsIFwiZWxpZlwiLCBcImVsc2VcIiwgXCJleGNlcHRcIiwgXCJleGVjXCIsIFwiZmluYWxseVwiLCBcImZvclwiLCBcImZyb21cIiwgXCJnbG9iYWxcIiwgXCJpZlwiLFxuICAgIFwiaW1wb3J0XCIsIFwiaW5cIiwgXCJpbnRcIiwgXCJpc1wiLCBcImxhbWJkYVwiLCBcIm1hdGNoXCIsIFwibm9ubG9jYWxcIiwgXCJub3RcIiwgXCJvclwiLCBcInBhc3NcIiwgXCJwcmludFwiLFxuICAgIFwicmFpc2VcIiwgXCJyZXR1cm5cIiwgXCJzdHJcIiwgXCJ0cnlcIiwgXCJ0eXBlXCIsIFwid2hpbGVcIiwgXCJ3aXRoXCIsIFwieWllbGRcIiwgXCJfXCIsIFwiX19kZWJ1Z19fXCJcbiAgXSksXG4gIHJ1Ynk6IG5ldyBTZXQoW1xuICAgIFwiQkVHSU5cIiwgXCJFTkRcIiwgXCJfX0VOQ09ESU5HX19cIiwgXCJfX0VORF9fXCIsIFwiX19GSUxFX19cIiwgXCJfX0xJTkVfX1wiLCBcImFsaWFzXCIsIFwiYW5kXCIsIFwiYmVnaW5cIiwgXCJicmVha1wiLCBcImNhc2VcIixcbiAgICBcImNsYXNzXCIsIFwiZGVmXCIsIFwiZGVmaW5lZD9cIiwgXCJkb1wiLCBcImVsc2VcIiwgXCJlbHNpZlwiLCBcImVuZFwiLCBcImVuc3VyZVwiLCBcImZhbHNlXCIsIFwiZm9yXCIsIFwiaWZcIiwgXCJpblwiLCBcIm1vZHVsZVwiLFxuICAgIFwibmV4dFwiLCBcIm5pbFwiLCBcIm5vdFwiLCBcIm9yXCIsIFwicmVkb1wiLCBcInJlc2N1ZVwiLCBcInJldHJ5XCIsIFwicmV0dXJuXCIsIFwic2VsZlwiLCBcInN1cGVyXCIsIFwidGhlblwiLCBcInRydWVcIiwgXCJ1bmRlZlwiLFxuICAgIFwidW5sZXNzXCIsIFwidW50aWxcIiwgXCJ3aGVuXCIsIFwid2hpbGVcIiwgXCJ5aWVsZFwiXG4gIF0pLFxuICB0eXBlc2NyaXB0OiBuZXcgU2V0KFtcbiAgICBcImFic3RyYWN0XCIsIFwiYW55XCIsIFwiYXNcIiwgXCJhc3NlcnRzXCIsIFwiYXN5bmNcIiwgXCJhd2FpdFwiLCBcImJvb2xlYW5cIiwgXCJicmVha1wiLCBcImNhc2VcIiwgXCJjYXRjaFwiLCBcImNsYXNzXCIsIFwiY29uc3RcIixcbiAgICBcImNvbnN0cnVjdG9yXCIsIFwiY29udGludWVcIiwgXCJkZWJ1Z2dlclwiLCBcImRlY2xhcmVcIiwgXCJkZWZhdWx0XCIsIFwiZGVsZXRlXCIsIFwiZG9cIiwgXCJlbHNlXCIsIFwiZW51bVwiLCBcImV4cG9ydFwiLCBcImV4dGVuZHNcIixcbiAgICBcImZhbHNlXCIsIFwiZmluYWxseVwiLCBcImZvclwiLCBcImZyb21cIiwgXCJmdW5jdGlvblwiLCBcImdldFwiLCBcImlmXCIsIFwiaW1wbGVtZW50c1wiLCBcImltcG9ydFwiLCBcImluXCIsIFwiaW5mZXJcIiwgXCJpbnN0YW5jZW9mXCIsXG4gICAgXCJpbnRlcmZhY2VcIiwgXCJpc1wiLCBcImtleW9mXCIsIFwibGV0XCIsIFwibW9kdWxlXCIsIFwibmFtZXNwYWNlXCIsIFwibmV2ZXJcIiwgXCJuZXdcIiwgXCJudWxsXCIsIFwibnVtYmVyXCIsIFwib2JqZWN0XCIsIFwib2ZcIixcbiAgICBcIm92ZXJyaWRlXCIsIFwicGFja2FnZVwiLCBcInByaXZhdGVcIiwgXCJwcm90ZWN0ZWRcIiwgXCJwdWJsaWNcIiwgXCJyZWFkb25seVwiLCBcInJlcXVpcmVcIiwgXCJyZXR1cm5cIiwgXCJzYXRpc2ZpZXNcIiwgXCJzZXRcIixcbiAgICBcInN0YXRpY1wiLCBcInN0cmluZ1wiLCBcInN1cGVyXCIsIFwic3dpdGNoXCIsIFwic3ltYm9sXCIsIFwidGhpc1wiLCBcInRocm93XCIsIFwidHJ1ZVwiLCBcInRyeVwiLCBcInR5cGVcIiwgXCJ0eXBlb2ZcIiwgXCJ1bmRlZmluZWRcIixcbiAgICBcInVuaXF1ZVwiLCBcInVua25vd25cIiwgXCJ1c2luZ1wiLCBcInZhclwiLCBcInZvaWRcIiwgXCJ3aGlsZVwiLCBcIndpdGhcIiwgXCJ5aWVsZFwiXG4gIF0pXG59XG5cbmNvbnN0IHBocEludmFsaWRQYXJhbWV0ZXJCaW5kaW5ncyA9IG5ldyBTZXQoW1xuICBcIkdMT0JBTFNcIiwgXCJfQ09PS0lFXCIsIFwiX0VOVlwiLCBcIl9GSUxFU1wiLCBcIl9HRVRcIiwgXCJfUE9TVFwiLCBcIl9SRVFVRVNUXCIsIFwiX1NFUlZFUlwiLCBcIl9TRVNTSU9OXCIsIFwidGhpc1wiXG5dKVxuY29uc3QgcGhwSW52YWxpZEFzc2lnbmVkQmluZGluZ3MgPSBuZXcgU2V0KFtcIkdMT0JBTFNcIiwgXCJ0aGlzXCJdKVxuXG4vKipcbiAqIFZhbGlkYXRlcyBhbiBpZGVudGlmaWVyIGFnYWluc3QgdGhlIHRhcmdldCBiYWNrZW5kJ3MgZGVsaWJlcmF0ZWx5IG5hcnJvdyBsZXhpY2FsIGNvbnRyYWN0LlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5TZW1hbnRpY0xhbmd1YWdlfSBsYW5ndWFnZSAtIFRhcmdldCBsYW5ndWFnZS5cbiAqIEBwYXJhbSB7dW5rbm93bn0gbmFtZSAtIENhbmRpZGF0ZSBzZW1hbnRpYyBpZGVudGlmaWVyLlxuICogQHBhcmFtIHtzdHJpbmd9IHJvbGUgLSBJZGVudGlmaWVyIHJvbGUgZm9yIGRpYWdub3N0aWNzLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5Tb3VyY2VMb2NhdGlvbiB8IHVuZGVmaW5lZH0gbG9jYXRpb24gLSBPcmlnaW5hdGluZyBsb2NhdGlvbi5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUYXJnZXRJZGVudGlmaWVyKGxhbmd1YWdlLCBuYW1lLCByb2xlLCBsb2NhdGlvbikge1xuICBpZiAodHlwZW9mIG5hbWUgIT0gXCJzdHJpbmdcIikgdW5zdXBwb3J0ZWRDYXBhYmlsaXR5KGxhbmd1YWdlLCBgJHtyb2xlfSBpZGVudGlmaWVyYCwgbG9jYXRpb24pXG5cbiAgY29uc3QgcmVzZXJ2ZWROYW1lID0gbGFuZ3VhZ2UgPT0gXCJwaHBcIiA/IG5hbWUudG9Mb3dlckNhc2UoKSA6IG5hbWVcblxuICBpZiAoIWlkZW50aWZpZXJQYXR0ZXJuc1tsYW5ndWFnZV0udGVzdChuYW1lKSB8fCByZXNlcnZlZFdvcmRzW2xhbmd1YWdlXS5oYXMocmVzZXJ2ZWROYW1lKSB8fFxuICAgIGxhbmd1YWdlID09IFwicHl0aG9uXCIgJiYgbmFtZS5ub3JtYWxpemUoXCJORktDXCIpICE9IG5hbWUgfHxcbiAgICBsYW5ndWFnZSA9PSBcImNcIiAmJiAhaXNDSWRlbnRpZmllcihuYW1lKSB8fFxuICAgIGxhbmd1YWdlID09IFwiY3BwXCIgJiYgIWlzQ3BwSWRlbnRpZmllcihuYW1lKSkge1xuICAgIHVuc3VwcG9ydGVkQ2FwYWJpbGl0eShsYW5ndWFnZSwgYCR7cm9sZX0gaWRlbnRpZmllciAnJHtuYW1lfSdgLCBsb2NhdGlvbilcbiAgfVxufVxuXG4vKipcbiAqIFByb3RlY3RzIHRoZSBleGFjdCBDIGhlYWRlciBlbnZpcm9ubWVudCBhbmQgaW1wbGVtZW50YXRpb24tcmVzZXJ2ZWQgbmFtZXNwYWNlIGluIGVpdGhlciBkaXJlY3Rpb24uXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIENhbGxlciBpZGVudGlmaWVyLlxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIHNwZWxsaW5nIGlzIHNhZmUgaW4gdGhlIGNhbm9uaWNhbCB0cmFuc2xhdGlvbiB1bml0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDSWRlbnRpZmllcihuYW1lKSB7XG4gIHJldHVybiBpZGVudGlmaWVyUGF0dGVybnMuYy50ZXN0KG5hbWUpICYmICFyZXNlcnZlZFdvcmRzLmMuaGFzKG5hbWUpICYmXG4gICAgIS9eKD86c2VtYW50aWZvbGRffFNFTUFOVElGT0xEX3xTZW1hbnRpZm9sZHxhdG9taWNffElOVFswLTlfQS1aXXxVSU5UWzAtOV9BLVpdfElOVE1BWF98VUlOVE1BWF98U0laRV98UFRSRElGRl98U0lHX0FUT01JQ198V0NIQVJffFdJTlRffENIQVJffFNDSEFSX3xVQ0hBUl98U0hSVF98VVNIUlRffExPTkdffFVMT05HX3xMTE9OR198VUxMT05HXykvdS50ZXN0KG5hbWUpICYmXG4gICAgIS9eKD86dT9pbnQoPzo4fDE2fDMyfDY0fG1heHxwdHJ8X2xlYXN0WzAtOV0rfF9mYXN0WzAtOV0rKV90KSQvdS50ZXN0KG5hbWUpXG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgYmluZGluZyBpZGVudGlmaWVyIGFnYWluc3QgdGFyZ2V0IHJlc3RyaWN0aW9ucyBiZXlvbmQgZ2VuZXJhbCBpZGVudGlmaWVyIHN5bnRheC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNMYW5ndWFnZX0gbGFuZ3VhZ2UgLSBUYXJnZXQgbGFuZ3VhZ2UuXG4gKiBAcGFyYW0ge3Vua25vd259IG5hbWUgLSBDYW5kaWRhdGUgc2VtYW50aWMgaWRlbnRpZmllci5cbiAqIEBwYXJhbSB7c3RyaW5nfSByb2xlIC0gQmluZGluZyByb2xlIGZvciBkaWFnbm9zdGljcy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuU291cmNlTG9jYXRpb24gfCB1bmRlZmluZWR9IGxvY2F0aW9uIC0gT3JpZ2luYXRpbmcgbG9jYXRpb24uXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlVGFyZ2V0QmluZGluZ0lkZW50aWZpZXIobGFuZ3VhZ2UsIG5hbWUsIHJvbGUsIGxvY2F0aW9uKSB7XG4gIHZhbGlkYXRlVGFyZ2V0SWRlbnRpZmllcihsYW5ndWFnZSwgbmFtZSwgcm9sZSwgbG9jYXRpb24pXG5cbiAgY29uc3QgaW52YWxpZFR5cGVTY3JpcHRCaW5kaW5nID0gbGFuZ3VhZ2UgPT0gXCJ0eXBlc2NyaXB0XCIgJiYgKG5hbWUgPT0gXCJhcmd1bWVudHNcIiB8fCBuYW1lID09IFwiZXZhbFwiKVxuICBjb25zdCBpbnZhbGlkUGhwVmFyaWFibGUgPSBsYW5ndWFnZSA9PSBcInBocFwiICYmIHR5cGVvZiBuYW1lID09IFwic3RyaW5nXCIgJiZcbiAgICAoKHJvbGUgPT0gXCJwYXJhbWV0ZXJcIiAmJiBwaHBJbnZhbGlkUGFyYW1ldGVyQmluZGluZ3MuaGFzKG5hbWUpKSB8fFxuICAgICAgKChyb2xlID09IFwibG9jYWxcIiB8fCByb2xlID09IFwiYXNzaWdubWVudCB0YXJnZXRcIikgJiYgcGhwSW52YWxpZEFzc2lnbmVkQmluZGluZ3MuaGFzKG5hbWUpKSlcbiAgY29uc3QgaW52YWxpZFJ1YnlCaW5kaW5nID0gbGFuZ3VhZ2UgPT0gXCJydWJ5XCIgJiYgdHlwZW9mIG5hbWUgPT0gXCJzdHJpbmdcIiAmJiAvXl9bMS05XSQvdS50ZXN0KG5hbWUpXG5cbiAgaWYgKGludmFsaWRUeXBlU2NyaXB0QmluZGluZyB8fCBpbnZhbGlkUGhwVmFyaWFibGUgfHwgaW52YWxpZFJ1YnlCaW5kaW5nKSB7XG4gICAgdW5zdXBwb3J0ZWRDYXBhYmlsaXR5KGxhbmd1YWdlLCBgJHtyb2xlfSBpZGVudGlmaWVyICcke25hbWV9J2AsIGxvY2F0aW9uKVxuICB9XG59XG5cbi8qKlxuICogUHJvdGVjdHMgQysrIGtleXdvcmRzLCB0aGUgYWN0dWFsIGluY2x1ZGVkIEMgbGlicmFyeSBuYW1lcy9tYWNyb3MgYW5kIHRoZSBzY2FmZm9sZCBuYW1lc3BhY2UuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIENhbGxlciBzY2FsYXIgYmluZGluZyBvciBmdW5jdGlvbiBuYW1lLlxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgYSBjYW5vbmljYWwgQysrMjAgdHJhbnNsYXRpb24gdW5pdCBjYW4gcmVwcmVzZW50IHRoZSBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDcHBJZGVudGlmaWVyKG5hbWUpIHtcbiAgcmV0dXJuIGlzQ0lkZW50aWZpZXIobmFtZSkgJiYgIW5hbWUuaW5jbHVkZXMoXCJfX1wiKSAmJiAhcmVzZXJ2ZWRXb3Jkcy5jcHAuaGFzKG5hbWUpXG59XG4iXX0=
280
+ /**
281
+ * Protects the edition-2021 scalar, entry and exact helper environment in both directions.
282
+ * @param {string} name - Caller-owned function or binding name.
283
+ * @returns {boolean} Whether ordinary Rust syntax can represent the name safely.
284
+ */
285
+ export function isRustIdentifier(name) {
286
+ return identifierPatterns.rust.test(name) && !reservedWords.rust.has(name) && !name.startsWith("semantifold_");
287
+ }
288
+ /**
289
+ * Protects Swift keywords, scalar names, entry plumbing, and target-only helper names.
290
+ * @param {string} name - Caller-owned function or binding name.
291
+ * @returns {boolean} Whether ordinary unescaped Swift syntax can preserve the name.
292
+ */
293
+ export function isSwiftIdentifier(name) {
294
+ return identifierPatterns.swift.test(name) && !reservedWords.swift.has(name) && !name.startsWith("semantifold_");
295
+ }
296
+ /**
297
+ * Protects Kotlin keywords, JVM scalar/scaffold names, and target-only helper names.
298
+ * @param {string} name - Caller-owned function or binding name.
299
+ * @returns {boolean} Whether ordinary unescaped Kotlin syntax can preserve the name.
300
+ */
301
+ export function isKotlinIdentifier(name) {
302
+ return identifierPatterns.kotlin.test(name) && !reservedWords.kotlin.has(name) && !name.startsWith("semantifold_") &&
303
+ !name.startsWith("SEMANTIFOLD_");
304
+ }
305
+ /**
306
+ * Protects Dart keywords, VM scalar/scaffold names, and compiler-owned helpers.
307
+ * @param {string} name - Caller-owned function or binding name.
308
+ * @returns {boolean} Whether ordinary Dart syntax can preserve the name.
309
+ */
310
+ export function isDartIdentifier(name) {
311
+ return identifierPatterns.dart.test(name) && !reservedWords.dart.has(name) &&
312
+ !name.startsWith("_semantifold") && name.normalize("NFC") == name;
313
+ }
314
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpZmllcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFja2VuZHMvaWRlbnRpZmllcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGtCQUFrQixDQUFBO0FBRXRELDZGQUE2RjtBQUM3RixNQUFNLGtCQUFrQixHQUFHO0lBQ3pCLElBQUksRUFBRSxtQ0FBbUM7SUFDekMsTUFBTSxFQUFFLG1DQUFtQztJQUMzQyxLQUFLLEVBQUUsK0NBQStDO0lBQ3RELElBQUksRUFBRSwyQkFBMkI7SUFDakMsR0FBRyxFQUFFLDBCQUEwQjtJQUMvQixDQUFDLEVBQUUsMEJBQTBCO0lBQzdCLE1BQU0sRUFBRSwyQkFBMkI7SUFDbkMsRUFBRSxFQUFFLDJCQUEyQjtJQUMvQixJQUFJLEVBQUUsNkJBQTZCO0lBQ25DLFVBQVUsRUFBRSw2QkFBNkI7SUFDekMsR0FBRyxFQUFFLDJCQUEyQjtJQUNoQyxNQUFNLEVBQUUsK0NBQStDO0lBQ3ZELElBQUksRUFBRSx3QkFBd0I7SUFDOUIsVUFBVSxFQUFFLDZCQUE2QjtJQUN6QyxJQUFJLEVBQUUscURBQXFEO0NBQzVELENBQUE7QUFFRCxrR0FBa0c7QUFDbEcsTUFBTSxhQUFhLEdBQUc7SUFDcEIsSUFBSSxFQUFFLElBQUksR0FBRyxDQUFDO1FBQ1osVUFBVSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU07UUFDM0csTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLElBQUk7UUFDeEcsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU87UUFDOUcsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUztRQUNoSCxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTO1FBQy9HLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVM7UUFDakgsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUc7S0FDL0QsQ0FBQztJQUNGLE1BQU0sRUFBRSxJQUFJLEdBQUcsQ0FBQztRQUNkLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNO1FBQzlHLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU07UUFDbkgsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxxQkFBcUI7S0FDNUYsQ0FBQztJQUNGLEtBQUssRUFBRSxJQUFJLEdBQUcsQ0FBQztRQUNiLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXO1FBQ3pILE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUTtRQUMxSCxRQUFRLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLEtBQUs7UUFDNUgsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU07UUFDeEgsS0FBSyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVM7UUFDdEgsU0FBUyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUTtRQUNqSSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLO1FBQ3JILFdBQVcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRO1FBQzVILE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTztLQUN6QixDQUFDO0lBQ0YsSUFBSSxFQUFFLElBQUksR0FBRyxDQUFDO1FBQ1osSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUk7UUFDeEksS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU07UUFDMUksUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTO1FBQzFJLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTTtLQUNyRSxDQUFDO0lBQ0YsR0FBRyxFQUFFLElBQUksR0FBRyxDQUFDO1FBQ1gsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsZ0JBQWdCO1FBQ2w5QixrRkFBa0Y7UUFDbEYsTUFBTSxFQUFFLFFBQVE7S0FDakIsQ0FBQztJQUNGLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQztRQUNULE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUTtRQUN6RyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVE7UUFDMUcsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsT0FBTztRQUNuRyxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVO1FBQzdILFdBQVcsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU07UUFDMUcsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGFBQWE7UUFDaEgsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxPQUFPO1FBQ2pHLEtBQUssRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUztRQUN2RyxjQUFjLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsVUFBVTtRQUN0RSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVM7UUFDMUYsU0FBUyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUztRQUN6RyxRQUFRLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTO1FBQ25HLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVO1FBQzFHLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRO1FBQ3BHLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVE7UUFDMUcsZUFBZSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU07UUFDNUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUTtRQUN0RyxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTO1FBQ3pHLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUTtLQUM3RCxDQUFDO0lBQ0YsTUFBTSxFQUFFLElBQUksR0FBRyxDQUFDO1FBQ2QsV0FBVyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSTtRQUN0RyxXQUFXLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU87UUFDdEQsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVM7UUFDcEcsVUFBVSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRO1FBQ3pILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTTtRQUN4RyxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNO1FBQzVHLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSTtRQUMxRyxVQUFVLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsVUFBVTtRQUNqSCxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVE7UUFDaEgsWUFBWSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPO1FBQy9HLFdBQVcsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNO1FBQzVHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU87S0FDbEMsQ0FBQztJQUNGLEVBQUUsRUFBRSxJQUFJLEdBQUcsQ0FBQztRQUNWLEdBQUcsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTTtRQUN0RyxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVB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LENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0FBQ2xILENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLElBQUk7SUFDckMsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQztRQUNoSCxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUE7QUFDcEMsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsSUFBSTtJQUNuQyxPQUFPLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDeEUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFBO0FBQ3JFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHt1bnN1cHBvcnRlZENhcGFiaWxpdHl9IGZyb20gXCIuLi9kaWFnbm9zdGljLmpzXCJcblxuLyoqIEB0eXBlIHtSZWNvcmQ8RXhjbHVkZTxpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5CYWNrZW5kTGFuZ3VhZ2UsIFwiaW9zXCI+LCBSZWdFeHA+fSAqL1xuY29uc3QgaWRlbnRpZmllclBhdHRlcm5zID0ge1xuICBkYXJ0OiAvXig/Ol98XFxwe0x9KSg/Ol98XFxwe0x9fFxccHtOZH0pKiQvdSxcbiAga290bGluOiAvXig/Ol98XFxwe0x9KSg/Ol98XFxwe0x9fFxccHtOZH0pKiQvdSxcbiAgc3dpZnQ6IC9eKD86X3xcXHB7WElEX1N0YXJ0fSkoPzpffFxccHtYSURfQ29udGludWV9KSokL3UsXG4gIHJ1c3Q6IC9eW0EtWmEtel9dW0EtWmEtejAtOV9dKiQvdSxcbiAgY3BwOiAvXltBLVphLXpdW0EtWmEtejAtOV9dKiQvdSxcbiAgYzogL15bQS1aYS16XVtBLVphLXowLTlfXSokL3UsXG4gIGNzaGFycDogL15bQS1aYS16X11bQS1aYS16MC05X10qJC91LFxuICBnbzogL15bQS1aYS16X11bQS1aYS16MC05X10qJC91LFxuICBqYXZhOiAvXltBLVphLXpfJF1bQS1aYS16MC05XyRdKiQvdSxcbiAgamF2YXNjcmlwdDogL15bQS1aYS16XyRdW0EtWmEtejAtOV8kXSokL3UsXG4gIHBocDogL15bQS1aYS16X11bQS1aYS16MC05X10qJC91LFxuICBweXRob246IC9eKD86X3xcXHB7WElEX1N0YXJ0fSkoPzpffFxccHtYSURfQ29udGludWV9KSokL3UsXG4gIHJ1Ynk6IC9eW2Etel9dW0EtWmEtejAtOV9dKiQvdSxcbiAgdHlwZXNjcmlwdDogL15bQS1aYS16XyRdW0EtWmEtejAtOV8kXSokL3UsXG4gIHdhc206IC9eKD86WyRfXXxcXHB7WElEX1N0YXJ0fSkoPzpbJF9dfFxccHtYSURfQ29udGludWV9KSokL3Vcbn1cblxuLyoqIEB0eXBlIHtSZWNvcmQ8RXhjbHVkZTxpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5CYWNrZW5kTGFuZ3VhZ2UsIFwiaW9zXCI+LCBTZXQ8c3RyaW5nPj59ICovXG5jb25zdCByZXNlcnZlZFdvcmRzID0ge1xuICBkYXJ0OiBuZXcgU2V0KFtcbiAgICBcIkZ1bmN0aW9uXCIsIFwiTmV2ZXJcIiwgXCJPYmplY3RcIiwgXCJSYW5nZUVycm9yXCIsIFwiU3RyaW5nXCIsIFwiYWJzdHJhY3RcIiwgXCJhc1wiLCBcImFzc2VydFwiLCBcImFzeW5jXCIsIFwiYXdhaXRcIiwgXCJiYXNlXCIsXG4gICAgXCJib29sXCIsIFwiYnJlYWtcIiwgXCJjYXNlXCIsIFwiY2F0Y2hcIiwgXCJjbGFzc1wiLCBcImNvbnN0XCIsIFwiY29udGludWVcIiwgXCJjb3ZhcmlhbnRcIiwgXCJkZWZhdWx0XCIsIFwiZGVmZXJyZWRcIiwgXCJkb1wiLFxuICAgIFwiZG91YmxlXCIsIFwiZHluYW1pY1wiLCBcImVsc2VcIiwgXCJlbnVtXCIsIFwiZXhwb3J0XCIsIFwiZXh0ZW5kc1wiLCBcImV4dGVuc2lvblwiLCBcImV4dGVybmFsXCIsIFwiZmFjdG9yeVwiLCBcImZhbHNlXCIsIFwiZmluYWxcIixcbiAgICBcImZpbmFsbHlcIiwgXCJmb3JcIiwgXCJnZXRcIiwgXCJoaWRlXCIsIFwiaWZcIiwgXCJpbXBsZW1lbnRzXCIsIFwiaW1wb3J0XCIsIFwiaW5cIiwgXCJpbnRcIiwgXCJpbnRlcmZhY2VcIiwgXCJpc1wiLCBcImxhdGVcIiwgXCJsaWJyYXJ5XCIsXG4gICAgXCJtYWluXCIsIFwibWl4aW5cIiwgXCJuYXRpdmVcIiwgXCJuZXdcIiwgXCJudWxsXCIsIFwibnVtXCIsIFwib2ZcIiwgXCJvblwiLCBcIm9wZXJhdG9yXCIsIFwicGFydFwiLCBcInByaW50XCIsIFwicmVxdWlyZWRcIiwgXCJyZXRocm93XCIsXG4gICAgXCJyZXR1cm5cIiwgXCJzZWFsZWRcIiwgXCJzZXRcIiwgXCJzaG93XCIsIFwic3RhdGljXCIsIFwic3VwZXJcIiwgXCJzd2l0Y2hcIiwgXCJzeW5jXCIsIFwidGhpc1wiLCBcInRocm93XCIsIFwidHJ1ZVwiLCBcInRyeVwiLCBcInR5cGVkZWZcIixcbiAgICBcInZhclwiLCBcInZvaWRcIiwgXCJ3aGVuXCIsIFwid2hpbGVcIiwgXCJ3aXRoXCIsIFwieWllbGRcIiwgXCJCaWdJbnRcIiwgXCJfXCJcbiAgXSksXG4gIGtvdGxpbjogbmV3IFNldChbXG4gICAgXCJhc1wiLCBcImJyZWFrXCIsIFwiY2xhc3NcIiwgXCJjb250aW51ZVwiLCBcImRvXCIsIFwiZWxzZVwiLCBcImZhbHNlXCIsIFwiZm9yXCIsIFwiZnVuXCIsIFwiaWZcIiwgXCJpblwiLCBcImludGVyZmFjZVwiLCBcImlzXCIsIFwibnVsbFwiLFxuICAgIFwib2JqZWN0XCIsIFwicGFja2FnZVwiLCBcInJldHVyblwiLCBcInN1cGVyXCIsIFwidGhpc1wiLCBcInRocm93XCIsIFwidHJ1ZVwiLCBcInRyeVwiLCBcInR5cGVhbGlhc1wiLCBcInR5cGVvZlwiLCBcInZhbFwiLCBcInZhclwiLCBcIndoZW5cIixcbiAgICBcIndoaWxlXCIsIFwiX1wiLCBcIm1haW5cIiwgXCJwcmludGxuXCIsIFwiTG9uZ1wiLCBcIkJvb2xlYW5cIiwgXCJTdHJpbmdcIiwgXCJNYXRoXCIsIFwiQXJpdGhtZXRpY0V4Y2VwdGlvblwiXG4gIF0pLFxuICBzd2lmdDogbmV3IFNldChbXG4gICAgXCJBbnlcIiwgXCJTZWxmXCIsIFwiVHlwZVwiLCBcIlByb3RvY29sXCIsIFwiYWN0b3JcIiwgXCJhbnlcIiwgXCJhc1wiLCBcImFzc29jaWF0ZWR0eXBlXCIsIFwiYXNzb2NpYXRpdml0eVwiLCBcImFzeW5jXCIsIFwiYXdhaXRcIiwgXCJib3Jyb3dpbmdcIixcbiAgICBcImJyZWFrXCIsIFwiY2FzZVwiLCBcImNhdGNoXCIsIFwiY2xhc3NcIiwgXCJjb25zdW1lXCIsIFwiY29uc3VtaW5nXCIsIFwiY29udGludWVcIiwgXCJjb252ZW5pZW5jZVwiLCBcImNvcHlcIiwgXCJkZWZhdWx0XCIsIFwiZGVmZXJcIiwgXCJkZWluaXRcIixcbiAgICBcImRpZFNldFwiLCBcImRpc3RyaWJ1dGVkXCIsIFwiZG9cIiwgXCJkeW5hbWljXCIsIFwiZWxzZVwiLCBcImVudW1cIiwgXCJleHRlbnNpb25cIiwgXCJmYWxsdGhyb3VnaFwiLCBcImZhbHNlXCIsIFwiZmlsZXByaXZhdGVcIiwgXCJmaW5hbFwiLCBcImZvclwiLFxuICAgIFwiZnVuY1wiLCBcImdldFwiLCBcImd1YXJkXCIsIFwiaWZcIiwgXCJpbXBvcnRcIiwgXCJpblwiLCBcImluZGlyZWN0XCIsIFwiaW5maXhcIiwgXCJpbml0XCIsIFwiaW5vdXRcIiwgXCJpbnRlcm5hbFwiLCBcImlzXCIsIFwiaXNvbGF0ZWRcIiwgXCJsYXp5XCIsXG4gICAgXCJsZXRcIiwgXCJtYWNyb1wiLCBcIm11dGF0aW5nXCIsIFwibmlsXCIsIFwibm9uaXNvbGF0ZWRcIiwgXCJub25tdXRhdGluZ1wiLCBcIm9wZW5cIiwgXCJvcGVyYXRvclwiLCBcIm9wdGlvbmFsXCIsIFwib3ZlcnJpZGVcIiwgXCJwYWNrYWdlXCIsXG4gICAgXCJwb3N0Zml4XCIsIFwicHJlY2VkZW5jZVwiLCBcInByZWNlZGVuY2Vncm91cFwiLCBcInByZWZpeFwiLCBcInByaXZhdGVcIiwgXCJwcm90b2NvbFwiLCBcInB1YmxpY1wiLCBcInJlcGVhdFwiLCBcInJlcXVpcmVkXCIsIFwicmV0aHJvd3NcIiwgXCJyZXR1cm5cIixcbiAgICBcInNhZmVcIiwgXCJzZWxmXCIsIFwic2VuZGluZ1wiLCBcInNldFwiLCBcInNvbWVcIiwgXCJzdGF0aWNcIiwgXCJzdHJ1Y3RcIiwgXCJzdWJzY3JpcHRcIiwgXCJzdXBlclwiLCBcInN3aXRjaFwiLCBcInRocm93c1wiLCBcInRydWVcIiwgXCJ0cnlcIixcbiAgICBcInR5cGVhbGlhc1wiLCBcInVub3duZWRcIiwgXCJ1bnNhZmVcIiwgXCJ2YXJcIiwgXCJ3ZWFrXCIsIFwid2hlcmVcIiwgXCJ3aGlsZVwiLCBcIndpbGxTZXRcIiwgXCJ5aWVsZFwiLCBcIl9cIiwgXCJCb29sXCIsIFwiSW50XCIsIFwiSW50NjRcIiwgXCJTdHJpbmdcIixcbiAgICBcIlN3aWZ0XCIsIFwibWFpblwiLCBcInByaW50XCJcbiAgXSksXG4gIHJ1c3Q6IG5ldyBTZXQoW1xuICAgIFwiYXNcIiwgXCJhc3luY1wiLCBcImF3YWl0XCIsIFwiYnJlYWtcIiwgXCJjb25zdFwiLCBcImNvbnRpbnVlXCIsIFwiY3JhdGVcIiwgXCJkeW5cIiwgXCJlbHNlXCIsIFwiZW51bVwiLCBcImV4dGVyblwiLCBcImZhbHNlXCIsIFwiZm5cIiwgXCJmb3JcIiwgXCJpZlwiLCBcImltcGxcIiwgXCJpblwiLFxuICAgIFwibGV0XCIsIFwibG9vcFwiLCBcIm1hdGNoXCIsIFwibW9kXCIsIFwibW92ZVwiLCBcIm11dFwiLCBcInB1YlwiLCBcInJlZlwiLCBcInJldHVyblwiLCBcInNlbGZcIiwgXCJTZWxmXCIsIFwic3RhdGljXCIsIFwic3RydWN0XCIsIFwic3VwZXJcIiwgXCJ0cmFpdFwiLCBcInRydWVcIiwgXCJ0eXBlXCIsXG4gICAgXCJ1bnNhZmVcIiwgXCJ1c2VcIiwgXCJ3aGVyZVwiLCBcIndoaWxlXCIsIFwiYWJzdHJhY3RcIiwgXCJiZWNvbWVcIiwgXCJib3hcIiwgXCJkb1wiLCBcImZpbmFsXCIsIFwibWFjcm9cIiwgXCJvdmVycmlkZVwiLCBcInByaXZcIiwgXCJ0eXBlb2ZcIiwgXCJ1bnNpemVkXCIsIFwidmlydHVhbFwiLFxuICAgIFwieWllbGRcIiwgXCJ0cnlcIiwgXCJ1bmlvblwiLCBcIl9cIiwgXCJtYWluXCIsIFwiU3RyaW5nXCIsIFwic3RkXCIsIFwiaTY0XCIsIFwiYm9vbFwiXG4gIF0pLFxuICBjcHA6IG5ldyBTZXQoW1xuICAgIFwiYWxpZ25hc1wiLCBcImFsaWdub2ZcIiwgXCJhbmRcIiwgXCJhbmRfZXFcIiwgXCJhc21cIiwgXCJhdXRvXCIsIFwiYml0YW5kXCIsIFwiYml0b3JcIiwgXCJib29sXCIsIFwiYnJlYWtcIiwgXCJjYXNlXCIsIFwiY2F0Y2hcIiwgXCJjaGFyXCIsIFwiY2hhcjhfdFwiLCBcImNoYXIxNl90XCIsIFwiY2hhcjMyX3RcIiwgXCJjbGFzc1wiLCBcImNvbXBsXCIsIFwiY29uY2VwdFwiLCBcImNvbnN0XCIsIFwiY29uc3RldmFsXCIsIFwiY29uc3RleHByXCIsIFwiY29uc3Rpbml0XCIsIFwiY29uc3RfY2FzdFwiLCBcImNvbnRpbnVlXCIsIFwiY29fYXdhaXRcIiwgXCJjb19yZXR1cm5cIiwgXCJjb195aWVsZFwiLCBcImRlY2x0eXBlXCIsIFwiZGVmYXVsdFwiLCBcImRlbGV0ZVwiLCBcImRvXCIsIFwiZG91YmxlXCIsIFwiZHluYW1pY19jYXN0XCIsIFwiZWxzZVwiLCBcImVudW1cIiwgXCJleHBsaWNpdFwiLCBcImV4cG9ydFwiLCBcImV4dGVyblwiLCBcImZhbHNlXCIsIFwiZmxvYXRcIiwgXCJmb3JcIiwgXCJmcmllbmRcIiwgXCJnb3RvXCIsIFwiaWZcIiwgXCJpbmxpbmVcIiwgXCJpbnRcIiwgXCJsb25nXCIsIFwibXV0YWJsZVwiLCBcIm5hbWVzcGFjZVwiLCBcIm5ld1wiLCBcIm5vZXhjZXB0XCIsIFwibm90XCIsIFwibm90X2VxXCIsIFwibnVsbHB0clwiLCBcIm9wZXJhdG9yXCIsIFwib3JcIiwgXCJvcl9lcVwiLCBcInByaXZhdGVcIiwgXCJwcm90ZWN0ZWRcIiwgXCJwdWJsaWNcIiwgXCJyZWdpc3RlclwiLCBcInJlaW50ZXJwcmV0X2Nhc3RcIiwgXCJyZXF1aXJlc1wiLCBcInJldHVyblwiLCBcInNob3J0XCIsIFwic2lnbmVkXCIsIFwic2l6ZW9mXCIsIFwic3RhdGljXCIsIFwic3RhdGljX2Fzc2VydFwiLCBcInN0YXRpY19jYXN0XCIsIFwic3RydWN0XCIsIFwic3dpdGNoXCIsIFwidGVtcGxhdGVcIiwgXCJ0aGlzXCIsIFwidGhyZWFkX2xvY2FsXCIsIFwidGhyb3dcIiwgXCJ0cnVlXCIsIFwidHJ5XCIsIFwidHlwZWRlZlwiLCBcInR5cGVpZFwiLCBcInR5cGVuYW1lXCIsIFwidW5pb25cIiwgXCJ1bnNpZ25lZFwiLCBcInVzaW5nXCIsIFwidmlydHVhbFwiLCBcInZvaWRcIiwgXCJ2b2xhdGlsZVwiLCBcIndjaGFyX3RcIiwgXCJ3aGlsZVwiLCBcInhvclwiLCBcInhvcl9lcVwiLCBcInN0ZFwiLCBcInN0cmluZ1wiLCBcIm51bWVyaWNfbGltaXRzXCIsXG4gICAgLy8gVGhlIHF1YWxpZmllZCBsaWJzdGRjKysgPHN0cmluZz4gaW5jbHVkZSBjaGFpbiBhbHNvIGV4cG9zZXMgdGhlc2UgZ2xvYmFsIG5hbWVzLlxuICAgIFwiV0VPRlwiLCBcIndpbnRfdFwiXG4gIF0pLFxuICBjOiBuZXcgU2V0KFtcbiAgICBcImF1dG9cIiwgXCJicmVha1wiLCBcImNhc2VcIiwgXCJjaGFyXCIsIFwiY29uc3RcIiwgXCJjb250aW51ZVwiLCBcImRlZmF1bHRcIiwgXCJkb1wiLCBcImRvdWJsZVwiLCBcImVsc2VcIiwgXCJlbnVtXCIsIFwiZXh0ZXJuXCIsXG4gICAgXCJmbG9hdFwiLCBcImZvclwiLCBcImdvdG9cIiwgXCJpZlwiLCBcImlubGluZVwiLCBcImludFwiLCBcImxvbmdcIiwgXCJyZWdpc3RlclwiLCBcInJlc3RyaWN0XCIsIFwicmV0dXJuXCIsIFwic2hvcnRcIiwgXCJzaWduZWRcIixcbiAgICBcInNpemVvZlwiLCBcInN0YXRpY1wiLCBcInN0cnVjdFwiLCBcInN3aXRjaFwiLCBcInR5cGVkZWZcIiwgXCJ1bmlvblwiLCBcInVuc2lnbmVkXCIsIFwidm9pZFwiLCBcInZvbGF0aWxlXCIsIFwid2hpbGVcIixcbiAgICBcImJvb2xcIiwgXCJ0cnVlXCIsIFwiZmFsc2VcIiwgXCJUUlVFXCIsIFwiRkFMU0VcIiwgXCJpbnQ2NF90XCIsIFwidWludDY0X3RcIiwgXCJzaXplX3RcIiwgXCJwdHJkaWZmX3RcIiwgXCJtYWluXCIsIFwiTlVMTFwiLCBcIklOVDY0X0NcIiwgXCJVSU5UNjRfQ1wiLFxuICAgIFwiSU5UNjRfTUlOXCIsIFwiSU5UNjRfTUFYXCIsIFwiUFRSRElGRl9NQVhcIiwgXCJDSEFSX0JJVFwiLCBcInN0ZGluXCIsIFwic3Rkb3V0XCIsIFwic3RkZXJyXCIsIFwibWFsbG9jXCIsIFwiZnJlZVwiLCBcImV4aXRcIixcbiAgICBcImZ3cml0ZVwiLCBcImZmbHVzaFwiLCBcIm1lbWNweVwiLCBcIm1lbWNtcFwiLCBcIkZJTEVcIiwgXCJmcG9zX3RcIiwgXCJkaXZfdFwiLCBcImxkaXZfdFwiLCBcImxsZGl2X3RcIiwgXCJ3Y2hhcl90XCIsIFwibWF4X2FsaWduX3RcIixcbiAgICBcIm9mZnNldG9mXCIsIFwiYWxpZ25hc1wiLCBcImFsaWdub2ZcIiwgXCJub3JldHVyblwiLCBcInRydWVcIiwgXCJmYWxzZVwiLCBcImFzc2VydFwiLCBcInN0YXRpY19hc3NlcnRcIiwgXCJlcnJub1wiLFxuICAgIFwiRU9GXCIsIFwiQlVGU0laXCIsIFwiRk9QRU5fTUFYXCIsIFwiRklMRU5BTUVfTUFYXCIsIFwiTF90bXBuYW1cIiwgXCJTRUVLX0NVUlwiLCBcIlNFRUtfRU5EXCIsIFwiU0VFS19TRVRcIiwgXCJUTVBfTUFYXCIsXG4gICAgXCJFWElUX0ZBSUxVUkVcIiwgXCJFWElUX1NVQ0NFU1NcIiwgXCJNQl9DVVJfTUFYXCIsIFwiTUJfTEVOX01BWFwiLCBcIlJBTkRfTUFYXCIsXG4gICAgXCJyZW1vdmVcIiwgXCJyZW5hbWVcIiwgXCJ0bXBmaWxlXCIsIFwidG1wbmFtXCIsIFwiZmNsb3NlXCIsIFwiZm9wZW5cIiwgXCJmcmVvcGVuXCIsIFwic2V0YnVmXCIsIFwic2V0dmJ1ZlwiLFxuICAgIFwiZnByaW50ZlwiLCBcImZzY2FuZlwiLCBcInByaW50ZlwiLCBcInNjYW5mXCIsIFwic25wcmludGZcIiwgXCJzcHJpbnRmXCIsIFwic3NjYW5mXCIsIFwidmZwcmludGZcIiwgXCJ2ZnNjYW5mXCIsIFwidnByaW50ZlwiLFxuICAgIFwidnNjYW5mXCIsIFwidnNucHJpbnRmXCIsIFwidnNwcmludGZcIiwgXCJ2c3NjYW5mXCIsIFwiZmdldGNcIiwgXCJmZ2V0c1wiLCBcImZwdXRjXCIsIFwiZnB1dHNcIiwgXCJnZXRjXCIsIFwiZ2V0Y2hhclwiLFxuICAgIFwicHV0Y1wiLCBcInB1dGNoYXJcIiwgXCJwdXRzXCIsIFwidW5nZXRjXCIsIFwiZnJlYWRcIiwgXCJmZ2V0cG9zXCIsIFwiZnNlZWtcIiwgXCJmc2V0cG9zXCIsIFwiZnRlbGxcIiwgXCJyZXdpbmRcIiwgXCJjbGVhcmVyclwiLFxuICAgIFwiZmVvZlwiLCBcImZlcnJvclwiLCBcInBlcnJvclwiLCBcImF0b2ZcIiwgXCJhdG9pXCIsIFwiYXRvbFwiLCBcImF0b2xsXCIsIFwic3RydG9kXCIsIFwic3RydG9mXCIsIFwic3RydG9sZFwiLCBcInN0cnRvbFwiLFxuICAgIFwic3RydG9sbFwiLCBcInN0cnRvdWxcIiwgXCJzdHJ0b3VsbFwiLCBcInJhbmRcIiwgXCJzcmFuZFwiLCBcImFsaWduZWRfYWxsb2NcIiwgXCJjYWxsb2NcIiwgXCJyZWFsbG9jXCIsIFwiYWJvcnRcIiwgXCJhdGV4aXRcIixcbiAgICBcImF0X3F1aWNrX2V4aXRcIiwgXCJxdWlja19leGl0XCIsIFwiZ2V0ZW52XCIsIFwic3lzdGVtXCIsIFwiYnNlYXJjaFwiLCBcInFzb3J0XCIsIFwiYWJzXCIsIFwibGFic1wiLCBcImxsYWJzXCIsIFwiZGl2XCIsIFwibGRpdlwiLFxuICAgIFwibGxkaXZcIiwgXCJtYmxlblwiLCBcIm1idG93Y1wiLCBcIndjdG9tYlwiLCBcIm1ic3Rvd2NzXCIsIFwid2NzdG9tYnNcIiwgXCJtZW1tb3ZlXCIsIFwic3RyY3B5XCIsIFwic3RybmNweVwiLCBcInN0cmNhdFwiLFxuICAgIFwic3RybmNhdFwiLCBcInN0cmNtcFwiLCBcInN0cmNvbGxcIiwgXCJzdHJuY21wXCIsIFwic3RyeGZybVwiLCBcIm1lbWNoclwiLCBcInN0cmNoclwiLCBcInN0cmNzcG5cIiwgXCJzdHJwYnJrXCIsIFwic3RycmNoclwiLFxuICAgIFwic3Ryc3BuXCIsIFwic3Ryc3RyXCIsIFwic3RydG9rXCIsIFwibWVtc2V0XCIsIFwic3RyZXJyb3JcIiwgXCJzdHJsZW5cIlxuICBdKSxcbiAgY3NoYXJwOiBuZXcgU2V0KFtcbiAgICBcIl9fYXJnbGlzdFwiLCBcIl9fbWFrZXJlZlwiLCBcIl9fcmVmdHlwZVwiLCBcIl9fcmVmdmFsdWVcIiwgXCJhYnN0cmFjdFwiLCBcImFkZFwiLCBcImFsaWFzXCIsIFwiYWxsb3dzXCIsIFwiYW5kXCIsIFwiYXNcIixcbiAgICBcImFzY2VuZGluZ1wiLCBcImFzeW5jXCIsIFwiYXdhaXRcIiwgXCJiYXNlXCIsIFwiYm9vbFwiLCBcImJyZWFrXCIsXG4gICAgXCJieVwiLCBcImJ5dGVcIiwgXCJjYXNlXCIsIFwiY2F0Y2hcIiwgXCJjaGFyXCIsIFwiY2hlY2tlZFwiLCBcImNsYXNzXCIsIFwiY29uc3RcIiwgXCJjb250aW51ZVwiLCBcImRlY2ltYWxcIiwgXCJkZWZhdWx0XCIsXG4gICAgXCJkZWxlZ2F0ZVwiLCBcImRlc2NlbmRpbmdcIiwgXCJkb1wiLCBcImRvdWJsZVwiLCBcImR5bmFtaWNcIiwgXCJlbHNlXCIsIFwiZW51bVwiLCBcImVxdWFsc1wiLCBcImV2ZW50XCIsIFwiZXhwbGljaXRcIiwgXCJleHRlbnNpb25cIiwgXCJleHRlcm5cIixcbiAgICBcImZhbHNlXCIsIFwiZmllbGRcIiwgXCJmaWxlXCIsIFwiZmluYWxseVwiLCBcImZpeGVkXCIsIFwiZmxvYXRcIiwgXCJmb3JcIiwgXCJmb3JlYWNoXCIsIFwiZnJvbVwiLCBcImdldFwiLCBcImdsb2JhbFwiLCBcImdvdG9cIixcbiAgICBcImdyb3VwXCIsIFwiaWZcIiwgXCJpbXBsaWNpdFwiLCBcImluXCIsIFwiaW5pdFwiLCBcImludFwiLCBcImludGVyZmFjZVwiLCBcImludGVybmFsXCIsIFwiaW50b1wiLCBcImlzXCIsIFwiam9pblwiLCBcImxldFwiLCBcImxvY2tcIixcbiAgICBcImxvbmdcIiwgXCJtYW5hZ2VkXCIsIFwibmFtZW9mXCIsIFwibmFtZXNwYWNlXCIsIFwibmV3XCIsIFwibmludFwiLCBcIm5vdFwiLCBcIm5vdG51bGxcIiwgXCJudWxsXCIsIFwibnVpbnRcIiwgXCJvYmplY3RcIiwgXCJvblwiLFxuICAgIFwib3BlcmF0b3JcIiwgXCJvclwiLCBcIm9yZGVyYnlcIiwgXCJvdXRcIiwgXCJvdmVycmlkZVwiLCBcInBhcmFtc1wiLCBcInBhcnRpYWxcIiwgXCJwcml2YXRlXCIsIFwicHJvdGVjdGVkXCIsIFwicHVibGljXCIsIFwicmVhZG9ubHlcIixcbiAgICBcInJlY29yZFwiLCBcInJlZlwiLCBcInJlbW92ZVwiLCBcInJlcXVpcmVkXCIsIFwicmV0dXJuXCIsIFwic2J5dGVcIiwgXCJzY29wZWRcIiwgXCJzZWFsZWRcIiwgXCJzZWxlY3RcIiwgXCJzZXRcIiwgXCJzaG9ydFwiLCBcInNpemVvZlwiLFxuICAgIFwic3RhY2thbGxvY1wiLCBcInN0YXRpY1wiLCBcInN0cmluZ1wiLCBcInN0cnVjdFwiLCBcInN3aXRjaFwiLCBcInRoaXNcIiwgXCJ0aHJvd1wiLCBcInRydWVcIiwgXCJ0cnlcIiwgXCJ0eXBlb2ZcIiwgXCJ1aW50XCIsIFwidWxvbmdcIixcbiAgICBcInVuY2hlY2tlZFwiLCBcInVubWFuYWdlZFwiLCBcInVuc2FmZVwiLCBcInVzaG9ydFwiLCBcInVzaW5nXCIsIFwidmFsdWVcIiwgXCJ2YXJcIiwgXCJ2aXJ0dWFsXCIsIFwidm9pZFwiLCBcInZvbGF0aWxlXCIsIFwid2hlblwiLFxuICAgIFwid2hlcmVcIiwgXCJ3aGlsZVwiLCBcIndpdGhcIiwgXCJ5aWVsZFwiXG4gIF0pLFxuICBnbzogbmV3IFNldChbXG4gICAgXCJfXCIsIFwiYnJlYWtcIiwgXCJkZWZhdWx0XCIsIFwiZnVuY1wiLCBcImludGVyZmFjZVwiLCBcInNlbGVjdFwiLCBcImNhc2VcIiwgXCJkZWZlclwiLCBcImdvXCIsIFwibWFwXCIsIFwic3RydWN0XCIsIFwiY2hhblwiLFxuICAgIFwiZWxzZVwiLCBcImdvdG9cIiwgXCJwYWNrYWdlXCIsIFwic3dpdGNoXCIsIFwiY29uc3RcIiwgXCJmYWxsdGhyb3VnaFwiLCBcImlmXCIsIFwicmFuZ2VcIiwgXCJ0eXBlXCIsIFwiY29udGludWVcIiwgXCJmb3JcIixcbiAgICBcImltcG9ydFwiLCBcInJldHVyblwiLCBcInZhclwiXG4gIF0pLFxuICBqYXZhOiBuZXcgU2V0KFtcbiAgICBcIl9cIiwgXCJhYnN0cmFjdFwiLCBcImFzc2VydFwiLCBcImJvb2xlYW5cIiwgXCJicmVha1wiLCBcImJ5dGVcIiwgXCJjYXNlXCIsIFwiY2F0Y2hcIiwgXCJjaGFyXCIsIFwiY2xhc3NcIiwgXCJjb25zdFwiLCBcImNvbnRpbnVlXCIsXG4gICAgXCJkZWZhdWx0XCIsIFwiZG9cIiwgXCJkb3VibGVcIiwgXCJlbHNlXCIsIFwiZW51bVwiLCBcImV4cG9ydHNcIiwgXCJleHRlbmRzXCIsIFwiZmFsc2VcIiwgXCJmaW5hbFwiLCBcImZpbmFsbHlcIiwgXCJmbG9hdFwiLCBcImZvclwiLFxuICAgIFwiZ290b1wiLCBcImlmXCIsIFwiaW1wbGVtZW50c1wiLCBcImltcG9ydFwiLCBcImluc3RhbmNlb2ZcIiwgXCJpbnRcIiwgXCJpbnRlcmZhY2VcIiwgXCJsb25nXCIsIFwibW9kdWxlXCIsIFwibmF0aXZlXCIsIFwibmV3XCIsXG4gICAgXCJub24tc2VhbGVkXCIsIFwibnVsbFwiLCBcIm9wZW5cIiwgXCJvcGVuc1wiLCBcInBhY2thZ2VcIiwgXCJwZXJtaXRzXCIsIFwicHJpdmF0ZVwiLCBcInByb3RlY3RlZFwiLCBcInByb3ZpZGVzXCIsIFwicHVibGljXCIsXG4gICAgXCJyZWNvcmRcIiwgXCJyZXF1aXJlc1wiLCBcInJldHVyblwiLCBcInNlYWxlZFwiLCBcInNob3J0XCIsIFwic3RhdGljXCIsIFwic3RyaWN0ZnBcIiwgXCJzdXBlclwiLCBcInN3aXRjaFwiLCBcInN5bmNocm9uaXplZFwiLFxuICAgIFwidGhpc1wiLCBcInRocm93XCIsIFwidGhyb3dzXCIsIFwidG9cIiwgXCJ0cmFuc2llbnRcIiwgXCJ0cmFuc2l0aXZlXCIsIFwidHJ1ZVwiLCBcInRyeVwiLCBcInVzZXNcIiwgXCJ2YXJcIiwgXCJ2b2lkXCIsIFwidm9sYXRpbGVcIixcbiAgICBcIndoZW5cIiwgXCJ3aGlsZVwiLCBcIndpdGhcIiwgXCJ5aWVsZFwiXG4gIF0pLFxuICBqYXZhc2NyaXB0OiBuZXcgU2V0KFtcbiAgICBcImF3YWl0XCIsIFwiYnJlYWtcIiwgXCJjYXNlXCIsIFwiY2F0Y2hcIiwgXCJjbGFzc1wiLCBcImNvbnN0XCIsIFwiY29udGludWVcIiwgXCJkZWJ1Z2dlclwiLCBcImRlZmF1bHRcIiwgXCJkZWxldGVcIiwgXCJkb1wiLCBcImVsc2VcIixcbiAgICBcImVudW1cIiwgXCJleHBvcnRcIiwgXCJleHRlbmRzXCIsIFwiZmFsc2VcIiwgXCJmaW5hbGx5XCIsIFwiZm9yXCIsIFwiZnVuY3Rpb25cIiwgXCJpZlwiLCBcImltcGxlbWVudHNcIiwgXCJpbXBvcnRcIiwgXCJpblwiLFxuICAgIFwiaW5zdGFuY2VvZlwiLCBcImludGVyZmFjZVwiLCBcImxldFwiLCBcIm5ld1wiLCBcIm51bGxcIiwgXCJwYWNrYWdlXCIsIFwicHJpdmF0ZVwiLCBcInByb3RlY3RlZFwiLCBcInB1YmxpY1wiLCBcInJldHVyblwiLCBcInN0YXRpY1wiLFxuICAgIFwic3VwZXJcIiwgXCJzd2l0Y2hcIiwgXCJ0aGlzXCIsIFwidGhyb3dcIiwgXCJ0cnVlXCIsIFwidHJ5XCIsIFwidHlwZW9mXCIsIFwidmFyXCIsIFwidm9pZFwiLCBcIndoaWxlXCIsIFwid2l0aFwiLCBcInlpZWxkXCJcbiAgXSksXG4gIHBocDogbmV3IFNldChbXG4gICAgXCJfX2hhbHRfY29tcGlsZXJcIiwgXCJhYnN0cmFjdFwiLCBcImFuZFwiLCBcImFycmF5XCIsIFwiYXNcIiwgXCJicmVha1wiLCBcImNhbGxhYmxlXCIsIFwiY2FzZVwiLCBcImNhdGNoXCIsIFwiY2xhc3NcIiwgXCJjbG9uZVwiLFxuICAgIFwiY29uc3RcIiwgXCJjb250aW51ZVwiLCBcImRlY2xhcmVcIiwgXCJkZWZhdWx0XCIsIFwiZGllXCIsIFwiZG9cIiwgXCJlY2hvXCIsIFwiZWxzZVwiLCBcImVsc2VpZlwiLCBcImVtcHR5XCIsIFwiZW5kZGVjbGFyZVwiLFxuICAgIFwiZW5kZm9yXCIsIFwiZW5kZm9yZWFjaFwiLCBcImVuZGlmXCIsIFwiZW5kc3dpdGNoXCIsIFwiZW5kd2hpbGVcIiwgXCJlbnVtXCIsIFwiZXZhbFwiLCBcImV4aXRcIiwgXCJleHRlbmRzXCIsIFwiZmFsc2VcIiwgXCJmaW5hbFwiLFxuICAgIFwiZmluYWxseVwiLCBcImZuXCIsIFwiZm9yXCIsIFwiZm9yZWFjaFwiLCBcImZyb21cIiwgXCJmdW5jdGlvblwiLCBcImdsb2JhbFwiLCBcImdvdG9cIiwgXCJpZlwiLCBcImltcGxlbWVudHNcIiwgXCJpbmNsdWRlXCIsXG4gICAgXCJpbmNsdWRlX29uY2VcIiwgXCJpbnN0YW5jZW9mXCIsIFwiaW5zdGVhZG9mXCIsIFwiaW50ZXJmYWNlXCIsIFwiaXNzZXRcIiwgXCJpdGVyYWJsZVwiLCBcImxpc3RcIiwgXCJtYXRjaFwiLCBcIm1peGVkXCIsIFwibmFtZXNwYWNlXCIsXG4gICAgXCJuZXZlclwiLCBcIm5ld1wiLCBcIm51bGxcIiwgXCJvYmplY3RcIiwgXCJvclwiLCBcInBhcmVudFwiLCBcInByaW50XCIsIFwicHJpdmF0ZVwiLCBcInByb3RlY3RlZFwiLCBcInB1YmxpY1wiLCBcInJlYWRvbmx5XCIsIFwicmVxdWlyZVwiLFxuICAgIFwicmVxdWlyZV9vbmNlXCIsIFwicmV0dXJuXCIsIFwic2VsZlwiLCBcInN0YXRpY1wiLCBcInN3aXRjaFwiLCBcInRocm93XCIsIFwidHJhaXRcIiwgXCJ0cnVlXCIsIFwidHJ5XCIsIFwidW5zZXRcIiwgXCJ1c2VcIiwgXCJ2YXJcIixcbiAgICBcInZvaWRcIiwgXCJ3aGlsZVwiLCBcInhvclwiLCBcInlpZWxkXCJcbiAgXSksXG4gIHB5dGhvbjogbmV3IFNldChbXG4gICAgXCJGYWxzZVwiLCBcIk5vbmVcIiwgXCJUcnVlXCIsIFwiYW5kXCIsIFwiYXNcIiwgXCJhc3NlcnRcIiwgXCJhc3luY1wiLCBcImF3YWl0XCIsIFwiYm9vbFwiLCBcImJyZWFrXCIsIFwiY2FzZVwiLCBcImNsYXNzXCIsXG4gICAgXCJjb250aW51ZVwiLCBcImRlZlwiLCBcImRlbFwiLCBcImVsaWZcIiwgXCJlbHNlXCIsIFwiZXhjZXB0XCIsIFwiZXhlY1wiLCBcImZpbmFsbHlcIiwgXCJmb3JcIiwgXCJmcm9tXCIsIFwiZ2xvYmFsXCIsIFwiaWZcIixcbiAgICBcImltcG9ydFwiLCBcImluXCIsIFwiaW50XCIsIFwiaXNcIiwgXCJsYW1iZGFcIiwgXCJtYXRjaFwiLCBcIm5vbmxvY2FsXCIsIFwibm90XCIsIFwib3JcIiwgXCJwYXNzXCIsIFwicHJpbnRcIixcbiAgICBcInJhaXNlXCIsIFwicmV0dXJuXCIsIFwic3RyXCIsIFwidHJ5XCIsIFwidHlwZVwiLCBcIndoaWxlXCIsIFwid2l0aFwiLCBcInlpZWxkXCIsIFwiX1wiLCBcIl9fZGVidWdfX1wiXG4gIF0pLFxuICBydWJ5OiBuZXcgU2V0KFtcbiAgICBcIkJFR0lOXCIsIFwiRU5EXCIsIFwiX19FTkNPRElOR19fXCIsIFwiX19FTkRfX1wiLCBcIl9fRklMRV9fXCIsIFwiX19MSU5FX19cIiwgXCJhbGlhc1wiLCBcImFuZFwiLCBcImJlZ2luXCIsIFwiYnJlYWtcIiwgXCJjYXNlXCIsXG4gICAgXCJjbGFzc1wiLCBcImRlZlwiLCBcImRlZmluZWQ/XCIsIFwiZG9cIiwgXCJlbHNlXCIsIFwiZWxzaWZcIiwgXCJlbmRcIiwgXCJlbnN1cmVcIiwgXCJmYWxzZVwiLCBcImZvclwiLCBcImlmXCIsIFwiaW5cIiwgXCJtb2R1bGVcIixcbiAgICBcIm5leHRcIiwgXCJuaWxcIiwgXCJub3RcIiwgXCJvclwiLCBcInJlZG9cIiwgXCJyZXNjdWVcIiwgXCJyZXRyeVwiLCBcInJldHVyblwiLCBcInNlbGZcIiwgXCJzdXBlclwiLCBcInRoZW5cIiwgXCJ0cnVlXCIsIFwidW5kZWZcIixcbiAgICBcInVubGVzc1wiLCBcInVudGlsXCIsIFwid2hlblwiLCBcIndoaWxlXCIsIFwieWllbGRcIlxuICBdKSxcbiAgdHlwZXNjcmlwdDogbmV3IFNldChbXG4gICAgXCJhYnN0cmFjdFwiLCBcImFueVwiLCBcImFzXCIsIFwiYXNzZXJ0c1wiLCBcImFzeW5jXCIsIFwiYXdhaXRcIiwgXCJib29sZWFuXCIsIFwiYnJlYWtcIiwgXCJjYXNlXCIsIFwiY2F0Y2hcIiwgXCJjbGFzc1wiLCBcImNvbnN0XCIsXG4gICAgXCJjb25zdHJ1Y3RvclwiLCBcImNvbnRpbnVlXCIsIFwiZGVidWdnZXJcIiwgXCJkZWNsYXJlXCIsIFwiZGVmYXVsdFwiLCBcImRlbGV0ZVwiLCBcImRvXCIsIFwiZWxzZVwiLCBcImVudW1cIiwgXCJleHBvcnRcIiwgXCJleHRlbmRzXCIsXG4gICAgXCJmYWxzZVwiLCBcImZpbmFsbHlcIiwgXCJmb3JcIiwgXCJmcm9tXCIsIFwiZnVuY3Rpb25cIiwgXCJnZXRcIiwgXCJpZlwiLCBcImltcGxlbWVudHNcIiwgXCJpbXBvcnRcIiwgXCJpblwiLCBcImluZmVyXCIsIFwiaW5zdGFuY2VvZlwiLFxuICAgIFwiaW50ZXJmYWNlXCIsIFwiaXNcIiwgXCJrZXlvZlwiLCBcImxldFwiLCBcIm1vZHVsZVwiLCBcIm5hbWVzcGFjZVwiLCBcIm5ldmVyXCIsIFwibmV3XCIsIFwibnVsbFwiLCBcIm51bWJlclwiLCBcIm9iamVjdFwiLCBcIm9mXCIsXG4gICAgXCJvdmVycmlkZVwiLCBcInBhY2thZ2VcIiwgXCJwcml2YXRlXCIsIFwicHJvdGVjdGVkXCIsIFwicHVibGljXCIsIFwicmVhZG9ubHlcIiwgXCJyZXF1aXJlXCIsIFwicmV0dXJuXCIsIFwic2F0aXNmaWVzXCIsIFwic2V0XCIsXG4gICAgXCJzdGF0aWNcIiwgXCJzdHJpbmdcIiwgXCJzdXBlclwiLCBcInN3aXRjaFwiLCBcInN5bWJvbFwiLCBcInRoaXNcIiwgXCJ0aHJvd1wiLCBcInRydWVcIiwgXCJ0cnlcIiwgXCJ0eXBlXCIsIFwidHlwZW9mXCIsIFwidW5kZWZpbmVkXCIsXG4gICAgXCJ1bmlxdWVcIiwgXCJ1bmtub3duXCIsIFwidXNpbmdcIiwgXCJ2YXJcIiwgXCJ2b2lkXCIsIFwid2hpbGVcIiwgXCJ3aXRoXCIsIFwieWllbGRcIlxuICBdKSxcbiAgd2FzbTogbmV3IFNldCgpXG59XG5cbmNvbnN0IHBocEludmFsaWRQYXJhbWV0ZXJCaW5kaW5ncyA9IG5ldyBTZXQoW1xuICBcIkdMT0JBTFNcIiwgXCJfQ09PS0lFXCIsIFwiX0VOVlwiLCBcIl9GSUxFU1wiLCBcIl9HRVRcIiwgXCJfUE9TVFwiLCBcIl9SRVFVRVNUXCIsIFwiX1NFUlZFUlwiLCBcIl9TRVNTSU9OXCIsIFwidGhpc1wiXG5dKVxuY29uc3QgcGhwSW52YWxpZEFzc2lnbmVkQmluZGluZ3MgPSBuZXcgU2V0KFtcIkdMT0JBTFNcIiwgXCJ0aGlzXCJdKVxuXG4vKiogQHR5cGUge1JlYWRvbmx5PFBhcnRpYWw8UmVjb3JkPGltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLkJhY2tlbmRMYW5ndWFnZSwgU2V0PHN0cmluZz4+Pj59ICovXG5jb25zdCByZXNlcnZlZFR5cGVOYW1lcyA9IE9iamVjdC5mcmVlemUoe1xuICBqYXZhOiBuZXcgU2V0KFtcIkJvb2xlYW5cIiwgXCJJbnRlZ2VyXCIsIFwiTWFpblwiLCBcIk1hdGhcIiwgXCJPYmplY3RcIiwgXCJTdHJpbmdcIiwgXCJTeXN0ZW1cIl0pLFxuICBqYXZhc2NyaXB0OiBuZXcgU2V0KFtcIkFycmF5XCIsIFwiQm9vbGVhblwiLCBcIk1hcFwiLCBcIk1hdGhcIiwgXCJOdW1iZXJcIiwgXCJPYmplY3RcIiwgXCJSZWZsZWN0XCIsIFwiU3RyaW5nXCJdKSxcbiAgcGhwOiBuZXcgU2V0KFtcbiAgICBcImFkZHJlc3NpbmZvXCIsIFwiYWxsb3dkeW5hbWljcHJvcGVydGllc1wiLCBcImFwcGVuZGl0ZXJhdG9yXCIsIFwiYXJndW1lbnRjb3VudGVycm9yXCIsIFwiYXJpdGhtZXRpY2Vycm9yXCIsIFwiYXJyYXlhY2Nlc3NcIixcbiAgICBcImFycmF5aXRlcmF0b3JcIiwgXCJhcnJheW9iamVjdFwiLCBcImFzc2VydGlvbmVycm9yXCIsIFwiYXR0cmlidXRlXCIsIFwiYmFja2VkZW51bVwiLCBcImJhZGZ1bmN0aW9uY2FsbGV4Y2VwdGlvblwiLFxuICAgIFwiYmFkbWV0aG9kY2FsbGV4Y2VwdGlvblwiLCBcImNhY2hpbmdpdGVyYXRvclwiLFxuICAgIFwiY2FsbGJhY2tmaWx0ZXJpdGVyYXRvclwiLCBcImNsb3NlZGdlbmVyYXRvcmV4Y2VwdGlvblwiLCBcImNsb3N1cmVcIiwgXCJjb21waWxlZXJyb3JcIiwgXCJjb3VudGFibGVcIiwgXCJkYXRlZXJyb3JcIiwgXCJkYXRlZXhjZXB0aW9uXCIsXG4gICAgXCJkYXRlaW50ZXJ2YWxcIiwgXCJkYXRlaW52YWxpZG9wZXJhdGlvbmV4Y2VwdGlvblwiLCBcImRhdGVpbnZhbGlkdGltZXpvbmVleGNlcHRpb25cIiwgXCJkYXRlbWFsZm9ybWVkaW50ZXJ2YWxzdHJpbmdleGNlcHRpb25cIixcbiAgICBcImRhdGVtYWxmb3JtZWRwZXJpb2RzdHJpbmdleGNlcHRpb25cIiwgXCJkYXRlbWFsZm9ybWVkc3RyaW5nZXhjZXB0aW9uXCIsIFwiZGF0ZW9iamVjdGVycm9yXCIsIFwiZGF0ZXBlcmlvZFwiLCBcImRhdGVyYW5nZWVycm9yXCIsXG4gICAgXCJkYXRldGltZVwiLCBcImRhdGV0aW1laW1tdXRhYmxlXCIsIFwiZGF0ZXRpbWVpbnRlcmZhY2VcIiwgXCJkYXRldGltZXpvbmVcIiwgXCJkZWZsYXRlY29udGV4dFwiLCBcImRlbGF5ZWR0YXJnZXR2YWxpZGF0aW9uXCIsXG4gICAgXCJkZXByZWNhdGVkXCIsIFwiZGlyZWN0b3J5XCIsIFwiZGlyZWN0b3J5aXRlcmF0b3JcIiwgXCJkaXZpc2lvbmJ5emVyb2Vycm9yXCIsIFwiZG9tYWluZXhjZXB0aW9uXCIsIFwiZW1wdHlpdGVyYXRvclwiLCBcImVycm9yXCIsXG4gICAgXCJlcnJvcmV4Y2VwdGlvblwiLCBcImV4Y2VwdGlvblwiLCBcImZmaVwiLCBcImZpYmVyXCIsIFwiZmliZXJlcnJvclwiLCBcImZpbGVzeXN0ZW1pdGVyYXRvclwiLCBcImZpbHRlcml0ZXJhdG9yXCIsIFwiZmluZm9cIiwgXCJnZW5lcmF0b3JcIixcbiAgICBcImdsb2JpdGVyYXRvclwiLCBcImhhc2hjb250ZXh0XCIsIFwiaW5maW5pdGVpdGVyYXRvclwiLCBcImluZmxhdGVjb250ZXh0XCIsIFwiaW50ZXJuYWxpdGVyYXRvclwiLCBcImludmFsaWRhcmd1bWVudGV4Y2VwdGlvblwiLFxuICAgIFwiaXRlcmF0b3JcIiwgXCJpdGVyYXRvcmFnZ3JlZ2F0ZVwiLCBcIml0ZXJhdG9yaXRlcmF0b3JcIiwgXCJqc29uZXhjZXB0aW9uXCIsIFwianNvbnNlcmlhbGl6YWJsZVwiLCBcImxlbmd0aGV4Y2VwdGlvblwiLFxuICAgIFwibGlieG1sZXJyb3JcIiwgXCJsaW1pdGl0ZXJhdG9yXCIsIFwibG9naWNleGNlcHRpb25cIiwgXCJtdWx0aXBsZWl0ZXJhdG9yXCIsIFwibm9kaXNjYXJkXCIsIFwibm9yZXdpbmRpdGVyYXRvclwiLFxuICAgIFwib3BlbnNzbGFzeW1tZXRyaWNrZXlcIiwgXCJvcGVuc3NsY2VydGlmaWNhdGVcIiwgXCJvcGVuc3NsY2VydGlmaWNhdGVzaWduaW5ncmVxdWVzdFwiLFxuICAgIFwib3V0b2Zib3VuZHNleGNlcHRpb25cIiwgXCJvdXRvZnJhbmdlZXhjZXB0aW9uXCIsIFwib3V0ZXJpdGVyYXRvclwiLCBcIm92ZXJmbG93ZXhjZXB0aW9uXCIsIFwib3ZlcnJpZGVcIiwgXCJwYXJlbnRpdGVyYXRvclwiLFxuICAgIFwicGFyc2VlcnJvclwiLCBcInBkb1wiLCBcInBkb2V4Y2VwdGlvblwiLCBcInBkb3Jvd1wiLCBcInBkb3N0YXRlbWVudFwiLCBcInBoYXJcIiwgXCJwaGFyZGF0YVwiLCBcInBoYXJleGNlcHRpb25cIiwgXCJwaGFyZmlsZWluZm9cIixcbiAgICBcInBocF91c2VyX2ZpbHRlclwiLCBcInBocHRva2VuXCIsIFwicHJvcGVydHlob29rdHlwZVwiLCBcInJhbmdlZXhjZXB0aW9uXCIsIFwicmVjdXJzaXZlYXJyYXlpdGVyYXRvclwiLCBcInJlY3Vyc2l2ZWNhY2hpbmdpdGVyYXRvclwiLFxuICAgIFwicmVjdXJzaXZlY2FsbGJhY2tmaWx0ZXJpdGVyYXRvclwiLFxuICAgIFwicmVjdXJzaXZlZGlyZWN0b3J5aXRlcmF0b3JcIiwgXCJyZWN1cnNpdmVmaWx0ZXJpdGVyYXRvclwiLCBcInJlY3Vyc2l2ZWl0ZXJhdG9yXCIsIFwicmVjdXJzaXZlaXRlcmF0b3JpdGVyYXRvclwiLFxuICAgIFwicmVjdXJzaXZlcmVnZXhpdGVyYXRvclwiLCBcInJlY3Vyc2l2ZXRyZWVpdGVyYXRvclwiLCBcInJlZmxlY3Rpb25cIiwgXCJyZWZsZWN0aW9uYXR0cmlidXRlXCIsIFwicmVmbGVjdGlvbmNsYXNzXCIsXG4gICAgXCJyZWZsZWN0aW9uY2xhc3Njb25zdGFudFwiLCBcInJlZmxlY3Rpb25jb25zdGFudFwiLCBcInJlZmxlY3Rpb25lbnVtXCIsIFwicmVmbGVjdGlvbmVudW1iYWNrZWRjYXNlXCIsIFwicmVmbGVjdGlvbmVudW11bml0Y2FzZVwiLFxuICAgIFwicmVmbGVjdGlvbmV4Y2VwdGlvblwiLCBcInJlZmxlY3Rpb25leHRlbnNpb25cIiwgXCJyZWZsZWN0aW9uZmliZXJcIiwgXCJyZWZsZWN0aW9uZnVuY3Rpb25cIiwgXCJyZWZsZWN0aW9uZnVuY3Rpb25hYnN0cmFjdFwiLFxuICAgIFwicmVmbGVjdGlvbmdlbmVyYXRvclwiLCBcInJlZmxlY3Rpb25pbnRlcnNlY3Rpb250eXBlXCIsIFwicmVmbGVjdGlvbm1ldGhvZFwiLCBcInJlZmxlY3Rpb25uYW1lZHR5cGVcIiwgXCJyZWZsZWN0aW9ub2JqZWN0XCIsXG4gICAgXCJyZWZsZWN0aW9ucGFyYW1ldGVyXCIsIFwicmVmbGVjdGlvbnByb3BlcnR5XCIsIFwicmVmbGVjdGlvbnJlZmVyZW5jZVwiLCBcInJlZmxlY3Rpb250eXBlXCIsIFwicmVmbGVjdGlvbnVuaW9udHlwZVwiLFxuICAgIFwicmVmbGVjdGlvbnplbmRleHRlbnNpb25cIiwgXCJyZWZsZWN0b3JcIiwgXCJyZWdleGl0ZXJhdG9yXCIsIFwicmVxdWVzdHBhcnNlYm9keWV4Y2VwdGlvblwiLCBcInJldHVybnR5cGV3aWxsY2hhbmdlXCIsXG4gICAgXCJyb3VuZGluZ21vZGVcIiwgXCJydW50aW1lZXhjZXB0aW9uXCIsIFwic2Vla2FibGVpdGVyYXRvclwiLCBcInNlbnNpdGl2ZXBhcmFtZXRlclwiLCBcInNlbnNpdGl2ZXBhcmFtZXRlcnZhbHVlXCIsIFwic2VyaWFsaXphYmxlXCIsXG4gICAgXCJzZXNzaW9uaGFuZGxlclwiLCBcInNlc3Npb25oYW5kbGVyaW50ZXJmYWNlXCIsIFwic2Vzc2lvbmlkaW50ZXJmYWNlXCIsIFwic2Vzc2lvbnVwZGF0ZXRpbWVzdGFtcGhhbmRsZXJpbnRlcmZhY2VcIiwgXCJzaG1vcFwiLFxuICAgIFwic29ja2V0XCIsIFwic29kaXVtZXhjZXB0aW9uXCIsIFwic3BsZG91Ymx5bGlua2VkbGlzdFwiLCBcInNwbGZpbGVpbmZvXCIsXG4gICAgXCJzcGxmaWxlb2JqZWN0XCIsIFwic3BsZml4ZWRhcnJheVwiLCBcInNwbGhlYXBcIiwgXCJzcGxtYXhoZWFwXCIsIFwic3BsbWluaGVhcFwiLCBcInNwbG9iamVjdHN0b3JhZ2VcIiwgXCJzcGxvYnNlcnZlclwiLFxuICAgIFwic3BscHJpb3JpdHlxdWV1ZVwiLCBcInNwbHF1ZXVlXCIsIFwic3Bsc3RhY2tcIiwgXCJzcGxzdWJqZWN0XCIsIFwic3BsdGVtcGZpbGVvYmplY3RcIiwgXCJzdGRjbGFzc1wiLCBcInN0cmVhbWJ1Y2tldFwiLCBcInN0cmluZ2FibGVcIixcbiAgICBcInN5c3ZtZXNzYWdlcXVldWVcIiwgXCJzeXN2c2VtYXBob3JlXCIsIFwic3lzdnNoYXJlZG1lbW9yeVwiLCBcInRocm93YWJsZVwiLCBcInRyYXZlcnNhYmxlXCIsIFwidHlwZWVycm9yXCIsIFwidW5kZXJmbG93ZXhjZXB0aW9uXCIsXG4gICAgXCJ1bmV4cGVjdGVkdmFsdWVleGNlcHRpb25cIiwgXCJ1bmhhbmRsZWRtYXRjaGVycm9yXCIsIFwidW5pdGVudW1cIiwgXCJ2YWx1ZWVycm9yXCIsIFwid2Vha21hcFwiLCBcIndlYWtyZWZlcmVuY2VcIlxuICBdKSxcbiAgcnVieTogbmV3IFNldChbXG4gICAgXCJBcmd1bWVudEVycm9yXCIsIFwiQXJyYXlcIiwgXCJCYXNpY09iamVjdFwiLCBcIkJpbmRpbmdcIiwgXCJDbGFzc1wiLCBcIkNsb3NlZFF1ZXVlRXJyb3JcIiwgXCJDb21wYXJhYmxlXCIsIFwiQ29tcGxleFwiLCBcIkRhdGFcIiwgXCJEaXJcIixcbiAgICBcIkVuY29kaW5nXCIsIFwiRW5jb2RpbmdFcnJvclwiLCBcIkVudW1lcmFibGVcIiwgXCJFbnVtZXJhdG9yXCIsIFwiRU9GRXJyb3JcIiwgXCJFcnJub1wiLCBcIkV4Y2VwdGlvblwiLCBcIkZhbHNlQ2xhc3NcIiwgXCJGaWJlclwiLFxuICAgIFwiRmliZXJFcnJvclwiLCBcIkZpbGVcIiwgXCJGaWxlVGVzdFwiLCBcIkZsb2F0XCIsIFwiRnJvemVuRXJyb3JcIiwgXCJHQ1wiLCBcIkhhc2hcIiwgXCJJT1wiLCBcIklPRXJyb3JcIiwgXCJJbmRleEVycm9yXCIsIFwiSW50ZWdlclwiLFxuICAgIFwiSW50ZXJydXB0XCIsIFwiS2VybmVsXCIsIFwiS2V5RXJyb3JcIiwgXCJMb2FkRXJyb3JcIiwgXCJMb2NhbEp1bXBFcnJvclwiLCBcIk1hcnNoYWxcIiwgXCJNYXRjaERhdGFcIiwgXCJNYXRoXCIsIFwiTWV0aG9kXCIsIFwiTW9kdWxlXCIsXG4gICAgXCJNdXRleFwiLCBcIk5hbWVFcnJvclwiLCBcIk5pbENsYXNzXCIsIFwiTm9NZW1vcnlFcnJvclwiLCBcIk5vTWV0aG9kRXJyb3JcIiwgXCJOb3RJbXBsZW1lbnRlZEVycm9yXCIsIFwiTnVtZXJpY1wiLCBcIk9iamVjdFwiLFxuICAgIFwiT2JqZWN0U3BhY2VcIiwgXCJQcm9jXCIsIFwiUHJvY2Vzc1wiLCBcIlF1ZXVlXCIsIFwiUmFjdG9yXCIsIFwiUmFuZG9tXCIsIFwiUmFuZ2VcIiwgXCJSYXRpb25hbFwiLCBcIlJlZ2V4cFwiLCBcIlJlZ2V4cEVycm9yXCIsIFwiUnVieVZNXCIsXG4gICAgXCJSdW50aW1lRXJyb3JcIiwgXCJTY3JpcHRFcnJvclwiLCBcIlNlY3VyaXR5RXJyb3JcIiwgXCJTaWduYWxcIiwgXCJTaWduYWxFeGNlcHRpb25cIiwgXCJTaXplZFF1ZXVlXCIsIFwiU3RhbmRhcmRFcnJvclwiLCBcIlN0b3BJdGVyYXRpb25cIixcbiAgICBcIlN0cmluZ1wiLCBcIlN0cnVjdFwiLCBcIlN5bWJvbFwiLCBcIlN5bnRheEVycm9yXCIsIFwiU3lzdGVtQ2FsbEVycm9yXCIsIFwiU3lzdGVtRXhpdFwiLCBcIlN5c3RlbVN0YWNrRXJyb3JcIiwgXCJUaHJlYWRcIiwgXCJUaHJlYWRFcnJvclwiLFxuICAgIFwiVGhyZWFkR3JvdXBcIiwgXCJUaW1lXCIsIFwiVHJhY2VQb2ludFwiLCBcIlRydWVDbGFzc1wiLCBcIlR5cGVFcnJvclwiLCBcIlVuYm91bmRNZXRob2RcIiwgXCJVbmNhdWdodFRocm93RXJyb3JcIiwgXCJXYXJuaW5nXCIsXG4gICAgXCJaZXJvRGl2aXNpb25FcnJvclwiXG4gIF0pLFxuICB0eXBlc2NyaXB0OiBuZXcgU2V0KFtcIkFycmF5XCIsIFwiQm9vbGVhblwiLCBcIk1hcFwiLCBcIk1hdGhcIiwgXCJOdW1iZXJcIiwgXCJPYmplY3RcIiwgXCJSZWFkb25seUFycmF5XCIsIFwiUmVhZG9ubHlNYXBcIiwgXCJSZWZsZWN0XCIsIFwiU3RyaW5nXCJdKVxufSlcblxuLyoqXG4gKiBWYWxpZGF0ZXMgYW4gaWRlbnRpZmllciBhZ2FpbnN0IHRoZSB0YXJnZXQgYmFja2VuZCdzIGRlbGliZXJhdGVseSBuYXJyb3cgbGV4aWNhbCBjb250cmFjdC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuQmFja2VuZExhbmd1YWdlfSBsYW5ndWFnZSAtIFRhcmdldCBsYW5ndWFnZS5cbiAqIEBwYXJhbSB7dW5rbm93bn0gbmFtZSAtIENhbmRpZGF0ZSBzZW1hbnRpYyBpZGVudGlmaWVyLlxuICogQHBhcmFtIHtzdHJpbmd9IHJvbGUgLSBJZGVudGlmaWVyIHJvbGUgZm9yIGRpYWdub3N0aWNzLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5Tb3VyY2VMb2NhdGlvbiB8IHVuZGVmaW5lZH0gbG9jYXRpb24gLSBPcmlnaW5hdGluZyBsb2NhdGlvbi5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUYXJnZXRJZGVudGlmaWVyKGxhbmd1YWdlLCBuYW1lLCByb2xlLCBsb2NhdGlvbikge1xuICBpZiAodHlwZW9mIG5hbWUgIT0gXCJzdHJpbmdcIikgdW5zdXBwb3J0ZWRDYXBhYmlsaXR5KGxhbmd1YWdlLCBgJHtyb2xlfSBpZGVudGlmaWVyYCwgbG9jYXRpb24pXG5cbiAgY29uc3QgcmVzZXJ2ZWROYW1lID0gbGFuZ3VhZ2UgPT0gXCJwaHBcIiA/IG5hbWUudG9Mb3dlckNhc2UoKSA6IG5hbWVcbiAgY29uc3Qgc3ludGF4TGFuZ3VhZ2UgPSBsYW5ndWFnZSA9PSBcImlvc1wiID8gXCJzd2lmdFwiIDogbGFuZ3VhZ2VcblxuICBpZiAoIWlkZW50aWZpZXJQYXR0ZXJuc1tzeW50YXhMYW5ndWFnZV0udGVzdChuYW1lKSB8fCByZXNlcnZlZFdvcmRzW3N5bnRheExhbmd1YWdlXS5oYXMocmVzZXJ2ZWROYW1lKSB8fFxuICAgIGxhbmd1YWdlID09IFwicHl0aG9uXCIgJiYgbmFtZS5ub3JtYWxpemUoXCJORktDXCIpICE9IG5hbWUgfHxcbiAgICBsYW5ndWFnZSA9PSBcImNcIiAmJiAhaXNDSWRlbnRpZmllcihuYW1lKSB8fFxuICAgIGxhbmd1YWdlID09IFwicnVzdFwiICYmICFpc1J1c3RJZGVudGlmaWVyKG5hbWUpIHx8XG4gICAgbGFuZ3VhZ2UgPT0gXCJjcHBcIiAmJiAhaXNDcHBJZGVudGlmaWVyKG5hbWUpIHx8XG4gICAgbGFuZ3VhZ2UgPT0gXCJkYXJ0XCIgJiYgIWlzRGFydElkZW50aWZpZXIobmFtZSkgfHxcbiAgICBsYW5ndWFnZSA9PSBcInN3aWZ0XCIgJiYgKCFpc1N3aWZ0SWRlbnRpZmllcihuYW1lKSB8fCBuYW1lLm5vcm1hbGl6ZShcIk5GQ1wiKSAhPSBuYW1lKSB8fFxuICAgIGxhbmd1YWdlID09IFwia290bGluXCIgJiYgKCFpc0tvdGxpbklkZW50aWZpZXIobmFtZSkgfHwgbmFtZS5ub3JtYWxpemUoXCJORkNcIikgIT0gbmFtZSkpIHtcbiAgICB1bnN1cHBvcnRlZENhcGFiaWxpdHkobGFuZ3VhZ2UsIGAke3JvbGV9IGlkZW50aWZpZXIgJyR7bmFtZX0nYCwgbG9jYXRpb24pXG4gIH1cbn1cblxuLyoqXG4gKiBQcm90ZWN0cyB0aGUgZXhhY3QgQyBoZWFkZXIgZW52aXJvbm1lbnQgYW5kIGltcGxlbWVudGF0aW9uLXJlc2VydmVkIG5hbWVzcGFjZSBpbiBlaXRoZXIgZGlyZWN0aW9uLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBDYWxsZXIgaWRlbnRpZmllci5cbiAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIHRoZSBzcGVsbGluZyBpcyBzYWZlIGluIHRoZSBjYW5vbmljYWwgdHJhbnNsYXRpb24gdW5pdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ0lkZW50aWZpZXIobmFtZSkge1xuICByZXR1cm4gaWRlbnRpZmllclBhdHRlcm5zLmMudGVzdChuYW1lKSAmJiAhcmVzZXJ2ZWRXb3Jkcy5jLmhhcyhuYW1lKSAmJlxuICAgICEvXig/OnNlbWFudGlmb2xkX3xTRU1BTlRJRk9MRF98U2VtYW50aWZvbGR8YXRvbWljX3xJTlRbMC05X0EtWl18VUlOVFswLTlfQS1aXXxJTlRNQVhffFVJTlRNQVhffFNJWkVffFBUUkRJRkZffFNJR19BVE9NSUNffFdDSEFSX3xXSU5UX3xDSEFSX3xTQ0hBUl98VUNIQVJffFNIUlRffFVTSFJUX3xMT05HX3xVTE9OR198TExPTkdffFVMTE9OR18pL3UudGVzdChuYW1lKSAmJlxuICAgICEvXig/OnU/aW50KD86OHwxNnwzMnw2NHxtYXh8cHRyfF9sZWFzdFswLTldK3xfZmFzdFswLTldKylfdCkkL3UudGVzdChuYW1lKVxufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBhIGJpbmRpbmcgaWRlbnRpZmllciBhZ2FpbnN0IHRhcmdldCByZXN0cmljdGlvbnMgYmV5b25kIGdlbmVyYWwgaWRlbnRpZmllciBzeW50YXguXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLkJhY2tlbmRMYW5ndWFnZX0gbGFuZ3VhZ2UgLSBUYXJnZXQgbGFuZ3VhZ2UuXG4gKiBAcGFyYW0ge3Vua25vd259IG5hbWUgLSBDYW5kaWRhdGUgc2VtYW50aWMgaWRlbnRpZmllci5cbiAqIEBwYXJhbSB7c3RyaW5nfSByb2xlIC0gQmluZGluZyByb2xlIGZvciBkaWFnbm9zdGljcy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuU291cmNlTG9jYXRpb24gfCB1bmRlZmluZWR9IGxvY2F0aW9uIC0gT3JpZ2luYXRpbmcgbG9jYXRpb24uXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlVGFyZ2V0QmluZGluZ0lkZW50aWZpZXIobGFuZ3VhZ2UsIG5hbWUsIHJvbGUsIGxvY2F0aW9uKSB7XG4gIHZhbGlkYXRlVGFyZ2V0SWRlbnRpZmllcihsYW5ndWFnZSwgbmFtZSwgcm9sZSwgbG9jYXRpb24pXG5cbiAgY29uc3QgaW52YWxpZFR5cGVTY3JpcHRCaW5kaW5nID0gbGFuZ3VhZ2UgPT0gXCJ0eXBlc2NyaXB0XCIgJiYgKG5hbWUgPT0gXCJhcmd1bWVudHNcIiB8fCBuYW1lID09IFwiZXZhbFwiKVxuICBjb25zdCBpbnZhbGlkUGhwVmFyaWFibGUgPSBsYW5ndWFnZSA9PSBcInBocFwiICYmIHR5cGVvZiBuYW1lID09IFwic3RyaW5nXCIgJiZcbiAgICAoKHJvbGUgPT0gXCJwYXJhbWV0ZXJcIiAmJiBwaHBJbnZhbGlkUGFyYW1ldGVyQmluZGluZ3MuaGFzKG5hbWUpKSB8fFxuICAgICAgKChyb2xlID09IFwibG9jYWxcIiB8fCByb2xlID09IFwiYXNzaWdubWVudCB0YXJnZXRcIiB8fCByb2xlID09IFwiY2F0Y2ggYmluZGluZ1wiKSAmJiBwaHBJbnZhbGlkQXNzaWduZWRCaW5kaW5ncy5oYXMobmFtZSkpKVxuICBjb25zdCBpbnZhbGlkUnVieUJpbmRpbmcgPSBsYW5ndWFnZSA9PSBcInJ1YnlcIiAmJiB0eXBlb2YgbmFtZSA9PSBcInN0cmluZ1wiICYmIC9eX1sxLTldJC91LnRlc3QobmFtZSlcblxuICBpZiAoaW52YWxpZFR5cGVTY3JpcHRCaW5kaW5nIHx8IGludmFsaWRQaHBWYXJpYWJsZSB8fCBpbnZhbGlkUnVieUJpbmRpbmcpIHtcbiAgICB1bnN1cHBvcnRlZENhcGFiaWxpdHkobGFuZ3VhZ2UsIGAke3JvbGV9IGlkZW50aWZpZXIgJyR7bmFtZX0nYCwgbG9jYXRpb24pXG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSBub21pbmFsIHJlY29yZC90eXBlIGRlY2xhcmF0aW9uIG5hbWUgZm9yIHRoZSBvcmlnaW5hbC1maXZlIHRhcmdldHMuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLkJhY2tlbmRMYW5ndWFnZX0gbGFuZ3VhZ2UgLSBCYWNrZW5kIGxhbmd1YWdlLlxuICogQHBhcmFtIHt1bmtub3dufSBuYW1lIC0gQ2FuZGlkYXRlIHR5cGUgbmFtZS5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuU291cmNlTG9jYXRpb24gfCB1bmRlZmluZWR9IGxvY2F0aW9uIC0gRGVjbGFyYXRpb24gbG9jYXRpb24uXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlVGFyZ2V0VHlwZUlkZW50aWZpZXIobGFuZ3VhZ2UsIG5hbWUsIGxvY2F0aW9uKSB7XG4gIGlmICh0eXBlb2YgbmFtZSAhPSBcInN0cmluZ1wiIHx8ICEvXltBLVpdW0EtWmEtejAtOV9dKiQvdS50ZXN0KG5hbWUpKSB7XG4gICAgdW5zdXBwb3J0ZWRDYXBhYmlsaXR5KGxhbmd1YWdlLCBgcmVjb3JkIHR5cGUgaWRlbnRpZmllciAnJHtTdHJpbmcobmFtZSl9J2AsIGxvY2F0aW9uKVxuICB9XG4gIGNvbnN0IHJlc2VydmVkTmFtZSA9IGxhbmd1YWdlID09IFwicGhwXCIgPyBuYW1lLnRvTG93ZXJDYXNlKCkgOiBuYW1lXG4gIGNvbnN0IHN5bnRheExhbmd1YWdlID0gbGFuZ3VhZ2UgPT0gXCJpb3NcIiA/IFwic3dpZnRcIiA6IGxhbmd1YWdlXG5cbiAgaWYgKHJlc2VydmVkV29yZHNbc3ludGF4TGFuZ3VhZ2VdLmhhcyhyZXNlcnZlZE5hbWUpIHx8IHJlc2VydmVkVHlwZU5hbWVzW2xhbmd1YWdlXT8uaGFzKHJlc2VydmVkTmFtZSkpIHtcbiAgICB1bnN1cHBvcnRlZENhcGFiaWxpdHkobGFuZ3VhZ2UsIGByZWNvcmQgdHlwZSBpZGVudGlmaWVyICcke25hbWV9J2AsIGxvY2F0aW9uKVxuICB9XG59XG5cbi8qKlxuICogUHJvdGVjdHMgQysrIGtleXdvcmRzLCB0aGUgYWN0dWFsIGluY2x1ZGVkIEMgbGlicmFyeSBuYW1lcy9tYWNyb3MgYW5kIHRoZSBzY2FmZm9sZCBuYW1lc3BhY2UuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIENhbGxlciBzY2FsYXIgYmluZGluZyBvciBmdW5jdGlvbiBuYW1lLlxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgYSBjYW5vbmljYWwgQysrMjAgdHJhbnNsYXRpb24gdW5pdCBjYW4gcmVwcmVzZW50IHRoZSBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDcHBJZGVudGlmaWVyKG5hbWUpIHtcbiAgcmV0dXJuIGlzQ0lkZW50aWZpZXIobmFtZSkgJiYgIW5hbWUuaW5jbHVkZXMoXCJfX1wiKSAmJiAhcmVzZXJ2ZWRXb3Jkcy5jcHAuaGFzKG5hbWUpXG59XG5cbi8qKlxuICogUHJvdGVjdHMgdGhlIGVkaXRpb24tMjAyMSBzY2FsYXIsIGVudHJ5IGFuZCBleGFjdCBoZWxwZXIgZW52aXJvbm1lbnQgaW4gYm90aCBkaXJlY3Rpb25zLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBDYWxsZXItb3duZWQgZnVuY3Rpb24gb3IgYmluZGluZyBuYW1lLlxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgb3JkaW5hcnkgUnVzdCBzeW50YXggY2FuIHJlcHJlc2VudCB0aGUgbmFtZSBzYWZlbHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1J1c3RJZGVudGlmaWVyKG5hbWUpIHtcbiAgcmV0dXJuIGlkZW50aWZpZXJQYXR0ZXJucy5ydXN0LnRlc3QobmFtZSkgJiYgIXJlc2VydmVkV29yZHMucnVzdC5oYXMobmFtZSkgJiYgIW5hbWUuc3RhcnRzV2l0aChcInNlbWFudGlmb2xkX1wiKVxufVxuXG4vKipcbiAqIFByb3RlY3RzIFN3aWZ0IGtleXdvcmRzLCBzY2FsYXIgbmFtZXMsIGVudHJ5IHBsdW1iaW5nLCBhbmQgdGFyZ2V0LW9ubHkgaGVscGVyIG5hbWVzLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBDYWxsZXItb3duZWQgZnVuY3Rpb24gb3IgYmluZGluZyBuYW1lLlxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgb3JkaW5hcnkgdW5lc2NhcGVkIFN3aWZ0IHN5bnRheCBjYW4gcHJlc2VydmUgdGhlIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1N3aWZ0SWRlbnRpZmllcihuYW1lKSB7XG4gIHJldHVybiBpZGVudGlmaWVyUGF0dGVybnMuc3dpZnQudGVzdChuYW1lKSAmJiAhcmVzZXJ2ZWRXb3Jkcy5zd2lmdC5oYXMobmFtZSkgJiYgIW5hbWUuc3RhcnRzV2l0aChcInNlbWFudGlmb2xkX1wiKVxufVxuXG4vKipcbiAqIFByb3RlY3RzIEtvdGxpbiBrZXl3b3JkcywgSlZNIHNjYWxhci9zY2FmZm9sZCBuYW1lcywgYW5kIHRhcmdldC1vbmx5IGhlbHBlciBuYW1lcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gQ2FsbGVyLW93bmVkIGZ1bmN0aW9uIG9yIGJpbmRpbmcgbmFtZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIG9yZGluYXJ5IHVuZXNjYXBlZCBLb3RsaW4gc3ludGF4IGNhbiBwcmVzZXJ2ZSB0aGUgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzS290bGluSWRlbnRpZmllcihuYW1lKSB7XG4gIHJldHVybiBpZGVudGlmaWVyUGF0dGVybnMua290bGluLnRlc3QobmFtZSkgJiYgIXJlc2VydmVkV29yZHMua290bGluLmhhcyhuYW1lKSAmJiAhbmFtZS5zdGFydHNXaXRoKFwic2VtYW50aWZvbGRfXCIpICYmXG4gICAgIW5hbWUuc3RhcnRzV2l0aChcIlNFTUFOVElGT0xEX1wiKVxufVxuXG4vKipcbiAqIFByb3RlY3RzIERhcnQga2V5d29yZHMsIFZNIHNjYWxhci9zY2FmZm9sZCBuYW1lcywgYW5kIGNvbXBpbGVyLW93bmVkIGhlbHBlcnMuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIENhbGxlci1vd25lZCBmdW5jdGlvbiBvciBiaW5kaW5nIG5hbWUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBvcmRpbmFyeSBEYXJ0IHN5bnRheCBjYW4gcHJlc2VydmUgdGhlIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0RhcnRJZGVudGlmaWVyKG5hbWUpIHtcbiAgcmV0dXJuIGlkZW50aWZpZXJQYXR0ZXJucy5kYXJ0LnRlc3QobmFtZSkgJiYgIXJlc2VydmVkV29yZHMuZGFydC5oYXMobmFtZSkgJiZcbiAgICAhbmFtZS5zdGFydHNXaXRoKFwiX3NlbWFudGlmb2xkXCIpICYmIG5hbWUubm9ybWFsaXplKFwiTkZDXCIpID09IG5hbWVcbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/backends/index.js"],"names":[],"mappings":"AAWA;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,EAAC,QAAQ,EAAE,MAAM,EAAC,EAJ9C;IAA+D,QAAQ,EAA/D,OAAO,sBAAsB,EAAE,gBAAgB,CACvD;IAA6D,MAAM,EAA3D,OAAO,sBAAsB,EAAE,cAAc,CACrD;CAE8C,GAFpC,MAAM,CAIlB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,EAAC,QAAQ,EAAE,QAAQ,EAAE,YAAqB,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAC,EARnH;IAA+D,QAAQ,EAA/D,OAAO,sBAAsB,EAAE,gBAAgB,CACvD;IAA6D,MAAM,EAA3D,OAAO,sBAAsB,EAAE,cAAc,CACrD;IAAuB,QAAQ,AAA/B,CACA,EADQ,MAAM,CACd;IAA+C,YAAY,AAA3D,CACA,EADQ,MAAM,GAAG,UAAU,GAAG,QAAQ,CACtC;IAAuB,iBAAiB,AAAxC,CACA,EADQ,MAAM,CACd;IAAkH,OAAO,AAAzH,CACA,EADQ;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,sBAAsB,EAAE,gBAAgB,CAAA;KAAC,EAAE,CACzG;CAEmH,GAFzG,OAAO,sBAAsB,EAAE,iBAAiB,CA4D5D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/backends/index.js"],"names":[],"mappings":"AAYA;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,EAAC,QAAQ,EAAE,MAAM,EAAC,EAJ9C;IAA+D,QAAQ,EAA/D,OAAO,sBAAsB,EAAE,gBAAgB,CACvD;IAA6D,MAAM,EAA3D,OAAO,sBAAsB,EAAE,cAAc,CACrD;CAE8C,GAFpC,MAAM,CAIlB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,EAAC,QAAQ,EAAE,QAAQ,EAAE,YAAqB,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAC,EARnH;IAA+D,QAAQ,EAA/D,OAAO,sBAAsB,EAAE,gBAAgB,CACvD;IAA6D,MAAM,EAA3D,OAAO,sBAAsB,EAAE,cAAc,CACrD;IAAuB,QAAQ,AAA/B,CACA,EADQ,MAAM,CACd;IAA+C,YAAY,AAA3D,CACA,EADQ,MAAM,GAAG,UAAU,GAAG,QAAQ,CACtC;IAAuB,iBAAiB,AAAxC,CACA,EADQ,MAAM,CACd;IAAkH,OAAO,AAAzH,CACA,EADQ;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,sBAAsB,EAAE,gBAAgB,CAAA;KAAC,EAAE,CACzG;CAEmH,GAFzG,OAAO,sBAAsB,EAAE,iBAAiB,CAoF5D"}