semantifold 0.4.0 → 0.6.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 (203) hide show
  1. package/README.md +13 -7
  2. package/build/index.d.ts +12 -8
  3. package/build/index.d.ts.map +1 -1
  4. package/build/index.js +10 -7
  5. package/build/src/backends/android.d.ts +49 -0
  6. package/build/src/backends/android.d.ts.map +1 -0
  7. package/build/src/backends/android.js +1278 -0
  8. package/build/src/backends/identifiers.d.ts +6 -0
  9. package/build/src/backends/identifiers.d.ts.map +1 -1
  10. package/build/src/backends/identifiers.js +30 -1
  11. package/build/src/backends/ios.js +2 -2
  12. package/build/src/backends/kotlin.d.ts +10 -0
  13. package/build/src/backends/kotlin.d.ts.map +1 -1
  14. package/build/src/backends/kotlin.js +11 -9
  15. package/build/src/backends/native-validation.d.ts +2 -2
  16. package/build/src/backends/native-validation.d.ts.map +1 -1
  17. package/build/src/backends/native-validation.js +2 -2
  18. package/build/src/backends/program.d.ts +6 -4
  19. package/build/src/backends/program.d.ts.map +1 -1
  20. package/build/src/backends/program.js +5 -4
  21. package/build/src/backends/scalars.d.ts.map +1 -1
  22. package/build/src/backends/scalars.js +2 -1
  23. package/build/src/backends/shared.d.ts.map +1 -1
  24. package/build/src/backends/shared.js +20 -4
  25. package/build/src/backends/writer.d.ts +21 -1
  26. package/build/src/backends/writer.d.ts.map +1 -1
  27. package/build/src/backends/writer.js +25 -2
  28. package/build/src/backends/zig-runtime.d.ts +5 -0
  29. package/build/src/backends/zig-runtime.d.ts.map +1 -0
  30. package/build/src/backends/zig-runtime.js +92 -0
  31. package/build/src/backends/zig-validation.d.ts +9 -0
  32. package/build/src/backends/zig-validation.d.ts.map +1 -0
  33. package/build/src/backends/zig-validation.js +73 -0
  34. package/build/src/backends/zig.d.ts +42 -0
  35. package/build/src/backends/zig.d.ts.map +1 -0
  36. package/build/src/backends/zig.js +584 -0
  37. package/build/src/frontends/scalars.d.ts.map +1 -1
  38. package/build/src/frontends/scalars.js +2 -1
  39. package/build/src/frontends/zig-parser.d.ts +31 -0
  40. package/build/src/frontends/zig-parser.d.ts.map +1 -0
  41. package/build/src/frontends/zig-parser.js +17 -0
  42. package/build/src/frontends/zig.d.ts +14 -0
  43. package/build/src/frontends/zig.d.ts.map +1 -0
  44. package/build/src/frontends/zig.js +970 -0
  45. package/build/src/language-registry.d.ts.map +1 -1
  46. package/build/src/language-registry.js +40 -1
  47. package/build/src/mapping.js +2 -2
  48. package/build/src/semantic/provenance.js +3 -3
  49. package/build/src/semantic/types.d.ts +184 -4
  50. package/build/src/semantic/types.d.ts.map +1 -1
  51. package/build/src/semantic/types.js +45 -3
  52. package/build/src/semantic/validate.js +2 -2
  53. package/build/src/toolchains.d.ts +6 -0
  54. package/build/src/toolchains.d.ts.map +1 -1
  55. package/build/src/toolchains.js +2 -1
  56. package/build/src/zig-bindings.d.ts +10 -0
  57. package/build/src/zig-bindings.d.ts.map +1 -0
  58. package/build/src/zig-bindings.js +54 -0
  59. package/docs/android.md +79 -0
  60. package/docs/architecture.md +13 -5
  61. package/docs/goals.md +1 -1
  62. package/docs/ios.md +1 -1
  63. package/docs/language-support.md +15 -4
  64. package/docs/parser-qualification.md +31 -1
  65. package/docs/source-maps.md +7 -3
  66. package/docs/specification.md +5 -0
  67. package/docs/testing.md +40 -3
  68. package/docs/zig.md +33 -0
  69. package/index.js +9 -6
  70. package/node_modules/semantifold-tree-sitter-zig-internal/LICENSE +15 -0
  71. package/node_modules/semantifold-tree-sitter-zig-internal/README.md +5 -0
  72. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/LICENSE +21 -0
  73. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/README.md +21 -0
  74. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/binding.gyp +29 -0
  75. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/bindings/node/binding.cc +20 -0
  76. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/bindings/node/binding_test.js +9 -0
  77. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/bindings/node/index.d.ts +28 -0
  78. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/bindings/node/index.js +11 -0
  79. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/grammar.js +900 -0
  80. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/package.json +57 -0
  81. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/prebuilds/darwin-arm64/@tree-sitter-grammars+tree-sitter-zig.node +0 -0
  82. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/prebuilds/darwin-x64/@tree-sitter-grammars+tree-sitter-zig.node +0 -0
  83. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/prebuilds/linux-arm64/@tree-sitter-grammars+tree-sitter-zig.node +0 -0
  84. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/prebuilds/linux-x64/@tree-sitter-grammars+tree-sitter-zig.node +0 -0
  85. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/prebuilds/win32-arm64/@tree-sitter-grammars+tree-sitter-zig.node +0 -0
  86. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/prebuilds/win32-x64/@tree-sitter-grammars+tree-sitter-zig.node +0 -0
  87. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/queries/folds.scm +23 -0
  88. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/queries/highlights.scm +291 -0
  89. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/queries/indents.scm +22 -0
  90. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/queries/injections.scm +10 -0
  91. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/grammar.json +6570 -0
  92. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/node-types.json +3178 -0
  93. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/parser.c +169829 -0
  94. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/tree_sitter/alloc.h +54 -0
  95. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/tree_sitter/array.h +291 -0
  96. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/tree_sitter/parser.h +266 -0
  97. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/tree-sitter-zig.wasm +0 -0
  98. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/tree-sitter.json +38 -0
  99. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/LICENSE +21 -0
  100. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/README.md +128 -0
  101. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/binding.gyp +80 -0
  102. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/index.js +916 -0
  103. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/package.json +76 -0
  104. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/darwin-arm64/tree-sitter.node +0 -0
  105. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/darwin-x64/tree-sitter.node +0 -0
  106. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/linux-arm64/tree-sitter.node +0 -0
  107. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/linux-x64/tree-sitter.node +0 -0
  108. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/win32-arm64/tree-sitter.node +0 -0
  109. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/win32-x64/tree-sitter.node +0 -0
  110. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/addon_data.h +47 -0
  111. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/binding.cc +35 -0
  112. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/conversions.cc +140 -0
  113. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/conversions.h +22 -0
  114. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/language.cc +106 -0
  115. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/language.h +17 -0
  116. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/logger.cc +70 -0
  117. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/logger.h +19 -0
  118. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/lookaheaditerator.cc +122 -0
  119. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/lookaheaditerator.h +33 -0
  120. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/node.cc +1088 -0
  121. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/node.h +30 -0
  122. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/parser.cc +306 -0
  123. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/parser.h +35 -0
  124. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/query.cc +397 -0
  125. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/query.h +40 -0
  126. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/tree.cc +316 -0
  127. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/tree.h +45 -0
  128. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/tree_cursor.cc +213 -0
  129. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/tree_cursor.h +52 -0
  130. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/tree-sitter.d.ts +1042 -0
  131. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/include/tree_sitter/api.h +1318 -0
  132. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.c +48 -0
  133. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.h +41 -0
  134. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/array.h +291 -0
  135. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/atomic.h +68 -0
  136. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/clock.h +146 -0
  137. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/error_costs.h +11 -0
  138. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.c +501 -0
  139. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.h +36 -0
  140. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/host.h +21 -0
  141. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.c +223 -0
  142. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.h +297 -0
  143. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/length.h +52 -0
  144. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.c +435 -0
  145. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.h +49 -0
  146. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lib.c +12 -0
  147. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/node.c +920 -0
  148. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.c +2165 -0
  149. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.h +266 -0
  150. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/point.h +62 -0
  151. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/portable/endian.h +206 -0
  152. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/query.c +4187 -0
  153. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reduce_action.h +34 -0
  154. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reusable_node.h +95 -0
  155. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.c +899 -0
  156. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.h +130 -0
  157. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.c +1066 -0
  158. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.h +399 -0
  159. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.c +170 -0
  160. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.h +31 -0
  161. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.c +712 -0
  162. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.h +48 -0
  163. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/ts_assert.h +11 -0
  164. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ICU_SHA +1 -0
  165. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/LICENSE +414 -0
  166. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/README.md +29 -0
  167. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ptypes.h +1 -0
  168. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/umachine.h +448 -0
  169. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/urename.h +1 -0
  170. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf.h +1 -0
  171. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf16.h +733 -0
  172. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf8.h +881 -0
  173. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode.h +83 -0
  174. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib-symbols.txt +24 -0
  175. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib.c +109 -0
  176. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/wasm-stdlib.h +1302 -0
  177. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.c +1859 -0
  178. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.h +31 -0
  179. package/node_modules/semantifold-tree-sitter-zig-internal/package.json +21 -0
  180. package/node_modules/semantifold-tree-sitter-zig-internal/src/zig.js +134 -0
  181. package/package.json +11 -6
  182. package/src/backends/android.js +1374 -0
  183. package/src/backends/identifiers.js +30 -0
  184. package/src/backends/ios.js +1 -1
  185. package/src/backends/kotlin.js +11 -8
  186. package/src/backends/native-validation.js +1 -1
  187. package/src/backends/program.js +4 -3
  188. package/src/backends/scalars.js +1 -0
  189. package/src/backends/shared.js +22 -3
  190. package/src/backends/writer.js +27 -2
  191. package/src/backends/zig-runtime.js +93 -0
  192. package/src/backends/zig-validation.js +68 -0
  193. package/src/backends/zig.js +579 -0
  194. package/src/frontends/scalars.js +1 -0
  195. package/src/frontends/zig-parser.js +20 -0
  196. package/src/frontends/zig.js +994 -0
  197. package/src/language-registry.js +40 -0
  198. package/src/mapping.js +1 -1
  199. package/src/semantic/provenance.js +2 -2
  200. package/src/semantic/types.js +47 -2
  201. package/src/semantic/validate.js +1 -1
  202. package/src/toolchains.js +1 -0
  203. package/src/zig-bindings.js +46 -0
@@ -42,6 +42,12 @@ export declare function isCppIdentifier(name: string): boolean;
42
42
  * @returns {boolean} Whether ordinary Rust syntax can represent the name safely.
43
43
  */
44
44
  export declare function isRustIdentifier(name: string): boolean;
45
+ /**
46
+ * Protects Zig keywords, scalar names, entry plumbing, builtins, and the support namespace.
47
+ * @param {string} name - Caller-owned function or binding name.
48
+ * @returns {boolean} Whether ordinary unquoted Zig syntax can preserve the name.
49
+ */
50
+ export declare function isZigIdentifier(name: string): boolean;
45
51
  /**
46
52
  * Protects Swift keywords, scalar names, entry plumbing, and target-only helper names.
47
53
  * @param {string} name - Caller-owned function or binding name.
@@ -1 +1 @@
1
- {"version":3,"file":"identifiers.d.ts","sourceRoot":"","sources":["../../../src/backends/identifiers.js"],"names":[],"mappings":"AA+MA;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EANtC,OAAO,sBAAsB,EAAE,eAMO,EAAE,IAAI,EAL5C,OAK4C,EAAE,IAAI,EAJlD,MAIkD,EAAE,QAAQ,EAH5D,OAAO,sBAAsB,EAAE,cAAc,GAAG,SAGY,GAF1D,IAAI,CAkBhB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAHvB,MAGuB,GAFrB,OAAO,CAMnB;AAED;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAAC,QAAQ,EAN7C,OAAO,sBAAsB,EAAE,eAMc,EAAE,IAAI,EALnD,OAKmD,EAAE,IAAI,EAJzD,MAIyD,EAAE,QAAQ,EAHnE,OAAO,sBAAsB,EAAE,cAAc,GAAG,SAGmB,GAFjE,IAAI,CAchB;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAL1C,OAAO,sBAAsB,EAAE,eAKW,EAAE,IAAI,EAJhD,OAIgD,EAAE,QAAQ,EAH1D,OAAO,sBAAsB,EAAE,cAAc,GAAG,SAGU,GAFxD,IAAI,CAYhB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAHzB,MAGyB,GAFvB,OAAO,CAInB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAH1B,MAG0B,GAFxB,OAAO,CAInB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAH3B,MAG2B,GAFzB,OAAO,CAInB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAH5B,MAG4B,GAF1B,OAAO,CAKnB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAH1B,MAG0B,GAFxB,OAAO,CAKnB"}
1
+ {"version":3,"file":"identifiers.d.ts","sourceRoot":"","sources":["../../../src/backends/identifiers.js"],"names":[],"mappings":"AAkOA;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EANtC,OAAO,sBAAsB,EAAE,eAMO,EAAE,IAAI,EAL5C,OAK4C,EAAE,IAAI,EAJlD,MAIkD,EAAE,QAAQ,EAH5D,OAAO,sBAAsB,EAAE,cAAc,GAAG,SAGY,GAF1D,IAAI,CAmBhB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAHvB,MAGuB,GAFrB,OAAO,CAMnB;AAED;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAAC,QAAQ,EAN7C,OAAO,sBAAsB,EAAE,eAMc,EAAE,IAAI,EALnD,OAKmD,EAAE,IAAI,EAJzD,MAIyD,EAAE,QAAQ,EAHnE,OAAO,sBAAsB,EAAE,cAAc,GAAG,SAGmB,GAFjE,IAAI,CAchB;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAL1C,OAAO,sBAAsB,EAAE,eAKW,EAAE,IAAI,EAJhD,OAIgD,EAAE,QAAQ,EAH1D,OAAO,sBAAsB,EAAE,cAAc,GAAG,SAGU,GAFxD,IAAI,CAYhB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAHzB,MAGyB,GAFvB,OAAO,CAInB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAH1B,MAG0B,GAFxB,OAAO,CAInB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAHzB,MAGyB,GAFvB,OAAO,CAKnB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAH3B,MAG2B,GAFzB,OAAO,CAInB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAH5B,MAG4B,GAF1B,OAAO,CAKnB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAH1B,MAG0B,GAFxB,OAAO,CAKnB"}
@@ -2,10 +2,12 @@
2
2
  import { unsupportedCapability } from "../diagnostic.js";
3
3
  /** @type {Record<Exclude<import("../semantic/types.js").BackendLanguage, "ios">, RegExp>} */
