kepler.gl 3.1.0 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/README.md +27 -132
  2. package/dist/src/common-utils/src/data-type.d.ts +9 -1
  3. package/dist/src/components/src/common/data-table/header-cell.d.ts +1 -0
  4. package/dist/src/components/src/common/data-table/index.d.ts +1 -0
  5. package/dist/src/components/src/common/file-uploader/file-drop.d.ts +1 -32
  6. package/dist/src/components/src/common/item-selector/dropdown-list.d.ts +2 -2
  7. package/dist/src/components/src/common/item-selector/item-selector.d.ts +1 -1
  8. package/dist/src/components/src/common/item-selector/typeahead.d.ts +1 -1
  9. package/dist/src/components/src/geocoder/geocoder.d.ts +7 -0
  10. package/dist/src/components/src/geocoder-panel.d.ts +2 -2
  11. package/dist/src/components/src/hooks/use-fetch-vector-tile-metadata.d.ts +4 -3
  12. package/dist/src/constants/src/default-settings.d.ts +14 -1
  13. package/dist/src/deckgl-arrow-layers/src/constants.d.ts +0 -12
  14. package/dist/src/deckgl-arrow-layers/src/index.d.ts +0 -1
  15. package/dist/src/deckgl-arrow-layers/src/utils/utils.d.ts +12 -1
  16. package/dist/src/duckdb/src/components/preview-data-panel.d.ts +7 -2
  17. package/dist/src/duckdb/src/components/schema-panel.d.ts +12 -3
  18. package/dist/src/duckdb/src/processors/data-processor.d.ts +1 -0
  19. package/dist/src/duckdb/src/table/duckdb-table-utils.d.ts +106 -0
  20. package/dist/src/duckdb/src/table/duckdb-table.d.ts +5 -3
  21. package/dist/src/processors/src/data-processor.d.ts +15 -1
  22. package/dist/src/reducers/src/provider-state-updaters.d.ts +1 -0
  23. package/dist/src/reducers/src/vis-state-updaters.d.ts +1 -1
  24. package/dist/src/table/src/dataset-utils.d.ts +1 -1
  25. package/dist/src/table/src/tileset/vector-tile-utils.d.ts +17 -1
  26. package/dist/src/utils/src/application-config.d.ts +4 -3
  27. package/dist/src/utils/src/data-utils.d.ts +9 -3
  28. package/dist/src/utils/src/indexed-data-container.d.ts +2 -2
  29. package/dist/src/utils/src/map-style-utils/mapbox-utils.d.ts +1 -1
  30. package/dist/src/utils/src/map-utils.d.ts +1 -1
  31. package/dist/src/utils/src/plot.d.ts +2 -2
  32. package/package.json +5 -5
  33. package/src/actions/package.json +8 -8
  34. package/src/ai-assistant/dist/components/ai-assistant-component.js +2 -1
  35. package/src/ai-assistant/package.json +7 -7
  36. package/src/ai-assistant/src/components/ai-assistant-component.tsx +1 -0
  37. package/src/cloud-providers/package.json +2 -2
  38. package/src/common-utils/dist/data-type.d.ts +9 -1
  39. package/src/common-utils/dist/data-type.js +50 -1
  40. package/src/common-utils/package.json +3 -3
  41. package/src/common-utils/src/data-type.ts +49 -1
  42. package/src/components/dist/common/data-table/header-cell.d.ts +1 -0
  43. package/src/components/dist/common/data-table/header-cell.js +2 -2
  44. package/src/components/dist/common/data-table/index.d.ts +1 -0
  45. package/src/components/dist/common/data-table/index.js +5 -1
  46. package/src/components/dist/common/file-uploader/file-drop.d.ts +1 -32
  47. package/src/components/dist/common/file-uploader/file-drop.js +152 -167
  48. package/src/components/dist/common/item-selector/dropdown-list.d.ts +2 -2
  49. package/src/components/dist/common/item-selector/dropdown-list.js +2 -3
  50. package/src/components/dist/common/item-selector/item-selector.d.ts +1 -1
  51. package/src/components/dist/common/item-selector/typeahead.d.ts +1 -1
  52. package/src/components/dist/common/range-brush.js +3 -3
  53. package/src/components/dist/geocoder/geocoder.d.ts +7 -0
  54. package/src/components/dist/geocoder/geocoder.js +19 -11
  55. package/src/components/dist/geocoder-panel.d.ts +2 -2
  56. package/src/components/dist/geocoder-panel.js +64 -91
  57. package/src/components/dist/hooks/use-fetch-vector-tile-metadata.d.ts +4 -3
  58. package/src/components/dist/hooks/use-fetch-vector-tile-metadata.js +35 -26
  59. package/src/components/dist/hooks/use-legend-position.js +8 -4
  60. package/src/components/dist/map/map-legend-panel.js +2 -3
  61. package/src/components/dist/modal-container.js +8 -8
  62. package/src/components/dist/modals/tilesets-modals/tileset-vector-form.js +31 -12
  63. package/src/components/dist/side-panel/layer-panel/color-palette-preset.js +2 -2
  64. package/src/components/dist/side-panel/layer-panel/color-range-selector.js +10 -11
  65. package/src/components/dist/side-panel/layer-panel/color-selector.js +3 -3
  66. package/src/components/dist/side-panel/layer-panel/custom-palette.js +1 -2
  67. package/src/components/dist/side-panel/layer-panel/layer-configurator.js +6 -8
  68. package/src/components/dist/side-panel/layer-panel/vector-tile-layer-configurator.js +1 -2
  69. package/src/components/package.json +16 -16
  70. package/src/components/src/common/data-table/header-cell.tsx +2 -1
  71. package/src/components/src/common/data-table/index.tsx +4 -0
  72. package/src/components/src/common/file-uploader/file-drop.tsx +186 -161
  73. package/src/components/src/common/item-selector/dropdown-list.tsx +1 -6
  74. package/src/components/src/common/range-brush.tsx +2 -2
  75. package/src/components/src/geocoder/geocoder.tsx +16 -8
  76. package/src/components/src/geocoder-panel.tsx +95 -85
  77. package/src/components/src/hooks/use-fetch-vector-tile-metadata.ts +27 -25
  78. package/src/components/src/hooks/use-legend-position.ts +5 -2
  79. package/src/components/src/map/map-legend-panel.tsx +1 -2
  80. package/src/components/src/modal-container.tsx +7 -7
  81. package/src/components/src/modals/tilesets-modals/tileset-vector-form.tsx +12 -3
  82. package/src/components/src/side-panel/layer-panel/color-palette-preset.tsx +1 -1
  83. package/src/components/src/side-panel/layer-panel/color-range-selector.tsx +6 -11
  84. package/src/components/src/side-panel/layer-panel/color-selector.tsx +2 -2
  85. package/src/components/src/side-panel/layer-panel/custom-palette.tsx +0 -1
  86. package/src/components/src/side-panel/layer-panel/layer-configurator.tsx +23 -33
  87. package/src/components/src/side-panel/layer-panel/vector-tile-layer-configurator.tsx +0 -1
  88. package/src/constants/dist/default-settings.d.ts +14 -1
  89. package/src/constants/dist/default-settings.js +20 -5
  90. package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/91/4f/6c65f3a1eba584ffd2d892cabc25ab5804d4a9ef53694c98707372a83e56343a274bec04f15927a6fe7602615f0f23f73ccf599f524ef97ad6c77c8832ea +1 -0
  91. package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/a6/b2/5424aa4477192fb44cc90fd80892efdc96731f2ff0f48e8f28abf64243cc +2 -0
  92. package/src/constants/package.json +2 -2
  93. package/src/constants/src/default-settings.ts +16 -1
  94. package/src/constants/umd/keplergl.min.js +2 -2
  95. package/src/deckgl-arrow-layers/dist/constants.d.ts +0 -12
  96. package/src/deckgl-arrow-layers/dist/constants.js +4 -15
  97. package/src/deckgl-arrow-layers/dist/index.d.ts +0 -1
  98. package/src/deckgl-arrow-layers/dist/index.js +1 -8
  99. package/src/deckgl-arrow-layers/dist/layers/geo-arrow-scatterplot-layer.js +4 -4
  100. package/src/deckgl-arrow-layers/dist/layers/geo-arrow-text-layer.js +5 -5
  101. package/src/deckgl-arrow-layers/dist/utils/utils.d.ts +12 -1
  102. package/src/deckgl-arrow-layers/dist/utils/utils.js +7 -5
  103. package/src/deckgl-arrow-layers/package.json +2 -1
  104. package/src/deckgl-arrow-layers/src/constants.ts +0 -13
  105. package/src/deckgl-arrow-layers/src/index.ts +0 -2
  106. package/src/deckgl-arrow-layers/src/layers/geo-arrow-scatterplot-layer.ts +5 -3
  107. package/src/deckgl-arrow-layers/src/layers/geo-arrow-text-layer.ts +8 -4
  108. package/src/deckgl-arrow-layers/src/utils/utils.ts +7 -5
  109. package/src/deckgl-layers/dist/deckgl-extensions/filter-arrow-layer.d.ts +1 -1
  110. package/src/deckgl-layers/dist/deckgl-extensions/filter-shader-module.d.ts +1 -1
  111. package/src/deckgl-layers/dist/deckgl-extensions/filter-shader-module.js +3 -3
  112. package/src/deckgl-layers/package.json +5 -5
  113. package/src/deckgl-layers/src/deckgl-extensions/filter-shader-module.ts +4 -3
  114. package/src/duckdb/dist/components/monaco-editor.js +4 -5
  115. package/src/duckdb/dist/components/preview-data-panel.d.ts +7 -2
  116. package/src/duckdb/dist/components/preview-data-panel.js +7 -8
  117. package/src/duckdb/dist/components/schema-panel.d.ts +12 -3
  118. package/src/duckdb/dist/components/schema-panel.js +41 -24
  119. package/src/duckdb/dist/components/sql-panel.js +245 -56
  120. package/src/duckdb/dist/init.js +20 -14
  121. package/src/duckdb/dist/processors/data-processor.d.ts +1 -0
  122. package/src/duckdb/dist/processors/data-processor.js +4 -4
  123. package/src/duckdb/dist/table/duckdb-table-utils.d.ts +106 -0
  124. package/src/duckdb/dist/table/duckdb-table-utils.js +493 -2
  125. package/src/duckdb/dist/table/duckdb-table.d.ts +5 -3
  126. package/src/duckdb/dist/table/duckdb-table.js +153 -261
  127. package/src/duckdb/package.json +6 -6
  128. package/src/duckdb/src/components/monaco-editor.tsx +3 -3
  129. package/src/duckdb/src/components/preview-data-panel.tsx +15 -8
  130. package/src/duckdb/src/components/schema-panel.tsx +92 -21
  131. package/src/duckdb/src/components/sql-panel.tsx +160 -22
  132. package/src/duckdb/src/init.ts +4 -1
  133. package/src/duckdb/src/processors/data-processor.ts +2 -2
  134. package/src/duckdb/src/table/duckdb-table-utils.ts +407 -1
  135. package/src/duckdb/src/table/duckdb-table.ts +61 -92
  136. package/src/effects/package.json +5 -5
  137. package/src/layers/dist/arc-layer/arc-layer.d.ts +1 -1
  138. package/src/layers/dist/arc-layer/arc-layer.js +2 -3
  139. package/src/layers/dist/base-layer.d.ts +7 -6
  140. package/src/layers/dist/base-layer.js +36 -19
  141. package/src/layers/dist/geojson-layer/geojson-layer.js +4 -2
  142. package/src/layers/dist/geojson-layer/geojson-utils.js +10 -3
  143. package/src/layers/dist/heatmap-layer/heatmap-layer.d.ts +2 -0
  144. package/src/layers/dist/heatmap-layer/heatmap-layer.js +16 -9
  145. package/src/layers/dist/icon-layer/icon-layer.d.ts +6 -3
  146. package/src/layers/dist/icon-layer/icon-layer.js +19 -11
  147. package/src/layers/dist/index.d.ts +1 -1
  148. package/src/layers/dist/index.js +1 -1
  149. package/src/layers/dist/layer-text-label.d.ts +9 -0
  150. package/src/layers/dist/layer-text-label.js +51 -6
  151. package/src/layers/dist/layer-utils.d.ts +39 -30
  152. package/src/layers/dist/layer-utils.js +69 -9
  153. package/src/layers/dist/line-layer/line-layer.d.ts +1 -1
  154. package/src/layers/dist/line-layer/line-layer.js +2 -3
  155. package/src/layers/dist/point-layer/point-layer.d.ts +10 -7
  156. package/src/layers/dist/point-layer/point-layer.js +16 -8
  157. package/src/layers/dist/trip-layer/trip-layer.d.ts +2 -2
  158. package/src/layers/dist/trip-layer/trip-layer.js +4 -2
  159. package/src/layers/dist/vector-tile/abstract-tile-layer.d.ts +3 -7
  160. package/src/layers/dist/vector-tile/abstract-tile-layer.js +7 -6
  161. package/src/layers/dist/vector-tile/vector-tile-layer.d.ts +5 -7
  162. package/src/layers/dist/vector-tile/vector-tile-layer.js +23 -2
  163. package/src/layers/package.json +11 -10
  164. package/src/layers/src/arc-layer/arc-layer.ts +1 -1
  165. package/src/layers/src/base-layer.ts +50 -9
  166. package/src/layers/src/geojson-layer/geojson-layer.ts +3 -1
  167. package/src/layers/src/geojson-layer/geojson-utils.ts +4 -1
  168. package/src/layers/src/heatmap-layer/heatmap-layer.ts +17 -12
  169. package/src/layers/src/icon-layer/icon-layer.ts +7 -3
  170. package/src/layers/src/index.ts +1 -2
  171. package/src/layers/src/layer-text-label.ts +53 -4
  172. package/src/layers/src/layer-utils.ts +88 -9
  173. package/src/layers/src/line-layer/line-layer.ts +1 -1
  174. package/src/layers/src/point-layer/point-layer.ts +15 -11
  175. package/src/layers/src/trip-layer/trip-layer.ts +4 -2
  176. package/src/layers/src/vector-tile/abstract-tile-layer.ts +11 -5
  177. package/src/layers/src/vector-tile/vector-tile-layer.ts +33 -4
  178. package/src/localization/package.json +1 -1
  179. package/src/processors/dist/data-processor.d.ts +15 -1
  180. package/src/processors/dist/data-processor.js +104 -11
  181. package/src/processors/package.json +8 -7
  182. package/src/processors/src/data-processor.ts +116 -13
  183. package/src/reducers/dist/export-utils.js +2 -2
  184. package/src/reducers/dist/layer-utils.js +1 -1
  185. package/src/reducers/dist/provider-state-updaters.d.ts +1 -0
  186. package/src/reducers/dist/provider-state-updaters.js +5 -2
  187. package/src/reducers/dist/vis-state-updaters.d.ts +1 -1
  188. package/src/reducers/dist/vis-state-updaters.js +23 -12
  189. package/src/reducers/package.json +16 -16
  190. package/src/reducers/src/export-utils.ts +1 -1
  191. package/src/reducers/src/layer-utils.ts +2 -1
  192. package/src/reducers/src/provider-state-updaters.ts +4 -1
  193. package/src/reducers/src/vis-state-updaters.ts +45 -10
  194. package/src/schemas/dist/dataset-schema.js +35 -6
  195. package/src/schemas/package.json +7 -7
  196. package/src/schemas/src/dataset-schema.ts +36 -8
  197. package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/a3/a9/7f26bbc52905b0e21e9366a30ef0ba98f4ccf9aa8dd8326d90ba90191ba2e305323f505bf134c825356156c793bf9386ed2cef2aeb48eb327c26d106f69a +1 -0
  198. package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/7e/51/b8756555a0e2e696d944445ac23f7febf769006013fbc8419f39a701649d +2 -0
  199. package/src/styles/package.json +2 -2
  200. package/src/styles/umd/keplergl.min.js +2 -2
  201. package/src/table/dist/dataset-utils.js +23 -14
  202. package/src/table/dist/src/table/src/dataset-utils.d.ts +1 -1
  203. package/src/table/dist/src/table/src/tileset/vector-tile-utils.d.ts +17 -1
  204. package/src/table/dist/tileset/vector-tile-utils.js +122 -2
  205. package/src/table/package.json +5 -5
  206. package/src/table/src/dataset-utils.ts +16 -6
  207. package/src/table/src/tileset/vector-tile-utils.ts +131 -8
  208. package/src/tasks/package.json +2 -2
  209. package/src/types/actions.d.ts +1 -0
  210. package/src/types/layers.d.ts +1 -0
  211. package/src/types/package.json +1 -1
  212. package/src/types/types.d.ts +17 -0
  213. package/src/utils/dist/application-config.d.ts +4 -3
  214. package/src/utils/dist/application-config.js +3 -2
  215. package/src/utils/dist/data-scale-utils.js +4 -4
  216. package/src/utils/dist/data-utils.d.ts +9 -3
  217. package/src/utils/dist/data-utils.js +40 -7
  218. package/src/utils/dist/dataset-utils.js +23 -8
  219. package/src/utils/dist/indexed-data-container.d.ts +2 -2
  220. package/src/utils/dist/indexed-data-container.js +1 -1
  221. package/src/utils/dist/map-style-utils/mapbox-utils.d.ts +1 -1
  222. package/src/utils/dist/map-style-utils/mapbox-utils.js +3 -3
  223. package/src/utils/dist/plot.d.ts +2 -2
  224. package/src/utils/dist/plot.js +6 -6
  225. package/src/utils/map-utils.spec.js +1 -2
  226. package/src/utils/package.json +5 -4
  227. package/src/utils/src/application-config.ts +11 -8
  228. package/src/utils/src/data-scale-utils.ts +3 -3
  229. package/src/utils/src/data-utils.ts +36 -7
  230. package/src/utils/src/dataset-utils.ts +41 -9
  231. package/src/utils/src/indexed-data-container.ts +1 -1
  232. package/src/utils/src/map-style-utils/mapbox-utils.ts +2 -2
  233. package/src/utils/src/plot.ts +5 -5
  234. package/umd/keplergl.min.js +1279 -1295
