@angular/core 8.0.0 → 8.1.0-beta.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 (191) hide show
  1. package/bundles/core-testing.umd.js +35 -9
  2. package/bundles/core-testing.umd.js.map +1 -1
  3. package/bundles/core-testing.umd.min.js +10 -10
  4. package/bundles/core-testing.umd.min.js.map +1 -1
  5. package/bundles/core.umd.js +11356 -9352
  6. package/bundles/core.umd.js.map +1 -1
  7. package/bundles/core.umd.min.js +201 -139
  8. package/bundles/core.umd.min.js.map +1 -1
  9. package/core.d.ts +1302 -404
  10. package/core.metadata.json +1 -1
  11. package/esm2015/core.js +2 -3
  12. package/esm2015/index.js +2 -2
  13. package/esm2015/public_api.js +2 -2
  14. package/esm2015/src/application_ref.js +7 -1
  15. package/esm2015/src/codegen_private_exports.js +2 -2
  16. package/esm2015/src/compiler/compiler_facade_interface.js +1 -1
  17. package/esm2015/src/core.js +4 -4
  18. package/esm2015/src/core_private_export.js +3 -1
  19. package/esm2015/src/core_render3_private_export.js +5 -3
  20. package/esm2015/src/debug/debug_node.js +4 -4
  21. package/esm2015/src/di/index.js +3 -3
  22. package/esm2015/src/di/injector.js +24 -96
  23. package/esm2015/src/di/injector_compatibility.js +103 -6
  24. package/esm2015/src/di/interface/defs.js +24 -3
  25. package/esm2015/src/di/r3_injector.js +82 -49
  26. package/esm2015/src/di/reflective_injector.js +3 -2
  27. package/esm2015/src/di.js +1 -1
  28. package/esm2015/src/i18n/locale_data.js +61 -0
  29. package/esm2015/src/i18n/locale_data_api.js +53 -0
  30. package/esm2015/src/i18n/locale_en.js +51 -0
  31. package/esm2015/src/i18n/localization.js +37 -0
  32. package/esm2015/src/linker/ng_module_factory_loader.js +4 -52
  33. package/esm2015/src/linker/ng_module_factory_registration.js +83 -0
  34. package/esm2015/src/metadata/ng_module.js +6 -1
  35. package/esm2015/src/metadata/resource_loading.js +2 -2
  36. package/esm2015/src/reflection/reflection_capabilities.js +14 -3
  37. package/esm2015/src/render3/assert.js +3 -2
  38. package/esm2015/src/render3/component.js +11 -5
  39. package/esm2015/src/render3/debug.js +23 -15
  40. package/esm2015/src/render3/definition.js +12 -2
  41. package/esm2015/src/render3/errors.js +29 -1
  42. package/esm2015/src/render3/features/inherit_definition_feature.js +51 -37
  43. package/esm2015/src/render3/fields.js +3 -1
  44. package/esm2015/src/render3/i18n.js +76 -465
  45. package/esm2015/src/render3/index.js +3 -3
  46. package/esm2015/src/render3/instructions/all.js +9 -4
  47. package/esm2015/src/render3/instructions/attribute.js +28 -0
  48. package/esm2015/src/render3/instructions/attribute_interpolation.js +376 -0
  49. package/esm2015/src/render3/instructions/container.js +17 -16
  50. package/esm2015/src/render3/instructions/element.js +57 -35
  51. package/esm2015/src/render3/instructions/element_container.js +9 -8
  52. package/esm2015/src/render3/instructions/embedded_view.js +9 -12
  53. package/esm2015/src/render3/instructions/interpolation.js +375 -0
  54. package/esm2015/src/render3/instructions/listener.js +3 -2
  55. package/esm2015/src/render3/instructions/projection.js +6 -6
  56. package/esm2015/src/render3/instructions/property.js +10 -4
  57. package/esm2015/src/render3/instructions/property_interpolation.js +49 -382
  58. package/esm2015/src/render3/instructions/shared.js +82 -118
  59. package/esm2015/src/render3/instructions/styling.js +189 -236
  60. package/esm2015/src/render3/instructions/text.js +8 -7
  61. package/esm2015/src/render3/instructions/text_interpolation.js +357 -0
  62. package/esm2015/src/render3/interfaces/container.js +9 -5
  63. package/esm2015/src/render3/interfaces/definition.js +12 -6
  64. package/esm2015/src/render3/interfaces/node.js +20 -8
  65. package/esm2015/src/render3/interfaces/styling.js +16 -15
  66. package/esm2015/src/render3/interfaces/view.js +2 -2
  67. package/esm2015/src/render3/jit/directive.js +14 -5
  68. package/esm2015/src/render3/jit/environment.js +30 -15
  69. package/esm2015/src/render3/jit/module.js +38 -19
  70. package/esm2015/src/render3/ng_module_ref.js +39 -3
  71. package/esm2015/src/render3/node_manipulation.js +45 -43
  72. package/esm2015/src/render3/node_selector_matcher.js +14 -13
  73. package/esm2015/src/render3/query.js +77 -61
  74. package/esm2015/src/render3/state.js +33 -6
  75. package/esm2015/src/render3/styling/class_and_style_bindings.js +91 -79
  76. package/esm2015/src/render3/styling/host_instructions_queue.js +8 -5
  77. package/esm2015/src/render3/styling/shared.js +2 -2
  78. package/esm2015/src/render3/styling/util.js +2 -2
  79. package/esm2015/src/render3/styling_next/bindings.js +602 -0
  80. package/esm2015/src/render3/styling_next/instructions.js +366 -0
  81. package/esm2015/src/render3/styling_next/interfaces.js +374 -0
  82. package/esm2015/src/render3/styling_next/map_based_bindings.js +408 -0
  83. package/esm2015/src/render3/styling_next/state.js +51 -0
  84. package/esm2015/src/render3/styling_next/styling_debug.js +291 -0
  85. package/esm2015/src/render3/styling_next/util.js +259 -0
  86. package/esm2015/src/render3/util/attrs_utils.js +4 -3
  87. package/esm2015/src/render3/util/debug_utils.js +18 -0
  88. package/esm2015/src/render3/util/view_traversal_utils.js +2 -2
  89. package/esm2015/src/render3/view_engine_compatibility.js +24 -10
  90. package/esm2015/src/sanitization/sanitization.js +17 -7
  91. package/esm2015/src/sanitization/style_sanitizer.js +11 -1
  92. package/esm2015/src/util/ng_dev_mode.js +7 -3
  93. package/esm2015/src/version.js +1 -1
  94. package/esm2015/src/view/ng_module.js +3 -3
  95. package/esm2015/src/view/util.js +2 -2
  96. package/esm2015/testing/src/r3_test_bed_compiler.js +44 -12
  97. package/esm5/core.js +2 -3
  98. package/esm5/src/application_ref.js +6 -1
  99. package/esm5/src/codegen_private_exports.js +2 -2
  100. package/esm5/src/compiler/compiler_facade_interface.js +1 -1
  101. package/esm5/src/core_private_export.js +3 -1
  102. package/esm5/src/core_render3_private_export.js +5 -3
  103. package/esm5/src/debug/debug_node.js +4 -4
  104. package/esm5/src/di/index.js +3 -3
  105. package/esm5/src/di/injector.js +14 -74
  106. package/esm5/src/di/injector_compatibility.js +77 -6
  107. package/esm5/src/di/interface/defs.js +24 -3
  108. package/esm5/src/di/r3_injector.js +60 -37
  109. package/esm5/src/di/reflective_injector.js +3 -2
  110. package/esm5/src/i18n/locale_data.js +38 -0
  111. package/esm5/src/i18n/locale_data_api.js +46 -0
  112. package/esm5/src/i18n/locale_en.js +39 -0
  113. package/esm5/src/i18n/localization.js +29 -0
  114. package/esm5/src/linker/ng_module_factory_loader.js +4 -32
  115. package/esm5/src/linker/ng_module_factory_registration.js +50 -0
  116. package/esm5/src/metadata/ng_module.js +1 -1
  117. package/esm5/src/metadata/resource_loading.js +2 -2
  118. package/esm5/src/reflection/reflection_capabilities.js +14 -3
  119. package/esm5/src/render3/assert.js +2 -1
  120. package/esm5/src/render3/component.js +10 -4
  121. package/esm5/src/render3/debug.js +17 -10
  122. package/esm5/src/render3/definition.js +8 -2
  123. package/esm5/src/render3/errors.js +14 -1
  124. package/esm5/src/render3/features/inherit_definition_feature.js +41 -36
  125. package/esm5/src/render3/fields.js +2 -1
  126. package/esm5/src/render3/i18n.js +67 -437
  127. package/esm5/src/render3/index.js +3 -3
  128. package/esm5/src/render3/instructions/all.js +6 -1
  129. package/esm5/src/render3/instructions/attribute.js +22 -0
  130. package/esm5/src/render3/instructions/attribute_interpolation.js +346 -0
  131. package/esm5/src/render3/instructions/container.js +16 -15
  132. package/esm5/src/render3/instructions/element.js +43 -32
  133. package/esm5/src/render3/instructions/element_container.js +9 -8
  134. package/esm5/src/render3/instructions/embedded_view.js +8 -11
  135. package/esm5/src/render3/instructions/interpolation.js +243 -0
  136. package/esm5/src/render3/instructions/listener.js +3 -2
  137. package/esm5/src/render3/instructions/projection.js +6 -6
  138. package/esm5/src/render3/instructions/property.js +10 -4
  139. package/esm5/src/render3/instructions/property_interpolation.js +40 -254
  140. package/esm5/src/render3/instructions/shared.js +70 -105
  141. package/esm5/src/render3/instructions/styling.js +167 -209
  142. package/esm5/src/render3/instructions/text.js +8 -7
  143. package/esm5/src/render3/instructions/text_interpolation.js +264 -0
  144. package/esm5/src/render3/interfaces/container.js +8 -2
  145. package/esm5/src/render3/interfaces/definition.js +1 -1
  146. package/esm5/src/render3/interfaces/node.js +1 -8
  147. package/esm5/src/render3/interfaces/styling.js +2 -2
  148. package/esm5/src/render3/interfaces/view.js +1 -1
  149. package/esm5/src/render3/jit/directive.js +12 -5
  150. package/esm5/src/render3/jit/environment.js +30 -15
  151. package/esm5/src/render3/jit/module.js +23 -18
  152. package/esm5/src/render3/ng_module_ref.js +37 -3
  153. package/esm5/src/render3/node_manipulation.js +39 -38
  154. package/esm5/src/render3/node_selector_matcher.js +14 -13
  155. package/esm5/src/render3/query.js +75 -53
  156. package/esm5/src/render3/state.js +29 -5
  157. package/esm5/src/render3/styling/class_and_style_bindings.js +79 -65
  158. package/esm5/src/render3/styling/host_instructions_queue.js +6 -3
  159. package/esm5/src/render3/styling/shared.js +2 -2
  160. package/esm5/src/render3/styling/util.js +2 -2
  161. package/esm5/src/render3/styling_next/bindings.js +446 -0
  162. package/esm5/src/render3/styling_next/instructions.js +277 -0
  163. package/esm5/src/render3/styling_next/interfaces.js +1 -0
  164. package/esm5/src/render3/styling_next/map_based_bindings.js +324 -0
  165. package/esm5/src/render3/styling_next/state.js +23 -0
  166. package/esm5/src/render3/styling_next/styling_debug.js +130 -0
  167. package/esm5/src/render3/styling_next/util.js +147 -0
  168. package/esm5/src/render3/util/attrs_utils.js +4 -3
  169. package/esm5/src/render3/util/debug_utils.js +11 -0
  170. package/esm5/src/render3/util/view_traversal_utils.js +2 -2
  171. package/esm5/src/render3/view_engine_compatibility.js +23 -10
  172. package/esm5/src/sanitization/sanitization.js +14 -6
  173. package/esm5/src/sanitization/style_sanitizer.js +1 -1
  174. package/esm5/src/util/ng_dev_mode.js +7 -3
  175. package/esm5/src/version.js +1 -1
  176. package/esm5/src/view/ng_module.js +3 -3
  177. package/esm5/src/view/util.js +2 -2
  178. package/esm5/testing/src/r3_test_bed_compiler.js +37 -11
  179. package/fesm2015/core.js +13481 -10733
  180. package/fesm2015/core.js.map +1 -1
  181. package/fesm2015/testing.js +43 -11
  182. package/fesm2015/testing.js.map +1 -1
  183. package/fesm5/core.js +11255 -9269
  184. package/fesm5/core.js.map +1 -1
  185. package/fesm5/testing.js +36 -10
  186. package/fesm5/testing.js.map +1 -1
  187. package/package.json +1 -1
  188. package/schematics/migrations/template-var-assignment/index.js +2 -2
  189. package/src/r3_symbols.d.ts +5 -1
  190. package/testing/testing.d.ts +1 -1
  191. package/testing.d.ts +1 -1