4
4
  const identifierPatterns = {
5
+ android: /^(?:_|\p{L})(?:_|\p{L}|\p{Nd})*$/u,
5
6
  dart: /^(?:_|\p{L})(?:_|\p{L}|\p{Nd})*$/u,
6
7
  kotlin: /^(?:_|\p{L})(?:_|\p{L}|\p{Nd})*$/u,
7
8
  swift: /^(?:_|\p{XID_Start})(?:_|\p{XID_Continue})*$/u,
8
9
  rust: /^[A-Za-z_][A-Za-z0-9_]*$/u,
10
+ zig: /^[A-Za-z_][A-Za-z0-9_]*$/u,
9
11
  cpp: /^[A-Za-z][A-Za-z0-9_]*$/u,
10
12
  c: /^[A-Za-z][A-Za-z0-9_]*$/u,
11
13
  csharp: /^[A-Za-z_][A-Za-z0-9_]*$/u,
@@ -20,6 +22,11 @@ const identifierPatterns = {
20
22
  };
21
23
  /** @type {Record<Exclude<import("../semantic/types.js").BackendLanguage, "ios">, Set<string>>} */
22
24
  const reservedWords = {
25
+ android: new Set([
26
+ "as", "break", "class", "continue", "do", "else", "false", "for", "fun", "if", "in", "interface", "is", "null",
27
+ "object", "package", "return", "super", "this", "throw", "true", "try", "typealias", "typeof", "val", "var", "when",
28
+ "while", "_", "main", "println", "Long", "Boolean", "String", "Math", "ArithmeticException"
29
+ ]),
23
30
  dart: new Set([
24
31
  "Function", "Never", "Object", "RangeError", "String", "abstract", "as", "assert", "async", "await", "base",
25
32
  "bool", "break", "case", "catch", "class", "const", "continue", "covariant", "default", "deferred", "do",
@@ -51,6 +58,18 @@ const reservedWords = {
51
58
  "unsafe", "use", "where", "while", "abstract", "become", "box", "do", "final", "macro", "override", "priv", "typeof", "unsized", "virtual",
52
59
  "yield", "try", "union", "_", "main", "String", "std", "i64", "bool"
53
60
  ]),
61
+ zig: new Set([
62
+ "addrspace", "align", "allowzero", "and", "anyerror", "anyframe", "anyopaque", "anytype", "asm", "async", "await", "break", "callconv",
63
+ "catch", "comptime", "const", "continue", "defer", "else", "enum", "errdefer", "error", "export", "extern", "false",
64
+ "fn", "for", "if", "inline", "linksection", "noalias", "noinline", "nosuspend", "null", "opaque", "or", "orelse",
65
+ "packed", "pub", "resume", "return", "struct", "suspend", "switch", "test", "threadlocal", "true", "try", "union",
66
+ "unreachable", "usingnamespace", "var", "volatile", "while", "_", "main", "std", "bool", "c_char", "c_int", "c_long",
67
+ "c_longdouble", "c_longlong", "c_short", "c_uint", "c_ulong", "c_ulonglong", "c_ushort", "comptime_float",
68
+ "comptime_int", "f16", "f32", "f64", "f80", "f128", "isize", "noreturn", "type", "undefined", "usize", "void",
69
+ "semantifold_arena", "semantifold_fail", "semantifold_integer_add", "semantifold_integer_subtract",
70
+ "semantifold_integer_multiply", "semantifold_integer_negate", "semantifold_string_concat", "semantifold_string_equal",
71
+ "semantifold_string_not_equal", "semantifold_print_integer", "semantifold_print_boolean", "semantifold_print_string"
72
+ ]),
54
73
  cpp: new Set([
55
74
  "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",
56
75
  // The qualified libstdc++ <string> include chain also exposes these global names.
@@ -216,6 +235,7 @@ export function validateTargetIdentifier(language, name, role, location) {
216
235
  language == "python" && name.normalize("NFKC") != name ||
217
236
  language == "c" && !isCIdentifier(name) ||
218
237
  language == "rust" && !isRustIdentifier(name) ||
238
+ language == "zig" && !isZigIdentifier(name) ||
219
239
  language == "cpp" && !isCppIdentifier(name) ||
220
240
  language == "dart" && !isDartIdentifier(name) ||
221
241
  language == "swift" && (!isSwiftIdentifier(name) || name.normalize("NFC") != name) ||
@@ -285,6 +305,15 @@ export function isCppIdentifier(name) {
285
305
  export function isRustIdentifier(name) {
286
306
  return identifierPatterns.rust.test(name) && !reservedWords.rust.has(name) && !name.startsWith("semantifold_");
287
307
  }
308
+ /**
309
+ * Protects Zig keywords, scalar names, entry plumbing, builtins, and the support namespace.
310
+ * @param {string} name - Caller-owned function or binding name.
311
+ * @returns {boolean} Whether ordinary unquoted Zig syntax can preserve the name.
312
+ */
313
+ export function isZigIdentifier(name) {
314
+ return identifierPatterns.zig.test(name) && !reservedWords.zig.has(name) && !/^[iu][0-9]+$/u.test(name) &&
315
+ !name.startsWith("semantifold_");
316
+ }
288
317
  /**
289
318
  * Protects Swift keywords, scalar names, entry plumbing, and target-only helper names.
290
319
  * @param {string} name - Caller-owned function or binding name.
@@ -311,4 +340,4 @@ export function isDartIdentifier(name) {
311
340
  return identifierPatterns.dart.test(name) && !reservedWords.dart.has(name) &&
312
341
  !name.startsWith("_semantifold") && name.normalize("NFC") == name;
313
342
  }
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==
343
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpZmllcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFja2VuZHMvaWRlbnRpZmllcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGtCQUFrQixDQUFBO0FBRXRELDZGQUE2RjtBQUM3RixNQUFNLGtCQUFrQixHQUFHO0lBQ3pCLE9BQU8sRUFBRSxtQ0FBbUM7SUFDNUMsSUFBSSxFQUFFLG1DQUFtQztJQUN6QyxNQUFNLEVBQUUsbUNBQW1DO0lBQzNDLEtBQUssRUFBRSwrQ0FBK0M7SUFDdEQsSUFBSSxFQUFFLDJCQUEyQjtJQUNqQyxHQUFHLEVBQUUsMkJBQTJCO0lBQ2hDLEdBQUcsRUFBRSwwQkFBMEI7SUFDL0IsQ0FBQyxFQUFFLDBCQUEwQjtJQUM3QixNQUFNLEVBQUUsMkJBQTJCO0lBQ25DLEVBQUUsRUFBRSwyQkFBMkI7SUFDL0IsSUFBSSxFQUFFLDZCQUE2QjtJQUNuQyxVQUFVLEVBQUUsNkJBQTZCO0lBQ3pDLEdBQUcsRUFBRSwyQkFBMkI7SUFDaEMsTUFBTSxFQUFFLCtDQUErQztJQUN2RCxJQUFJLEVBQUUsd0JBQXdCO0lBQzlCLFVBQVUsRUFBRSw2QkFBNkI7SUFDekMsSUFBSSxFQUFFLHFEQUFxRDtDQUM1RCxDQUFBO0FBRUQsa0dBQWtHO0FBQ2xHLE1BQU0sYUFBYSxHQUFHO0lBQ3BCLE9BQU8sRUFBRSxJQUFJLEdBQUcsQ0FBQztRQUNmLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNO1FBQzlHLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxL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LFdBQVcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUztRQUNuRyxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVTtRQUMxRyxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUTtRQUNwRyxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRO1FBQzFHLGVBQWUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNO1FBQzVHLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVE7UUFDdEcsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUztRQUN6RyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFFBQVE7S0FDN0QsQ0FBQztJQUNGLE1BQU0sRUFBRSxJQUFJLEdBQUcsQ0FBQztRQUNkLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUk7UUFDdEcsV0FBVyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPO1FBQ3RELElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTO1FBQ3BHLFVBQVUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsUUFBUTtRQUN6SCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU07UUFDeEcsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTTtRQUM1RyxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUk7UUFDMUcsVUFBVSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFVBQVU7UUFDakgsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRO1FBQ2hILFlBQVksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTztRQUMvRyxXQUFXLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTTtRQUM1RyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPO0tBQ2xDLENBQUM7SUFDRixFQUFFLEVBQUUsSUFBSSxHQUFHLENBQUM7UUFDVixHQUFHLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU07UUFDdEcsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLEtBQUs7UUFDckcsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLO0tBQzFCLENBQUM7SUFDRixJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUM7UUFDWixHQUFHLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVU7UUFDNUcsU0FBUyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLO1FBQzVHLE1BQU0sRUFBRSxJQUFJ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Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxJQUFJO0lBQ3JDLE9BQU8sa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUM7UUFDaEgsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0FBQ3BDLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLElBQUk7SUFDbkMsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ3hFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQTtBQUNyRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCB7dW5zdXBwb3J0ZWRDYXBhYmlsaXR5fSBmcm9tIFwiLi4vZGlhZ25vc3RpYy5qc1wiXG5cbi8qKiBAdHlwZSB7UmVjb3JkPEV4Y2x1ZGU8aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuQmFja2VuZExhbmd1YWdlLCBcImlvc1wiPiwgUmVnRXhwPn0gKi9cbmNvbnN0IGlkZW50aWZpZXJQYXR0ZXJucyA9IHtcbiAgYW5kcm9pZDogL14oPzpffFxccHtMfSkoPzpffFxccHtMfXxcXHB7TmR9KSokL3UsXG4gIGRhcnQ6IC9eKD86X3xcXHB7TH0pKD86X3xcXHB7TH18XFxwe05kfSkqJC91LFxuICBrb3RsaW46IC9eKD86X3xcXHB7TH0pKD86X3xcXHB7TH18XFxwe05kfSkqJC91LFxuICBzd2lmdDogL14oPzpffFxccHtYSURfU3RhcnR9KSg/Ol98XFxwe1hJRF9Db250aW51ZX0pKiQvdSxcbiAgcnVzdDogL15bQS1aYS16X11bQS1aYS16MC05X10qJC91LFxuICB6aWc6IC9eW0EtWmEtel9dW0EtWmEtejAtOV9dKiQvdSxcbiAgY3BwOiAvXltBLVphLXpdW0EtWmEtejAtOV9dKiQvdSxcbiAgYzogL15bQS1aYS16XVtBLVphLXowLTlfXSokL3UsXG4gIGNzaGFycDogL15bQS1aYS16X11bQS1aYS16MC05X10qJC91LFxuICBnbzogL15bQS1aYS16X11bQS1aYS16MC05X10qJC91LFxuICBqYXZhOiAvXltBLVphLXpfJF1bQS1aYS16MC05XyRdKiQvdSxcbiAgamF2YXNjcmlwdDogL15bQS1aYS16XyRdW0EtWmEtejAtOV8kXSokL3UsXG4gIHBocDogL15bQS1aYS16X11bQS1aYS16MC05X10qJC91LFxuICBweXRob246IC9eKD86X3xcXHB7WElEX1N0YXJ0fSkoPzpffFxccHtYSURfQ29udGludWV9KSokL3UsXG4gIHJ1Ynk6IC9eW2Etel9dW0EtWmEtejAtOV9dKiQvdSxcbiAgdHlwZXNjcmlwdDogL15bQS1aYS16XyRdW0EtWmEtejAtOV8kXSokL3UsXG4gIHdhc206IC9eKD86WyRfXXxcXHB7WElEX1N0YXJ0fSkoPzpbJF9dfFxccHtYSURfQ29udGludWV9KSokL3Vcbn1cblxuLyoqIEB0eXBlIHtSZWNvcmQ8RXhjbHVkZTxpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5CYWNrZW5kTGFuZ3VhZ2UsIFwiaW9zXCI+LCBTZXQ8c3RyaW5nPj59ICovXG5jb25zdCByZXNlcnZlZFdvcmRzID0ge1xuICBhbmRyb2lkOiBuZXcgU2V0KFtcbiAgICBcImFzXCIsIFwiYnJlYWtcIiwgXCJjbGFzc1wiLCBcImNvbnRpbnVlXCIsIFwiZG9cIiwgXCJlbHNlXCIsIFwiZmFsc2VcIiwgXCJmb3JcIiwgXCJmdW5cIiwgXCJpZlwiLCBcImluXCIsIFwiaW50ZXJmYWNlXCIsIFwiaXNcIiwgXCJudWxsXCIsXG4gICAgXCJvYmplY3RcIiwgXCJwYWNrYWdlXCIsIFwicmV0dXJuXCIsIFwic3VwZXJcIiwgXCJ0aGlzXCIsIFwidGhyb3dcIiwgXCJ0cnVlXCIsIFwidHJ5XCIsIFwidHlwZWFsaWFzXCIsIFwidHlwZW9mXCIsIFwidmFsXCIsIFwidmFyXCIsIFwid2hlblwiLFxuICAgIFwid2hpbGVcIiwgXCJfXCIsIFwibWFpblwiLCBcInByaW50bG5cIiwgXCJMb25nXCIsIFwiQm9vbGVhblwiLCBcIlN0cmluZ1wiLCBcIk1hdGhcIiwgXCJBcml0aG1ldGljRXhjZXB0aW9uXCJcbiAgXSksXG4gIGRhcnQ6IG5ldyBTZXQoW1xuICAgIFwiRnVuY3Rpb25cIiwgXCJOZXZlclwiLCBcIk9iamVjdFwiLCBcIlJhbmdlRXJyb3JcIiwgXCJTdHJpbmdcIiwgXCJhYnN0cmFjdFwiLCBcImFzXCIsIFwiYXNzZXJ0XCIsIFwiYXN5bmNcIiwgXCJhd2FpdFwiLCBcImJhc2VcIixcbiAgICBcImJvb2xcIiwgXCJicmVha1wiLCBcImNhc2VcIiwgXCJjYXRjaFwiLCBcImNsYXNzXCIsIFwiY29uc3RcIiwgXCJjb250aW51ZVwiLCBcImNvdmFyaWFudFwiLCBcImRlZmF1bHRcIiwgXCJkZWZlcnJlZFwiLCBcImRvXCIsXG4gICAgXCJkb3VibGVcIiwgXCJkeW5hbWljXCIsIFwiZWxzZVwiLCBcImVudW1cIiwgXCJleHBvcnRcIiwgXCJleHRlbmRzXCIsIFwiZXh0ZW5zaW9uXCIsIFwiZXh0ZXJuYWxcIiwgXCJmYWN0b3J5XCIsIFwiZmFsc2VcIiwgXCJmaW5hbFwiLFxuICAgIFwiZmluYWxseVwiLCBcImZvclwiLCBcImdldFwiLCBcImhpZGVcIiwgXCJpZlwiLCBcImltcGxlbWVudHNcIiwgXCJpbXBvcnRcIiwgXCJpblwiLCBcImludFwiLCBcImludGVyZmFjZVwiLCBcImlzXCIsIFwibGF0ZVwiLCBcImxpYnJhcnlcIixcbiAgICBcIm1haW5cIiwgXCJtaXhpblwiLCBcIm5hdGl2ZVwiLCBcIm5ld1wiLCBcIm51bGxcIiwgXCJudW1cIiwgXCJvZlwiLCBcIm9uXCIsIFwib3BlcmF0b3JcIiwgXCJwYXJ0XCIsIFwicHJpbnRcIiwgXCJyZXF1aXJlZFwiLCBcInJldGhyb3dcIixcbiAgICBcInJldHVyblwiLCBcInNlYWxlZFwiLCBcInNldFwiLCBcInNob3dcIiwgXCJzdGF0aWNcIiwgXCJzdXBlclwiLCBcInN3aXRjaFwiLCBcInN5bmNcIiwgXCJ0aGlzXCIsIFwidGhyb3dcIiwgXCJ0cnVlXCIsIFwidHJ5XCIsIFwidHlwZWRlZlwiLFxuICAgIFwidmFyXCIsIFwidm9pZFwiLCBcIndoZW5cIiwgXCJ3aGlsZVwiLCBcIndpdGhcIiwgXCJ5aWVsZFwiLCBcIkJpZ0ludFwiLCBcIl9cIlxuICBdKSxcbiAga290bGluOiBuZXcgU2V0KFtcbiAgICBcImFzXCIsIFwiYnJlYWtcIiwgXCJjbGFzc1wiLCBcImNvbnRpbnVlXCIsIFwiZG9cIiwgXCJlbHNlXCIsIFwiZmFsc2VcIiwgXCJmb3JcIiwgXCJmdW5cIiwgXCJpZlwiLCBcImluXCIsIFwiaW50ZXJmYWNlXCIsIFwiaXNcIiwgXCJudWxsXCIsXG4gICAgXCJvYmplY3RcIiwgXCJwYWNrYWdlXCIsIFwicmV0dXJuXCIsIFwic3VwZXJcIiwgXCJ0aGlzXCIsIFwidGhyb3dcIiwgXCJ0cnVlXCIsIFwidHJ5XCIsIFwidHlwZWFsaWFzXCIsIFwidHlwZW9mXCIsIFwidmFsXCIsIFwidmFyXCIsIFwid2hlblwiLFxuICAgIFwid2hpbGVcIiwgXCJfXCIsIFwibWFpblwiLCBcInByaW50bG5cIiwgXCJMb25nXCIsIFwiQm9vbGVhblwiLCBcIlN0cmluZ1wiLCBcIk1hdGhcIiwgXCJBcml0aG1ldGljRXhjZXB0aW9uXCJcbiAgXSksXG4gIHN3aWZ0OiBuZXcgU2V0KFtcbiAgICBcIkFueVwiLCBcIlNlbGZcIiwgXCJUeXBlXCIsIFwiUHJvdG9jb2xcIiwgXCJhY3RvclwiLCBcImFueVwiLCBcImFzXCIsIFwiYXNzb2NpYXRlZHR5cGVcIiwgXCJhc3NvY2lhdGl2aXR5XCIsIFwiYXN5bmNcIiwgXCJhd2FpdFwiLCBcImJvcnJvd2luZ1wiLFxuICAgIFwiYnJlYWtcIiwgXCJjYXNlXCIsIFwiY2F0Y2hcIiwgXCJjbGFzc1wiLCBcImNvbnN1bWVcIiwgXCJjb25zdW1pbmdcIiwgXCJjb250aW51ZVwiLCBcImNvbnZlbmllbmNlXCIsIFwiY29weVwiLCBcImRlZmF1bHRcIiwgXCJkZWZlclwiLCBcImRlaW5pdFwiLFxuICAgIFwiZGlkU2V0XCIsIFwiZGlzdHJpYnV0ZWRcIiwgXCJkb1wiLCBcImR5bmFtaWNcIiwgXCJlbHNlXCIsIFwiZW51bVwiLCBcImV4dGVuc2lvblwiLCBcImZhbGx0aHJvdWdoXCIsIFwiZmFsc2VcIiwgXCJmaWxlcHJpdmF0ZVwiLCBcImZpbmFsXCIsIFwiZm9yXCIsXG4gICAgXCJmdW5jXCIsIFwiZ2V0XCIsIFwiZ3VhcmRcIiwgXCJpZlwiLCBcImltcG9ydFwiLCBcImluXCIsIFwiaW5kaXJlY3RcIiwgXCJpbmZpeFwiLCBcImluaXRcIiwgXCJpbm91dFwiLCBcImludGVybmFsXCIsIFwiaXNcIiwgXCJpc29sYXRlZFwiLCBcImxhenlcIixcbiAgICBcImxldFwiLCBcIm1hY3JvXCIsIFwibXV0YXRpbmdcIiwgXCJuaWxcIiwgXCJub25pc29sYXRlZFwiLCBcIm5vbm11dGF0aW5nXCIsIFwib3BlblwiLCBcIm9wZXJhdG9yXCIsIFwib3B0aW9uYWxcIiwgXCJvdmVycmlkZVwiLCBcInBhY2thZ2VcIixcbiAgICBcInBvc3RmaXhcIiwgXCJwcmVjZWRlbmNlXCIsIFwicHJlY2VkZW5jZWdyb3VwXCIsIFwicHJlZml4XCIsIFwicHJpdmF0ZVwiLCBcInByb3RvY29sXCIsIFwicHVibGljXCIsIFwicmVwZWF0XCIsIFwicmVxdWlyZWRcIiwgXCJyZXRocm93c1wiLCBcInJldHVyblwiLFxuICAgIFwic2FmZVwiLCBcInNlbGZcIiwgXCJzZW5kaW5nXCIsIFwic2V0XCIsIFwic29tZVwiLCBcInN0YXRpY1wiLCBcInN0cnVjdFwiLCBcInN1YnNjcmlwdFwiLCBcInN1cGVyXCIsIFwic3dpdGNoXCIsIFwidGhyb3dzXCIsIFwidHJ1ZVwiLCBcInRyeVwiLFxuICAgIFwidHlwZWFsaWFzXCIsIFwidW5vd25lZFwiLCBcInVuc2FmZVwiLCBcInZhclwiLCBcIndlYWtcIiwgXCJ3aGVyZVwiLCBcIndoaWxlXCIsIFwid2lsbFNldFwiLCBcInlpZWxkXCIsIFwiX1wiLCBcIkJvb2xcIiwgXCJJbnRcIiwgXCJJbnQ2NFwiLCBcIlN0cmluZ1wiLFxuICAgIFwiU3dpZnRcIiwgXCJtYWluXCIsIFwicHJpbnRcIlxuICBdKSxcbiAgcnVzdDogbmV3IFNldChbXG4gICAgXCJhc1wiLCBcImFzeW5jXCIsIFwiYXdhaXRcIiwgXCJicmVha1wiLCBcImNvbnN0XCIsIFwiY29udGludWVcIiwgXCJjcmF0ZVwiLCBcImR5blwiLCBcImVsc2VcIiwgXCJlbnVtXCIsIFwiZXh0ZXJuXCIsIFwiZmFsc2VcIiwgXCJmblwiLCBcImZvclwiLCBcImlmXCIsIFwiaW1wbFwiLCBcImluXCIsXG4gICAgXCJsZXRcIiwgXCJsb29wXCIsIFwibWF0Y2hcIiwgXCJtb2RcIiwgXCJtb3ZlXCIsIFwibXV0XCIsIFwicHViXCIsIFwicmVmXCIsIFwicmV0dXJuXCIsIFwic2VsZlwiLCBcIlNlbGZcIiwgXCJzdGF0aWNcIiwgXCJzdHJ1Y3RcIiwgXCJzdXBlclwiLCBcInRyYWl0XCIsIFwidHJ1ZVwiLCBcInR5cGVcIixcbiAgICBcInVuc2FmZVwiLCBcInVzZVwiLCBcIndoZXJlXCIsIFwid2hpbGVcIiwgXCJhYnN0cmFjdFwiLCBcImJlY29tZVwiLCBcImJveFwiLCBcImRvXCIsIFwiZmluYWxcIiwgXCJtYWNyb1wiLCBcIm92ZXJyaWRlXCIsIFwicHJpdlwiLCBcInR5cGVvZlwiLCBcInVuc2l6ZWRcIiwgXCJ2aXJ0dWFsXCIsXG4gICAgXCJ5aWVsZFwiLCBcInRyeVwiLCBcInVuaW9uXCIsIFwiX1wiLCBcIm1haW5cIiwgXCJTdHJpbmdcIiwgXCJzdGRcIiwgXCJpNjRcIiwgXCJib29sXCJcbiAgXSksXG4gIHppZzogbmV3IFNldChbXG4gICAgXCJhZGRyc3BhY2VcIiwgXCJhbGlnblwiLCBcImFsbG93emVyb1wiLCBcImFuZFwiLCBcImFueWVycm9yXCIsIFwiYW55ZnJhbWVcIiwgXCJhbnlvcGFxdWVcIiwgXCJhbnl0eXBlXCIsIFwiYXNtXCIsIFwiYXN5bmNcIiwgXCJhd2FpdFwiLCBcImJyZWFrXCIsIFwiY2FsbGNvbnZcIixcbiAgICBcImNhdGNoXCIsIFwiY29tcHRpbWVcIiwgXCJjb25zdFwiLCBcImNvbnRpbnVlXCIsIFwiZGVmZXJcIiwgXCJlbHNlXCIsIFwiZW51bVwiLCBcImVycmRlZmVyXCIsIFwiZXJyb3JcIiwgXCJleHBvcnRcIiwgXCJleHRlcm5cIiwgXCJmYWxzZVwiLFxuICAgIFwiZm5cIiwgXCJmb3JcIiwgXCJpZlwiLCBcImlubGluZVwiLCBcImxpbmtzZWN0aW9uXCIsIFwibm9hbGlhc1wiLCBcIm5vaW5saW5lXCIsIFwibm9zdXNwZW5kXCIsIFwibnVsbFwiLCBcIm9wYXF1ZVwiLCBcIm9yXCIsIFwib3JlbHNlXCIsXG4gICAgXCJwYWNrZWRcIiwgXCJwdWJcIiwgXCJyZXN1bWVcIiwgXCJyZXR1cm5cIiwgXCJzdHJ1Y3RcIiwgXCJzdXNwZW5kXCIsIFwic3dpdGNoXCIsIFwidGVzdFwiLCBcInRocmVhZGxvY2FsXCIsIFwidHJ1ZVwiLCBcInRyeVwiLCBcInVuaW9uXCIsXG4gICAgXCJ1bnJlYWNoYWJsZVwiLCBcInVzaW5nbmFtZXNwYWNlXCIsIFwidmFyXCIsIFwidm9sYXRpbGVcIiwgXCJ3aGlsZVwiLCBcIl9cIiwgXCJtYWluXCIsIFwic3RkXCIsIFwiYm9vbFwiLCBcImNfY2hhclwiLCBcImNfaW50XCIsIFwiY19sb25nXCIsXG4gICAgXCJjX2xvbmdkb3VibGVcIiwgXCJjX2xvbmdsb25nXCIsIFwiY19zaG9ydFwiLCBcImNfdWludFwiLCBcImNfdWxvbmdcIiwgXCJjX3Vsb25nbG9uZ1wiLCBcImNfdXNob3J0XCIsIFwiY29tcHRpbWVfZmxvYXRcIixcbiAgICBcImNvbXB0aW1lX2ludFwiLCBcImYxNlwiLCBcImYzMlwiLCBcImY2NFwiLCBcImY4MFwiLCBcImYxMjhcIiwgXCJpc2l6ZVwiLCBcIm5vcmV0dXJuXCIsIFwidHlwZVwiLCBcInVuZGVmaW5lZFwiLCBcInVzaXplXCIsIFwidm9pZFwiLFxuICAgIFwic2VtYW50aWZvbGRfYXJlbmFcIiwgXCJzZW1hbnRpZm9sZF9mYWlsXCIsIFwic2VtYW50aWZvbGRfaW50ZWdlcl9hZGRcIiwgXCJzZW1hbnRpZm9sZF9pbnRlZ2VyX3N1YnRyYWN0XCIsXG4gICAgXCJzZW1hbnRpZm9sZF9pbnRlZ2VyX211bHRpcGx5XCIsIFwic2VtYW50aWZvbGRfaW50ZWdlcl9uZWdhdGVcIiwgXCJzZW1hbnRpZm9sZF9zdHJpbmdfY29uY2F0XCIsIFwic2VtYW50aWZvbGRfc3RyaW5nX2VxdWFsXCIsXG4gICAgXCJzZW1hbnRpZm9sZF9zdHJpbmdfbm90X2VxdWFsXCIsIFwic2VtYW50aWZvbGRfcHJpbnRfaW50ZWdlclwiLCBcInNlbWFudGlmb2xkX3ByaW50X2Jvb2xlYW5cIiwgXCJzZW1hbnRpZm9sZF9wcmludF9zdHJpbmdcIlxuICBdKSxcbiAgY3BwOiBuZXcgU2V0KFtcbiAgICBcImFsaWduYXNcIiwgXCJhbGlnbm9mXCIsIFwiYW5kXCIsIFwiYW5kX2VxXCIsIFwiYXNtXCIsIFwiYXV0b1wiLCBcImJpdGFuZFwiLCBcImJpdG9yXCIsIFwiYm9vbFwiLCBcImJyZWFrXCIsIFwiY2FzZVwiLCBcImNhdGNoXCIsIFwiY2hhclwiLCBcImNoYXI4X3RcIiwgXCJjaGFyMTZfdFwiLCBcImNoYXIzMl90XCIsIFwiY2xhc3NcIiwgXCJjb21wbFwiLCBcImNvbmNlcHRcIiwgXCJjb25zdFwiLCBcImNvbnN0ZXZhbFwiLCBcImNvbnN0ZXhwclwiLCBcImNvbnN0aW5pdFwiLCBcImNvbnN0X2Nhc3RcIiwgXCJjb250aW51ZVwiLCBcImNvX2F3YWl0XCIsIFwiY29fcmV0dXJuXCIsIFwiY29feWllbGRcIiwgXCJkZWNsdHlwZVwiLCBcImRlZmF1bHRcIiwgXCJkZWxldGVcIiwgXCJkb1wiLCBcImRvdWJsZVwiLCBcImR5bmFtaWNfY2FzdFwiLCBcImVsc2VcIiwgXCJlbnVtXCIsIFwiZXhwbGljaXRcIiwgXCJleHBvcnRcIiwgXCJleHRlcm5cIiwgXCJmYWxzZVwiLCBcImZsb2F0XCIsIFwiZm9yXCIsIFwiZnJpZW5kXCIsIFwiZ290b1wiLCBcImlmXCIsIFwiaW5saW5lXCIsIFwiaW50XCIsIFwibG9uZ1wiLCBcIm11dGFibGVcIiwgXCJuYW1lc3BhY2VcIiwgXCJuZXdcIiwgXCJub2V4Y2VwdFwiLCBcIm5vdFwiLCBcIm5vdF9lcVwiLCBcIm51bGxwdHJcIiwgXCJvcGVyYXRvclwiLCBcIm9yXCIsIFwib3JfZXFcIiwgXCJwcml2YXRlXCIsIFwicHJvdGVjdGVkXCIsIFwicHVibGljXCIsIFwicmVnaXN0ZXJcIiwgXCJyZWludGVycHJldF9jYXN0XCIsIFwicmVxdWlyZXNcIiwgXCJyZXR1cm5cIiwgXCJzaG9ydFwiLCBcInNpZ25lZFwiLCBcInNpemVvZlwiLCBcInN0YXRpY1wiLCBcInN0YXRpY19hc3NlcnRcIiwgXCJzdGF0aWNfY2FzdFwiLCBcInN0cnVjdFwiLCBcInN3aXRjaFwiLCBcInRlbXBsYXRlXCIsIFwidGhpc1wiLCBcInRocmVhZF9sb2NhbFwiLCBcInRocm93XCIsIFwidHJ1ZVwiLCBcInRyeVwiLCBcInR5cGVkZWZcIiwgXCJ0eXBlaWRcIiwgXCJ0eXBlbmFtZVwiLCBcInVuaW9uXCIsIFwidW5zaWduZWRcIiwgXCJ1c2luZ1wiLCBcInZpcnR1YWxcIiwgXCJ2b2lkXCIsIFwidm9sYXRpbGVcIiwgXCJ3Y2hhcl90XCIsIFwid2hpbGVcIiwgXCJ4b3JcIiwgXCJ4b3JfZXFcIiwgXCJzdGRcIiwgXCJzdHJpbmdcIiwgXCJudW1lcmljX2xpbWl0c1wiLFxuICAgIC8vIFRoZSBxdWFsaWZpZWQgbGlic3RkYysrIDxzdHJpbmc+IGluY2x1ZGUgY2hhaW4gYWxzbyBleHBvc2VzIHRoZXNlIGdsb2JhbCBuYW1lcy5cbiAgICBcIldFT0ZcIiwgXCJ3aW50X3RcIlxuICBdKSxcbiAgYzogbmV3IFNldChbXG4gICAgXCJhdXRvXCIsIFwiYnJlYWtcIiwgXCJjYXNlXCIsIFwiY2hhclwiLCBcImNvbnN0XCIsIFwiY29udGludWVcIiwgXCJkZWZhdWx0XCIsIFwiZG9cIiwgXCJkb3VibGVcIiwgXCJlbHNlXCIsIFwiZW51bVwiLCBcImV4dGVyblwiLFxuICAgIFwiZmxvYXRcIiwgXCJmb3JcIiwgXCJnb3RvXCIsIFwiaWZcIiwgXCJpbmxpbmVcIiwgXCJpbnRcIiwgXCJsb25nXCIsIFwicmVnaXN0ZXJcIiwgXCJyZXN0cmljdFwiLCBcInJldHVyblwiLCBcInNob3J0XCIsIFwic2lnbmVkXCIsXG4gICAgXCJzaXplb2ZcIiwgXCJzdGF0aWNcIiwgXCJzdHJ1Y3RcIiwgXCJzd2l0Y2hcIiwgXCJ0eXBlZGVmXCIsIFwidW5pb25cIiwgXCJ1bnNpZ25lZFwiLCBcInZvaWRcIiwgXCJ2b2xhdGlsZVwiLCBcIndoaWxlXCIsXG4gICAgXCJib29sXCIsIFwidHJ1ZVwiLCBcImZhbHNlXCIsIFwiVFJVRVwiLCBcIkZBTFNFXCIsIFwiaW50NjRfdFwiLCBcInVpbnQ2NF90XCIsIFwic2l6ZV90XCIsIFwicHRyZGlmZl90XCIsIFwibWFpblwiLCBcIk5VTExcIiwgXCJJTlQ2NF9DXCIsIFwiVUlOVDY0X0NcIixcbiAgICBcIklOVDY0X01JTlwiLCBcIklOVDY0X01BWFwiLCBcIlBUUkRJRkZfTUFYXCIsIFwiQ0hBUl9CSVRcIiwgXCJzdGRpblwiLCBcInN0ZG91dFwiLCBcInN0ZGVyclwiLCBcIm1hbGxvY1wiLCBcImZyZWVcIiwgXCJleGl0XCIsXG4gICAgXCJmd3JpdGVcIiwgXCJmZmx1c2hcIiwgXCJtZW1jcHlcIiwgXCJtZW1jbXBcIiwgXCJGSUxFXCIsIFwiZnBvc190XCIsIFwiZGl2X3RcIiwgXCJsZGl2X3RcIiwgXCJsbGRpdl90XCIsIFwid2NoYXJfdFwiLCBcIm1heF9hbGlnbl90XCIsXG4gICAgXCJvZmZzZXRvZlwiLCBcImFsaWduYXNcIiwgXCJhbGlnbm9mXCIsIFwibm9yZXR1cm5cIiwgXCJ0cnVlXCIsIFwiZmFsc2VcIiwgXCJhc3NlcnRcIiwgXCJzdGF0aWNfYXNzZXJ0XCIsIFwiZXJybm9cIixcbiAgICBcIkVPRlwiLCBcIkJVRlNJWlwiLCBcIkZPUEVOX01BWFwiLCBcIkZJTEVOQU1FX01BWFwiLCBcIkxfdG1wbmFtXCIsIFwiU0VFS19DVVJcIiwgXCJTRUVLX0VORFwiLCBcIlNFRUtfU0VUXCIsIFwiVE1QX01BWFwiLFxuICAgIFwiRVhJVF9GQUlMVVJFXCIsIFwiRVhJVF9TVUNDRVNTXCIsIFwiTUJfQ1VSX01BWFwiLCBcIk1CX0xFTl9NQVhcIiwgXCJSQU5EX01BWFwiLFxuICAgIFwicmVtb3ZlXCIsIFwicmVuYW1lXCIsIFwidG1wZmlsZVwiLCBcInRtcG5hbVwiLCBcImZjbG9zZVwiLCBcImZvcGVuXCIsIFwiZnJlb3BlblwiLCBcInNldGJ1ZlwiLCBcInNldHZidWZcIixcbiAgICBcImZwcmludGZcIiwgXCJmc2NhbmZcIiwgXCJwcmludGZcIiwgXCJzY2FuZlwiLCBcInNucHJpbnRmXCIsIFwic3ByaW50ZlwiLCBcInNzY2FuZlwiLCBcInZmcHJpbnRmXCIsIFwidmZzY2FuZlwiLCBcInZwcmludGZcIixcbiAgICBcInZzY2FuZlwiLCBcInZzbnByaW50ZlwiLCBcInZzcHJpbnRmXCIsIFwidnNzY2FuZlwiLCBcImZnZXRjXCIsIFwiZmdldHNcIiwgXCJmcHV0Y1wiLCBcImZwdXRzXCIsIFwiZ2V0Y1wiLCBcImdldGNoYXJcIixcbiAgICBcInB1dGNcIiwgXCJwdXRjaGFyXCIsIFwicHV0c1wiLCBcInVuZ2V0Y1wiLCBcImZyZWFkXCIsIFwiZmdldHBvc1wiLCBcImZzZWVrXCIsIFwiZnNldHBvc1wiLCBcImZ0ZWxsXCIsIFwicmV3aW5kXCIsIFwiY2xlYXJlcnJcIixcbiAgICBcImZlb2ZcIiwgXCJmZXJyb3JcIiwgXCJwZXJyb3JcIiwgXCJhdG9mXCIsIFwiYXRvaVwiLCBcImF0b2xcIiwgXCJhdG9sbFwiLCBcInN0cnRvZFwiLCBcInN0cnRvZlwiLCBcInN0cnRvbGRcIiwgXCJzdHJ0b2xcIixcbiAgICBcInN0cnRvbGxcIiwgXCJzdHJ0b3VsXCIsIFwic3RydG91bGxcIiwgXCJyYW5kXCIsIFwic3JhbmRcIiwgXCJhbGlnbmVkX2FsbG9jXCIsIFwiY2FsbG9jXCIsIFwicmVhbGxvY1wiLCBcImFib3J0XCIsIFwiYXRleGl0XCIsXG4gICAgXCJhdF9xdWlja19leGl0XCIsIFwicXVpY2tfZXhpdFwiLCBcImdldGVudlwiLCBcInN5c3RlbVwiLCBcImJzZWFyY2hcIiwgXCJxc29ydFwiLCBcImFic1wiLCBcImxhYnNcIiwgXCJsbGFic1wiLCBcImRpdlwiLCBcImxkaXZcIixcbiAgICBcImxsZGl2XCIsIFwibWJsZW5cIiwgXCJtYnRvd2NcIiwgXCJ3Y3RvbWJcIiwgXCJtYnN0b3djc1wiLCBcIndjc3RvbWJzXCIsIFwibWVtbW92ZVwiLCBcInN0cmNweVwiLCBcInN0cm5jcHlcIiwgXCJzdHJjYXRcIixcbiAgICBcInN0cm5jYXRcIiwgXCJzdHJjbXBcIiwgXCJzdHJjb2xsXCIsIFwic3RybmNtcFwiLCBcInN0cnhmcm1cIiwgXCJtZW1jaHJcIiwgXCJzdHJjaHJcIiwgXCJzdHJjc3BuXCIsIFwic3RycGJya1wiLCBcInN0cnJjaHJcIixcbiAgICBcInN0cnNwblwiLCBcInN0cnN0clwiLCBcInN0cnRva1wiLCBcIm1lbXNldFwiLCBcInN0cmVycm9yXCIsIFwic3RybGVuXCJcbiAgXSksXG4gIGNzaGFycDogbmV3IFNldChbXG4gICAgXCJfX2FyZ2xpc3RcIiwgXCJfX21ha2VyZWZcIiwgXCJfX3JlZnR5cGVcIiwgXCJfX3JlZnZhbHVlXCIsIFwiYWJzdHJhY3RcIiwgXCJhZGRcIiwgXCJhbGlhc1wiLCBcImFsbG93c1wiLCBcImFuZFwiLCBcImFzXCIsXG4gICAgXCJhc2NlbmRpbmdcIiwgXCJhc3luY1wiLCBcImF3YWl0XCIsIFwiYmFzZVwiLCBcImJvb2xcIiwgXCJicmVha1wiLFxuICAgIFwiYnlcIiwgXCJieXRlXCIsIFwiY2FzZVwiLCBcImNhdGNoXCIsIFwiY2hhclwiLCBcImNoZWNrZWRcIiwgXCJjbGFzc1wiLCBcImNvbnN0XCIsIFwiY29udGludWVcIiwgXCJkZWNpbWFsXCIsIFwiZGVmYXVsdFwiLFxuICAgIFwiZGVsZWdhdGVcIiwgXCJkZXNjZW5kaW5nXCIsIFwiZG9cIiwgXCJkb3VibGVcIiwgXCJkeW5hbWljXCIsIFwiZWxzZVwiLCBcImVudW1cIiwgXCJlcXVhbHNcIiwgXCJldmVudFwiLCBcImV4cGxpY2l0XCIsIFwiZXh0ZW5zaW9uXCIsIFwiZXh0ZXJuXCIsXG4gICAgXCJmYWxzZVwiLCBcImZpZWxkXCIsIFwiZmlsZVwiLCBcImZpbmFsbHlcIiwgXCJmaXhlZFwiLCBcImZsb2F0XCIsIFwiZm9yXCIsIFwiZm9yZWFjaFwiLCBcImZyb21cIiwgXCJnZXRcIiwgXCJnbG9iYWxcIiwgXCJnb3RvXCIsXG4gICAgXCJncm91cFwiLCBcImlmXCIsIFwiaW1wbGljaXRcIiwgXCJpblwiLCBcImluaXRcIiwgXCJpbnRcIiwgXCJpbnRlcmZhY2VcIiwgXCJpbnRlcm5hbFwiLCBcImludG9cIiwgXCJpc1wiLCBcImpvaW5cIiwgXCJsZXRcIiwgXCJsb2NrXCIsXG4gICAgXCJsb25nXCIsIFwibWFuYWdlZFwiLCBcIm5hbWVvZlwiLCBcIm5hbWVzcGFjZVwiLCBcIm5ld1wiLCBcIm5pbnRcIiwgXCJub3RcIiwgXCJub3RudWxsXCIsIFwibnVsbFwiLCBcIm51aW50XCIsIFwib2JqZWN0XCIsIFwib25cIixcbiAgICBcIm9wZXJhdG9yXCIsIFwib3JcIiwgXCJvcmRlcmJ5XCIsIFwib3V0XCIsIFwib3ZlcnJpZGVcIiwgXCJwYXJhbXNcIiwgXCJwYXJ0aWFsXCIsIFwicHJpdmF0ZVwiLCBcInByb3RlY3RlZFwiLCBcInB1YmxpY1wiLCBcInJlYWRvbmx5XCIsXG4gICAgXCJyZWNvcmRcIiwgXCJyZWZcIiwgXCJyZW1vdmVcIiwgXCJyZXF1aXJlZFwiLCBcInJldHVyblwiLCBcInNieXRlXCIsIFwic2NvcGVkXCIsIFwic2VhbGVkXCIsIFwic2VsZWN0XCIsIFwic2V0XCIsIFwic2hvcnRcIiwgXCJzaXplb2ZcIixcbiAgICBcInN0YWNrYWxsb2NcIiwgXCJzdGF0aWNcIiwgXCJzdHJpbmdcIiwgXCJzdHJ1Y3RcIiwgXCJzd2l0Y2hcIiwgXCJ0aGlzXCIsIFwidGhyb3dcIiwgXCJ0cnVlXCIsIFwidHJ5XCIsIFwidHlwZW9mXCIsIFwidWludFwiLCBcInVsb25nXCIsXG4gICAgXCJ1bmNoZWNrZWRcIiwgXCJ1bm1hbmFnZWRcIiwgXCJ1bnNhZmVcIiwgXCJ1c2hvcnRcIiwgXCJ1c2luZ1wiLCBcInZhbHVlXCIsIFwidmFyXCIsIFwidmlydHVhbFwiLCBcInZvaWRcIiwgXCJ2b2xhdGlsZVwiLCBcIndoZW5cIixcbiAgICBcIndoZXJlXCIsIFwid2hpbGVcIiwgXCJ3aXRoXCIsIFwieWllbGRcIlxuICBdKSxcbiAgZ286IG5ldyBTZXQoW1xuICAgIFwiX1wiLCBcImJyZWFrXCIsIFwiZGVmYXVsdFwiLCBcImZ1bmNcIiwgXCJpbnRlcmZhY2VcIiwgXCJzZWxlY3RcIiwgXCJjYXNlXCIsIFwiZGVmZXJcIiwgXCJnb1wiLCBcIm1hcFwiLCBcInN0cnVjdFwiLCBcImNoYW5cIixcbiAgICBcImVsc2VcIiwgXCJnb3RvXCIsIFwicGFja2FnZVwiLCBcInN3aXRjaFwiLCBcImNvbnN0XCIsIFwiZmFsbHRocm91Z2hcIiwgXCJpZlwiLCBcInJhbmdlXCIsIFwidHlwZVwiLCBcImNvbnRpbnVlXCIsIFwiZm9yXCIsXG4gICAgXCJpbXBvcnRcIiwgXCJyZXR1cm5cIiwgXCJ2YXJcIlxuICBdKSxcbiAgamF2YTogbmV3IFNldChbXG4gICAgXCJfXCIsIFwiYWJzdHJhY3RcIiwgXCJhc3NlcnRcIiwgXCJib29sZWFuXCIsIFwiYnJlYWtcIiwgXCJieXRlXCIsIFwiY2FzZVwiLCBcImNhdGNoXCIsIFwiY2hhclwiLCBcImNsYXNzXCIsIFwiY29uc3RcIiwgXCJjb250aW51ZVwiLFxuICAgIFwiZGVmYXVsdFwiLCBcImRvXCIsIFwiZG91YmxlXCIsIFwiZWxzZVwiLCBcImVudW1cIiwgXCJleHBvcnRzXCIsIFwiZXh0ZW5kc1wiLCBcImZhbHNlXCIsIFwiZmluYWxcIiwgXCJmaW5hbGx5XCIsIFwiZmxvYXRcIiwgXCJmb3JcIixcbiAgICBcImdvdG9cIiwgXCJpZlwiLCBcImltcGxlbWVudHNcIiwgXCJpbXBvcnRcIiwgXCJpbnN0YW5jZW9mXCIsIFwiaW50XCIsIFwiaW50ZXJmYWNlXCIsIFwibG9uZ1wiLCBcIm1vZHVsZVwiLCBcIm5hdGl2ZVwiLCBcIm5ld1wiLFxuICAgIFwibm9uLXNlYWxlZFwiLCBcIm51bGxcIiwgXCJvcGVuXCIsIFwib3BlbnNcIiwgXCJwYWNrYWdlXCIsIFwicGVybWl0c1wiLCBcInByaXZhdGVcIiwgXCJwcm90ZWN0ZWRcIiwgXCJwcm92aWRlc1wiLCBcInB1YmxpY1wiLFxuICAgIFwicmVjb3JkXCIsIFwicmVxdWlyZXNcIiwgXCJyZXR1cm5cIiwgXCJzZWFsZWRcIiwgXCJzaG9ydFwiLCBcInN0YXRpY1wiLCBcInN0cmljdGZwXCIsIFwic3VwZXJcIiwgXCJzd2l0Y2hcIiwgXCJzeW5jaHJvbml6ZWRcIixcbiAgICBcInRoaXNcIiwgXCJ0aHJvd1wiLCBcInRocm93c1wiLCBcInRvXCIsIFwidHJhbnNpZW50XCIsIFwidHJhbnNpdGl2ZVwiLCBcInRydWVcIiwgXCJ0cnlcIiwgXCJ1c2VzXCIsIFwidmFyXCIsIFwidm9pZFwiLCBcInZvbGF0aWxlXCIsXG4gICAgXCJ3aGVuXCIsIFwid2hpbGVcIiwgXCJ3aXRoXCIsIFwieWllbGRcIlxuICBdKSxcbiAgamF2YXNjcmlwdDogbmV3IFNldChbXG4gICAgXCJhd2FpdFwiLCBcImJyZWFrXCIsIFwiY2FzZVwiLCBcImNhdGNoXCIsIFwiY2xhc3NcIiwgXCJjb25zdFwiLCBcImNvbnRpbnVlXCIsIFwiZGVidWdnZXJcIiwgXCJkZWZhdWx0XCIsIFwiZGVsZXRlXCIsIFwiZG9cIiwgXCJlbHNlXCIsXG4gICAgXCJlbnVtXCIsIFwiZXhwb3J0XCIsIFwiZXh0ZW5kc1wiLCBcImZhbHNlXCIsIFwiZmluYWxseVwiLCBcImZvclwiLCBcImZ1bmN0aW9uXCIsIFwiaWZcIiwgXCJpbXBsZW1lbnRzXCIsIFwiaW1wb3J0XCIsIFwiaW5cIixcbiAgICBcImluc3RhbmNlb2ZcIiwgXCJpbnRlcmZhY2VcIiwgXCJsZXRcIiwgXCJuZXdcIiwgXCJudWxsXCIsIFwicGFja2FnZVwiLCBcInByaXZhdGVcIiwgXCJwcm90ZWN0ZWRcIiwgXCJwdWJsaWNcIiwgXCJyZXR1cm5cIiwgXCJzdGF0aWNcIixcbiAgICBcInN1cGVyXCIsIFwic3dpdGNoXCIsIFwidGhpc1wiLCBcInRocm93XCIsIFwidHJ1ZVwiLCBcInRyeVwiLCBcInR5cGVvZlwiLCBcInZhclwiLCBcInZvaWRcIiwgXCJ3aGlsZVwiLCBcIndpdGhcIiwgXCJ5aWVsZFwiXG4gIF0pLFxuICBwaHA6IG5ldyBTZXQoW1xuICAgIFwiX19oYWx0X2NvbXBpbGVyXCIsIFwiYWJzdHJhY3RcIiwgXCJhbmRcIiwgXCJhcnJheVwiLCBcImFzXCIsIFwiYnJlYWtcIiwgXCJjYWxsYWJsZVwiLCBcImNhc2VcIiwgXCJjYXRjaFwiLCBcImNsYXNzXCIsIFwiY2xvbmVcIixcbiAgICBcImNvbnN0XCIsIFwiY29udGludWVcIiwgXCJkZWNsYXJlXCIsIFwiZGVmYXVsdFwiLCBcImRpZVwiLCBcImRvXCIsIFwiZWNob1wiLCBcImVsc2VcIiwgXCJlbHNlaWZcIiwgXCJlbXB0eVwiLCBcImVuZGRlY2xhcmVcIixcbiAgICBcImVuZGZvclwiLCBcImVuZGZvcmVhY2hcIiwgXCJlbmRpZlwiLCBcImVuZHN3aXRjaFwiLCBcImVuZHdoaWxlXCIsIFwiZW51bVwiLCBcImV2YWxcIiwgXCJleGl0XCIsIFwiZXh0ZW5kc1wiLCBcImZhbHNlXCIsIFwiZmluYWxcIixcbiAgICBcImZpbmFsbHlcIiwgXCJmblwiLCBcImZvclwiLCBcImZvcmVhY2hcIiwgXCJmcm9tXCIsIFwiZnVuY3Rpb25cIiwgXCJnbG9iYWxcIiwgXCJnb3RvXCIsIFwiaWZcIiwgXCJpbXBsZW1lbnRzXCIsIFwiaW5jbHVkZVwiLFxuICAgIFwiaW5jbHVkZV9vbmNlXCIsIFwiaW5zdGFuY2VvZlwiLCBcImluc3RlYWRvZlwiLCBcImludGVyZmFjZVwiLCBcImlzc2V0XCIsIFwiaXRlcmFibGVcIiwgXCJsaXN0XCIsIFwibWF0Y2hcIiwgXCJtaXhlZFwiLCBcIm5hbWVzcGFjZVwiLFxuICAgIFwibmV2ZXJcIiwgXCJuZXdcIiwgXCJudWxsXCIsIFwib2JqZWN0XCIsIFwib3JcIiwgXCJwYXJlbnRcIiwgXCJwcmludFwiLCBcInByaXZhdGVcIiwgXCJwcm90ZWN0ZWRcIiwgXCJwdWJsaWNcIiwgXCJyZWFkb25seVwiLCBcInJlcXVpcmVcIixcbiAgICBcInJlcXVpcmVfb25jZVwiLCBcInJldHVyblwiLCBcInNlbGZcIiwgXCJzdGF0aWNcIiwgXCJzd2l0Y2hcIiwgXCJ0aHJvd1wiLCBcInRyYWl0XCIsIFwidHJ1ZVwiLCBcInRyeVwiLCBcInVuc2V0XCIsIFwidXNlXCIsIFwidmFyXCIsXG4gICAgXCJ2b2lkXCIsIFwid2hpbGVcIiwgXCJ4b3JcIiwgXCJ5aWVsZFwiXG4gIF0pLFxuICBweXRob246IG5ldyBTZXQoW1xuICAgIFwiRmFsc2VcIiwgXCJOb25lXCIsIFwiVHJ1ZVwiLCBcImFuZFwiLCBcImFzXCIsIFwiYXNzZXJ0XCIsIFwiYXN5bmNcIiwgXCJhd2FpdFwiLCBcImJvb2xcIiwgXCJicmVha1wiLCBcImNhc2VcIiwgXCJjbGFzc1wiLFxuICAgIFwiY29udGludWVcIiwgXCJkZWZcIiwgXCJkZWxcIiwgXCJlbGlmXCIsIFwiZWxzZVwiLCBcImV4Y2VwdFwiLCBcImV4ZWNcIiwgXCJmaW5hbGx5XCIsIFwiZm9yXCIsIFwiZnJvbVwiLCBcImdsb2JhbFwiLCBcImlmXCIsXG4gICAgXCJpbXBvcnRcIiwgXCJpblwiLCBcImludFwiLCBcImlzXCIsIFwibGFtYmRhXCIsIFwibWF0Y2hcIiwgXCJub25sb2NhbFwiLCBcIm5vdFwiLCBcIm9yXCIsIFwicGFzc1wiLCBcInByaW50XCIsXG4gICAgXCJyYWlzZVwiLCBcInJldHVyblwiLCBcInN0clwiLCBcInRyeVwiLCBcInR5cGVcIiwgXCJ3aGlsZVwiLCBcIndpdGhcIiwgXCJ5aWVsZFwiLCBcIl9cIiwgXCJfX2RlYnVnX19cIlxuICBdKSxcbiAgcnVieTogbmV3IFNldChbXG4gICAgXCJCRUdJTlwiLCBcIkVORFwiLCBcIl9fRU5DT0RJTkdfX1wiLCBcIl9fRU5EX19cIiwgXCJfX0ZJTEVfX1wiLCBcIl9fTElORV9fXCIsIFwiYWxpYXNcIiwgXCJhbmRcIiwgXCJiZWdpblwiLCBcImJyZWFrXCIsIFwiY2FzZVwiLFxuICAgIFwiY2xhc3NcIiwgXCJkZWZcIiwgXCJkZWZpbmVkP1wiLCBcImRvXCIsIFwiZWxzZVwiLCBcImVsc2lmXCIsIFwiZW5kXCIsIFwiZW5zdXJlXCIsIFwiZmFsc2VcIiwgXCJmb3JcIiwgXCJpZlwiLCBcImluXCIsIFwibW9kdWxlXCIsXG4gICAgXCJuZXh0XCIsIFwibmlsXCIsIFwibm90XCIsIFwib3JcIiwgXCJyZWRvXCIsIFwicmVzY3VlXCIsIFwicmV0cnlcIiwgXCJyZXR1cm5cIiwgXCJzZWxmXCIsIFwic3VwZXJcIiwgXCJ0aGVuXCIsIFwidHJ1ZVwiLCBcInVuZGVmXCIsXG4gICAgXCJ1bmxlc3NcIiwgXCJ1bnRpbFwiLCBcIndoZW5cIiwgXCJ3aGlsZVwiLCBcInlpZWxkXCJcbiAgXSksXG4gIHR5cGVzY3JpcHQ6IG5ldyBTZXQoW1xuICAgIFwiYWJzdHJhY3RcIiwgXCJhbnlcIiwgXCJhc1wiLCBcImFzc2VydHNcIiwgXCJhc3luY1wiLCBcImF3YWl0XCIsIFwiYm9vbGVhblwiLCBcImJyZWFrXCIsIFwiY2FzZVwiLCBcImNhdGNoXCIsIFwiY2xhc3NcIiwgXCJjb25zdFwiLFxuICAgIFwiY29uc3RydWN0b3JcIiwgXCJjb250aW51ZVwiLCBcImRlYnVnZ2VyXCIsIFwiZGVjbGFyZVwiLCBcImRlZmF1bHRcIiwgXCJkZWxldGVcIiwgXCJkb1wiLCBcImVsc2VcIiwgXCJlbnVtXCIsIFwiZXhwb3J0XCIsIFwiZXh0ZW5kc1wiLFxuICAgIFwiZmFsc2VcIiwgXCJmaW5hbGx5XCIsIFwiZm9yXCIsIFwiZnJvbVwiLCBcImZ1bmN0aW9uXCIsIFwiZ2V0XCIsIFwiaWZcIiwgXCJpbXBsZW1lbnRzXCIsIFwiaW1wb3J0XCIsIFwiaW5cIiwgXCJpbmZlclwiLCBcImluc3RhbmNlb2ZcIixcbiAgICBcImludGVyZmFjZVwiLCBcImlzXCIsIFwia2V5b2ZcIiwgXCJsZXRcIiwgXCJtb2R1bGVcIiwgXCJuYW1lc3BhY2VcIiwgXCJuZXZlclwiLCBcIm5ld1wiLCBcIm51bGxcIiwgXCJudW1iZXJcIiwgXCJvYmplY3RcIiwgXCJvZlwiLFxuICAgIFwib3ZlcnJpZGVcIiwgXCJwYWNrYWdlXCIsIFwicHJpdmF0ZVwiLCBcInByb3RlY3RlZFwiLCBcInB1YmxpY1wiLCBcInJlYWRvbmx5XCIsIFwicmVxdWlyZVwiLCBcInJldHVyblwiLCBcInNhdGlzZmllc1wiLCBcInNldFwiLFxuICAgIFwic3RhdGljXCIsIFwic3RyaW5nXCIsIFwic3VwZXJcIiwgXCJzd2l0Y2hcIiwgXCJzeW1ib2xcIiwgXCJ0aGlzXCIsIFwidGhyb3dcIiwgXCJ0cnVlXCIsIFwidHJ5XCIsIFwidHlwZVwiLCBcInR5cGVvZlwiLCBcInVuZGVmaW5lZFwiLFxuICAgIFwidW5pcXVlXCIsIFwidW5rbm93blwiLCBcInVzaW5nXCIsIFwidmFyXCIsIFwidm9pZFwiLCBcIndoaWxlXCIsIFwid2l0aFwiLCBcInlpZWxkXCJcbiAgXSksXG4gIHdhc206IG5ldyBTZXQoKVxufVxuXG5jb25zdCBwaHBJbnZhbGlkUGFyYW1ldGVyQmluZGluZ3MgPSBuZXcgU2V0KFtcbiAgXCJHTE9CQUxTXCIsIFwiX0NPT0tJRVwiLCBcIl9FTlZcIiwgXCJfRklMRVNcIiwgXCJfR0VUXCIsIFwiX1BPU1RcIiwgXCJfUkVRVUVTVFwiLCBcIl9TRVJWRVJcIiwgXCJfU0VTU0lPTlwiLCBcInRoaXNcIlxuXSlcbmNvbnN0IHBocEludmFsaWRBc3NpZ25lZEJpbmRpbmdzID0gbmV3IFNldChbXCJHTE9CQUxTXCIsIFwidGhpc1wiXSlcblxuLyoqIEB0eXBlIHtSZWFkb25seTxQYXJ0aWFsPFJlY29yZDxpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5CYWNrZW5kTGFuZ3VhZ2UsIFNldDxzdHJpbmc+Pj4+fSAqL1xuY29uc3QgcmVzZXJ2ZWRUeXBlTmFtZXMgPSBPYmplY3QuZnJlZXplKHtcbiAgamF2YTogbmV3IFNldChbXCJCb29sZWFuXCIsIFwiSW50ZWdlclwiLCBcIk1haW5cIiwgXCJNYXRoXCIsIFwiT2JqZWN0XCIsIFwiU3RyaW5nXCIsIFwiU3lzdGVtXCJdKSxcbiAgamF2YXNjcmlwdDogbmV3IFNldChbXCJBcnJheVwiLCBcIkJvb2xlYW5cIiwgXCJNYXBcIiwgXCJNYXRoXCIsIFwiTnVtYmVyXCIsIFwiT2JqZWN0XCIsIFwiUmVmbGVjdFwiLCBcIlN0cmluZ1wiXSksXG4gIHBocDogbmV3IFNldChbXG4gICAgXCJhZGRyZXNzaW5mb1wiLCBcImFsbG93ZHluYW1pY3Byb3BlcnRpZXNcIiwgXCJhcHBlbmRpdGVyYXRvclwiLCBcImFyZ3VtZW50Y291bnRlcnJvclwiLCBcImFyaXRobWV0aWNlcnJvclwiLCBcImFycmF5YWNjZXNzXCIsXG4gICAgXCJhcnJheWl0ZXJhdG9yXCIsIFwiYXJyYXlvYmplY3RcIiwgXCJhc3NlcnRpb25lcnJvclwiLCBcImF0dHJpYnV0ZVwiLCBcImJhY2tlZGVudW1cIiwgXCJiYWRmdW5jdGlvbmNhbGxleGNlcHRpb25cIixcbiAgICBcImJhZG1ldGhvZGNhbGxleGNlcHRpb25cIiwgXCJjYWNoaW5naXRlcmF0b3JcIixcbiAgICBcImNhbGxiYWNrZmlsdGVyaXRlcmF0b3JcIiwgXCJjbG9zZWRnZW5lcmF0b3JleGNlcHRpb25cIiwgXCJjbG9zdXJlXCIsIFwiY29tcGlsZWVycm9yXCIsIFwiY291bnRhYmxlXCIsIFwiZGF0ZWVycm9yXCIsIFwiZGF0ZWV4Y2VwdGlvblwiLFxuICAgIFwiZGF0ZWludGVydmFsXCIsIFwiZGF0ZWludmFsaWRvcGVyYXRpb25leGNlcHRpb25cIiwgXCJkYXRlaW52YWxpZHRpbWV6b25lZXhjZXB0aW9uXCIsIFwiZGF0ZW1hbGZvcm1lZGludGVydmFsc3RyaW5nZXhjZXB0aW9uXCIsXG4gICAgXCJkYXRlbWFsZm9ybWVkcGVyaW9kc3RyaW5nZXhjZXB0aW9uXCIsIFwiZGF0ZW1hbGZvcm1lZHN0cmluZ2V4Y2VwdGlvblwiLCBcImRhdGVvYmplY3RlcnJvclwiLCBcImRhdGVwZXJpb2RcIiwgXCJkYXRlcmFuZ2VlcnJvclwiLFxuICAgIFwiZGF0ZXRpbWVcIiwgXCJkYXRldGltZWltbXV0YWJsZVwiLCBcImRhdGV0aW1laW50ZXJmYWNlXCIsIFwiZGF0ZXRpbWV6b25lXCIsIFwiZGVmbGF0ZWNvbnRleHRcIiwgXCJkZWxheWVkdGFyZ2V0dmFsaWRhdGlvblwiLFxuICAgIFwiZGVwcmVjYXRlZFwiLCBcImRpcmVjdG9yeVwiLCBcImRpcmVjdG9yeWl0ZXJhdG9yXCIsIFwiZGl2aXNpb25ieXplcm9lcnJvclwiLCBcImRvbWFpbmV4Y2VwdGlvblwiLCBcImVtcHR5aXRlcmF0b3JcIiwgXCJlcnJvclwiLFxuICAgIFwiZXJyb3JleGNlcHRpb25cIiwgXCJleGNlcHRpb25cIiwgXCJmZmlcIiwgXCJmaWJlclwiLCBcImZpYmVyZXJyb3JcIiwgXCJmaWxlc3lzdGVtaXRlcmF0b3JcIiwgXCJmaWx0ZXJpdGVyYXRvclwiLCBcImZpbmZvXCIsIFwiZ2VuZXJhdG9yXCIsXG4gICAgXCJnbG9iaXRlcmF0b3JcIiwgXCJoYXNoY29udGV4dFwiLCBcImluZmluaXRlaXRlcmF0b3JcIiwgXCJpbmZsYXRlY29udGV4dFwiLCBcImludGVybmFsaXRlcmF0b3JcIiwgXCJpbnZhbGlkYXJndW1lbnRleGNlcHRpb25cIixcbiAgICBcIml0ZXJhdG9yXCIsIFwiaXRlcmF0b3JhZ2dyZWdhdGVcIiwgXCJpdGVyYXRvcml0ZXJhdG9yXCIsIFwianNvbmV4Y2VwdGlvblwiLCBcImpzb25zZXJpYWxpemFibGVcIiwgXCJsZW5ndGhleGNlcHRpb25cIixcbiAgICBcImxpYnhtbGVycm9yXCIsIFwibGltaXRpdGVyYXRvclwiLCBcImxvZ2ljZXhjZXB0aW9uXCIsIFwibXVsdGlwbGVpdGVyYXRvclwiLCBcIm5vZGlzY2FyZFwiLCBcIm5vcmV3aW5kaXRlcmF0b3JcIixcbiAgICBcIm9wZW5zc2xhc3ltbWV0cmlja2V5XCIsIFwib3BlbnNzbGNlcnRpZmljYXRlXCIsIFwib3BlbnNzbGNlcnRpZmljYXRlc2lnbmluZ3JlcXVlc3RcIixcbiAgICBcIm91dG9mYm91bmRzZXhjZXB0aW9uXCIsIFwib3V0b2ZyYW5nZWV4Y2VwdGlvblwiLCBcIm91dGVyaXRlcmF0b3JcIiwgXCJvdmVyZmxvd2V4Y2VwdGlvblwiLCBcIm92ZXJyaWRlXCIsIFwicGFyZW50aXRlcmF0b3JcIixcbiAgICBcInBhcnNlZXJyb3JcIiwgXCJwZG9cIiwgXCJwZG9leGNlcHRpb25cIiwgXCJwZG9yb3dcIiwgXCJwZG9zdGF0ZW1lbnRcIiwgXCJwaGFyXCIsIFwicGhhcmRhdGFcIiwgXCJwaGFyZXhjZXB0aW9uXCIsIFwicGhhcmZpbGVpbmZvXCIsXG4gICAgXCJwaHBfdXNlcl9maWx0ZXJcIiwgXCJwaHB0b2tlblwiLCBcInByb3BlcnR5aG9va3R5cGVcIiwgXCJyYW5nZWV4Y2VwdGlvblwiLCBcInJlY3Vyc2l2ZWFycmF5aXRlcmF0b3JcIiwgXCJyZWN1cnNpdmVjYWNoaW5naXRlcmF0b3JcIixcbiAgICBcInJlY3Vyc2l2ZWNhbGxiYWNrZmlsdGVyaXRlcmF0b3JcIixcbiAgICBcInJlY3Vyc2l2ZWRpcmVjdG9yeWl0ZXJhdG9yXCIsIFwicmVjdXJzaXZlZmlsdGVyaXRlcmF0b3JcIiwgXCJyZWN1cnNpdmVpdGVyYXRvclwiLCBcInJlY3Vyc2l2ZWl0ZXJhdG9yaXRlcmF0b3JcIixcbiAgICBcInJlY3Vyc2l2ZXJlZ2V4aXRlcmF0b3JcIiwgXCJyZWN1cnNpdmV0cmVlaXRlcmF0b3JcIiwgXCJyZWZsZWN0aW9uXCIsIFwicmVmbGVjdGlvbmF0dHJpYnV0ZVwiLCBcInJlZmxlY3Rpb25jbGFzc1wiLFxuICAgIFwicmVmbGVjdGlvbmNsYXNzY29uc3RhbnRcIiwgXCJyZWZsZWN0aW9uY29uc3RhbnRcIiwgXCJyZWZsZWN0aW9uZW51bVwiLCBcInJlZmxlY3Rpb25lbnVtYmFja2VkY2FzZVwiLCBcInJlZmxlY3Rpb25lbnVtdW5pdGNhc2VcIixcbiAgICBcInJlZmxlY3Rpb25leGNlcHRpb25cIiwgXCJyZWZsZWN0aW9uZXh0ZW5zaW9uXCIsIFwicmVmbGVjdGlvbmZpYmVyXCIsIFwicmVmbGVjdGlvbmZ1bmN0aW9uXCIsIFwicmVmbGVjdGlvbmZ1bmN0aW9uYWJzdHJhY3RcIixcbiAgICBcInJlZmxlY3Rpb25nZW5lcmF0b3JcIiwgXCJyZWZsZWN0aW9uaW50ZXJzZWN0aW9udHlwZVwiLCBcInJlZmxlY3Rpb25tZXRob2RcIiwgXCJyZWZsZWN0aW9ubmFtZWR0eXBlXCIsIFwicmVmbGVjdGlvbm9iamVjdFwiLFxuICAgIFwicmVmbGVjdGlvbnBhcmFtZXRlclwiLCBcInJlZmxlY3Rpb25wcm9wZXJ0eVwiLCBcInJlZmxlY3Rpb25yZWZlcmVuY2VcIiwgXCJyZWZsZWN0aW9udHlwZVwiLCBcInJlZmxlY3Rpb251bmlvbnR5cGVcIixcbiAgICBcInJlZmxlY3Rpb256ZW5kZXh0ZW5zaW9uXCIsIFwicmVmbGVjdG9yXCIsIFwicmVnZXhpdGVyYXRvclwiLCBcInJlcXVlc3RwYXJzZWJvZHlleGNlcHRpb25cIiwgXCJyZXR1cm50eXBld2lsbGNoYW5nZVwiLFxuICAgIFwicm91bmRpbmdtb2RlXCIsIFwicnVudGltZWV4Y2VwdGlvblwiLCBcInNlZWthYmxlaXRlcmF0b3JcIiwgXCJzZW5zaXRpdmVwYXJhbWV0ZXJcIiwgXCJzZW5zaXRpdmVwYXJhbWV0ZXJ2YWx1ZVwiLCBcInNlcmlhbGl6YWJsZVwiLFxuICAgIFwic2Vzc2lvbmhhbmRsZXJcIiwgXCJzZXNzaW9uaGFuZGxlcmludGVyZmFjZVwiLCBcInNlc3Npb25pZGludGVyZmFjZVwiLCBcInNlc3Npb251cGRhdGV0aW1lc3RhbXBoYW5kbGVyaW50ZXJmYWNlXCIsIFwic2htb3BcIixcbiAgICBcInNvY2tldFwiLCBcInNvZGl1bWV4Y2VwdGlvblwiLCBcInNwbGRvdWJseWxpbmtlZGxpc3RcIiwgXCJzcGxmaWxlaW5mb1wiLFxuICAgIFwic3BsZmlsZW9iamVjdFwiLCBcInNwbGZpeGVkYXJyYXlcIiwgXCJzcGxoZWFwXCIsIFwic3BsbWF4aGVhcFwiLCBcInNwbG1pbmhlYXBcIiwgXCJzcGxvYmplY3RzdG9yYWdlXCIsIFwic3Bsb2JzZXJ2ZXJcIixcbiAgICBcInNwbHByaW9yaXR5cXVldWVcIiwgXCJzcGxxdWV1ZVwiLCBcInNwbHN0YWNrXCIsIFwic3Bsc3ViamVjdFwiLCBcInNwbHRlbXBmaWxlb2JqZWN0XCIsIFwic3RkY2xhc3NcIiwgXCJzdHJlYW1idWNrZXRcIiwgXCJzdHJpbmdhYmxlXCIsXG4gICAgXCJzeXN2bWVzc2FnZXF1ZXVlXCIsIFwic3lzdnNlbWFwaG9yZVwiLCBcInN5c3ZzaGFyZWRtZW1vcnlcIiwgXCJ0aHJvd2FibGVcIiwgXCJ0cmF2ZXJzYWJsZVwiLCBcInR5cGVlcnJvclwiLCBcInVuZGVyZmxvd2V4Y2VwdGlvblwiLFxuICAgIFwidW5leHBlY3RlZHZhbHVlZXhjZXB0aW9uXCIsIFwidW5oYW5kbGVkbWF0Y2hlcnJvclwiLCBcInVuaXRlbnVtXCIsIFwidmFsdWVlcnJvclwiLCBcIndlYWttYXBcIiwgXCJ3ZWFrcmVmZXJlbmNlXCJcbiAgXSksXG4gIHJ1Ynk6IG5ldyBTZXQoW1xuICAgIFwiQXJndW1lbnRFcnJvclwiLCBcIkFycmF5XCIsIFwiQmFzaWNPYmplY3RcIiwgXCJCaW5kaW5nXCIsIFwiQ2xhc3NcIiwgXCJDbG9zZWRRdWV1ZUVycm9yXCIsIFwiQ29tcGFyYWJsZVwiLCBcIkNvbXBsZXhcIiwgXCJEYXRhXCIsIFwiRGlyXCIsXG4gICAgXCJFbmNvZGluZ1wiLCBcIkVuY29kaW5nRXJyb3JcIiwgXCJFbnVtZXJhYmxlXCIsIFwiRW51bWVyYXRvclwiLCBcIkVPRkVycm9yXCIsIFwiRXJybm9cIiwgXCJFeGNlcHRpb25cIiwgXCJGYWxzZUNsYXNzXCIsIFwiRmliZXJcIixcbiAgICBcIkZpYmVyRXJyb3JcIiwgXCJGaWxlXCIsIFwiRmlsZVRlc3RcIiwgXCJGbG9hdFwiLCBcIkZyb3plbkVycm9yXCIsIFwiR0NcIiwgXCJIYXNoXCIsIFwiSU9cIiwgXCJJT0Vycm9yXCIsIFwiSW5kZXhFcnJvclwiLCBcIkludGVnZXJcIixcbiAgICBcIkludGVycnVwdFwiLCBcIktlcm5lbFwiLCBcIktleUVycm9yXCIsIFwiTG9hZEVycm9yXCIsIFwiTG9jYWxKdW1wRXJyb3JcIiwgXCJNYXJzaGFsXCIsIFwiTWF0Y2hEYXRhXCIsIFwiTWF0aFwiLCBcIk1ldGhvZFwiLCBcIk1vZHVsZVwiLFxuICAgIFwiTXV0ZXhcIiwgXCJOYW1lRXJyb3JcIiwgXCJOaWxDbGFzc1wiLCBcIk5vTWVtb3J5RXJyb3JcIiwgXCJOb01ldGhvZEVycm9yXCIsIFwiTm90SW1wbGVtZW50ZWRFcnJvclwiLCBcIk51bWVyaWNcIiwgXCJPYmplY3RcIixcbiAgICBcIk9iamVjdFNwYWNlXCIsIFwiUHJvY1wiLCBcIlByb2Nlc3NcIiwgXCJRdWV1ZVwiLCBcIlJhY3RvclwiLCBcIlJhbmRvbVwiLCBcIlJhbmdlXCIsIFwiUmF0aW9uYWxcIiwgXCJSZWdleHBcIiwgXCJSZWdleHBFcnJvclwiLCBcIlJ1YnlWTVwiLFxuICAgIFwiUnVudGltZUVycm9yXCIsIFwiU2NyaXB0RXJyb3JcIiwgXCJTZWN1cml0eUVycm9yXCIsIFwiU2lnbmFsXCIsIFwiU2lnbmFsRXhjZXB0aW9uXCIsIFwiU2l6ZWRRdWV1ZVwiLCBcIlN0YW5kYXJkRXJyb3JcIiwgXCJTdG9wSXRlcmF0aW9uXCIsXG4gICAgXCJTdHJpbmdcIiwgXCJTdHJ1Y3RcIiwgXCJTeW1ib2xcIiwgXCJTeW50YXhFcnJvclwiLCBcIlN5c3RlbUNhbGxFcnJvclwiLCBcIlN5c3RlbUV4aXRcIiwgXCJTeXN0ZW1TdGFja0Vycm9yXCIsIFwiVGhyZWFkXCIsIFwiVGhyZWFkRXJyb3JcIixcbiAgICBcIlRocmVhZEdyb3VwXCIsIFwiVGltZVwiLCBcIlRyYWNlUG9pbnRcIiwgXCJUcnVlQ2xhc3NcIiwgXCJUeXBlRXJyb3JcIiwgXCJVbmJvdW5kTWV0aG9kXCIsIFwiVW5jYXVnaHRUaHJvd0Vycm9yXCIsIFwiV2FybmluZ1wiLFxuICAgIFwiWmVyb0RpdmlzaW9uRXJyb3JcIlxuICBdKSxcbiAgdHlwZXNjcmlwdDogbmV3IFNldChbXCJBcnJheVwiLCBcIkJvb2xlYW5cIiwgXCJNYXBcIiwgXCJNYXRoXCIsIFwiTnVtYmVyXCIsIFwiT2JqZWN0XCIsIFwiUmVhZG9ubHlBcnJheVwiLCBcIlJlYWRvbmx5TWFwXCIsIFwiUmVmbGVjdFwiLCBcIlN0cmluZ1wiXSlcbn0pXG5cbi8qKlxuICogVmFsaWRhdGVzIGFuIGlkZW50aWZpZXIgYWdhaW5zdCB0aGUgdGFyZ2V0IGJhY2tlbmQncyBkZWxpYmVyYXRlbHkgbmFycm93IGxleGljYWwgY29udHJhY3QuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLkJhY2tlbmRMYW5ndWFnZX0gbGFuZ3VhZ2UgLSBUYXJnZXQgbGFuZ3VhZ2UuXG4gKiBAcGFyYW0ge3Vua25vd259IG5hbWUgLSBDYW5kaWRhdGUgc2VtYW50aWMgaWRlbnRpZmllci5cbiAqIEBwYXJhbSB7c3RyaW5nfSByb2xlIC0gSWRlbnRpZmllciByb2xlIGZvciBkaWFnbm9zdGljcy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuU291cmNlTG9jYXRpb24gfCB1bmRlZmluZWR9IGxvY2F0aW9uIC0gT3JpZ2luYXRpbmcgbG9jYXRpb24uXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlVGFyZ2V0SWRlbnRpZmllcihsYW5ndWFnZSwgbmFtZSwgcm9sZSwgbG9jYXRpb24pIHtcbiAgaWYgKHR5cGVvZiBuYW1lICE9IFwic3RyaW5nXCIpIHVuc3VwcG9ydGVkQ2FwYWJpbGl0eShsYW5ndWFnZSwgYCR7cm9sZX0gaWRlbnRpZmllcmAsIGxvY2F0aW9uKVxuXG4gIGNvbnN0IHJlc2VydmVkTmFtZSA9IGxhbmd1YWdlID09IFwicGhwXCIgPyBuYW1lLnRvTG93ZXJDYXNlKCkgOiBuYW1lXG4gIGNvbnN0IHN5bnRheExhbmd1YWdlID0gbGFuZ3VhZ2UgPT0gXCJpb3NcIiA/IFwic3dpZnRcIiA6IGxhbmd1YWdlXG5cbiAgaWYgKCFpZGVudGlmaWVyUGF0dGVybnNbc3ludGF4TGFuZ3VhZ2VdLnRlc3QobmFtZSkgfHwgcmVzZXJ2ZWRXb3Jkc1tzeW50YXhMYW5ndWFnZV0uaGFzKHJlc2VydmVkTmFtZSkgfHxcbiAgICBsYW5ndWFnZSA9PSBcInB5dGhvblwiICYmIG5hbWUubm9ybWFsaXplKFwiTkZLQ1wiKSAhPSBuYW1lIHx8XG4gICAgbGFuZ3VhZ2UgPT0gXCJjXCIgJiYgIWlzQ0lkZW50aWZpZXIobmFtZSkgfHxcbiAgICBsYW5ndWFnZSA9PSBcInJ1c3RcIiAmJiAhaXNSdXN0SWRlbnRpZmllcihuYW1lKSB8fFxuICAgIGxhbmd1YWdlID09IFwiemlnXCIgJiYgIWlzWmlnSWRlbnRpZmllcihuYW1lKSB8fFxuICAgIGxhbmd1YWdlID09IFwiY3BwXCIgJiYgIWlzQ3BwSWRlbnRpZmllcihuYW1lKSB8fFxuICAgIGxhbmd1YWdlID09IFwiZGFydFwiICYmICFpc0RhcnRJZGVudGlmaWVyKG5hbWUpIHx8XG4gICAgbGFuZ3VhZ2UgPT0gXCJzd2lmdFwiICYmICghaXNTd2lmdElkZW50aWZpZXIobmFtZSkgfHwgbmFtZS5ub3JtYWxpemUoXCJORkNcIikgIT0gbmFtZSkgfHxcbiAgICBsYW5ndWFnZSA9PSBcImtvdGxpblwiICYmICghaXNLb3RsaW5JZGVudGlmaWVyKG5hbWUpIHx8IG5hbWUubm9ybWFsaXplKFwiTkZDXCIpICE9IG5hbWUpKSB7XG4gICAgdW5zdXBwb3J0ZWRDYXBhYmlsaXR5KGxhbmd1YWdlLCBgJHtyb2xlfSBpZGVudGlmaWVyICcke25hbWV9J2AsIGxvY2F0aW9uKVxuICB9XG59XG5cbi8qKlxuICogUHJvdGVjdHMgdGhlIGV4YWN0IEMgaGVhZGVyIGVudmlyb25tZW50IGFuZCBpbXBsZW1lbnRhdGlvbi1yZXNlcnZlZCBuYW1lc3BhY2UgaW4gZWl0aGVyIGRpcmVjdGlvbi5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gQ2FsbGVyIGlkZW50aWZpZXIuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciB0aGUgc3BlbGxpbmcgaXMgc2FmZSBpbiB0aGUgY2Fub25pY2FsIHRyYW5zbGF0aW9uIHVuaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NJZGVudGlmaWVyKG5hbWUpIHtcbiAgcmV0dXJuIGlkZW50aWZpZXJQYXR0ZXJucy5jLnRlc3QobmFtZSkgJiYgIXJlc2VydmVkV29yZHMuYy5oYXMobmFtZSkgJiZcbiAgICAhL14oPzpzZW1hbnRpZm9sZF98U0VNQU5USUZPTERffFNlbWFudGlmb2xkfGF0b21pY198SU5UWzAtOV9BLVpdfFVJTlRbMC05X0EtWl18SU5UTUFYX3xVSU5UTUFYX3xTSVpFX3xQVFJESUZGX3xTSUdfQVRPTUlDX3xXQ0hBUl98V0lOVF98Q0hBUl98U0NIQVJffFVDSEFSX3xTSFJUX3xVU0hSVF98TE9OR198VUxPTkdffExMT05HX3xVTExPTkdfKS91LnRlc3QobmFtZSkgJiZcbiAgICAhL14oPzp1P2ludCg/Ojh8MTZ8MzJ8NjR8bWF4fHB0cnxfbGVhc3RbMC05XSt8X2Zhc3RbMC05XSspX3QpJC91LnRlc3QobmFtZSlcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSBiaW5kaW5nIGlkZW50aWZpZXIgYWdhaW5zdCB0YXJnZXQgcmVzdHJpY3Rpb25zIGJleW9uZCBnZW5lcmFsIGlkZW50aWZpZXIgc3ludGF4LlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5CYWNrZW5kTGFuZ3VhZ2V9IGxhbmd1YWdlIC0gVGFyZ2V0IGxhbmd1YWdlLlxuICogQHBhcmFtIHt1bmtub3dufSBuYW1lIC0gQ2FuZGlkYXRlIHNlbWFudGljIGlkZW50aWZpZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gcm9sZSAtIEJpbmRpbmcgcm9sZSBmb3IgZGlhZ25vc3RpY3MuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLlNvdXJjZUxvY2F0aW9uIHwgdW5kZWZpbmVkfSBsb2NhdGlvbiAtIE9yaWdpbmF0aW5nIGxvY2F0aW9uLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVRhcmdldEJpbmRpbmdJZGVudGlmaWVyKGxhbmd1YWdlLCBuYW1lLCByb2xlLCBsb2NhdGlvbikge1xuICB2YWxpZGF0ZVRhcmdldElkZW50aWZpZXIobGFuZ3VhZ2UsIG5hbWUsIHJvbGUsIGxvY2F0aW9uKVxuXG4gIGNvbnN0IGludmFsaWRUeXBlU2NyaXB0QmluZGluZyA9IGxhbmd1YWdlID09IFwidHlwZXNjcmlwdFwiICYmIChuYW1lID09IFwiYXJndW1lbnRzXCIgfHwgbmFtZSA9PSBcImV2YWxcIilcbiAgY29uc3QgaW52YWxpZFBocFZhcmlhYmxlID0gbGFuZ3VhZ2UgPT0gXCJwaHBcIiAmJiB0eXBlb2YgbmFtZSA9PSBcInN0cmluZ1wiICYmXG4gICAgKChyb2xlID09IFwicGFyYW1ldGVyXCIgJiYgcGhwSW52YWxpZFBhcmFtZXRlckJpbmRpbmdzLmhhcyhuYW1lKSkgfHxcbiAgICAgICgocm9sZSA9PSBcImxvY2FsXCIgfHwgcm9sZSA9PSBcImFzc2lnbm1lbnQgdGFyZ2V0XCIgfHwgcm9sZSA9PSBcImNhdGNoIGJpbmRpbmdcIikgJiYgcGhwSW52YWxpZEFzc2lnbmVkQmluZGluZ3MuaGFzKG5hbWUpKSlcbiAgY29uc3QgaW52YWxpZFJ1YnlCaW5kaW5nID0gbGFuZ3VhZ2UgPT0gXCJydWJ5XCIgJiYgdHlwZW9mIG5hbWUgPT0gXCJzdHJpbmdcIiAmJiAvXl9bMS05XSQvdS50ZXN0KG5hbWUpXG5cbiAgaWYgKGludmFsaWRUeXBlU2NyaXB0QmluZGluZyB8fCBpbnZhbGlkUGhwVmFyaWFibGUgfHwgaW52YWxpZFJ1YnlCaW5kaW5nKSB7XG4gICAgdW5zdXBwb3J0ZWRDYXBhYmlsaXR5KGxhbmd1YWdlLCBgJHtyb2xlfSBpZGVudGlmaWVyICcke25hbWV9J2AsIGxvY2F0aW9uKVxuICB9XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgbm9taW5hbCByZWNvcmQvdHlwZSBkZWNsYXJhdGlvbiBuYW1lIGZvciB0aGUgb3JpZ2luYWwtZml2ZSB0YXJnZXRzLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5CYWNrZW5kTGFuZ3VhZ2V9IGxhbmd1YWdlIC0gQmFja2VuZCBsYW5ndWFnZS5cbiAqIEBwYXJhbSB7dW5rbm93bn0gbmFtZSAtIENhbmRpZGF0ZSB0eXBlIG5hbWUuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLlNvdXJjZUxvY2F0aW9uIHwgdW5kZWZpbmVkfSBsb2NhdGlvbiAtIERlY2xhcmF0aW9uIGxvY2F0aW9uLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVRhcmdldFR5cGVJZGVudGlmaWVyKGxhbmd1YWdlLCBuYW1lLCBsb2NhdGlvbikge1xuICBpZiAodHlwZW9mIG5hbWUgIT0gXCJzdHJpbmdcIiB8fCAhL15bQS1aXVtBLVphLXowLTlfXSokL3UudGVzdChuYW1lKSkge1xuICAgIHVuc3VwcG9ydGVkQ2FwYWJpbGl0eShsYW5ndWFnZSwgYHJlY29yZCB0eXBlIGlkZW50aWZpZXIgJyR7U3RyaW5nKG5hbWUpfSdgLCBsb2NhdGlvbilcbiAgfVxuICBjb25zdCByZXNlcnZlZE5hbWUgPSBsYW5ndWFnZSA9PSBcInBocFwiID8gbmFtZS50b0xvd2VyQ2FzZSgpIDogbmFtZVxuICBjb25zdCBzeW50YXhMYW5ndWFnZSA9IGxhbmd1YWdlID09IFwiaW9zXCIgPyBcInN3aWZ0XCIgOiBsYW5ndWFnZVxuXG4gIGlmIChyZXNlcnZlZFdvcmRzW3N5bnRheExhbmd1YWdlXS5oYXMocmVzZXJ2ZWROYW1lKSB8fCByZXNlcnZlZFR5cGVOYW1lc1tsYW5ndWFnZV0/LmhhcyhyZXNlcnZlZE5hbWUpKSB7XG4gICAgdW5zdXBwb3J0ZWRDYXBhYmlsaXR5KGxhbmd1YWdlLCBgcmVjb3JkIHR5cGUgaWRlbnRpZmllciAnJHtuYW1lfSdgLCBsb2NhdGlvbilcbiAgfVxufVxuXG4vKipcbiAqIFByb3RlY3RzIEMrKyBrZXl3b3JkcywgdGhlIGFjdHVhbCBpbmNsdWRlZCBDIGxpYnJhcnkgbmFtZXMvbWFjcm9zIGFuZCB0aGUgc2NhZmZvbGQgbmFtZXNwYWNlLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBDYWxsZXIgc2NhbGFyIGJpbmRpbmcgb3IgZnVuY3Rpb24gbmFtZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIGEgY2Fub25pY2FsIEMrKzIwIHRyYW5zbGF0aW9uIHVuaXQgY2FuIHJlcHJlc2VudCB0aGUgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ3BwSWRlbnRpZmllcihuYW1lKSB7XG4gIHJldHVybiBpc0NJZGVudGlmaWVyKG5hbWUpICYmICFuYW1lLmluY2x1ZGVzKFwiX19cIikgJiYgIXJlc2VydmVkV29yZHMuY3BwLmhhcyhuYW1lKVxufVxuXG4vKipcbiAqIFByb3RlY3RzIHRoZSBlZGl0aW9uLTIwMjEgc2NhbGFyLCBlbnRyeSBhbmQgZXhhY3QgaGVscGVyIGVudmlyb25tZW50IGluIGJvdGggZGlyZWN0aW9ucy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gQ2FsbGVyLW93bmVkIGZ1bmN0aW9uIG9yIGJpbmRpbmcgbmFtZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIG9yZGluYXJ5IFJ1c3Qgc3ludGF4IGNhbiByZXByZXNlbnQgdGhlIG5hbWUgc2FmZWx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSdXN0SWRlbnRpZmllcihuYW1lKSB7XG4gIHJldHVybiBpZGVudGlmaWVyUGF0dGVybnMucnVzdC50ZXN0KG5hbWUpICYmICFyZXNlcnZlZFdvcmRzLnJ1c3QuaGFzKG5hbWUpICYmICFuYW1lLnN0YXJ0c1dpdGgoXCJzZW1hbnRpZm9sZF9cIilcbn1cblxuLyoqXG4gKiBQcm90ZWN0cyBaaWcga2V5d29yZHMsIHNjYWxhciBuYW1lcywgZW50cnkgcGx1bWJpbmcsIGJ1aWx0aW5zLCBhbmQgdGhlIHN1cHBvcnQgbmFtZXNwYWNlLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBDYWxsZXItb3duZWQgZnVuY3Rpb24gb3IgYmluZGluZyBuYW1lLlxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgb3JkaW5hcnkgdW5xdW90ZWQgWmlnIHN5bnRheCBjYW4gcHJlc2VydmUgdGhlIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ppZ0lkZW50aWZpZXIobmFtZSkge1xuICByZXR1cm4gaWRlbnRpZmllclBhdHRlcm5zLnppZy50ZXN0KG5hbWUpICYmICFyZXNlcnZlZFdvcmRzLnppZy5oYXMobmFtZSkgJiYgIS9eW2l1XVswLTldKyQvdS50ZXN0KG5hbWUpICYmXG4gICAgIW5hbWUuc3RhcnRzV2l0aChcInNlbWFudGlmb2xkX1wiKVxufVxuXG4vKipcbiAqIFByb3RlY3RzIFN3aWZ0IGtleXdvcmRzLCBzY2FsYXIgbmFtZXMsIGVudHJ5IHBsdW1iaW5nLCBhbmQgdGFyZ2V0LW9ubHkgaGVscGVyIG5hbWVzLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBDYWxsZXItb3duZWQgZnVuY3Rpb24gb3IgYmluZGluZyBuYW1lLlxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgb3JkaW5hcnkgdW5lc2NhcGVkIFN3aWZ0IHN5bnRheCBjYW4gcHJlc2VydmUgdGhlIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1N3aWZ0SWRlbnRpZmllcihuYW1lKSB7XG4gIHJldHVybiBpZGVudGlmaWVyUGF0dGVybnMuc3dpZnQudGVzdChuYW1lKSAmJiAhcmVzZXJ2ZWRXb3Jkcy5zd2lmdC5oYXMobmFtZSkgJiYgIW5hbWUuc3RhcnRzV2l0aChcInNlbWFudGlmb2xkX1wiKVxufVxuXG4vKipcbiAqIFByb3RlY3RzIEtvdGxpbiBrZXl3b3JkcywgSlZNIHNjYWxhci9zY2FmZm9sZCBuYW1lcywgYW5kIHRhcmdldC1vbmx5IGhlbHBlciBuYW1lcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gQ2FsbGVyLW93bmVkIGZ1bmN0aW9uIG9yIGJpbmRpbmcgbmFtZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIG9yZGluYXJ5IHVuZXNjYXBlZCBLb3RsaW4gc3ludGF4IGNhbiBwcmVzZXJ2ZSB0aGUgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzS290bGluSWRlbnRpZmllcihuYW1lKSB7XG4gIHJldHVybiBpZGVudGlmaWVyUGF0dGVybnMua290bGluLnRlc3QobmFtZSkgJiYgIXJlc2VydmVkV29yZHMua290bGluLmhhcyhuYW1lKSAmJiAhbmFtZS5zdGFydHNXaXRoKFwic2VtYW50aWZvbGRfXCIpICYmXG4gICAgIW5hbWUuc3RhcnRzV2l0aChcIlNFTUFOVElGT0xEX1wiKVxufVxuXG4vKipcbiAqIFByb3RlY3RzIERhcnQga2V5d29yZHMsIFZNIHNjYWxhci9zY2FmZm9sZCBuYW1lcywgYW5kIGNvbXBpbGVyLW93bmVkIGhlbHBlcnMuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIENhbGxlci1vd25lZCBmdW5jdGlvbiBvciBiaW5kaW5nIG5hbWUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBvcmRpbmFyeSBEYXJ0IHN5bnRheCBjYW4gcHJlc2VydmUgdGhlIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0RhcnRJZGVudGlmaWVyKG5hbWUpIHtcbiAgcmV0dXJuIGlkZW50aWZpZXJQYXR0ZXJucy5kYXJ0LnRlc3QobmFtZSkgJiYgIXJlc2VydmVkV29yZHMuZGFydC5oYXMobmFtZSkgJiZcbiAgICAhbmFtZS5zdGFydHNXaXRoKFwiX3NlbWFudGlmb2xkXCIpICYmIG5hbWUubm9ybWFsaXplKFwiTkZDXCIpID09IG5hbWVcbn1cbiJdfQ==