@@ -217,8 +217,7 @@ var LineLayer = exports["default"] = /*#__PURE__*/function (_ArcLayer) {
217
217
  }], [{
218
218
  key: "findDefaultLayerProps",
219
219
  value: function findDefaultLayerProps(_ref2) {
220
- var fields = _ref2.fields,
221
- _ref2$fieldPairs = _ref2.fieldPairs,
220
+ var _ref2$fieldPairs = _ref2.fieldPairs,
222
221
  fieldPairs = _ref2$fieldPairs === void 0 ? [] : _ref2$fieldPairs;
223
222
  if (fieldPairs.length < 2) {
224
223
  return {
@@ -256,4 +255,4 @@ var LineLayer = exports["default"] = /*#__PURE__*/function (_ArcLayer) {
256
255
  }
257
256
  }]);
258
257
  }(_arcLayer["default"]);
259
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXh0ZW5zaW9ucyIsInJlcXVpcmUiLCJfZGVja2dsQXJyb3dMYXllcnMiLCJfZGVja2dsTGF5ZXJzIiwiX2xpbmVMYXllckljb24iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2FyY0xheWVyIiwiX2NvbnN0YW50cyIsIl91dGlscyIsIl9jYWxsU3VwZXIiLCJ0IiwibyIsImUiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsImFwcGx5IiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJjYWxsIiwiX3N1cGVyUHJvcEdldCIsInIiLCJwIiwiX2dldDIiLCJvd25LZXlzIiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsImxpbmVSZXF1aXJlZENvbHVtbnMiLCJleHBvcnRzIiwibGluZU9wdGlvbmFsQ29sdW1ucyIsIm5laWdoYm9yUmVxdWlyZWRDb2x1bW5zIiwibmVpZ2hib3JPcHRpb25hbENvbHVtbnMiLCJnZW9hcnJvd1JlcXVpcmVkQ29sdW1ucyIsImxpbmVDb2x1bW5MYWJlbHMiLCJsYXQwIiwibG5nMCIsImxhdDEiLCJsbmcxIiwiYWx0MCIsImFsdDEiLCJsaW5lVmlzQ29uZmlncyIsIm9wYWNpdHkiLCJ0aGlja25lc3MiLCJjb2xvclJhbmdlIiwic2l6ZVJhbmdlIiwidGFyZ2V0Q29sb3IiLCJlbGV2YXRpb25TY2FsZSIsIkxBWUVSX1ZJU19DT05GSUdTIiwiZGVmYXVsdFZhbHVlIiwiQ09MVU1OX01PREVfUE9JTlRTIiwiQ09MVU1OX01PREVfTkVJR0hCT1JTIiwiQ09MVU1OX01PREVfR0VPQVJST1ciLCJTVVBQT1JURURfQ09MVU1OX01PREVTIiwia2V5IiwibGFiZWwiLCJyZXF1aXJlZENvbHVtbnMiLCJvcHRpb25hbENvbHVtbnMiLCJicnVzaGluZ0V4dGVuc2lvbiIsIkJydXNoaW5nRXh0ZW5zaW9uIiwiYXJyb3dDUFVGaWx0ZXJFeHRlbnNpb24iLCJGaWx0ZXJBcnJvd0V4dGVuc2lvbiIsImxpbmVQb3NBY2Nlc3NvciIsIl9yZWYiLCJjb2x1bW5Nb2RlIiwibGF0IiwibG5nIiwiYWx0IiwiZ2VvYXJyb3cwIiwiZ2VvYXJyb3cxIiwiZGMiLCJkIiwic3RhcnQiLCJ2YWx1ZUF0IiwiaW5kZXgiLCJmaWVsZElkeCIsImVuZCIsImdldCIsInN0YXJ0UG9zIiwibWF5YmVIZXhUb0dlbyIsImVuZFBvcyIsIkxpbmVMYXllciIsIl9BcmNMYXllciIsInByb3BzIiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwicmVnaXN0ZXJWaXNDb25maWciLCJnZXRQb3NpdGlvbkFjY2Vzc29yIiwiZGF0YUNvbnRhaW5lciIsImNvbmZpZyIsImNvbHVtbnMiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsIkxpbmVMYXllckljb24iLCJkZWZhdWx0TGlua0NvbHVtblBhaXJzIiwidmlzdWFsQ2hhbm5lbHMiLCJzb3VyY2VDb2xvciIsImFjY2Vzc29yIiwidmFsdWUiLCJyZW5kZXJMYXllciIsIm9wdHMiLCJkYXRhIiwiZ3B1RmlsdGVyIiwib2JqZWN0SG92ZXJlZCIsImludGVyYWN0aW9uQ29uZmlnIiwiZGF0YXNldCIsImxheWVyUHJvcHMiLCJ3aWR0aFNjYWxlIiwidmlzQ29uZmlnIiwiUFJPSkVDVEVEX1BJWEVMX1NJWkVfTVVMVElQTElFUiIsInVwZGF0ZVRyaWdnZXJzIiwiZ2V0UG9zaXRpb24iLCJnZXRGaWx0ZXJWYWx1ZSIsImZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnMiLCJnZXRGaWx0ZXJlZCIsImZpbHRlcmVkSW5kZXhUcmlnZ2VyIiwiZ2V0VmlzdWFsQ2hhbm5lbFVwZGF0ZVRyaWdnZXJzIiwiZGVmYXVsdExheWVyUHJvcHMiLCJnZXREZWZhdWx0RGVja0xheWVyUHJvcHMiLCJob3ZlcmVkT2JqZWN0IiwiaGFzSG92ZXJlZE9iamVjdCIsInVzZUFycm93TGF5ZXIiLCJnZW9BcnJvd1ZlY3RvcjAiLCJMaW5lTGF5ZXJDbGFzcyIsIkVuaGFuY2VkTGluZUxheWVyIiwiZXhwZXJpbWVudGFsUHJvcE92ZXJyaWRlcyIsIkdlb0Fycm93QXJjTGF5ZXIiLCJnZXRUYWJsZSIsImdldFNvdXJjZVBvc2l0aW9uIiwiZ2V0VGFyZ2V0UG9zaXRpb24iLCJnZW9BcnJvd1ZlY3RvcjEiLCJnZXRCcnVzaGluZ0V4dGVuc2lvblByb3BzIiwiZXh0ZW5zaW9ucyIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJfc3ViTGF5ZXJQcm9wcyIsInR5cGUiLCJnZXREZWZhdWx0SG92ZXJMYXllclByb3BzIiwiZ2V0Q29sb3IiLCJoaWdobGlnaHRDb2xvciIsImdldFRhcmdldENvbG9yIiwiZ2V0V2lkdGgiLCJnZXRMZWdlbmRWaXN1YWxDaGFubmVscyIsIl9jaGFubmVscyRzb3VyY2VDb2xvciIsImNoYW5uZWxzIiwiZmllbGQiLCJmaW5kRGVmYXVsdExheWVyUHJvcHMiLCJfcmVmMiIsImZpZWxkcyIsIl9yZWYyJGZpZWxkUGFpcnMiLCJmaWVsZFBhaXJzIiwiZGVmYXVsdEFsdENvbHVtbiIsIm9wdGlvbmFsIiwicGFpciIsImFsdGl0dWRlIiwibmVpZ2hib3JzIiwiZGVmYXVsdE5hbWUiLCJpc1Zpc2libGUiLCJBcmNMYXllciJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saW5lLWxheWVyL2xpbmUtbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0ICogYXMgYXJyb3cgZnJvbSAnYXBhY2hlLWFycm93JztcblxuaW1wb3J0IHtCcnVzaGluZ0V4dGVuc2lvbn0gZnJvbSAnQGRlY2suZ2wvZXh0ZW5zaW9ucyc7XG5cbmltcG9ydCB7R2VvQXJyb3dBcmNMYXllcn0gZnJvbSAnQGtlcGxlci5nbC9kZWNrZ2wtYXJyb3ctbGF5ZXJzJztcbmltcG9ydCB7RmlsdGVyQXJyb3dFeHRlbnNpb259IGZyb20gJ0BrZXBsZXIuZ2wvZGVja2dsLWxheWVycyc7XG5pbXBvcnQge0VuaGFuY2VkTGluZUxheWVyfSBmcm9tICdAa2VwbGVyLmdsL2RlY2tnbC1sYXllcnMnO1xuaW1wb3J0IExpbmVMYXllckljb24gZnJvbSAnLi9saW5lLWxheWVyLWljb24nO1xuaW1wb3J0IHtWaXN1YWxDaGFubmVsfSBmcm9tICcuLi9iYXNlLWxheWVyJztcbmltcG9ydCBBcmNMYXllciwge0FyY0xheWVyQ29uZmlnfSBmcm9tICcuLi9hcmMtbGF5ZXIvYXJjLWxheWVyJztcbmltcG9ydCB7TEFZRVJfVklTX0NPTkZJR1MsIFBST0pFQ1RFRF9QSVhFTF9TSVpFX01VTFRJUExJRVJ9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIENvbG9yUmFuZ2UsXG4gIE1lcmdlLFxuICBSR0JDb2xvcixcbiAgVmlzQ29uZmlnQ29sb3JSYW5nZSxcbiAgVmlzQ29uZmlnQ29sb3JTZWxlY3QsXG4gIFZpc0NvbmZpZ051bWJlcixcbiAgVmlzQ29uZmlnUmFuZ2UsXG4gIExheWVyQ29sdW1uXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtkZWZhdWx0IGFzIEtlcGxlclRhYmxlfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB7RGF0YUNvbnRhaW5lckludGVyZmFjZSwgbWF5YmVIZXhUb0dlb30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmV4cG9ydCB0eXBlIExpbmVMYXllclZpc0NvbmZpZ1NldHRpbmdzID0ge1xuICBvcGFjaXR5OiBWaXNDb25maWdOdW1iZXI7XG4gIHRoaWNrbmVzczogVmlzQ29uZmlnTnVtYmVyO1xuICBjb2xvclJhbmdlOiBWaXNDb25maWdDb2xvclJhbmdlO1xuICBzaXplUmFuZ2U6IFZpc0NvbmZpZ1JhbmdlO1xuICB0YXJnZXRDb2xvcjogVmlzQ29uZmlnQ29sb3JTZWxlY3Q7XG4gIGVsZXZhdGlvblNjYWxlOiBWaXNDb25maWdOdW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBMaW5lTGF5ZXJDb2x1bW5zQ29uZmlnID0ge1xuICAvLyBDT0xVTU5fTU9ERV9QT0lOVFMgcmVxdWlyZWQgY29sdW1uc1xuICBsYXQwOiBMYXllckNvbHVtbjtcbiAgbG5nMDogTGF5ZXJDb2x1bW47XG4gIGxhdDE6IExheWVyQ29sdW1uO1xuICBsbmcxOiBMYXllckNvbHVtbjtcbiAgYWx0MD86IExheWVyQ29sdW1uO1xuICBhbHQxPzogTGF5ZXJDb2x1bW47XG5cbiAgLy8gQ09MVU1OX01PREVfTkVJR0hCT1JTIHJlcXVpcmVkIGNvbHVtbnNcbiAgbGF0OiBMYXllckNvbHVtbjtcbiAgbG5nOiBMYXllckNvbHVtbjtcbiAgYWx0OiBMYXllckNvbHVtbjtcbiAgbmVpZ2hib3JzOiBMYXllckNvbHVtbjtcblxuICAvLyBDT0xVTU5fTU9ERV9HRU9BUlJPV1xuICBnZW9hcnJvdzA6IExheWVyQ29sdW1uO1xuICBnZW9hcnJvdzE6IExheWVyQ29sdW1uO1xufTtcblxuZXhwb3J0IHR5cGUgTGluZUxheWVyVmlzQ29uZmlnID0ge1xuICBjb2xvclJhbmdlOiBDb2xvclJhbmdlO1xuICBvcGFjaXR5OiBudW1iZXI7XG4gIHNpemVSYW5nZTogW251bWJlciwgbnVtYmVyXTtcbiAgdGFyZ2V0Q29sb3I6IFJHQkNvbG9yO1xuICB0aGlja25lc3M6IG51bWJlcjtcbiAgZWxldmF0aW9uU2NhbGU6IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIExpbmVMYXllckNvbmZpZyA9IE1lcmdlPFxuICBBcmNMYXllckNvbmZpZyxcbiAge2NvbHVtbnM6IExpbmVMYXllckNvbHVtbnNDb25maWc7IHZpc0NvbmZpZzogTGluZUxheWVyVmlzQ29uZmlnfVxuPjtcblxuZXhwb3J0IGNvbnN0IGxpbmVSZXF1aXJlZENvbHVtbnM6IFsnbGF0MCcsICdsbmcwJywgJ2xhdDEnLCAnbG5nMSddID0gW1xuICAnbGF0MCcsXG4gICdsbmcwJyxcbiAgJ2xhdDEnLFxuICAnbG5nMSdcbl07XG5leHBvcnQgY29uc3QgbGluZU9wdGlvbmFsQ29sdW1uczogWydhbHQwJywgJ2FsdDEnXSA9IFsnYWx0MCcsICdhbHQxJ107XG5leHBvcnQgY29uc3QgbmVpZ2hib3JSZXF1aXJlZENvbHVtbnMgPSBbJ2xhdCcsICdsbmcnLCAnbmVpZ2hib3JzJ107XG5leHBvcnQgY29uc3QgbmVpZ2hib3JPcHRpb25hbENvbHVtbnMgPSBbJ2FsdCddO1xuZXhwb3J0IGNvbnN0IGdlb2Fycm93UmVxdWlyZWRDb2x1bW5zID0gWydnZW9hcnJvdzAnLCAnZ2VvYXJyb3cxJ107XG5cbmV4cG9ydCBjb25zdCBsaW5lQ29sdW1uTGFiZWxzID0ge1xuICBsYXQwOiAnYXJjLmxhdDAnLFxuICBsbmcwOiAnYXJjLmxuZzAnLFxuICBsYXQxOiAnYXJjLmxhdDEnLFxuICBsbmcxOiAnYXJjLmxuZzEnLFxuICBhbHQwOiAnbGluZS5hbHQwJyxcbiAgYWx0MTogJ2xpbmUuYWx0MSdcbn07XG5cbmV4cG9ydCBjb25zdCBsaW5lVmlzQ29uZmlnczoge1xuICBvcGFjaXR5OiAnb3BhY2l0eSc7XG4gIHRoaWNrbmVzczogJ3RoaWNrbmVzcyc7XG4gIGNvbG9yUmFuZ2U6ICdjb2xvclJhbmdlJztcbiAgc2l6ZVJhbmdlOiAnc3Ryb2tlV2lkdGhSYW5nZSc7XG4gIHRhcmdldENvbG9yOiAndGFyZ2V0Q29sb3InO1xuICBlbGV2YXRpb25TY2FsZTogVmlzQ29uZmlnTnVtYmVyO1xufSA9IHtcbiAgb3BhY2l0eTogJ29wYWNpdHknLFxuICB0aGlja25lc3M6ICd0aGlja25lc3MnLFxuICBjb2xvclJhbmdlOiAnY29sb3JSYW5nZScsXG4gIHNpemVSYW5nZTogJ3N0cm9rZVdpZHRoUmFuZ2UnLFxuICB0YXJnZXRDb2xvcjogJ3RhcmdldENvbG9yJyxcbiAgZWxldmF0aW9uU2NhbGU6IHtcbiAgICAuLi5MQVlFUl9WSVNfQ09ORklHUy5lbGV2YXRpb25TY2FsZSxcbiAgICBkZWZhdWx0VmFsdWU6IDFcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IENPTFVNTl9NT0RFX1BPSU5UUyA9ICdwb2ludHMnO1xuZXhwb3J0IGNvbnN0IENPTFVNTl9NT0RFX05FSUdIQk9SUyA9ICduZWlnaGJvcnMnO1xuZXhwb3J0IGNvbnN0IENPTFVNTl9NT0RFX0dFT0FSUk9XID0gJ2dlb2Fycm93JztcbmNvbnN0IFNVUFBPUlRFRF9DT0xVTU5fTU9ERVMgPSBbXG4gIHtcbiAgICBrZXk6IENPTFVNTl9NT0RFX1BPSU5UUyxcbiAgICBsYWJlbDogJ1BvaW50cycsXG4gICAgcmVxdWlyZWRDb2x1bW5zOiBsaW5lUmVxdWlyZWRDb2x1bW5zLFxuICAgIG9wdGlvbmFsQ29sdW1uczogbGluZU9wdGlvbmFsQ29sdW1uc1xuICB9LFxuICB7XG4gICAga2V5OiBDT0xVTU5fTU9ERV9ORUlHSEJPUlMsXG4gICAgbGFiZWw6ICdQb2ludCBhbmQgTmVpZ2hib3JzJyxcbiAgICByZXF1aXJlZENvbHVtbnM6IG5laWdoYm9yUmVxdWlyZWRDb2x1bW5zLFxuICAgIG9wdGlvbmFsQ29sdW1uczogbmVpZ2hib3JPcHRpb25hbENvbHVtbnNcbiAgfSxcbiAge1xuICAgIGtleTogQ09MVU1OX01PREVfR0VPQVJST1csXG4gICAgbGFiZWw6ICdHZW9hcnJvdyBQb2ludHMnLFxuICAgIHJlcXVpcmVkQ29sdW1uczogZ2VvYXJyb3dSZXF1aXJlZENvbHVtbnNcbiAgfVxuXTtcblxuY29uc3QgYnJ1c2hpbmdFeHRlbnNpb24gPSBuZXcgQnJ1c2hpbmdFeHRlbnNpb24oKTtcbmNvbnN0IGFycm93Q1BVRmlsdGVyRXh0ZW5zaW9uID0gbmV3IEZpbHRlckFycm93RXh0ZW5zaW9uKCk7XG5cbmV4cG9ydCBjb25zdCBsaW5lUG9zQWNjZXNzb3IgPVxuICAoXG4gICAge1xuICAgICAgbGF0MCxcbiAgICAgIGxuZzAsXG4gICAgICBsYXQxLFxuICAgICAgbG5nMSxcbiAgICAgIGFsdDAsXG4gICAgICBhbHQxLFxuICAgICAgbGF0LFxuICAgICAgbG5nLFxuICAgICAgYWx0LFxuICAgICAgZ2VvYXJyb3cwLFxuICAgICAgZ2VvYXJyb3cxXG4gICAgfTogTGluZUxheWVyQ29sdW1uc0NvbmZpZyxcbiAgICBjb2x1bW5Nb2RlXG4gICkgPT5cbiAgKGRjOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlKSA9PiB7XG4gICAgc3dpdGNoIChjb2x1bW5Nb2RlKSB7XG4gICAgICBjYXNlIENPTFVNTl9NT0RFX0dFT0FSUk9XOlxuICAgICAgICByZXR1cm4gZCA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RhcnQgPSBkYy52YWx1ZUF0KGQuaW5kZXgsIGdlb2Fycm93MC5maWVsZElkeCk7XG4gICAgICAgICAgY29uc3QgZW5kID0gZGMudmFsdWVBdChkLmluZGV4LCBnZW9hcnJvdzEuZmllbGRJZHgpO1xuICAgICAgICAgIHJldHVybiBbc3RhcnQuZ2V0KDApLCBzdGFydC5nZXQoMSksIDAsIGVuZC5nZXQoMiksIGVuZC5nZXQoMyksIDBdO1xuICAgICAgICB9O1xuICAgICAgY2FzZSBDT0xVTU5fTU9ERV9ORUlHSEJPUlM6XG4gICAgICAgIHJldHVybiBkID0+IHtcbiAgICAgICAgICBjb25zdCBzdGFydFBvcyA9IG1heWJlSGV4VG9HZW8oZGMsIGQsIGxhdCwgbG5nKTtcbiAgICAgICAgICAvLyBvbmx5IHJldHVybiBzb3VyY2UgcG9pbnQgaWYgY29sdW1uTW9kZSBpcyBDT0xVTU5fTU9ERV9ORUlHSEJPUlNcblxuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBzdGFydFBvcyA/IHN0YXJ0UG9zWzBdIDogZGMudmFsdWVBdChkLmluZGV4LCBsbmcuZmllbGRJZHgpLFxuICAgICAgICAgICAgc3RhcnRQb3MgPyBzdGFydFBvc1sxXSA6IGRjLnZhbHVlQXQoZC5pbmRleCwgbGF0LmZpZWxkSWR4KSxcbiAgICAgICAgICAgIGFsdD8uZmllbGRJZHggPiAtMSA/IGRjLnZhbHVlQXQoZC5pbmRleCwgYWx0LmZpZWxkSWR4KSA6IDBcbiAgICAgICAgICBdO1xuICAgICAgICB9O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gQ09MVU1OX01PREVfUE9JTlRTXG4gICAgICAgIHJldHVybiBkID0+IHtcbiAgICAgICAgICAvLyBsYXQgb3IgbG5nIGNvbHVtbiBjb3VsZCBiZSBoZXggY29sdW1uXG4gICAgICAgICAgLy8gd2UgYXNzdW1lIHN0cmluZyB2YWx1ZSBpcyBoZXggYW5kIHRyeSB0byBjb252ZXJ0IGl0IHRvIGdlbyBsYXQgbG5nXG4gICAgICAgICAgY29uc3Qgc3RhcnRQb3MgPSBtYXliZUhleFRvR2VvKGRjLCBkLCBsYXQwLCBsbmcwKTtcbiAgICAgICAgICBjb25zdCBlbmRQb3MgPSBtYXliZUhleFRvR2VvKGRjLCBkLCBsYXQxLCBsbmcxKTtcbiAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgc3RhcnRQb3MgPyBzdGFydFBvc1swXSA6IGRjLnZhbHVlQXQoZC5pbmRleCwgbG5nMC5maWVsZElkeCksXG4gICAgICAgICAgICBzdGFydFBvcyA/IHN0YXJ0UG9zWzFdIDogZGMudmFsdWVBdChkLmluZGV4LCBsYXQwLmZpZWxkSWR4KSxcbiAgICAgICAgICAgIGFsdDAgJiYgYWx0MC5maWVsZElkeCA+IC0xID8gZGMudmFsdWVBdChkLmluZGV4LCBhbHQwLmZpZWxkSWR4KSA6IDAsXG4gICAgICAgICAgICBlbmRQb3MgPyBlbmRQb3NbMF0gOiBkYy52YWx1ZUF0KGQuaW5kZXgsIGxuZzEuZmllbGRJZHgpLFxuICAgICAgICAgICAgZW5kUG9zID8gZW5kUG9zWzFdIDogZGMudmFsdWVBdChkLmluZGV4LCBsYXQxLmZpZWxkSWR4KSxcbiAgICAgICAgICAgIGFsdDEgJiYgYWx0MT8uZmllbGRJZHggPiAtMSA/IGRjLnZhbHVlQXQoZC5pbmRleCwgYWx0MS5maWVsZElkeCkgOiAwXG4gICAgICAgICAgXTtcbiAgICAgICAgfTtcbiAgICB9XG4gIH07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExpbmVMYXllciBleHRlbmRzIEFyY0xheWVyIHtcbiAgZGVjbGFyZSB2aXNDb25maWdTZXR0aW5nczogTGluZUxheWVyVmlzQ29uZmlnU2V0dGluZ3M7XG4gIGRlY2xhcmUgY29uZmlnOiBMaW5lTGF5ZXJDb25maWc7XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyVmlzQ29uZmlnKGxpbmVWaXNDb25maWdzKTtcbiAgICB0aGlzLmdldFBvc2l0aW9uQWNjZXNzb3IgPSAoZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSkgPT5cbiAgICAgIGxpbmVQb3NBY2Nlc3Nvcih0aGlzLmNvbmZpZy5jb2x1bW5zLCB0aGlzLmNvbmZpZy5jb2x1bW5Nb2RlKShkYXRhQ29udGFpbmVyKTtcbiAgfVxuXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiAnbGluZSc7XG4gIH1cblxuICBnZXQgbGF5ZXJJY29uKCkge1xuICAgIHJldHVybiBMaW5lTGF5ZXJJY29uO1xuICB9XG5cbiAgZ2V0IGNvbHVtbkxhYmVscygpIHtcbiAgICByZXR1cm4gbGluZUNvbHVtbkxhYmVscztcbiAgfVxuXG4gIGdldCBjb2x1bW5QYWlycygpIHtcbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0TGlua0NvbHVtblBhaXJzO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRlZENvbHVtbk1vZGVzKCkge1xuICAgIHJldHVybiBTVVBQT1JURURfQ09MVU1OX01PREVTO1xuICB9XG5cbiAgZ2V0IHZpc3VhbENoYW5uZWxzKCkge1xuICAgIGNvbnN0IHZpc3VhbENoYW5uZWxzID0gc3VwZXIudmlzdWFsQ2hhbm5lbHM7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnZpc3VhbENoYW5uZWxzLFxuICAgICAgc291cmNlQ29sb3I6IHtcbiAgICAgICAgLi4udmlzdWFsQ2hhbm5lbHMuc291cmNlQ29sb3IsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0Q29sb3InXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBmaW5kRGVmYXVsdExheWVyUHJvcHMoe2ZpZWxkcywgZmllbGRQYWlycyA9IFtdfTogS2VwbGVyVGFibGUpOiB7XG4gICAgcHJvcHM6IHtjb2xvcj86IFJHQkNvbG9yOyBjb2x1bW5zOiBMaW5lTGF5ZXJDb2x1bW5zQ29uZmlnOyBsYWJlbDogc3RyaW5nfVtdO1xuICB9IHtcbiAgICBpZiAoZmllbGRQYWlycy5sZW5ndGggPCAyKSB7XG4gICAgICByZXR1cm4ge3Byb3BzOiBbXX07XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdEFsdENvbHVtbiA9IHt2YWx1ZTogbnVsbCwgZmllbGRJZHg6IC0xLCBvcHRpb25hbDogdHJ1ZX07XG4gICAgY29uc3QgcHJvcHM6IHtjb2x1bW5zOiBMaW5lTGF5ZXJDb2x1bW5zQ29uZmlnOyBsYWJlbDogc3RyaW5nOyBpc1Zpc2libGU6IGJvb2xlYW59ID0ge1xuICAgICAgLy8gY29ubmVjdCB0aGUgZmlyc3QgdHdvIHBvaW50IGxheWVyIHdpdGggbGluZVxuICAgICAgLy8gVE9ETzogZmlsbCBkZWZhdWx0IGNvbHVtbnMgYnkgcGFyc2luZyBzdXBwb3J0ZWRfY29sdW1uX21vZGVzXG4gICAgICBjb2x1bW5zOiB7XG4gICAgICAgIGxhdDA6IGZpZWxkUGFpcnNbMF0ucGFpci5sYXQsXG4gICAgICAgIGxuZzA6IGZpZWxkUGFpcnNbMF0ucGFpci5sbmcsXG4gICAgICAgIGFsdDA6IGZpZWxkUGFpcnNbMF0ucGFpci5hbHRpdHVkZVxuICAgICAgICAgID8gey4uLmRlZmF1bHRBbHRDb2x1bW4sIC4uLmZpZWxkUGFpcnNbMF0ucGFpci5hbHRpdHVkZX1cbiAgICAgICAgICA6IHsuLi5kZWZhdWx0QWx0Q29sdW1ufSxcbiAgICAgICAgbGF0MTogZmllbGRQYWlyc1sxXS5wYWlyLmxhdCxcbiAgICAgICAgbG5nMTogZmllbGRQYWlyc1sxXS5wYWlyLmxuZyxcbiAgICAgICAgYWx0MTogZmllbGRQYWlyc1sxXS5wYWlyLmFsdGl0dWRlXG4gICAgICAgICAgPyB7Li4uZGVmYXVsdEFsdENvbHVtbiwgLi4uZmllbGRQYWlyc1sxXS5wYWlyLmFsdGl0dWRlfVxuICAgICAgICAgIDogey4uLmRlZmF1bHRBbHRDb2x1bW59LFxuICAgICAgICBsYXQ6IHsuLi5kZWZhdWx0QWx0Q29sdW1ufSxcbiAgICAgICAgbG5nOiB7Li4uZGVmYXVsdEFsdENvbHVtbn0sXG4gICAgICAgIGFsdDogey4uLmRlZmF1bHRBbHRDb2x1bW59LFxuICAgICAgICBuZWlnaGJvcnM6IHsuLi5kZWZhdWx0QWx0Q29sdW1ufSxcbiAgICAgICAgZ2VvYXJyb3cwOiB7Li4uZGVmYXVsdEFsdENvbHVtbn0sXG4gICAgICAgIGdlb2Fycm93MTogey4uLmRlZmF1bHRBbHRDb2x1bW59XG4gICAgICB9LFxuICAgICAgbGFiZWw6IGAke2ZpZWxkUGFpcnNbMF0uZGVmYXVsdE5hbWV9IC0+ICR7ZmllbGRQYWlyc1sxXS5kZWZhdWx0TmFtZX0gbGluZWAsXG4gICAgICBpc1Zpc2libGU6IGZhbHNlXG4gICAgfTtcblxuICAgIHJldHVybiB7cHJvcHM6IFtwcm9wc119O1xuICB9XG5cbiAgcmVuZGVyTGF5ZXIob3B0cykge1xuICAgIGNvbnN0IHtkYXRhLCBncHVGaWx0ZXIsIG9iamVjdEhvdmVyZWQsIGludGVyYWN0aW9uQ29uZmlnLCBkYXRhc2V0fSA9IG9wdHM7XG5cbiAgICBjb25zdCBsYXllclByb3BzID0ge1xuICAgICAgd2lkdGhTY2FsZTogdGhpcy5jb25maWcudmlzQ29uZmlnLnRoaWNrbmVzcyAqIFBST0pFQ1RFRF9QSVhFTF9TSVpFX01VTFRJUExJRVIsXG4gICAgICBlbGV2YXRpb25TY2FsZTogdGhpcy5jb25maWcudmlzQ29uZmlnLmVsZXZhdGlvblNjYWxlXG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZVRyaWdnZXJzID0ge1xuICAgICAgZ2V0UG9zaXRpb246IHRoaXMuY29uZmlnLmNvbHVtbnMsXG4gICAgICBnZXRGaWx0ZXJWYWx1ZTogZ3B1RmlsdGVyLmZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnMsXG4gICAgICBnZXRGaWx0ZXJlZDogdGhpcy5maWx0ZXJlZEluZGV4VHJpZ2dlcixcbiAgICAgIC4uLnRoaXMuZ2V0VmlzdWFsQ2hhbm5lbFVwZGF0ZVRyaWdnZXJzKClcbiAgICB9O1xuICAgIGNvbnN0IGRlZmF1bHRMYXllclByb3BzID0gdGhpcy5nZXREZWZhdWx0RGVja0xheWVyUHJvcHMob3B0cyk7XG4gICAgY29uc3QgaG92ZXJlZE9iamVjdCA9IHRoaXMuaGFzSG92ZXJlZE9iamVjdChvYmplY3RIb3ZlcmVkKTtcblxuICAgIGNvbnN0IHVzZUFycm93TGF5ZXIgPSBCb29sZWFuKHRoaXMuZ2VvQXJyb3dWZWN0b3IwKTtcblxuICAgIGxldCBMaW5lTGF5ZXJDbGFzczogdHlwZW9mIEVuaGFuY2VkTGluZUxheWVyIHwgdHlwZW9mIEdlb0Fycm93QXJjTGF5ZXIgPSBFbmhhbmNlZExpbmVMYXllcjtcbiAgICBsZXQgZXhwZXJpbWVudGFsUHJvcE92ZXJyaWRlczoge1xuICAgICAgZGF0YT86IGFycm93LlRhYmxlO1xuICAgICAgZ2V0U291cmNlUG9zaXRpb24/OiBhcnJvdy5WZWN0b3I7XG4gICAgICBnZXRUYXJnZXRQb3NpdGlvbj86IGFycm93LlZlY3RvcjtcbiAgICB9ID0ge307XG5cbiAgICBpZiAodXNlQXJyb3dMYXllcikge1xuICAgICAgTGluZUxheWVyQ2xhc3MgPSBHZW9BcnJvd0FyY0xheWVyO1xuICAgICAgZXhwZXJpbWVudGFsUHJvcE92ZXJyaWRlcyA9IHtcbiAgICAgICAgZGF0YTogZGF0YXNldC5kYXRhQ29udGFpbmVyLmdldFRhYmxlKCksXG4gICAgICAgIGdldFNvdXJjZVBvc2l0aW9uOiB0aGlzLmdlb0Fycm93VmVjdG9yMCxcbiAgICAgICAgZ2V0VGFyZ2V0UG9zaXRpb246IHRoaXMuZ2VvQXJyb3dWZWN0b3IxXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBbXG4gICAgICAvLyBiYXNlIGxheWVyXG4gICAgICBuZXcgTGluZUxheWVyQ2xhc3Moe1xuICAgICAgICAuLi5kZWZhdWx0TGF5ZXJQcm9wcyxcbiAgICAgICAgLi4udGhpcy5nZXRCcnVzaGluZ0V4dGVuc2lvblByb3BzKGludGVyYWN0aW9uQ29uZmlnLCAnc291cmNlX3RhcmdldCcpLFxuICAgICAgICAuLi5kYXRhLFxuICAgICAgICAuLi5leHBlcmltZW50YWxQcm9wT3ZlcnJpZGVzLFxuICAgICAgICAuLi5sYXllclByb3BzLFxuICAgICAgICB1cGRhdGVUcmlnZ2VycyxcbiAgICAgICAgZXh0ZW5zaW9uczogW1xuICAgICAgICAgIC4uLmRlZmF1bHRMYXllclByb3BzLmV4dGVuc2lvbnMsXG4gICAgICAgICAgYnJ1c2hpbmdFeHRlbnNpb24sXG4gICAgICAgICAgLi4uKHVzZUFycm93TGF5ZXIgPyBbYXJyb3dDUFVGaWx0ZXJFeHRlbnNpb25dIDogW10pXG4gICAgICAgIF0sXG4gICAgICAgIF9zdWJMYXllclByb3BzOiB7XG4gICAgICAgICAgJ2dlby1hcnJvdy1hcmMtbGF5ZXInOiB7XG4gICAgICAgICAgICB0eXBlOiBFbmhhbmNlZExpbmVMYXllclxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICAvLyBob3ZlciBsYXllclxuICAgICAgLi4uKGhvdmVyZWRPYmplY3RcbiAgICAgICAgPyBbXG4gICAgICAgICAgICBuZXcgRW5oYW5jZWRMaW5lTGF5ZXIoe1xuICAgICAgICAgICAgICAuLi50aGlzLmdldERlZmF1bHRIb3ZlckxheWVyUHJvcHMoKSxcbiAgICAgICAgICAgICAgLi4ubGF5ZXJQcm9wcyxcbiAgICAgICAgICAgICAgZGF0YTogW2hvdmVyZWRPYmplY3RdLFxuICAgICAgICAgICAgICBnZXRDb2xvcjogdGhpcy5jb25maWcuaGlnaGxpZ2h0Q29sb3IsXG4gICAgICAgICAgICAgIGdldFRhcmdldENvbG9yOiB0aGlzLmNvbmZpZy5oaWdobGlnaHRDb2xvcixcbiAgICAgICAgICAgICAgZ2V0V2lkdGg6IGRhdGEuZ2V0V2lkdGhcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICA6IFtdKVxuICAgIF07XG4gIH1cblxuICBnZXRMZWdlbmRWaXN1YWxDaGFubmVscygpIHtcbiAgICBsZXQgY2hhbm5lbHM6IHtba2V5OiBzdHJpbmddOiBWaXN1YWxDaGFubmVsfSA9IHRoaXMudmlzdWFsQ2hhbm5lbHM7XG4gICAgaWYgKGNoYW5uZWxzLnNvdXJjZUNvbG9yPy5maWVsZCAmJiB0aGlzLmNvbmZpZ1tjaGFubmVscy5zb3VyY2VDb2xvci5maWVsZF0pIHtcbiAgICAgIC8vIFJlbW92ZSB0YXJnZXRDb2xvciB0byBhdm9pZCBkdXBsaWNhdGUgbGVnZW5kXG4gICAgICBjaGFubmVscyA9IHsuLi5jaGFubmVsc307XG4gICAgICBkZWxldGUgY2hhbm5lbHMudGFyZ2V0Q29sb3I7XG4gICAgfVxuICAgIHJldHVybiBjaGFubmVscztcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFLQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyxrQkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsYUFBQSxHQUFBRixPQUFBO0FBRUEsSUFBQUcsY0FBQSxHQUFBQyxzQkFBQSxDQUFBSixPQUFBO0FBRUEsSUFBQUssU0FBQSxHQUFBRCxzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQU0sVUFBQSxHQUFBTixPQUFBO0FBWUEsSUFBQU8sTUFBQSxHQUFBUCxPQUFBO0FBQXVFLFNBQUFRLFdBQUFDLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFdBQUFELENBQUEsT0FBQUUs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
258
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXh0ZW5zaW9ucyIsInJlcXVpcmUiLCJfZGVja2dsQXJyb3dMYXllcnMiLCJfZGVja2dsTGF5ZXJzIiwiX2xpbmVMYXllckljb24iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2FyY0xheWVyIiwiX2NvbnN0YW50cyIsIl91dGlscyIsIl9jYWxsU3VwZXIiLCJ0IiwibyIsImUiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsImFwcGx5IiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJjYWxsIiwiX3N1cGVyUHJvcEdldCIsInIiLCJwIiwiX2dldDIiLCJvd25LZXlzIiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsImxpbmVSZXF1aXJlZENvbHVtbnMiLCJleHBvcnRzIiwibGluZU9wdGlvbmFsQ29sdW1ucyIsIm5laWdoYm9yUmVxdWlyZWRDb2x1bW5zIiwibmVpZ2hib3JPcHRpb25hbENvbHVtbnMiLCJnZW9hcnJvd1JlcXVpcmVkQ29sdW1ucyIsImxpbmVDb2x1bW5MYWJlbHMiLCJsYXQwIiwibG5nMCIsImxhdDEiLCJsbmcxIiwiYWx0MCIsImFsdDEiLCJsaW5lVmlzQ29uZmlncyIsIm9wYWNpdHkiLCJ0aGlja25lc3MiLCJjb2xvclJhbmdlIiwic2l6ZVJhbmdlIiwidGFyZ2V0Q29sb3IiLCJlbGV2YXRpb25TY2FsZSIsIkxBWUVSX1ZJU19DT05GSUdTIiwiZGVmYXVsdFZhbHVlIiwiQ09MVU1OX01PREVfUE9JTlRTIiwiQ09MVU1OX01PREVfTkVJR0hCT1JTIiwiQ09MVU1OX01PREVfR0VPQVJST1ciLCJTVVBQT1JURURfQ09MVU1OX01PREVTIiwia2V5IiwibGFiZWwiLCJyZXF1aXJlZENvbHVtbnMiLCJvcHRpb25hbENvbHVtbnMiLCJicnVzaGluZ0V4dGVuc2lvbiIsIkJydXNoaW5nRXh0ZW5zaW9uIiwiYXJyb3dDUFVGaWx0ZXJFeHRlbnNpb24iLCJGaWx0ZXJBcnJvd0V4dGVuc2lvbiIsImxpbmVQb3NBY2Nlc3NvciIsIl9yZWYiLCJjb2x1bW5Nb2RlIiwibGF0IiwibG5nIiwiYWx0IiwiZ2VvYXJyb3cwIiwiZ2VvYXJyb3cxIiwiZGMiLCJkIiwic3RhcnQiLCJ2YWx1ZUF0IiwiaW5kZXgiLCJmaWVsZElkeCIsImVuZCIsImdldCIsInN0YXJ0UG9zIiwibWF5YmVIZXhUb0dlbyIsImVuZFBvcyIsIkxpbmVMYXllciIsIl9BcmNMYXllciIsInByb3BzIiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwicmVnaXN0ZXJWaXNDb25maWciLCJnZXRQb3NpdGlvbkFjY2Vzc29yIiwiZGF0YUNvbnRhaW5lciIsImNvbmZpZyIsImNvbHVtbnMiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsIkxpbmVMYXllckljb24iLCJkZWZhdWx0TGlua0NvbHVtblBhaXJzIiwidmlzdWFsQ2hhbm5lbHMiLCJzb3VyY2VDb2xvciIsImFjY2Vzc29yIiwidmFsdWUiLCJyZW5kZXJMYXllciIsIm9wdHMiLCJkYXRhIiwiZ3B1RmlsdGVyIiwib2JqZWN0SG92ZXJlZCIsImludGVyYWN0aW9uQ29uZmlnIiwiZGF0YXNldCIsImxheWVyUHJvcHMiLCJ3aWR0aFNjYWxlIiwidmlzQ29uZmlnIiwiUFJPSkVDVEVEX1BJWEVMX1NJWkVfTVVMVElQTElFUiIsInVwZGF0ZVRyaWdnZXJzIiwiZ2V0UG9zaXRpb24iLCJnZXRGaWx0ZXJWYWx1ZSIsImZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnMiLCJnZXRGaWx0ZXJlZCIsImZpbHRlcmVkSW5kZXhUcmlnZ2VyIiwiZ2V0VmlzdWFsQ2hhbm5lbFVwZGF0ZVRyaWdnZXJzIiwiZGVmYXVsdExheWVyUHJvcHMiLCJnZXREZWZhdWx0RGVja0xheWVyUHJvcHMiLCJob3ZlcmVkT2JqZWN0IiwiaGFzSG92ZXJlZE9iamVjdCIsInVzZUFycm93TGF5ZXIiLCJnZW9BcnJvd1ZlY3RvcjAiLCJMaW5lTGF5ZXJDbGFzcyIsIkVuaGFuY2VkTGluZUxheWVyIiwiZXhwZXJpbWVudGFsUHJvcE92ZXJyaWRlcyIsIkdlb0Fycm93QXJjTGF5ZXIiLCJnZXRUYWJsZSIsImdldFNvdXJjZVBvc2l0aW9uIiwiZ2V0VGFyZ2V0UG9zaXRpb24iLCJnZW9BcnJvd1ZlY3RvcjEiLCJnZXRCcnVzaGluZ0V4dGVuc2lvblByb3BzIiwiZXh0ZW5zaW9ucyIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJfc3ViTGF5ZXJQcm9wcyIsInR5cGUiLCJnZXREZWZhdWx0SG92ZXJMYXllclByb3BzIiwiZ2V0Q29sb3IiLCJoaWdobGlnaHRDb2xvciIsImdldFRhcmdldENvbG9yIiwiZ2V0V2lkdGgiLCJnZXRMZWdlbmRWaXN1YWxDaGFubmVscyIsIl9jaGFubmVscyRzb3VyY2VDb2xvciIsImNoYW5uZWxzIiwiZmllbGQiLCJmaW5kRGVmYXVsdExheWVyUHJvcHMiLCJfcmVmMiIsIl9yZWYyJGZpZWxkUGFpcnMiLCJmaWVsZFBhaXJzIiwiZGVmYXVsdEFsdENvbHVtbiIsIm9wdGlvbmFsIiwicGFpciIsImFsdGl0dWRlIiwibmVpZ2hib3JzIiwiZGVmYXVsdE5hbWUiLCJpc1Zpc2libGUiLCJBcmNMYXllciJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saW5lLWxheWVyL2xpbmUtbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0ICogYXMgYXJyb3cgZnJvbSAnYXBhY2hlLWFycm93JztcblxuaW1wb3J0IHtCcnVzaGluZ0V4dGVuc2lvbn0gZnJvbSAnQGRlY2suZ2wvZXh0ZW5zaW9ucyc7XG5cbmltcG9ydCB7R2VvQXJyb3dBcmNMYXllcn0gZnJvbSAnQGtlcGxlci5nbC9kZWNrZ2wtYXJyb3ctbGF5ZXJzJztcbmltcG9ydCB7RmlsdGVyQXJyb3dFeHRlbnNpb259IGZyb20gJ0BrZXBsZXIuZ2wvZGVja2dsLWxheWVycyc7XG5pbXBvcnQge0VuaGFuY2VkTGluZUxheWVyfSBmcm9tICdAa2VwbGVyLmdsL2RlY2tnbC1sYXllcnMnO1xuaW1wb3J0IExpbmVMYXllckljb24gZnJvbSAnLi9saW5lLWxheWVyLWljb24nO1xuaW1wb3J0IHtWaXN1YWxDaGFubmVsfSBmcm9tICcuLi9iYXNlLWxheWVyJztcbmltcG9ydCBBcmNMYXllciwge0FyY0xheWVyQ29uZmlnfSBmcm9tICcuLi9hcmMtbGF5ZXIvYXJjLWxheWVyJztcbmltcG9ydCB7TEFZRVJfVklTX0NPTkZJR1MsIFBST0pFQ1RFRF9QSVhFTF9TSVpFX01VTFRJUExJRVJ9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIENvbG9yUmFuZ2UsXG4gIE1lcmdlLFxuICBSR0JDb2xvcixcbiAgVmlzQ29uZmlnQ29sb3JSYW5nZSxcbiAgVmlzQ29uZmlnQ29sb3JTZWxlY3QsXG4gIFZpc0NvbmZpZ051bWJlcixcbiAgVmlzQ29uZmlnUmFuZ2UsXG4gIExheWVyQ29sdW1uXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtkZWZhdWx0IGFzIEtlcGxlclRhYmxlfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB7RGF0YUNvbnRhaW5lckludGVyZmFjZSwgbWF5YmVIZXhUb0dlb30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmV4cG9ydCB0eXBlIExpbmVMYXllclZpc0NvbmZpZ1NldHRpbmdzID0ge1xuICBvcGFjaXR5OiBWaXNDb25maWdOdW1iZXI7XG4gIHRoaWNrbmVzczogVmlzQ29uZmlnTnVtYmVyO1xuICBjb2xvclJhbmdlOiBWaXNDb25maWdDb2xvclJhbmdlO1xuICBzaXplUmFuZ2U6IFZpc0NvbmZpZ1JhbmdlO1xuICB0YXJnZXRDb2xvcjogVmlzQ29uZmlnQ29sb3JTZWxlY3Q7XG4gIGVsZXZhdGlvblNjYWxlOiBWaXNDb25maWdOdW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBMaW5lTGF5ZXJDb2x1bW5zQ29uZmlnID0ge1xuICAvLyBDT0xVTU5fTU9ERV9QT0lOVFMgcmVxdWlyZWQgY29sdW1uc1xuICBsYXQwOiBMYXllckNvbHVtbjtcbiAgbG5nMDogTGF5ZXJDb2x1bW47XG4gIGxhdDE6IExheWVyQ29sdW1uO1xuICBsbmcxOiBMYXllckNvbHVtbjtcbiAgYWx0MD86IExheWVyQ29sdW1uO1xuICBhbHQxPzogTGF5ZXJDb2x1bW47XG5cbiAgLy8gQ09MVU1OX01PREVfTkVJR0hCT1JTIHJlcXVpcmVkIGNvbHVtbnNcbiAgbGF0OiBMYXllckNvbHVtbjtcbiAgbG5nOiBMYXllckNvbHVtbjtcbiAgYWx0OiBMYXllckNvbHVtbjtcbiAgbmVpZ2hib3JzOiBMYXllckNvbHVtbjtcblxuICAvLyBDT0xVTU5fTU9ERV9HRU9BUlJPV1xuICBnZW9hcnJvdzA6IExheWVyQ29sdW1uO1xuICBnZW9hcnJvdzE6IExheWVyQ29sdW1uO1xufTtcblxuZXhwb3J0IHR5cGUgTGluZUxheWVyVmlzQ29uZmlnID0ge1xuICBjb2xvclJhbmdlOiBDb2xvclJhbmdlO1xuICBvcGFjaXR5OiBudW1iZXI7XG4gIHNpemVSYW5nZTogW251bWJlciwgbnVtYmVyXTtcbiAgdGFyZ2V0Q29sb3I6IFJHQkNvbG9yO1xuICB0aGlja25lc3M6IG51bWJlcjtcbiAgZWxldmF0aW9uU2NhbGU6IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIExpbmVMYXllckNvbmZpZyA9IE1lcmdlPFxuICBBcmNMYXllckNvbmZpZyxcbiAge2NvbHVtbnM6IExpbmVMYXllckNvbHVtbnNDb25maWc7IHZpc0NvbmZpZzogTGluZUxheWVyVmlzQ29uZmlnfVxuPjtcblxuZXhwb3J0IGNvbnN0IGxpbmVSZXF1aXJlZENvbHVtbnM6IFsnbGF0MCcsICdsbmcwJywgJ2xhdDEnLCAnbG5nMSddID0gW1xuICAnbGF0MCcsXG4gICdsbmcwJyxcbiAgJ2xhdDEnLFxuICAnbG5nMSdcbl07XG5leHBvcnQgY29uc3QgbGluZU9wdGlvbmFsQ29sdW1uczogWydhbHQwJywgJ2FsdDEnXSA9IFsnYWx0MCcsICdhbHQxJ107XG5leHBvcnQgY29uc3QgbmVpZ2hib3JSZXF1aXJlZENvbHVtbnMgPSBbJ2xhdCcsICdsbmcnLCAnbmVpZ2hib3JzJ107XG5leHBvcnQgY29uc3QgbmVpZ2hib3JPcHRpb25hbENvbHVtbnMgPSBbJ2FsdCddO1xuZXhwb3J0IGNvbnN0IGdlb2Fycm93UmVxdWlyZWRDb2x1bW5zID0gWydnZW9hcnJvdzAnLCAnZ2VvYXJyb3cxJ107XG5cbmV4cG9ydCBjb25zdCBsaW5lQ29sdW1uTGFiZWxzID0ge1xuICBsYXQwOiAnYXJjLmxhdDAnLFxuICBsbmcwOiAnYXJjLmxuZzAnLFxuICBsYXQxOiAnYXJjLmxhdDEnLFxuICBsbmcxOiAnYXJjLmxuZzEnLFxuICBhbHQwOiAnbGluZS5hbHQwJyxcbiAgYWx0MTogJ2xpbmUuYWx0MSdcbn07XG5cbmV4cG9ydCBjb25zdCBsaW5lVmlzQ29uZmlnczoge1xuICBvcGFjaXR5OiAnb3BhY2l0eSc7XG4gIHRoaWNrbmVzczogJ3RoaWNrbmVzcyc7XG4gIGNvbG9yUmFuZ2U6ICdjb2xvclJhbmdlJztcbiAgc2l6ZVJhbmdlOiAnc3Ryb2tlV2lkdGhSYW5nZSc7XG4gIHRhcmdldENvbG9yOiAndGFyZ2V0Q29sb3InO1xuICBlbGV2YXRpb25TY2FsZTogVmlzQ29uZmlnTnVtYmVyO1xufSA9IHtcbiAgb3BhY2l0eTogJ29wYWNpdHknLFxuICB0aGlja25lc3M6ICd0aGlja25lc3MnLFxuICBjb2xvclJhbmdlOiAnY29sb3JSYW5nZScsXG4gIHNpemVSYW5nZTogJ3N0cm9rZVdpZHRoUmFuZ2UnLFxuICB0YXJnZXRDb2xvcjogJ3RhcmdldENvbG9yJyxcbiAgZWxldmF0aW9uU2NhbGU6IHtcbiAgICAuLi5MQVlFUl9WSVNfQ09ORklHUy5lbGV2YXRpb25TY2FsZSxcbiAgICBkZWZhdWx0VmFsdWU6IDFcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IENPTFVNTl9NT0RFX1BPSU5UUyA9ICdwb2ludHMnO1xuZXhwb3J0IGNvbnN0IENPTFVNTl9NT0RFX05FSUdIQk9SUyA9ICduZWlnaGJvcnMnO1xuZXhwb3J0IGNvbnN0IENPTFVNTl9NT0RFX0dFT0FSUk9XID0gJ2dlb2Fycm93JztcbmNvbnN0IFNVUFBPUlRFRF9DT0xVTU5fTU9ERVMgPSBbXG4gIHtcbiAgICBrZXk6IENPTFVNTl9NT0RFX1BPSU5UUyxcbiAgICBsYWJlbDogJ1BvaW50cycsXG4gICAgcmVxdWlyZWRDb2x1bW5zOiBsaW5lUmVxdWlyZWRDb2x1bW5zLFxuICAgIG9wdGlvbmFsQ29sdW1uczogbGluZU9wdGlvbmFsQ29sdW1uc1xuICB9LFxuICB7XG4gICAga2V5OiBDT0xVTU5fTU9ERV9ORUlHSEJPUlMsXG4gICAgbGFiZWw6ICdQb2ludCBhbmQgTmVpZ2hib3JzJyxcbiAgICByZXF1aXJlZENvbHVtbnM6IG5laWdoYm9yUmVxdWlyZWRDb2x1bW5zLFxuICAgIG9wdGlvbmFsQ29sdW1uczogbmVpZ2hib3JPcHRpb25hbENvbHVtbnNcbiAgfSxcbiAge1xuICAgIGtleTogQ09MVU1OX01PREVfR0VPQVJST1csXG4gICAgbGFiZWw6ICdHZW9hcnJvdyBQb2ludHMnLFxuICAgIHJlcXVpcmVkQ29sdW1uczogZ2VvYXJyb3dSZXF1aXJlZENvbHVtbnNcbiAgfVxuXTtcblxuY29uc3QgYnJ1c2hpbmdFeHRlbnNpb24gPSBuZXcgQnJ1c2hpbmdFeHRlbnNpb24oKTtcbmNvbnN0IGFycm93Q1BVRmlsdGVyRXh0ZW5zaW9uID0gbmV3IEZpbHRlckFycm93RXh0ZW5zaW9uKCk7XG5cbmV4cG9ydCBjb25zdCBsaW5lUG9zQWNjZXNzb3IgPVxuICAoXG4gICAge1xuICAgICAgbGF0MCxcbiAgICAgIGxuZzAsXG4gICAgICBsYXQxLFxuICAgICAgbG5nMSxcbiAgICAgIGFsdDAsXG4gICAgICBhbHQxLFxuICAgICAgbGF0LFxuICAgICAgbG5nLFxuICAgICAgYWx0LFxuICAgICAgZ2VvYXJyb3cwLFxuICAgICAgZ2VvYXJyb3cxXG4gICAgfTogTGluZUxheWVyQ29sdW1uc0NvbmZpZyxcbiAgICBjb2x1bW5Nb2RlXG4gICkgPT5cbiAgKGRjOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlKSA9PiB7XG4gICAgc3dpdGNoIChjb2x1bW5Nb2RlKSB7XG4gICAgICBjYXNlIENPTFVNTl9NT0RFX0dFT0FSUk9XOlxuICAgICAgICByZXR1cm4gZCA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RhcnQgPSBkYy52YWx1ZUF0KGQuaW5kZXgsIGdlb2Fycm93MC5maWVsZElkeCk7XG4gICAgICAgICAgY29uc3QgZW5kID0gZGMudmFsdWVBdChkLmluZGV4LCBnZW9hcnJvdzEuZmllbGRJZHgpO1xuICAgICAgICAgIHJldHVybiBbc3RhcnQuZ2V0KDApLCBzdGFydC5nZXQoMSksIDAsIGVuZC5nZXQoMiksIGVuZC5nZXQoMyksIDBdO1xuICAgICAgICB9O1xuICAgICAgY2FzZSBDT0xVTU5fTU9ERV9ORUlHSEJPUlM6XG4gICAgICAgIHJldHVybiBkID0+IHtcbiAgICAgICAgICBjb25zdCBzdGFydFBvcyA9IG1heWJlSGV4VG9HZW8oZGMsIGQsIGxhdCwgbG5nKTtcbiAgICAgICAgICAvLyBvbmx5IHJldHVybiBzb3VyY2UgcG9pbnQgaWYgY29sdW1uTW9kZSBpcyBDT0xVTU5fTU9ERV9ORUlHSEJPUlNcblxuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBzdGFydFBvcyA/IHN0YXJ0UG9zWzBdIDogZGMudmFsdWVBdChkLmluZGV4LCBsbmcuZmllbGRJZHgpLFxuICAgICAgICAgICAgc3RhcnRQb3MgPyBzdGFydFBvc1sxXSA6IGRjLnZhbHVlQXQoZC5pbmRleCwgbGF0LmZpZWxkSWR4KSxcbiAgICAgICAgICAgIGFsdD8uZmllbGRJZHggPiAtMSA/IGRjLnZhbHVlQXQoZC5pbmRleCwgYWx0LmZpZWxkSWR4KSA6IDBcbiAgICAgICAgICBdO1xuICAgICAgICB9O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gQ09MVU1OX01PREVfUE9JTlRTXG4gICAgICAgIHJldHVybiBkID0+IHtcbiAgICAgICAgICAvLyBsYXQgb3IgbG5nIGNvbHVtbiBjb3VsZCBiZSBoZXggY29sdW1uXG4gICAgICAgICAgLy8gd2UgYXNzdW1lIHN0cmluZyB2YWx1ZSBpcyBoZXggYW5kIHRyeSB0byBjb252ZXJ0IGl0IHRvIGdlbyBsYXQgbG5nXG4gICAgICAgICAgY29uc3Qgc3RhcnRQb3MgPSBtYXliZUhleFRvR2VvKGRjLCBkLCBsYXQwLCBsbmcwKTtcbiAgICAgICAgICBjb25zdCBlbmRQb3MgPSBtYXliZUhleFRvR2VvKGRjLCBkLCBsYXQxLCBsbmcxKTtcbiAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgc3RhcnRQb3MgPyBzdGFydFBvc1swXSA6IGRjLnZhbHVlQXQoZC5pbmRleCwgbG5nMC5maWVsZElkeCksXG4gICAgICAgICAgICBzdGFydFBvcyA/IHN0YXJ0UG9zWzFdIDogZGMudmFsdWVBdChkLmluZGV4LCBsYXQwLmZpZWxkSWR4KSxcbiAgICAgICAgICAgIGFsdDAgJiYgYWx0MC5maWVsZElkeCA+IC0xID8gZGMudmFsdWVBdChkLmluZGV4LCBhbHQwLmZpZWxkSWR4KSA6IDAsXG4gICAgICAgICAgICBlbmRQb3MgPyBlbmRQb3NbMF0gOiBkYy52YWx1ZUF0KGQuaW5kZXgsIGxuZzEuZmllbGRJZHgpLFxuICAgICAgICAgICAgZW5kUG9zID8gZW5kUG9zWzFdIDogZGMudmFsdWVBdChkLmluZGV4LCBsYXQxLmZpZWxkSWR4KSxcbiAgICAgICAgICAgIGFsdDEgJiYgYWx0MT8uZmllbGRJZHggPiAtMSA/IGRjLnZhbHVlQXQoZC5pbmRleCwgYWx0MS5maWVsZElkeCkgOiAwXG4gICAgICAgICAgXTtcbiAgICAgICAgfTtcbiAgICB9XG4gIH07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExpbmVMYXllciBleHRlbmRzIEFyY0xheWVyIHtcbiAgZGVjbGFyZSB2aXNDb25maWdTZXR0aW5nczogTGluZUxheWVyVmlzQ29uZmlnU2V0dGluZ3M7XG4gIGRlY2xhcmUgY29uZmlnOiBMaW5lTGF5ZXJDb25maWc7XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyVmlzQ29uZmlnKGxpbmVWaXNDb25maWdzKTtcbiAgICB0aGlzLmdldFBvc2l0aW9uQWNjZXNzb3IgPSAoZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSkgPT5cbiAgICAgIGxpbmVQb3NBY2Nlc3Nvcih0aGlzLmNvbmZpZy5jb2x1bW5zLCB0aGlzLmNvbmZpZy5jb2x1bW5Nb2RlKShkYXRhQ29udGFpbmVyKTtcbiAgfVxuXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiAnbGluZSc7XG4gIH1cblxuICBnZXQgbGF5ZXJJY29uKCkge1xuICAgIHJldHVybiBMaW5lTGF5ZXJJY29uO1xuICB9XG5cbiAgZ2V0IGNvbHVtbkxhYmVscygpIHtcbiAgICByZXR1cm4gbGluZUNvbHVtbkxhYmVscztcbiAgfVxuXG4gIGdldCBjb2x1bW5QYWlycygpIHtcbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0TGlua0NvbHVtblBhaXJzO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRlZENvbHVtbk1vZGVzKCkge1xuICAgIHJldHVybiBTVVBQT1JURURfQ09MVU1OX01PREVTO1xuICB9XG5cbiAgZ2V0IHZpc3VhbENoYW5uZWxzKCkge1xuICAgIGNvbnN0IHZpc3VhbENoYW5uZWxzID0gc3VwZXIudmlzdWFsQ2hhbm5lbHM7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnZpc3VhbENoYW5uZWxzLFxuICAgICAgc291cmNlQ29sb3I6IHtcbiAgICAgICAgLi4udmlzdWFsQ2hhbm5lbHMuc291cmNlQ29sb3IsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0Q29sb3InXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBmaW5kRGVmYXVsdExheWVyUHJvcHMoe2ZpZWxkUGFpcnMgPSBbXX06IEtlcGxlclRhYmxlKToge1xuICAgIHByb3BzOiB7Y29sb3I/OiBSR0JDb2xvcjsgY29sdW1uczogTGluZUxheWVyQ29sdW1uc0NvbmZpZzsgbGFiZWw6IHN0cmluZ31bXTtcbiAgfSB7XG4gICAgaWYgKGZpZWxkUGFpcnMubGVuZ3RoIDwgMikge1xuICAgICAgcmV0dXJuIHtwcm9wczogW119O1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmF1bHRBbHRDb2x1bW4gPSB7dmFsdWU6IG51bGwsIGZpZWxkSWR4OiAtMSwgb3B0aW9uYWw6IHRydWV9O1xuICAgIGNvbnN0IHByb3BzOiB7Y29sdW1uczogTGluZUxheWVyQ29sdW1uc0NvbmZpZzsgbGFiZWw6IHN0cmluZzsgaXNWaXNpYmxlOiBib29sZWFufSA9IHtcbiAgICAgIC8vIGNvbm5lY3QgdGhlIGZpcnN0IHR3byBwb2ludCBsYXllciB3aXRoIGxpbmVcbiAgICAgIC8vIFRPRE86IGZpbGwgZGVmYXVsdCBjb2x1bW5zIGJ5IHBhcnNpbmcgc3VwcG9ydGVkX2NvbHVtbl9tb2Rlc1xuICAgICAgY29sdW1uczoge1xuICAgICAgICBsYXQwOiBmaWVsZFBhaXJzWzBdLnBhaXIubGF0LFxuICAgICAgICBsbmcwOiBmaWVsZFBhaXJzWzBdLnBhaXIubG5nLFxuICAgICAgICBhbHQwOiBmaWVsZFBhaXJzWzBdLnBhaXIuYWx0aXR1ZGVcbiAgICAgICAgICA/IHsuLi5kZWZhdWx0QWx0Q29sdW1uLCAuLi5maWVsZFBhaXJzWzBdLnBhaXIuYWx0aXR1ZGV9XG4gICAgICAgICAgOiB7Li4uZGVmYXVsdEFsdENvbHVtbn0sXG4gICAgICAgIGxhdDE6IGZpZWxkUGFpcnNbMV0ucGFpci5sYXQsXG4gICAgICAgIGxuZzE6IGZpZWxkUGFpcnNbMV0ucGFpci5sbmcsXG4gICAgICAgIGFsdDE6IGZpZWxkUGFpcnNbMV0ucGFpci5hbHRpdHVkZVxuICAgICAgICAgID8gey4uLmRlZmF1bHRBbHRDb2x1bW4sIC4uLmZpZWxkUGFpcnNbMV0ucGFpci5hbHRpdHVkZX1cbiAgICAgICAgICA6IHsuLi5kZWZhdWx0QWx0Q29sdW1ufSxcbiAgICAgICAgbGF0OiB7Li4uZGVmYXVsdEFsdENvbHVtbn0sXG4gICAgICAgIGxuZzogey4uLmRlZmF1bHRBbHRDb2x1bW59LFxuICAgICAgICBhbHQ6IHsuLi5kZWZhdWx0QWx0Q29sdW1ufSxcbiAgICAgICAgbmVpZ2hib3JzOiB7Li4uZGVmYXVsdEFsdENvbHVtbn0sXG4gICAgICAgIGdlb2Fycm93MDogey4uLmRlZmF1bHRBbHRDb2x1bW59LFxuICAgICAgICBnZW9hcnJvdzE6IHsuLi5kZWZhdWx0QWx0Q29sdW1ufVxuICAgICAgfSxcbiAgICAgIGxhYmVsOiBgJHtmaWVsZFBhaXJzWzBdLmRlZmF1bHROYW1lfSAtPiAke2ZpZWxkUGFpcnNbMV0uZGVmYXVsdE5hbWV9IGxpbmVgLFxuICAgICAgaXNWaXNpYmxlOiBmYWxzZVxuICAgIH07XG5cbiAgICByZXR1cm4ge3Byb3BzOiBbcHJvcHNdfTtcbiAgfVxuXG4gIHJlbmRlckxheWVyKG9wdHMpIHtcbiAgICBjb25zdCB7ZGF0YSwgZ3B1RmlsdGVyLCBvYmplY3RIb3ZlcmVkLCBpbnRlcmFjdGlvbkNvbmZpZywgZGF0YXNldH0gPSBvcHRzO1xuXG4gICAgY29uc3QgbGF5ZXJQcm9wcyA9IHtcbiAgICAgIHdpZHRoU2NhbGU6IHRoaXMuY29uZmlnLnZpc0NvbmZpZy50aGlja25lc3MgKiBQUk9KRUNURURfUElYRUxfU0laRV9NVUxUSVBMSUVSLFxuICAgICAgZWxldmF0aW9uU2NhbGU6IHRoaXMuY29uZmlnLnZpc0NvbmZpZy5lbGV2YXRpb25TY2FsZVxuICAgIH07XG5cbiAgICBjb25zdCB1cGRhdGVUcmlnZ2VycyA9IHtcbiAgICAgIGdldFBvc2l0aW9uOiB0aGlzLmNvbmZpZy5jb2x1bW5zLFxuICAgICAgZ2V0RmlsdGVyVmFsdWU6IGdwdUZpbHRlci5maWx0ZXJWYWx1ZVVwZGF0ZVRyaWdnZXJzLFxuICAgICAgZ2V0RmlsdGVyZWQ6IHRoaXMuZmlsdGVyZWRJbmRleFRyaWdnZXIsXG4gICAgICAuLi50aGlzLmdldFZpc3VhbENoYW5uZWxVcGRhdGVUcmlnZ2VycygpXG4gICAgfTtcbiAgICBjb25zdCBkZWZhdWx0TGF5ZXJQcm9wcyA9IHRoaXMuZ2V0RGVmYXVsdERlY2tMYXllclByb3BzKG9wdHMpO1xuICAgIGNvbnN0IGhvdmVyZWRPYmplY3QgPSB0aGlzLmhhc0hvdmVyZWRPYmplY3Qob2JqZWN0SG92ZXJlZCk7XG5cbiAgICBjb25zdCB1c2VBcnJvd0xheWVyID0gQm9vbGVhbih0aGlzLmdlb0Fycm93VmVjdG9yMCk7XG5cbiAgICBsZXQgTGluZUxheWVyQ2xhc3M6IHR5cGVvZiBFbmhhbmNlZExpbmVMYXllciB8IHR5cGVvZiBHZW9BcnJvd0FyY0xheWVyID0gRW5oYW5jZWRMaW5lTGF5ZXI7XG4gICAgbGV0IGV4cGVyaW1lbnRhbFByb3BPdmVycmlkZXM6IHtcbiAgICAgIGRhdGE/OiBhcnJvdy5UYWJsZTtcbiAgICAgIGdldFNvdXJjZVBvc2l0aW9uPzogYXJyb3cuVmVjdG9yO1xuICAgICAgZ2V0VGFyZ2V0UG9zaXRpb24/OiBhcnJvdy5WZWN0b3I7XG4gICAgfSA9IHt9O1xuXG4gICAgaWYgKHVzZUFycm93TGF5ZXIpIHtcbiAgICAgIExpbmVMYXllckNsYXNzID0gR2VvQXJyb3dBcmNMYXllcjtcbiAgICAgIGV4cGVyaW1lbnRhbFByb3BPdmVycmlkZXMgPSB7XG4gICAgICAgIGRhdGE6IGRhdGFzZXQuZGF0YUNvbnRhaW5lci5nZXRUYWJsZSgpLFxuICAgICAgICBnZXRTb3VyY2VQb3NpdGlvbjogdGhpcy5nZW9BcnJvd1ZlY3RvcjAsXG4gICAgICAgIGdldFRhcmdldFBvc2l0aW9uOiB0aGlzLmdlb0Fycm93VmVjdG9yMVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gW1xuICAgICAgLy8gYmFzZSBsYXllclxuICAgICAgbmV3IExpbmVMYXllckNsYXNzKHtcbiAgICAgICAgLi4uZGVmYXVsdExheWVyUHJvcHMsXG4gICAgICAgIC4uLnRoaXMuZ2V0QnJ1c2hpbmdFeHRlbnNpb25Qcm9wcyhpbnRlcmFjdGlvbkNvbmZpZywgJ3NvdXJjZV90YXJnZXQnKSxcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgLi4uZXhwZXJpbWVudGFsUHJvcE92ZXJyaWRlcyxcbiAgICAgICAgLi4ubGF5ZXJQcm9wcyxcbiAgICAgICAgdXBkYXRlVHJpZ2dlcnMsXG4gICAgICAgIGV4dGVuc2lvbnM6IFtcbiAgICAgICAgICAuLi5kZWZhdWx0TGF5ZXJQcm9wcy5leHRlbnNpb25zLFxuICAgICAgICAgIGJydXNoaW5nRXh0ZW5zaW9uLFxuICAgICAgICAgIC4uLih1c2VBcnJvd0xheWVyID8gW2Fycm93Q1BVRmlsdGVyRXh0ZW5zaW9uXSA6IFtdKVxuICAgICAgICBdLFxuICAgICAgICBfc3ViTGF5ZXJQcm9wczoge1xuICAgICAgICAgICdnZW8tYXJyb3ctYXJjLWxheWVyJzoge1xuICAgICAgICAgICAgdHlwZTogRW5oYW5jZWRMaW5lTGF5ZXJcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgLy8gaG92ZXIgbGF5ZXJcbiAgICAgIC4uLihob3ZlcmVkT2JqZWN0XG4gICAgICAgID8gW1xuICAgICAgICAgICAgbmV3IEVuaGFuY2VkTGluZUxheWVyKHtcbiAgICAgICAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0SG92ZXJMYXllclByb3BzKCksXG4gICAgICAgICAgICAgIC4uLmxheWVyUHJvcHMsXG4gICAgICAgICAgICAgIGRhdGE6IFtob3ZlcmVkT2JqZWN0XSxcbiAgICAgICAgICAgICAgZ2V0Q29sb3I6IHRoaXMuY29uZmlnLmhpZ2hsaWdodENvbG9yLFxuICAgICAgICAgICAgICBnZXRUYXJnZXRDb2xvcjogdGhpcy5jb25maWcuaGlnaGxpZ2h0Q29sb3IsXG4gICAgICAgICAgICAgIGdldFdpZHRoOiBkYXRhLmdldFdpZHRoXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXSlcbiAgICBdO1xuICB9XG5cbiAgZ2V0TGVnZW5kVmlzdWFsQ2hhbm5lbHMoKSB7XG4gICAgbGV0IGNoYW5uZWxzOiB7W2tleTogc3RyaW5nXTogVmlzdWFsQ2hhbm5lbH0gPSB0aGlzLnZpc3VhbENoYW5uZWxzO1xuICAgIGlmIChjaGFubmVscy5zb3VyY2VDb2xvcj8uZmllbGQgJiYgdGhpcy5jb25maWdbY2hhbm5lbHMuc291cmNlQ29sb3IuZmllbGRdKSB7XG4gICAgICAvLyBSZW1vdmUgdGFyZ2V0Q29sb3IgdG8gYXZvaWQgZHVwbGljYXRlIGxlZ2VuZFxuICAgICAgY2hhbm5lbHMgPSB7Li4uY2hhbm5lbHN9O1xuICAgICAgZGVsZXRlIGNoYW5uZWxzLnRhcmdldENvbG9yO1xuICAgIH1cbiAgICByZXR1cm4gY2hhbm5lbHM7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBS0EsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsa0JBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGFBQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFHLGNBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUVBLElBQUFLLFNBQUEsR0FBQUQsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFNLFVBQUEsR0FBQU4sT0FBQTtBQVlBLElBQUFPLE1BQUEsR0FBQVAsT0FBQTtBQUF1RSxTQUFBUSxXQUFBQyxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxXQUFBRCxDQUFBLE9BQUFFLGdCQUFBLGFBQUFGLENBQUEs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
@@ -3,6 +3,7 @@ import Layer, { LayerBaseConfig, LayerBaseConfigPartial, LayerColorConfig, Layer
3
3
  import { DataContainerInterface } from '@kepler.gl/utils';
4
4
  import { default as KeplerTable } from '@kepler.gl/table';
5
5
  import PointLayerIcon from './point-layer-icon';
6
+ import { FindDefaultLayerProps } from '../layer-utils';
6
7
  import { GeojsonPointDataMaps } from '../geojson-layer/geojson-utils';
7
8
  import { ColorRange, Merge, RGBColor, VisConfigBoolean, VisConfigColorRange, VisConfigColorSelect, VisConfigNumber, VisConfigRange, LayerColumn, Field, AnimationConfig } from '@kepler.gl/types';
8
9
  export declare type PointLayerVisConfigSettings = {
@@ -102,15 +103,18 @@ export default class PointLayer extends Layer {
102
103
  label: string;
103
104
  requiredColumns: ["lat", "lng"];
104
105
  optionalColumns: ["altitude", "neighbors"];
106
+ verifyField?: undefined;
105
107
  } | {
106
108
  key: string;
107
109
  label: string;
108
110
  requiredColumns: ["geojson"];
111
+ verifyField: (f: any) => boolean;
109
112
  optionalColumns?: undefined;
110
113
  } | {
111
114
  key: string;
112
115
  label: string;
113
116
  requiredColumns: ["geoarrow"];
117
+ verifyField: (f: any) => boolean;
114
118
  optionalColumns?: undefined;
115
119
  })[];
116
120
  get noneLayerDataAffectingProps(): string[];
@@ -165,13 +169,12 @@ export default class PointLayer extends Layer {
165
169
  };
166
170
  };
167
171
  setInitialLayerConfig(dataset: any): this;
168
- static findDefaultLayerProps({ fieldPairs, type }: KeplerTable): {
169
- props: {
170
- label: string;
171
- color?: RGBColor | undefined;
172
- isVisible?: boolean | undefined;
173
- columns?: PointLayerColumnsConfig | undefined;
174
- }[];
172
+ static findDefaultLayerProps(dataset: KeplerTable): {
173
+ props: FindDefaultLayerProps[];
174
+ altProps?: undefined;
175
+ } | {
176
+ props: FindDefaultLayerProps[];
177
+ altProps: FindDefaultLayerProps[];
175
178
  };
176
179
  getDefaultLayerConfig(props: LayerBaseConfigPartial): {
177
180
  columnMode: string;
@@ -70,11 +70,17 @@ var SUPPORTED_COLUMN_MODES = [{
70
70
  }, {
71
71
  key: COLUMN_MODE_GEOJSON,
72
72
  label: 'GeoJSON Feature',
73
- requiredColumns: geojsonRequiredColumns
73
+ requiredColumns: geojsonRequiredColumns,
74
+ verifyField: function verifyField(f) {
75
+ return !(0, _layerUtils.isGeoArrowPointField)(f);
76
+ }
74
77
  }, {
75
78
  key: COLUMN_MODE_GEOARROW,
76
79
  label: 'Geoarrow Points',
77
- requiredColumns: geoarrowRequiredColumns
80
+ requiredColumns: geoarrowRequiredColumns,
81
+ verifyField: function verifyField(f) {
82
+ return (0, _layerUtils.isGeoArrowPointField)(f);
83
+ }
78
84
  }];
79
85
  var DEFAULT_COLUMN_MODE = COLUMN_MODE_POINTS;
80
86
  var brushingExtension = new _extensions.BrushingExtension();
@@ -494,10 +500,10 @@ var PointLayer = exports["default"] = /*#__PURE__*/function (_Layer) {
494
500
  }
495
501
  }], [{
496
502
  key: "findDefaultLayerProps",
497
- value: function findDefaultLayerProps(_ref5) {
498
- var _ref5$fieldPairs = _ref5.fieldPairs,
499
- fieldPairs = _ref5$fieldPairs === void 0 ? [] : _ref5$fieldPairs,
500
- type = _ref5.type;
503
+ value: function findDefaultLayerProps(dataset) {
504
+ var _dataset$fieldPairs = dataset.fieldPairs,
505
+ fieldPairs = _dataset$fieldPairs === void 0 ? [] : _dataset$fieldPairs,
506
+ type = dataset.type;
501
507
  var props = [];
502
508
  if (type === _constants.DatasetType.VECTOR_TILE) {
503
509
  return {
@@ -525,10 +531,12 @@ var PointLayer = exports["default"] = /*#__PURE__*/function (_Layer) {
525
531
  prop.columns = (0, _layerUtils.assignPointPairToLayerColumn)(pair, true);
526
532
  props.push(prop);
527
533
  });
534
+ var altProps = (0, _layerUtils.getGeoArrowPointLayerProps)(dataset);
528
535
  return {
529
- props: props
536
+ props: props,
537
+ altProps: altProps
530
538
  };
531
539
  }
532
540
  }]);
533
541
  }(_baseLayer["default"]);
534
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXh0ZW5zaW9ucyIsInJlcXVpcmUiLCJfbGF5ZXJzIiwiX2RlY2tnbEFycm93TGF5ZXJzIiwiX2RlY2tnbExheWVycyIsIl9iYXNlTGF5ZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3V0aWxzIiwiX3BvaW50TGF5ZXJJY29uIiwiX2NvbnN0YW50cyIsIl9sYXllclRleHRMYWJlbCIsIl9sYXllclV0aWxzIiwiX2dlb2pzb25VdGlscyIsIl9jYWxsU3VwZXIiLCJ0IiwibyIsImUiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsImFwcGx5IiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJjYWxsIiwiX3N1cGVyUHJvcEdldCIsInIiLCJwIiwiX2dldDIiLCJvd25LZXlzIiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsInBvaW50UG9zQWNjZXNzb3IiLCJleHBvcnRzIiwiX3JlZiIsImxhdCIsImxuZyIsImFsdGl0dWRlIiwiZGMiLCJkIiwidmFsdWVBdCIsImluZGV4IiwiZmllbGRJZHgiLCJnZW9qc29uUG9zQWNjZXNzb3IiLCJfcmVmMiIsImdlb2pzb24iLCJnZW9hcnJvd1Bvc0FjY2Vzc29yIiwiX3JlZjMiLCJnZW9hcnJvdyIsImRhdGFDb250YWluZXIiLCJyb3ciLCJnZXQiLCJDT0xVTU5fTU9ERV9QT0lOVFMiLCJDT0xVTU5fTU9ERV9HRU9KU09OIiwiQ09MVU1OX01PREVfR0VPQVJST1ciLCJwb2ludFJlcXVpcmVkQ29sdW1ucyIsInBvaW50T3B0aW9uYWxDb2x1bW5zIiwiZ2VvanNvblJlcXVpcmVkQ29sdW1ucyIsImdlb2Fycm93UmVxdWlyZWRDb2x1bW5zIiwiU1VQUE9SVEVEX0NPTFVNTl9NT0RFUyIsImtleSIsImxhYmVsIiwicmVxdWlyZWRDb2x1bW5zIiwib3B0aW9uYWxDb2x1bW5zIiwiREVGQVVMVF9DT0xVTU5fTU9ERSIsImJydXNoaW5nRXh0ZW5zaW9uIiwiQnJ1c2hpbmdFeHRlbnNpb24iLCJhcnJvd0NQVUZpbHRlckV4dGVuc2lvbiIsIkZpbHRlckFycm93RXh0ZW5zaW9uIiwicHVzaFBvaW50UG9zaXRpb24iLCJkYXRhIiwicG9zIiwibmVpZ2hib3JzIiwiZXZlcnkiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsInBvc2l0aW9uIiwicG9pbnRWaXNDb25maWdzIiwicmFkaXVzIiwiZml4ZWRSYWRpdXMiLCJvcGFjaXR5Iiwib3V0bGluZSIsInRoaWNrbmVzcyIsInN0cm9rZUNvbG9yIiwiY29sb3JSYW5nZSIsInN0cm9rZUNvbG9yUmFuZ2UiLCJyYWRpdXNSYW5nZSIsImZpbGxlZCIsIkxBWUVSX1ZJU19DT05GSUdTIiwidHlwZSIsImRlZmF1bHRWYWx1ZSIsInByb3BlcnR5IiwiYmlsbGJvYXJkIiwiYWxsb3dIb3ZlciIsInNob3dOZWlnaGJvck9uSG92ZXIiLCJzaG93SGlnaGxpZ2h0Q29sb3IiLCJQb2ludExheWVyIiwiX0xheWVyIiwicHJvcHMiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjazIiLCJ1bmRlZmluZWQiLCJyZWdpc3RlclZpc0NvbmZpZyIsImdldFBvc2l0aW9uQWNjZXNzb3IiLCJjb25maWciLCJjb2x1bW5Nb2RlIiwiY29sdW1ucyIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwiUG9pbnRMYXllckljb24iLCJkZWZhdWx0UG9pbnRDb2x1bW5QYWlycyIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJjb2xvciIsImFjY2Vzc29yIiwiY29uZGl0aW9uIiwidmlzQ29uZmlnIiwiZmllbGQiLCJzY2FsZSIsImRvbWFpbiIsInJhbmdlIiwiY2hhbm5lbFNjYWxlVHlwZSIsIkNIQU5ORUxfU0NBTEVTIiwic2l6ZSIsImZpeGVkIiwidmFsdWUiLCJzZXRJbml0aWFsTGF5ZXJDb25maWciLCJkYXRhc2V0IiwibnVtUm93cyIsImRlZmF1bHRDb2xvckZpZWxkIiwiZmluZERlZmF1bHRDb2xvckZpZWxkIiwidXBkYXRlTGF5ZXJDb25maWciLCJjb2xvckZpZWxkIiwidXBkYXRlTGF5ZXJWaXN1YWxDaGFubmVsIiwiZ2V0RGVmYXVsdExheWVyQ29uZmlnIiwiX3Byb3BzJGNvbHVtbk1vZGUiLCJkZWZhdWx0TGF5ZXJDb25maWciLCJzdHJva2VDb2xvckZpZWxkIiwic3Ryb2tlQ29sb3JEb21haW4iLCJzdHJva2VDb2xvclNjYWxlIiwiY29sb3JVSSIsIkRFRkFVTFRfQ09MT1JfVUkiLCJjYWxjdWxhdGVEYXRhQXR0cmlidXRlIiwiX3JlZjQiLCJnZXRQb3NpdGlvbiIsIl90aGlzMiIsImZpbHRlcmVkSW5kZXgiLCJBcnJvd0RhdGFDb250YWluZXIiLCJnZXRGaWx0ZXJlZEluZGV4IiwiZmlsdGVyZWRJbmRleFRyaWdnZXIiLCJnZW9BcnJvd1ZlY3RvciIsImdldENvbHVtbiIsImNyZWF0ZUdlb0Fycm93UG9pbnRWZWN0b3IiLCJnZXRUYWJsZSIsIl9sb29wIiwiaSIsIl90aGlzMiRjb25maWckY29sdW1ucyIsIkFycmF5IiwiaXNBcnJheSIsImNvb3JkaW5hdGVzIiwiZGF0YVRvRmVhdHVyZSIsImNvb3JkIiwiZm9ybWF0TGF5ZXJEYXRhIiwiZGF0YXNldHMiLCJvbGRMYXllckRhdGEiLCJfdGhpczMiLCJkYXRhSWQiLCJ0ZXh0TGFiZWwiLCJfZGF0YXNldHMkdGhpcyRjb25maWciLCJncHVGaWx0ZXIiLCJfdGhpcyR1cGRhdGVEYXRhIiwidXBkYXRlRGF0YSIsInRyaWdnZXJDaGFuZ2VkIiwidGV4dExhYmVscyIsImZvcm1hdFRleHRMYWJlbERhdGEiLCJhY2Nlc3NvcnMiLCJnZXRBdHRyaWJ1dGVBY2Nlc3NvcnMiLCJpc0ZpbHRlcmVkQWNjZXNzb3IiLCJnZXRGaWx0ZXJWYWx1ZSIsImZpbHRlclZhbHVlQWNjZXNzb3IiLCJnZXRGaWx0ZXJlZCIsInVwZGF0ZUxheWVyTWV0YSIsImdldEZlYXR1cmUiLCJnZXRHZW9qc29uUG9pbnREYXRhTWFwcyIsImJvdW5kc0Zyb21NZXRhZGF0YSIsImdldEJvdW5kc0Zyb21BcnJvd01ldGFkYXRhIiwidXBkYXRlTWV0YSIsImJvdW5kcyIsImdldFBvaW50c0JvdW5kcyIsInJlbmRlckxheWVyIiwib3B0cyIsIl90aGlzJGNvbmZpZyRjb2x1bW5zJCIsIm9iamVjdEhvdmVyZWQiLCJtYXBTdGF0ZSIsImludGVyYWN0aW9uQ29uZmlnIiwic2l6ZUZpZWxkIiwicmFkaXVzU2NhbGUiLCJnZXRSYWRpdXNTY2FsZUJ5Wm9vbSIsImxheWVyUHJvcHMiLCJzdHJva2VkIiwibGluZVdpZHRoU2NhbGUiLCJyYWRpdXNNYXhQaXhlbHMiLCJ1cGRhdGVUcmlnZ2VycyIsImZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnMiLCJnZXRWaXN1YWxDaGFubmVsVXBkYXRlVHJpZ2dlcnMiLCJ1c2VBcnJvd0xheWVyIiwiZGVmYXVsdExheWVyUHJvcHMiLCJnZXREZWZhdWx0RGVja0xheWVyUHJvcHMiLCJicnVzaGluZ1Byb3BzIiwiZ2V0QnJ1c2hpbmdFeHRlbnNpb25Qcm9wcyIsImdldFBpeGVsT2Zmc2V0IiwiZ2V0VGV4dE9mZnNldEJ5UmFkaXVzIiwiZ2V0UmFkaXVzIiwiZXh0ZW5zaW9ucyIsInNoYXJlZFByb3BzIiwiZmlsdGVyUmFuZ2UiLCJ2aXNpYmxlIiwiaG92ZXJlZE9iamVjdCIsImhhc0hvdmVyZWRPYmplY3QiLCJfdGhpcyRjb25maWckdmlzQ29uZmkiLCJuZWlnaGJvcnNEYXRhIiwiZ2V0TmVpZ2hib3JzIiwiU2NhdHRlcnBsb3RMYXllckNsYXNzIiwiU2NhdHRlcnBsb3RMYXllciIsImRlY2tMYXllckRhdGEiLCJHZW9BcnJvd1NjYXR0ZXJwbG90TGF5ZXIiLCJwYXJhbWV0ZXJzIiwiZGVwdGhUZXN0IiwibGluZVdpZHRoVW5pdHMiLCJwaWNrYWJsZSIsImF1dG9IaWdobGlnaHQiLCJnZXREZWZhdWx0SG92ZXJMYXllclByb3BzIiwiZ2V0TGluZUNvbG9yIiwiaGlnaGxpZ2h0Q29sb3IiLCJnZXRGaWxsQ29sb3IiLCJyZW5kZXJUZXh0TGFiZWxMYXllciIsIm9iamVjdEluZm8iLCJpc0xheWVySG92ZXJlZEZyb21BcnJvdyIsImlkIiwiZ2V0SG92ZXJEYXRhIiwib2JqZWN0IiwiZmllbGRzIiwiYW5pbWF0aW9uQ29uZmlnIiwiaG92ZXJJbmZvIiwiZmluZERlZmF1bHRMYXllclByb3BzIiwiX3JlZjUiLCJfcmVmNSRmaWVsZFBhaXJzIiwiZmllbGRQYWlycyIsIkRhdGFzZXRUeXBlIiwiVkVDVE9SX1RJTEUiLCJwYWlyIiwibGF0RmllbGQiLCJwcm9wIiwiZGVmYXVsdE5hbWUiLCJERUZBVUxUX0xBWUVSX0NPTE9SIiwiaGV4VG9SZ2IiLCJpc1Zpc2libGUiLCJhc3NpZ25Qb2ludFBhaXJUb0xheWVyQ29sdW1uIiwiTGF5ZXIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcG9pbnQtbGF5ZXIvcG9pbnQtbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0ICogYXMgYXJyb3cgZnJvbSAnYXBhY2hlLWFycm93JztcblxuaW1wb3J0IHtCcnVzaGluZ0V4dGVuc2lvbn0gZnJvbSAnQGRlY2suZ2wvZXh0ZW5zaW9ucyc7XG5pbXBvcnQge1NjYXR0ZXJwbG90TGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5cbmltcG9ydCB7R2VvQXJyb3dTY2F0dGVycGxvdExheWVyfSBmcm9tICdAa2VwbGVyLmdsL2RlY2tnbC1hcnJvdy1sYXllcnMnO1xuaW1wb3J0IHtGaWx0ZXJBcnJvd0V4dGVuc2lvbn0gZnJvbSAnQGtlcGxlci5nbC9kZWNrZ2wtbGF5ZXJzJztcblxuaW1wb3J0IExheWVyLCB7XG4gIExheWVyQmFzZUNvbmZpZyxcbiAgTGF5ZXJCYXNlQ29uZmlnUGFydGlhbCxcbiAgTGF5ZXJDb2xvckNvbmZpZyxcbiAgTGF5ZXJTaXplQ29uZmlnLFxuICBMYXllclN0cm9rZUNvbG9yQ29uZmlnXG59IGZyb20gJy4uL2Jhc2UtbGF5ZXInO1xuaW1wb3J0IHtcbiAgaGV4VG9SZ2IsXG4gIGZpbmREZWZhdWx0Q29sb3JGaWVsZCxcbiAgRGF0YUNvbnRhaW5lckludGVyZmFjZSxcbiAgQXJyb3dEYXRhQ29udGFpbmVyXG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtkZWZhdWx0IGFzIEtlcGxlclRhYmxlfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCBQb2ludExheWVySWNvbiBmcm9tICcuL3BvaW50LWxheWVyLWljb24nO1xuaW1wb3J0IHtcbiAgRGF0YXNldFR5cGUsXG4gIExBWUVSX1ZJU19DT05GSUdTLFxuICBERUZBVUxUX0xBWUVSX0NPTE9SLFxuICBDSEFOTkVMX1NDQUxFUyxcbiAgREVGQVVMVF9DT0xPUl9VSVxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge2dldFRleHRPZmZzZXRCeVJhZGl1cywgZm9ybWF0VGV4dExhYmVsRGF0YX0gZnJvbSAnLi4vbGF5ZXItdGV4dC1sYWJlbCc7XG5pbXBvcnQge1xuICBhc3NpZ25Qb2ludFBhaXJUb0xheWVyQ29sdW1uLFxuICBpc0xheWVySG92ZXJlZEZyb21BcnJvdyxcbiAgZ2V0Qm91bmRzRnJvbUFycm93TWV0YWRhdGEsXG4gIGNyZWF0ZUdlb0Fycm93UG9pbnRWZWN0b3IsXG4gIGdldEZpbHRlcmVkSW5kZXgsXG4gIGdldE5laWdoYm9yc1xufSBmcm9tICcuLi9sYXllci11dGlscyc7XG5pbXBvcnQge2dldEdlb2pzb25Qb2ludERhdGFNYXBzLCBHZW9qc29uUG9pbnREYXRhTWFwc30gZnJvbSAnLi4vZ2VvanNvbi1sYXllci9nZW9qc29uLXV0aWxzJztcbmltcG9ydCB7XG4gIENvbG9yUmFuZ2UsXG4gIE1lcmdlLFxuICBSR0JDb2xvcixcbiAgVmlzQ29uZmlnQm9vbGVhbixcbiAgVmlzQ29uZmlnQ29sb3JSYW5nZSxcbiAgVmlzQ29uZmlnQ29sb3JTZWxlY3QsXG4gIFZpc0NvbmZpZ051bWJlcixcbiAgVmlzQ29uZmlnUmFuZ2UsXG4gIExheWVyQ29sdW1uLFxuICBGaWVsZCxcbiAgQW5pbWF0aW9uQ29uZmlnXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBQb2ludExheWVyVmlzQ29uZmlnU2V0dGluZ3MgPSB7XG4gIHJhZGl1czogVmlzQ29uZmlnTnVtYmVyO1xuICBmaXhlZFJhZGl1czogVmlzQ29uZmlnQm9vbGVhbjtcbiAgb3BhY2l0eTogVmlzQ29uZmlnTnVtYmVyO1xuICBvdXRsaW5lOiBWaXNDb25maWdCb29sZWFuO1xuICB0aGlja25lc3M6IFZpc0NvbmZpZ051bWJlcjtcbiAgc3Ryb2tlQ29sb3I6IFZpc0NvbmZpZ0NvbG9yU2VsZWN0O1xuICBjb2xvclJhbmdlOiBWaXNDb25maWdDb2xvclJhbmdlO1xuICBzdHJva2VDb2xvclJhbmdlOiBWaXNDb25maWdDb2xvclJhbmdlO1xuICByYWRpdXNSYW5nZTogVmlzQ29uZmlnUmFuZ2U7XG4gIGZpbGxlZDogVmlzQ29uZmlnQm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFBvaW50TGF5ZXJDb2x1bW5zQ29uZmlnID0ge1xuICBsYXQ6IExheWVyQ29sdW1uO1xuICBsbmc6IExheWVyQ29sdW1uO1xuICBhbHRpdHVkZT86IExheWVyQ29sdW1uO1xuICBuZWlnaGJvcnM/OiBMYXllckNvbHVtbjtcbiAgZ2VvanNvbjogTGF5ZXJDb2x1bW47XG4gIGdlb2Fycm93OiBMYXllckNvbHVtbjtcbn07XG5cbmV4cG9ydCB0eXBlIFBvaW50TGF5ZXJWaXNDb25maWcgPSB7XG4gIHJhZGl1czogbnVtYmVyO1xuICBmaXhlZFJhZGl1czogYm9vbGVhbjtcbiAgb3BhY2l0eTogbnVtYmVyO1xuICBvdXRsaW5lOiBib29sZWFuO1xuICB0aGlja25lc3M6IG51bWJlcjtcbiAgc3Ryb2tlQ29sb3I6IFJHQkNvbG9yO1xuICBjb2xvclJhbmdlOiBDb2xvclJhbmdlO1xuICBzdHJva2VDb2xvclJhbmdlOiBDb2xvclJhbmdlO1xuICByYWRpdXNSYW5nZTogW251bWJlciwgbnVtYmVyXTtcbiAgZmlsbGVkOiBib29sZWFuO1xuICBiaWxsYm9hcmQ6IGJvb2xlYW47XG4gIGFsbG93SG92ZXI6IGJvb2xlYW47XG4gIHNob3dOZWlnaGJvck9uSG92ZXI6IGJvb2xlYW47XG4gIHNob3dIaWdobGlnaHRDb2xvcjogYm9vbGVhbjtcbn07XG5leHBvcnQgdHlwZSBQb2ludExheWVyVmlzdWFsQ2hhbm5lbENvbmZpZyA9IExheWVyQ29sb3JDb25maWcgJlxuICBMYXllclNpemVDb25maWcgJlxuICBMYXllclN0cm9rZUNvbG9yQ29uZmlnO1xuZXhwb3J0IHR5cGUgUG9pbnRMYXllckNvbmZpZyA9IE1lcmdlPFxuICBMYXllckJhc2VDb25maWcsXG4gIHtjb2x1bW5zOiBQb2ludExheWVyQ29sdW1uc0NvbmZpZzsgdmlzQ29uZmlnOiBQb2ludExheWVyVmlzQ29uZmlnfVxuPiAmXG4gIFBvaW50TGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnO1xuXG5leHBvcnQgdHlwZSBQb2ludExheWVyRGF0YSA9IHtcbiAgcG9zaXRpb246IG51bWJlcltdO1xuICBpbmRleDogbnVtYmVyO1xuICBuZWlnaGJvcnM6IGFueVtdO1xufTtcblxuZXhwb3J0IGNvbnN0IHBvaW50UG9zQWNjZXNzb3IgPVxuICAoe2xhdCwgbG5nLCBhbHRpdHVkZX06IFBvaW50TGF5ZXJDb2x1bW5zQ29uZmlnKSA9PlxuICAoZGM6IERhdGFDb250YWluZXJJbnRlcmZhY2UpID0+XG4gIChkOiB7aW5kZXg6IG51bWJlcn0pID0+XG4gICAgW1xuICAgICAgZGMudmFsdWVBdChkLmluZGV4LCBsbmcuZmllbGRJZHgpLFxuICAgICAgZGMudmFsdWVBdChkLmluZGV4LCBsYXQuZmllbGRJZHgpLFxuICAgICAgYWx0aXR1ZGUgJiYgYWx0aXR1ZGUuZmllbGRJZHggPiAtMSA/IGRjLnZhbHVlQXQoZC5pbmRleCwgYWx0aXR1ZGUuZmllbGRJZHgpIDogMFxuICAgIF07XG5cbmV4cG9ydCBjb25zdCBnZW9qc29uUG9zQWNjZXNzb3IgPVxuICAoe2dlb2pzb259OiB7Z2VvanNvbjogTGF5ZXJDb2x1bW59KSA9PlxuICBkID0+XG4gICAgZFtnZW9qc29uLmZpZWxkSWR4XTtcblxuZXhwb3J0IGNvbnN0IGdlb2Fycm93UG9zQWNjZXNzb3IgPVxuICAoe2dlb2Fycm93fTogUG9pbnRMYXllckNvbHVtbnNDb25maWcpID0+XG4gIChkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlKSA9PlxuICAoZDoge2luZGV4OiBudW1iZXJ9KSA9PiB7XG4gICAgY29uc3Qgcm93ID0gZGF0YUNvbnRhaW5lci52YWx1ZUF0KGQuaW5kZXgsIGdlb2Fycm93LmZpZWxkSWR4KTtcbiAgICByZXR1cm4gW3Jvdy5nZXQoMCksIHJvdy5nZXQoMSksIDBdO1xuICB9O1xuXG5leHBvcnQgY29uc3QgQ09MVU1OX01PREVfUE9JTlRTID0gJ3BvaW50cyc7XG5leHBvcnQgY29uc3QgQ09MVU1OX01PREVfR0VPSlNPTiA9ICdnZW9qc29uJztcbmV4cG9ydCBjb25zdCBDT0xVTU5fTU9ERV9HRU9BUlJPVyA9ICdnZW9hcnJvdyc7XG5cbmV4cG9ydCBjb25zdCBwb2ludFJlcXVpcmVkQ29sdW1uczogWydsYXQnLCAnbG5nJ10gPSBbJ2xhdCcsICdsbmcnXTtcbmV4cG9ydCBjb25zdCBwb2ludE9wdGlvbmFsQ29sdW1uczogWydhbHRpdHVkZScsICduZWlnaGJvcnMnXSA9IFsnYWx0aXR1ZGUnLCAnbmVpZ2hib3JzJ107XG5leHBvcnQgY29uc3QgZ2VvanNvblJlcXVpcmVkQ29sdW1uczogWydnZW9qc29uJ10gPSBbJ2dlb2pzb24nXTtcbmV4cG9ydCBjb25zdCBnZW9hcnJvd1JlcXVpcmVkQ29sdW1uczogWydnZW9hcnJvdyddID0gWydnZW9hcnJvdyddO1xuXG5jb25zdCBTVVBQT1JURURfQ09MVU1OX01PREVTID0gW1xuICB7XG4gICAga2V5OiBDT0xVTU5fTU9ERV9QT0lOVFMsXG4gICAgbGFiZWw6ICdQb2ludCBDb2x1bW5zJyxcbiAgICByZXF1aXJlZENvbHVtbnM6IHBvaW50UmVxdWlyZWRDb2x1bW5zLFxuICAgIG9wdGlvbmFsQ29sdW1uczogcG9pbnRPcHRpb25hbENvbHVtbnNcbiAgfSxcbiAge1xuICAgIGtleTogQ09MVU1OX01PREVfR0VPSlNPTixcbiAgICBsYWJlbDogJ0dlb0pTT04gRmVhdHVyZScsXG4gICAgcmVxdWlyZWRDb2x1bW5zOiBnZW9qc29uUmVxdWlyZWRDb2x1bW5zXG4gIH0sXG4gIHtcbiAgICBrZXk6IENPTFVNTl9NT0RFX0dFT0FSUk9XLFxuICAgIGxhYmVsOiAnR2VvYXJyb3cgUG9pbnRzJyxcbiAgICByZXF1aXJlZENvbHVtbnM6IGdlb2Fycm93UmVxdWlyZWRDb2x1bW5zXG4gIH1cbl07XG5jb25zdCBERUZBVUxUX0NPTFVNTl9NT0RFID0gQ09MVU1OX01PREVfUE9JTlRTO1xuXG5jb25zdCBicnVzaGluZ0V4dGVuc2lvbiA9IG5ldyBCcnVzaGluZ0V4dGVuc2lvbigpO1xuY29uc3QgYXJyb3dDUFVGaWx0ZXJFeHRlbnNpb24gPSBuZXcgRmlsdGVyQXJyb3dFeHRlbnNpb24oKTtcblxuZnVuY3Rpb24gcHVzaFBvaW50UG9zaXRpb24oZGF0YTogYW55W10sIHBvczogbnVtYmVyW10sIGluZGV4OiBudW1iZXIsIG5laWdoYm9ycz86IG51bWJlcltdKSB7XG4gIGlmIChwb3MuZXZlcnkoTnVtYmVyLmlzRmluaXRlKSkge1xuICAgIGRhdGEucHVzaCh7XG4gICAgICBwb3NpdGlvbjogcG9zLFxuICAgICAgLy8gaW5kZXggaXMgaW1wb3J0YW50IGZvciBmaWx0ZXJcbiAgICAgIGluZGV4LFxuICAgICAgLi4uKG5laWdoYm9ycyA/IHtuZWlnaGJvcnN9IDoge30pXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHBvaW50VmlzQ29uZmlnczoge1xuICByYWRpdXM6ICdyYWRpdXMnO1xuICBmaXhlZFJhZGl1czogJ2ZpeGVkUmFkaXVzJztcbiAgb3BhY2l0eTogJ29wYWNpdHknO1xuICBvdXRsaW5lOiAnb3V0bGluZSc7XG4gIHRoaWNrbmVzczogJ3RoaWNrbmVzcyc7XG4gIHN0cm9rZUNvbG9yOiAnc3Ryb2tlQ29sb3InO1xuICBjb2xvclJhbmdlOiAnY29sb3JSYW5nZSc7XG4gIHN0cm9rZUNvbG9yUmFuZ2U6ICdzdHJva2VDb2xvclJhbmdlJztcbiAgcmFkaXVzUmFuZ2U6ICdyYWRpdXNSYW5nZSc7XG4gIGZpbGxlZDogVmlzQ29uZmlnQm9vbGVhbjtcbiAgYmlsbGJvYXJkOiAnYmlsbGJvYXJkJztcbiAgYWxsb3dIb3ZlcjogJ2FsbG93SG92ZXInO1xuICBzaG93TmVpZ2hib3JPbkhvdmVyOiAnc2hvd05laWdoYm9yT25Ib3Zlcic7XG4gIHNob3dIaWdobGlnaHRDb2xvcjogJ3Nob3dIaWdobGlnaHRDb2xvcic7XG59ID0ge1xuICByYWRpdXM6ICdyYWRpdXMnLFxuICBmaXhlZFJhZGl1czogJ2ZpeGVkUmFkaXVzJyxcbiAgb3BhY2l0eTogJ29wYWNpdHknLFxuICBvdXRsaW5lOiAnb3V0bGluZScsXG4gIHRoaWNrbmVzczogJ3RoaWNrbmVzcycsXG4gIHN0cm9rZUNvbG9yOiAnc3Ryb2tlQ29sb3InLFxuICBjb2xvclJhbmdlOiAnY29sb3JSYW5nZScsXG4gIHN0cm9rZUNvbG9yUmFuZ2U6ICdzdHJva2VDb2xvclJhbmdlJyxcbiAgcmFkaXVzUmFuZ2U6ICdyYWRpdXNSYW5nZScsXG4gIGZpbGxlZDoge1xuICAgIC4uLkxBWUVSX1ZJU19DT05GSUdTLmZpbGxlZCxcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgbGFiZWw6ICdsYXllci5maWxsQ29sb3InLFxuICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICBwcm9wZXJ0eTogJ2ZpbGxlZCdcbiAgfSxcbiAgYmlsbGJvYXJkOiAnYmlsbGJvYXJkJyxcbiAgYWxsb3dIb3ZlcjogJ2FsbG93SG92ZXInLFxuICBzaG93TmVpZ2hib3JPbkhvdmVyOiAnc2hvd05laWdoYm9yT25Ib3ZlcicsXG4gIHNob3dIaWdobGlnaHRDb2xvcjogJ3Nob3dIaWdobGlnaHRDb2xvcidcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBvaW50TGF5ZXIgZXh0ZW5kcyBMYXllciB7XG4gIGRlY2xhcmUgY29uZmlnOiBQb2ludExheWVyQ29uZmlnO1xuICBkZWNsYXJlIHZpc0NvbmZpZ1NldHRpbmdzOiBQb2ludExheWVyVmlzQ29uZmlnU2V0dGluZ3M7XG4gIGRhdGFUb0ZlYXR1cmU6IEdlb2pzb25Qb2ludERhdGFNYXBzID0gW107XG5cbiAgZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSB8IG51bGwgPSBudWxsO1xuICBnZW9BcnJvd1ZlY3RvcjogYXJyb3cuVmVjdG9yIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIC8qXG4gICAqIENQVSBmaWx0ZXJpbmcgYW4gYXJyb3cgdGFibGUgYnkgdmFsdWVzIGFuZCBhc3NlbWJsaW5nIGEgcGFydGlhbCBjb3B5IG9mIHRoZSByYXcgdGFibGUgaXMgZXhwZW5zaXZlXG4gICAqIHNvIHdlIHdpbGwgdXNlIGZpbHRlcmVkSW5kZXggdG8gY3JlYXRlIGFuIGF0dHJpYnV0ZSBlLmcuIGZpbHRlcmVkSW5kZXggWzB8MV0gZm9yIEdQVSBmaWx0ZXJpbmdcbiAgICogaW4gZGVjay5nbCBsYXllciwgc2VlOiBGaWx0ZXJBcnJvd0V4dGVuc2lvbiBpbiBAa2VwbGVyLmdsL2RlY2tnbC1sYXllcnMuXG4gICAqIE5vdGUgdGhhdCB0aGlzIGFwcHJvYWNoIGNhbiBjcmVhdGUgdmlzaWJsZSBsYWdzIGluIGNhc2Ugb2YgYSBsb3Qgb2YgZGlzY2FydGVkIGdlb21ldHJ5LlxuICAgKi9cbiAgZmlsdGVyZWRJbmRleDogVWludDhDbGFtcGVkQXJyYXkgfCBudWxsID0gbnVsbDtcbiAgZmlsdGVyZWRJbmRleFRyaWdnZXI6IG51bWJlcltdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyVmlzQ29uZmlnKHBvaW50VmlzQ29uZmlncyk7XG4gICAgdGhpcy5nZXRQb3NpdGlvbkFjY2Vzc29yID0gKGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UpID0+IHtcbiAgICAgIHN3aXRjaCAodGhpcy5jb25maWcuY29sdW1uTW9kZSkge1xuICAgICAgICBjYXNlIENPTFVNTl9NT0RFX0dFT0FSUk9XOlxuICAgICAgICAgIHJldHVybiBnZW9hcnJvd1Bvc0FjY2Vzc29yKHRoaXMuY29uZmlnLmNvbHVtbnMpKGRhdGFDb250YWluZXIpO1xuICAgICAgICBjYXNlIENPTFVNTl9NT0RFX0dFT0pTT046XG4gICAgICAgICAgcmV0dXJuIGdlb2pzb25Qb3NBY2Nlc3Nvcih0aGlzLmNvbmZpZy5jb2x1bW5zKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAvLyBDT0xVTU5fTU9ERV9QT0lOVFNcbiAgICAgICAgICByZXR1cm4gcG9pbnRQb3NBY2Nlc3Nvcih0aGlzLmNvbmZpZy5jb2x1bW5zKShkYXRhQ29udGFpbmVyKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZ2V0IHR5cGUoKTogJ3BvaW50JyB7XG4gICAgcmV0dXJuICdwb2ludCc7XG4gIH1cblxuICBnZXQgaXNBZ2dyZWdhdGVkKCk6IGZhbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXQgbGF5ZXJJY29uKCkge1xuICAgIHJldHVybiBQb2ludExheWVySWNvbjtcbiAgfVxuXG4gIGdldCBvcHRpb25hbENvbHVtbnMoKSB7XG4gICAgcmV0dXJuIHBvaW50T3B0aW9uYWxDb2x1bW5zO1xuICB9XG5cbiAgZ2V0IGNvbHVtblBhaXJzKCkge1xuICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb2ludENvbHVtblBhaXJzO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRlZENvbHVtbk1vZGVzKCkge1xuICAgIHJldHVybiBTVVBQT1JURURfQ09MVU1OX01PREVTO1xuICB9XG5cbiAgZ2V0IG5vbmVMYXllckRhdGFBZmZlY3RpbmdQcm9wcygpIHtcbiAgICByZXR1cm4gWy4uLnN1cGVyLm5vbmVMYXllckRhdGFBZmZlY3RpbmdQcm9wcywgJ3JhZGl1cyddO1xuICB9XG5cbiAgZ2V0IHZpc3VhbENoYW5uZWxzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjoge1xuICAgICAgICAuLi5zdXBlci52aXN1YWxDaGFubmVscy5jb2xvcixcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRGaWxsQ29sb3InLFxuICAgICAgICBjb25kaXRpb246IGNvbmZpZyA9PiBjb25maWcudmlzQ29uZmlnLmZpbGxlZCxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBjb25maWcgPT4gY29uZmlnLmNvbG9yXG4gICAgICB9LFxuICAgICAgc3Ryb2tlQ29sb3I6IHtcbiAgICAgICAgcHJvcGVydHk6ICdzdHJva2VDb2xvcicsXG4gICAgICAgIGtleTogJ3N0cm9rZUNvbG9yJyxcbiAgICAgICAgZmllbGQ6ICdzdHJva2VDb2xvckZpZWxkJyxcbiAgICAgICAgc2NhbGU6ICdzdHJva2VDb2xvclNjYWxlJyxcbiAgICAgICAgZG9tYWluOiAnc3Ryb2tlQ29sb3JEb21haW4nLFxuICAgICAgICByYW5nZTogJ3N0cm9rZUNvbG9yUmFuZ2UnLFxuICAgICAgICBjaGFubmVsU2NhbGVUeXBlOiBDSEFOTkVMX1NDQUxFUy5jb2xvcixcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRMaW5lQ29sb3InLFxuICAgICAgICBjb25kaXRpb246IGNvbmZpZyA9PiBjb25maWcudmlzQ29uZmlnLm91dGxpbmUsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogY29uZmlnID0+IGNvbmZpZy52aXNDb25maWcuc3Ryb2tlQ29sb3IgfHwgY29uZmlnLmNvbG9yXG4gICAgICB9LFxuICAgICAgc2l6ZToge1xuICAgICAgICAuLi5zdXBlci52aXN1YWxDaGFubmVscy5zaXplLFxuICAgICAgICBwcm9wZXJ0eTogJ3JhZGl1cycsXG4gICAgICAgIHJhbmdlOiAncmFkaXVzUmFuZ2UnLFxuICAgICAgICBmaXhlZDogJ2ZpeGVkUmFkaXVzJyxcbiAgICAgICAgY2hhbm5lbFNjYWxlVHlwZTogJ3JhZGl1cycsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0UmFkaXVzJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAxXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHNldEluaXRpYWxMYXllckNvbmZpZyhkYXRhc2V0KSB7XG4gICAgaWYgKCFkYXRhc2V0LmRhdGFDb250YWluZXIubnVtUm93cygpKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgY29uc3QgZGVmYXVsdENvbG9yRmllbGQgPSBmaW5kRGVmYXVsdENvbG9yRmllbGQoZGF0YXNldCk7XG5cbiAgICBpZiAoZGVmYXVsdENvbG9yRmllbGQpIHtcbiAgICAgIHRoaXMudXBkYXRlTGF5ZXJDb25maWcoe1xuICAgICAgICBjb2xvckZpZWxkOiBkZWZhdWx0Q29sb3JGaWVsZFxuICAgICAgfSk7XG4gICAgICB0aGlzLnVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbChkYXRhc2V0LCAnY29sb3InKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN0YXRpYyBmaW5kRGVmYXVsdExheWVyUHJvcHMoe2ZpZWxkUGFpcnMgPSBbXSwgdHlwZX06IEtlcGxlclRhYmxlKSB7XG4gICAgY29uc3QgcHJvcHM6IHtcbiAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgICBjb2xvcj86IFJHQkNvbG9yO1xuICAgICAgaXNWaXNpYmxlPzogYm9vbGVhbjtcbiAgICAgIGNvbHVtbnM/OiBQb2ludExheWVyQ29sdW1uc0NvbmZpZztcbiAgICB9W10gPSBbXTtcblxuICAgIGlmICh0eXBlID09PSBEYXRhc2V0VHlwZS5WRUNUT1JfVElMRSkge1xuICAgICAgcmV0dXJuIHtwcm9wc307XG4gICAgfVxuXG4gICAgLy8gTWFrZSBsYXllciBmb3IgZWFjaCBwYWlyXG4gICAgZmllbGRQYWlycy5mb3JFYWNoKHBhaXIgPT4ge1xuICAgICAgY29uc3QgbGF0RmllbGQgPSBwYWlyLnBhaXIubGF0O1xuXG4gICAgICBjb25zdCBwcm9wOiB7XG4gICAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgICAgIGNvbG9yPzogUkdCQ29sb3I7XG4gICAgICAgIGlzVmlzaWJsZT86IGJvb2xlYW47XG4gICAgICAgIGNvbHVtbnM/OiBQb2ludExheWVyQ29sdW1uc0NvbmZpZztcbiAgICAgIH0gPSB7XG4gICAgICAgIGxhYmVsOiBwYWlyLmRlZmF1bHROYW1lIHx8ICdQb2ludCdcbiAgICAgIH07XG5cbiAgICAgIC8vIGRlZmF1bHQgbGF5ZXIgY29sb3IgZm9yIGJlZ2ludHJpcCBhbmQgZHJvcG9mZiBwb2ludFxuICAgICAgaWYgKGxhdEZpZWxkLnZhbHVlIGluIERFRkFVTFRfTEFZRVJfQ09MT1IpIHtcbiAgICAgICAgcHJvcC5jb2xvciA9IGhleFRvUmdiKERFRkFVTFRfTEFZRVJfQ09MT1JbbGF0RmllbGQudmFsdWVdKTtcbiAgICAgIH1cblxuICAgICAgLy8gc2V0IHRoZSBmaXJzdCBsYXllciB0byBiZSB2aXNpYmxlXG4gICAgICBpZiAocHJvcHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHByb3AuaXNWaXNpYmxlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgbG9naWNhbGx5IHNlcGFyYXRlIGdlb2pzb24gY29sdW1uIHR5cGU/XG4gICAgICBwcm9wLmNvbHVtbnMgPSBhc3NpZ25Qb2ludFBhaXJUb0xheWVyQ29sdW1uKHBhaXIsIHRydWUpO1xuXG4gICAgICBwcm9wcy5wdXNoKHByb3ApO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtwcm9wc307XG4gIH1cblxuICBnZXREZWZhdWx0TGF5ZXJDb25maWcocHJvcHM6IExheWVyQmFzZUNvbmZpZ1BhcnRpYWwpIHtcbiAgICBjb25zdCBkZWZhdWx0TGF5ZXJDb25maWcgPSBzdXBlci5nZXREZWZhdWx0TGF5ZXJDb25maWcocHJvcHMgPz8ge30pO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5kZWZhdWx0TGF5ZXJDb25maWcsXG5cbiAgICAgIGNvbHVtbk1vZGU6IHByb3BzPy5jb2x1bW5Nb2RlID8/IERFRkFVTFRfQ09MVU1OX01PREUsXG5cbiAgICAgIC8vIGFkZCBzdHJva2UgY29sb3IgdmlzdWFsIGNoYW5uZWxcbiAgICAgIHN0cm9rZUNvbG9yRmllbGQ6IG51bGwsXG4gICAgICBzdHJva2VDb2xvckRvbWFpbjogWzAsIDFdLFxuICAgICAgc3Ryb2tlQ29sb3JTY2FsZTogJ3F1YW50aWxlJyxcbiAgICAgIGNvbG9yVUk6IHtcbiAgICAgICAgLi4uZGVmYXVsdExheWVyQ29uZmlnLmNvbG9yVUksXG4gICAgICAgIHN0cm9rZUNvbG9yUmFuZ2U6IERFRkFVTFRfQ09MT1JfVUlcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgY2FsY3VsYXRlRGF0YUF0dHJpYnV0ZSh7ZmlsdGVyZWRJbmRleCwgZGF0YUNvbnRhaW5lcn06IEtlcGxlclRhYmxlLCBnZXRQb3NpdGlvbikge1xuICAgIGNvbnN0IHtjb2x1bW5Nb2RlfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgLy8gMSkgQ09MVU1OX01PREVfR0VPQVJST1cgLSB3aGVuIHdlIGhhdmUgYSBnZW9hcnJvdyBwb2ludCBjb2x1bW5cbiAgICAvLyAyKSBDT0xVTU5fTU9ERV9QT0lOVFMgKyBBcnJvd0RhdGFDb250YWluZXIgPiBjcmVhdGUgZ2VvYXJyb3cgcG9pbnQgY29sdW1uIG9uIHRoZSBmbHlcbiAgICBpZiAoXG4gICAgICBkYXRhQ29udGFpbmVyIGluc3RhbmNlb2YgQXJyb3dEYXRhQ29udGFpbmVyICYmXG4gICAgICAoY29sdW1uTW9kZSA9PT0gQ09MVU1OX01PREVfR0VPQVJST1cgfHwgY29sdW1uTW9kZSA9PT0gQ09MVU1OX01PREVfUE9JTlRTKVxuICAgICkge1xuICAgICAgdGhpcy5maWx0ZXJlZEluZGV4ID0gZ2V0RmlsdGVyZWRJbmRleChcbiAgICAgICAgZGF0YUNvbnRhaW5lci5udW1Sb3dzKCksXG4gICAgICAgIGZpbHRlcmVkSW5kZXgsXG4gICAgICAgIHRoaXMuZmlsdGVyZWRJbmRleFxuICAgICAgKTtcbiAgICAgIHRoaXMuZmlsdGVyZWRJbmRleFRyaWdnZXIgPSBmaWx0ZXJlZEluZGV4O1xuXG4gICAgICBpZiAodGhpcy5jb25maWcuY29sdW1uTW9kZSA9PT0gQ09MVU1OX01PREVfR0VPQVJST1cpIHtcbiAgICAgICAgdGhpcy5nZW9BcnJvd1ZlY3RvciA9IGRhdGFDb250YWluZXIuZ2V0Q29sdW1uKHRoaXMuY29uZmlnLmNvbHVtbnMuZ2VvYXJyb3cuZmllbGRJZHgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZ2VuZXJhdGUgYSBjb2x1bW4gY29tcGF0aWJsZSB3aXRoIGdlb2Fycm93IHBvaW50XG4gICAgICAgIHRoaXMuZ2VvQXJyb3dWZWN0b3IgPSBjcmVhdGVHZW9BcnJvd1BvaW50VmVjdG9yKGRhdGFDb250YWluZXIsIGdldFBvc2l0aW9uKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRhdGFDb250YWluZXIuZ2V0VGFibGUoKTtcbiAgICB9XG5cbiAgICAvLyB3ZSBkb24ndCBuZWVkIHRoZXNlIGluIG5vbi1BcnJvdyBtb2RlcyBhdG0uXG4gICAgdGhpcy5nZW9BcnJvd1ZlY3RvciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmZpbHRlcmVkSW5kZXggPSBudWxsO1xuXG4gICAgY29uc3QgZGF0YTogUG9pbnRMYXllckRhdGFbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWx0ZXJlZEluZGV4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBpbmRleCA9IGZpbHRlcmVkSW5kZXhbaV07XG4gICAgICBsZXQgbmVpZ2hib3JzO1xuXG4gICAgICBpZiAodGhpcy5jb25maWcuY29sdW1uTW9kZSA9PT0gQ09MVU1OX01PREVfUE9JTlRTKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5jb2x1bW5zLm5laWdoYm9ycz8udmFsdWUpIHtcbiAgICAgICAgICBjb25zdCB7ZmllbGRJZHh9ID0gdGhpcy5jb25maWcuY29sdW1ucy5uZWlnaGJvcnM7XG4gICAgICAgICAgbmVpZ2hib3JzID0gQXJyYXkuaXNBcnJheShkYXRhQ29udGFpbmVyLnZhbHVlQXQoaW5kZXgsIGZpZWxkSWR4KSlcbiAgICAgICAgICAgID8gZGF0YUNvbnRhaW5lci52YWx1ZUF0KGluZGV4LCBmaWVsZElkeClcbiAgICAgICAgICAgIDogW107XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9zID0gZ2V0UG9zaXRpb24oe2luZGV4fSk7XG5cbiAgICAgICAgLy8gaWYgZG9lc24ndCBoYXZlIHBvaW50IGxhdCBvciBsbmcsIGRvIG5vdCBhZGQgdGhlIHBvaW50XG4gICAgICAgIC8vIGRlY2suZ2wgY2FuJ3QgaGFuZGxlIHBvc2l0aW9uID0gbnVsbFxuICAgICAgICBwdXNoUG9pbnRQb3NpdGlvbihkYXRhLCBwb3MsIGluZGV4LCBuZWlnaGJvcnMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQ09MVU1OX01PREVfR0VPSlNPTiBtb2RlIC0gcG9pbnQgZnJvbSBnZW9qc29uIGNvb3JkaW5hdGVzXG4gICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gdGhpcy5kYXRhVG9GZWF0dXJlW2ldO1xuICAgICAgICAvLyBpZiBtdWx0aSBwb2ludHNcbiAgICAgICAgaWYgKGNvb3JkaW5hdGVzICYmIEFycmF5LmlzQXJyYXkoY29vcmRpbmF0ZXNbMF0pKSB7XG4gICAgICAgICAgY29vcmRpbmF0ZXMuZm9yRWFjaChjb29yZCA9PiB7XG4gICAgICAgICAgICBwdXNoUG9pbnRQb3NpdGlvbihkYXRhLCBjb29yZCwgaW5kZXgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGNvb3JkaW5hdGVzICYmIE51bWJlci5pc0Zpbml0ZShjb29yZGluYXRlc1swXSkpIHtcbiAgICAgICAgICBwdXNoUG9pbnRQb3NpdGlvbihkYXRhLCBjb29yZGluYXRlcyBhcyBudW1iZXJbXSwgaW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBmb3JtYXRMYXllckRhdGEoZGF0YXNldHMsIG9sZExheWVyRGF0YSkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5kYXRhSWQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3Qge3RleHRMYWJlbH0gPSB0aGlzLmNvbmZpZztcbiAgICBjb25zdCB7Z3B1RmlsdGVyLCBkYXRhQ29udGFpbmVyfSA9IGRhdGFzZXRzW3RoaXMuY29uZmlnLmRhdGFJZF07XG4gICAgY29uc3Qge2RhdGEsIHRyaWdnZXJDaGFuZ2VkfSA9IHRoaXMudXBkYXRlRGF0YShkYXRhc2V0cywgb2xkTGF5ZXJEYXRhKTtcbiAgICBjb25zdCBnZXRQb3NpdGlvbiA9IGQgPT4gZC5wb3NpdGlvbjtcblxuICAgIC8vIGdldCBhbGwgZGlzdGluY3QgY2hhcmFjdGVycyBpbiB0aGUgdGV4dCBsYWJlbHNcbiAgICBjb25zdCB0ZXh0TGFiZWxzID0gZm9ybWF0VGV4dExhYmVsRGF0YSh7XG4gICAgICB0ZXh0TGFiZWwsXG4gICAgICB0cmlnZ2VyQ2hhbmdlZCxcbiAgICAgIG9sZExheWVyRGF0YSxcbiAgICAgIGRhdGEsXG4gICAgICBkYXRhQ29udGFpbmVyLFxuICAgICAgZmlsdGVyZWRJbmRleDogdGhpcy5maWx0ZXJlZEluZGV4XG4gICAgfSk7XG5cbiAgICBjb25zdCBhY2Nlc3NvcnMgPSB0aGlzLmdldEF0dHJpYnV0ZUFjY2Vzc29ycyh7ZGF0YUNvbnRhaW5lcn0pO1xuXG4gICAgY29uc3QgaXNGaWx0ZXJlZEFjY2Vzc29yID0gKGRhdGE6IHtpbmRleDogbnVtYmVyfSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRJbmRleCA/IHRoaXMuZmlsdGVyZWRJbmRleFtkYXRhLmluZGV4XSA6IDE7XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhLFxuICAgICAgZ2V0UG9zaXRpb24sXG4gICAgICBnZXRGaWx0ZXJWYWx1ZTogZ3B1RmlsdGVyLmZpbHRlclZhbHVlQWNjZXNzb3IoZGF0YUNvbnRhaW5lcikoKSxcbiAgICAgIGdldEZpbHRlcmVkOiBpc0ZpbHRlcmVkQWNjZXNzb3IsXG4gICAgICB0ZXh0TGFiZWxzLFxuICAgICAgLi4uYWNjZXNzb3JzXG4gICAgfTtcbiAgfVxuICAvKiBlc2xpbnQtZW5hYmxlIGNvbXBsZXhpdHkgKi9cblxuICB1cGRhdGVMYXllck1ldGEoZGF0YXNldDogS2VwbGVyVGFibGUpIHtcbiAgICBjb25zdCB7ZGF0YUNvbnRhaW5lcn0gPSBkYXRhc2V0O1xuICAgIHRoaXMuZGF0YUNvbnRhaW5lciA9IGRhdGFDb250YWluZXI7XG5cbiAgICBpZiAodGhpcy5jb25maWcuY29sdW1uTW9kZSA9PT0gQ09MVU1OX01PREVfR0VPSlNPTikge1xuICAgICAgY29uc3QgZ2V0RmVhdHVyZSA9IHRoaXMuZ2V0UG9zaXRpb25BY2Nlc3NvcigpO1xuICAgICAgdGhpcy5kYXRhVG9GZWF0dXJlID0gZ2V0R2VvanNvblBvaW50RGF0YU1hcHMoZGF0YUNvbnRhaW5lciwgZ2V0RmVhdHVyZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZy5jb2x1bW5Nb2RlID09PSBDT0xVTU5fTU9ERV9HRU9BUlJPVykge1xuICAgICAgY29uc3QgYm91bmRzRnJvbU1ldGFkYXRhID0gZ2V0Qm91bmRzRnJvbUFycm93TWV0YWRhdGEoXG4gICAgICAgIHRoaXMuY29uZmlnLmNvbHVtbnMuZ2VvYXJyb3csXG4gICAgICAgIGRhdGFDb250YWluZXIgYXMgQXJyb3dEYXRhQ29udGFpbmVyXG4gICAgICApO1xuICAgICAgaWYgKGJvdW5kc0Zyb21NZXRhZGF0YSkge1xuICAgICAgICB0aGlzLnVwZGF0ZU1ldGEoe2JvdW5kczogYm91bmRzRnJvbU1ldGFkYXRhfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBnZXRQb3NpdGlvbiA9IHRoaXMuZ2V0UG9zaXRpb25BY2Nlc3NvcihkYXRhQ29udGFpbmVyKTtcbiAgICAgICAgY29uc3QgYm91bmRzID0gdGhpcy5nZXRQb2ludHNCb3VuZHMoZGF0YUNvbnRhaW5lciwgZ2V0UG9zaXRpb24pO1xuICAgICAgICB0aGlzLnVwZGF0ZU1ldGEoe2JvdW5kc30pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBnZXRQb3NpdGlvbiA9IHRoaXMuZ2V0UG9zaXRpb25BY2Nlc3NvcihkYXRhQ29udGFpbmVyKTtcbiAgICAgIGNvbnN0IGJvdW5kcyA9IHRoaXMuZ2V0UG9pbnRzQm91bmRzKGRhdGFDb250YWluZXIsIGdldFBvc2l0aW9uKTtcbiAgICAgIHRoaXMudXBkYXRlTWV0YSh7Ym91bmRzfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbiAgcmVuZGVyTGF5ZXIob3B0cykge1xuICAgIGNvbnN0IHtkYXRhLCBncHVGaWx0ZXIsIG9iamVjdEhvdmVyZWQsIG1hcFN0YXRlLCBpbnRlcmFjdGlvbkNvbmZpZywgZGF0YXNldH0gPSBvcHRzO1xuXG4gICAgLy8gaWYgbm8gZmllbGQgc2l6ZSBpcyBkZWZpbmVkIHdlIG5lZWQgdG8gcGFzcyBmaXhlZCByYWRpdXMgPSBmYWxzZVxuICAgIGNvbnN0IGZpeGVkUmFkaXVzID0gdGhpcy5jb25maWcudmlzQ29uZmlnLmZpeGVkUmFkaXVzICYmIEJvb2xlYW4odGhpcy5jb25maWcuc2l6ZUZpZWxkKTtcbiAgICBjb25zdCByYWRpdXNTY2FsZSA9IHRoaXMuZ2V0UmFkaXVzU2NhbGVCeVpvb20obWFwU3RhdGUsIGZpeGVkUmFkaXVzKTtcblxuICAgIGNvbnN0IGxheWVyUHJvcHMgPSB7XG4gICAgICBzdHJva2VkOiB0aGlzLmNvbmZpZy52aXNDb25maWcub3V0bGluZSxcbiAgICAgIGZpbGxlZDogdGhpcy5jb25maWcudmlzQ29uZmlnLmZpbGxlZCxcbiAgICAgIGxpbmVXaWR0aFNjYWxlOiB0aGlzLmNvbmZpZy52aXNDb25maWcudGhpY2tuZXNzLFxuICAgICAgYmlsbGJvYXJkOiB0aGlzLmNvbmZpZy52aXNDb25maWcuYmlsbGJvYXJkLFxuICAgICAgcmFkaXVzU2NhbGUsXG4gICAgICAuLi4odGhpcy5jb25maWcudmlzQ29uZmlnLmZpeGVkUmFkaXVzID8ge30gOiB7cmFkaXVzTWF4UGl4ZWxzOiA1MDB9KVxuICAgIH07XG5cbiAgICBjb25zdCB1cGRhdGVUcmlnZ2VycyA9IHtcbiAgICAgIGdldFBvc2l0aW9uOiB0aGlzLmNvbmZpZy5jb2x1bW5zLFxuICAgICAgZ2V0RmlsdGVyVmFsdWU6IGdwdUZpbHRlci5maWx0ZXJWYWx1ZVVwZGF0ZVRyaWdnZXJzLFxuICAgICAgZ2V0RmlsdGVyZWQ6IHRoaXMuZmlsdGVyZWRJbmRleFRyaWdnZXIsXG4gICAgICAuLi50aGlzLmdldFZpc3VhbENoYW5uZWxVcGRhdGVUcmlnZ2VycygpXG4gICAgfTtcblxuICAgIGNvbnN0IHVzZUFycm93TGF5ZXIgPSBCb29sZWFuKHRoaXMuZ2VvQXJyb3dWZWN0b3IpO1xuXG4gICAgY29uc3QgZGVmYXVsdExheWVyUHJvcHMgPSB0aGlzLmdldERlZmF1bHREZWNrTGF5ZXJQcm9wcyhvcHRzKTtcbiAgICBjb25zdCBicnVzaGluZ1Byb3BzID0gdGhpcy5nZXRCcnVzaGluZ0V4dGVuc2lvblByb3BzKGludGVyYWN0aW9uQ29uZmlnKTtcbiAgICBjb25zdCBnZXRQaXhlbE9mZnNldCA9IGdldFRleHRPZmZzZXRCeVJhZGl1cyhyYWRpdXNTY2FsZSwgZGF0YS5nZXRSYWRpdXMsIG1hcFN0YXRlKTtcbiAgICBjb25zdCBleHRlbnNpb25zID0gW1xuICAgICAgLi4uZGVmYXVsdExheWVyUHJvcHMuZXh0ZW5zaW9ucyxcbiAgICAgIGJydXNoaW5nRXh0ZW5zaW9uLFxuICAgICAgLi4uKHVzZUFycm93TGF5ZXIgPyBbYXJyb3dDUFVGaWx0ZXJFeHRlbnNpb25dIDogW10pXG4gICAgXTtcblxuICAgIGNvbnN0IHNoYXJlZFByb3BzID0ge1xuICAgICAgZ2V0RmlsdGVyVmFsdWU6IGRhdGEuZ2V0RmlsdGVyVmFsdWUsXG4gICAgICBleHRlbnNpb25zLFxuICAgICAgZmlsdGVyUmFuZ2U6IGRlZmF1bHRMYXllclByb3BzLmZpbHRlclJhbmdlLFxuICAgICAgdmlzaWJsZTogZGVmYXVsdExheWVyUHJvcHMudmlzaWJsZSxcbiAgICAgIC4uLmJydXNoaW5nUHJvcHNcbiAgICB9O1xuICAgIGNvbnN0IGhvdmVyZWRPYmplY3QgPSB0aGlzLmhhc0hvdmVyZWRPYmplY3Qob2JqZWN0SG92ZXJlZCk7XG4gICAgY29uc3Qge3Nob3dOZWlnaGJvck9uSG92ZXIsIGFsbG93SG92ZXJ9ID0gdGhpcy5jb25maWcudmlzQ29uZmlnO1xuICAgIGxldCBuZWlnaGJvcnNEYXRhOiBSZXR1cm5UeXBlPHR5cGVvZiBnZXROZWlnaGJvcnM+ID0gW107XG4gICAgaWYgKGFsbG93SG92ZXIgJiYgc2hvd05laWdoYm9yT25Ib3ZlciAmJiBob3ZlcmVkT2JqZWN0KSB7XG4gICAgICAvLyBmaW5kIG5laWdoYm9yc1xuICAgICAgbmVpZ2hib3JzRGF0YSA9IGdldE5laWdoYm9ycyhcbiAgICAgICAgdGhpcy5jb25maWcuY29sdW1ucy5uZWlnaGJvcnMsXG4gICAgICAgIGRhdGFzZXQuZGF0YUNvbnRhaW5lcixcbiAgICAgICAgaG92ZXJlZE9iamVjdC5pbmRleCxcbiAgICAgICAgdGhpcy5nZXRQb3NpdGlvbkFjY2Vzc29yKGRhdGFzZXQuZGF0YUNvbnRhaW5lcilcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IFNjYXR0ZXJwbG90TGF5ZXJDbGFzczogdHlwZW9mIFNjYXR0ZXJwbG90TGF5ZXIgfCB0eXBlb2YgR2VvQXJyb3dTY2F0dGVycGxvdExheWVyID1cbiAgICAgIFNjYXR0ZXJwbG90TGF5ZXI7XG4gICAgbGV0IGRlY2tMYXllckRhdGEgPSBkYXRhLmRhdGE7XG4gICAgbGV0IGdldFBvc2l0aW9uID0gZGF0YS5nZXRQb3NpdGlvbjtcbiAgICBpZiAodXNlQXJyb3dMYXllcikge1xuICAgICAgU2NhdHRlcnBsb3RMYXllckNsYXNzID0gR2VvQXJyb3dTY2F0dGVycGxvdExheWVyO1xuICAgICAgZGVja0xheWVyRGF0YSA9IGRhdGFzZXQuZGF0YUNvbnRhaW5lci5nZXRUYWJsZSgpO1xuICAgICAgZ2V0UG9zaXRpb24gPSB0aGlzLmdlb0Fycm93VmVjdG9yO1xuICAgIH1cblxuICAgIHJldHVybiBbXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICBuZXcgU2NhdHRlcnBsb3RMYXllckNsYXNzKHtcbiAgICAgICAgLi4uZGVmYXVsdExheWVyUHJvcHMsXG4gICAgICAgIC4uLmJydXNoaW5nUHJvcHMsXG4gICAgICAgIC4uLmxheWVyUHJvcHMsXG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIGRhdGE6IGRlY2tMYXllckRhdGEsXG4gICAgICAgIGdldFBvc2l0aW9uLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgLy8gY2lyY2xlcyB3aWxsIGJlIGZsYXQgb24gdGhlIG1hcCB3aGVuIHRoZSBhbHRpdHVkZSBjb2x1bW4gaXMgbm90IHVzZWRcbiAgICAgICAgICBkZXB0aFRlc3Q6ICh0aGlzLmNvbmZpZy5jb2x1bW5zLmFsdGl0dWRlPy5maWVsZElkeCBhcyBudW1iZXIpID4gLTFcbiAgICAgICAgfSxcbiAgICAgICAgbGluZVdpZHRoVW5pdHM6ICdwaXhlbHMnLFxuICAgICAgICB1cGRhdGVUcmlnZ2VycyxcbiAgICAgICAgZXh0ZW5zaW9ucyxcbiAgICAgICAgb3BhY2l0eTogaG92ZXJlZE9iamVjdCAmJiBzaG93TmVpZ2hib3JPbkhvdmVyID8gMC4yIDogdGhpcy5jb25maWcudmlzQ29uZmlnLm9wYWNpdHksXG4gICAgICAgIHBpY2thYmxlOiBhbGxvd0hvdmVyLFxuICAgICAgICBhdXRvSGlnaGxpZ2h0OiBmYWxzZVxuICAgICAgfSksXG4gICAgICAvLyBob3ZlciBsYXllclxuICAgICAgLi4uKGhvdmVyZWRPYmplY3RcbiAgICAgICAgPyBbXG4gICAgICAgICAgICBuZXcgU2NhdHRlcnBsb3RMYXllcih7XG4gICAgICAgICAgICAgIC4uLnRoaXMuZ2V0RGVmYXVsdEhvdmVyTGF5ZXJQcm9wcygpLFxuICAgICAgICAgICAgICAuLi5sYXllclByb3BzLFxuICAgICAgICAgICAgICB2aXNpYmxlOiBkZWZhdWx0TGF5ZXJQcm9wcy52aXNpYmxlLFxuICAgICAgICAgICAgICBkYXRhOiBbLi4ubmVpZ2hib3JzRGF0YSwgaG92ZXJlZE9iamVjdF0sXG4gICAgICAgICAgICAgIGdldExpbmVDb2xvcjogdGhpcy5jb25maWcudmlzQ29uZmlnLnNob3dIaWdobGlnaHRDb2xvclxuICAgICAgICAgICAgICAgID8gdGhpcy5jb25maWcuaGlnaGxpZ2h0Q29sb3JcbiAgICAgICAgICAgICAgICA6IGRhdGEuZ2V0TGluZUNvbG9yLFxuICAgICAgICAgICAgICBnZXRGaWxsQ29sb3I6IHRoaXMuY29uZmlnLnZpc0NvbmZpZy5zaG93SGlnaGxpZ2h0Q29sb3JcbiAgICAgICAgICAgICAgICA/IHRoaXMuY29uZmlnLmhpZ2hsaWdodENvbG9yXG4gICAgICAgICAgICAgICAgOiBkYXRhLmdldEZpbGxDb2xvcixcbiAgICAgICAgICAgICAgZ2V0UmFkaXVzOiBkYXRhLmdldFJhZGl1cyxcbiAgICAgICAgICAgICAgZ2V0UG9zaXRpb246IGRhdGEuZ2V0UG9zaXRpb25cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICA6IFtdKSxcbiAgICAgIC8vIHRleHQgbGFiZWwgbGF5ZXJcbiAgICAgIC4uLnRoaXMucmVuZGVyVGV4dExhYmVsTGF5ZXIoXG4gICAgICAgIHtcbiAgICAgICAgICBnZXRQb3NpdGlvbixcbiAgICAgICAgICBzaGFyZWRQcm9wcyxcbiAgICAgICAgICBnZXRQaXhlbE9mZnNldCxcbiAgICAgICAgICB1cGRhdGVUcmlnZ2VycyxcbiAgICAgICAgICBnZXRGaWx0ZXJlZDogZGF0YS5nZXRGaWx0ZXJlZFxuICAgICAgICB9LFxuICAgICAgICB0aGlzLmdlb0Fycm93VmVjdG9yXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgICAgICAgIGRhdGE6IHsuLi5vcHRzLmRhdGEsIGdldFBvc2l0aW9ufVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogb3B0c1xuICAgICAgKVxuICAgIF07XG4gIH1cblxuICBoYXNIb3ZlcmVkT2JqZWN0KG9iamVjdEluZm86IHtpbmRleDogbnVtYmVyfSkge1xuICAgIGlmIChcbiAgICAgIGlzTGF5ZXJIb3ZlcmVkRnJvbUFycm93KG9iamVjdEluZm8sIHRoaXMuaWQpICYmXG4gICAgICBvYmplY3RJbmZvLmluZGV4ID49IDAgJiZcbiAgICAgIHRoaXMuZGF0YUNvbnRhaW5lclxuICAgICkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaW5kZXg6IG9iamVjdEluZm8uaW5kZXgsXG4gICAgICAgIHBvc2l0aW9uOiB0aGlzLmdldFBvc2l0aW9uQWNjZXNzb3IodGhpcy5kYXRhQ29udGFpbmVyKShvYmplY3RJbmZvKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwZXIuaGFzSG92ZXJlZE9iamVjdChvYmplY3RJbmZvKTtcbiAgfVxuXG4gIGdldEhvdmVyRGF0YShcbiAgICBvYmplY3Q6IHtpbmRleDogbnVtYmVyfSB8IGFycm93LlN0cnVjdFJvdyB8IHVuZGVmaW5lZCxcbiAgICBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLFxuICAgIGZpZWxkczogRmllbGRbXSxcbiAgICBhbmltYXRpb25Db25maWc6IEFuaW1hdGlvbkNvbmZpZyxcbiAgICBob3ZlckluZm86IHtpbmRleDogbnVtYmVyfVxuICApIHtcbiAgICAvLyBmb3IgYXJyb3cgZm9ybWF0LCBgb2JqZWN0YCBpcyB0aGUgQXJyb3cgcm93IG9iamVjdCBQcm94eSxcbiAgICAvLyBhbmQgaW5kZXggaXMgcGFzc2VkIGluIGBob3ZlckluZm9gLlxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZW9BcnJvd1ZlY3RvciA/IGhvdmVySW5mbz8uaW5kZXggOiAob2JqZWN0IGFzIHtpbmRleDogbnVtYmVyfSkuaW5kZXg7XG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIHJldHVybiBkYXRhQ29udGFpbmVyLnJvdyhpbmRleCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUtBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLGtCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxhQUFBLEdBQUFILE9BQUE7QUFFQSxJQUFBSSxVQUFBLEdBQUFDLHNCQUFBLENBQUFMLE9BQUE7QUFPQSxJQUFBTSxNQUFBLEdBQUFOLE9BQUE7QUFPQSxJQUFBTyxlQUFBLEdBQUFGLHNCQUFBLENBQUFMLE9BQUE7QUFDQSxJQUFBUSxVQUFBLEdBQUFSLE9BQUE7QUFPQSxJQUFBUyxlQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxXQUFBLEdBQUFWLE9BQUE7QUFRQSxJQUFBVyxhQUFBLEdBQUFYLE9BQUE7QUFBNkYsU0FBQVksV0FBQUMsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsV0FBQUQsQ0FBQSxPQUFBRSxnQkFBQSxhQUFBRixDQUFBLE9BQUFHLDJCQUFBLGFBQUFKLENBQUEsRUFBQUsseUJBQUEsS0FBQUMsT0FBQSxDQUFBQyxTQUFBLENBQUFOLENBQUEs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
542
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXh0ZW5zaW9ucyIsInJlcXVpcmUiLCJfbGF5ZXJzIiwiX2RlY2tnbEFycm93TGF5ZXJzIiwiX2RlY2tnbExheWVycyIsIl9iYXNlTGF5ZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3V0aWxzIiwiX3BvaW50TGF5ZXJJY29uIiwiX2NvbnN0YW50cyIsIl9sYXllclRleHRMYWJlbCIsIl9sYXllclV0aWxzIiwiX2dlb2pzb25VdGlscyIsIl9jYWxsU3VwZXIiLCJ0IiwibyIsImUiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsImFwcGx5IiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJjYWxsIiwiX3N1cGVyUHJvcEdldCIsInIiLCJwIiwiX2dldDIiLCJvd25LZXlzIiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsInBvaW50UG9zQWNjZXNzb3IiLCJleHBvcnRzIiwiX3JlZiIsImxhdCIsImxuZyIsImFsdGl0dWRlIiwiZGMiLCJkIiwidmFsdWVBdCIsImluZGV4IiwiZmllbGRJZHgiLCJnZW9qc29uUG9zQWNjZXNzb3IiLCJfcmVmMiIsImdlb2pzb24iLCJnZW9hcnJvd1Bvc0FjY2Vzc29yIiwiX3JlZjMiLCJnZW9hcnJvdyIsImRhdGFDb250YWluZXIiLCJyb3ciLCJnZXQiLCJDT0xVTU5fTU9ERV9QT0lOVFMiLCJDT0xVTU5fTU9ERV9HRU9KU09OIiwiQ09MVU1OX01PREVfR0VPQVJST1ciLCJwb2ludFJlcXVpcmVkQ29sdW1ucyIsInBvaW50T3B0aW9uYWxDb2x1bW5zIiwiZ2VvanNvblJlcXVpcmVkQ29sdW1ucyIsImdlb2Fycm93UmVxdWlyZWRDb2x1bW5zIiwiU1VQUE9SVEVEX0NPTFVNTl9NT0RFUyIsImtleSIsImxhYmVsIiwicmVxdWlyZWRDb2x1bW5zIiwib3B0aW9uYWxDb2x1bW5zIiwidmVyaWZ5RmllbGQiLCJmIiwiaXNHZW9BcnJvd1BvaW50RmllbGQiLCJERUZBVUxUX0NPTFVNTl9NT0RFIiwiYnJ1c2hpbmdFeHRlbnNpb24iLCJCcnVzaGluZ0V4dGVuc2lvbiIsImFycm93Q1BVRmlsdGVyRXh0ZW5zaW9uIiwiRmlsdGVyQXJyb3dFeHRlbnNpb24iLCJwdXNoUG9pbnRQb3NpdGlvbiIsImRhdGEiLCJwb3MiLCJuZWlnaGJvcnMiLCJldmVyeSIsIk51bWJlciIsImlzRmluaXRlIiwicG9zaXRpb24iLCJwb2ludFZpc0NvbmZpZ3MiLCJyYWRpdXMiLCJmaXhlZFJhZGl1cyIsIm9wYWNpdHkiLCJvdXRsaW5lIiwidGhpY2tuZXNzIiwic3Ryb2tlQ29sb3IiLCJjb2xvclJhbmdlIiwic3Ryb2tlQ29sb3JSYW5nZSIsInJhZGl1c1JhbmdlIiwiZmlsbGVkIiwiTEFZRVJfVklTX0NPTkZJR1MiLCJ0eXBlIiwiZGVmYXVsdFZhbHVlIiwicHJvcGVydHkiLCJiaWxsYm9hcmQiLCJhbGxvd0hvdmVyIiwic2hvd05laWdoYm9yT25Ib3ZlciIsInNob3dIaWdobGlnaHRDb2xvciIsIlBvaW50TGF5ZXIiLCJfTGF5ZXIiLCJwcm9wcyIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsInVuZGVmaW5lZCIsInJlZ2lzdGVyVmlzQ29uZmlnIiwiZ2V0UG9zaXRpb25BY2Nlc3NvciIsImNvbmZpZyIsImNvbHVtbk1vZGUiLCJjb2x1bW5zIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJQb2ludExheWVySWNvbiIsImRlZmF1bHRQb2ludENvbHVtblBhaXJzIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImNvbG9yIiwiYWNjZXNzb3IiLCJjb25kaXRpb24iLCJ2aXNDb25maWciLCJmaWVsZCIsInNjYWxlIiwiZG9tYWluIiwicmFuZ2UiLCJjaGFubmVsU2NhbGVUeXBlIiwiQ0hBTk5FTF9TQ0FMRVMiLCJzaXplIiwiZml4ZWQiLCJ2YWx1ZSIsInNldEluaXRpYWxMYXllckNvbmZpZyIsImRhdGFzZXQiLCJudW1Sb3dzIiwiZGVmYXVsdENvbG9yRmllbGQiLCJmaW5kRGVmYXVsdENvbG9yRmllbGQiLCJ1cGRhdGVMYXllckNvbmZpZyIsImNvbG9yRmllbGQiLCJ1cGRhdGVMYXllclZpc3VhbENoYW5uZWwiLCJnZXREZWZhdWx0TGF5ZXJDb25maWciLCJfcHJvcHMkY29sdW1uTW9kZSIsImRlZmF1bHRMYXllckNvbmZpZyIsInN0cm9rZUNvbG9yRmllbGQiLCJzdHJva2VDb2xvckRvbWFpbiIsInN0cm9rZUNvbG9yU2NhbGUiLCJjb2xvclVJIiwiREVGQVVMVF9DT0xPUl9VSSIsImNhbGN1bGF0ZURhdGFBdHRyaWJ1dGUiLCJfcmVmNCIsImdldFBvc2l0aW9uIiwiX3RoaXMyIiwiZmlsdGVyZWRJbmRleCIsIkFycm93RGF0YUNvbnRhaW5lciIsImdldEZpbHRlcmVkSW5kZXgiLCJmaWx0ZXJlZEluZGV4VHJpZ2dlciIsImdlb0Fycm93VmVjdG9yIiwiZ2V0Q29sdW1uIiwiY3JlYXRlR2VvQXJyb3dQb2ludFZlY3RvciIsImdldFRhYmxlIiwiX2xvb3AiLCJpIiwiX3RoaXMyJGNvbmZpZyRjb2x1bW5zIiwiQXJyYXkiLCJpc0FycmF5IiwiY29vcmRpbmF0ZXMiLCJkYXRhVG9GZWF0dXJlIiwiY29vcmQiLCJmb3JtYXRMYXllckRhdGEiLCJkYXRhc2V0cyIsIm9sZExheWVyRGF0YSIsIl90aGlzMyIsImRhdGFJZCIsInRleHRMYWJlbCIsIl9kYXRhc2V0cyR0aGlzJGNvbmZpZyIsImdwdUZpbHRlciIsIl90aGlzJHVwZGF0ZURhdGEiLCJ1cGRhdGVEYXRhIiwidHJpZ2dlckNoYW5nZWQiLCJ0ZXh0TGFiZWxzIiwiZm9ybWF0VGV4dExhYmVsRGF0YSIsImFjY2Vzc29ycyIsImdldEF0dHJpYnV0ZUFjY2Vzc29ycyIsImlzRmlsdGVyZWRBY2Nlc3NvciIsImdldEZpbHRlclZhbHVlIiwiZmlsdGVyVmFsdWVBY2Nlc3NvciIsImdldEZpbHRlcmVkIiwidXBkYXRlTGF5ZXJNZXRhIiwiZ2V0RmVhdHVyZSIsImdldEdlb2pzb25Qb2ludERhdGFNYXBzIiwiYm91bmRzRnJvbU1ldGFkYXRhIiwiZ2V0Qm91bmRzRnJvbUFycm93TWV0YWRhdGEiLCJ1cGRhdGVNZXRhIiwiYm91bmRzIiwiZ2V0UG9pbnRzQm91bmRzIiwicmVuZGVyTGF5ZXIiLCJvcHRzIiwiX3RoaXMkY29uZmlnJGNvbHVtbnMkIiwib2JqZWN0SG92ZXJlZCIsIm1hcFN0YXRlIiwiaW50ZXJhY3Rpb25Db25maWciLCJzaXplRmllbGQiLCJyYWRpdXNTY2FsZSIsImdldFJhZGl1c1NjYWxlQnlab29tIiwibGF5ZXJQcm9wcyIsInN0cm9rZWQiLCJsaW5lV2lkdGhTY2FsZSIsInJhZGl1c01heFBpeGVscyIsInVwZGF0ZVRyaWdnZXJzIiwiZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycyIsImdldFZpc3VhbENoYW5uZWxVcGRhdGVUcmlnZ2VycyIsInVzZUFycm93TGF5ZXIiLCJkZWZhdWx0TGF5ZXJQcm9wcyIsImdldERlZmF1bHREZWNrTGF5ZXJQcm9wcyIsImJydXNoaW5nUHJvcHMiLCJnZXRCcnVzaGluZ0V4dGVuc2lvblByb3BzIiwiZ2V0UGl4ZWxPZmZzZXQiLCJnZXRUZXh0T2Zmc2V0QnlSYWRpdXMiLCJnZXRSYWRpdXMiLCJleHRlbnNpb25zIiwic2hhcmVkUHJvcHMiLCJmaWx0ZXJSYW5nZSIsInZpc2libGUiLCJob3ZlcmVkT2JqZWN0IiwiaGFzSG92ZXJlZE9iamVjdCIsIl90aGlzJGNvbmZpZyR2aXNDb25maSIsIm5laWdoYm9yc0RhdGEiLCJnZXROZWlnaGJvcnMiLCJTY2F0dGVycGxvdExheWVyQ2xhc3MiLCJTY2F0dGVycGxvdExheWVyIiwiZGVja0xheWVyRGF0YSIsIkdlb0Fycm93U2NhdHRlcnBsb3RMYXllciIsInBhcmFtZXRlcnMiLCJkZXB0aFRlc3QiLCJsaW5lV2lkdGhVbml0cyIsInBpY2thYmxlIiwiYXV0b0hpZ2hsaWdodCIsImdldERlZmF1bHRIb3ZlckxheWVyUHJvcHMiLCJnZXRMaW5lQ29sb3IiLCJoaWdobGlnaHRDb2xvciIsImdldEZpbGxDb2xvciIsInJlbmRlclRleHRMYWJlbExheWVyIiwib2JqZWN0SW5mbyIsImlzTGF5ZXJIb3ZlcmVkRnJvbUFycm93IiwiaWQiLCJnZXRIb3ZlckRhdGEiLCJvYmplY3QiLCJmaWVsZHMiLCJhbmltYXRpb25Db25maWciLCJob3ZlckluZm8iLCJmaW5kRGVmYXVsdExheWVyUHJvcHMiLCJfZGF0YXNldCRmaWVsZFBhaXJzIiwiZmllbGRQYWlycyIsIkRhdGFzZXRUeXBlIiwiVkVDVE9SX1RJTEUiLCJwYWlyIiwibGF0RmllbGQiLCJwcm9wIiwiZGVmYXVsdE5hbWUiLCJERUZBVUxUX0xBWUVSX0NPTE9SIiwiaGV4VG9SZ2IiLCJpc1Zpc2libGUiLCJhc3NpZ25Qb2ludFBhaXJUb0xheWVyQ29sdW1uIiwiYWx0UHJvcHMiLCJnZXRHZW9BcnJvd1BvaW50TGF5ZXJQcm9wcyIsIkxheWVyIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BvaW50LWxheWVyL3BvaW50LWxheWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCAqIGFzIGFycm93IGZyb20gJ2FwYWNoZS1hcnJvdyc7XG5cbmltcG9ydCB7QnJ1c2hpbmdFeHRlbnNpb259IGZyb20gJ0BkZWNrLmdsL2V4dGVuc2lvbnMnO1xuaW1wb3J0IHtTY2F0dGVycGxvdExheWVyfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuXG5pbXBvcnQge0dlb0Fycm93U2NhdHRlcnBsb3RMYXllcn0gZnJvbSAnQGtlcGxlci5nbC9kZWNrZ2wtYXJyb3ctbGF5ZXJzJztcbmltcG9ydCB7RmlsdGVyQXJyb3dFeHRlbnNpb259IGZyb20gJ0BrZXBsZXIuZ2wvZGVja2dsLWxheWVycyc7XG5cbmltcG9ydCBMYXllciwge1xuICBMYXllckJhc2VDb25maWcsXG4gIExheWVyQmFzZUNvbmZpZ1BhcnRpYWwsXG4gIExheWVyQ29sb3JDb25maWcsXG4gIExheWVyU2l6ZUNvbmZpZyxcbiAgTGF5ZXJTdHJva2VDb2xvckNvbmZpZ1xufSBmcm9tICcuLi9iYXNlLWxheWVyJztcbmltcG9ydCB7XG4gIGhleFRvUmdiLFxuICBmaW5kRGVmYXVsdENvbG9yRmllbGQsXG4gIERhdGFDb250YWluZXJJbnRlcmZhY2UsXG4gIEFycm93RGF0YUNvbnRhaW5lclxufSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7ZGVmYXVsdCBhcyBLZXBsZXJUYWJsZX0gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5pbXBvcnQgUG9pbnRMYXllckljb24gZnJvbSAnLi9wb2ludC1sYXllci1pY29uJztcbmltcG9ydCB7XG4gIERhdGFzZXRUeXBlLFxuICBMQVlFUl9WSVNfQ09ORklHUyxcbiAgREVGQVVMVF9MQVlFUl9DT0xPUixcbiAgQ0hBTk5FTF9TQ0FMRVMsXG4gIERFRkFVTFRfQ09MT1JfVUlcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtnZXRUZXh0T2Zmc2V0QnlSYWRpdXMsIGZvcm1hdFRleHRMYWJlbERhdGF9IGZyb20gJy4uL2xheWVyLXRleHQtbGFiZWwnO1xuaW1wb3J0IHtcbiAgYXNzaWduUG9pbnRQYWlyVG9MYXllckNvbHVtbixcbiAgaXNMYXllckhvdmVyZWRGcm9tQXJyb3csXG4gIGdldEJvdW5kc0Zyb21BcnJvd01ldGFkYXRhLFxuICBnZXRHZW9BcnJvd1BvaW50TGF5ZXJQcm9wcyxcbiAgaXNHZW9BcnJvd1BvaW50RmllbGQsXG4gIGNyZWF0ZUdlb0Fycm93UG9pbnRWZWN0b3IsXG4gIGdldEZpbHRlcmVkSW5kZXgsXG4gIGdldE5laWdoYm9ycyxcbiAgRmluZERlZmF1bHRMYXllclByb3BzXG59IGZyb20gJy4uL2xheWVyLXV0aWxzJztcbmltcG9ydCB7Z2V0R2VvanNvblBvaW50RGF0YU1hcHMsIEdlb2pzb25Qb2ludERhdGFNYXBzfSBmcm9tICcuLi9nZW9qc29uLWxheWVyL2dlb2pzb24tdXRpbHMnO1xuaW1wb3J0IHtcbiAgQ29sb3JSYW5nZSxcbiAgTWVyZ2UsXG4gIFJHQkNvbG9yLFxuICBWaXNDb25maWdCb29sZWFuLFxuICBWaXNDb25maWdDb2xvclJhbmdlLFxuICBWaXNDb25maWdDb2xvclNlbGVjdCxcbiAgVmlzQ29uZmlnTnVtYmVyLFxuICBWaXNDb25maWdSYW5nZSxcbiAgTGF5ZXJDb2x1bW4sXG4gIEZpZWxkLFxuICBBbmltYXRpb25Db25maWdcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmV4cG9ydCB0eXBlIFBvaW50TGF5ZXJWaXNDb25maWdTZXR0aW5ncyA9IHtcbiAgcmFkaXVzOiBWaXNDb25maWdOdW1iZXI7XG4gIGZpeGVkUmFkaXVzOiBWaXNDb25maWdCb29sZWFuO1xuICBvcGFjaXR5OiBWaXNDb25maWdOdW1iZXI7XG4gIG91dGxpbmU6IFZpc0NvbmZpZ0Jvb2xlYW47XG4gIHRoaWNrbmVzczogVmlzQ29uZmlnTnVtYmVyO1xuICBzdHJva2VDb2xvcjogVmlzQ29uZmlnQ29sb3JTZWxlY3Q7XG4gIGNvbG9yUmFuZ2U6IFZpc0NvbmZpZ0NvbG9yUmFuZ2U7XG4gIHN0cm9rZUNvbG9yUmFuZ2U6IFZpc0NvbmZpZ0NvbG9yUmFuZ2U7XG4gIHJhZGl1c1JhbmdlOiBWaXNDb25maWdSYW5nZTtcbiAgZmlsbGVkOiBWaXNDb25maWdCb29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgUG9pbnRMYXllckNvbHVtbnNDb25maWcgPSB7XG4gIGxhdDogTGF5ZXJDb2x1bW47XG4gIGxuZzogTGF5ZXJDb2x1bW47XG4gIGFsdGl0dWRlPzogTGF5ZXJDb2x1bW47XG4gIG5laWdoYm9ycz86IExheWVyQ29sdW1uO1xuICBnZW9qc29uOiBMYXllckNvbHVtbjtcbiAgZ2VvYXJyb3c6IExheWVyQ29sdW1uO1xufTtcblxuZXhwb3J0IHR5cGUgUG9pbnRMYXllclZpc0NvbmZpZyA9IHtcbiAgcmFkaXVzOiBudW1iZXI7XG4gIGZpeGVkUmFkaXVzOiBib29sZWFuO1xuICBvcGFjaXR5OiBudW1iZXI7XG4gIG91dGxpbmU6IGJvb2xlYW47XG4gIHRoaWNrbmVzczogbnVtYmVyO1xuICBzdHJva2VDb2xvcjogUkdCQ29sb3I7XG4gIGNvbG9yUmFuZ2U6IENvbG9yUmFuZ2U7XG4gIHN0cm9rZUNvbG9yUmFuZ2U6IENvbG9yUmFuZ2U7XG4gIHJhZGl1c1JhbmdlOiBbbnVtYmVyLCBudW1iZXJdO1xuICBmaWxsZWQ6IGJvb2xlYW47XG4gIGJpbGxib2FyZDogYm9vbGVhbjtcbiAgYWxsb3dIb3ZlcjogYm9vbGVhbjtcbiAgc2hvd05laWdoYm9yT25Ib3ZlcjogYm9vbGVhbjtcbiAgc2hvd0hpZ2hsaWdodENvbG9yOiBib29sZWFuO1xufTtcbmV4cG9ydCB0eXBlIFBvaW50TGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnID0gTGF5ZXJDb2xvckNvbmZpZyAmXG4gIExheWVyU2l6ZUNvbmZpZyAmXG4gIExheWVyU3Ryb2tlQ29sb3JDb25maWc7XG5leHBvcnQgdHlwZSBQb2ludExheWVyQ29uZmlnID0gTWVyZ2U8XG4gIExheWVyQmFzZUNvbmZpZyxcbiAge2NvbHVtbnM6IFBvaW50TGF5ZXJDb2x1bW5zQ29uZmlnOyB2aXNDb25maWc6IFBvaW50TGF5ZXJWaXNDb25maWd9XG4+ICZcbiAgUG9pbnRMYXllclZpc3VhbENoYW5uZWxDb25maWc7XG5cbmV4cG9ydCB0eXBlIFBvaW50TGF5ZXJEYXRhID0ge1xuICBwb3NpdGlvbjogbnVtYmVyW107XG4gIGluZGV4OiBudW1iZXI7XG4gIG5laWdoYm9yczogYW55W107XG59O1xuXG5leHBvcnQgY29uc3QgcG9pbnRQb3NBY2Nlc3NvciA9XG4gICh7bGF0LCBsbmcsIGFsdGl0dWRlfTogUG9pbnRMYXllckNvbHVtbnNDb25maWcpID0+XG4gIChkYzogRGF0YUNvbnRhaW5lckludGVyZmFjZSkgPT5cbiAgKGQ6IHtpbmRleDogbnVtYmVyfSkgPT5cbiAgICBbXG4gICAgICBkYy52YWx1ZUF0KGQuaW5kZXgsIGxuZy5maWVsZElkeCksXG4gICAgICBkYy52YWx1ZUF0KGQuaW5kZXgsIGxhdC5maWVsZElkeCksXG4gICAgICBhbHRpdHVkZSAmJiBhbHRpdHVkZS5maWVsZElkeCA+IC0xID8gZGMudmFsdWVBdChkLmluZGV4LCBhbHRpdHVkZS5maWVsZElkeCkgOiAwXG4gICAgXTtcblxuZXhwb3J0IGNvbnN0IGdlb2pzb25Qb3NBY2Nlc3NvciA9XG4gICh7Z2VvanNvbn06IHtnZW9qc29uOiBMYXllckNvbHVtbn0pID0+XG4gIGQgPT5cbiAgICBkW2dlb2pzb24uZmllbGRJZHhdO1xuXG5leHBvcnQgY29uc3QgZ2VvYXJyb3dQb3NBY2Nlc3NvciA9XG4gICh7Z2VvYXJyb3d9OiBQb2ludExheWVyQ29sdW1uc0NvbmZpZykgPT5cbiAgKGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UpID0+XG4gIChkOiB7aW5kZXg6IG51bWJlcn0pID0+IHtcbiAgICBjb25zdCByb3cgPSBkYXRhQ29udGFpbmVyLnZhbHVlQXQoZC5pbmRleCwgZ2VvYXJyb3cuZmllbGRJZHgpO1xuICAgIHJldHVybiBbcm93LmdldCgwKSwgcm93LmdldCgxKSwgMF07XG4gIH07XG5cbmV4cG9ydCBjb25zdCBDT0xVTU5fTU9ERV9QT0lOVFMgPSAncG9pbnRzJztcbmV4cG9ydCBjb25zdCBDT0xVTU5fTU9ERV9HRU9KU09OID0gJ2dlb2pzb24nO1xuZXhwb3J0IGNvbnN0IENPTFVNTl9NT0RFX0dFT0FSUk9XID0gJ2dlb2Fycm93JztcblxuZXhwb3J0IGNvbnN0IHBvaW50UmVxdWlyZWRDb2x1bW5zOiBbJ2xhdCcsICdsbmcnXSA9IFsnbGF0JywgJ2xuZyddO1xuZXhwb3J0IGNvbnN0IHBvaW50T3B0aW9uYWxDb2x1bW5zOiBbJ2FsdGl0dWRlJywgJ25laWdoYm9ycyddID0gWydhbHRpdHVkZScsICduZWlnaGJvcnMnXTtcbmV4cG9ydCBjb25zdCBnZW9qc29uUmVxdWlyZWRDb2x1bW5zOiBbJ2dlb2pzb24nXSA9IFsnZ2VvanNvbiddO1xuZXhwb3J0IGNvbnN0IGdlb2Fycm93UmVxdWlyZWRDb2x1bW5zOiBbJ2dlb2Fycm93J10gPSBbJ2dlb2Fycm93J107XG5cbmNvbnN0IFNVUFBPUlRFRF9DT0xVTU5fTU9ERVMgPSBbXG4gIHtcbiAgICBrZXk6IENPTFVNTl9NT0RFX1BPSU5UUyxcbiAgICBsYWJlbDogJ1BvaW50IENvbHVtbnMnLFxuICAgIHJlcXVpcmVkQ29sdW1uczogcG9pbnRSZXF1aXJlZENvbHVtbnMsXG4gICAgb3B0aW9uYWxDb2x1bW5zOiBwb2ludE9wdGlvbmFsQ29sdW1uc1xuICB9LFxuICB7XG4gICAga2V5OiBDT0xVTU5fTU9ERV9HRU9KU09OLFxuICAgIGxhYmVsOiAnR2VvSlNPTiBGZWF0dXJlJyxcbiAgICByZXF1aXJlZENvbHVtbnM6IGdlb2pzb25SZXF1aXJlZENvbHVtbnMsXG4gICAgdmVyaWZ5RmllbGQ6IGYgPT4gIWlzR2VvQXJyb3dQb2ludEZpZWxkKGYpXG4gIH0sXG4gIHtcbiAgICBrZXk6IENPTFVNTl9NT0RFX0dFT0FSUk9XLFxuICAgIGxhYmVsOiAnR2VvYXJyb3cgUG9pbnRzJyxcbiAgICByZXF1aXJlZENvbHVtbnM6IGdlb2Fycm93UmVxdWlyZWRDb2x1bW5zLFxuICAgIHZlcmlmeUZpZWxkOiBmID0+IGlzR2VvQXJyb3dQb2ludEZpZWxkKGYpXG4gIH1cbl07XG5jb25zdCBERUZBVUxUX0NPTFVNTl9NT0RFID0gQ09MVU1OX01PREVfUE9JTlRTO1xuXG5jb25zdCBicnVzaGluZ0V4dGVuc2lvbiA9IG5ldyBCcnVzaGluZ0V4dGVuc2lvbigpO1xuY29uc3QgYXJyb3dDUFVGaWx0ZXJFeHRlbnNpb24gPSBuZXcgRmlsdGVyQXJyb3dFeHRlbnNpb24oKTtcblxuZnVuY3Rpb24gcHVzaFBvaW50UG9zaXRpb24oZGF0YTogYW55W10sIHBvczogbnVtYmVyW10sIGluZGV4OiBudW1iZXIsIG5laWdoYm9ycz86IG51bWJlcltdKSB7XG4gIGlmIChwb3MuZXZlcnkoTnVtYmVyLmlzRmluaXRlKSkge1xuICAgIGRhdGEucHVzaCh7XG4gICAgICBwb3NpdGlvbjogcG9zLFxuICAgICAgLy8gaW5kZXggaXMgaW1wb3J0YW50IGZvciBmaWx0ZXJcbiAgICAgIGluZGV4LFxuICAgICAgLi4uKG5laWdoYm9ycyA/IHtuZWlnaGJvcnN9IDoge30pXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHBvaW50VmlzQ29uZmlnczoge1xuICByYWRpdXM6ICdyYWRpdXMnO1xuICBmaXhlZFJhZGl1czogJ2ZpeGVkUmFkaXVzJztcbiAgb3BhY2l0eTogJ29wYWNpdHknO1xuICBvdXRsaW5lOiAnb3V0bGluZSc7XG4gIHRoaWNrbmVzczogJ3RoaWNrbmVzcyc7XG4gIHN0cm9rZUNvbG9yOiAnc3Ryb2tlQ29sb3InO1xuICBjb2xvclJhbmdlOiAnY29sb3JSYW5nZSc7XG4gIHN0cm9rZUNvbG9yUmFuZ2U6ICdzdHJva2VDb2xvclJhbmdlJztcbiAgcmFkaXVzUmFuZ2U6ICdyYWRpdXNSYW5nZSc7XG4gIGZpbGxlZDogVmlzQ29uZmlnQm9vbGVhbjtcbiAgYmlsbGJvYXJkOiAnYmlsbGJvYXJkJztcbiAgYWxsb3dIb3ZlcjogJ2FsbG93SG92ZXInO1xuICBzaG93TmVpZ2hib3JPbkhvdmVyOiAnc2hvd05laWdoYm9yT25Ib3Zlcic7XG4gIHNob3dIaWdobGlnaHRDb2xvcjogJ3Nob3dIaWdobGlnaHRDb2xvcic7XG59ID0ge1xuICByYWRpdXM6ICdyYWRpdXMnLFxuICBmaXhlZFJhZGl1czogJ2ZpeGVkUmFkaXVzJyxcbiAgb3BhY2l0eTogJ29wYWNpdHknLFxuICBvdXRsaW5lOiAnb3V0bGluZScsXG4gIHRoaWNrbmVzczogJ3RoaWNrbmVzcycsXG4gIHN0cm9rZUNvbG9yOiAnc3Ryb2tlQ29sb3InLFxuICBjb2xvclJhbmdlOiAnY29sb3JSYW5nZScsXG4gIHN0cm9rZUNvbG9yUmFuZ2U6ICdzdHJva2VDb2xvclJhbmdlJyxcbiAgcmFkaXVzUmFuZ2U6ICdyYWRpdXNSYW5nZScsXG4gIGZpbGxlZDoge1xuICAgIC4uLkxBWUVSX1ZJU19DT05GSUdTLmZpbGxlZCxcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgbGFiZWw6ICdsYXllci5maWxsQ29sb3InLFxuICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICBwcm9wZXJ0eTogJ2ZpbGxlZCdcbiAgfSxcbiAgYmlsbGJvYXJkOiAnYmlsbGJvYXJkJyxcbiAgYWxsb3dIb3ZlcjogJ2FsbG93SG92ZXInLFxuICBzaG93TmVpZ2hib3JPbkhvdmVyOiAnc2hvd05laWdoYm9yT25Ib3ZlcicsXG4gIHNob3dIaWdobGlnaHRDb2xvcjogJ3Nob3dIaWdobGlnaHRDb2xvcidcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBvaW50TGF5ZXIgZXh0ZW5kcyBMYXllciB7XG4gIGRlY2xhcmUgY29uZmlnOiBQb2ludExheWVyQ29uZmlnO1xuICBkZWNsYXJlIHZpc0NvbmZpZ1NldHRpbmdzOiBQb2ludExheWVyVmlzQ29uZmlnU2V0dGluZ3M7XG4gIGRhdGFUb0ZlYXR1cmU6IEdlb2pzb25Qb2ludERhdGFNYXBzID0gW107XG5cbiAgZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSB8IG51bGwgPSBudWxsO1xuICBnZW9BcnJvd1ZlY3RvcjogYXJyb3cuVmVjdG9yIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIC8qXG4gICAqIENQVSBmaWx0ZXJpbmcgYW4gYXJyb3cgdGFibGUgYnkgdmFsdWVzIGFuZCBhc3NlbWJsaW5nIGEgcGFydGlhbCBjb3B5IG9mIHRoZSByYXcgdGFibGUgaXMgZXhwZW5zaXZlXG4gICAqIHNvIHdlIHdpbGwgdXNlIGZpbHRlcmVkSW5kZXggdG8gY3JlYXRlIGFuIGF0dHJpYnV0ZSBlLmcuIGZpbHRlcmVkSW5kZXggWzB8MV0gZm9yIEdQVSBmaWx0ZXJpbmdcbiAgICogaW4gZGVjay5nbCBsYXllciwgc2VlOiBGaWx0ZXJBcnJvd0V4dGVuc2lvbiBpbiBAa2VwbGVyLmdsL2RlY2tnbC1sYXllcnMuXG4gICAqIE5vdGUgdGhhdCB0aGlzIGFwcHJvYWNoIGNhbiBjcmVhdGUgdmlzaWJsZSBsYWdzIGluIGNhc2Ugb2YgYSBsb3Qgb2YgZGlzY2FydGVkIGdlb21ldHJ5LlxuICAgKi9cbiAgZmlsdGVyZWRJbmRleDogVWludDhDbGFtcGVkQXJyYXkgfCBudWxsID0gbnVsbDtcbiAgZmlsdGVyZWRJbmRleFRyaWdnZXI6IG51bWJlcltdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyVmlzQ29uZmlnKHBvaW50VmlzQ29uZmlncyk7XG4gICAgdGhpcy5nZXRQb3NpdGlvbkFjY2Vzc29yID0gKGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UpID0+IHtcbiAgICAgIHN3aXRjaCAodGhpcy5jb25maWcuY29sdW1uTW9kZSkge1xuICAgICAgICBjYXNlIENPTFVNTl9NT0RFX0dFT0FSUk9XOlxuICAgICAgICAgIHJldHVybiBnZW9hcnJvd1Bvc0FjY2Vzc29yKHRoaXMuY29uZmlnLmNvbHVtbnMpKGRhdGFDb250YWluZXIpO1xuICAgICAgICBjYXNlIENPTFVNTl9NT0RFX0dFT0pTT046XG4gICAgICAgICAgcmV0dXJuIGdlb2pzb25Qb3NBY2Nlc3Nvcih0aGlzLmNvbmZpZy5jb2x1bW5zKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAvLyBDT0xVTU5fTU9ERV9QT0lOVFNcbiAgICAgICAgICByZXR1cm4gcG9pbnRQb3NBY2Nlc3Nvcih0aGlzLmNvbmZpZy5jb2x1bW5zKShkYXRhQ29udGFpbmVyKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZ2V0IHR5cGUoKTogJ3BvaW50JyB7XG4gICAgcmV0dXJuICdwb2ludCc7XG4gIH1cblxuICBnZXQgaXNBZ2dyZWdhdGVkKCk6IGZhbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXQgbGF5ZXJJY29uKCkge1xuICAgIHJldHVybiBQb2ludExheWVySWNvbjtcbiAgfVxuXG4gIGdldCBvcHRpb25hbENvbHVtbnMoKSB7XG4gICAgcmV0dXJuIHBvaW50T3B0aW9uYWxDb2x1bW5zO1xuICB9XG5cbiAgZ2V0IGNvbHVtblBhaXJzKCkge1xuICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb2ludENvbHVtblBhaXJzO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRlZENvbHVtbk1vZGVzKCkge1xuICAgIHJldHVybiBTVVBQT1JURURfQ09MVU1OX01PREVTO1xuICB9XG5cbiAgZ2V0IG5vbmVMYXllckRhdGFBZmZlY3RpbmdQcm9wcygpIHtcbiAgICByZXR1cm4gWy4uLnN1cGVyLm5vbmVMYXllckRhdGFBZmZlY3RpbmdQcm9wcywgJ3JhZGl1cyddO1xuICB9XG5cbiAgZ2V0IHZpc3VhbENoYW5uZWxzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjoge1xuICAgICAgICAuLi5zdXBlci52aXN1YWxDaGFubmVscy5jb2xvcixcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRGaWxsQ29sb3InLFxuICAgICAgICBjb25kaXRpb246IGNvbmZpZyA9PiBjb25maWcudmlzQ29uZmlnLmZpbGxlZCxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBjb25maWcgPT4gY29uZmlnLmNvbG9yXG4gICAgICB9LFxuICAgICAgc3Ryb2tlQ29sb3I6IHtcbiAgICAgICAgcHJvcGVydHk6ICdzdHJva2VDb2xvcicsXG4gICAgICAgIGtleTogJ3N0cm9rZUNvbG9yJyxcbiAgICAgICAgZmllbGQ6ICdzdHJva2VDb2xvckZpZWxkJyxcbiAgICAgICAgc2NhbGU6ICdzdHJva2VDb2xvclNjYWxlJyxcbiAgICAgICAgZG9tYWluOiAnc3Ryb2tlQ29sb3JEb21haW4nLFxuICAgICAgICByYW5nZTogJ3N0cm9rZUNvbG9yUmFuZ2UnLFxuICAgICAgICBjaGFubmVsU2NhbGVUeXBlOiBDSEFOTkVMX1NDQUxFUy5jb2xvcixcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRMaW5lQ29sb3InLFxuICAgICAgICBjb25kaXRpb246IGNvbmZpZyA9PiBjb25maWcudmlzQ29uZmlnLm91dGxpbmUsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogY29uZmlnID0+IGNvbmZpZy52aXNDb25maWcuc3Ryb2tlQ29sb3IgfHwgY29uZmlnLmNvbG9yXG4gICAgICB9LFxuICAgICAgc2l6ZToge1xuICAgICAgICAuLi5zdXBlci52aXN1YWxDaGFubmVscy5zaXplLFxuICAgICAgICBwcm9wZXJ0eTogJ3JhZGl1cycsXG4gICAgICAgIHJhbmdlOiAncmFkaXVzUmFuZ2UnLFxuICAgICAgICBmaXhlZDogJ2ZpeGVkUmFkaXVzJyxcbiAgICAgICAgY2hhbm5lbFNjYWxlVHlwZTogJ3JhZGl1cycsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0UmFkaXVzJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAxXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHNldEluaXRpYWxMYXllckNvbmZpZyhkYXRhc2V0KSB7XG4gICAgaWYgKCFkYXRhc2V0LmRhdGFDb250YWluZXIubnVtUm93cygpKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgY29uc3QgZGVmYXVsdENvbG9yRmllbGQgPSBmaW5kRGVmYXVsdENvbG9yRmllbGQoZGF0YXNldCk7XG5cbiAgICBpZiAoZGVmYXVsdENvbG9yRmllbGQpIHtcbiAgICAgIHRoaXMudXBkYXRlTGF5ZXJDb25maWcoe1xuICAgICAgICBjb2xvckZpZWxkOiBkZWZhdWx0Q29sb3JGaWVsZFxuICAgICAgfSk7XG4gICAgICB0aGlzLnVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbChkYXRhc2V0LCAnY29sb3InKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN0YXRpYyBmaW5kRGVmYXVsdExheWVyUHJvcHMoZGF0YXNldDogS2VwbGVyVGFibGUpIHtcbiAgICBjb25zdCB7ZmllbGRQYWlycyA9IFtdLCB0eXBlfSA9IGRhdGFzZXQ7XG5cbiAgICBjb25zdCBwcm9wczogRmluZERlZmF1bHRMYXllclByb3BzW10gPSBbXTtcblxuICAgIGlmICh0eXBlID09PSBEYXRhc2V0VHlwZS5WRUNUT1JfVElMRSkge1xuICAgICAgcmV0dXJuIHtwcm9wc307XG4gICAgfVxuXG4gICAgLy8gTWFrZSBsYXllciBmb3IgZWFjaCBwYWlyXG4gICAgZmllbGRQYWlycy5mb3JFYWNoKHBhaXIgPT4ge1xuICAgICAgY29uc3QgbGF0RmllbGQgPSBwYWlyLnBhaXIubGF0O1xuXG4gICAgICBjb25zdCBwcm9wOiB7XG4gICAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgICAgIGNvbG9yPzogUkdCQ29sb3I7XG4gICAgICAgIGlzVmlzaWJsZT86IGJvb2xlYW47XG4gICAgICAgIGNvbHVtbnM/OiBQb2ludExheWVyQ29sdW1uc0NvbmZpZztcbiAgICAgIH0gPSB7XG4gICAgICAgIGxhYmVsOiBwYWlyLmRlZmF1bHROYW1lIHx8ICdQb2ludCdcbiAgICAgIH07XG5cbiAgICAgIC8vIGRlZmF1bHQgbGF5ZXIgY29sb3IgZm9yIGJlZ2ludHJpcCBhbmQgZHJvcG9mZiBwb2ludFxuICAgICAgaWYgKGxhdEZpZWxkLnZhbHVlIGluIERFRkFVTFRfTEFZRVJfQ09MT1IpIHtcbiAgICAgICAgcHJvcC5jb2xvciA9IGhleFRvUmdiKERFRkFVTFRfTEFZRVJfQ09MT1JbbGF0RmllbGQudmFsdWVdKTtcbiAgICAgIH1cblxuICAgICAgLy8gc2V0IHRoZSBmaXJzdCBsYXllciB0byBiZSB2aXNpYmxlXG4gICAgICBpZiAocHJvcHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHByb3AuaXNWaXNpYmxlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgbG9naWNhbGx5IHNlcGFyYXRlIGdlb2pzb24gY29sdW1uIHR5cGU/XG4gICAgICBwcm9wLmNvbHVtbnMgPSBhc3NpZ25Qb2ludFBhaXJUb0xheWVyQ29sdW1uKHBhaXIsIHRydWUpO1xuXG4gICAgICBwcm9wcy5wdXNoKHByb3ApO1xuICAgIH0pO1xuXG4gICAgY29uc3QgYWx0UHJvcHMgPSBnZXRHZW9BcnJvd1BvaW50TGF5ZXJQcm9wcyhkYXRhc2V0KTtcblxuICAgIHJldHVybiB7cHJvcHMsIGFsdFByb3BzfTtcbiAgfVxuXG4gIGdldERlZmF1bHRMYXllckNvbmZpZyhwcm9wczogTGF5ZXJCYXNlQ29uZmlnUGFydGlhbCkge1xuICAgIGNvbnN0IGRlZmF1bHRMYXllckNvbmZpZyA9IHN1cGVyLmdldERlZmF1bHRMYXllckNvbmZpZyhwcm9wcyA/PyB7fSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmRlZmF1bHRMYXllckNvbmZpZyxcblxuICAgICAgY29sdW1uTW9kZTogcHJvcHM/LmNvbHVtbk1vZGUgPz8gREVGQVVMVF9DT0xVTU5fTU9ERSxcblxuICAgICAgLy8gYWRkIHN0cm9rZSBjb2xvciB2aXN1YWwgY2hhbm5lbFxuICAgICAgc3Ryb2tlQ29sb3JGaWVsZDogbnVsbCxcbiAgICAgIHN0cm9rZUNvbG9yRG9tYWluOiBbMCwgMV0sXG4gICAgICBzdHJva2VDb2xvclNjYWxlOiAncXVhbnRpbGUnLFxuICAgICAgY29sb3JVSToge1xuICAgICAgICAuLi5kZWZhdWx0TGF5ZXJDb25maWcuY29sb3JVSSxcbiAgICAgICAgc3Ryb2tlQ29sb3JSYW5nZTogREVGQVVMVF9DT0xPUl9VSVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBjYWxjdWxhdGVEYXRhQXR0cmlidXRlKHtmaWx0ZXJlZEluZGV4LCBkYXRhQ29udGFpbmVyfTogS2VwbGVyVGFibGUsIGdldFBvc2l0aW9uKSB7XG4gICAgY29uc3Qge2NvbHVtbk1vZGV9ID0gdGhpcy5jb25maWc7XG5cbiAgICAvLyAxKSBDT0xVTU5fTU9ERV9HRU9BUlJPVyAtIHdoZW4gd2UgaGF2ZSBhIGdlb2Fycm93IHBvaW50IGNvbHVtblxuICAgIC8vIDIpIENPTFVNTl9NT0RFX1BPSU5UUyArIEFycm93RGF0YUNvbnRhaW5lciA+IGNyZWF0ZSBnZW9hcnJvdyBwb2ludCBjb2x1bW4gb24gdGhlIGZseVxuICAgIGlmIChcbiAgICAgIGRhdGFDb250YWluZXIgaW5zdGFuY2VvZiBBcnJvd0RhdGFDb250YWluZXIgJiZcbiAgICAgIChjb2x1bW5Nb2RlID09PSBDT0xVTU5fTU9ERV9HRU9BUlJPVyB8fCBjb2x1bW5Nb2RlID09PSBDT0xVTU5fTU9ERV9QT0lOVFMpXG4gICAgKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkSW5kZXggPSBnZXRGaWx0ZXJlZEluZGV4KFxuICAgICAgICBkYXRhQ29udGFpbmVyLm51bVJvd3MoKSxcbiAgICAgICAgZmlsdGVyZWRJbmRleCxcbiAgICAgICAgdGhpcy5maWx0ZXJlZEluZGV4XG4gICAgICApO1xuICAgICAgdGhpcy5maWx0ZXJlZEluZGV4VHJpZ2dlciA9IGZpbHRlcmVkSW5kZXg7XG5cbiAgICAgIGlmICh0aGlzLmNvbmZpZy5jb2x1bW5Nb2RlID09PSBDT0xVTU5fTU9ERV9HRU9BUlJPVykge1xuICAgICAgICB0aGlzLmdlb0Fycm93VmVjdG9yID0gZGF0YUNvbnRhaW5lci5nZXRDb2x1bW4odGhpcy5jb25maWcuY29sdW1ucy5nZW9hcnJvdy5maWVsZElkeCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBnZW5lcmF0ZSBhIGNvbHVtbiBjb21wYXRpYmxlIHdpdGggZ2VvYXJyb3cgcG9pbnRcbiAgICAgICAgdGhpcy5nZW9BcnJvd1ZlY3RvciA9IGNyZWF0ZUdlb0Fycm93UG9pbnRWZWN0b3IoZGF0YUNvbnRhaW5lciwgZ2V0UG9zaXRpb24pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZGF0YUNvbnRhaW5lci5nZXRUYWJsZSgpO1xuICAgIH1cblxuICAgIC8vIHdlIGRvbid0IG5lZWQgdGhlc2UgaW4gbm9uLUFycm93IG1vZGVzIGF0bS5cbiAgICB0aGlzLmdlb0Fycm93VmVjdG9yID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZmlsdGVyZWRJbmRleCA9IG51bGw7XG5cbiAgICBjb25zdCBkYXRhOiBQb2ludExheWVyRGF0YVtdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbHRlcmVkSW5kZXgubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gZmlsdGVyZWRJbmRleFtpXTtcbiAgICAgIGxldCBuZWlnaGJvcnM7XG5cbiAgICAgIGlmICh0aGlzLmNvbmZpZy5jb2x1bW5Nb2RlID09PSBDT0xVTU5fTU9ERV9QT0lOVFMpIHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmNvbHVtbnMubmVpZ2hib3JzPy52YWx1ZSkge1xuICAgICAgICAgIGNvbnN0IHtmaWVsZElkeH0gPSB0aGlzLmNvbmZpZy5jb2x1bW5zLm5laWdoYm9ycztcbiAgICAgICAgICBuZWlnaGJvcnMgPSBBcnJheS5pc0FycmF5KGRhdGFDb250YWluZXIudmFsdWVBdChpbmRleCwgZmllbGRJZHgpKVxuICAgICAgICAgICAgPyBkYXRhQ29udGFpbmVyLnZhbHVlQXQoaW5kZXgsIGZpZWxkSWR4KVxuICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwb3MgPSBnZXRQb3NpdGlvbih7aW5kZXh9KTtcblxuICAgICAgICAvLyBpZiBkb2Vzbid0IGhhdmUgcG9pbnQgbGF0IG9yIGxuZywgZG8gbm90IGFkZCB0aGUgcG9pbnRcbiAgICAgICAgLy8gZGVjay5nbCBjYW4ndCBoYW5kbGUgcG9zaXRpb24gPSBudWxsXG4gICAgICAgIHB1c2hQb2ludFBvc2l0aW9uKGRhdGEsIHBvcywgaW5kZXgsIG5laWdoYm9ycyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBDT0xVTU5fTU9ERV9HRU9KU09OIG1vZGUgLSBwb2ludCBmcm9tIGdlb2pzb24gY29vcmRpbmF0ZXNcbiAgICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSB0aGlzLmRhdGFUb0ZlYXR1cmVbaV07XG4gICAgICAgIC8vIGlmIG11bHRpIHBvaW50c1xuICAgICAgICBpZiAoY29vcmRpbmF0ZXMgJiYgQXJyYXkuaXNBcnJheShjb29yZGluYXRlc1swXSkpIHtcbiAgICAgICAgICBjb29yZGluYXRlcy5mb3JFYWNoKGNvb3JkID0+IHtcbiAgICAgICAgICAgIHB1c2hQb2ludFBvc2l0aW9uKGRhdGEsIGNvb3JkLCBpbmRleCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY29vcmRpbmF0ZXMgJiYgTnVtYmVyLmlzRmluaXRlKGNvb3JkaW5hdGVzWzBdKSkge1xuICAgICAgICAgIHB1c2hQb2ludFBvc2l0aW9uKGRhdGEsIGNvb3JkaW5hdGVzIGFzIG51bWJlcltdLCBpbmRleCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGZvcm1hdExheWVyRGF0YShkYXRhc2V0cywgb2xkTGF5ZXJEYXRhKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmRhdGFJZCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBjb25zdCB7dGV4dExhYmVsfSA9IHRoaXMuY29uZmlnO1xuICAgIGNvbnN0IHtncHVGaWx0ZXIsIGRhdGFDb250YWluZXJ9ID0gZGF0YXNldHNbdGhpcy5jb25maWcuZGF0YUlkXTtcbiAgICBjb25zdCB7ZGF0YSwgdHJpZ2dlckNoYW5nZWR9ID0gdGhpcy51cGRhdGVEYXRhKGRhdGFzZXRzLCBvbGRMYXllckRhdGEpO1xuICAgIGNvbnN0IGdldFBvc2l0aW9uID0gZCA9PiBkLnBvc2l0aW9uO1xuXG4gICAgLy8gZ2V0IGFsbCBkaXN0aW5jdCBjaGFyYWN0ZXJzIGluIHRoZSB0ZXh0IGxhYmVsc1xuICAgIGNvbnN0IHRleHRMYWJlbHMgPSBmb3JtYXRUZXh0TGFiZWxEYXRhKHtcbiAgICAgIHRleHRMYWJlbCxcbiAgICAgIHRyaWdnZXJDaGFuZ2VkLFxuICAgICAgb2xkTGF5ZXJEYXRhLFxuICAgICAgZGF0YSxcbiAgICAgIGRhdGFDb250YWluZXIsXG4gICAgICBmaWx0ZXJlZEluZGV4OiB0aGlzLmZpbHRlcmVkSW5kZXhcbiAgICB9KTtcblxuICAgIGNvbnN0IGFjY2Vzc29ycyA9IHRoaXMuZ2V0QXR0cmlidXRlQWNjZXNzb3JzKHtkYXRhQ29udGFpbmVyfSk7XG5cbiAgICBjb25zdCBpc0ZpbHRlcmVkQWNjZXNzb3IgPSAoZGF0YToge2luZGV4OiBudW1iZXJ9KSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXJlZEluZGV4ID8gdGhpcy5maWx0ZXJlZEluZGV4W2RhdGEuaW5kZXhdIDogMTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGEsXG4gICAgICBnZXRQb3NpdGlvbixcbiAgICAgIGdldEZpbHRlclZhbHVlOiBncHVGaWx0ZXIuZmlsdGVyVmFsdWVBY2Nlc3NvcihkYXRhQ29udGFpbmVyKSgpLFxuICAgICAgZ2V0RmlsdGVyZWQ6IGlzRmlsdGVyZWRBY2Nlc3NvcixcbiAgICAgIHRleHRMYWJlbHMsXG4gICAgICAuLi5hY2Nlc3NvcnNcbiAgICB9O1xuICB9XG4gIC8qIGVzbGludC1lbmFibGUgY29tcGxleGl0eSAqL1xuXG4gIHVwZGF0ZUxheWVyTWV0YShkYXRhc2V0OiBLZXBsZXJUYWJsZSkge1xuICAgIGNvbnN0IHtkYXRhQ29udGFpbmVyfSA9IGRhdGFzZXQ7XG4gICAgdGhpcy5kYXRhQ29udGFpbmVyID0gZGF0YUNvbnRhaW5lcjtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5jb2x1bW5Nb2RlID09PSBDT0xVTU5fTU9ERV9HRU9KU09OKSB7XG4gICAgICBjb25zdCBnZXRGZWF0dXJlID0gdGhpcy5nZXRQb3NpdGlvbkFjY2Vzc29yKCk7XG4gICAgICB0aGlzLmRhdGFUb0ZlYXR1cmUgPSBnZXRHZW9qc29uUG9pbnREYXRhTWFwcyhkYXRhQ29udGFpbmVyLCBnZXRGZWF0dXJlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnLmNvbHVtbk1vZGUgPT09IENPTFVNTl9NT0RFX0dFT0FSUk9XKSB7XG4gICAgICBjb25zdCBib3VuZHNGcm9tTWV0YWRhdGEgPSBnZXRCb3VuZHNGcm9tQXJyb3dNZXRhZGF0YShcbiAgICAgICAgdGhpcy5jb25maWcuY29sdW1ucy5nZW9hcnJvdyxcbiAgICAgICAgZGF0YUNvbnRhaW5lciBhcyBBcnJvd0RhdGFDb250YWluZXJcbiAgICAgICk7XG4gICAgICBpZiAoYm91bmRzRnJvbU1ldGFkYXRhKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTWV0YSh7Ym91bmRzOiBib3VuZHNGcm9tTWV0YWRhdGF9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGdldFBvc2l0aW9uID0gdGhpcy5nZXRQb3NpdGlvbkFjY2Vzc29yKGRhdGFDb250YWluZXIpO1xuICAgICAgICBjb25zdCBib3VuZHMgPSB0aGlzLmdldFBvaW50c0JvdW5kcyhkYXRhQ29udGFpbmVyLCBnZXRQb3NpdGlvbik7XG4gICAgICAgIHRoaXMudXBkYXRlTWV0YSh7Ym91bmRzfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGdldFBvc2l0aW9uID0gdGhpcy5nZXRQb3NpdGlvbkFjY2Vzc29yKGRhdGFDb250YWluZXIpO1xuICAgICAgY29uc3QgYm91bmRzID0gdGhpcy5nZXRQb2ludHNCb3VuZHMoZGF0YUNvbnRhaW5lciwgZ2V0UG9zaXRpb24pO1xuICAgICAgdGhpcy51cGRhdGVNZXRhKHtib3VuZHN9KTtcbiAgICB9XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuICByZW5kZXJMYXllcihvcHRzKSB7XG4gICAgY29uc3Qge2RhdGEsIGdwdUZpbHRlciwgb2JqZWN0SG92ZXJlZCwgbWFwU3RhdGUsIGludGVyYWN0aW9uQ29uZmlnLCBkYXRhc2V0fSA9IG9wdHM7XG5cbiAgICAvLyBpZiBubyBmaWVsZCBzaXplIGlzIGRlZmluZWQgd2UgbmVlZCB0byBwYXNzIGZpeGVkIHJhZGl1cyA9IGZhbHNlXG4gICAgY29uc3QgZml4ZWRSYWRpdXMgPSB0aGlzLmNvbmZpZy52aXNDb25maWcuZml4ZWRSYWRpdXMgJiYgQm9vbGVhbih0aGlzLmNvbmZpZy5zaXplRmllbGQpO1xuICAgIGNvbnN0IHJhZGl1c1NjYWxlID0gdGhpcy5nZXRSYWRpdXNTY2FsZUJ5Wm9vbShtYXBTdGF0ZSwgZml4ZWRSYWRpdXMpO1xuXG4gICAgY29uc3QgbGF5ZXJQcm9wcyA9IHtcbiAgICAgIHN0cm9rZWQ6IHRoaXMuY29uZmlnLnZpc0NvbmZpZy5vdXRsaW5lLFxuICAgICAgZmlsbGVkOiB0aGlzLmNvbmZpZy52aXNDb25maWcuZmlsbGVkLFxuICAgICAgbGluZVdpZHRoU2NhbGU6IHRoaXMuY29uZmlnLnZpc0NvbmZpZy50aGlja25lc3MsXG4gICAgICBiaWxsYm9hcmQ6IHRoaXMuY29uZmlnLnZpc0NvbmZpZy5iaWxsYm9hcmQsXG4gICAgICByYWRpdXNTY2FsZSxcbiAgICAgIC4uLih0aGlzLmNvbmZpZy52aXNDb25maWcuZml4ZWRSYWRpdXMgPyB7fSA6IHtyYWRpdXNNYXhQaXhlbHM6IDUwMH0pXG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZVRyaWdnZXJzID0ge1xuICAgICAgZ2V0UG9zaXRpb246IHRoaXMuY29uZmlnLmNvbHVtbnMsXG4gICAgICBnZXRGaWx0ZXJWYWx1ZTogZ3B1RmlsdGVyLmZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnMsXG4gICAgICBnZXRGaWx0ZXJlZDogdGhpcy5maWx0ZXJlZEluZGV4VHJpZ2dlcixcbiAgICAgIC4uLnRoaXMuZ2V0VmlzdWFsQ2hhbm5lbFVwZGF0ZVRyaWdnZXJzKClcbiAgICB9O1xuXG4gICAgY29uc3QgdXNlQXJyb3dMYXllciA9IEJvb2xlYW4odGhpcy5nZW9BcnJvd1ZlY3Rvcik7XG5cbiAgICBjb25zdCBkZWZhdWx0TGF5ZXJQcm9wcyA9IHRoaXMuZ2V0RGVmYXVsdERlY2tMYXllclByb3BzKG9wdHMpO1xuICAgIGNvbnN0IGJydXNoaW5nUHJvcHMgPSB0aGlzLmdldEJydXNoaW5nRXh0ZW5zaW9uUHJvcHMoaW50ZXJhY3Rpb25Db25maWcpO1xuICAgIGNvbnN0IGdldFBpeGVsT2Zmc2V0ID0gZ2V0VGV4dE9mZnNldEJ5UmFkaXVzKHJhZGl1c1NjYWxlLCBkYXRhLmdldFJhZGl1cywgbWFwU3RhdGUpO1xuICAgIGNvbnN0IGV4dGVuc2lvbnMgPSBbXG4gICAgICAuLi5kZWZhdWx0TGF5ZXJQcm9wcy5leHRlbnNpb25zLFxuICAgICAgYnJ1c2hpbmdFeHRlbnNpb24sXG4gICAgICAuLi4odXNlQXJyb3dMYXllciA/IFthcnJvd0NQVUZpbHRlckV4dGVuc2lvbl0gOiBbXSlcbiAgICBdO1xuXG4gICAgY29uc3Qgc2hhcmVkUHJvcHMgPSB7XG4gICAgICBnZXRGaWx0ZXJWYWx1ZTogZGF0YS5nZXRGaWx0ZXJWYWx1ZSxcbiAgICAgIGV4dGVuc2lvbnMsXG4gICAgICBmaWx0ZXJSYW5nZTogZGVmYXVsdExheWVyUHJvcHMuZmlsdGVyUmFuZ2UsXG4gICAgICB2aXNpYmxlOiBkZWZhdWx0TGF5ZXJQcm9wcy52aXNpYmxlLFxuICAgICAgLi4uYnJ1c2hpbmdQcm9wc1xuICAgIH07XG4gICAgY29uc3QgaG92ZXJlZE9iamVjdCA9IHRoaXMuaGFzSG92ZXJlZE9iamVjdChvYmplY3RIb3ZlcmVkKTtcbiAgICBjb25zdCB7c2hvd05laWdoYm9yT25Ib3ZlciwgYWxsb3dIb3Zlcn0gPSB0aGlzLmNvbmZpZy52aXNDb25maWc7XG4gICAgbGV0IG5laWdoYm9yc0RhdGE6IFJldHVyblR5cGU8dHlwZW9mIGdldE5laWdoYm9ycz4gPSBbXTtcbiAgICBpZiAoYWxsb3dIb3ZlciAmJiBzaG93TmVpZ2hib3JPbkhvdmVyICYmIGhvdmVyZWRPYmplY3QpIHtcbiAgICAgIC8vIGZpbmQgbmVpZ2hib3JzXG4gICAgICBuZWlnaGJvcnNEYXRhID0gZ2V0TmVpZ2hib3JzKFxuICAgICAgICB0aGlzLmNvbmZpZy5jb2x1bW5zLm5laWdoYm9ycyxcbiAgICAgICAgZGF0YXNldC5kYXRhQ29udGFpbmVyLFxuICAgICAgICBob3ZlcmVkT2JqZWN0LmluZGV4LFxuICAgICAgICB0aGlzLmdldFBvc2l0aW9uQWNjZXNzb3IoZGF0YXNldC5kYXRhQ29udGFpbmVyKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgU2NhdHRlcnBsb3RMYXllckNsYXNzOiB0eXBlb2YgU2NhdHRlcnBsb3RMYXllciB8IHR5cGVvZiBHZW9BcnJvd1NjYXR0ZXJwbG90TGF5ZXIgPVxuICAgICAgU2NhdHRlcnBsb3RMYXllcjtcbiAgICBsZXQgZGVja0xheWVyRGF0YSA9IGRhdGEuZGF0YTtcbiAgICBsZXQgZ2V0UG9zaXRpb24gPSBkYXRhLmdldFBvc2l0aW9uO1xuICAgIGlmICh1c2VBcnJvd0xheWVyKSB7XG4gICAgICBTY2F0dGVycGxvdExheWVyQ2xhc3MgPSBHZW9BcnJvd1NjYXR0ZXJwbG90TGF5ZXI7XG4gICAgICBkZWNrTGF5ZXJEYXRhID0gZGF0YXNldC5kYXRhQ29udGFpbmVyLmdldFRhYmxlKCk7XG4gICAgICBnZXRQb3NpdGlvbiA9IHRoaXMuZ2VvQXJyb3dWZWN0b3I7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgIG5ldyBTY2F0dGVycGxvdExheWVyQ2xhc3Moe1xuICAgICAgICAuLi5kZWZhdWx0TGF5ZXJQcm9wcyxcbiAgICAgICAgLi4uYnJ1c2hpbmdQcm9wcyxcbiAgICAgICAgLi4ubGF5ZXJQcm9wcyxcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgZGF0YTogZGVja0xheWVyRGF0YSxcbiAgICAgICAgZ2V0UG9zaXRpb24sXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAvLyBjaXJjbGVzIHdpbGwgYmUgZmxhdCBvbiB0aGUgbWFwIHdoZW4gdGhlIGFsdGl0dWRlIGNvbHVtbiBpcyBub3QgdXNlZFxuICAgICAgICAgIGRlcHRoVGVzdDogKHRoaXMuY29uZmlnLmNvbHVtbnMuYWx0aXR1ZGU/LmZpZWxkSWR4IGFzIG51bWJlcikgPiAtMVxuICAgICAgICB9LFxuICAgICAgICBsaW5lV2lkdGhVbml0czogJ3BpeGVscycsXG4gICAgICAgIHVwZGF0ZVRyaWdnZXJzLFxuICAgICAgICBleHRlbnNpb25zLFxuICAgICAgICBvcGFjaXR5OiBob3ZlcmVkT2JqZWN0ICYmIHNob3dOZWlnaGJvck9uSG92ZXIgPyAwLjIgOiB0aGlzLmNvbmZpZy52aXNDb25maWcub3BhY2l0eSxcbiAgICAgICAgcGlja2FibGU6IGFsbG93SG92ZXIsXG4gICAgICAgIGF1dG9IaWdobGlnaHQ6IGZhbHNlXG4gICAgICB9KSxcbiAgICAgIC8vIGhvdmVyIGxheWVyXG4gICAgICAuLi4oaG92ZXJlZE9iamVjdFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIG5ldyBTY2F0dGVycGxvdExheWVyKHtcbiAgICAgICAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0SG92ZXJMYXllclByb3BzKCksXG4gICAgICAgICAgICAgIC4uLmxheWVyUHJvcHMsXG4gICAgICAgICAgICAgIHZpc2libGU6IGRlZmF1bHRMYXllclByb3BzLnZpc2libGUsXG4gICAgICAgICAgICAgIGRhdGE6IFsuLi5uZWlnaGJvcnNEYXRhLCBob3ZlcmVkT2JqZWN0XSxcbiAgICAgICAgICAgICAgZ2V0TGluZUNvbG9yOiB0aGlzLmNvbmZpZy52aXNDb25maWcuc2hvd0hpZ2hsaWdodENvbG9yXG4gICAgICAgICAgICAgICAgPyB0aGlzLmNvbmZpZy5oaWdobGlnaHRDb2xvclxuICAgICAgICAgICAgICAgIDogZGF0YS5nZXRMaW5lQ29sb3IsXG4gICAgICAgICAgICAgIGdldEZpbGxDb2xvcjogdGhpcy5jb25maWcudmlzQ29uZmlnLnNob3dIaWdobGlnaHRDb2xvclxuICAgICAgICAgICAgICAgID8gdGhpcy5jb25maWcuaGlnaGxpZ2h0Q29sb3JcbiAgICAgICAgICAgICAgICA6IGRhdGEuZ2V0RmlsbENvbG9yLFxuICAgICAgICAgICAgICBnZXRSYWRpdXM6IGRhdGEuZ2V0UmFkaXVzLFxuICAgICAgICAgICAgICBnZXRQb3NpdGlvbjogZGF0YS5nZXRQb3NpdGlvblxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pLFxuICAgICAgLy8gdGV4dCBsYWJlbCBsYXllclxuICAgICAgLi4udGhpcy5yZW5kZXJUZXh0TGFiZWxMYXllcihcbiAgICAgICAge1xuICAgICAgICAgIGdldFBvc2l0aW9uLFxuICAgICAgICAgIHNoYXJlZFByb3BzLFxuICAgICAgICAgIGdldFBpeGVsT2Zmc2V0LFxuICAgICAgICAgIHVwZGF0ZVRyaWdnZXJzLFxuICAgICAgICAgIGdldEZpbHRlcmVkOiBkYXRhLmdldEZpbHRlcmVkXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMuZ2VvQXJyb3dWZWN0b3JcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgICAgICAgZGF0YTogey4uLm9wdHMuZGF0YSwgZ2V0UG9zaXRpb259XG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiBvcHRzXG4gICAgICApXG4gICAgXTtcbiAgfVxuXG4gIGhhc0hvdmVyZWRPYmplY3Qob2JqZWN0SW5mbzoge2luZGV4OiBudW1iZXJ9KSB7XG4gICAgaWYgKFxuICAgICAgaXNMYXllckhvdmVyZWRGcm9tQXJyb3cob2JqZWN0SW5mbywgdGhpcy5pZCkgJiZcbiAgICAgIG9iamVjdEluZm8uaW5kZXggPj0gMCAmJlxuICAgICAgdGhpcy5kYXRhQ29udGFpbmVyXG4gICAgKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpbmRleDogb2JqZWN0SW5mby5pbmRleCxcbiAgICAgICAgcG9zaXRpb246IHRoaXMuZ2V0UG9zaXRpb25BY2Nlc3Nvcih0aGlzLmRhdGFDb250YWluZXIpKG9iamVjdEluZm8pXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBzdXBlci5oYXNIb3ZlcmVkT2JqZWN0KG9iamVjdEluZm8pO1xuICB9XG5cbiAgZ2V0SG92ZXJEYXRhKFxuICAgIG9iamVjdDoge2luZGV4OiBudW1iZXJ9IHwgYXJyb3cuU3RydWN0Um93IHwgdW5kZWZpbmVkLFxuICAgIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UsXG4gICAgZmllbGRzOiBGaWVsZFtdLFxuICAgIGFuaW1hdGlvbkNvbmZpZzogQW5pbWF0aW9uQ29uZmlnLFxuICAgIGhvdmVySW5mbzoge2luZGV4OiBudW1iZXJ9XG4gICkge1xuICAgIC8vIGZvciBhcnJvdyBmb3JtYXQsIGBvYmplY3RgIGlzIHRoZSBBcnJvdyByb3cgb2JqZWN0IFByb3h5LFxuICAgIC8vIGFuZCBpbmRleCBpcyBwYXNzZWQgaW4gYGhvdmVySW5mb2AuXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdlb0Fycm93VmVjdG9yID8gaG92ZXJJbmZvPy5pbmRleCA6IChvYmplY3QgYXMge2luZGV4OiBudW1iZXJ9KS5pbmRleDtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgcmV0dXJuIGRhdGFDb250YWluZXIucm93KGluZGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBS0EsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsa0JBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLGFBQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUwsT0FBQTtBQU9BLElBQUFNLE1BQUEsR0FBQU4sT0FBQTtBQU9BLElBQUFPLGVBQUEsR0FBQUYsc0JBQUEsQ0FBQUwsT0FBQTtB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
@@ -132,14 +132,14 @@ export default class TripLayer extends Layer {
132
132
  };
133
133
  };
134
134
  getPositionAccessor(dataContainer: DataContainerInterface): any;
135
- static findDefaultLayerProps({ label, fields, dataContainer, id }: KeplerTable, foundLayers: any[]): {
135
+ static findDefaultLayerProps({ label, fields, dataContainer, id }: KeplerTable, foundLayers?: any[]): {
136
136
  props: {
137
137
  label: string;
138
138
  columns: any;
139
139
  isVisible: boolean;
140
140
  columnMode: string;
141
141
  }[];
142
- foundLayers: any[];
142
+ foundLayers: any[] | undefined;
143
143
  } | {
144
144
  props: never[];
145
145
  foundLayers?: undefined;