@@ -182,24 +182,31 @@ function extractBaseDefMetadata(type) {
182
182
  var queries = extractQueriesMetadata(type, propMetadata, isContentQuery);
183
183
  var inputs;
184
184
  var outputs;
185
+ // We only need to know whether there are any HostListener or HostBinding
186
+ // decorators present, the parsing logic is in the compiler already.
187
+ var hasHostDecorators = false;
185
188
  var _loop_1 = function (field) {
186
189
  propMetadata[field].forEach(function (ann) {
187
- if (ann.ngMetadataName === 'Input') {
190
+ var metadataName = ann.ngMetadataName;
191
+ if (metadataName === 'Input') {
188
192
  inputs = inputs || {};
189
193
  inputs[field] = ann.bindingPropertyName ? [ann.bindingPropertyName, field] : field;
190
194
  }
191
- else if (ann.ngMetadataName === 'Output') {
195
+ else if (metadataName === 'Output') {
192
196
  outputs = outputs || {};
193
197
  outputs[field] = ann.bindingPropertyName || field;
194
198
  }
199
+ else if (metadataName === 'HostBinding' || metadataName === 'HostListener') {
200
+ hasHostDecorators = true;
201
+ }
195
202
  });
196
203
  };
197
204
  for (var field in propMetadata) {
198
205
  _loop_1(field);
199
206
  }
200
207
  // Only generate the base def if there's any info inside it.
201
- if (inputs || outputs || viewQueries.length || queries.length) {
202
- return { inputs: inputs, outputs: outputs, viewQueries: viewQueries, queries: queries };
208
+ if (inputs || outputs || viewQueries.length || queries.length || hasHostDecorators) {
209
+ return { name: type.name, inputs: inputs, outputs: outputs, viewQueries: viewQueries, queries: queries, propMetadata: propMetadata };
203
210
  }
204
211
  return null;
205
212
  }
@@ -260,4 +267,4 @@ function isInputAnn(value) {
260
267
  function splitByComma(value) {
261
268
  return value.split(',').map(function (piece) { return piece.trim(); });
262
269
  }
263
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvcmVuZGVyMy9qaXQvZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7QUFFSCxPQUFPLEVBQTRCLGlCQUFpQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFFNUYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFDLFVBQVUsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBSWxFLE9BQU8sRUFBQyx3QkFBd0IsRUFBRSx3Q0FBd0MsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ25ILE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxVQUFVLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUMsV0FBVyxFQUFFLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNoRCxPQUFPLEVBQUMsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRTFFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRXJELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFDLHVDQUF1QyxFQUFFLDBCQUEwQixFQUFFLG1CQUFtQixFQUFDLE1BQU0sVUFBVSxDQUFDO0FBSWxIOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLElBQWUsRUFBRSxRQUFtQjtJQUNuRSxJQUFJLGNBQWMsR0FBUSxJQUFJLENBQUM7SUFDL0Is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UyxVQUFVLENBQUMsS0FBVTtJQUM1QixPQUFPLEtBQUssQ0FBQyxjQUFjLEtBQUssT0FBTyxDQUFDO0FBQzFDLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxLQUFhO0lBQ2pDLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQVosQ0FBWSxDQUFDLENBQUM7QUFDckQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtSM0RpcmVjdGl2ZU1ldGFkYXRhRmFjYWRlLCBnZXRDb21waWxlckZhY2FkZX0gZnJvbSAnLi4vLi4vY29tcGlsZXIvY29tcGlsZXJfZmFjYWRlJztcbmltcG9ydCB7UjNCYXNlTWV0YWRhdGFGYWNhZGUsIFIzQ29tcG9uZW50TWV0YWRhdGFGYWNhZGUsIFIzUXVlcnlNZXRhZGF0YUZhY2FkZX0gZnJvbSAnLi4vLi4vY29tcGlsZXIvY29tcGlsZXJfZmFjYWRlX2ludGVyZmFjZSc7XG5pbXBvcnQge3Jlc29sdmVGb3J3YXJkUmVmfSBmcm9tICcuLi8uLi9kaS9mb3J3YXJkX3JlZic7XG5pbXBvcnQge2NvbXBpbGVJbmplY3RhYmxlfSBmcm9tICcuLi8uLi9kaS9qaXQvaW5qZWN0YWJsZSc7XG5pbXBvcnQge2dldFJlZmxlY3QsIHJlZmxlY3REZXBlbmRlbmNpZXN9IGZyb20gJy4uLy4uL2RpL2ppdC91dGlsJztcbmltcG9ydCB7VHlwZX0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlL3R5cGUnO1xuaW1wb3J0IHtRdWVyeX0gZnJvbSAnLi4vLi4vbWV0YWRhdGEvZGknO1xuaW1wb3J0IHtDb21wb25lbnQsIERpcmVjdGl2ZSwgSW5wdXR9IGZyb20gJy4uLy4uL21ldGFkYXRhL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHtjb21wb25lbnROZWVkc1Jlc29sdXRpb24sIG1heWJlUXVldWVSZXNvbHV0aW9uT2ZDb21wb25lbnRSZXNvdXJjZXN9IGZyb20gJy4uLy4uL21ldGFkYXRhL3Jlc291cmNlX2xvYWRpbmcnO1xuaW1wb3J0IHtWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnLi4vLi4vbWV0YWRhdGEvdmlldyc7XG5pbXBvcnQge2dldEJhc2VEZWYsIGdldENvbXBvbmVudERlZiwgZ2V0RGlyZWN0aXZlRGVmfSBmcm9tICcuLi9kZWZpbml0aW9uJztcbmltcG9ydCB7RU1QVFlfQVJSQVksIEVNUFRZX09CSn0gZnJvbSAnLi4vZW1wdHknO1xuaW1wb3J0IHtOR19CQVNFX0RFRiwgTkdfQ09NUE9ORU5UX0RFRiwgTkdfRElSRUNUSVZFX0RFRn0gZnJvbSAnLi4vZmllbGRzJztcbmltcG9ydCB7Q29tcG9uZW50VHlwZX0gZnJvbSAnLi4vaW50ZXJmYWNlcy9kZWZpbml0aW9uJztcbmltcG9ydCB7c3RyaW5naWZ5Rm9yRXJyb3J9IGZyb20gJy4uL3V0aWwvbWlzY191dGlscyc7XG5cbmltcG9ydCB7YW5ndWxhckNvcmVFbnZ9IGZyb20gJy4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHtmbHVzaE1vZHVsZVNjb3BpbmdRdWV1ZUFzTXVjaEFzUG9zc2libGUsIHBhdGNoQ29tcG9uZW50RGVmV2l0aFNjb3BlLCB0cmFuc2l0aXZlU2NvcGVzRm9yfSBmcm9tICcuL21vZHVsZSc7XG5cblxuXG4vKipcbiAqIENvbXBpbGUgYW4gQW5ndWxhciBjb21wb25lbnQgYWNjb3JkaW5nIHRvIGl0cyBkZWNvcmF0b3IgbWV0YWRhdGEsIGFuZCBwYXRjaCB0aGUgcmVzdWx0aW5nXG4gKiBuZ0NvbXBvbmVudERlZiBvbnRvIHRoZSBjb21wb25lbnQgdHlwZS5cbiAqXG4gKiBDb21waWxhdGlvbiBtYXkgYmUgYXN5bmNocm9ub3VzIChkdWUgdG8gdGhlIG5lZWQgdG8gcmVzb2x2ZSBVUkxzIGZvciB0aGUgY29tcG9uZW50IHRlbXBsYXRlIG9yXG4gKiBvdGhlciByZXNvdXJjZXMsIGZvciBleGFtcGxlKS4gSW4gdGhlIGV2ZW50IHRoYXQgY29tcGlsYXRpb24gaXMgbm90IGltbWVkaWF0ZSwgYGNvbXBpbGVDb21wb25lbnRgXG4gKiB3aWxsIGVucXVldWUgcmVzb3VyY2UgcmVzb2x1dGlvbiBpbnRvIGEgZ2xvYmFsIHF1ZXVlIGFuZCB3aWxsIGZhaWwgdG8gcmV0dXJuIHRoZSBgbmdDb21wb25lbnREZWZgXG4gKiB1bnRpbCB0aGUgZ2xvYmFsIHF1ZXVlIGhhcyBiZWVuIHJlc29sdmVkIHdpdGggYSBjYWxsIHRvIGByZXNvbHZlQ29tcG9uZW50UmVzb3VyY2VzYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGVDb21wb25lbnQodHlwZTogVHlwZTxhbnk+LCBtZXRhZGF0YTogQ29tcG9uZW50KTogdm9pZCB7XG4gIGxldCBuZ0NvbXBvbmVudERlZjogYW55ID0gbnVsbDtcbiAgLy8gTWV0YWRhdGEgbWF5IGhhdmUgcmVzb3VyY2VzIHdoaWNoIG5lZWQgdG8gYmUgcmVzb2x2ZWQuXG4gIG1heWJlUXVldWVSZXNvbHV0aW9uT2ZDb21wb25lbnRSZXNvdXJjZXModHlwZSwgbWV0YWRhdGEpO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodHlwZSwgTkdfQ09NUE9ORU5UX0RFRiwge1xuICAgIGdldDogKCkgPT4ge1xuICAgICAgY29uc3QgY29tcGlsZXIgPSBnZXRDb21waWxlckZhY2FkZSgpO1xuICAgICAgaWYgKG5nQ29tcG9uZW50RGVmID09PSBudWxsKSB7XG4gICAgICAgIGlmIChjb21wb25lbnROZWVkc1Jlc29sdXRpb24obWV0YWRhdGEpKSB7XG4gICAgICAgICAgY29uc3QgZXJyb3IgPSBbYENvbXBvbmVudCAnJHt0eXBlLm5hbWV9JyBpcyBub3QgcmVzb2x2ZWQ6YF07XG4gICAgICAgICAgaWYgKG1ldGFkYXRhLnRlbXBsYXRlVXJsKSB7XG4gICAgICAgICAgICBlcnJvci5wdXNoKGAgLSB0ZW1wbGF0ZVVybDogJHttZXRhZGF0YS50ZW1wbGF0ZVVybH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG1ldGFkYXRhLnN0eWxlVXJscyAmJiBtZXRhZGF0YS5zdHlsZVVybHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBlcnJvci5wdXNoKGAgLSBzdHlsZVVybHM6ICR7SlNPTi5zdHJpbmdpZnkobWV0YWRhdGEuc3R5bGVVcmxzKX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZXJyb3IucHVzaChgRGlkIHlvdSBydW4gYW5kIHdhaXQgZm9yICdyZXNvbHZlQ29tcG9uZW50UmVzb3VyY2VzKCknP2ApO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5qb2luKCdcXG4nKSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0ZW1wbGF0ZVVybCA9IG1ldGFkYXRhLnRlbXBsYXRlVXJsIHx8IGBuZzovLy8ke3R5cGUubmFtZX0vdGVtcGxhdGUuaHRtbGA7XG4gICAgICAgIGNvbnN0IG1ldGE6IFIzQ29tcG9uZW50TWV0YWRhdGFGYWNhZGUgPSB7XG4gICAgICAgICAgLi4uZGlyZWN0aXZlTWV0YWRhdGEodHlwZSwgbWV0YWRhdGEpLFxuICAgICAgICAgIHR5cGVTb3VyY2VTcGFuOiBjb21waWxlci5jcmVhdGVQYXJzZVNvdXJjZVNwYW4oJ0NvbXBvbmVudCcsIHR5cGUubmFtZSwgdGVtcGxhdGVVcmwpLFxuICAgICAgICAgIHRlbXBsYXRlOiBtZXRhZGF0YS50ZW1wbGF0ZSB8fCAnJyxcbiAgICAgICAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBtZXRhZGF0YS5wcmVzZXJ2ZVdoaXRlc3BhY2VzIHx8IGZhbHNlLFxuICAgICAgICAgIHN0eWxlczogbWV0YWRhdGEuc3R5bGVzIHx8IEVNUFRZX0FSUkFZLFxuICAgICAgICAgIGFuaW1hdGlvbnM6IG1ldGFkYXRhLmFuaW1hdGlvbnMsXG4gICAgICAgICAgZGlyZWN0aXZlczogW10sXG4gICAgICAgICAgY2hhbmdlRGV0ZWN0aW9uOiBtZXRhZGF0YS5jaGFuZ2VEZXRlY3Rpb24sXG4gICAgICAgICAgcGlwZXM6IG5ldyBNYXAoKSxcbiAgICAgICAgICBlbmNhcHN1bGF0aW9uOiBtZXRhZGF0YS5lbmNhcHN1bGF0aW9uIHx8IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkLFxuICAgICAgICAgIGludGVycG9sYXRpb246IG1ldGFkYXRhLmludGVycG9sYXRpb24sXG4gICAgICAgICAgdmlld1Byb3ZpZGVyczogbWV0YWRhdGEudmlld1Byb3ZpZGVycyB8fCBudWxsLFxuICAgICAgICB9O1xuICAgICAgICBpZiAobWV0YS51c2VzSW5oZXJpdGFuY2UpIHtcbiAgICAgICAgICBhZGRCYXNlRGVmVG9VbmRlY29yYXRlZFBhcmVudHModHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgbmdDb21wb25lbnREZWYgPSBjb21waWxlci5jb21waWxlQ29tcG9uZW50KGFuZ3VsYXJDb3JlRW52LCB0ZW1wbGF0ZVVybCwgbWV0YSk7XG5cbiAgICAgICAgLy8gV2hlbiBOZ01vZHVsZSBkZWNvcmF0b3IgZXhlY3V0ZWQsIHdlIGVucXVldWVkIHRoZSBtb2R1bGUgZGVmaW5pdGlvbiBzdWNoIHRoYXRcbiAgICAgICAgLy8gaXQgd291bGQgb25seSBkZXF1ZXVlIGFuZCBhZGQgaXRzZWxmIGFzIG1vZHVsZSBzY29wZSB0byBhbGwgb2YgaXRzIGRlY2xhcmF0aW9ucyxcbiAgICAgICAgLy8gYnV0IG9ubHkgaWYgIGlmIGFsbCBvZiBpdHMgZGVjbGFyYXRpb25zIGhhZCByZXNvbHZlZC4gVGhpcyBjYWxsIHJ1bnMgdGhlIGNoZWNrXG4gICAgICAgIC8vIHRvIHNlZSBpZiBhbnkgbW9kdWxlcyB0aGF0IGFyZSBpbiB0aGUgcXVldWUgY2FuIGJlIGRlcXVldWVkIGFuZCBhZGQgc2NvcGUgdG9cbiAgICAgICAgLy8gdGhlaXIgZGVjbGFyYXRpb25zLlxuICAgICAgICBmbHVzaE1vZHVsZVNjb3BpbmdRdWV1ZUFzTXVjaEFzUG9zc2libGUoKTtcblxuICAgICAgICAvLyBJZiBjb21wb25lbnQgY29tcGlsYXRpb24gaXMgYXN5bmMsIHRoZW4gdGhlIEBOZ01vZHVsZSBhbm5vdGF0aW9uIHdoaWNoIGRlY2xhcmVzIHRoZVxuICAgICAgICAvLyBjb21wb25lbnQgbWF5IGV4ZWN1dGUgYW5kIHNldCBhbiBuZ1NlbGVjdG9yU2NvcGUgcHJvcGVydHkgb24gdGhlIGNvbXBvbmVudCB0eXBlLiBUaGlzXG4gICAgICAgIC8vIGFsbG93cyB0aGUgY29tcG9uZW50IHRvIHBhdGNoIGl0c2VsZiB3aXRoIGRpcmVjdGl2ZURlZnMgZnJvbSB0aGUgbW9kdWxlIGFmdGVyIGl0XG4gICAgICAgIC8vIGZpbmlzaGVzIGNvbXBpbGluZy5cbiAgICAgICAgaWYgKGhhc1NlbGVjdG9yU2NvcGUodHlwZSkpIHtcbiAgICAgICAgICBjb25zdCBzY29wZXMgPSB0cmFuc2l0aXZlU2NvcGVzRm9yKHR5cGUubmdTZWxlY3RvclNjb3BlKTtcbiAgICAgICAgICBwYXRjaENvbXBvbmVudERlZldpdGhTY29wZShuZ0NvbXBvbmVudERlZiwgc2NvcGVzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5nQ29tcG9uZW50RGVmO1xuICAgIH0sXG4gICAgLy8gTWFrZSB0aGUgcHJvcGVydHkgY29uZmlndXJhYmxlIGluIGRldiBtb2RlIHRvIGFsbG93IG92ZXJyaWRpbmcgaW4gdGVzdHNcbiAgICBjb25maWd1cmFibGU6ICEhbmdEZXZNb2RlLFxuICB9KTtcblxuXG4gIC8vIEFkZCBuZ0luamVjdGFibGVEZWYgc28gY29tcG9uZW50cyBhcmUgcmVhY2hhYmxlIHRocm91Z2ggdGhlIG1vZHVsZSBpbmplY3RvciBieSBkZWZhdWx0XG4gIC8vIFRoaXMgaXMgbW9zdGx5IHRvIHN1cHBvcnQgaW5qZWN0aW5nIGNvbXBvbmVudHMgaW4gdGVzdHMuIEluIHJlYWwgYXBwbGljYXRpb24gY29kZSxcbiAgLy8gY29tcG9uZW50cyBzaG91bGQgYmUgcmV0cmlldmVkIHRocm91Z2ggdGhlIG5vZGUgaW5qZWN0b3IsIHNvIHRoaXMgaXNuJ3QgYSBwcm9ibGVtLlxuICBjb21waWxlSW5qZWN0YWJsZSh0eXBlKTtcbn1cblxuZnVuY3Rpb24gaGFzU2VsZWN0b3JTY29wZTxUPihjb21wb25lbnQ6IFR5cGU8VD4pOiBjb21wb25lbnQgaXMgVHlwZTxUPiZcbiAgICB7bmdTZWxlY3RvclNjb3BlOiBUeXBlPGFueT59IHtcbiAgcmV0dXJuIChjb21wb25lbnQgYXN7bmdTZWxlY3RvclNjb3BlPzogYW55fSkubmdTZWxlY3RvclNjb3BlICE9PSB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQ29tcGlsZSBhbiBBbmd1bGFyIGRpcmVjdGl2ZSBhY2NvcmRpbmcgdG8gaXRzIGRlY29yYXRvciBtZXRhZGF0YSwgYW5kIHBhdGNoIHRoZSByZXN1bHRpbmdcbiAqIG5nRGlyZWN0aXZlRGVmIG9udG8gdGhlIGNvbXBvbmVudCB0eXBlLlxuICpcbiAqIEluIHRoZSBldmVudCB0aGF0IGNvbXBpbGF0aW9uIGlzIG5vdCBpbW1lZGlhdGUsIGBjb21waWxlRGlyZWN0aXZlYCB3aWxsIHJldHVybiBhIGBQcm9taXNlYCB3aGljaFxuICogd2lsbCByZXNvbHZlIHdoZW4gY29tcGlsYXRpb24gY29tcGxldGVzIGFuZCB0aGUgZGlyZWN0aXZlIGJlY29tZXMgdXNhYmxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZURpcmVjdGl2ZSh0eXBlOiBUeXBlPGFueT4sIGRpcmVjdGl2ZTogRGlyZWN0aXZlKTogdm9pZCB7XG4gIGxldCBuZ0RpcmVjdGl2ZURlZjogYW55ID0gbnVsbDtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHR5cGUsIE5HX0RJUkVDVElWRV9ERUYsIHtcbiAgICBnZXQ6ICgpID0+IHtcbiAgICAgIGlmIChuZ0RpcmVjdGl2ZURlZiA9PT0gbnVsbCkge1xuICAgICAgICBjb25zdCBuYW1lID0gdHlwZSAmJiB0eXBlLm5hbWU7XG4gICAgICAgIGNvbnN0IHNvdXJjZU1hcFVybCA9IGBuZzovLy8ke25hbWV9L25nRGlyZWN0aXZlRGVmLmpzYDtcbiAgICAgICAgY29uc3QgY29tcGlsZXIgPSBnZXRDb21waWxlckZhY2FkZSgpO1xuICAgICAgICBjb25zdCBmYWNhZGUgPSBkaXJlY3RpdmVNZXRhZGF0YSh0eXBlIGFzIENvbXBvbmVudFR5cGU8YW55PiwgZGlyZWN0aXZlKTtcbiAgICAgICAgZmFjYWRlLnR5cGVTb3VyY2VTcGFuID0gY29tcGlsZXIuY3JlYXRlUGFyc2VTb3VyY2VTcGFuKCdEaXJlY3RpdmUnLCBuYW1lLCBzb3VyY2VNYXBVcmwpO1xuICAgICAgICBpZiAoZmFjYWRlLnVzZXNJbmhlcml0YW5jZSkge1xuICAgICAgICAgIGFkZEJhc2VEZWZUb1VuZGVjb3JhdGVkUGFyZW50cyh0eXBlKTtcbiAgICAgICAgfVxuICAgICAgICBuZ0RpcmVjdGl2ZURlZiA9IGNvbXBpbGVyLmNvbXBpbGVEaXJlY3RpdmUoYW5ndWxhckNvcmVFbnYsIHNvdXJjZU1hcFVybCwgZmFjYWRlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZ0RpcmVjdGl2ZURlZjtcbiAgICB9LFxuICAgIC8vIE1ha2UgdGhlIHByb3BlcnR5IGNvbmZpZ3VyYWJsZSBpbiBkZXYgbW9kZSB0byBhbGxvdyBvdmVycmlkaW5nIGluIHRlc3RzXG4gICAgY29uZmlndXJhYmxlOiAhIW5nRGV2TW9kZSxcbiAgfSk7XG5cbiAgLy8gQWRkIG5nSW5qZWN0YWJsZURlZiBzbyBkaXJlY3RpdmVzIGFyZSByZWFjaGFibGUgdGhyb3VnaCB0aGUgbW9kdWxlIGluamVjdG9yIGJ5IGRlZmF1bHRcbiAgLy8gVGhpcyBpcyBtb3N0bHkgdG8gc3VwcG9ydCBpbmplY3RpbmcgZGlyZWN0aXZlcyBpbiB0ZXN0cy4gSW4gcmVhbCBhcHBsaWNhdGlvbiBjb2RlLFxuICAvLyBkaXJlY3RpdmVzIHNob3VsZCBiZSByZXRyaWV2ZWQgdGhyb3VnaCB0aGUgbm9kZSBpbmplY3Rvciwgc28gdGhpcyBpc24ndCBhIHByb2JsZW0uXG4gIGNvbXBpbGVJbmplY3RhYmxlKHR5cGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kc0RpcmVjdGx5RnJvbU9iamVjdCh0eXBlOiBUeXBlPGFueT4pOiBib29sZWFuIHtcbiAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZih0eXBlLnByb3RvdHlwZSkgPT09IE9iamVjdC5wcm90b3R5cGU7XG59XG5cbi8qKlxuICogRXh0cmFjdCB0aGUgYFIzRGlyZWN0aXZlTWV0YWRhdGFgIGZvciBhIHBhcnRpY3VsYXIgZGlyZWN0aXZlIChlaXRoZXIgYSBgRGlyZWN0aXZlYCBvciBhXG4gKiBgQ29tcG9uZW50YCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXJlY3RpdmVNZXRhZGF0YSh0eXBlOiBUeXBlPGFueT4sIG1ldGFkYXRhOiBEaXJlY3RpdmUpOiBSM0RpcmVjdGl2ZU1ldGFkYXRhRmFjYWRlIHtcbiAgLy8gUmVmbGVjdCBpbnB1dHMgYW5kIG91dHB1dHMuXG4gIGNvbnN0IHByb3BNZXRhZGF0YSA9IGdldFJlZmxlY3QoKS5vd25Qcm9wTWV0YWRhdGEodHlwZSk7XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiB0eXBlLm5hbWUsXG4gICAgdHlwZTogdHlwZSxcbiAgICB0eXBlQXJndW1lbnRDb3VudDogMCxcbiAgICBzZWxlY3RvcjogbWV0YWRhdGEuc2VsZWN0b3IgISxcbiAgICBkZXBzOiByZWZsZWN0RGVwZW5kZW5jaWVzKHR5cGUpLFxuICAgIGhvc3Q6IG1ldGFkYXRhLmhvc3QgfHwgRU1QVFlfT0JKLFxuICAgIHByb3BNZXRhZGF0YTogcHJvcE1ldGFkYXRhLFxuICAgIGlucHV0czogbWV0YWRhdGEuaW5wdXRzIHx8IEVNUFRZX0FSUkFZLFxuICAgIG91dHB1dHM6IG1ldGFkYXRhLm91dHB1dHMgfHwgRU1QVFlfQVJSQVksXG4gICAgcXVlcmllczogZXh0cmFjdFF1ZXJpZXNNZXRhZGF0YSh0eXBlLCBwcm9wTWV0YWRhdGEsIGlzQ29udGVudFF1ZXJ5KSxcbiAgICBsaWZlY3ljbGU6IHt1c2VzT25DaGFuZ2VzOiB0eXBlLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgnbmdPbkNoYW5nZXMnKX0sXG4gICAgdHlwZVNvdXJjZVNwYW46IG51bGwgISxcbiAgICB1c2VzSW5oZXJpdGFuY2U6ICFleHRlbmRzRGlyZWN0bHlGcm9tT2JqZWN0KHR5cGUpLFxuICAgIGV4cG9ydEFzOiBleHRyYWN0RXhwb3J0QXMobWV0YWRhdGEuZXhwb3J0QXMpLFxuICAgIHByb3ZpZGVyczogbWV0YWRhdGEucHJvdmlkZXJzIHx8IG51bGwsXG4gICAgdmlld1F1ZXJpZXM6IGV4dHJhY3RRdWVyaWVzTWV0YWRhdGEodHlwZSwgcHJvcE1ldGFkYXRhLCBpc1ZpZXdRdWVyeSksXG4gIH07XG59XG5cbi8qKlxuICogQWRkcyBhbiBgbmdCYXNlRGVmYCB0byBhbGwgcGFyZW50IGNsYXNzZXMgb2YgYSB0eXBlIHRoYXQgZG9uJ3QgaGF2ZSBhbiBBbmd1bGFyIGRlY29yYXRvci5cbiAqL1xuZnVuY3Rpb24gYWRkQmFzZURlZlRvVW5kZWNvcmF0ZWRQYXJlbnRzKHR5cGU6IFR5cGU8YW55Pikge1xuICBjb25zdCBvYmpQcm90b3R5cGUgPSBPYmplY3QucHJvdG90eXBlO1xuICBsZXQgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHR5cGUpO1xuXG4gIC8vIEdvIHVwIHRoZSBwcm90b3R5cGUgdW50aWwgd2UgaGl0IGBPYmplY3RgLlxuICB3aGlsZSAocGFyZW50ICYmIHBhcmVudCAhPT0gb2JqUHJvdG90eXBlKSB7XG4gICAgLy8gU2luY2UgaW5oZXJpdGFuY2Ugd29ya3MgaWYgdGhlIGNsYXNzIHdhcyBhbm5vdGF0ZWQgYWxyZWFkeSwgd2Ugb25seSBuZWVkIHRvIGFkZFxuICAgIC8vIHRoZSBiYXNlIGRlZiBpZiB0aGVyZSBhcmUgbm8gYW5ub3RhdGlvbnMgYW5kIHRoZSBiYXNlIGRlZiBoYXNuJ3QgYmVlbiBjcmVhdGVkIGFscmVhZHkuXG4gICAgaWYgKCFnZXREaXJlY3RpdmVEZWYocGFyZW50KSAmJiAhZ2V0Q29tcG9uZW50RGVmKHBhcmVudCkgJiYgIWdldEJhc2VEZWYocGFyZW50KSkge1xuICAgICAgY29uc3QgZmFjYWRlID0gZXh0cmFjdEJhc2VEZWZNZXRhZGF0YShwYXJlbnQpO1xuICAgICAgZmFjYWRlICYmIGNvbXBpbGVCYXNlKHBhcmVudCwgZmFjYWRlKTtcbiAgICB9XG4gICAgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHBhcmVudCk7XG4gIH1cbn1cblxuLyoqIENvbXBpbGVzIHRoZSBiYXNlIG1ldGFkYXRhIGludG8gYSBiYXNlIGRlZmluaXRpb24uICovXG5mdW5jdGlvbiBjb21waWxlQmFzZSh0eXBlOiBUeXBlPGFueT4sIGZhY2FkZTogUjNCYXNlTWV0YWRhdGFGYWNhZGUpOiB2b2lkIHtcbiAgbGV0IG5nQmFzZURlZjogYW55ID0gbnVsbDtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHR5cGUsIE5HX0JBU0VfREVGLCB7XG4gICAgZ2V0OiAoKSA9PiB7XG4gICAgICBpZiAobmdCYXNlRGVmID09PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSB0eXBlICYmIHR5cGUubmFtZTtcbiAgICAgICAgY29uc3Qgc291cmNlTWFwVXJsID0gYG5nOi8vJHtuYW1lfS9uZ0Jhc2VEZWYuanNgO1xuICAgICAgICBjb25zdCBjb21waWxlciA9IGdldENvbXBpbGVyRmFjYWRlKCk7XG4gICAgICAgIG5nQmFzZURlZiA9IGNvbXBpbGVyLmNvbXBpbGVCYXNlKGFuZ3VsYXJDb3JlRW52LCBzb3VyY2VNYXBVcmwsIGZhY2FkZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmdCYXNlRGVmO1xuICAgIH0sXG4gICAgLy8gTWFrZSB0aGUgcHJvcGVydHkgY29uZmlndXJhYmxlIGluIGRldiBtb2RlIHRvIGFsbG93IG92ZXJyaWRpbmcgaW4gdGVzdHNcbiAgICBjb25maWd1cmFibGU6ICEhbmdEZXZNb2RlLFxuICB9KTtcbn1cblxuLyoqIEV4dHJhY3RzIHRoZSBtZXRhZGF0YSBuZWNlc3NhcnkgdG8gY29uc3RydWN0IGFuIGBuZ0Jhc2VEZWZgIGZyb20gYSBjbGFzcy4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RCYXNlRGVmTWV0YWRhdGEodHlwZTogVHlwZTxhbnk+KTogUjNCYXNlTWV0YWRhdGFGYWNhZGV8bnVsbCB7XG4gIGNvbnN0IHByb3BNZXRhZGF0YSA9IGdldFJlZmxlY3QoKS5vd25Qcm9wTWV0YWRhdGEodHlwZSk7XG4gIGNvbnN0IHZpZXdRdWVyaWVzID0gZXh0cmFjdFF1ZXJpZXNNZXRhZGF0YSh0eXBlLCBwcm9wTWV0YWRhdGEsIGlzVmlld1F1ZXJ5KTtcbiAgY29uc3QgcXVlcmllcyA9IGV4dHJhY3RRdWVyaWVzTWV0YWRhdGEodHlwZSwgcHJvcE1ldGFkYXRhLCBpc0NvbnRlbnRRdWVyeSk7XG4gIGxldCBpbnB1dHM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBbc3RyaW5nLCBzdHJpbmddfXx1bmRlZmluZWQ7XG4gIGxldCBvdXRwdXRzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfXx1bmRlZmluZWQ7XG5cbiAgZm9yIChjb25zdCBmaWVsZCBpbiBwcm9wTWV0YWRhdGEpIHtcbiAgICBwcm9wTWV0YWRhdGFbZmllbGRdLmZvckVhY2goYW5uID0+IHtcbiAgICAgIGlmIChhbm4ubmdNZXRhZGF0YU5hbWUgPT09ICdJbnB1dCcpIHtcbiAgICAgICAgaW5wdXRzID0gaW5wdXRzIHx8IHt9O1xuICAgICAgICBpbnB1dHNbZmllbGRdID0gYW5uLmJpbmRpbmdQcm9wZXJ0eU5hbWUgPyBbYW5uLmJpbmRpbmdQcm9wZXJ0eU5hbWUsIGZpZWxkXSA6IGZpZWxkO1xuICAgICAgfSBlbHNlIGlmIChhbm4ubmdNZXRhZGF0YU5hbWUgPT09ICdPdXRwdXQnKSB7XG4gICAgICAgIG91dHB1dHMgPSBvdXRwdXRzIHx8IHt9O1xuICAgICAgICBvdXRwdXRzW2ZpZWxkXSA9IGFubi5iaW5kaW5nUHJvcGVydHlOYW1lIHx8IGZpZWxkO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gT25seSBnZW5lcmF0ZSB0aGUgYmFzZSBkZWYgaWYgdGhlcmUncyBhbnkgaW5mbyBpbnNpZGUgaXQuXG4gIGlmIChpbnB1dHMgfHwgb3V0cHV0cyB8fCB2aWV3UXVlcmllcy5sZW5ndGggfHwgcXVlcmllcy5sZW5ndGgpIHtcbiAgICByZXR1cm4ge2lucHV0cywgb3V0cHV0cywgdmlld1F1ZXJpZXMsIHF1ZXJpZXN9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRUb1IzUXVlcnlQcmVkaWNhdGUoc2VsZWN0b3I6IGFueSk6IGFueXxzdHJpbmdbXSB7XG4gIHJldHVybiB0eXBlb2Ygc2VsZWN0b3IgPT09ICdzdHJpbmcnID8gc3BsaXRCeUNvbW1hKHNlbGVjdG9yKSA6IHJlc29sdmVGb3J3YXJkUmVmKHNlbGVjdG9yKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb1IzUXVlcnlNZXRhZGF0YShwcm9wZXJ0eU5hbWU6IHN0cmluZywgYW5uOiBRdWVyeSk6IFIzUXVlcnlNZXRhZGF0YUZhY2FkZSB7XG4gIHJldHVybiB7XG4gICAgcHJvcGVydHlOYW1lOiBwcm9wZXJ0eU5hbWUsXG4gICAgcHJlZGljYXRlOiBjb252ZXJ0VG9SM1F1ZXJ5UHJlZGljYXRlKGFubi5zZWxlY3RvciksXG4gICAgZGVzY2VuZGFudHM6IGFubi5kZXNjZW5kYW50cyxcbiAgICBmaXJzdDogYW5uLmZpcnN0LFxuICAgIHJlYWQ6IGFubi5yZWFkID8gYW5uLnJlYWQgOiBudWxsLFxuICAgIHN0YXRpYzogISFhbm4uc3RhdGljXG4gIH07XG59XG5mdW5jdGlvbiBleHRyYWN0UXVlcmllc01ldGFkYXRhKFxuICAgIHR5cGU6IFR5cGU8YW55PiwgcHJvcE1ldGFkYXRhOiB7W2tleTogc3RyaW5nXTogYW55W119LFxuICAgIGlzUXVlcnlBbm46IChhbm46IGFueSkgPT4gYW5uIGlzIFF1ZXJ5KTogUjNRdWVyeU1ldGFkYXRhRmFjYWRlW10ge1xuICBjb25zdCBxdWVyaWVzTWV0YTogUjNRdWVyeU1ldGFkYXRhRmFjYWRlW10gPSBbXTtcbiAgZm9yIChjb25zdCBmaWVsZCBpbiBwcm9wTWV0YWRhdGEpIHtcbiAgICBpZiAocHJvcE1ldGFkYXRhLmhhc093blByb3BlcnR5KGZpZWxkKSkge1xuICAgICAgY29uc3QgYW5ub3RhdGlvbnMgPSBwcm9wTWV0YWRhdGFbZmllbGRdO1xuICAgICAgYW5ub3RhdGlvbnMuZm9yRWFjaChhbm4gPT4ge1xuICAgICAgICBpZiAoaXNRdWVyeUFubihhbm4pKSB7XG4gICAgICAgICAgaWYgKCFhbm4uc2VsZWN0b3IpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgQ2FuJ3QgY29uc3RydWN0IGEgcXVlcnkgZm9yIHRoZSBwcm9wZXJ0eSBcIiR7ZmllbGR9XCIgb2YgYCArXG4gICAgICAgICAgICAgICAgYFwiJHtzdHJpbmdpZnlGb3JFcnJvcih0eXBlKX1cIiBzaW5jZSB0aGUgcXVlcnkgc2VsZWN0b3Igd2Fzbid0IGRlZmluZWQuYCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChhbm5vdGF0aW9ucy5zb21lKGlzSW5wdXRBbm4pKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBjb21iaW5lIEBJbnB1dCBkZWNvcmF0b3JzIHdpdGggcXVlcnkgZGVjb3JhdG9yc2ApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBxdWVyaWVzTWV0YS5wdXNoKGNvbnZlcnRUb1IzUXVlcnlNZXRhZGF0YShmaWVsZCwgYW5uKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcXVlcmllc01ldGE7XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RFeHBvcnRBcyhleHBvcnRBczogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nW118bnVsbCB7XG4gIGlmIChleHBvcnRBcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gZXhwb3J0QXMuc3BsaXQoJywnKS5tYXAocGFydCA9PiBwYXJ0LnRyaW0oKSk7XG59XG5cbmZ1bmN0aW9uIGlzQ29udGVudFF1ZXJ5KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBRdWVyeSB7XG4gIGNvbnN0IG5hbWUgPSB2YWx1ZS5uZ01ldGFkYXRhTmFtZTtcbiAgcmV0dXJuIG5hbWUgPT09ICdDb250ZW50Q2hpbGQnIHx8IG5hbWUgPT09ICdDb250ZW50Q2hpbGRyZW4nO1xufVxuXG5mdW5jdGlvbiBpc1ZpZXdRdWVyeSh2YWx1ZTogYW55KTogdmFsdWUgaXMgUXVlcnkge1xuICBjb25zdCBuYW1lID0gdmFsdWUubmdNZXRhZGF0YU5hbWU7XG4gIHJldHVybiBuYW1lID09PSAnVmlld0NoaWxkJyB8fCBuYW1lID09PSAnVmlld0NoaWxkcmVuJztcbn1cblxuZnVuY3Rpb24gaXNJbnB1dEFubih2YWx1ZTogYW55KTogdmFsdWUgaXMgSW5wdXQge1xuICByZXR1cm4gdmFsdWUubmdNZXRhZGF0YU5hbWUgPT09ICdJbnB1dCc7XG59XG5cbmZ1bmN0aW9uIHNwbGl0QnlDb21tYSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICByZXR1cm4gdmFsdWUuc3BsaXQoJywnKS5tYXAocGllY2UgPT4gcGllY2UudHJpbSgpKTtcbn1cbiJdfQ==
270
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvcmVuZGVyMy9qaXQvZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7QUFFSCxPQUFPLEVBQTRCLGlCQUFpQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFFNUYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFDLFVBQVUsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBSWxFLE9BQU8sRUFBQyx3QkFBd0IsRUFBRSx3Q0FBd0MsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ25ILE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxVQUFVLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUMsV0FBVyxFQUFFLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNoRCxPQUFPLEVBQUMsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRTFFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRXJELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFDLHVDQUF1QyxFQUFFLDBCQUEwQixFQUFFLG1CQUFtQixFQUFDLE1BQU0sVUFBVSxDQUFDO0FBSWxIOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLElBQWUsRUFBRSxRQUFtQjtJQUNuRSxJQUFJLGNBQWMsR0FBUSxJQUFJLENBQUM7SUFDL0Is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QUcsS0FBSyxDQUFDLGNBQWMsQ0FBQztJQUNsQyxPQUFPLElBQUksS0FBSyxjQUFjLElBQUksSUFBSSxLQUFLLGlCQUFpQixDQUFDO0FBQy9ELENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxLQUFVO0lBQzdCLElBQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUM7SUFDbEMsT0FBTyxJQUFJLEtBQUssV0FBVyxJQUFJLElBQUksS0FBSyxjQUFjLENBQUM7QUFDekQsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLEtBQVU7SUFDNUIsT0FBTyxLQUFLLENBQUMsY0FBYyxLQUFLLE9BQU8sQ0FBQztBQUMxQyxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsS0FBYTtJQUNqQyxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQUEsS0FBSyxJQUFJLE9BQUEsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFaLENBQVksQ0FBQyxDQUFDO0FBQ3JELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7UjNEaXJlY3RpdmVNZXRhZGF0YUZhY2FkZSwgZ2V0Q29tcGlsZXJGYWNhZGV9IGZyb20gJy4uLy4uL2NvbXBpbGVyL2NvbXBpbGVyX2ZhY2FkZSc7XG5pbXBvcnQge1IzQmFzZU1ldGFkYXRhRmFjYWRlLCBSM0NvbXBvbmVudE1ldGFkYXRhRmFjYWRlLCBSM1F1ZXJ5TWV0YWRhdGFGYWNhZGV9IGZyb20gJy4uLy4uL2NvbXBpbGVyL2NvbXBpbGVyX2ZhY2FkZV9pbnRlcmZhY2UnO1xuaW1wb3J0IHtyZXNvbHZlRm9yd2FyZFJlZn0gZnJvbSAnLi4vLi4vZGkvZm9yd2FyZF9yZWYnO1xuaW1wb3J0IHtjb21waWxlSW5qZWN0YWJsZX0gZnJvbSAnLi4vLi4vZGkvaml0L2luamVjdGFibGUnO1xuaW1wb3J0IHtnZXRSZWZsZWN0LCByZWZsZWN0RGVwZW5kZW5jaWVzfSBmcm9tICcuLi8uLi9kaS9qaXQvdXRpbCc7XG5pbXBvcnQge1R5cGV9IGZyb20gJy4uLy4uL2ludGVyZmFjZS90eXBlJztcbmltcG9ydCB7UXVlcnl9IGZyb20gJy4uLy4uL21ldGFkYXRhL2RpJztcbmltcG9ydCB7Q29tcG9uZW50LCBEaXJlY3RpdmUsIElucHV0fSBmcm9tICcuLi8uLi9tZXRhZGF0YS9kaXJlY3RpdmVzJztcbmltcG9ydCB7Y29tcG9uZW50TmVlZHNSZXNvbHV0aW9uLCBtYXliZVF1ZXVlUmVzb2x1dGlvbk9mQ29tcG9uZW50UmVzb3VyY2VzfSBmcm9tICcuLi8uLi9tZXRhZGF0YS9yZXNvdXJjZV9sb2FkaW5nJztcbmltcG9ydCB7Vmlld0VuY2Fwc3VsYXRpb259IGZyb20gJy4uLy4uL21ldGFkYXRhL3ZpZXcnO1xuaW1wb3J0IHtnZXRCYXNlRGVmLCBnZXRDb21wb25lbnREZWYsIGdldERpcmVjdGl2ZURlZn0gZnJvbSAnLi4vZGVmaW5pdGlvbic7XG5pbXBvcnQge0VNUFRZX0FSUkFZLCBFTVBUWV9PQkp9IGZyb20gJy4uL2VtcHR5JztcbmltcG9ydCB7TkdfQkFTRV9ERUYsIE5HX0NPTVBPTkVOVF9ERUYsIE5HX0RJUkVDVElWRV9ERUZ9IGZyb20gJy4uL2ZpZWxkcyc7XG5pbXBvcnQge0NvbXBvbmVudFR5cGV9IGZyb20gJy4uL2ludGVyZmFjZXMvZGVmaW5pdGlvbic7XG5pbXBvcnQge3N0cmluZ2lmeUZvckVycm9yfSBmcm9tICcuLi91dGlsL21pc2NfdXRpbHMnO1xuXG5pbXBvcnQge2FuZ3VsYXJDb3JlRW52fSBmcm9tICcuL2Vudmlyb25tZW50JztcbmltcG9ydCB7Zmx1c2hNb2R1bGVTY29waW5nUXVldWVBc011Y2hBc1Bvc3NpYmxlLCBwYXRjaENvbXBvbmVudERlZldpdGhTY29wZSwgdHJhbnNpdGl2ZVNjb3Blc0Zvcn0gZnJvbSAnLi9tb2R1bGUnO1xuXG5cblxuLyoqXG4gKiBDb21waWxlIGFuIEFuZ3VsYXIgY29tcG9uZW50IGFjY29yZGluZyB0byBpdHMgZGVjb3JhdG9yIG1ldGFkYXRhLCBhbmQgcGF0Y2ggdGhlIHJlc3VsdGluZ1xuICogbmdDb21wb25lbnREZWYgb250byB0aGUgY29tcG9uZW50IHR5cGUuXG4gKlxuICogQ29tcGlsYXRpb24gbWF5IGJlIGFzeW5jaHJvbm91cyAoZHVlIHRvIHRoZSBuZWVkIHRvIHJlc29sdmUgVVJMcyBmb3IgdGhlIGNvbXBvbmVudCB0ZW1wbGF0ZSBvclxuICogb3RoZXIgcmVzb3VyY2VzLCBmb3IgZXhhbXBsZSkuIEluIHRoZSBldmVudCB0aGF0IGNvbXBpbGF0aW9uIGlzIG5vdCBpbW1lZGlhdGUsIGBjb21waWxlQ29tcG9uZW50YFxuICogd2lsbCBlbnF1ZXVlIHJlc291cmNlIHJlc29sdXRpb24gaW50byBhIGdsb2JhbCBxdWV1ZSBhbmQgd2lsbCBmYWlsIHRvIHJldHVybiB0aGUgYG5nQ29tcG9uZW50RGVmYFxuICogdW50aWwgdGhlIGdsb2JhbCBxdWV1ZSBoYXMgYmVlbiByZXNvbHZlZCB3aXRoIGEgY2FsbCB0byBgcmVzb2x2ZUNvbXBvbmVudFJlc291cmNlc2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlQ29tcG9uZW50KHR5cGU6IFR5cGU8YW55PiwgbWV0YWRhdGE6IENvbXBvbmVudCk6IHZvaWQge1xuICBsZXQgbmdDb21wb25lbnREZWY6IGFueSA9IG51bGw7XG4gIC8vIE1ldGFkYXRhIG1heSBoYXZlIHJlc291cmNlcyB3aGljaCBuZWVkIHRvIGJlIHJlc29sdmVkLlxuICBtYXliZVF1ZXVlUmVzb2x1dGlvbk9mQ29tcG9uZW50UmVzb3VyY2VzKHR5cGUsIG1ldGFkYXRhKTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHR5cGUsIE5HX0NPTVBPTkVOVF9ERUYsIHtcbiAgICBnZXQ6ICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbXBpbGVyID0gZ2V0Q29tcGlsZXJGYWNhZGUoKTtcbiAgICAgIGlmIChuZ0NvbXBvbmVudERlZiA9PT0gbnVsbCkge1xuICAgICAgICBpZiAoY29tcG9uZW50TmVlZHNSZXNvbHV0aW9uKG1ldGFkYXRhKSkge1xuICAgICAgICAgIGNvbnN0IGVycm9yID0gW2BDb21wb25lbnQgJyR7dHlwZS5uYW1lfScgaXMgbm90IHJlc29sdmVkOmBdO1xuICAgICAgICAgIGlmIChtZXRhZGF0YS50ZW1wbGF0ZVVybCkge1xuICAgICAgICAgICAgZXJyb3IucHVzaChgIC0gdGVtcGxhdGVVcmw6ICR7bWV0YWRhdGEudGVtcGxhdGVVcmx9YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtZXRhZGF0YS5zdHlsZVVybHMgJiYgbWV0YWRhdGEuc3R5bGVVcmxzLmxlbmd0aCkge1xuICAgICAgICAgICAgZXJyb3IucHVzaChgIC0gc3R5bGVVcmxzOiAke0pTT04uc3RyaW5naWZ5KG1ldGFkYXRhLnN0eWxlVXJscyl9YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVycm9yLnB1c2goYERpZCB5b3UgcnVuIGFuZCB3YWl0IGZvciAncmVzb2x2ZUNvbXBvbmVudFJlc291cmNlcygpJz9gKTtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3Iuam9pbignXFxuJykpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGVtcGxhdGVVcmwgPSBtZXRhZGF0YS50ZW1wbGF0ZVVybCB8fCBgbmc6Ly8vJHt0eXBlLm5hbWV9L3RlbXBsYXRlLmh0bWxgO1xuICAgICAgICBjb25zdCBtZXRhOiBSM0NvbXBvbmVudE1ldGFkYXRhRmFjYWRlID0ge1xuICAgICAgICAgIC4uLmRpcmVjdGl2ZU1ldGFkYXRhKHR5cGUsIG1ldGFkYXRhKSxcbiAgICAgICAgICB0eXBlU291cmNlU3BhbjogY29tcGlsZXIuY3JlYXRlUGFyc2VTb3VyY2VTcGFuKCdDb21wb25lbnQnLCB0eXBlLm5hbWUsIHRlbXBsYXRlVXJsKSxcbiAgICAgICAgICB0ZW1wbGF0ZTogbWV0YWRhdGEudGVtcGxhdGUgfHwgJycsXG4gICAgICAgICAgcHJlc2VydmVXaGl0ZXNwYWNlczogbWV0YWRhdGEucHJlc2VydmVXaGl0ZXNwYWNlcyB8fCBmYWxzZSxcbiAgICAgICAgICBzdHlsZXM6IG1ldGFkYXRhLnN0eWxlcyB8fCBFTVBUWV9BUlJBWSxcbiAgICAgICAgICBhbmltYXRpb25zOiBtZXRhZGF0YS5hbmltYXRpb25zLFxuICAgICAgICAgIGRpcmVjdGl2ZXM6IFtdLFxuICAgICAgICAgIGNoYW5nZURldGVjdGlvbjogbWV0YWRhdGEuY2hhbmdlRGV0ZWN0aW9uLFxuICAgICAgICAgIHBpcGVzOiBuZXcgTWFwKCksXG4gICAgICAgICAgZW5jYXBzdWxhdGlvbjogbWV0YWRhdGEuZW5jYXBzdWxhdGlvbiB8fCBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZCxcbiAgICAgICAgICBpbnRlcnBvbGF0aW9uOiBtZXRhZGF0YS5pbnRlcnBvbGF0aW9uLFxuICAgICAgICAgIHZpZXdQcm92aWRlcnM6IG1ldGFkYXRhLnZpZXdQcm92aWRlcnMgfHwgbnVsbCxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKG1ldGEudXNlc0luaGVyaXRhbmNlKSB7XG4gICAgICAgICAgYWRkQmFzZURlZlRvVW5kZWNvcmF0ZWRQYXJlbnRzKHR5cGUpO1xuICAgICAgICB9XG4gICAgICAgIG5nQ29tcG9uZW50RGVmID0gY29tcGlsZXIuY29tcGlsZUNvbXBvbmVudChhbmd1bGFyQ29yZUVudiwgdGVtcGxhdGVVcmwsIG1ldGEpO1xuXG4gICAgICAgIC8vIFdoZW4gTmdNb2R1bGUgZGVjb3JhdG9yIGV4ZWN1dGVkLCB3ZSBlbnF1ZXVlZCB0aGUgbW9kdWxlIGRlZmluaXRpb24gc3VjaCB0aGF0XG4gICAgICAgIC8vIGl0IHdvdWxkIG9ubHkgZGVxdWV1ZSBhbmQgYWRkIGl0c2VsZiBhcyBtb2R1bGUgc2NvcGUgdG8gYWxsIG9mIGl0cyBkZWNsYXJhdGlvbnMsXG4gICAgICAgIC8vIGJ1dCBvbmx5IGlmICBpZiBhbGwgb2YgaXRzIGRlY2xhcmF0aW9ucyBoYWQgcmVzb2x2ZWQuIFRoaXMgY2FsbCBydW5zIHRoZSBjaGVja1xuICAgICAgICAvLyB0byBzZWUgaWYgYW55IG1vZHVsZXMgdGhhdCBhcmUgaW4gdGhlIHF1ZXVlIGNhbiBiZSBkZXF1ZXVlZCBhbmQgYWRkIHNjb3BlIHRvXG4gICAgICAgIC8vIHRoZWlyIGRlY2xhcmF0aW9ucy5cbiAgICAgICAgZmx1c2hNb2R1bGVTY29waW5nUXVldWVBc011Y2hBc1Bvc3NpYmxlKCk7XG5cbiAgICAgICAgLy8gSWYgY29tcG9uZW50IGNvbXBpbGF0aW9uIGlzIGFzeW5jLCB0aGVuIHRoZSBATmdNb2R1bGUgYW5ub3RhdGlvbiB3aGljaCBkZWNsYXJlcyB0aGVcbiAgICAgICAgLy8gY29tcG9uZW50IG1heSBleGVjdXRlIGFuZCBzZXQgYW4gbmdTZWxlY3RvclNjb3BlIHByb3BlcnR5IG9uIHRoZSBjb21wb25lbnQgdHlwZS4gVGhpc1xuICAgICAgICAvLyBhbGxvd3MgdGhlIGNvbXBvbmVudCB0byBwYXRjaCBpdHNlbGYgd2l0aCBkaXJlY3RpdmVEZWZzIGZyb20gdGhlIG1vZHVsZSBhZnRlciBpdFxuICAgICAgICAvLyBmaW5pc2hlcyBjb21waWxpbmcuXG4gICAgICAgIGlmIChoYXNTZWxlY3RvclNjb3BlKHR5cGUpKSB7XG4gICAgICAgICAgY29uc3Qgc2NvcGVzID0gdHJhbnNpdGl2ZVNjb3Blc0Zvcih0eXBlLm5nU2VsZWN0b3JTY29wZSk7XG4gICAgICAgICAgcGF0Y2hDb21wb25lbnREZWZXaXRoU2NvcGUobmdDb21wb25lbnREZWYsIHNjb3Blcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBuZ0NvbXBvbmVudERlZjtcbiAgICB9LFxuICAgIC8vIE1ha2UgdGhlIHByb3BlcnR5IGNvbmZpZ3VyYWJsZSBpbiBkZXYgbW9kZSB0byBhbGxvdyBvdmVycmlkaW5nIGluIHRlc3RzXG4gICAgY29uZmlndXJhYmxlOiAhIW5nRGV2TW9kZSxcbiAgfSk7XG5cblxuICAvLyBBZGQgbmdJbmplY3RhYmxlRGVmIHNvIGNvbXBvbmVudHMgYXJlIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBtb2R1bGUgaW5qZWN0b3IgYnkgZGVmYXVsdFxuICAvLyBUaGlzIGlzIG1vc3RseSB0byBzdXBwb3J0IGluamVjdGluZyBjb21wb25lbnRzIGluIHRlc3RzLiBJbiByZWFsIGFwcGxpY2F0aW9uIGNvZGUsXG4gIC8vIGNvbXBvbmVudHMgc2hvdWxkIGJlIHJldHJpZXZlZCB0aHJvdWdoIHRoZSBub2RlIGluamVjdG9yLCBzbyB0aGlzIGlzbid0IGEgcHJvYmxlbS5cbiAgY29tcGlsZUluamVjdGFibGUodHlwZSk7XG59XG5cbmZ1bmN0aW9uIGhhc1NlbGVjdG9yU2NvcGU8VD4oY29tcG9uZW50OiBUeXBlPFQ+KTogY29tcG9uZW50IGlzIFR5cGU8VD4mXG4gICAge25nU2VsZWN0b3JTY29wZTogVHlwZTxhbnk+fSB7XG4gIHJldHVybiAoY29tcG9uZW50IGFze25nU2VsZWN0b3JTY29wZT86IGFueX0pLm5nU2VsZWN0b3JTY29wZSAhPT0gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIENvbXBpbGUgYW4gQW5ndWxhciBkaXJlY3RpdmUgYWNjb3JkaW5nIHRvIGl0cyBkZWNvcmF0b3IgbWV0YWRhdGEsIGFuZCBwYXRjaCB0aGUgcmVzdWx0aW5nXG4gKiBuZ0RpcmVjdGl2ZURlZiBvbnRvIHRoZSBjb21wb25lbnQgdHlwZS5cbiAqXG4gKiBJbiB0aGUgZXZlbnQgdGhhdCBjb21waWxhdGlvbiBpcyBub3QgaW1tZWRpYXRlLCBgY29tcGlsZURpcmVjdGl2ZWAgd2lsbCByZXR1cm4gYSBgUHJvbWlzZWAgd2hpY2hcbiAqIHdpbGwgcmVzb2x2ZSB3aGVuIGNvbXBpbGF0aW9uIGNvbXBsZXRlcyBhbmQgdGhlIGRpcmVjdGl2ZSBiZWNvbWVzIHVzYWJsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGVEaXJlY3RpdmUodHlwZTogVHlwZTxhbnk+LCBkaXJlY3RpdmU6IERpcmVjdGl2ZSk6IHZvaWQge1xuICBsZXQgbmdEaXJlY3RpdmVEZWY6IGFueSA9IG51bGw7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0eXBlLCBOR19ESVJFQ1RJVkVfREVGLCB7XG4gICAgZ2V0OiAoKSA9PiB7XG4gICAgICBpZiAobmdEaXJlY3RpdmVEZWYgPT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgbmFtZSA9IHR5cGUgJiYgdHlwZS5uYW1lO1xuICAgICAgICBjb25zdCBzb3VyY2VNYXBVcmwgPSBgbmc6Ly8vJHtuYW1lfS9uZ0RpcmVjdGl2ZURlZi5qc2A7XG4gICAgICAgIGNvbnN0IGNvbXBpbGVyID0gZ2V0Q29tcGlsZXJGYWNhZGUoKTtcbiAgICAgICAgY29uc3QgZmFjYWRlID0gZGlyZWN0aXZlTWV0YWRhdGEodHlwZSBhcyBDb21wb25lbnRUeXBlPGFueT4sIGRpcmVjdGl2ZSk7XG4gICAgICAgIGZhY2FkZS50eXBlU291cmNlU3BhbiA9IGNvbXBpbGVyLmNyZWF0ZVBhcnNlU291cmNlU3BhbignRGlyZWN0aXZlJywgbmFtZSwgc291cmNlTWFwVXJsKTtcbiAgICAgICAgaWYgKGZhY2FkZS51c2VzSW5oZXJpdGFuY2UpIHtcbiAgICAgICAgICBhZGRCYXNlRGVmVG9VbmRlY29yYXRlZFBhcmVudHModHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgbmdEaXJlY3RpdmVEZWYgPSBjb21waWxlci5jb21waWxlRGlyZWN0aXZlKGFuZ3VsYXJDb3JlRW52LCBzb3VyY2VNYXBVcmwsIGZhY2FkZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmdEaXJlY3RpdmVEZWY7XG4gICAgfSxcbiAgICAvLyBNYWtlIHRoZSBwcm9wZXJ0eSBjb25maWd1cmFibGUgaW4gZGV2IG1vZGUgdG8gYWxsb3cgb3ZlcnJpZGluZyBpbiB0ZXN0c1xuICAgIGNvbmZpZ3VyYWJsZTogISFuZ0Rldk1vZGUsXG4gIH0pO1xuXG4gIC8vIEFkZCBuZ0luamVjdGFibGVEZWYgc28gZGlyZWN0aXZlcyBhcmUgcmVhY2hhYmxlIHRocm91Z2ggdGhlIG1vZHVsZSBpbmplY3RvciBieSBkZWZhdWx0XG4gIC8vIFRoaXMgaXMgbW9zdGx5IHRvIHN1cHBvcnQgaW5qZWN0aW5nIGRpcmVjdGl2ZXMgaW4gdGVzdHMuIEluIHJlYWwgYXBwbGljYXRpb24gY29kZSxcbiAgLy8gZGlyZWN0aXZlcyBzaG91bGQgYmUgcmV0cmlldmVkIHRocm91Z2ggdGhlIG5vZGUgaW5qZWN0b3IsIHNvIHRoaXMgaXNuJ3QgYSBwcm9ibGVtLlxuICBjb21waWxlSW5qZWN0YWJsZSh0eXBlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuZHNEaXJlY3RseUZyb21PYmplY3QodHlwZTogVHlwZTxhbnk+KTogYm9vbGVhbiB7XG4gIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YodHlwZS5wcm90b3R5cGUpID09PSBPYmplY3QucHJvdG90eXBlO1xufVxuXG4vKipcbiAqIEV4dHJhY3QgdGhlIGBSM0RpcmVjdGl2ZU1ldGFkYXRhYCBmb3IgYSBwYXJ0aWN1bGFyIGRpcmVjdGl2ZSAoZWl0aGVyIGEgYERpcmVjdGl2ZWAgb3IgYVxuICogYENvbXBvbmVudGApLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlyZWN0aXZlTWV0YWRhdGEodHlwZTogVHlwZTxhbnk+LCBtZXRhZGF0YTogRGlyZWN0aXZlKTogUjNEaXJlY3RpdmVNZXRhZGF0YUZhY2FkZSB7XG4gIC8vIFJlZmxlY3QgaW5wdXRzIGFuZCBvdXRwdXRzLlxuICBjb25zdCBwcm9wTWV0YWRhdGEgPSBnZXRSZWZsZWN0KCkub3duUHJvcE1ldGFkYXRhKHR5cGUpO1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogdHlwZS5uYW1lLFxuICAgIHR5cGU6IHR5cGUsXG4gICAgdHlwZUFyZ3VtZW50Q291bnQ6IDAsXG4gICAgc2VsZWN0b3I6IG1ldGFkYXRhLnNlbGVjdG9yICEsXG4gICAgZGVwczogcmVmbGVjdERlcGVuZGVuY2llcyh0eXBlKSxcbiAgICBob3N0OiBtZXRhZGF0YS5ob3N0IHx8IEVNUFRZX09CSixcbiAgICBwcm9wTWV0YWRhdGE6IHByb3BNZXRhZGF0YSxcbiAgICBpbnB1dHM6IG1ldGFkYXRhLmlucHV0cyB8fCBFTVBUWV9BUlJBWSxcbiAgICBvdXRwdXRzOiBtZXRhZGF0YS5vdXRwdXRzIHx8IEVNUFRZX0FSUkFZLFxuICAgIHF1ZXJpZXM6IGV4dHJhY3RRdWVyaWVzTWV0YWRhdGEodHlwZSwgcHJvcE1ldGFkYXRhLCBpc0NvbnRlbnRRdWVyeSksXG4gICAgbGlmZWN5Y2xlOiB7dXNlc09uQ2hhbmdlczogdHlwZS5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoJ25nT25DaGFuZ2VzJyl9LFxuICAgIHR5cGVTb3VyY2VTcGFuOiBudWxsICEsXG4gICAgdXNlc0luaGVyaXRhbmNlOiAhZXh0ZW5kc0RpcmVjdGx5RnJvbU9iamVjdCh0eXBlKSxcbiAgICBleHBvcnRBczogZXh0cmFjdEV4cG9ydEFzKG1ldGFkYXRhLmV4cG9ydEFzKSxcbiAgICBwcm92aWRlcnM6IG1ldGFkYXRhLnByb3ZpZGVycyB8fCBudWxsLFxuICAgIHZpZXdRdWVyaWVzOiBleHRyYWN0UXVlcmllc01ldGFkYXRhKHR5cGUsIHByb3BNZXRhZGF0YSwgaXNWaWV3UXVlcnkpLFxuICB9O1xufVxuXG4vKipcbiAqIEFkZHMgYW4gYG5nQmFzZURlZmAgdG8gYWxsIHBhcmVudCBjbGFzc2VzIG9mIGEgdHlwZSB0aGF0IGRvbid0IGhhdmUgYW4gQW5ndWxhciBkZWNvcmF0b3IuXG4gKi9cbmZ1bmN0aW9uIGFkZEJhc2VEZWZUb1VuZGVjb3JhdGVkUGFyZW50cyh0eXBlOiBUeXBlPGFueT4pIHtcbiAgY29uc3Qgb2JqUHJvdG90eXBlID0gT2JqZWN0LnByb3RvdHlwZTtcbiAgbGV0IHBhcmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0eXBlKTtcblxuICAvLyBHbyB1cCB0aGUgcHJvdG90eXBlIHVudGlsIHdlIGhpdCBgT2JqZWN0YC5cbiAgd2hpbGUgKHBhcmVudCAmJiBwYXJlbnQgIT09IG9ialByb3RvdHlwZSkge1xuICAgIC8vIFNpbmNlIGluaGVyaXRhbmNlIHdvcmtzIGlmIHRoZSBjbGFzcyB3YXMgYW5ub3RhdGVkIGFscmVhZHksIHdlIG9ubHkgbmVlZCB0byBhZGRcbiAgICAvLyB0aGUgYmFzZSBkZWYgaWYgdGhlcmUgYXJlIG5vIGFubm90YXRpb25zIGFuZCB0aGUgYmFzZSBkZWYgaGFzbid0IGJlZW4gY3JlYXRlZCBhbHJlYWR5LlxuICAgIGlmICghZ2V0RGlyZWN0aXZlRGVmKHBhcmVudCkgJiYgIWdldENvbXBvbmVudERlZihwYXJlbnQpICYmICFnZXRCYXNlRGVmKHBhcmVudCkpIHtcbiAgICAgIGNvbnN0IGZhY2FkZSA9IGV4dHJhY3RCYXNlRGVmTWV0YWRhdGEocGFyZW50KTtcbiAgICAgIGZhY2FkZSAmJiBjb21waWxlQmFzZShwYXJlbnQsIGZhY2FkZSk7XG4gICAgfVxuICAgIHBhcmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihwYXJlbnQpO1xuICB9XG59XG5cbi8qKiBDb21waWxlcyB0aGUgYmFzZSBtZXRhZGF0YSBpbnRvIGEgYmFzZSBkZWZpbml0aW9uLiAqL1xuZnVuY3Rpb24gY29tcGlsZUJhc2UodHlwZTogVHlwZTxhbnk+LCBmYWNhZGU6IFIzQmFzZU1ldGFkYXRhRmFjYWRlKTogdm9pZCB7XG4gIGxldCBuZ0Jhc2VEZWY6IGFueSA9IG51bGw7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0eXBlLCBOR19CQVNFX0RFRiwge1xuICAgIGdldDogKCkgPT4ge1xuICAgICAgaWYgKG5nQmFzZURlZiA9PT0gbnVsbCkge1xuICAgICAgICBjb25zdCBuYW1lID0gdHlwZSAmJiB0eXBlLm5hbWU7XG4gICAgICAgIGNvbnN0IHNvdXJjZU1hcFVybCA9IGBuZzovLyR7bmFtZX0vbmdCYXNlRGVmLmpzYDtcbiAgICAgICAgY29uc3QgY29tcGlsZXIgPSBnZXRDb21waWxlckZhY2FkZSgpO1xuICAgICAgICBuZ0Jhc2VEZWYgPSBjb21waWxlci5jb21waWxlQmFzZShhbmd1bGFyQ29yZUVudiwgc291cmNlTWFwVXJsLCBmYWNhZGUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5nQmFzZURlZjtcbiAgICB9LFxuICAgIC8vIE1ha2UgdGhlIHByb3BlcnR5IGNvbmZpZ3VyYWJsZSBpbiBkZXYgbW9kZSB0byBhbGxvdyBvdmVycmlkaW5nIGluIHRlc3RzXG4gICAgY29uZmlndXJhYmxlOiAhIW5nRGV2TW9kZSxcbiAgfSk7XG59XG5cbi8qKiBFeHRyYWN0cyB0aGUgbWV0YWRhdGEgbmVjZXNzYXJ5IHRvIGNvbnN0cnVjdCBhbiBgbmdCYXNlRGVmYCBmcm9tIGEgY2xhc3MuICovXG5mdW5jdGlvbiBleHRyYWN0QmFzZURlZk1ldGFkYXRhKHR5cGU6IFR5cGU8YW55Pik6IFIzQmFzZU1ldGFkYXRhRmFjYWRlfG51bGwge1xuICBjb25zdCBwcm9wTWV0YWRhdGEgPSBnZXRSZWZsZWN0KCkub3duUHJvcE1ldGFkYXRhKHR5cGUpO1xuICBjb25zdCB2aWV3UXVlcmllcyA9IGV4dHJhY3RRdWVyaWVzTWV0YWRhdGEodHlwZSwgcHJvcE1ldGFkYXRhLCBpc1ZpZXdRdWVyeSk7XG4gIGNvbnN0IHF1ZXJpZXMgPSBleHRyYWN0UXVlcmllc01ldGFkYXRhKHR5cGUsIHByb3BNZXRhZGF0YSwgaXNDb250ZW50UXVlcnkpO1xuICBsZXQgaW5wdXRzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nIHwgW3N0cmluZywgc3RyaW5nXX18dW5kZWZpbmVkO1xuICBsZXQgb3V0cHV0czoge1trZXk6IHN0cmluZ106IHN0cmluZ318dW5kZWZpbmVkO1xuICAvLyBXZSBvbmx5IG5lZWQgdG8ga25vdyB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgSG9zdExpc3RlbmVyIG9yIEhvc3RCaW5kaW5nXG4gIC8vIGRlY29yYXRvcnMgcHJlc2VudCwgdGhlIHBhcnNpbmcgbG9naWMgaXMgaW4gdGhlIGNvbXBpbGVyIGFscmVhZHkuXG4gIGxldCBoYXNIb3N0RGVjb3JhdG9ycyA9IGZhbHNlO1xuXG4gIGZvciAoY29uc3QgZmllbGQgaW4gcHJvcE1ldGFkYXRhKSB7XG4gICAgcHJvcE1ldGFkYXRhW2ZpZWxkXS5mb3JFYWNoKGFubiA9PiB7XG4gICAgICBjb25zdCBtZXRhZGF0YU5hbWUgPSBhbm4ubmdNZXRhZGF0YU5hbWU7XG4gICAgICBpZiAobWV0YWRhdGFOYW1lID09PSAnSW5wdXQnKSB7XG4gICAgICAgIGlucHV0cyA9IGlucHV0cyB8fCB7fTtcbiAgICAgICAgaW5wdXRzW2ZpZWxkXSA9IGFubi5iaW5kaW5nUHJvcGVydHlOYW1lID8gW2Fubi5iaW5kaW5nUHJvcGVydHlOYW1lLCBmaWVsZF0gOiBmaWVsZDtcbiAgICAgIH0gZWxzZSBpZiAobWV0YWRhdGFOYW1lID09PSAnT3V0cHV0Jykge1xuICAgICAgICBvdXRwdXRzID0gb3V0cHV0cyB8fCB7fTtcbiAgICAgICAgb3V0cHV0c1tmaWVsZF0gPSBhbm4uYmluZGluZ1Byb3BlcnR5TmFtZSB8fCBmaWVsZDtcbiAgICAgIH0gZWxzZSBpZiAobWV0YWRhdGFOYW1lID09PSAnSG9zdEJpbmRpbmcnIHx8IG1ldGFkYXRhTmFtZSA9PT0gJ0hvc3RMaXN0ZW5lcicpIHtcbiAgICAgICAgaGFzSG9zdERlY29yYXRvcnMgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gT25seSBnZW5lcmF0ZSB0aGUgYmFzZSBkZWYgaWYgdGhlcmUncyBhbnkgaW5mbyBpbnNpZGUgaXQuXG4gIGlmIChpbnB1dHMgfHwgb3V0cHV0cyB8fCB2aWV3UXVlcmllcy5sZW5ndGggfHwgcXVlcmllcy5sZW5ndGggfHwgaGFzSG9zdERlY29yYXRvcnMpIHtcbiAgICByZXR1cm4ge25hbWU6IHR5cGUubmFtZSwgaW5wdXRzLCBvdXRwdXRzLCB2aWV3UXVlcmllcywgcXVlcmllcywgcHJvcE1ldGFkYXRhfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0VG9SM1F1ZXJ5UHJlZGljYXRlKHNlbGVjdG9yOiBhbnkpOiBhbnl8c3RyaW5nW10ge1xuICByZXR1cm4gdHlwZW9mIHNlbGVjdG9yID09PSAnc3RyaW5nJyA/IHNwbGl0QnlDb21tYShzZWxlY3RvcikgOiByZXNvbHZlRm9yd2FyZFJlZihzZWxlY3Rvcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VG9SM1F1ZXJ5TWV0YWRhdGEocHJvcGVydHlOYW1lOiBzdHJpbmcsIGFubjogUXVlcnkpOiBSM1F1ZXJ5TWV0YWRhdGFGYWNhZGUge1xuICByZXR1cm4ge1xuICAgIHByb3BlcnR5TmFtZTogcHJvcGVydHlOYW1lLFxuICAgIHByZWRpY2F0ZTogY29udmVydFRvUjNRdWVyeVByZWRpY2F0ZShhbm4uc2VsZWN0b3IpLFxuICAgIGRlc2NlbmRhbnRzOiBhbm4uZGVzY2VuZGFudHMsXG4gICAgZmlyc3Q6IGFubi5maXJzdCxcbiAgICByZWFkOiBhbm4ucmVhZCA/IGFubi5yZWFkIDogbnVsbCxcbiAgICBzdGF0aWM6ICEhYW5uLnN0YXRpY1xuICB9O1xufVxuZnVuY3Rpb24gZXh0cmFjdFF1ZXJpZXNNZXRhZGF0YShcbiAgICB0eXBlOiBUeXBlPGFueT4sIHByb3BNZXRhZGF0YToge1trZXk6IHN0cmluZ106IGFueVtdfSxcbiAgICBpc1F1ZXJ5QW5uOiAoYW5uOiBhbnkpID0+IGFubiBpcyBRdWVyeSk6IFIzUXVlcnlNZXRhZGF0YUZhY2FkZVtdIHtcbiAgY29uc3QgcXVlcmllc01ldGE6IFIzUXVlcnlNZXRhZGF0YUZhY2FkZVtdID0gW107XG4gIGZvciAoY29uc3QgZmllbGQgaW4gcHJvcE1ldGFkYXRhKSB7XG4gICAgaWYgKHByb3BNZXRhZGF0YS5oYXNPd25Qcm9wZXJ0eShmaWVsZCkpIHtcbiAgICAgIGNvbnN0IGFubm90YXRpb25zID0gcHJvcE1ldGFkYXRhW2ZpZWxkXTtcbiAgICAgIGFubm90YXRpb25zLmZvckVhY2goYW5uID0+IHtcbiAgICAgICAgaWYgKGlzUXVlcnlBbm4oYW5uKSkge1xuICAgICAgICAgIGlmICghYW5uLnNlbGVjdG9yKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgYENhbid0IGNvbnN0cnVjdCBhIHF1ZXJ5IGZvciB0aGUgcHJvcGVydHkgXCIke2ZpZWxkfVwiIG9mIGAgK1xuICAgICAgICAgICAgICAgIGBcIiR7c3RyaW5naWZ5Rm9yRXJyb3IodHlwZSl9XCIgc2luY2UgdGhlIHF1ZXJ5IHNlbGVjdG9yIHdhc24ndCBkZWZpbmVkLmApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoYW5ub3RhdGlvbnMuc29tZShpc0lucHV0QW5uKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgY29tYmluZSBASW5wdXQgZGVjb3JhdG9ycyB3aXRoIHF1ZXJ5IGRlY29yYXRvcnNgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcXVlcmllc01ldGEucHVzaChjb252ZXJ0VG9SM1F1ZXJ5TWV0YWRhdGEoZmllbGQsIGFubikpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHF1ZXJpZXNNZXRhO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0RXhwb3J0QXMoZXhwb3J0QXM6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZ1tdfG51bGwge1xuICBpZiAoZXhwb3J0QXMgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGV4cG9ydEFzLnNwbGl0KCcsJykubWFwKHBhcnQgPT4gcGFydC50cmltKCkpO1xufVxuXG5mdW5jdGlvbiBpc0NvbnRlbnRRdWVyeSh2YWx1ZTogYW55KTogdmFsdWUgaXMgUXVlcnkge1xuICBjb25zdCBuYW1lID0gdmFsdWUubmdNZXRhZGF0YU5hbWU7XG4gIHJldHVybiBuYW1lID09PSAnQ29udGVudENoaWxkJyB8fCBuYW1lID09PSAnQ29udGVudENoaWxkcmVuJztcbn1cblxuZnVuY3Rpb24gaXNWaWV3UXVlcnkodmFsdWU6IGFueSk6IHZhbHVlIGlzIFF1ZXJ5IHtcbiAgY29uc3QgbmFtZSA9IHZhbHVlLm5nTWV0YWRhdGFOYW1lO1xuICByZXR1cm4gbmFtZSA9PT0gJ1ZpZXdDaGlsZCcgfHwgbmFtZSA9PT0gJ1ZpZXdDaGlsZHJlbic7XG59XG5cbmZ1bmN0aW9uIGlzSW5wdXRBbm4odmFsdWU6IGFueSk6IHZhbHVlIGlzIElucHV0IHtcbiAgcmV0dXJuIHZhbHVlLm5nTWV0YWRhdGFOYW1lID09PSAnSW5wdXQnO1xufVxuXG5mdW5jdGlvbiBzcGxpdEJ5Q29tbWEodmFsdWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIHZhbHVlLnNwbGl0KCcsJykubWFwKHBpZWNlID0+IHBpZWNlLnRyaW0oKSk7XG59XG4iXX0=
@@ -5,12 +5,21 @@
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
- import { ɵɵdefineInjectable, ɵɵdefineInjector, } from '../../di/interface/defs';
9
8
  import { ɵɵinject } from '../../di/injector_compatibility';
10
- import * as r3 from '../index';
11
- import { registerNgModuleType } from '../../linker/ng_module_factory_loader';
9
+ import { ɵɵdefineInjectable, ɵɵdefineInjector } from '../../di/interface/defs';
12
10
  import * as sanitization from '../../sanitization/sanitization';
11
+ import * as r3 from '../index';
13
12
  var ɵ0 = function () { return ({
13
+ 'ɵɵattribute': r3.ɵɵattribute,
14
+ 'ɵɵattributeInterpolate1': r3.ɵɵattributeInterpolate1,
15
+ 'ɵɵattributeInterpolate2': r3.ɵɵattributeInterpolate2,
16
+ 'ɵɵattributeInterpolate3': r3.ɵɵattributeInterpolate3,
17
+ 'ɵɵattributeInterpolate4': r3.ɵɵattributeInterpolate4,
18
+ 'ɵɵattributeInterpolate5': r3.ɵɵattributeInterpolate5,
19
+ 'ɵɵattributeInterpolate6': r3.ɵɵattributeInterpolate6,
20
+ 'ɵɵattributeInterpolate7': r3.ɵɵattributeInterpolate7,
21
+ 'ɵɵattributeInterpolate8': r3.ɵɵattributeInterpolate8,
22
+ 'ɵɵattributeInterpolateV': r3.ɵɵattributeInterpolateV,
14
23
  'ɵɵdefineBase': r3.ɵɵdefineBase,
15
24
  'ɵɵdefineComponent': r3.ɵɵdefineComponent,
16
25
  'ɵɵdefineDirective': r3.ɵɵdefineDirective,
@@ -98,20 +107,27 @@ var ɵ0 = function () { return ({
98
107
  'ɵɵloadContentQuery': r3.ɵɵloadContentQuery,
99
108
  'ɵɵreference': r3.ɵɵreference,
100
109
  'ɵɵelementHostAttrs': r3.ɵɵelementHostAttrs,
101
- 'ɵɵelementStyling': r3.ɵɵelementStyling,
102
- 'ɵɵelementStylingMap': r3.ɵɵelementStylingMap,
103
- 'ɵɵelementStyleProp': r3.ɵɵelementStyleProp,
104
- 'ɵɵelementStylingApply': r3.ɵɵelementStylingApply,
105
- 'ɵɵelementClassProp': r3.ɵɵelementClassProp,
106
- 'ɵɵelementHostStyling': r3.ɵɵelementHostStyling,
107
- 'ɵɵelementHostStylingMap': r3.ɵɵelementHostStylingMap,
108
- 'ɵɵelementHostStyleProp': r3.ɵɵelementHostStyleProp,
109
- 'ɵɵelementHostStylingApply': r3.ɵɵelementHostStylingApply,
110
- 'ɵɵelementHostClassProp': r3.ɵɵelementHostClassProp,
110
+ 'ɵɵclassMap': r3.ɵɵclassMap,
111
+ 'ɵɵstyling': r3.ɵɵstyling,
112
+ 'ɵɵstyleMap': r3.ɵɵstyleMap,
113
+ 'ɵɵstyleProp': r3.ɵɵstyleProp,
114
+ 'ɵɵstyleSanitizer': r3.ɵɵstyleSanitizer,
115
+ 'ɵɵstylingApply': r3.ɵɵstylingApply,
116
+ 'ɵɵclassProp': r3.ɵɵclassProp,
111
117
  'ɵɵselect': r3.ɵɵselect,
112
118
  'ɵɵtemplate': r3.ɵɵtemplate,
113
119
  'ɵɵtext': r3.ɵɵtext,
114
120
  'ɵɵtextBinding': r3.ɵɵtextBinding,
121
+ 'ɵɵtextInterpolate': r3.ɵɵtextInterpolate,
122
+ 'ɵɵtextInterpolate1': r3.ɵɵtextInterpolate1,
123
+ 'ɵɵtextInterpolate2': r3.ɵɵtextInterpolate2,
124
+ 'ɵɵtextInterpolate3': r3.ɵɵtextInterpolate3,
125
+ 'ɵɵtextInterpolate4': r3.ɵɵtextInterpolate4,
126
+ 'ɵɵtextInterpolate5': r3.ɵɵtextInterpolate5,
127
+ 'ɵɵtextInterpolate6': r3.ɵɵtextInterpolate6,
128
+ 'ɵɵtextInterpolate7': r3.ɵɵtextInterpolate7,
129
+ 'ɵɵtextInterpolate8': r3.ɵɵtextInterpolate8,
130
+ 'ɵɵtextInterpolateV': r3.ɵɵtextInterpolateV,
115
131
  'ɵɵembeddedViewStart': r3.ɵɵembeddedViewStart,
116
132
  'ɵɵembeddedViewEnd': r3.ɵɵembeddedViewEnd,
117
133
  'ɵɵi18n': r3.ɵɵi18n,
@@ -134,7 +150,6 @@ var ɵ0 = function () { return ({
134
150
  'ɵɵsanitizeScript': sanitization.ɵɵsanitizeScript,
135
151
  'ɵɵsanitizeUrl': sanitization.ɵɵsanitizeUrl,
136
152
  'ɵɵsanitizeUrlOrResourceUrl': sanitization.ɵɵsanitizeUrlOrResourceUrl,
137
- 'ɵregisterNgModuleType': registerNgModuleType,
138
153
  }); };
139
154
  /**
140
155
  * A mapping of the @angular/core API surface used in generated expressions to the actual symbols.
@@ -143,4 +158,4 @@ var ɵ0 = function () { return ({
143
158
  */
144
159
  export var angularCoreEnv = (ɵ0)();
145
160
  export { ɵ0 };
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9yZW5kZXIzL2ppdC9lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsZ0JBQWdCLEdBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDL0IsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDM0UsT0FBTyxLQUFLLFlBQVksTUFBTSxpQ0FBaUMsQ0FBQztTQVMzRCxjQUFNLE9BQUEsQ0FBQztJQUNMLGNBQWMsRUFBRSxFQUFFLENBQUMsWUFBWTtJQUMvQixtQkFBbUIsRUFBRSxFQUFFLENBQUMsaUJBQWlCO0lBQ3pDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxpQkFBaUI7SUFDekMsb0JBQW9CLEVBQUUsa0JBQWtCO0lBQ3hDLGtCQUFrQixFQUFFLGdCQUFnQjtJQUNwQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsZ0JBQWdCO0lBQ3ZDLGNBQWMsRUFBRSxFQUFFLENBQUMsWUFBWTtJQUMvQixtQkFBbUIsRUFBRSxFQUFFLENBQUMsaUJBQWlCO0lBQ3pDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxjQUFjO0lBQ25DLHVCQUF1QixFQUFFLEVBQUUsQ0FBQyxxQkFBcUI7SUFDakQsVUFBVSxFQUFFLFFBQVE7SUFDcEIsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLGlCQUFpQjtJQUN6Qyx3QkFBd0IsRUFBRSxFQUFFLENBQUMsc0JBQXNCO0lBQ25ELHNCQUFzQixFQUFFLEVBQUUsQ0FBQyxvQkFBb0I7SUFDL0Msb0JBQW9CLEVBQUUsRUFBRSxDQUFDLGtCQUFr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RUFBRSxZQUFZLENBQUMsMEJBQTBCO0lBRXJFLHVCQUF1QixFQUFFLG9CQUFvQjtDQUM5QyxDQUFDLEVBL0hJLENBK0hKO0FBcklQOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsSUFBTSxjQUFjLEdBQ3ZCLElBK0hJLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHvJtcm1ZGVmaW5lSW5qZWN0YWJsZSwgybXJtWRlZmluZUluamVjdG9yLH0gZnJvbSAnLi4vLi4vZGkvaW50ZXJmYWNlL2RlZnMnO1xuaW1wb3J0IHvJtcm1aW5qZWN0fSBmcm9tICcuLi8uLi9kaS9pbmplY3Rvcl9jb21wYXRpYmlsaXR5JztcbmltcG9ydCAqIGFzIHIzIGZyb20gJy4uL2luZGV4JztcbmltcG9ydCB7cmVnaXN0ZXJOZ01vZHVsZVR5cGV9IGZyb20gJy4uLy4uL2xpbmtlci9uZ19tb2R1bGVfZmFjdG9yeV9sb2FkZXInO1xuaW1wb3J0ICogYXMgc2FuaXRpemF0aW9uIGZyb20gJy4uLy4uL3Nhbml0aXphdGlvbi9zYW5pdGl6YXRpb24nO1xuXG5cbi8qKlxuICogQSBtYXBwaW5nIG9mIHRoZSBAYW5ndWxhci9jb3JlIEFQSSBzdXJmYWNlIHVzZWQgaW4gZ2VuZXJhdGVkIGV4cHJlc3Npb25zIHRvIHRoZSBhY3R1YWwgc3ltYm9scy5cbiAqXG4gKiBUaGlzIHNob3VsZCBiZSBrZXB0IHVwIHRvIGRhdGUgd2l0aCB0aGUgcHVibGljIGV4cG9ydHMgb2YgQGFuZ3VsYXIvY29yZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGFuZ3VsYXJDb3JlRW52OiB7W25hbWU6IHN0cmluZ106IEZ1bmN0aW9ufSA9XG4gICAgKCgpID0+ICh7XG4gICAgICAgJ8m1ybVkZWZpbmVCYXNlJzogcjMuybXJtWRlZmluZUJhc2UsXG4gICAgICAgJ8m1ybVkZWZpbmVDb21wb25lbnQnOiByMy7Jtcm1ZGVmaW5lQ29tcG9uZW50LFxuICAgICAgICfJtcm1ZGVmaW5lRGlyZWN0aXZlJzogcjMuybXJtWRlZmluZURpcmVjdGl2ZSxcbiAgICAgICAnybXJtWRlZmluZUluamVjdGFibGUnOiDJtcm1ZGVmaW5lSW5qZWN0YWJsZSxcbiAgICAgICAnybXJtWRlZmluZUluamVjdG9yJzogybXJtWRlZmluZUluamVjdG9yLFxuICAgICAgICfJtcm1ZGVmaW5lTmdNb2R1bGUnOiByMy7Jtcm1ZGVmaW5lTmdNb2R1bGUsXG4gICAgICAgJ8m1ybVkZWZpbmVQaXBlJzogcjMuybXJtWRlZmluZVBpcGUsXG4gICAgICAgJ8m1ybVkaXJlY3RpdmVJbmplY3QnOiByMy7Jtcm1ZGlyZWN0aXZlSW5qZWN0LFxuICAgICAgICfJtcm1Z2V0RmFjdG9yeU9mJzogcjMuybXJtWdldEZhY3RvcnlPZixcbiAgICAgICAnybXJtWdldEluaGVyaXRlZEZhY3RvcnknOiByMy7Jtcm1Z2V0SW5oZXJpdGVkRmFjdG9yeSxcbiAgICAgICAnybXJtWluamVjdCc6IMm1ybVpbmplY3QsXG4gICAgICAgJ8m1ybVpbmplY3RBdHRyaWJ1dGUnOiByMy7Jtcm1aW5qZWN0QXR0cmlidXRlLFxuICAgICAgICfJtcm1dGVtcGxhdGVSZWZFeHRyYWN0b3InOiByMy7Jtcm1dGVtcGxhdGVSZWZFeHRyYWN0b3IsXG4gICAgICAgJ8m1ybVOZ09uQ2hhbmdlc0ZlYXR1cmUnOiByMy7Jtcm1TmdPbkNoYW5nZXNGZWF0dXJlLFxuICAgICAgICfJtcm1UHJvdmlkZXJzRmVhdHVyZSc6IHIzLsm1ybVQcm92aWRlcnNGZWF0dXJlLFxuICAgICAgICfJtcm1SW5oZXJpdERlZmluaXRpb25GZWF0dXJlJzogcjMuybXJtUluaGVyaXREZWZpbml0aW9uRmVhdHVyZSxcbiAgICAgICAnybXJtWVsZW1lbnRBdHRyaWJ1dGUnOiByMy7Jtcm1ZWxlbWVudEF0dHJpYnV0ZSxcbiAgICAgICAnybXJtWJpbmQnOiByMy7Jtcm1YmluZCxcbiAgICAgICAnybXJtWNvbnRhaW5lcic6IHIzLsm1ybVjb250YWluZXIsXG4gICAgICAgJ8m1ybVuZXh0Q29udGV4dCc6IHIzLsm1ybVuZXh0Q29udGV4dCxcbiAgICAgICAnybXJtWNvbnRhaW5lclJlZnJlc2hTdGFydCc6IHIzLsm1ybVjb250YWluZXJSZWZyZXNoU3RhcnQsXG4gICAgICAgJ8m1ybVjb250YWluZXJSZWZyZXNoRW5kJzogcjMuybXJtWNvbnRhaW5lclJlZnJlc2hFbmQsXG4gICAgICAgJ8m1ybVuYW1lc3BhY2VIVE1MJzogcjMuybXJtW5hbWVzcGFjZUhUTUwsXG4gICAgICAgJ8m1ybVuYW1lc3BhY2VNYXRoTUwnOiByMy7Jtcm1bmFtZXNwYWNlTWF0aE1MLFxuICAgICAgICfJtcm1bmFtZXNwYWNlU1ZHJzogcjMuybXJtW5hbWVzcGFjZVNWRyxcbiAgICAgICAnybXJtWVuYWJsZUJpbmRpbmdzJzogcjMuybXJtWVuYWJsZUJpbmRpbmdzLFxuICAgICAgICfJtcm1ZGlzYWJsZUJpbmRpbmdzJzogcjMuybXJtWRpc2FibGVCaW5kaW5ncyxcbiAgICAgICAnybXJtWFsbG9jSG9zdFZhcnMnOiByMy7Jtcm1YWxsb2NIb3N0VmFycyxcbiAgICAgICAnybXJtWVsZW1lbnRTdGFydCc6IHIzLsm1ybVlbGVtZW50U3RhcnQsXG4gICAgICAgJ8m1ybVlbGVtZW50RW5kJzogcjMuybXJtWVsZW1lbnRFbmQsXG4gICAgICAgJ8m1ybVlbGVtZW50JzogcjMuybXJtWVsZW1lbnQsXG4gICAgICAgJ8m1ybVlbGVtZW50Q29udGFpbmVyU3RhcnQnOiByMy7Jtcm1ZWxlbWVudENvbnRhaW5lclN0YXJ0LFxuICAgICAgICfJtcm1ZWxlbWVudENvbnRhaW5lckVuZCc6IHIzLsm1ybVlbGVtZW50Q29udGFpbmVyRW5kLFxuICAgICAgICfJtcm1cHVyZUZ1bmN0aW9uMCc6IHIzLsm1ybVwdXJlRnVuY3Rpb24wLFxuICAgICAgICfJtcm1cHVyZUZ1bmN0aW9uMSc6IHIzLsm1ybVwdXJlRnVuY3Rpb24xLFxuICAgICAgICfJtcm1cHVyZUZ1bmN0aW9uMic6IHIzLsm1ybVwdXJlRnVuY3Rpb24yLFxuICAgICAgICfJtcm1cHVyZUZ1bmN0aW9uMyc6IHIzLsm1ybVwdXJlRnVuY3Rpb24zLFxuICAgICAgICfJtcm1cHVyZUZ1bmN0aW9uNCc6IHIzLsm1ybVwdXJlRnVuY3Rpb240LFxuICAgICAgICfJtcm1cHVyZUZ1bmN0aW9uNSc6IHIzLsm1ybVwdXJlRnVuY3Rpb241LFxuICAgICAgICfJtcm1cHVyZUZ1bmN0aW9uNic6IHIzLsm1ybVwdXJlRnVuY3Rpb242LFxuICAgICAgICfJtcm1cHVyZUZ1bmN0aW9uNyc6IHIzLsm1ybVwdXJlRnVuY3Rpb243LFxuICAgICAgICfJtcm1cHVyZUZ1bmN0aW9uOCc6IHIzLsm1ybVwdXJlRnVuY3Rpb244LFxuICAgICAgICfJtcm1cHVyZUZ1bmN0aW9uVic6IHIzLsm1ybVwdXJlRnVuY3Rpb25WLFxuICAgICAgICfJtcm1Z2V0Q3VycmVudFZpZXcnOiByMy7Jtcm1Z2V0Q3VycmVudFZpZXcsXG4gICAgICAgJ8m1ybVyZXN0b3JlVmlldyc6IHIzLsm1ybVyZXN0b3JlVmlldyxcbiAgICAgICAnybXJtWludGVycG9sYXRpb24xJzogcjMuybXJtWludGVycG9sYXRpb24xLFxuICAgICAgICfJtcm1aW50ZXJwb2xhdGlvbjInOiByMy7Jtcm1aW50ZXJwb2xhdGlvbjIsXG4gICAgICAgJ8m1ybVpbnRlcnBvbGF0aW9uMyc6IHIzLsm1ybVpbnRlcnBvbGF0aW9uMyxcbiAgICAgICAnybXJtWludGVycG9sYXRpb240JzogcjMuybXJtWludGVycG9sYXRpb240LFxuICAgICAgICfJtcm1aW50ZXJwb2xhdGlvbjUnOiByMy7Jtcm1aW50ZXJwb2xhdGlvbjUsXG4gICAgICAgJ8m1ybVpbnRlcnBvbGF0aW9uNic6IHIzLsm1ybVpbnRlcnBvbGF0aW9uNixcbiAgICAgICAnybXJtWludGVycG9sYXRpb243JzogcjMuybXJtWludGVycG9sYXRpb243LFxuICAgICAgICfJtcm1aW50ZXJwb2xhdGlvbjgnOiByMy7Jtcm1aW50ZXJwb2xhdGlvbjgsXG4gICAgICAgJ8m1ybVpbnRlcnBvbGF0aW9uVic6IHIzLsm1ybVpbnRlcnBvbGF0aW9uVixcbiAgICAgICAnybXJtWxpc3RlbmVyJzogcjMuybXJtWxpc3RlbmVyLFxuICAgICAgICfJtcm1bG9hZCc6IHIzLsm1ybVsb2FkLFxuICAgICAgICfJtcm1cHJvamVjdGlvbic6IHIzLsm1ybVwcm9qZWN0aW9uLFxuICAgICAgICfJtcm1ZWxlbWVudFByb3BlcnR5JzogcjMuybXJtWVsZW1lbnRQcm9wZXJ0eSxcbiAgICAgICAnybXJtWNvbXBvbmVudEhvc3RTeW50aGV0aWNQcm9wZXJ0eSc6IHIzLsm1ybVjb21wb25lbnRIb3N0U3ludGhldGljUHJvcGVydHksXG4gICAgICAgJ8m1ybVjb21wb25lbnRIb3N0U3ludGhldGljTGlzdGVuZXInOiByMy7Jtcm1Y29tcG9uZW50SG9zdFN5bnRoZXRpY0xpc3RlbmVyLFxuICAgICAgICfJtcm1cGlwZUJpbmQxJzogcjMuybXJtXBpcGVCaW5kMSxcbiAgICAgICAnybXJtXBpcGVCaW5kMic6IHIzLsm1ybVwaXBlQmluZDIsXG4gICAgICAgJ8m1ybVwaXBlQmluZDMnOiByMy7Jtcm1cGlwZUJpbmQzLFxuICAgICAgICfJtcm1cGlwZUJpbmQ0JzogcjMuybXJtXBpcGVCaW5kNCxcbiAgICAgICAnybXJtXBpcGVCaW5kVic6IHIzLsm1ybVwaXBlQmluZFYsXG4gICAgICAgJ8m1ybVwcm9qZWN0aW9uRGVmJzogcjMuybXJtXByb2plY3Rpb25EZWYsXG4gICAgICAgJ8m1ybVwcm9wZXJ0eSc6IHIzLsm1ybVwcm9wZXJ0eSxcbiAgICAgICAnybXJtXByb3BlcnR5SW50ZXJwb2xhdGUnOiByMy7Jtcm1cHJvcGVydHlJbnRlcnBvbGF0ZSxcbiAgICAgICAnybXJtXByb3BlcnR5SW50ZXJwb2xhdGUxJzogcjMuybXJtXByb3BlcnR5SW50ZXJwb2xhdGUxLFxuICAgICAgICfJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTInOiByMy7Jtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTIsXG4gICAgICAgJ8m1ybVwcm9wZXJ0eUludGVycG9sYXRlMyc6IHIzLsm1ybVwcm9wZXJ0eUludGVycG9sYXRlMyxcbiAgICAgICAnybXJtXByb3BlcnR5SW50ZXJwb2xhdGU0JzogcjMuybXJtXByb3BlcnR5SW50ZXJwb2xhdGU0LFxuICAgICAgICfJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTUnOiByMy7Jtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTUsXG4gICAgICAgJ8m1ybVwcm9wZXJ0eUludGVycG9sYXRlNic6IHIzLsm1ybVwcm9wZXJ0eUludGVycG9sYXRlNixcbiAgICAgICAnybXJtXByb3BlcnR5SW50ZXJwb2xhdGU3JzogcjMuybXJtXByb3BlcnR5SW50ZXJwb2xhdGU3LFxuICAgICAgICfJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTgnOiByMy7Jtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTgsXG4gICAgICAgJ8m1ybVwcm9wZXJ0eUludGVycG9sYXRlVic6IHIzLsm1ybVwcm9wZXJ0eUludGVycG9sYXRlVixcbiAgICAgICAnybXJtXBpcGUnOiByMy7Jtcm1cGlwZSxcbiAgICAgICAnybXJtXF1ZXJ5UmVmcmVzaCc6IHIzLsm1ybVxdWVyeVJlZnJlc2gsXG4gICAgICAgJ8m1ybV2aWV3UXVlcnknOiByMy7Jtcm1dmlld1F1ZXJ5LFxuICAgICAgICfJtcm1c3RhdGljVmlld1F1ZXJ5JzogcjMuybXJtXN0YXRpY1ZpZXdRdWVyeSxcbiAgICAgICAnybXJtXN0YXRpY0NvbnRlbnRRdWVyeSc6IHIzLsm1ybVzdGF0aWNDb250ZW50UXVlcnksXG4gICAgICAgJ8m1ybVsb2FkVmlld1F1ZXJ5JzogcjMuybXJtWxvYWRWaWV3UXVlcnksXG4gICAgICAgJ8m1ybVjb250ZW50UXVlcnknOiByMy7Jtcm1Y29udGVudFF1ZXJ5LFxuICAgICAgICfJtcm1bG9hZENvbnRlbnRRdWVyeSc6IHIzLsm1ybVsb2FkQ29udGVudFF1ZXJ5LFxuICAgICAgICfJtcm1cmVmZXJlbmNlJzogcjMuybXJtXJlZmVyZW5jZSxcbiAgICAgICAnybXJtWVsZW1lbnRIb3N0QXR0cnMnOiByMy7Jtcm1ZWxlbWVudEhvc3RBdHRycyxcbiAgICAgICAnybXJtWVsZW1lbnRTdHlsaW5nJzogcjMuybXJtWVsZW1lbnRTdHlsaW5nLFxuICAgICAgICfJtcm1ZWxlbWVudFN0eWxpbmdNYXAnOiByMy7Jtcm1ZWxlbWVudFN0eWxpbmdNYXAsXG4gICAgICAgJ8m1ybVlbGVtZW50U3R5bGVQcm9wJzogcjMuybXJtWVsZW1lbnRTdHlsZVByb3AsXG4gICAgICAgJ8m1ybVlbGVtZW50U3R5bGluZ0FwcGx5JzogcjMuybXJtWVsZW1lbnRTdHlsaW5nQXBwbHksXG4gICAgICAgJ8m1ybVlbGVtZW50Q2xhc3NQcm9wJzogcjMuybXJtWVsZW1lbnRDbGFzc1Byb3AsXG4gICAgICAgJ8m1ybVlbGVtZW50SG9zdFN0eWxpbmcnOiByMy7Jtcm1ZWxlbWVudEhvc3RTdHlsaW5nLFxuICAgICAgICfJtcm1ZWxlbWVudEhvc3RTdHlsaW5nTWFwJzogcjMuybXJtWVsZW1lbnRIb3N0U3R5bGluZ01hcCxcbiAgICAgICAnybXJtWVsZW1lbnRIb3N0U3R5bGVQcm9wJzogcjMuybXJtWVsZW1lbnRIb3N0U3R5bGVQcm9wLFxuICAgICAgICfJtcm1ZWxlbWVudEhvc3RTdHlsaW5nQXBwbHknOiByMy7Jtcm1ZWxlbWVudEhvc3RTdHlsaW5nQXBwbHksXG4gICAgICAgJ8m1ybVlbGVtZW50SG9zdENsYXNzUHJvcCc6IHIzLsm1ybVlbGVtZW50SG9zdENsYXNzUHJvcCxcbiAgICAgICAnybXJtXNlbGVjdCc6IHIzLsm1ybVzZWxlY3QsXG4gICAgICAgJ8m1ybV0ZW1wbGF0ZSc6IHIzLsm1ybV0ZW1wbGF0ZSxcbiAgICAgICAnybXJtXRleHQnOiByMy7Jtcm1dGV4dCxcbiAgICAgICAnybXJtXRleHRCaW5kaW5nJzogcjMuybXJtXRleHRCaW5kaW5nLFxuICAgICAgICfJtcm1ZW1iZWRkZWRWaWV3U3RhcnQnOiByMy7Jtcm1ZW1iZWRkZWRWaWV3U3RhcnQsXG4gICAgICAgJ8m1ybVlbWJlZGRlZFZpZXdFbmQnOiByMy7Jtcm1ZW1iZWRkZWRWaWV3RW5kLFxuICAgICAgICfJtcm1aTE4bic6IHIzLsm1ybVpMThuLFxuICAgICAgICfJtcm1aTE4bkF0dHJpYnV0ZXMnOiByMy7Jtcm1aTE4bkF0dHJpYnV0ZXMsXG4gICAgICAgJ8m1ybVpMThuRXhwJzogcjMuybXJtWkxOG5FeHAsXG4gICAgICAgJ8m1ybVpMThuU3RhcnQnOiByMy7Jtcm1aTE4blN0YXJ0LFxuICAgICAgICfJtcm1aTE4bkVuZCc6IHIzLsm1ybVpMThuRW5kLFxuICAgICAgICfJtcm1aTE4bkFwcGx5JzogcjMuybXJtWkxOG5BcHBseSxcbiAgICAgICAnybXJtWkxOG5Qb3N0cHJvY2Vzcyc6IHIzLsm1ybVpMThuUG9zdHByb2Nlc3MsXG4gICAgICAgJ8m1ybVpMThuTG9jYWxpemUnOiByMy7Jtcm1aTE4bkxvY2FsaXplLFxuICAgICAgICfJtcm1cmVzb2x2ZVdpbmRvdyc6IHIzLsm1ybVyZXNvbHZlV2luZG93LFxuICAgICAgICfJtcm1cmVzb2x2ZURvY3VtZW50JzogcjMuybXJtXJlc29sdmVEb2N1bWVudCxcbiAgICAgICAnybXJtXJlc29sdmVCb2R5JzogcjMuybXJtXJlc29sdmVCb2R5LFxuICAgICAgICfJtcm1c2V0Q29tcG9uZW50U2NvcGUnOiByMy7Jtcm1c2V0Q29tcG9uZW50U2NvcGUsXG4gICAgICAgJ8m1ybVzZXROZ01vZHVsZVNjb3BlJzogcjMuybXJtXNldE5nTW9kdWxlU2NvcGUsXG5cbiAgICAgICAnybXJtXNhbml0aXplSHRtbCc6IHNhbml0aXphdGlvbi7Jtcm1c2FuaXRpemVIdG1sLFxuICAgICAgICfJtcm1c2FuaXRpemVTdHlsZSc6IHNhbml0aXphdGlvbi7Jtcm1c2FuaXRpemVTdHlsZSxcbiAgICAgICAnybXJtWRlZmF1bHRTdHlsZVNhbml0aXplcic6IHNhbml0aXphdGlvbi7Jtcm1ZGVmYXVsdFN0eWxlU2FuaXRpemVyLFxuICAgICAgICfJtcm1c2FuaXRpemVSZXNvdXJjZVVybCc6IHNhbml0aXphdGlvbi7Jtcm1c2FuaXRpemVSZXNvdXJjZVVybCxcbiAgICAgICAnybXJtXNhbml0aXplU2NyaXB0Jzogc2FuaXRpemF0aW9uLsm1ybVzYW5pdGl6ZVNjcmlwdCxcbiAgICAgICAnybXJtXNhbml0aXplVXJsJzogc2FuaXRpemF0aW9uLsm1ybVzYW5pdGl6ZVVybCxcbiAgICAgICAnybXJtXNhbml0aXplVXJsT3JSZXNvdXJjZVVybCc6IHNhbml0aXphdGlvbi7Jtcm1c2FuaXRpemVVcmxPclJlc291cmNlVXJsLFxuXG4gICAgICAgJ8m1cmVnaXN0ZXJOZ01vZHVsZVR5cGUnOiByZWdpc3Rlck5nTW9kdWxlVHlwZSxcbiAgICAgfSkpKCk7XG4iXX0=
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9yZW5kZXIzL2ppdC9lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDekQsT0FBTyxFQUFDLGtCQUFrQixFQUFFLGdCQUFnQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDN0UsT0FBTyxLQUFLLFlBQVksTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztTQVUxQixjQUFNLE9BQUEsQ0FBQztJQUNMLGFBQWEsRUFBRSxFQUFFLENBQUMsV0FBVztJQUM3Qix5QkFBeUIsRUFBRSxFQUFFLENBQUMsdUJBQXVCO0lBQ3JELHlCQUF5QixFQUFFLEVBQUUsQ0FBQyx1QkFBdUI7SUFDckQseUJBQXlCLEVBQUUsRUFBRSxDQUFDLHVCQUF1QjtJQUNyRCx5QkFBeUIsRUFBRSxFQUFFLENBQUMsdUJBQXVCO0lBQ3JELHlCQUF5QixFQUFFLEVBQUUsQ0FBQyx1QkFBdUI7SUFDckQseUJBQXlCLEVBQUUsRUFBRSxDQUFDLHVCQUF1QjtJQUNyRCx5QkFBeUIsRUFBRSxFQUFFLENBQUMsdUJBQXVCO0lBQ3JELHlCQUF5QixFQUFFLEVBQUUsQ0FBQyx1QkFBdUI7SUFDckQseUJBQXlCLEVBQUUsRUFBRSxDQUFDLHVCQUF1QjtJQUNyRCxjQUFjLEVBQUUsRUFBRSxDQUFDLFlBQVk7SUFDL0IsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLGlCQUFpQjtJQUN6QyxtQkFBbUIsRUFBRSxFQUFFLENBQUMsaUJBQWlCO0lBQ3pDLG9CQUFvQixFQUFFLGtCQUFrQjtJQUN4QyxrQkFBa0IsRUFBRSxnQkFBZ0I7SUFDcEMsa0JBQWtCLEVBQUUsRUFBRSxDQUFD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Q0FBQyxXQUFXO0lBQzdCLFdBQVcsRUFBRSxFQUFFLENBQUMsU0FBUztJQUN6QixhQUFhLEVBQUUsRUFBRSxDQUFDLFdBQVc7SUFDN0IsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLGlCQUFpQjtJQUN6QyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsY0FBYztJQUNuQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsZUFBZTtJQUNyQyxtQkFBbUIsRUFBRSxFQUFFLENBQUMsaUJBQWlCO0lBQ3pDLGVBQWUsRUFBRSxFQUFFLENBQUMsYUFBYTtJQUNqQyxxQkFBcUIsRUFBRSxFQUFFLENBQUMsbUJBQW1CO0lBQzdDLG9CQUFvQixFQUFFLEVBQUUsQ0FBQyxrQkFBa0I7SUFFM0MsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLGNBQWM7SUFDN0MsaUJBQWlCLEVBQUUsWUFBWSxDQUFDLGVBQWU7SUFDL0MseUJBQXlCLEVBQUUsWUFBWSxDQUFDLHVCQUF1QjtJQUMvRCx1QkFBdUIsRUFBRSxZQUFZLENBQUMscUJBQXFCO0lBQzNELGtCQUFrQixFQUFFLFlBQVksQ0FBQyxnQkFBZ0I7SUFDakQsZUFBZSxFQUFFLFlBQVksQ0FBQyxhQUFhO0lBQzNDLDRCQUE0QixFQUFFLFlBQVksQ0FBQywwQkFBMEI7Q0FDdEUsQ0FBQyxFQTlJSSxDQThJSjtBQXBKUDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLElBQU0sY0FBYyxHQUN2QixJQThJSSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7ybXJtWluamVjdH0gZnJvbSAnLi4vLi4vZGkvaW5qZWN0b3JfY29tcGF0aWJpbGl0eSc7XG5pbXBvcnQge8m1ybVkZWZpbmVJbmplY3RhYmxlLCDJtcm1ZGVmaW5lSW5qZWN0b3J9IGZyb20gJy4uLy4uL2RpL2ludGVyZmFjZS9kZWZzJztcbmltcG9ydCAqIGFzIHNhbml0aXphdGlvbiBmcm9tICcuLi8uLi9zYW5pdGl6YXRpb24vc2FuaXRpemF0aW9uJztcbmltcG9ydCAqIGFzIHIzIGZyb20gJy4uL2luZGV4JztcblxuXG5cbi8qKlxuICogQSBtYXBwaW5nIG9mIHRoZSBAYW5ndWxhci9jb3JlIEFQSSBzdXJmYWNlIHVzZWQgaW4gZ2VuZXJhdGVkIGV4cHJlc3Npb25zIHRvIHRoZSBhY3R1YWwgc3ltYm9scy5cbiAqXG4gKiBUaGlzIHNob3VsZCBiZSBrZXB0IHVwIHRvIGRhdGUgd2l0aCB0aGUgcHVibGljIGV4cG9ydHMgb2YgQGFuZ3VsYXIvY29yZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGFuZ3VsYXJDb3JlRW52OiB7W25hbWU6IHN0cmluZ106IEZ1bmN0aW9ufSA9XG4gICAgKCgpID0+ICh7XG4gICAgICAgJ8m1ybVhdHRyaWJ1dGUnOiByMy7Jtcm1YXR0cmlidXRlLFxuICAgICAgICfJtcm1YXR0cmlidXRlSW50ZXJwb2xhdGUxJzogcjMuybXJtWF0dHJpYnV0ZUludGVycG9sYXRlMSxcbiAgICAgICAnybXJtWF0dHJpYnV0ZUludGVycG9sYXRlMic6IHIzLsm1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTIsXG4gICAgICAgJ8m1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTMnOiByMy7Jtcm1YXR0cmlidXRlSW50ZXJwb2xhdGUzLFxuICAgICAgICfJtcm1YXR0cmlidXRlSW50ZXJwb2xhdGU0JzogcjMuybXJtWF0dHJpYnV0ZUludGVycG9sYXRlNCxcbiAgICAgICAnybXJtWF0dHJpYnV0ZUludGVycG9sYXRlNSc6IHIzLsm1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTUsXG4gICAgICAgJ8m1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTYnOiByMy7Jtcm1YXR0cmlidXRlSW50ZXJwb2xhdGU2LFxuICAgICAgICfJtcm1YXR0cmlidXRlSW50ZXJwb2xhdGU3JzogcjMuybXJtWF0dHJpYnV0ZUludGVycG9sYXRlNyxcbiAgICAgICAnybXJtWF0dHJpYnV0ZUludGVycG9sYXRlOCc6IHIzLsm1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTgsXG4gICAgICAgJ8m1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZVYnOiByMy7Jtcm1YXR0cmlidXRlSW50ZXJwb2xhdGVWLFxuICAgICAgICfJtcm1ZGVmaW5lQmFzZSc6IHIzLsm1ybVkZWZpbmVCYXNlLFxuICAgICAgICfJtcm1ZGVmaW5lQ29tcG9uZW50JzogcjMuybXJtWRlZmluZUNvbXBvbmVudCxcbiAgICAgICAnybXJtWRlZmluZURpcmVjdGl2ZSc6IHIzLsm1ybVkZWZpbmVEaXJlY3RpdmUsXG4gICAgICAgJ8m1ybVkZWZpbmVJbmplY3RhYmxlJzogybXJtWRlZmluZUluamVjdGFibGUsXG4gICAgICAgJ8m1ybVkZWZpbmVJbmplY3Rvcic6IMm1ybVkZWZpbmVJbmplY3RvcixcbiAgICAgICAnybXJtWRlZmluZU5nTW9kdWxlJzogcjMuybXJtWRlZmluZU5nTW9kdWxlLFxuICAgICAgICfJtcm1ZGVmaW5lUGlwZSc6IHIzLsm1ybVkZWZpbmVQaXBlLFxuICAgICAgICfJtcm1ZGlyZWN0aXZlSW5qZWN0JzogcjMuybXJtWRpcmVjdGl2ZUluamVjdCxcbiAgICAgICAnybXJtWdldEZhY3RvcnlPZic6IHIzLsm1ybVnZXRGYWN0b3J5T2YsXG4gICAgICAgJ8m1ybVnZXRJbmhlcml0ZWRGYWN0b3J5JzogcjMuybXJtWdldEluaGVyaXRlZEZhY3RvcnksXG4gICAgICAgJ8m1ybVpbmplY3QnOiDJtcm1aW5qZWN0LFxuICAgICAgICfJtcm1aW5qZWN0QXR0cmlidXRlJzogcjMuybXJtWluamVjdEF0dHJpYnV0ZSxcbiAgICAgICAnybXJtXRlbXBsYXRlUmVmRXh0cmFjdG9yJzogcjMuybXJtXRlbXBsYXRlUmVmRXh0cmFjdG9yLFxuICAgICAgICfJtcm1TmdPbkNoYW5nZXNGZWF0dXJlJzogcjMuybXJtU5nT25DaGFuZ2VzRmVhdHVyZSxcbiAgICAgICAnybXJtVByb3ZpZGVyc0ZlYXR1cmUnOiByMy7Jtcm1UHJvdmlkZXJzRmVhdHVyZSxcbiAgICAgICAnybXJtUluaGVyaXREZWZpbml0aW9uRmVhdHVyZSc6IHIzLsm1ybVJbmhlcml0RGVmaW5pdGlvbkZlYXR1cmUsXG4gICAgICAgJ8m1ybVlbGVtZW50QXR0cmlidXRlJzogcjMuybXJtWVsZW1lbnRBdHRyaWJ1dGUsXG4gICAgICAgJ8m1ybViaW5kJzogcjMuybXJtWJpbmQsXG4gICAgICAgJ8m1ybVjb250YWluZXInOiByMy7Jtcm1Y29udGFpbmVyLFxuICAgICAgICfJtcm1bmV4dENvbnRleHQnOiByMy7Jtcm1bmV4dENvbnRleHQsXG4gICAgICAgJ8m1ybVjb250YWluZXJSZWZyZXNoU3RhcnQnOiByMy7Jtcm1Y29udGFpbmVyUmVmcmVzaFN0YXJ0LFxuICAgICAgICfJtcm1Y29udGFpbmVyUmVmcmVzaEVuZCc6IHIzLsm1ybVjb250YWluZXJSZWZyZXNoRW5kLFxuICAgICAgICfJtcm1bmFtZXNwYWNlSFRNTCc6IHIzLsm1ybVuYW1lc3BhY2VIVE1MLFxuICAgICAgICfJtcm1bmFtZXNwYWNlTWF0aE1MJzogcjMuybXJtW5hbWVzcGFjZU1hdGhNTCxcbiAgICAgICAnybXJtW5hbWVzcGFjZVNWRyc6IHIzLsm1ybVuYW1lc3BhY2VTVkcsXG4gICAgICAgJ8m1ybVlbmFibGVCaW5kaW5ncyc6IHIzLsm1ybVlbmFibGVCaW5kaW5ncyxcbiAgICAgICAnybXJtWRpc2FibGVCaW5kaW5ncyc6IHIzLsm1ybVkaXNhYmxlQmluZGluZ3MsXG4gICAgICAgJ8m1ybVhbGxvY0hvc3RWYXJzJzogcjMuybXJtWFsbG9jSG9zdFZhcnMsXG4gICAgICAgJ8m1ybVlbGVtZW50U3RhcnQnOiByMy7Jtcm1ZWxlbWVudFN0YXJ0LFxuICAgICAgICfJtcm1ZWxlbWVudEVuZCc6IHIzLsm1ybVlbGVtZW50RW5kLFxuICAgICAgICfJtcm1ZWxlbWVudCc6IHIzLsm1ybVlbGVtZW50LFxuICAgICAgICfJtcm1ZWxlbWVudENvbnRhaW5lclN0YXJ0JzogcjMuybXJtWVsZW1lbnRDb250YWluZXJTdGFydCxcbiAgICAgICAnybXJtWVsZW1lbnRDb250YWluZXJFbmQnOiByMy7Jtcm1ZWxlbWVudENvbnRhaW5lckVuZCxcbiAgICAgICAnybXJtXB1cmVGdW5jdGlvbjAnOiByMy7Jtcm1cHVyZUZ1bmN0aW9uMCxcbiAgICAgICAnybXJtXB1cmVGdW5jdGlvbjEnOiByMy7Jtcm1cHVyZUZ1bmN0aW9uMSxcbiAgICAgICAnybXJtXB1cmVGdW5jdGlvbjInOiByMy7Jtcm1cHVyZUZ1bmN0aW9uMixcbiAgICAgICAnybXJtXB1cmVGdW5jdGlvbjMnOiByMy7Jtcm1cHVyZUZ1bmN0aW9uMyxcbiAgICAgICAnybXJtXB1cmVGdW5jdGlvbjQnOiByMy7Jtcm1cHVyZUZ1bmN0aW9uNCxcbiAgICAgICAnybXJtXB1cmVGdW5jdGlvbjUnOiByMy7Jtcm1cHVyZUZ1bmN0aW9uNSxcbiAgICAgICAnybXJtXB1cmVGdW5jdGlvbjYnOiByMy7Jtcm1cHVyZUZ1bmN0aW9uNixcbiAgICAgICAnybXJtXB1cmVGdW5jdGlvbjcnOiByMy7Jtcm1cHVyZUZ1bmN0aW9uNyxcbiAgICAgICAnybXJtXB1cmVGdW5jdGlvbjgnOiByMy7Jtcm1cHVyZUZ1bmN0aW9uOCxcbiAgICAgICAnybXJtXB1cmVGdW5jdGlvblYnOiByMy7Jtcm1cHVyZUZ1bmN0aW9uVixcbiAgICAgICAnybXJtWdldEN1cnJlbnRWaWV3JzogcjMuybXJtWdldEN1cnJlbnRWaWV3LFxuICAgICAgICfJtcm1cmVzdG9yZVZpZXcnOiByMy7Jtcm1cmVzdG9yZVZpZXcsXG4gICAgICAgJ8m1ybVpbnRlcnBvbGF0aW9uMSc6IHIzLsm1ybVpbnRlcnBvbGF0aW9uMSxcbiAgICAgICAnybXJtWludGVycG9sYXRpb24yJzogcjMuybXJtWludGVycG9sYXRpb24yLFxuICAgICAgICfJtcm1aW50ZXJwb2xhdGlvbjMnOiByMy7Jtcm1aW50ZXJwb2xhdGlvbjMsXG4gICAgICAgJ8m1ybVpbnRlcnBvbGF0aW9uNCc6IHIzLsm1ybVpbnRlcnBvbGF0aW9uNCxcbiAgICAgICAnybXJtWludGVycG9sYXRpb241JzogcjMuybXJtWludGVycG9sYXRpb241LFxuICAgICAgICfJtcm1aW50ZXJwb2xhdGlvbjYnOiByMy7Jtcm1aW50ZXJwb2xhdGlvbjYsXG4gICAgICAgJ8m1ybVpbnRlcnBvbGF0aW9uNyc6IHIzLsm1ybVpbnRlcnBvbGF0aW9uNyxcbiAgICAgICAnybXJtWludGVycG9sYXRpb244JzogcjMuybXJtWludGVycG9sYXRpb244LFxuICAgICAgICfJtcm1aW50ZXJwb2xhdGlvblYnOiByMy7Jtcm1aW50ZXJwb2xhdGlvblYsXG4gICAgICAgJ8m1ybVsaXN0ZW5lcic6IHIzLsm1ybVsaXN0ZW5lcixcbiAgICAgICAnybXJtWxvYWQnOiByMy7Jtcm1bG9hZCxcbiAgICAgICAnybXJtXByb2plY3Rpb24nOiByMy7Jtcm1cHJvamVjdGlvbixcbiAgICAgICAnybXJtWVsZW1lbnRQcm9wZXJ0eSc6IHIzLsm1ybVlbGVtZW50UHJvcGVydHksXG4gICAgICAgJ8m1ybVjb21wb25lbnRIb3N0U3ludGhldGljUHJvcGVydHknOiByMy7Jtcm1Y29tcG9uZW50SG9zdFN5bnRoZXRpY1Byb3BlcnR5LFxuICAgICAgICfJtcm1Y29tcG9uZW50SG9zdFN5bnRoZXRpY0xpc3RlbmVyJzogcjMuybXJtWNvbXBvbmVudEhvc3RTeW50aGV0aWNMaXN0ZW5lcixcbiAgICAgICAnybXJtXBpcGVCaW5kMSc6IHIzLsm1ybVwaXBlQmluZDEsXG4gICAgICAgJ8m1ybVwaXBlQmluZDInOiByMy7Jtcm1cGlwZUJpbmQyLFxuICAgICAgICfJtcm1cGlwZUJpbmQzJzogcjMuybXJtXBpcGVCaW5kMyxcbiAgICAgICAnybXJtXBpcGVCaW5kNCc6IHIzLsm1ybVwaXBlQmluZDQsXG4gICAgICAgJ8m1ybVwaXBlQmluZFYnOiByMy7Jtcm1cGlwZUJpbmRWLFxuICAgICAgICfJtcm1cHJvamVjdGlvbkRlZic6IHIzLsm1ybVwcm9qZWN0aW9uRGVmLFxuICAgICAgICfJtcm1cHJvcGVydHknOiByMy7Jtcm1cHJvcGVydHksXG4gICAgICAgJ8m1ybVwcm9wZXJ0eUludGVycG9sYXRlJzogcjMuybXJtXByb3BlcnR5SW50ZXJwb2xhdGUsXG4gICAgICAgJ8m1ybVwcm9wZXJ0eUludGVycG9sYXRlMSc6IHIzLsm1ybVwcm9wZXJ0eUludGVycG9sYXRlMSxcbiAgICAgICAnybXJtXByb3BlcnR5SW50ZXJwb2xhdGUyJzogcjMuybXJtXByb3BlcnR5SW50ZXJwb2xhdGUyLFxuICAgICAgICfJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTMnOiByMy7Jtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTMsXG4gICAgICAgJ8m1ybVwcm9wZXJ0eUludGVycG9sYXRlNCc6IHIzLsm1ybVwcm9wZXJ0eUludGVycG9sYXRlNCxcbiAgICAgICAnybXJtXByb3BlcnR5SW50ZXJwb2xhdGU1JzogcjMuybXJtXByb3BlcnR5SW50ZXJwb2xhdGU1LFxuICAgICAgICfJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTYnOiByMy7Jtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTYsXG4gICAgICAgJ8m1ybVwcm9wZXJ0eUludGVycG9sYXRlNyc6IHIzLsm1ybVwcm9wZXJ0eUludGVycG9sYXRlNyxcbiAgICAgICAnybXJtXByb3BlcnR5SW50ZXJwb2xhdGU4JzogcjMuybXJtXByb3BlcnR5SW50ZXJwb2xhdGU4LFxuICAgICAgICfJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZVYnOiByMy7Jtcm1cHJvcGVydHlJbnRlcnBvbGF0ZVYsXG4gICAgICAgJ8m1ybVwaXBlJzogcjMuybXJtXBpcGUsXG4gICAgICAgJ8m1ybVxdWVyeVJlZnJlc2gnOiByMy7Jtcm1cXVlcnlSZWZyZXNoLFxuICAgICAgICfJtcm1dmlld1F1ZXJ5JzogcjMuybXJtXZpZXdRdWVyeSxcbiAgICAgICAnybXJtXN0YXRpY1ZpZXdRdWVyeSc6IHIzLsm1ybVzdGF0aWNWaWV3UXVlcnksXG4gICAgICAgJ8m1ybVzdGF0aWNDb250ZW50UXVlcnknOiByMy7Jtcm1c3RhdGljQ29udGVudFF1ZXJ5LFxuICAgICAgICfJtcm1bG9hZFZpZXdRdWVyeSc6IHIzLsm1ybVsb2FkVmlld1F1ZXJ5LFxuICAgICAgICfJtcm1Y29udGVudFF1ZXJ5JzogcjMuybXJtWNvbnRlbnRRdWVyeSxcbiAgICAgICAnybXJtWxvYWRDb250ZW50UXVlcnknOiByMy7Jtcm1bG9hZENvbnRlbnRRdWVyeSxcbiAgICAgICAnybXJtXJlZmVyZW5jZSc6IHIzLsm1ybVyZWZlcmVuY2UsXG4gICAgICAgJ8m1ybVlbGVtZW50SG9zdEF0dHJzJzogcjMuybXJtWVsZW1lbnRIb3N0QXR0cnMsXG4gICAgICAgJ8m1ybVjbGFzc01hcCc6IHIzLsm1ybVjbGFzc01hcCxcbiAgICAgICAnybXJtXN0eWxpbmcnOiByMy7Jtcm1c3R5bGluZyxcbiAgICAgICAnybXJtXN0eWxlTWFwJzogcjMuybXJtXN0eWxlTWFwLFxuICAgICAgICfJtcm1c3R5bGVQcm9wJzogcjMuybXJtXN0eWxlUHJvcCxcbiAgICAgICAnybXJtXN0eWxlU2FuaXRpemVyJzogcjMuybXJtXN0eWxlU2FuaXRpemVyLFxuICAgICAgICfJtcm1c3R5bGluZ0FwcGx5JzogcjMuybXJtXN0eWxpbmdBcHBseSxcbiAgICAgICAnybXJtWNsYXNzUHJvcCc6IHIzLsm1ybVjbGFzc1Byb3AsXG4gICAgICAgJ8m1ybVzZWxlY3QnOiByMy7Jtcm1c2VsZWN0LFxuICAgICAgICfJtcm1dGVtcGxhdGUnOiByMy7Jtcm1dGVtcGxhdGUsXG4gICAgICAgJ8m1ybV0ZXh0JzogcjMuybXJtXRleHQsXG4gICAgICAgJ8m1ybV0ZXh0QmluZGluZyc6IHIzLsm1ybV0ZXh0QmluZGluZyxcbiAgICAgICAnybXJtXRleHRJbnRlcnBvbGF0ZSc6IHIzLsm1ybV0ZXh0SW50ZXJwb2xhdGUsXG4gICAgICAgJ8m1ybV0ZXh0SW50ZXJwb2xhdGUxJzogcjMuybXJtXRleHRJbnRlcnBvbGF0ZTEsXG4gICAgICAgJ8m1ybV0ZXh0SW50ZXJwb2xhdGUyJzogcjMuybXJtXRleHRJbnRlcnBvbGF0ZTIsXG4gICAgICAgJ8m1ybV0ZXh0SW50ZXJwb2xhdGUzJzogcjMuybXJtXRleHRJbnRlcnBvbGF0ZTMsXG4gICAgICAgJ8m1ybV0ZXh0SW50ZXJwb2xhdGU0JzogcjMuybXJtXRleHRJbnRlcnBvbGF0ZTQsXG4gICAgICAgJ8m1ybV0ZXh0SW50ZXJwb2xhdGU1JzogcjMuybXJtXRleHRJbnRlcnBvbGF0ZTUsXG4gICAgICAgJ8m1ybV0ZXh0SW50ZXJwb2xhdGU2JzogcjMuybXJtXRleHRJbnRlcnBvbGF0ZTYsXG4gICAgICAgJ8m1ybV0ZXh0SW50ZXJwb2xhdGU3JzogcjMuybXJtXRleHRJbnRlcnBvbGF0ZTcsXG4gICAgICAgJ8m1ybV0ZXh0SW50ZXJwb2xhdGU4JzogcjMuybXJtXRleHRJbnRlcnBvbGF0ZTgsXG4gICAgICAgJ8m1ybV0ZXh0SW50ZXJwb2xhdGVWJzogcjMuybXJtXRleHRJbnRlcnBvbGF0ZVYsXG4gICAgICAgJ8m1ybVlbWJlZGRlZFZpZXdTdGFydCc6IHIzLsm1ybVlbWJlZGRlZFZpZXdTdGFydCxcbiAgICAgICAnybXJtWVtYmVkZGVkVmlld0VuZCc6IHIzLsm1ybVlbWJlZGRlZFZpZXdFbmQsXG4gICAgICAgJ8m1ybVpMThuJzogcjMuybXJtWkxOG4sXG4gICAgICAgJ8m1ybVpMThuQXR0cmlidXRlcyc6IHIzLsm1ybVpMThuQXR0cmlidXRlcyxcbiAgICAgICAnybXJtWkxOG5FeHAnOiByMy7Jtcm1aTE4bkV4cCxcbiAgICAgICAnybXJtWkxOG5TdGFydCc6IHIzLsm1ybVpMThuU3RhcnQsXG4gICAgICAgJ8m1ybVpMThuRW5kJzogcjMuybXJtWkxOG5FbmQsXG4gICAgICAgJ8m1ybVpMThuQXBwbHknOiByMy7Jtcm1aTE4bkFwcGx5LFxuICAgICAgICfJtcm1aTE4blBvc3Rwcm9jZXNzJzogcjMuybXJtWkxOG5Qb3N0cHJvY2VzcyxcbiAgICAgICAnybXJtWkxOG5Mb2NhbGl6ZSc6IHIzLsm1ybVpMThuTG9jYWxpemUsXG4gICAgICAgJ8m1ybVyZXNvbHZlV2luZG93JzogcjMuybXJtXJlc29sdmVXaW5kb3csXG4gICAgICAgJ8m1ybVyZXNvbHZlRG9jdW1lbnQnOiByMy7Jtcm1cmVzb2x2ZURvY3VtZW50LFxuICAgICAgICfJtcm1cmVzb2x2ZUJvZHknOiByMy7Jtcm1cmVzb2x2ZUJvZHksXG4gICAgICAgJ8m1ybVzZXRDb21wb25lbnRTY29wZSc6IHIzLsm1ybVzZXRDb21wb25lbnRTY29wZSxcbiAgICAgICAnybXJtXNldE5nTW9kdWxlU2NvcGUnOiByMy7Jtcm1c2V0TmdNb2R1bGVTY29wZSxcblxuICAgICAgICfJtcm1c2FuaXRpemVIdG1sJzogc2FuaXRpemF0aW9uLsm1ybVzYW5pdGl6ZUh0bWwsXG4gICAgICAgJ8m1ybVzYW5pdGl6ZVN0eWxlJzogc2FuaXRpemF0aW9uLsm1ybVzYW5pdGl6ZVN0eWxlLFxuICAgICAgICfJtcm1ZGVmYXVsdFN0eWxlU2FuaXRpemVyJzogc2FuaXRpemF0aW9uLsm1ybVkZWZhdWx0U3R5bGVTYW5pdGl6ZXIsXG4gICAgICAgJ8m1ybVzYW5pdGl6ZVJlc291cmNlVXJsJzogc2FuaXRpemF0aW9uLsm1ybVzYW5pdGl6ZVJlc291cmNlVXJsLFxuICAgICAgICfJtcm1c2FuaXRpemVTY3JpcHQnOiBzYW5pdGl6YXRpb24uybXJtXNhbml0aXplU2NyaXB0LFxuICAgICAgICfJtcm1c2FuaXRpemVVcmwnOiBzYW5pdGl6YXRpb24uybXJtXNhbml0aXplVXJsLFxuICAgICAgICfJtcm1c2FuaXRpemVVcmxPclJlc291cmNlVXJsJzogc2FuaXRpemF0aW9uLsm1ybVzYW5pdGl6ZVVybE9yUmVzb3VyY2VVcmwsXG4gICAgIH0pKSgpO1xuIl19