kepler.gl 3.1.7 → 3.1.8

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 (136) hide show
  1. package/dist/src/actions/src/ui-state-actions.d.ts +0 -16
  2. package/dist/src/actions/src/vis-state-actions.d.ts +26 -0
  3. package/dist/src/ai-assistant/src/constants.d.ts +2 -5
  4. package/dist/src/ai-assistant/src/tools/geo-tools.d.ts +76 -25
  5. package/dist/src/ai-assistant/src/tools/tools.d.ts +76 -25
  6. package/dist/src/components/src/side-panel/add-by-dataset-button.d.ts +0 -1
  7. package/dist/src/duckdb/src/table/duckdb-table-utils.d.ts +8 -9
  8. package/dist/src/localization/src/translations/ca.d.ts +2 -0
  9. package/dist/src/localization/src/translations/cn.d.ts +2 -0
  10. package/dist/src/localization/src/translations/en.d.ts +2 -0
  11. package/dist/src/localization/src/translations/es.d.ts +2 -0
  12. package/dist/src/localization/src/translations/fi.d.ts +2 -0
  13. package/dist/src/localization/src/translations/ja.d.ts +2 -0
  14. package/dist/src/localization/src/translations/pt.d.ts +2 -0
  15. package/dist/src/localization/src/translations/ru.d.ts +2 -0
  16. package/dist/src/reducers/src/ui-state-updaters.d.ts +0 -10
  17. package/dist/src/reducers/src/vis-state-updaters.d.ts +16 -1
  18. package/dist/src/reducers/src/vis-state.d.ts +4 -0
  19. package/dist/src/schemas/src/vis-state-schema.d.ts +1 -0
  20. package/package.json +2 -2
  21. package/src/actions/dist/ui-state-actions.d.ts +0 -16
  22. package/src/actions/dist/ui-state-actions.js +2 -17
  23. package/src/actions/dist/vis-state-actions.d.ts +26 -0
  24. package/src/actions/dist/vis-state-actions.js +25 -1
  25. package/src/actions/package.json +8 -8
  26. package/src/actions/src/ui-state-actions.ts +0 -22
  27. package/src/actions/src/vis-state-actions.ts +30 -0
  28. package/src/ai-assistant/dist/components/ai-assistant-component.js +63 -4
  29. package/src/ai-assistant/dist/components/ai-assistant-config.js +55 -17
  30. package/src/ai-assistant/dist/constants.d.ts +2 -5
  31. package/src/ai-assistant/dist/constants.js +3 -21
  32. package/src/ai-assistant/dist/reducers/index.js +2 -2
  33. package/src/ai-assistant/dist/tools/geo-tools.d.ts +76 -25
  34. package/src/ai-assistant/dist/tools/geo-tools.js +44 -8
  35. package/src/ai-assistant/dist/tools/lisa-tool.js +17 -6
  36. package/src/ai-assistant/dist/tools/tools.d.ts +76 -25
  37. package/src/ai-assistant/package.json +19 -14
  38. package/src/ai-assistant/src/components/ai-assistant-component.tsx +34 -4
  39. package/src/ai-assistant/src/components/ai-assistant-config.tsx +64 -18
  40. package/src/ai-assistant/src/config/models.json +5 -24
  41. package/src/ai-assistant/src/constants.ts +21 -26
  42. package/src/ai-assistant/src/reducers/index.ts +1 -1
  43. package/src/ai-assistant/src/tools/geo-tools.tsx +70 -9
  44. package/src/ai-assistant/src/tools/lisa-tool.tsx +15 -4
  45. package/src/cloud-providers/package.json +2 -2
  46. package/src/common-utils/package.json +3 -3
  47. package/src/components/dist/kepler-gl.js +2 -2
  48. package/src/components/dist/map/map-popover.js +2 -2
  49. package/src/components/dist/map-container.js +2 -2
  50. package/src/components/dist/side-panel/add-by-dataset-button.d.ts +0 -1
  51. package/src/components/dist/side-panel/add-by-dataset-button.js +1 -3
  52. package/src/components/dist/side-panel/filter-panel/add-filter-button.js +1 -2
  53. package/src/components/dist/side-panel/layer-panel/add-layer-button.js +1 -2
  54. package/src/components/dist/side-panel/layer-panel/custom-picker.js +18 -5
  55. package/src/components/package.json +15 -15
  56. package/src/components/src/kepler-gl.tsx +1 -1
  57. package/src/components/src/map/map-popover.tsx +1 -1
  58. package/src/components/src/map-container.tsx +1 -1
  59. package/src/components/src/side-panel/add-by-dataset-button.tsx +0 -3
  60. package/src/components/src/side-panel/filter-panel/add-filter-button.tsx +0 -1
  61. package/src/components/src/side-panel/layer-panel/add-layer-button.tsx +0 -1
  62. package/src/components/src/side-panel/layer-panel/custom-picker.tsx +15 -1
  63. package/src/constants/dist/default-settings.js +1 -1
  64. package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/e6/16/9fd3750f7cfc51cf980ec6937f88e24e5b03b144d0439efabdec6a028ce7442883abce42b76f97bffa8d37bfb65c10508e48d68a2b019c4b750a48374080 +1 -0
  65. package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/b6/51/9b3488269917e0404a46b4db6235f226deef2d5b5b5ffb7414dafaa60b52 +2 -0
  66. package/src/constants/package.json +2 -2
  67. package/src/constants/umd/keplergl.min.js +1 -1
  68. package/src/deckgl-arrow-layers/package.json +2 -2
  69. package/src/deckgl-layers/package.json +4 -4
  70. package/src/duckdb/dist/components/sql-panel.js +34 -33
  71. package/src/duckdb/dist/table/duckdb-table-utils.d.ts +8 -9
  72. package/src/duckdb/dist/table/duckdb-table-utils.js +21 -23
  73. package/src/duckdb/dist/table/duckdb-table.js +20 -17
  74. package/src/duckdb/package.json +6 -6
  75. package/src/duckdb/src/components/sql-panel.tsx +3 -5
  76. package/src/duckdb/src/table/duckdb-table-utils.ts +19 -18
  77. package/src/duckdb/src/table/duckdb-table.ts +7 -4
  78. package/src/effects/package.json +5 -5
  79. package/src/layers/dist/geojson-layer/geojson-layer.js +5 -2
  80. package/src/layers/package.json +9 -9
  81. package/src/layers/src/geojson-layer/geojson-layer.ts +4 -1
  82. package/src/localization/dist/translations/ca.d.ts +2 -0
  83. package/src/localization/dist/translations/ca.js +3 -1
  84. package/src/localization/dist/translations/cn.d.ts +2 -0
  85. package/src/localization/dist/translations/cn.js +3 -1
  86. package/src/localization/dist/translations/en.d.ts +2 -0
  87. package/src/localization/dist/translations/en.js +4 -2
  88. package/src/localization/dist/translations/es.d.ts +2 -0
  89. package/src/localization/dist/translations/es.js +3 -1
  90. package/src/localization/dist/translations/fi.d.ts +2 -0
  91. package/src/localization/dist/translations/fi.js +3 -1
  92. package/src/localization/dist/translations/ja.d.ts +2 -0
  93. package/src/localization/dist/translations/ja.js +3 -1
  94. package/src/localization/dist/translations/pt.d.ts +2 -0
  95. package/src/localization/dist/translations/pt.js +3 -1
  96. package/src/localization/dist/translations/ru.d.ts +2 -0
  97. package/src/localization/dist/translations/ru.js +3 -1
  98. package/src/localization/package.json +1 -1
  99. package/src/localization/src/translations/ca.ts +2 -0
  100. package/src/localization/src/translations/cn.ts +2 -0
  101. package/src/localization/src/translations/en.ts +4 -2
  102. package/src/localization/src/translations/es.ts +2 -0
  103. package/src/localization/src/translations/fi.ts +2 -0
  104. package/src/localization/src/translations/ja.ts +2 -0
  105. package/src/localization/src/translations/pt.ts +2 -0
  106. package/src/localization/src/translations/ru.ts +2 -0
  107. package/src/processors/dist/file-handler.js +13 -14
  108. package/src/processors/package.json +7 -7
  109. package/src/processors/src/file-handler.ts +0 -1
  110. package/src/reducers/dist/combined-updaters.js +4 -2
  111. package/src/reducers/dist/ui-state-updaters.d.ts +0 -10
  112. package/src/reducers/dist/ui-state-updaters.js +2 -22
  113. package/src/reducers/dist/ui-state.js +2 -2
  114. package/src/reducers/dist/vis-state-updaters.d.ts +16 -1
  115. package/src/reducers/dist/vis-state-updaters.js +79 -45
  116. package/src/reducers/dist/vis-state.d.ts +4 -0
  117. package/src/reducers/dist/vis-state.js +2 -2
  118. package/src/reducers/package.json +16 -16
  119. package/src/reducers/src/combined-updaters.ts +1 -0
  120. package/src/reducers/src/ui-state-updaters.ts +0 -24
  121. package/src/reducers/src/ui-state.ts +1 -3
  122. package/src/reducers/src/vis-state-updaters.ts +74 -22
  123. package/src/reducers/src/vis-state.ts +3 -1
  124. package/src/schemas/dist/vis-state-schema.d.ts +1 -0
  125. package/src/schemas/dist/vis-state-schema.js +1 -1
  126. package/src/schemas/package.json +7 -7
  127. package/src/schemas/src/vis-state-schema.ts +1 -0
  128. package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/f9/fc/86ccce4fa2c3e73042785814bc24476cb7cc9531d16a7c2ecb66bfc154f7b35d7416d852faa175d172da177931675cd2ba82e3b7898e8f4bf499921b00c2 +1 -0
  129. package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/ba/31/d609a3a75657c3640471d5a925a4a64689ea3853d9379bdcd675dba816a2 +2 -0
  130. package/src/styles/package.json +2 -2
  131. package/src/styles/umd/keplergl.min.js +1 -1
  132. package/src/table/package.json +5 -5
  133. package/src/tasks/package.json +2 -2
  134. package/src/types/package.json +1 -1
  135. package/src/utils/package.json +4 -4
  136. package/umd/keplergl.min.js +1350 -1312
@@ -112,7 +112,7 @@ var mapFieldsSelector = exports.mapFieldsSelector = function mapFieldsSelector(p
112
112
  mapControls: props.uiState.mapControls,
113
113
  readOnly: props.uiState.readOnly,
114
114
  locale: props.uiState.locale,
115
- isLoadingIndicatorVisible: Number(props.uiState.loadingIndicatorValue) > 0,
115
+ isLoadingIndicatorVisible: Number(props.visState.loadingIndicatorValue) > 0,
116
116
  sidePanelWidth: props.sidePanelWidth ? props.sidePanelWidth : DEFAULT_KEPLER_GL_PROPS.width,
117
117
  // mapStyle
118
118
  topMapContainerProps: props.topMapContainerProps,
@@ -571,4 +571,4 @@ function mergeActions(actions, userActions) {
571
571
  return _objectSpread(_objectSpread({}, actions), overrides);
572
572
  }
573
573
  var _default = exports["default"] = KeplerGlFactory;
574
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY29uc29sZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVkdXgiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9yZXNlbGVjdCIsIl9rZXBsZXJnbENvbm5lY3QiLCJfcmVhY3RJbnRsIiwiX2xvY2FsaXphdGlvbiIsIl9jb250ZXh0IiwiX2FjdGlvbnMiLCJfY29tbW9uVXRpbHMiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfY29uc3RhbnRzIiwiX3NpZGVQYW5lbCIsIl9tYXBDb250YWluZXIyIiwiX21hcHNMYXlvdXQiLCJfYm90dG9tV2lkZ2V0IiwiX21vZGFsQ29udGFpbmVyIiwiX3Bsb3RDb250YWluZXIiLCJfbm90aWZpY2F0aW9uUGFuZWwiLCJfZ2VvY29kZXJQYW5lbCIsIl9lZmZlY3RNYW5hZ2VyIiwiX2RuZENvbnRleHQiLCJfdXNlQ2xvdWRMaXN0UHJvdmlkZXIiLCJfdXRpbHMiLCJfc3R5bGVzIiwiX3RlbXBsYXRlT2JqZWN0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mMyIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9jYWxsU3VwZXIiLCJvIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJhcHBseSIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiR2xvYmFsU3R5bGUiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJmb250RmFtaWx5IiwiZm9udFdlaWdodCIsImZvbnRTaXplIiwibGluZUhlaWdodCIsImxhYmVsQ29sb3IiLCJCb3R0b21XaWRnZXRPdXRlciIsIl9yZWYiLCJhYnNvbHV0ZSIsImNvbmNhdCIsImlzVmlld3BvcnREaXNqb2ludGVkIiwiZXhwb3J0cyIsIm1hcFN0YXRlIiwiaXNTcGxpdCIsImlzVmlld3BvcnRTeW5jZWQiLCJzcGxpdE1hcFZpZXdwb3J0cyIsIm1hcFN0YXRlU2VsZWN0b3IiLCJpbmRleCIsIk51bWJlciIsImlzRmluaXRlIiwibWFwRmllbGRzU2VsZWN0b3IiLCJ1bmRlZmluZWQiLCJnZXRNYXBib3hSZWYiLCJtYXBib3hBcGlBY2Nlc3NUb2tlbiIsIm1hcGJveEFwaVVybCIsIkRFRkFVTFRfS0VQTEVSX0dMX1BST1BTIiwiZGF0YXNldEF0dHJpYnV0aW9ucyIsImF0dHJpYnV0aW9uU2VsZWN0b3IiLCJzb3VyY2VzIiwibWFwU3R5bGUiLCJvbkRlY2tJbml0aWFsaXplZCIsIm9uVmlld1N0YXRlQ2hhbmdlIiwib25Nb3VzZU1vdmUiLCJkZWNrR2xQcm9wcyIsInVpU3RhdGVBY3Rpb25zIiwidmlzU3RhdGVBY3Rpb25zIiwibWFwU3RhdGVBY3Rpb25zIiwidmlzU3RhdGUiLCJhY3RpdmVTaWRlUGFuZWwiLCJ1aVN0YXRlIiwibWFwQ29udHJvbHMiLCJyZWFkT25seSIsImxvY2FsZSIsImlzTG9hZGluZ0luZGljYXRvclZpc2libGUiLCJsb2FkaW5nSW5kaWNhdG9yVmFsdWUiLCJzaWRlUGFuZWxXaWR0aCIsIndpZHRoIiwidG9wTWFwQ29udGFpbmVyUHJvcHMiLCJib3R0b21NYXBDb250YWluZXJQcm9wcyIsInRyYW5zZm9ybVJlcXVlc3QiLCJnZXRWaXNpYmxlRGF0YXNldHMiLCJkYXRhc2V0cyIsImZpbHRlck9iamVjdEJ5UHJlZGljYXRlIiwia2V5IiwiR0VPQ09ERVJfREFUQVNFVF9OQU1FIiwic2lkZVBhbmVsU2VsZWN0b3IiLCJhdmFpbGFibGVQcm92aWRlcnMiLCJmaWx0ZXJlZERhdGFzZXRzIiwiYXBwTmFtZSIsInZlcnNpb24iLCJhcHBXZWJzaXRlIiwib25TYXZlTWFwIiwibWFwU3R5bGVBY3Rpb25zIiwiZmlsdGVycyIsImxheWVycyIsImxheWVyT3JkZXIiLCJsYXllckNsYXNzZXMiLCJpbnRlcmFjdGlvbkNvbmZpZyIsIm1hcEluZm8iLCJsYXllckJsZW5kaW5nIiwib3ZlcmxheUJsZW5kaW5nIiwibWFwU2F2ZWQiLCJwcm92aWRlclN0YXRlIiwicGxvdENvbnRhaW5lclNlbGVjdG9yIiwiaGVpZ2h0IiwiZXhwb3J0SW1hZ2VTZXR0aW5nIiwiZXhwb3J0SW1hZ2UiLCJtYXBGaWVsZHMiLCJhZGROb3RpZmljYXRpb24iLCJzZXRFeHBvcnRJbWFnZVNldHRpbmciLCJzZXRFeHBvcnRJbWFnZURhdGFVcmkiLCJzZXRFeHBvcnRJbWFnZUVycm9yIiwic3BsaXRNYXBzIiwiaXNTcGxpdFNlbGVjdG9yIiwiYm90dG9tV2lkZ2V0U2VsZWN0b3IiLCJhbmltYXRpb25Db25maWciLCJ0b2dnbGVNb2RhbCIsInNpZGVQYW5lbCIsIm1hcmdpbiIsImxlZnQiLCJtb2RhbENvbnRhaW5lclNlbGVjdG9yIiwicm9vdE5vZGUiLCJwcm92aWRlckFjdGlvbnMiLCJjbG91ZFByb3ZpZGVycyIsIm9uRXhwb3J0VG9DbG91ZFN1Y2Nlc3MiLCJvbkxvYWRDbG91ZE1hcFN1Y2Nlc3MiLCJvbkxvYWRDbG91ZE1hcEVycm9yIiwib25FeHBvcnRUb0Nsb3VkRXJyb3IiLCJnZW9Db2RlclBhbmVsU2VsZWN0b3IiLCJkaW1lbnNpb25zIiwiaXNHZW9jb2RlckVuYWJsZWQiLCJnZW9jb2RlciIsImVuYWJsZWQiLCJ1cGRhdGVWaXNEYXRhIiwicmVtb3ZlRGF0YXNldCIsInVwZGF0ZU1hcCIsImFwcFdpZHRoIiwiZGF0YXNldEF0dHJpYnV0aW9uU2VsZWN0b3IiLCJjcmVhdGVTZWxlY3RvciIsInN0YXRlIiwidW5pcXVlQXR0cmlidXRpb25zIiwiX2RzJG1ldGFkYXRhIiwiZHMiLCJhdHRyaWJ1dGlvbnMiLCJtZXRhZGF0YSIsIkFycmF5IiwiaXNBcnJheSIsImF0dHJpYnV0aW9uIiwibGlua3MiLCJtYXRjaCIsImxpbmsiLCJfbGluayRtYXRjaCIsIl9saW5rJG1hdGNoMiIsImhyZWYiLCJ0aXRsZSIsImluZGV4T2YiLCJ1cmwiLCJlcnJvciIsInVuaXF1ZVRleHRBdHRyaWJ1dGlvbnMiLCJsb2dvcyIsIm5vdGlmaWNhdGlvblBhbmVsU2VsZWN0b3IiLCJyZW1vdmVOb3RpZmljYXRpb24iLCJub3RpZmljYXRpb25zIiwibWFwU3R5bGVzIiwibWFwU3R5bGVzUmVwbGFjZURlZmF1bHQiLCJERUZBVUxUX01BUEJPWF9BUElfVVJMIiwiS0VQTEVSX0dMX05BTUUiLCJLRVBMRVJfR0xfVkVSU0lPTiIsIkRJTUVOU0lPTlMiLCJmZWF0dXJlRmxhZ3MiLCJLZXBsZXJHbEZhY3RvcnkiLCJkZXBzIiwiQm90dG9tV2lkZ2V0RmFjdG9yeSIsIkdlb0NvZGVyUGFuZWxGYWN0b3J5IiwiTWFwQ29udGFpbmVyRmFjdG9yeSIsIk1hcHNMYXlvdXRGYWN0b3J5IiwiTW9kYWxDb250YWluZXJGYWN0b3J5IiwiU2lkZVBhbmVsRmFjdG9yeSIsIlBsb3RDb250YWluZXJGYWN0b3J5IiwiTm90aWZpY2F0aW9uUGFuZWxGYWN0b3J5IiwiRG5kQ29udGV4dEZhY3RvcnkiLCJFZmZlY3RNYW5hZ2VyRmFjdG9yeSIsIkJvdHRvbVdpZGdldCIsIkdlb0NvZGVyUGFuZWwiLCJNYXBDb250YWluZXIiLCJNYXBzTGF5b3V0IiwiTW9kYWxDb250YWluZXIiLCJTaWRlUGFuZWwiLCJQbG90Q29udGFpbmVyIiwiTm90aWZpY2F0aW9uUGFuZWwiLCJEbmRDb250ZXh0IiwiS2VwbGVyR0wiLCJfQ29tcG9uZW50IiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2xlbiIsImFyZ3MiLCJfa2V5Iiwic2V0U3RhdGUiLCJjcmVhdGVSZWYiLCJ0aGVtZVNlbGVjdG9yIiwiX3R5cGVvZjIiLCJiYXNpY1RoZW1lIiwiVEhFTUUiLCJsaWdodCIsInRoZW1lTFQiLCJiYXNlIiwidGhlbWVCUyIsImRhdGFzZXRzU2VsZWN0b3IiLCJwcm92aWRlcnMiLCJoYXNTdG9yYWdlIiwic29tZSIsInAiLCJoYXNQcml2YXRlU3RvcmFnZSIsImhhc1NoYXJlIiwiaGFzU2hhcmluZ1VybCIsImxvY2FsZU1lc3NhZ2VzIiwiY3VzdG9tTWVzc2FnZXMiLCJtZXJnZU1lc3NhZ2VzIiwibWVzc2FnZXMiLCJkZWZhdWx0U3R5bGVzIiwidmFsdWVzIiwiY3VzdG9tU3R5bGVzIiwibWFwIiwibXMiLCJpZCIsImdlbmVyYXRlSGFzaElkIiwiYWxsU3R5bGVzIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsInJlZHVjZSIsImFjY3UiLCJzdHlsZSIsImxvYWRNYXBTdHlsZXMiLCJjb250YWluZXJJZCIsImxheWVySWQiLCJ0b2dnbGVMYXllckZvck1hcCIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwidmFsdWUiLCJjb21wb25lbnREaWRNb3VudCIsIl9nZXRBcHBsaWNhdGlvbkNvbmZpZyIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwiYmFzZU1hcExpYnJhcnlDb25maWciLCJtYXBMaWJOYW1lIiwiX3ZhbGlkYXRlTWFwYm94VG9rZW4iLCJfbG9hZE1hcFN0eWxlIiwib25LZXBsZXJHbEluaXRpYWxpemVkIiwicm9vdCIsImN1cnJlbnQiLCJIVE1MRWxlbWVudCIsIm9ic2VydmVEaW1lbnNpb25zIiwiX2hhbmRsZVJlc2l6ZSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwidW5vYnNlcnZlRGltZW5zaW9ucyIsInZhbGlkYXRlVG9rZW4iLCJDb25zb2xlIiwid2FybiIsIk1JU1NJTkdfTUFQQk9YX1RPS0VOIiwicmVuZGVyIiwiX3RoaXMyIiwiX3RoaXMkcHJvcHMiLCJfdGhpcyRwcm9wcyRpZCIsIl90aGlzJHByb3BzJHdpZHRoIiwiX3RoaXMkcHJvcHMkaGVpZ2h0IiwiX3RoaXMkcHJvcHMkY2xvdWRQcm92IiwiYXZhaWxhYmxlVGhlbWVTZWxlY3RvciIsImxvY2FsZU1lc3NhZ2VzU2VsZWN0b3IiLCJpc0V4cG9ydGluZ0ltYWdlIiwiZXhwb3J0aW5nIiwiZmlsdGVyZWREYXRhc2V0c1NlbGVjdG9yIiwic2lkZUZpZWxkcyIsInBsb3RDb250YWluZXJGaWVsZHMiLCJib3R0b21XaWRnZXRGaWVsZHMiLCJtb2RhbENvbnRhaW5lckZpZWxkcyIsImdlb0NvZGVyUGFuZWxGaWVsZHMiLCJub3RpZmljYXRpb25QYW5lbEZpZWxkcyIsIm1hcENvbnRhaW5lcnMiLCJjcmVhdGVFbGVtZW50IiwiX2V4dGVuZHMyIiwicHJpbWFyeSIsImRlbGV0ZU1hcExhYmVscyIsIl9kZWxldGVNYXBMYWJlbHMiLCJzZXR0aW5ncyIsIlJvb3RDb250ZXh0IiwiUHJvdmlkZXIiLCJGZWF0dXJlRmxhZ3NDb250ZXh0UHJvdmlkZXIiLCJJbnRsUHJvdmlkZXIiLCJTdHlsZVNoZWV0TWFuYWdlciIsInNob3VsZEZvcndhcmRQcm9wIiwiVGhlbWVQcm92aWRlciIsIkNsb3VkTGlzdFByb3ZpZGVyIiwiY2xhc3NOYW1lIiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJwb3NpdGlvbiIsInJlZiIsInVuc3luY2VkVmlld3BvcnRzIiwiX21hcENvbnRhaW5lciIsImhhc1BvcnRhYmxlV2lkdGgiLCJicmVha1BvaW50VmFsdWVzIiwicm9vdFJlZiIsImJvdHRvbVdpZGdldFJlZiIsImNvbnRhaW5lclciLCJjb250YWluZXJIIiwiQ29tcG9uZW50Iiwia2VwbGVyR2xDb25uZWN0IiwibWFwU3RhdGVUb1Byb3BzIiwibWFrZU1hcERpc3BhdGNoVG9Qcm9wcyIsIndpdGhUaGVtZSIsImRlZmF1bHRVc2VyQWN0aW9ucyIsImdldERpc3BhdGNoIiwiZGlzcGF0Y2giLCJnZXRVc2VyQWN0aW9ucyIsImFjdGlvbnMiLCJtYWtlR2V0QWN0aW9uQ3JlYXRvcnMiLCJ1c2VyQWN0aW9ucyIsIl9tYXAiLCJWaXNTdGF0ZUFjdGlvbnMiLCJNYXBTdGF0ZUFjdGlvbnMiLCJNYXBTdHlsZUFjdGlvbnMiLCJVSVN0YXRlQWN0aW9ucyIsIlByb3ZpZGVyQWN0aW9ucyIsImJpbmRBY3Rpb25DcmVhdG9ycyIsIm1lcmdlQWN0aW9ucyIsIl9tYXAyIiwiX3NsaWNlZFRvQXJyYXkyIiwiZ2V0QWN0aW9uQ3JlYXRvcnMiLCJtYXBEaXNwYXRjaFRvUHJvcHMiLCJvd25Qcm9wcyIsImdyb3VwZWRBY3Rpb25DcmVhdG9ycyIsIm92ZXJyaWRlcyIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vc3JjL2tlcGxlci1nbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBjcmVhdGVSZWYsIERpc3BhdGNofSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQ29uc29sZSBmcm9tICdnbG9iYWwvY29uc29sZSc7XG5pbXBvcnQge2JpbmRBY3Rpb25DcmVhdG9yc30gZnJvbSAncmVkdXgnO1xuaW1wb3J0IHN0eWxlZCwge3dpdGhUaGVtZSwgU3R5bGVTaGVldE1hbmFnZXIsIFRoZW1lUHJvdmlkZXJ9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7Y3JlYXRlU2VsZWN0b3J9IGZyb20gJ3Jlc2VsZWN0JztcbmltcG9ydCB7Y29ubmVjdCBhcyBrZXBsZXJHbENvbm5lY3R9IGZyb20gJy4vY29ubmVjdC9rZXBsZXJnbC1jb25uZWN0JztcbmltcG9ydCB7SW50bFByb3ZpZGVyfSBmcm9tICdyZWFjdC1pbnRsJztcbmltcG9ydCB7bWVzc2FnZXN9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcbmltcG9ydCB7Um9vdENvbnRleHQsIEZlYXR1cmVGbGFnc0NvbnRleHRQcm92aWRlciwgRmVhdHVyZUZsYWdzfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHtcbiAgQXR0cmlidXRpb25XaXRoU3R5bGUsXG4gIERhdGFzZXRBdHRyaWJ1dGlvbixcbiAgT25FcnJvckNhbGxCYWNrLFxuICBPblN1Y2Nlc3NDYWxsQmFjayxcbiAgVmlld3BvcnRcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmltcG9ydCB7XG4gIE1hcFN0YXRlQWN0aW9ucyxcbiAgTWFwU3R5bGVBY3Rpb25zLFxuICBQcm92aWRlckFjdGlvbnMsXG4gIFVJU3RhdGVBY3Rpb25zLFxuICBWaXNTdGF0ZUFjdGlvbnNcbn0gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcblxuaW1wb3J0IHtnZW5lcmF0ZUhhc2hJZH0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuXG5pbXBvcnQge3Nob3VsZEZvcndhcmRQcm9wfSBmcm9tICcuL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5cbnR5cGUgS2VwbGVyR2xBY3Rpb25zID0ge1xuICB2aXNTdGF0ZUFjdGlvbnM6IHR5cGVvZiBWaXNTdGF0ZUFjdGlvbnM7XG4gIG1hcFN0YXRlQWN0aW9uczogdHlwZW9mIE1hcFN0YXRlQWN0aW9ucztcbiAgbWFwU3R5bGVBY3Rpb25zOiB0eXBlb2YgTWFwU3R5bGVBY3Rpb25zO1xuICB1aVN0YXRlQWN0aW9uczogdHlwZW9mIFVJU3RhdGVBY3Rpb25zO1xuICBwcm92aWRlckFjdGlvbnM6IHR5cGVvZiBQcm92aWRlckFjdGlvbnM7XG59O1xuXG5pbXBvcnQge1xuICBESU1FTlNJT05TLFxuICBLRVBMRVJfR0xfTkFNRSxcbiAgS0VQTEVSX0dMX1ZFUlNJT04sXG4gIFRIRU1FLFxuICBERUZBVUxUX01BUEJPWF9BUElfVVJMLFxuICBHRU9DT0RFUl9EQVRBU0VUX05BTUUsXG4gIE1JU1NJTkdfTUFQQk9YX1RPS0VOXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuaW1wb3J0IFNpZGVQYW5lbEZhY3RvcnkgZnJvbSAnLi9zaWRlLXBhbmVsJztcbmltcG9ydCBNYXBDb250YWluZXJGYWN0b3J5IGZyb20gJy4vbWFwLWNvbnRhaW5lcic7XG5pbXBvcnQgTWFwc0xheW91dEZhY3RvcnkgZnJvbSAnLi9tYXBzLWxheW91dCc7XG5pbXBvcnQgQm90dG9tV2lkZ2V0RmFjdG9yeSBmcm9tICcuL2JvdHRvbS13aWRnZXQnO1xuaW1wb3J0IE1vZGFsQ29udGFpbmVyRmFjdG9yeSBmcm9tICcuL21vZGFsLWNvbnRhaW5lcic7XG5pbXBvcnQgUGxvdENvbnRhaW5lckZhY3RvcnkgZnJvbSAnLi9wbG90LWNvbnRhaW5lcic7XG5pbXBvcnQgTm90aWZpY2F0aW9uUGFuZWxGYWN0b3J5IGZyb20gJy4vbm90aWZpY2F0aW9uLXBhbmVsJztcbmltcG9ydCBHZW9Db2RlclBhbmVsRmFjdG9yeSBmcm9tICcuL2dlb2NvZGVyLXBhbmVsJztcbmltcG9ydCBFZmZlY3RNYW5hZ2VyRmFjdG9yeSBmcm9tICcuL2VmZmVjdHMvZWZmZWN0LW1hbmFnZXInO1xuaW1wb3J0IERuZENvbnRleHRGYWN0b3J5IGZyb20gJy4vZG5kLWNvbnRleHQnO1xuaW1wb3J0IHtDbG91ZExpc3RQcm92aWRlcn0gZnJvbSAnLi9ob29rcy91c2UtY2xvdWQtbGlzdC1wcm92aWRlcic7XG5cbmltcG9ydCB7XG4gIGZpbHRlck9iamVjdEJ5UHJlZGljYXRlLFxuICB2YWxpZGF0ZVRva2VuLFxuICBtZXJnZU1lc3NhZ2VzLFxuICBvYnNlcnZlRGltZW5zaW9ucyxcbiAgdW5vYnNlcnZlRGltZW5zaW9ucyxcbiAgaGFzUG9ydGFibGVXaWR0aCxcbiAgZ2V0QXBwbGljYXRpb25Db25maWdcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmltcG9ydCB7dGhlbWUgYXMgYmFzaWNUaGVtZSwgdGhlbWVMVCwgdGhlbWVCUywgYnJlYWtQb2ludFZhbHVlc30gZnJvbSAnQGtlcGxlci5nbC9zdHlsZXMnO1xuaW1wb3J0IHtLZXBsZXJHbFN0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3JlZHVjZXJzJztcbmltcG9ydCB7UHJvdmlkZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvY2xvdWQtcHJvdmlkZXJzJztcblxuLy8gTWF5YmUgd2Ugc2hvdWxkIHRoaW5rIGFib3V0IGV4cG9ydGluZyB0aGlzIG9yIGNyZWF0aW5nIGEgdmFyaWFibGVcbi8vIGFzIHBhcnQgb2YgdGhlIGJhc2UuanMgdGhlbWVcbmNvbnN0IEdsb2JhbFN0eWxlID0gc3R5bGVkLmRpdmBcbiAgZm9udC1mYW1pbHk6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZm9udEZhbWlseX07XG4gIGZvbnQtd2VpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmZvbnRXZWlnaHR9O1xuICBmb250LXNpemU6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZm9udFNpemV9O1xuICBsaW5lLWhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5saW5lSGVpZ2h0fTtcblxuICAqLFxuICAqOmJlZm9yZSxcbiAgKjphZnRlciB7XG4gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG5cbiAgdWwge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgbGkge1xuICAgIG1hcmdpbjogMDtcbiAgfVxuXG4gIGEge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYWJlbENvbG9yfTtcbiAgfVxuXG4gIDpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC5tYXBsaWJyZWdsLWN0cmwgLm1hcGxpYnJlZ2wtY3RybC1sb2dvIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLm1hcGJveGdsLWN0cmwgLm1hcGJveGdsLWN0cmwtbG9nbyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuYDtcblxudHlwZSBCb3R0b21XaWRnZXRPdXRlclByb3BzID0ge1xuICBhYnNvbHV0ZT86IGJvb2xlYW47XG59O1xuXG5jb25zdCBCb3R0b21XaWRnZXRPdXRlciA9IHN0eWxlZC5kaXY8Qm90dG9tV2lkZ2V0T3V0ZXJQcm9wcz4oXG4gICh7YWJzb2x1dGV9KSA9PiBgXG4gICR7YWJzb2x1dGUgPyAncG9zaXRpb246IGFic29sdXRlOyBib3R0b206IDA7IHJpZ2h0OiAwOycgOiAnJ31cbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7IC8qIHByZXZlbnQgcGFkZGluZyBmcm9tIGJsb2NraW5nIGlucHV0ICovXG4gICYgPiAqIHtcbiAgICAvKiBhbGwgY2hpbGRyZW4gc2hvdWxkIGFsbG93IGlucHV0ICovXG4gICAgcG9pbnRlci1ldmVudHM6IGFsbDtcbiAgfWBcbik7XG5cbmV4cG9ydCBjb25zdCBpc1ZpZXdwb3J0RGlzam9pbnRlZCA9IHByb3BzID0+IHtcbiAgcmV0dXJuIChcbiAgICBwcm9wcy5tYXBTdGF0ZS5pc1NwbGl0ICYmXG4gICAgIXByb3BzLm1hcFN0YXRlLmlzVmlld3BvcnRTeW5jZWQgJiZcbiAgICBwcm9wcy5tYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5sZW5ndGggPiAxXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgbWFwU3RhdGVTZWxlY3RvciA9IChwcm9wczogYW55LCBpbmRleDogbnVtYmVyKTogYW55ID0+IHtcbiAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoaW5kZXgpKSB7XG4gICAgLy8gZWl0aGVyIG5vIGluZGV4IGFyZyBvciBhbiBpbnZhbGlkIGluZGV4IHdhcyBwcm92aWRlZFxuICAgIC8vIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGVpdGhlciAwIG9yIDEgd2hlbiBpbiBzcGxpdCBtb2RlXG4gICAgLy8gb25seSB1c2UgdGhlIG1hcFN0YXRlXG4gICAgcmV0dXJuIHByb3BzLm1hcFN0YXRlO1xuICB9XG5cbiAgcmV0dXJuIGlzVmlld3BvcnREaXNqb2ludGVkKHByb3BzKVxuICAgID8gLy8gbWl4IHRvZ2V0aGVyIHRoZSB2aWV3cG9ydCBwcm9wZXJ0aWVzIGludGVuZGVkIGZvciB0aGlzIGRpc2pvaW50ZWQgPE1hcENvbnRhaW5lcj4gd2l0aCB0aGUgb3RoZXIgbmVjZXNzYXJ5IG1hcFN0YXRlIHByb3BlcnRpZXNcbiAgICAgIHsuLi5wcm9wcy5tYXBTdGF0ZSwgLi4ucHJvcHMubWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHNbaW5kZXhdfVxuICAgIDogLy8gb3RoZXJ3aXNlIG9ubHkgdXNlIHRoZSBtYXBTdGF0ZVxuICAgICAgcHJvcHMubWFwU3RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgbWFwRmllbGRzU2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMsIGluZGV4ID0gMCkgPT4gKHtcbiAgZ2V0TWFwYm94UmVmOiBwcm9wcy5nZXRNYXBib3hSZWYsXG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBwcm9wcy5tYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgbWFwYm94QXBpVXJsOiBwcm9wcy5tYXBib3hBcGlVcmwgPyBwcm9wcy5tYXBib3hBcGlVcmwgOiBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy5tYXBib3hBcGlVcmwsXG4gIG1hcFN0YXRlOiBtYXBTdGF0ZVNlbGVjdG9yKHByb3BzLCBpbmRleCksXG4gIGRhdGFzZXRBdHRyaWJ1dGlvbnM6IGF0dHJpYnV0aW9uU2VsZWN0b3IocHJvcHMpLnNvdXJjZXMsXG4gIG1hcFN0eWxlOiBwcm9wcy5tYXBTdHlsZSxcbiAgb25EZWNrSW5pdGlhbGl6ZWQ6IHByb3BzLm9uRGVja0luaXRpYWxpemVkLFxuICBvblZpZXdTdGF0ZUNoYW5nZTogcHJvcHMub25WaWV3U3RhdGVDaGFuZ2UsXG4gIG9uTW91c2VNb3ZlOiBwcm9wcy5vbk1vdXNlTW92ZSxcbiAgZGVja0dsUHJvcHM6IHByb3BzLmRlY2tHbFByb3BzLFxuICB1aVN0YXRlQWN0aW9uczogcHJvcHMudWlTdGF0ZUFjdGlvbnMsXG4gIHZpc1N0YXRlQWN0aW9uczogcHJvcHMudmlzU3RhdGVBY3Rpb25zLFxuICBtYXBTdGF0ZUFjdGlvbnM6IHByb3BzLm1hcFN0YXRlQWN0aW9ucyxcblxuICAvLyB2aXNTdGF0ZVxuICB2aXNTdGF0ZTogcHJvcHMudmlzU3RhdGUsXG5cbiAgLy8gdWlTdGF0ZVxuICBhY3RpdmVTaWRlUGFuZWw6IHByb3BzLnVpU3RhdGUuYWN0aXZlU2lkZVBhbmVsLFxuICBtYXBDb250cm9sczogcHJvcHMudWlTdGF0ZS5tYXBDb250cm9scyxcbiAgcmVhZE9ubHk6IHByb3BzLnVpU3RhdGUucmVhZE9ubHksXG4gIGxvY2FsZTogcHJvcHMudWlTdGF0ZS5sb2NhbGUsXG4gIGlzTG9hZGluZ0luZGljYXRvclZpc2libGU6IE51bWJlcihwcm9wcy51aVN0YXRlLmxvYWRpbmdJbmRpY2F0b3JWYWx1ZSkgPiAwLFxuICBzaWRlUGFuZWxXaWR0aDogcHJvcHMuc2lkZVBhbmVsV2lkdGggPyBwcm9wcy5zaWRlUGFuZWxXaWR0aCA6IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTLndpZHRoLFxuXG4gIC8vIG1hcFN0eWxlXG4gIHRvcE1hcENvbnRhaW5lclByb3BzOiBwcm9wcy50b3BNYXBDb250YWluZXJQcm9wcyxcbiAgYm90dG9tTWFwQ29udGFpbmVyUHJvcHM6IHByb3BzLmJvdHRvbU1hcENvbnRhaW5lclByb3BzLFxuXG4gIC8vIHRyYW5zZm9ybVJlcXVlc3QgZm9yIE1hcGJveCBiYXNlbWFwc1xuICB0cmFuc2Zvcm1SZXF1ZXN0OiBwcm9wcy50cmFuc2Zvcm1SZXF1ZXN0XG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZpc2libGVEYXRhc2V0cyhkYXRhc2V0cykge1xuICAvLyBXZSBkb24ndCB3YW50IEdlb2NvZGVyIGRhdGFzZXQgdG8gYmUgcHJlc2VudCBpbiBTaWRlUGFuZWwgZGF0YXNldCBsaXN0XG4gIHJldHVybiBmaWx0ZXJPYmplY3RCeVByZWRpY2F0ZShkYXRhc2V0cywga2V5ID0+IGtleSAhPT0gR0VPQ09ERVJfREFUQVNFVF9OQU1FKTtcbn1cblxuZXhwb3J0IGNvbnN0IHNpZGVQYW5lbFNlbGVjdG9yID0gKHByb3BzOiBLZXBsZXJHTFByb3BzLCBhdmFpbGFibGVQcm92aWRlcnMsIGZpbHRlcmVkRGF0YXNldHMpID0+ICh7XG4gIGFwcE5hbWU6IHByb3BzLmFwcE5hbWUgPyBwcm9wcy5hcHBOYW1lIDogREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMuYXBwTmFtZSxcbiAgdmVyc2lvbjogcHJvcHMudmVyc2lvbiA/IHByb3BzLnZlcnNpb24gOiBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy52ZXJzaW9uLFxuICBhcHBXZWJzaXRlOiBwcm9wcy5hcHBXZWJzaXRlLFxuICBtYXBTdHlsZTogcHJvcHMubWFwU3R5bGUsXG4gIG9uU2F2ZU1hcDogcHJvcHMub25TYXZlTWFwLFxuICB1aVN0YXRlOiBwcm9wcy51aVN0YXRlLFxuICBtYXBTdHlsZUFjdGlvbnM6IHByb3BzLm1hcFN0eWxlQWN0aW9ucyxcbiAgdmlzU3RhdGVBY3Rpb25zOiBwcm9wcy52aXNTdGF0ZUFjdGlvbnMsXG4gIHVpU3RhdGVBY3Rpb25zOiBwcm9wcy51aVN0YXRlQWN0aW9ucyxcbiAgbWFwU3RhdGVBY3Rpb25zOiBwcm9wcy5tYXBTdGF0ZUFjdGlvbnMsXG5cbiAgZGF0YXNldHM6IGZpbHRlcmVkRGF0YXNldHMsXG4gIGZpbHRlcnM6IHByb3BzLnZpc1N0YXRlLmZpbHRlcnMsXG4gIGxheWVyczogcHJvcHMudmlzU3RhdGUubGF5ZXJzLFxuICBsYXllck9yZGVyOiBwcm9wcy52aXNTdGF0ZS5sYXllck9yZGVyLFxuICBsYXllckNsYXNzZXM6IHByb3BzLnZpc1N0YXRlLmxheWVyQ2xhc3NlcyxcbiAgaW50ZXJhY3Rpb25Db25maWc6IHByb3BzLnZpc1N0YXRlLmludGVyYWN0aW9uQ29uZmlnLFxuICBtYXBJbmZvOiBwcm9wcy52aXNTdGF0ZS5tYXBJbmZvLFxuICBsYXllckJsZW5kaW5nOiBwcm9wcy52aXNTdGF0ZS5sYXllckJsZW5kaW5nLFxuICBvdmVybGF5QmxlbmRpbmc6IHByb3BzLnZpc1N0YXRlLm92ZXJsYXlCbGVuZGluZyxcblxuICB3aWR0aDogcHJvcHMuc2lkZVBhbmVsV2lkdGggPyBwcm9wcy5zaWRlUGFuZWxXaWR0aCA6IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTLndpZHRoLFxuICBhdmFpbGFibGVQcm92aWRlcnMsXG4gIG1hcFNhdmVkOiBwcm9wcy5wcm92aWRlclN0YXRlLm1hcFNhdmVkXG59KTtcblxuZXhwb3J0IGNvbnN0IHBsb3RDb250YWluZXJTZWxlY3RvciA9IChwcm9wczogS2VwbGVyR0xQcm9wcykgPT4gKHtcbiAgd2lkdGg6IHByb3BzLndpZHRoLFxuICBoZWlnaHQ6IHByb3BzLmhlaWdodCxcbiAgZXhwb3J0SW1hZ2VTZXR0aW5nOiBwcm9wcy51aVN0YXRlLmV4cG9ydEltYWdlLFxuICBtYXBGaWVsZHM6IG1hcEZpZWxkc1NlbGVjdG9yKHByb3BzKSxcbiAgYWRkTm90aWZpY2F0aW9uOiBwcm9wcy51aVN0YXRlQWN0aW9ucy5hZGROb3RpZmljYXRpb24sXG4gIHNldEV4cG9ydEltYWdlU2V0dGluZzogcHJvcHMudWlTdGF0ZUFjdGlvbnMuc2V0RXhwb3J0SW1hZ2VTZXR0aW5nLFxuICBzZXRFeHBvcnRJbWFnZURhdGFVcmk6IHByb3BzLnVpU3RhdGVBY3Rpb25zLnNldEV4cG9ydEltYWdlRGF0YVVyaSxcbiAgc2V0RXhwb3J0SW1hZ2VFcnJvcjogcHJvcHMudWlTdGF0ZUFjdGlvbnMuc2V0RXhwb3J0SW1hZ2VFcnJvcixcbiAgc3BsaXRNYXBzOiBwcm9wcy52aXNTdGF0ZS5zcGxpdE1hcHNcbn0pO1xuXG5leHBvcnQgY29uc3QgaXNTcGxpdFNlbGVjdG9yID0gKHByb3BzOiBLZXBsZXJHTFByb3BzKSA9PlxuICBwcm9wcy52aXNTdGF0ZS5zcGxpdE1hcHMgJiYgcHJvcHMudmlzU3RhdGUuc3BsaXRNYXBzLmxlbmd0aCA+IDE7XG5cbmV4cG9ydCBjb25zdCBib3R0b21XaWRnZXRTZWxlY3RvciA9IChwcm9wczogS2VwbGVyR0xQcm9wcywgdGhlbWUpID0+ICh7XG4gIGZpbHRlcnM6IHByb3BzLnZpc1N0YXRlLmZpbHRlcnMsXG4gIGRhdGFzZXRzOiBwcm9wcy52aXNTdGF0ZS5kYXRhc2V0cyxcbiAgdWlTdGF0ZTogcHJvcHMudWlTdGF0ZSxcbiAgbGF5ZXJzOiBwcm9wcy52aXNTdGF0ZS5sYXllcnMsXG4gIGFuaW1hdGlvbkNvbmZpZzogcHJvcHMudmlzU3RhdGUuYW5pbWF0aW9uQ29uZmlnLFxuICB2aXNTdGF0ZUFjdGlvbnM6IHByb3BzLnZpc1N0YXRlQWN0aW9ucyxcbiAgdG9nZ2xlTW9kYWw6IHByb3BzLnVpU3RhdGVBY3Rpb25zLnRvZ2dsZU1vZGFsLFxuICBzaWRlUGFuZWxXaWR0aDogcHJvcHMudWlTdGF0ZS5yZWFkT25seSA/IDAgOiBwcm9wcy5zaWRlUGFuZWxXaWR0aCArIHRoZW1lLnNpZGVQYW5lbC5tYXJnaW4ubGVmdFxufSk7XG5cbmV4cG9ydCBjb25zdCBtb2RhbENvbnRhaW5lclNlbGVjdG9yID0gKHByb3BzOiBLZXBsZXJHTFByb3BzLCByb290Tm9kZSkgPT4gKHtcbiAgYXBwTmFtZTogcHJvcHMuYXBwTmFtZSA/IHByb3BzLmFwcE5hbWUgOiBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy5hcHBOYW1lLFxuICBtYXBTdHlsZTogcHJvcHMubWFwU3R5bGUsXG4gIHZpc1N0YXRlOiBwcm9wcy52aXNTdGF0ZSxcbiAgbWFwU3RhdGU6IHByb3BzLm1hcFN0YXRlLFxuICB1aVN0YXRlOiBwcm9wcy51aVN0YXRlLFxuICBwcm92aWRlclN0YXRlOiBwcm9wcy5wcm92aWRlclN0YXRlLFxuXG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBwcm9wcy5tYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgbWFwYm94QXBpVXJsOiBwcm9wcy5tYXBib3hBcGlVcmwsXG4gIHZpc1N0YXRlQWN0aW9uczogcHJvcHMudmlzU3RhdGVBY3Rpb25zLFxuICB1aVN0YXRlQWN0aW9uczogcHJvcHMudWlTdGF0ZUFjdGlvbnMsXG4gIG1hcFN0eWxlQWN0aW9uczogcHJvcHMubWFwU3R5bGVBY3Rpb25zLFxuICBwcm92aWRlckFjdGlvbnM6IHByb3BzLnByb3ZpZGVyQWN0aW9ucyxcblxuICByb290Tm9kZSxcbiAgLy8gVXNlciBkZWZpbmVkIGNsb3VkIHByb3ZpZGVyIHByb3BzXG4gIGNsb3VkUHJvdmlkZXJzOiBwcm9wcy5jbG91ZFByb3ZpZGVyc1xuICAgID8gcHJvcHMuY2xvdWRQcm92aWRlcnNcbiAgICA6IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTLmNsb3VkUHJvdmlkZXJzLFxuICBvbkV4cG9ydFRvQ2xvdWRTdWNjZXNzOiBwcm9wcy5vbkV4cG9ydFRvQ2xvdWRTdWNjZXNzLFxuICBvbkxvYWRDbG91ZE1hcFN1Y2Nlc3M6IHByb3BzLm9uTG9hZENsb3VkTWFwU3VjY2VzcyxcbiAgb25Mb2FkQ2xvdWRNYXBFcnJvcjogcHJvcHMub25Mb2FkQ2xvdWRNYXBFcnJvcixcbiAgb25FeHBvcnRUb0Nsb3VkRXJyb3I6IHByb3BzLm9uRXhwb3J0VG9DbG91ZEVycm9yXG59KTtcblxuZXhwb3J0IGNvbnN0IGdlb0NvZGVyUGFuZWxTZWxlY3RvciA9IChcbiAgcHJvcHM6IEtlcGxlckdMUHJvcHMsXG4gIGRpbWVuc2lvbnM6IHt3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlcn1cbikgPT4gKHtcbiAgaXNHZW9jb2RlckVuYWJsZWQ6IHByb3BzLnZpc1N0YXRlLmludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyLmVuYWJsZWQsXG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBwcm9wcy5tYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgbWFwU3RhdGU6IHByb3BzLm1hcFN0YXRlLFxuICB1aVN0YXRlOiBwcm9wcy51aVN0YXRlLFxuICBsYXllck9yZGVyOiBwcm9wcy52aXNTdGF0ZS5sYXllck9yZGVyLFxuICB1cGRhdGVWaXNEYXRhOiBwcm9wcy52aXNTdGF0ZUFjdGlvbnMudXBkYXRlVmlzRGF0YSxcbiAgcmVtb3ZlRGF0YXNldDogcHJvcHMudmlzU3RhdGVBY3Rpb25zLnJlbW92ZURhdGFzZXQsXG4gIHVwZGF0ZU1hcDogcHJvcHMubWFwU3RhdGVBY3Rpb25zLnVwZGF0ZU1hcCxcbiAgYXBwV2lkdGg6IGRpbWVuc2lvbnMud2lkdGhcbn0pO1xuXG4vKipcbiAqIFJldHVybnMgYXJyYXkgb2YgdW5pcXVlIGRhdGFzZXQgYXR0cmlidXRpb25zLCBlYWNoIHdpdGggdGl0bGUgYW5kIHVybCBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgY29uc3QgZGF0YXNldEF0dHJpYnV0aW9uU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgW3N0YXRlID0+IHN0YXRlLnZpc1N0YXRlLmRhdGFzZXRzXSxcbiAgZGF0YXNldHMgPT4ge1xuICAgIGNvbnN0IHVuaXF1ZUF0dHJpYnV0aW9uczogRGF0YXNldEF0dHJpYnV0aW9uW10gPSBbXTtcbiAgICBPYmplY3Qua2V5cyhkYXRhc2V0cykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgY29uc3QgZHMgPSBkYXRhc2V0c1trZXldO1xuICAgICAgY29uc3QgYXR0cmlidXRpb25zID0gZHM/Lm1ldGFkYXRhPy5hdHRyaWJ1dGlvbnM7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShhdHRyaWJ1dGlvbnMpKSB7XG4gICAgICAgIGF0dHJpYnV0aW9ucy5mb3JFYWNoKGF0dHJpYnV0aW9uID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIGF0dHJpYnV0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgLy8gYXR0cmlidXRpb24gY2FuIGJlIGEgcmF3IHN0cmluZyBvciBhIHN0cmluZyB3aXRoIGxpbmsgdGFnc1xuICAgICAgICAgICAgY29uc3QgbGlua3MgPSBhdHRyaWJ1dGlvbi5tYXRjaCgvPGFbXl0rP2E+L2cpO1xuICAgICAgICAgICAgaWYgKGxpbmtzKSB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGlua3M/LmZvckVhY2gobGluayA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBocmVmID0gbGluay5tYXRjaCgvaHJlZj1cIihbXlwiXSopLyk/LlsxXTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gbGluay5tYXRjaCgvdGl0bGU9XCIoW15cIl0qKS8pPy5bMV07XG4gICAgICAgICAgICAgICAgICBpZiAoaHJlZiAmJiB0aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICB1bmlxdWVBdHRyaWJ1dGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGAke2xpbmsuaW5kZXhPZignJmNvcHk7JykgPj0gMCA/ICfCqSAnIDogJyd9JHt0aXRsZX1gLFxuICAgICAgICAgICAgICAgICAgICAgIHVybDogaHJlZlxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAvLyBqdXN0IGlnbm9yZSBmb3Igbm93XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHVuaXF1ZUF0dHJpYnV0aW9ucy5wdXNoKHt0aXRsZTogYXR0cmlidXRpb24sIHVybDogbnVsbH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHVuaXF1ZUF0dHJpYnV0aW9ucztcbiAgfVxuKTtcblxuLyoqXG4gKiBEZWR1cGxpY2F0ZWQgZGF0YXNldCBhbmQgbGF5ZXIgdGV4dCBhdHRyaWJ1dGlvbnMgYW5kIGxvZ29zLlxuICogUmV0dXJucyB0ZXh0IGF0dHJpYnV0aW9ucyBhbmQgbG9nb3MgdG8gZGlzcGxheS5cbiAqL1xuZXhwb3J0IGNvbnN0IGF0dHJpYnV0aW9uU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgW2RhdGFzZXRBdHRyaWJ1dGlvblNlbGVjdG9yXSxcbiAgZGF0YXNldEF0dHJpYnV0aW9ucyA9PiB7XG4gICAgLy8gVE9ETyBjb2xsZWN0IGF0dHJpYnV0aW9ucyBmcm9tIGxheWVycywgYW5kIG1lcmdlIHdpdGggZGF0YXNldCBhdHRyaWJ1dGlvbnMgaGVyZVxuICAgIGNvbnN0IHVuaXF1ZVRleHRBdHRyaWJ1dGlvbnMgPSBkYXRhc2V0QXR0cmlidXRpb25zO1xuICAgIGNvbnN0IGxvZ29zOiBBdHRyaWJ1dGlvbldpdGhTdHlsZVtdID0gW107XG5cbiAgICByZXR1cm4ge3NvdXJjZXM6IHVuaXF1ZVRleHRBdHRyaWJ1dGlvbnMsIGxvZ29zfTtcbiAgfVxuKTtcblxuZXhwb3J0IGNvbnN0IG5vdGlmaWNhdGlvblBhbmVsU2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMpID0+ICh7XG4gIHJlbW92ZU5vdGlmaWNhdGlvbjogcHJvcHMudWlTdGF0ZUFjdGlvbnMucmVtb3ZlTm90aWZpY2F0aW9uLFxuICBub3RpZmljYXRpb25zOiBwcm9wcy51aVN0YXRlLm5vdGlmaWNhdGlvbnNcbn0pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMgPSB7XG4gIG1hcFN0eWxlczogW10sXG4gIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0OiBmYWxzZSxcbiAgbWFwYm94QXBpVXJsOiBERUZBVUxUX01BUEJPWF9BUElfVVJMLFxuICB3aWR0aDogODAwLFxuICBoZWlnaHQ6IDgwMCxcbiAgYXBwTmFtZTogS0VQTEVSX0dMX05BTUUsXG4gIHZlcnNpb246IEtFUExFUl9HTF9WRVJTSU9OLFxuICBzaWRlUGFuZWxXaWR0aDogRElNRU5TSU9OUy5zaWRlUGFuZWwud2lkdGgsXG4gIHRoZW1lOiB7fSxcbiAgY2xvdWRQcm92aWRlcnM6IFtdLFxuICByZWFkT25seTogZmFsc2UsXG4gIGZlYXR1cmVGbGFnczoge31cbn07XG5cbnR5cGUgS2VwbGVyR0xCYXNpY1Byb3BzID0ge1xuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogc3RyaW5nO1xuICBtYXBib3hBcGlVcmw/OiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG4gIHdpZHRoPzogbnVtYmVyO1xuICBoZWlnaHQ/OiBudW1iZXI7XG5cbiAgYXBwV2Vic2l0ZT86IGFueTtcbiAgb25TYXZlTWFwPzogKCkgPT4gdm9pZDtcbiAgb25WaWV3U3RhdGVDaGFuZ2U/OiAodmlld1N0YXRlOiBWaWV3cG9ydCkgPT4gdm9pZDtcbiAgb25EZWNrSW5pdGlhbGl6ZWQ/OiAoKSA9PiB2b2lkO1xuICBvbktlcGxlckdsSW5pdGlhbGl6ZWQ/OiAoKSA9PiB2b2lkO1xuICBnZXRNYXBib3hSZWY/OiAoKSA9PiBSZWFjdC5SZWZPYmplY3Q8YW55PjtcbiAgbWFwU3R5bGVzPzoge2lkOiBzdHJpbmc7IHN0eWxlPzogb2JqZWN0fVtdO1xuICBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdD86IGJvb2xlYW47XG4gIGFwcE5hbWU/OiBzdHJpbmc7XG4gIHZlcnNpb24/OiBzdHJpbmc7XG4gIHNpZGVQYW5lbFdpZHRoPzogbnVtYmVyO1xuICB0aGVtZT86IG9iamVjdDtcbiAgY2xvdWRQcm92aWRlcnM/OiBQcm92aWRlcltdO1xuICBkZWNrR2xQcm9wcz86IG9iamVjdDtcbiAgb25Mb2FkQ2xvdWRNYXBTdWNjZXNzPzogT25TdWNjZXNzQ2FsbEJhY2s7XG4gIG9uTG9hZENsb3VkTWFwRXJyb3I/OiBPbkVycm9yQ2FsbEJhY2s7XG4gIG9uTW91c2VNb3ZlPzogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50ICYge2xuZ0xhdD86IFtudW1iZXIsIG51bWJlcl19KSA9PiB2b2lkO1xuICBvbkV4cG9ydFRvQ2xvdWRTdWNjZXNzPzogT25TdWNjZXNzQ2FsbEJhY2s7XG4gIG9uRXhwb3J0VG9DbG91ZEVycm9yPzogT25FcnJvckNhbGxCYWNrO1xuICByZWFkT25seT86IGJvb2xlYW47XG4gIGZlYXR1cmVGbGFncz86IEZlYXR1cmVGbGFncztcblxuICBsb2NhbGVNZXNzYWdlcz86IHtba2V5OiBzdHJpbmddOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfX07XG4gIGRpc3BhdGNoOiBEaXNwYXRjaDxhbnk+O1xuXG4gIHRvcE1hcENvbnRhaW5lclByb3BzPzogb2JqZWN0O1xuICBib3R0b21NYXBDb250YWluZXJQcm9wcz86IG9iamVjdDtcblxuICB0cmFuc2Zvcm1SZXF1ZXN0PzogKHVybDogc3RyaW5nKSA9PiB7dXJsOiBzdHJpbmd9O1xufTtcblxudHlwZSBLZXBsZXJHTFByb3BzID0gS2VwbGVyR2xTdGF0ZSAmIEtlcGxlckdsQWN0aW9ucyAmIEtlcGxlckdMQmFzaWNQcm9wcztcbnR5cGUgS2VwbGVyR0xDb21wU3RhdGUgPSB7XG4gIGRpbWVuc2lvbnM6IHt3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlcn0gfCBudWxsO1xufTtcblxuS2VwbGVyR2xGYWN0b3J5LmRlcHMgPSBbXG4gIEJvdHRvbVdpZGdldEZhY3RvcnksXG4gIEdlb0NvZGVyUGFuZWxGYWN0b3J5LFxuICBNYXBDb250YWluZXJGYWN0b3J5LFxuICBNYXBzTGF5b3V0RmFjdG9yeSxcbiAgTW9kYWxDb250YWluZXJGYWN0b3J5LFxuICBTaWRlUGFuZWxGYWN0b3J5LFxuICBQbG90Q29udGFpbmVyRmFjdG9yeSxcbiAgTm90aWZpY2F0aW9uUGFuZWxGYWN0b3J5LFxuICBEbmRDb250ZXh0RmFjdG9yeSxcbiAgRWZmZWN0TWFuYWdlckZhY3Rvcnlcbl07XG5cbmZ1bmN0aW9uIEtlcGxlckdsRmFjdG9yeShcbiAgQm90dG9tV2lkZ2V0OiBSZXR1cm5UeXBlPHR5cGVvZiBCb3R0b21XaWRnZXRGYWN0b3J5PixcbiAgR2VvQ29kZXJQYW5lbDogUmV0dXJuVHlwZTx0eXBlb2YgR2VvQ29kZXJQYW5lbEZhY3Rvcnk+LFxuICBNYXBDb250YWluZXI6IFJldHVyblR5cGU8dHlwZW9mIE1hcENvbnRhaW5lckZhY3Rvcnk+LFxuICBNYXBzTGF5b3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBNYXBzTGF5b3V0RmFjdG9yeT4sXG4gIE1vZGFsQ29udGFpbmVyOiBSZXR1cm5UeXBlPHR5cGVvZiBNb2RhbENvbnRhaW5lckZhY3Rvcnk+LFxuICBTaWRlUGFuZWw6IFJldHVyblR5cGU8dHlwZW9mIFNpZGVQYW5lbEZhY3Rvcnk+LFxuICBQbG90Q29udGFpbmVyOiBSZXR1cm5UeXBlPHR5cGVvZiBQbG90Q29udGFpbmVyRmFjdG9yeT4sXG4gIE5vdGlmaWNhdGlvblBhbmVsOiBSZXR1cm5UeXBlPHR5cGVvZiBOb3RpZmljYXRpb25QYW5lbEZhY3Rvcnk+LFxuICBEbmRDb250ZXh0OiBSZXR1cm5UeXBlPHR5cGVvZiBEbmRDb250ZXh0RmFjdG9yeT5cbik6IFJlYWN0LkNvbXBvbmVudFR5cGU8S2VwbGVyR0xCYXNpY1Byb3BzICYge3NlbGVjdG9yOiAoLi4uYXJnczogYW55W10pID0+IEtlcGxlckdsU3RhdGV9PiB7XG4gIC8qKiBAdHlwZWRlZiB7aW1wb3J0KCcuL2tlcGxlci1nbCcpLlVuY29ubmVjdGVkS2VwbGVyR2xQcm9wc30gS2VwbGVyR2xQcm9wcyAqL1xuICAvKiogQGF1Z21lbnRzIFJlYWN0LkNvbXBvbmVudDxLZXBsZXJHbFByb3BzPiAqL1xuICBjbGFzcyBLZXBsZXJHTCBleHRlbmRzIENvbXBvbmVudDxcbiAgICBLZXBsZXJHTFByb3BzICYge3NlbGVjdG9yOiAoLi4uYXJnczogYW55W10pID0+IEtlcGxlckdsU3RhdGV9LFxuICAgIEtlcGxlckdMQ29tcFN0YXRlXG4gID4ge1xuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSBERUZBVUxUX0tFUExFUl9HTF9QUk9QUztcblxuICAgIHN0YXRlOiBLZXBsZXJHTENvbXBTdGF0ZSA9IHtcbiAgICAgIGRpbWVuc2lvbnM6IG51bGxcbiAgICB9O1xuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICBpZiAoZ2V0QXBwbGljYXRpb25Db25maWcoKS5iYXNlTWFwTGlicmFyeUNvbmZpZz8uWydtYXBib3gnXT8ubWFwTGliTmFtZSA9PT0gJ01hcGJveCcpIHtcbiAgICAgICAgdGhpcy5fdmFsaWRhdGVNYXBib3hUb2tlbigpO1xuICAgICAgfVxuICAgICAgdGhpcy5fbG9hZE1hcFN0eWxlKCk7XG4gICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25LZXBsZXJHbEluaXRpYWxpemVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25LZXBsZXJHbEluaXRpYWxpemVkKCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5yb290LmN1cnJlbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICBvYnNlcnZlRGltZW5zaW9ucyh0aGlzLnJvb3QuY3VycmVudCwgdGhpcy5faGFuZGxlUmVzaXplKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIGlmICh0aGlzLnJvb3QuY3VycmVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHVub2JzZXJ2ZURpbWVuc2lvbnModGhpcy5yb290LmN1cnJlbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIF9oYW5kbGVSZXNpemUgPSBkaW1lbnNpb25zID0+IHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe2RpbWVuc2lvbnN9KTtcbiAgICB9O1xuXG4gICAgc3RhdGljIGNvbnRleHRUeXBlID0gUm9vdENvbnRleHQ7XG5cbiAgICByb290ID0gY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xuICAgIGJvdHRvbVdpZGdldFJlZiA9IGNyZWF0ZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcblxuICAgIC8qIHNlbGVjdG9ycyAqL1xuICAgIHRoZW1lU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy50aGVtZTtcbiAgICBhdmFpbGFibGVUaGVtZVNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IodGhpcy50aGVtZVNlbGVjdG9yLCB0aGVtZSA9PlxuICAgICAgdHlwZW9mIHRoZW1lID09PSAnb2JqZWN0J1xuICAgICAgICA/IHtcbiAgICAgICAgICAgIC4uLmJhc2ljVGhlbWUsXG4gICAgICAgICAgICAuLi50aGVtZVxuICAgICAgICAgIH1cbiAgICAgICAgOiB0aGVtZSA9PT0gVEhFTUUubGlnaHRcbiAgICAgICAgPyB0aGVtZUxUXG4gICAgICAgIDogdGhlbWUgPT09IFRIRU1FLmJhc2VcbiAgICAgICAgPyB0aGVtZUJTXG4gICAgICAgIDogdGhlbWVcbiAgICApO1xuXG4gICAgZGF0YXNldHNTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLnZpc1N0YXRlLmRhdGFzZXRzO1xuICAgIGZpbHRlcmVkRGF0YXNldHNTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKHRoaXMuZGF0YXNldHNTZWxlY3RvciwgZ2V0VmlzaWJsZURhdGFzZXRzKTtcblxuICAgIGF2YWlsYWJsZVByb3ZpZGVycyA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgKHByb3BzOiBLZXBsZXJHTFByb3BzKSA9PiBwcm9wcy5jbG91ZFByb3ZpZGVycyxcbiAgICAgIHByb3ZpZGVycyA9PlxuICAgICAgICBBcnJheS5pc0FycmF5KHByb3ZpZGVycykgJiYgcHJvdmlkZXJzLmxlbmd0aFxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBoYXNTdG9yYWdlOiBwcm92aWRlcnMuc29tZShwID0+IHAuaGFzUHJpdmF0ZVN0b3JhZ2UoKSksXG4gICAgICAgICAgICAgIGhhc1NoYXJlOiBwcm92aWRlcnMuc29tZShwID0+IHAuaGFzU2hhcmluZ1VybCgpKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge31cbiAgICApO1xuXG4gICAgbG9jYWxlTWVzc2FnZXNTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgKHByb3BzOiBLZXBsZXJHTFByb3BzKSA9PiBwcm9wcy5sb2NhbGVNZXNzYWdlcyxcbiAgICAgIGN1c3RvbU1lc3NhZ2VzID0+IChjdXN0b21NZXNzYWdlcyA/IG1lcmdlTWVzc2FnZXMobWVzc2FnZXMsIGN1c3RvbU1lc3NhZ2VzKSA6IG1lc3NhZ2VzKVxuICAgICk7XG5cbiAgICAvKiBwcml2YXRlIG1ldGhvZHMgKi9cbiAgICBfdmFsaWRhdGVNYXBib3hUb2tlbigpIHtcbiAgICAgIGNvbnN0IHttYXBib3hBcGlBY2Nlc3NUb2tlbn0gPSB0aGlzLnByb3BzO1xuICAgICAgaWYgKCF2YWxpZGF0ZVRva2VuKG1hcGJveEFwaUFjY2Vzc1Rva2VuKSkge1xuICAgICAgICBDb25zb2xlLndhcm4oTUlTU0lOR19NQVBCT1hfVE9LRU4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIF9sb2FkTWFwU3R5bGUgPSAoKSA9PiB7XG4gICAgICBjb25zdCBkZWZhdWx0U3R5bGVzID0gT2JqZWN0LnZhbHVlcyh0aGlzLnByb3BzLm1hcFN0eWxlLm1hcFN0eWxlcyk7XG4gICAgICAvLyBhZGQgaWQgdG8gY3VzdG9tIG1hcCBzdHlsZXMgaWYgbm90IGdpdmVuXG4gICAgICBjb25zdCBjdXN0b21TdHlsZXMgPSAodGhpcy5wcm9wcy5tYXBTdHlsZXMgfHwgW10pLm1hcChtcyA9PiAoe1xuICAgICAgICAuLi5tcyxcbiAgICAgICAgaWQ6IG1zLmlkIHx8IGdlbmVyYXRlSGFzaElkKClcbiAgICAgIH0pKTtcblxuICAgICAgY29uc3QgYWxsU3R5bGVzID0gWy4uLmN1c3RvbVN0eWxlcywgLi4uZGVmYXVsdFN0eWxlc10ucmVkdWNlKChhY2N1LCBzdHlsZSkgPT4ge1xuICAgICAgICBhY2N1W3N0eWxlLmlkXSA9IHN0eWxlO1xuICAgICAgICByZXR1cm4gYWNjdTtcbiAgICAgIH0sIHt9KTtcblxuICAgICAgdGhpcy5wcm9wcy5tYXBTdHlsZUFjdGlvbnMubG9hZE1hcFN0eWxlcyhhbGxTdHlsZXMpO1xuICAgIH07XG5cbiAgICBfZGVsZXRlTWFwTGFiZWxzID0gKGNvbnRhaW5lcklkLCBsYXllcklkKSA9PiB7XG4gICAgICB0aGlzLnByb3BzLnZpc1N0YXRlQWN0aW9ucy50b2dnbGVMYXllckZvck1hcChjb250YWluZXJJZCwgbGF5ZXJJZCk7XG4gICAgfTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBpZCA9ICdtYXAnLFxuICAgICAgICB3aWR0aCA9IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTLndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy5oZWlnaHQsXG4gICAgICAgIHVpU3RhdGUsXG4gICAgICAgIHZpc1N0YXRlLFxuICAgICAgICAvLyByZWFkT25seSBvdmVycmlkZVxuICAgICAgICByZWFkT25seSxcblxuICAgICAgICAvLyBmZWF0dXJlc1xuICAgICAgICBmZWF0dXJlRmxhZ3MsXG5cbiAgICAgICAgLy8gY2xvdWQgcHJvdmlkZXJzXG4gICAgICAgIGNsb3VkUHJvdmlkZXJzID0gW11cbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICBjb25zdCBkaW1lbnNpb25zID0gdGhpcy5zdGF0ZS5kaW1lbnNpb25zIHx8IHt3aWR0aCwgaGVpZ2h0fTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgc3BsaXRNYXBzLCAvLyB0aGlzIHdpbGwgc3RvcmUgc3VwcG9ydCBmb3Igc3BsaXQgbWFwIHZpZXcgaXMgbmVjZXNzYXJ5XG4gICAgICAgIGludGVyYWN0aW9uQ29uZmlnXG4gICAgICB9ID0gdmlzU3RhdGU7XG5cbiAgICAgIGNvbnN0IGlzU3BsaXQgPSBpc1NwbGl0U2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCB0aGVtZSA9IHRoaXMuYXZhaWxhYmxlVGhlbWVTZWxlY3Rvcih0aGlzLnByb3BzKTtcbiAgICAgIGNvbnN0IGxvY2FsZU1lc3NhZ2VzID0gdGhpcy5sb2NhbGVNZXNzYWdlc1NlbGVjdG9yKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3QgaXNFeHBvcnRpbmdJbWFnZSA9IHVpU3RhdGUuZXhwb3J0SW1hZ2UuZXhwb3J0aW5nO1xuICAgICAgY29uc3QgYXZhaWxhYmxlUHJvdmlkZXJzID0gdGhpcy5hdmFpbGFibGVQcm92aWRlcnModGhpcy5wcm9wcyk7XG5cbiAgICAgIGNvbnN0IGZpbHRlcmVkRGF0YXNldHMgPSB0aGlzLmZpbHRlcmVkRGF0YXNldHNTZWxlY3Rvcih0aGlzLnByb3BzKTtcbiAgICAgIGNvbnN0IHNpZGVGaWVsZHMgPSBzaWRlUGFuZWxTZWxlY3Rvcih0aGlzLnByb3BzLCBhdmFpbGFibGVQcm92aWRlcnMsIGZpbHRlcmVkRGF0YXNldHMpO1xuICAgICAgY29uc3QgcGxvdENvbnRhaW5lckZpZWxkcyA9IHBsb3RDb250YWluZXJTZWxlY3Rvcih0aGlzLnByb3BzKTtcbiAgICAgIGNvbnN0IGJvdHRvbVdpZGdldEZpZWxkcyA9IGJvdHRvbVdpZGdldFNlbGVjdG9yKHRoaXMucHJvcHMsIHRoZW1lKTtcbiAgICAgIGNvbnN0IG1vZGFsQ29udGFpbmVyRmllbGRzID0gbW9kYWxDb250YWluZXJTZWxlY3Rvcih0aGlzLnByb3BzLCB0aGlzLnJvb3QuY3VycmVudCk7XG4gICAgICBjb25zdCBnZW9Db2RlclBhbmVsRmllbGRzID0gZ2VvQ29kZXJQYW5lbFNlbGVjdG9yKHRoaXMucHJvcHMsIGRpbWVuc2lvbnMpO1xuICAgICAgY29uc3Qgbm90aWZpY2F0aW9uUGFuZWxGaWVsZHMgPSBub3RpZmljYXRpb25QYW5lbFNlbGVjdG9yKHRoaXMucHJvcHMpO1xuXG4gICAgICBjb25zdCBtYXBDb250YWluZXJzID0gIWlzU3BsaXRcbiAgICAgICAgPyBbXG4gICAgICAgICAgICA8TWFwQ29udGFpbmVyXG4gICAgICAgICAgICAgIHByaW1hcnk9e3RydWV9XG4gICAgICAgICAgICAgIGtleT17MH1cbiAgICAgICAgICAgICAgaW5kZXg9ezB9XG4gICAgICAgICAgICAgIHsuLi5tYXBGaWVsZHNTZWxlY3Rvcih0aGlzLnByb3BzKX1cbiAgICAgICAgICAgICAgY29udGFpbmVySWQ9ezB9XG4gICAgICAgICAgICAgIGRlbGV0ZU1hcExhYmVscz17dGhpcy5fZGVsZXRlTWFwTGFiZWxzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICBdXG4gICAgICAgIDogc3BsaXRNYXBzLm1hcCgoc2V0dGluZ3MsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8TWFwQ29udGFpbmVyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgcHJpbWFyeT17aW5kZXggPT09IDF9XG4gICAgICAgICAgICAgIHsuLi5tYXBGaWVsZHNTZWxlY3Rvcih0aGlzLnByb3BzLCBpbmRleCl9XG4gICAgICAgICAgICAgIGNvbnRhaW5lcklkPXtpbmRleH1cbiAgICAgICAgICAgICAgZGVsZXRlTWFwTGFiZWxzPXt0aGlzLl9kZWxldGVNYXBMYWJlbHN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Um9vdENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3RoaXMucm9vdH0+XG4gICAgICAgICAgPEZlYXR1cmVGbGFnc0NvbnRleHRQcm92aWRlciBmZWF0dXJlRmxhZ3M9e2ZlYXR1cmVGbGFnc30+XG4gICAgICAgICAgICA8SW50bFByb3ZpZGVyIGxvY2FsZT17dWlTdGF0ZS5sb2NhbGV9IG1lc3NhZ2VzPXtsb2NhbGVNZXNzYWdlc1t1aVN0YXRlLmxvY2FsZV19PlxuICAgICAgICAgICAgICA8U3R5bGVTaGVldE1hbmFnZXIgc2hvdWxkRm9yd2FyZFByb3A9e3Nob3VsZEZvcndhcmRQcm9wfT5cbiAgICAgICAgICAgICAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PlxuICAgICAgICAgICAgICAgICAgPENsb3VkTGlzdFByb3ZpZGVyIHByb3ZpZGVycz17Y2xvdWRQcm92aWRlcnN9PlxuICAgICAgICAgICAgICAgICAgICA8R2xvYmFsU3R5bGVcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJrZXBsZXItZ2xcIlxuICAgICAgICAgICAgICAgICAgICAgIGlkPXtga2VwbGVyLWdsX18ke2lkfWB9XG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogYCR7d2lkdGh9cHhgLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBgJHtoZWlnaHR9cHhgXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICByZWY9e3RoaXMucm9vdH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25QYW5lbCB7Li4ubm90aWZpY2F0aW9uUGFuZWxGaWVsZHN9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPERuZENvbnRleHQgdmlzU3RhdGU9e3Zpc1N0YXRlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHshdWlTdGF0ZS5yZWFkT25seSAmJiAhcmVhZE9ubHkgJiYgPFNpZGVQYW5lbCB7Li4uc2lkZUZpZWxkc30gLz59XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFwc0xheW91dCBjbGFzc05hbWU9XCJtYXBzXCIgbWFwU3RhdGU9e3RoaXMucHJvcHMubWFwU3RhdGV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7bWFwQ29udGFpbmVyc31cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFwc0xheW91dD5cbiAgICAgICAgICAgICAgICAgICAgICA8L0RuZENvbnRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAge2lzRXhwb3J0aW5nSW1hZ2UgJiYgPFBsb3RDb250YWluZXIgey4uLnBsb3RDb250YWluZXJGaWVsZHN9IC8+fVxuICAgICAgICAgICAgICAgICAgICAgIHsvKiAxIGdlb2NvZGVyOiBzaW5nbGUgbW9kZSBPUiBzcGxpdCBtb2RlIGFuZCBzeW5jZWQgdmlld3BvcnRzICovfVxuICAgICAgICAgICAgICAgICAgICAgIHshaXNWaWV3cG9ydERpc2pvaW50ZWQodGhpcy5wcm9wcykgJiYgaW50ZXJhY3Rpb25Db25maWcuZ2VvY29kZXIuZW5hYmxlZCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8R2VvQ29kZXJQYW5lbFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2VvQ29kZXJQYW5lbEZpZWxkc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVuc3luY2VkVmlld3BvcnRzPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICB7LyogMiBnZW9jb2RlcnM6IHNwbGl0IG1vZGUgYW5kIHVuc3luY2VkIHZpZXdwb3J0cyAqL31cbiAgICAgICAgICAgICAgICAgICAgICB7aXNWaWV3cG9ydERpc2pvaW50ZWQodGhpcy5wcm9wcykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyLmVuYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcENvbnRhaW5lcnMubWFwKChfbWFwQ29udGFpbmVyLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8R2VvQ29kZXJQYW5lbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdlb0NvZGVyUGFuZWxGaWVsZHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc3luY2VkVmlld3BvcnRzPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgPEJvdHRvbVdpZGdldE91dGVyIGFic29sdXRlPXshaGFzUG9ydGFibGVXaWR0aChicmVha1BvaW50VmFsdWVzKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Qm90dG9tV2lkZ2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RSZWY9e3RoaXMuYm90dG9tV2lkZ2V0UmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4uYm90dG9tV2lkZ2V0RmllbGRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJXPXtkaW1lbnNpb25zLndpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVtZT17dGhlbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvQm90dG9tV2lkZ2V0T3V0ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPE1vZGFsQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICB7Li4ubW9kYWxDb250YWluZXJGaWVsZHN9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJXPXtkaW1lbnNpb25zLndpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVySD17ZGltZW5zaW9ucy5oZWlnaHR9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9HbG9iYWxTdHlsZT5cbiAgICAgICAgICAgICAgICAgIDwvQ2xvdWRMaXN0UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgPC9UaGVtZVByb3ZpZGVyPlxuICAgICAgICAgICAgICA8L1N0eWxlU2hlZXRNYW5hZ2VyPlxuICAgICAgICAgICAgPC9JbnRsUHJvdmlkZXI+XG4gICAgICAgICAgPC9GZWF0dXJlRmxhZ3NDb250ZXh0UHJvdmlkZXI+XG4gICAgICAgIDwvUm9vdENvbnRleHQuUHJvdmlkZXI+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBrZXBsZXJHbENvbm5lY3QoXG4gICAgbWFwU3RhdGVUb1Byb3BzLFxuICAgIG1ha2VNYXBEaXNwYXRjaFRvUHJvcHNcbiAgKSh3aXRoVGhlbWUoS2VwbGVyR0wpKSBhcyBSZXR1cm5UeXBlPHR5cGVvZiBLZXBsZXJHbEZhY3Rvcnk+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFwU3RhdGVUb1Byb3BzKHN0YXRlOiBLZXBsZXJHbFN0YXRlLCBwcm9wczogS2VwbGVyR0xQcm9wcykge1xuICByZXR1cm4ge1xuICAgIC4uLnByb3BzLFxuICAgIHZpc1N0YXRlOiBzdGF0ZS52aXNTdGF0ZSxcbiAgICBtYXBTdHlsZTogc3RhdGUubWFwU3R5bGUsXG4gICAgbWFwU3RhdGU6IHN0YXRlLm1hcFN0YXRlLFxuICAgIHVpU3RhdGU6IHN0YXRlLnVpU3RhdGUsXG4gICAgcHJvdmlkZXJTdGF0ZTogc3RhdGUucHJvdmlkZXJTdGF0ZVxuICB9O1xufVxuXG5jb25zdCBkZWZhdWx0VXNlckFjdGlvbnMgPSB7fTtcblxuY29uc3QgZ2V0RGlzcGF0Y2ggPSBkaXNwYXRjaCA9PiBkaXNwYXRjaDtcbmNvbnN0IGdldFVzZXJBY3Rpb25zID0gKGRpc3BhdGNoLCBwcm9wcykgPT4gcHJvcHMuYWN0aW9ucyB8fCBkZWZhdWx0VXNlckFjdGlvbnM7XG5cbi8qKiBAdHlwZSB7KCkgPT4gaW1wb3J0KCdyZXNlbGVjdCcpLk91dHB1dFBhcmFtZXRyaWNTZWxlY3RvcjxhbnksIGFueSwgYW55LCBhbnk+fSAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VHZXRBY3Rpb25DcmVhdG9ycygpIHtcbiAgcmV0dXJuIGNyZWF0ZVNlbGVjdG9yKFtnZXREaXNwYXRjaCwgZ2V0VXNlckFjdGlvbnNdLCAoZGlzcGF0Y2gsIHVzZXJBY3Rpb25zKSA9PiB7XG4gICAgY29uc3QgW3Zpc1N0YXRlQWN0aW9ucywgbWFwU3RhdGVBY3Rpb25zLCBtYXBTdHlsZUFjdGlvbnMsIHVpU3RhdGVBY3Rpb25zLCBwcm92aWRlckFjdGlvbnNdID0gW1xuICAgICAgVmlzU3RhdGVBY3Rpb25zLFxuICAgICAgTWFwU3RhdGVBY3Rpb25zLFxuICAgICAgTWFwU3R5bGVBY3Rpb25zLFxuICAgICAgVUlTdGF0ZUFjdGlvbnMsXG4gICAgICBQcm92aWRlckFjdGlvbnNcbiAgICBdLm1hcChhY3Rpb25zID0+IGJpbmRBY3Rpb25DcmVhdG9ycyhtZXJnZUFjdGlvbnMoYWN0aW9ucywgdXNlckFjdGlvbnMpLCBkaXNwYXRjaCkpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZpc1N0YXRlQWN0aW9ucyxcbiAgICAgIG1hcFN0YXRlQWN0aW9ucyxcbiAgICAgIG1hcFN0eWxlQWN0aW9ucyxcbiAgICAgIHVpU3RhdGVBY3Rpb25zLFxuICAgICAgcHJvdmlkZXJBY3Rpb25zLFxuICAgICAgZGlzcGF0Y2hcbiAgICB9O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gbWFrZU1hcERpc3BhdGNoVG9Qcm9wcygpIHtcbiAgY29uc3QgZ2V0QWN0aW9uQ3JlYXRvcnMgPSBtYWtlR2V0QWN0aW9uQ3JlYXRvcnMoKTtcbiAgY29uc3QgbWFwRGlzcGF0Y2hUb1Byb3BzID0gKGRpc3BhdGNoLCBvd25Qcm9wcykgPT4ge1xuICAgIGNvbnN0IGdyb3VwZWRBY3Rpb25DcmVhdG9ycyA9IGdldEFjdGlvbkNyZWF0b3JzKGRpc3BhdGNoLCBvd25Qcm9wcyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uZ3JvdXBlZEFjdGlvbkNyZWF0b3JzLFxuICAgICAgZGlzcGF0Y2hcbiAgICB9O1xuICB9O1xuXG4gIHJldHVybiBtYXBEaXNwYXRjaFRvUHJvcHM7XG59XG5cbi8qKlxuICogT3ZlcnJpZGUgZGVmYXVsdCBrZXBsZXIuZ2wgYWN0aW9ucyB3aXRoIHVzZXIgZGVmaW5lZCBhY3Rpb25zIHVzaW5nIHRoZSBzYW1lIGtleVxuICovXG5mdW5jdGlvbiBtZXJnZUFjdGlvbnMoYWN0aW9ucywgdXNlckFjdGlvbnMpIHtcbiAgY29uc3Qgb3ZlcnJpZGVzID0ge307XG4gIGZvciAoY29uc3Qga2V5IGluIHVzZXJBY3Rpb25zKSB7XG4gICAgaWYgKFxuICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHVzZXJBY3Rpb25zLCBrZXkpICYmXG4gICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYWN0aW9ucywga2V5KVxuICAgICkge1xuICAgICAgb3ZlcnJpZGVzW2tleV0gPSB1c2VyQWN0aW9uc1trZXldO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7Li4uYWN0aW9ucywgLi4ub3ZlcnJpZGVzfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgS2VwbGVyR2xGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksaUJBQUEsR0FBQUwsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLFNBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLGdCQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxVQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxhQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxRQUFBLEdBQUFULE9BQUE7QUFTQSxJQUFBVSxRQUFBLEdBQUFWLE9BQUE7QUFRQSxJQUFBVyxZQUFBLEdBQUFYLE9BQUE7QUFFQSxJQUFBWSxrQkFBQSxHQUFBWixPQUFBO0FBVUEsSUFBQWEsVUFBQSxHQUFBYixPQUFBO0FBVUEsSUFBQWMsVUFBQSxHQUFBWixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQWUs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
574
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY29uc29sZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVkdXgiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9yZXNlbGVjdCIsIl9rZXBsZXJnbENvbm5lY3QiLCJfcmVhY3RJbnRsIiwiX2xvY2FsaXphdGlvbiIsIl9jb250ZXh0IiwiX2FjdGlvbnMiLCJfY29tbW9uVXRpbHMiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfY29uc3RhbnRzIiwiX3NpZGVQYW5lbCIsIl9tYXBDb250YWluZXIyIiwiX21hcHNMYXlvdXQiLCJfYm90dG9tV2lkZ2V0IiwiX21vZGFsQ29udGFpbmVyIiwiX3Bsb3RDb250YWluZXIiLCJfbm90aWZpY2F0aW9uUGFuZWwiLCJfZ2VvY29kZXJQYW5lbCIsIl9lZmZlY3RNYW5hZ2VyIiwiX2RuZENvbnRleHQiLCJfdXNlQ2xvdWRMaXN0UHJvdmlkZXIiLCJfdXRpbHMiLCJfc3R5bGVzIiwiX3RlbXBsYXRlT2JqZWN0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mMyIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9jYWxsU3VwZXIiLCJvIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJhcHBseSIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiR2xvYmFsU3R5bGUiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJmb250RmFtaWx5IiwiZm9udFdlaWdodCIsImZvbnRTaXplIiwibGluZUhlaWdodCIsImxhYmVsQ29sb3IiLCJCb3R0b21XaWRnZXRPdXRlciIsIl9yZWYiLCJhYnNvbHV0ZSIsImNvbmNhdCIsImlzVmlld3BvcnREaXNqb2ludGVkIiwiZXhwb3J0cyIsIm1hcFN0YXRlIiwiaXNTcGxpdCIsImlzVmlld3BvcnRTeW5jZWQiLCJzcGxpdE1hcFZpZXdwb3J0cyIsIm1hcFN0YXRlU2VsZWN0b3IiLCJpbmRleCIsIk51bWJlciIsImlzRmluaXRlIiwibWFwRmllbGRzU2VsZWN0b3IiLCJ1bmRlZmluZWQiLCJnZXRNYXBib3hSZWYiLCJtYXBib3hBcGlBY2Nlc3NUb2tlbiIsIm1hcGJveEFwaVVybCIsIkRFRkFVTFRfS0VQTEVSX0dMX1BST1BTIiwiZGF0YXNldEF0dHJpYnV0aW9ucyIsImF0dHJpYnV0aW9uU2VsZWN0b3IiLCJzb3VyY2VzIiwibWFwU3R5bGUiLCJvbkRlY2tJbml0aWFsaXplZCIsIm9uVmlld1N0YXRlQ2hhbmdlIiwib25Nb3VzZU1vdmUiLCJkZWNrR2xQcm9wcyIsInVpU3RhdGVBY3Rpb25zIiwidmlzU3RhdGVBY3Rpb25zIiwibWFwU3RhdGVBY3Rpb25zIiwidmlzU3RhdGUiLCJhY3RpdmVTaWRlUGFuZWwiLCJ1aVN0YXRlIiwibWFwQ29udHJvbHMiLCJyZWFkT25seSIsImxvY2FsZSIsImlzTG9hZGluZ0luZGljYXRvclZpc2libGUiLCJsb2FkaW5nSW5kaWNhdG9yVmFsdWUiLCJzaWRlUGFuZWxXaWR0aCIsIndpZHRoIiwidG9wTWFwQ29udGFpbmVyUHJvcHMiLCJib3R0b21NYXBDb250YWluZXJQcm9wcyIsInRyYW5zZm9ybVJlcXVlc3QiLCJnZXRWaXNpYmxlRGF0YXNldHMiLCJkYXRhc2V0cyIsImZpbHRlck9iamVjdEJ5UHJlZGljYXRlIiwia2V5IiwiR0VPQ09ERVJfREFUQVNFVF9OQU1FIiwic2lkZVBhbmVsU2VsZWN0b3IiLCJhdmFpbGFibGVQcm92aWRlcnMiLCJmaWx0ZXJlZERhdGFzZXRzIiwiYXBwTmFtZSIsInZlcnNpb24iLCJhcHBXZWJzaXRlIiwib25TYXZlTWFwIiwibWFwU3R5bGVBY3Rpb25zIiwiZmlsdGVycyIsImxheWVycyIsImxheWVyT3JkZXIiLCJsYXllckNsYXNzZXMiLCJpbnRlcmFjdGlvbkNvbmZpZyIsIm1hcEluZm8iLCJsYXllckJsZW5kaW5nIiwib3ZlcmxheUJsZW5kaW5nIiwibWFwU2F2ZWQiLCJwcm92aWRlclN0YXRlIiwicGxvdENvbnRhaW5lclNlbGVjdG9yIiwiaGVpZ2h0IiwiZXhwb3J0SW1hZ2VTZXR0aW5nIiwiZXhwb3J0SW1hZ2UiLCJtYXBGaWVsZHMiLCJhZGROb3RpZmljYXRpb24iLCJzZXRFeHBvcnRJbWFnZVNldHRpbmciLCJzZXRFeHBvcnRJbWFnZURhdGFVcmkiLCJzZXRFeHBvcnRJbWFnZUVycm9yIiwic3BsaXRNYXBzIiwiaXNTcGxpdFNlbGVjdG9yIiwiYm90dG9tV2lkZ2V0U2VsZWN0b3IiLCJhbmltYXRpb25Db25maWciLCJ0b2dnbGVNb2RhbCIsInNpZGVQYW5lbCIsIm1hcmdpbiIsImxlZnQiLCJtb2RhbENvbnRhaW5lclNlbGVjdG9yIiwicm9vdE5vZGUiLCJwcm92aWRlckFjdGlvbnMiLCJjbG91ZFByb3ZpZGVycyIsIm9uRXhwb3J0VG9DbG91ZFN1Y2Nlc3MiLCJvbkxvYWRDbG91ZE1hcFN1Y2Nlc3MiLCJvbkxvYWRDbG91ZE1hcEVycm9yIiwib25FeHBvcnRUb0Nsb3VkRXJyb3IiLCJnZW9Db2RlclBhbmVsU2VsZWN0b3IiLCJkaW1lbnNpb25zIiwiaXNHZW9jb2RlckVuYWJsZWQiLCJnZW9jb2RlciIsImVuYWJsZWQiLCJ1cGRhdGVWaXNEYXRhIiwicmVtb3ZlRGF0YXNldCIsInVwZGF0ZU1hcCIsImFwcFdpZHRoIiwiZGF0YXNldEF0dHJpYnV0aW9uU2VsZWN0b3IiLCJjcmVhdGVTZWxlY3RvciIsInN0YXRlIiwidW5pcXVlQXR0cmlidXRpb25zIiwiX2RzJG1ldGFkYXRhIiwiZHMiLCJhdHRyaWJ1dGlvbnMiLCJtZXRhZGF0YSIsIkFycmF5IiwiaXNBcnJheSIsImF0dHJpYnV0aW9uIiwibGlua3MiLCJtYXRjaCIsImxpbmsiLCJfbGluayRtYXRjaCIsIl9saW5rJG1hdGNoMiIsImhyZWYiLCJ0aXRsZSIsImluZGV4T2YiLCJ1cmwiLCJlcnJvciIsInVuaXF1ZVRleHRBdHRyaWJ1dGlvbnMiLCJsb2dvcyIsIm5vdGlmaWNhdGlvblBhbmVsU2VsZWN0b3IiLCJyZW1vdmVOb3RpZmljYXRpb24iLCJub3RpZmljYXRpb25zIiwibWFwU3R5bGVzIiwibWFwU3R5bGVzUmVwbGFjZURlZmF1bHQiLCJERUZBVUxUX01BUEJPWF9BUElfVVJMIiwiS0VQTEVSX0dMX05BTUUiLCJLRVBMRVJfR0xfVkVSU0lPTiIsIkRJTUVOU0lPTlMiLCJmZWF0dXJlRmxhZ3MiLCJLZXBsZXJHbEZhY3RvcnkiLCJkZXBzIiwiQm90dG9tV2lkZ2V0RmFjdG9yeSIsIkdlb0NvZGVyUGFuZWxGYWN0b3J5IiwiTWFwQ29udGFpbmVyRmFjdG9yeSIsIk1hcHNMYXlvdXRGYWN0b3J5IiwiTW9kYWxDb250YWluZXJGYWN0b3J5IiwiU2lkZVBhbmVsRmFjdG9yeSIsIlBsb3RDb250YWluZXJGYWN0b3J5IiwiTm90aWZpY2F0aW9uUGFuZWxGYWN0b3J5IiwiRG5kQ29udGV4dEZhY3RvcnkiLCJFZmZlY3RNYW5hZ2VyRmFjdG9yeSIsIkJvdHRvbVdpZGdldCIsIkdlb0NvZGVyUGFuZWwiLCJNYXBDb250YWluZXIiLCJNYXBzTGF5b3V0IiwiTW9kYWxDb250YWluZXIiLCJTaWRlUGFuZWwiLCJQbG90Q29udGFpbmVyIiwiTm90aWZpY2F0aW9uUGFuZWwiLCJEbmRDb250ZXh0IiwiS2VwbGVyR0wiLCJfQ29tcG9uZW50IiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2xlbiIsImFyZ3MiLCJfa2V5Iiwic2V0U3RhdGUiLCJjcmVhdGVSZWYiLCJ0aGVtZVNlbGVjdG9yIiwiX3R5cGVvZjIiLCJiYXNpY1RoZW1lIiwiVEhFTUUiLCJsaWdodCIsInRoZW1lTFQiLCJiYXNlIiwidGhlbWVCUyIsImRhdGFzZXRzU2VsZWN0b3IiLCJwcm92aWRlcnMiLCJoYXNTdG9yYWdlIiwic29tZSIsInAiLCJoYXNQcml2YXRlU3RvcmFnZSIsImhhc1NoYXJlIiwiaGFzU2hhcmluZ1VybCIsImxvY2FsZU1lc3NhZ2VzIiwiY3VzdG9tTWVzc2FnZXMiLCJtZXJnZU1lc3NhZ2VzIiwibWVzc2FnZXMiLCJkZWZhdWx0U3R5bGVzIiwidmFsdWVzIiwiY3VzdG9tU3R5bGVzIiwibWFwIiwibXMiLCJpZCIsImdlbmVyYXRlSGFzaElkIiwiYWxsU3R5bGVzIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsInJlZHVjZSIsImFjY3UiLCJzdHlsZSIsImxvYWRNYXBTdHlsZXMiLCJjb250YWluZXJJZCIsImxheWVySWQiLCJ0b2dnbGVMYXllckZvck1hcCIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwidmFsdWUiLCJjb21wb25lbnREaWRNb3VudCIsIl9nZXRBcHBsaWNhdGlvbkNvbmZpZyIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwiYmFzZU1hcExpYnJhcnlDb25maWciLCJtYXBMaWJOYW1lIiwiX3ZhbGlkYXRlTWFwYm94VG9rZW4iLCJfbG9hZE1hcFN0eWxlIiwib25LZXBsZXJHbEluaXRpYWxpemVkIiwicm9vdCIsImN1cnJlbnQiLCJIVE1MRWxlbWVudCIsIm9ic2VydmVEaW1lbnNpb25zIiwiX2hhbmRsZVJlc2l6ZSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwidW5vYnNlcnZlRGltZW5zaW9ucyIsInZhbGlkYXRlVG9rZW4iLCJDb25zb2xlIiwid2FybiIsIk1JU1NJTkdfTUFQQk9YX1RPS0VOIiwicmVuZGVyIiwiX3RoaXMyIiwiX3RoaXMkcHJvcHMiLCJfdGhpcyRwcm9wcyRpZCIsIl90aGlzJHByb3BzJHdpZHRoIiwiX3RoaXMkcHJvcHMkaGVpZ2h0IiwiX3RoaXMkcHJvcHMkY2xvdWRQcm92IiwiYXZhaWxhYmxlVGhlbWVTZWxlY3RvciIsImxvY2FsZU1lc3NhZ2VzU2VsZWN0b3IiLCJpc0V4cG9ydGluZ0ltYWdlIiwiZXhwb3J0aW5nIiwiZmlsdGVyZWREYXRhc2V0c1NlbGVjdG9yIiwic2lkZUZpZWxkcyIsInBsb3RDb250YWluZXJGaWVsZHMiLCJib3R0b21XaWRnZXRGaWVsZHMiLCJtb2RhbENvbnRhaW5lckZpZWxkcyIsImdlb0NvZGVyUGFuZWxGaWVsZHMiLCJub3RpZmljYXRpb25QYW5lbEZpZWxkcyIsIm1hcENvbnRhaW5lcnMiLCJjcmVhdGVFbGVtZW50IiwiX2V4dGVuZHMyIiwicHJpbWFyeSIsImRlbGV0ZU1hcExhYmVscyIsIl9kZWxldGVNYXBMYWJlbHMiLCJzZXR0aW5ncyIsIlJvb3RDb250ZXh0IiwiUHJvdmlkZXIiLCJGZWF0dXJlRmxhZ3NDb250ZXh0UHJvdmlkZXIiLCJJbnRsUHJvdmlkZXIiLCJTdHlsZVNoZWV0TWFuYWdlciIsInNob3VsZEZvcndhcmRQcm9wIiwiVGhlbWVQcm92aWRlciIsIkNsb3VkTGlzdFByb3ZpZGVyIiwiY2xhc3NOYW1lIiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJwb3NpdGlvbiIsInJlZiIsInVuc3luY2VkVmlld3BvcnRzIiwiX21hcENvbnRhaW5lciIsImhhc1BvcnRhYmxlV2lkdGgiLCJicmVha1BvaW50VmFsdWVzIiwicm9vdFJlZiIsImJvdHRvbVdpZGdldFJlZiIsImNvbnRhaW5lclciLCJjb250YWluZXJIIiwiQ29tcG9uZW50Iiwia2VwbGVyR2xDb25uZWN0IiwibWFwU3RhdGVUb1Byb3BzIiwibWFrZU1hcERpc3BhdGNoVG9Qcm9wcyIsIndpdGhUaGVtZSIsImRlZmF1bHRVc2VyQWN0aW9ucyIsImdldERpc3BhdGNoIiwiZGlzcGF0Y2giLCJnZXRVc2VyQWN0aW9ucyIsImFjdGlvbnMiLCJtYWtlR2V0QWN0aW9uQ3JlYXRvcnMiLCJ1c2VyQWN0aW9ucyIsIl9tYXAiLCJWaXNTdGF0ZUFjdGlvbnMiLCJNYXBTdGF0ZUFjdGlvbnMiLCJNYXBTdHlsZUFjdGlvbnMiLCJVSVN0YXRlQWN0aW9ucyIsIlByb3ZpZGVyQWN0aW9ucyIsImJpbmRBY3Rpb25DcmVhdG9ycyIsIm1lcmdlQWN0aW9ucyIsIl9tYXAyIiwiX3NsaWNlZFRvQXJyYXkyIiwiZ2V0QWN0aW9uQ3JlYXRvcnMiLCJtYXBEaXNwYXRjaFRvUHJvcHMiLCJvd25Qcm9wcyIsImdyb3VwZWRBY3Rpb25DcmVhdG9ycyIsIm92ZXJyaWRlcyIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vc3JjL2tlcGxlci1nbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBjcmVhdGVSZWYsIERpc3BhdGNofSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQ29uc29sZSBmcm9tICdnbG9iYWwvY29uc29sZSc7XG5pbXBvcnQge2JpbmRBY3Rpb25DcmVhdG9yc30gZnJvbSAncmVkdXgnO1xuaW1wb3J0IHN0eWxlZCwge3dpdGhUaGVtZSwgU3R5bGVTaGVldE1hbmFnZXIsIFRoZW1lUHJvdmlkZXJ9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7Y3JlYXRlU2VsZWN0b3J9IGZyb20gJ3Jlc2VsZWN0JztcbmltcG9ydCB7Y29ubmVjdCBhcyBrZXBsZXJHbENvbm5lY3R9IGZyb20gJy4vY29ubmVjdC9rZXBsZXJnbC1jb25uZWN0JztcbmltcG9ydCB7SW50bFByb3ZpZGVyfSBmcm9tICdyZWFjdC1pbnRsJztcbmltcG9ydCB7bWVzc2FnZXN9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcbmltcG9ydCB7Um9vdENvbnRleHQsIEZlYXR1cmVGbGFnc0NvbnRleHRQcm92aWRlciwgRmVhdHVyZUZsYWdzfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHtcbiAgQXR0cmlidXRpb25XaXRoU3R5bGUsXG4gIERhdGFzZXRBdHRyaWJ1dGlvbixcbiAgT25FcnJvckNhbGxCYWNrLFxuICBPblN1Y2Nlc3NDYWxsQmFjayxcbiAgVmlld3BvcnRcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmltcG9ydCB7XG4gIE1hcFN0YXRlQWN0aW9ucyxcbiAgTWFwU3R5bGVBY3Rpb25zLFxuICBQcm92aWRlckFjdGlvbnMsXG4gIFVJU3RhdGVBY3Rpb25zLFxuICBWaXNTdGF0ZUFjdGlvbnNcbn0gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcblxuaW1wb3J0IHtnZW5lcmF0ZUhhc2hJZH0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuXG5pbXBvcnQge3Nob3VsZEZvcndhcmRQcm9wfSBmcm9tICcuL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5cbnR5cGUgS2VwbGVyR2xBY3Rpb25zID0ge1xuICB2aXNTdGF0ZUFjdGlvbnM6IHR5cGVvZiBWaXNTdGF0ZUFjdGlvbnM7XG4gIG1hcFN0YXRlQWN0aW9uczogdHlwZW9mIE1hcFN0YXRlQWN0aW9ucztcbiAgbWFwU3R5bGVBY3Rpb25zOiB0eXBlb2YgTWFwU3R5bGVBY3Rpb25zO1xuICB1aVN0YXRlQWN0aW9uczogdHlwZW9mIFVJU3RhdGVBY3Rpb25zO1xuICBwcm92aWRlckFjdGlvbnM6IHR5cGVvZiBQcm92aWRlckFjdGlvbnM7XG59O1xuXG5pbXBvcnQge1xuICBESU1FTlNJT05TLFxuICBLRVBMRVJfR0xfTkFNRSxcbiAgS0VQTEVSX0dMX1ZFUlNJT04sXG4gIFRIRU1FLFxuICBERUZBVUxUX01BUEJPWF9BUElfVVJMLFxuICBHRU9DT0RFUl9EQVRBU0VUX05BTUUsXG4gIE1JU1NJTkdfTUFQQk9YX1RPS0VOXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuaW1wb3J0IFNpZGVQYW5lbEZhY3RvcnkgZnJvbSAnLi9zaWRlLXBhbmVsJztcbmltcG9ydCBNYXBDb250YWluZXJGYWN0b3J5IGZyb20gJy4vbWFwLWNvbnRhaW5lcic7XG5pbXBvcnQgTWFwc0xheW91dEZhY3RvcnkgZnJvbSAnLi9tYXBzLWxheW91dCc7XG5pbXBvcnQgQm90dG9tV2lkZ2V0RmFjdG9yeSBmcm9tICcuL2JvdHRvbS13aWRnZXQnO1xuaW1wb3J0IE1vZGFsQ29udGFpbmVyRmFjdG9yeSBmcm9tICcuL21vZGFsLWNvbnRhaW5lcic7XG5pbXBvcnQgUGxvdENvbnRhaW5lckZhY3RvcnkgZnJvbSAnLi9wbG90LWNvbnRhaW5lcic7XG5pbXBvcnQgTm90aWZpY2F0aW9uUGFuZWxGYWN0b3J5IGZyb20gJy4vbm90aWZpY2F0aW9uLXBhbmVsJztcbmltcG9ydCBHZW9Db2RlclBhbmVsRmFjdG9yeSBmcm9tICcuL2dlb2NvZGVyLXBhbmVsJztcbmltcG9ydCBFZmZlY3RNYW5hZ2VyRmFjdG9yeSBmcm9tICcuL2VmZmVjdHMvZWZmZWN0LW1hbmFnZXInO1xuaW1wb3J0IERuZENvbnRleHRGYWN0b3J5IGZyb20gJy4vZG5kLWNvbnRleHQnO1xuaW1wb3J0IHtDbG91ZExpc3RQcm92aWRlcn0gZnJvbSAnLi9ob29rcy91c2UtY2xvdWQtbGlzdC1wcm92aWRlcic7XG5cbmltcG9ydCB7XG4gIGZpbHRlck9iamVjdEJ5UHJlZGljYXRlLFxuICB2YWxpZGF0ZVRva2VuLFxuICBtZXJnZU1lc3NhZ2VzLFxuICBvYnNlcnZlRGltZW5zaW9ucyxcbiAgdW5vYnNlcnZlRGltZW5zaW9ucyxcbiAgaGFzUG9ydGFibGVXaWR0aCxcbiAgZ2V0QXBwbGljYXRpb25Db25maWdcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmltcG9ydCB7dGhlbWUgYXMgYmFzaWNUaGVtZSwgdGhlbWVMVCwgdGhlbWVCUywgYnJlYWtQb2ludFZhbHVlc30gZnJvbSAnQGtlcGxlci5nbC9zdHlsZXMnO1xuaW1wb3J0IHtLZXBsZXJHbFN0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3JlZHVjZXJzJztcbmltcG9ydCB7UHJvdmlkZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvY2xvdWQtcHJvdmlkZXJzJztcblxuLy8gTWF5YmUgd2Ugc2hvdWxkIHRoaW5rIGFib3V0IGV4cG9ydGluZyB0aGlzIG9yIGNyZWF0aW5nIGEgdmFyaWFibGVcbi8vIGFzIHBhcnQgb2YgdGhlIGJhc2UuanMgdGhlbWVcbmNvbnN0IEdsb2JhbFN0eWxlID0gc3R5bGVkLmRpdmBcbiAgZm9udC1mYW1pbHk6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZm9udEZhbWlseX07XG4gIGZvbnQtd2VpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmZvbnRXZWlnaHR9O1xuICBmb250LXNpemU6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZm9udFNpemV9O1xuICBsaW5lLWhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5saW5lSGVpZ2h0fTtcblxuICAqLFxuICAqOmJlZm9yZSxcbiAgKjphZnRlciB7XG4gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG5cbiAgdWwge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgbGkge1xuICAgIG1hcmdpbjogMDtcbiAgfVxuXG4gIGEge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYWJlbENvbG9yfTtcbiAgfVxuXG4gIDpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC5tYXBsaWJyZWdsLWN0cmwgLm1hcGxpYnJlZ2wtY3RybC1sb2dvIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLm1hcGJveGdsLWN0cmwgLm1hcGJveGdsLWN0cmwtbG9nbyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuYDtcblxudHlwZSBCb3R0b21XaWRnZXRPdXRlclByb3BzID0ge1xuICBhYnNvbHV0ZT86IGJvb2xlYW47XG59O1xuXG5jb25zdCBCb3R0b21XaWRnZXRPdXRlciA9IHN0eWxlZC5kaXY8Qm90dG9tV2lkZ2V0T3V0ZXJQcm9wcz4oXG4gICh7YWJzb2x1dGV9KSA9PiBgXG4gICR7YWJzb2x1dGUgPyAncG9zaXRpb246IGFic29sdXRlOyBib3R0b206IDA7IHJpZ2h0OiAwOycgOiAnJ31cbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7IC8qIHByZXZlbnQgcGFkZGluZyBmcm9tIGJsb2NraW5nIGlucHV0ICovXG4gICYgPiAqIHtcbiAgICAvKiBhbGwgY2hpbGRyZW4gc2hvdWxkIGFsbG93IGlucHV0ICovXG4gICAgcG9pbnRlci1ldmVudHM6IGFsbDtcbiAgfWBcbik7XG5cbmV4cG9ydCBjb25zdCBpc1ZpZXdwb3J0RGlzam9pbnRlZCA9IHByb3BzID0+IHtcbiAgcmV0dXJuIChcbiAgICBwcm9wcy5tYXBTdGF0ZS5pc1NwbGl0ICYmXG4gICAgIXByb3BzLm1hcFN0YXRlLmlzVmlld3BvcnRTeW5jZWQgJiZcbiAgICBwcm9wcy5tYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5sZW5ndGggPiAxXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgbWFwU3RhdGVTZWxlY3RvciA9IChwcm9wczogYW55LCBpbmRleDogbnVtYmVyKTogYW55ID0+IHtcbiAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoaW5kZXgpKSB7XG4gICAgLy8gZWl0aGVyIG5vIGluZGV4IGFyZyBvciBhbiBpbnZhbGlkIGluZGV4IHdhcyBwcm92aWRlZFxuICAgIC8vIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGVpdGhlciAwIG9yIDEgd2hlbiBpbiBzcGxpdCBtb2RlXG4gICAgLy8gb25seSB1c2UgdGhlIG1hcFN0YXRlXG4gICAgcmV0dXJuIHByb3BzLm1hcFN0YXRlO1xuICB9XG5cbiAgcmV0dXJuIGlzVmlld3BvcnREaXNqb2ludGVkKHByb3BzKVxuICAgID8gLy8gbWl4IHRvZ2V0aGVyIHRoZSB2aWV3cG9ydCBwcm9wZXJ0aWVzIGludGVuZGVkIGZvciB0aGlzIGRpc2pvaW50ZWQgPE1hcENvbnRhaW5lcj4gd2l0aCB0aGUgb3RoZXIgbmVjZXNzYXJ5IG1hcFN0YXRlIHByb3BlcnRpZXNcbiAgICAgIHsuLi5wcm9wcy5tYXBTdGF0ZSwgLi4ucHJvcHMubWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHNbaW5kZXhdfVxuICAgIDogLy8gb3RoZXJ3aXNlIG9ubHkgdXNlIHRoZSBtYXBTdGF0ZVxuICAgICAgcHJvcHMubWFwU3RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgbWFwRmllbGRzU2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMsIGluZGV4ID0gMCkgPT4gKHtcbiAgZ2V0TWFwYm94UmVmOiBwcm9wcy5nZXRNYXBib3hSZWYsXG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBwcm9wcy5tYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgbWFwYm94QXBpVXJsOiBwcm9wcy5tYXBib3hBcGlVcmwgPyBwcm9wcy5tYXBib3hBcGlVcmwgOiBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy5tYXBib3hBcGlVcmwsXG4gIG1hcFN0YXRlOiBtYXBTdGF0ZVNlbGVjdG9yKHByb3BzLCBpbmRleCksXG4gIGRhdGFzZXRBdHRyaWJ1dGlvbnM6IGF0dHJpYnV0aW9uU2VsZWN0b3IocHJvcHMpLnNvdXJjZXMsXG4gIG1hcFN0eWxlOiBwcm9wcy5tYXBTdHlsZSxcbiAgb25EZWNrSW5pdGlhbGl6ZWQ6IHByb3BzLm9uRGVja0luaXRpYWxpemVkLFxuICBvblZpZXdTdGF0ZUNoYW5nZTogcHJvcHMub25WaWV3U3RhdGVDaGFuZ2UsXG4gIG9uTW91c2VNb3ZlOiBwcm9wcy5vbk1vdXNlTW92ZSxcbiAgZGVja0dsUHJvcHM6IHByb3BzLmRlY2tHbFByb3BzLFxuICB1aVN0YXRlQWN0aW9uczogcHJvcHMudWlTdGF0ZUFjdGlvbnMsXG4gIHZpc1N0YXRlQWN0aW9uczogcHJvcHMudmlzU3RhdGVBY3Rpb25zLFxuICBtYXBTdGF0ZUFjdGlvbnM6IHByb3BzLm1hcFN0YXRlQWN0aW9ucyxcblxuICAvLyB2aXNTdGF0ZVxuICB2aXNTdGF0ZTogcHJvcHMudmlzU3RhdGUsXG5cbiAgLy8gdWlTdGF0ZVxuICBhY3RpdmVTaWRlUGFuZWw6IHByb3BzLnVpU3RhdGUuYWN0aXZlU2lkZVBhbmVsLFxuICBtYXBDb250cm9sczogcHJvcHMudWlTdGF0ZS5tYXBDb250cm9scyxcbiAgcmVhZE9ubHk6IHByb3BzLnVpU3RhdGUucmVhZE9ubHksXG4gIGxvY2FsZTogcHJvcHMudWlTdGF0ZS5sb2NhbGUsXG4gIGlzTG9hZGluZ0luZGljYXRvclZpc2libGU6IE51bWJlcihwcm9wcy52aXNTdGF0ZS5sb2FkaW5nSW5kaWNhdG9yVmFsdWUpID4gMCxcbiAgc2lkZVBhbmVsV2lkdGg6IHByb3BzLnNpZGVQYW5lbFdpZHRoID8gcHJvcHMuc2lkZVBhbmVsV2lkdGggOiBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy53aWR0aCxcblxuICAvLyBtYXBTdHlsZVxuICB0b3BNYXBDb250YWluZXJQcm9wczogcHJvcHMudG9wTWFwQ29udGFpbmVyUHJvcHMsXG4gIGJvdHRvbU1hcENvbnRhaW5lclByb3BzOiBwcm9wcy5ib3R0b21NYXBDb250YWluZXJQcm9wcyxcblxuICAvLyB0cmFuc2Zvcm1SZXF1ZXN0IGZvciBNYXBib3ggYmFzZW1hcHNcbiAgdHJhbnNmb3JtUmVxdWVzdDogcHJvcHMudHJhbnNmb3JtUmVxdWVzdFxufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaXNpYmxlRGF0YXNldHMoZGF0YXNldHMpIHtcbiAgLy8gV2UgZG9uJ3Qgd2FudCBHZW9jb2RlciBkYXRhc2V0IHRvIGJlIHByZXNlbnQgaW4gU2lkZVBhbmVsIGRhdGFzZXQgbGlzdFxuICByZXR1cm4gZmlsdGVyT2JqZWN0QnlQcmVkaWNhdGUoZGF0YXNldHMsIGtleSA9PiBrZXkgIT09IEdFT0NPREVSX0RBVEFTRVRfTkFNRSk7XG59XG5cbmV4cG9ydCBjb25zdCBzaWRlUGFuZWxTZWxlY3RvciA9IChwcm9wczogS2VwbGVyR0xQcm9wcywgYXZhaWxhYmxlUHJvdmlkZXJzLCBmaWx0ZXJlZERhdGFzZXRzKSA9PiAoe1xuICBhcHBOYW1lOiBwcm9wcy5hcHBOYW1lID8gcHJvcHMuYXBwTmFtZSA6IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTLmFwcE5hbWUsXG4gIHZlcnNpb246IHByb3BzLnZlcnNpb24gPyBwcm9wcy52ZXJzaW9uIDogREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMudmVyc2lvbixcbiAgYXBwV2Vic2l0ZTogcHJvcHMuYXBwV2Vic2l0ZSxcbiAgbWFwU3R5bGU6IHByb3BzLm1hcFN0eWxlLFxuICBvblNhdmVNYXA6IHByb3BzLm9uU2F2ZU1hcCxcbiAgdWlTdGF0ZTogcHJvcHMudWlTdGF0ZSxcbiAgbWFwU3R5bGVBY3Rpb25zOiBwcm9wcy5tYXBTdHlsZUFjdGlvbnMsXG4gIHZpc1N0YXRlQWN0aW9uczogcHJvcHMudmlzU3RhdGVBY3Rpb25zLFxuICB1aVN0YXRlQWN0aW9uczogcHJvcHMudWlTdGF0ZUFjdGlvbnMsXG4gIG1hcFN0YXRlQWN0aW9uczogcHJvcHMubWFwU3RhdGVBY3Rpb25zLFxuXG4gIGRhdGFzZXRzOiBmaWx0ZXJlZERhdGFzZXRzLFxuICBmaWx0ZXJzOiBwcm9wcy52aXNTdGF0ZS5maWx0ZXJzLFxuICBsYXllcnM6IHByb3BzLnZpc1N0YXRlLmxheWVycyxcbiAgbGF5ZXJPcmRlcjogcHJvcHMudmlzU3RhdGUubGF5ZXJPcmRlcixcbiAgbGF5ZXJDbGFzc2VzOiBwcm9wcy52aXNTdGF0ZS5sYXllckNsYXNzZXMsXG4gIGludGVyYWN0aW9uQ29uZmlnOiBwcm9wcy52aXNTdGF0ZS5pbnRlcmFjdGlvbkNvbmZpZyxcbiAgbWFwSW5mbzogcHJvcHMudmlzU3RhdGUubWFwSW5mbyxcbiAgbGF5ZXJCbGVuZGluZzogcHJvcHMudmlzU3RhdGUubGF5ZXJCbGVuZGluZyxcbiAgb3ZlcmxheUJsZW5kaW5nOiBwcm9wcy52aXNTdGF0ZS5vdmVybGF5QmxlbmRpbmcsXG5cbiAgd2lkdGg6IHByb3BzLnNpZGVQYW5lbFdpZHRoID8gcHJvcHMuc2lkZVBhbmVsV2lkdGggOiBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy53aWR0aCxcbiAgYXZhaWxhYmxlUHJvdmlkZXJzLFxuICBtYXBTYXZlZDogcHJvcHMucHJvdmlkZXJTdGF0ZS5tYXBTYXZlZFxufSk7XG5cbmV4cG9ydCBjb25zdCBwbG90Q29udGFpbmVyU2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMpID0+ICh7XG4gIHdpZHRoOiBwcm9wcy53aWR0aCxcbiAgaGVpZ2h0OiBwcm9wcy5oZWlnaHQsXG4gIGV4cG9ydEltYWdlU2V0dGluZzogcHJvcHMudWlTdGF0ZS5leHBvcnRJbWFnZSxcbiAgbWFwRmllbGRzOiBtYXBGaWVsZHNTZWxlY3Rvcihwcm9wcyksXG4gIGFkZE5vdGlmaWNhdGlvbjogcHJvcHMudWlTdGF0ZUFjdGlvbnMuYWRkTm90aWZpY2F0aW9uLFxuICBzZXRFeHBvcnRJbWFnZVNldHRpbmc6IHByb3BzLnVpU3RhdGVBY3Rpb25zLnNldEV4cG9ydEltYWdlU2V0dGluZyxcbiAgc2V0RXhwb3J0SW1hZ2VEYXRhVXJpOiBwcm9wcy51aVN0YXRlQWN0aW9ucy5zZXRFeHBvcnRJbWFnZURhdGFVcmksXG4gIHNldEV4cG9ydEltYWdlRXJyb3I6IHByb3BzLnVpU3RhdGVBY3Rpb25zLnNldEV4cG9ydEltYWdlRXJyb3IsXG4gIHNwbGl0TWFwczogcHJvcHMudmlzU3RhdGUuc3BsaXRNYXBzXG59KTtcblxuZXhwb3J0IGNvbnN0IGlzU3BsaXRTZWxlY3RvciA9IChwcm9wczogS2VwbGVyR0xQcm9wcykgPT5cbiAgcHJvcHMudmlzU3RhdGUuc3BsaXRNYXBzICYmIHByb3BzLnZpc1N0YXRlLnNwbGl0TWFwcy5sZW5ndGggPiAxO1xuXG5leHBvcnQgY29uc3QgYm90dG9tV2lkZ2V0U2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMsIHRoZW1lKSA9PiAoe1xuICBmaWx0ZXJzOiBwcm9wcy52aXNTdGF0ZS5maWx0ZXJzLFxuICBkYXRhc2V0czogcHJvcHMudmlzU3RhdGUuZGF0YXNldHMsXG4gIHVpU3RhdGU6IHByb3BzLnVpU3RhdGUsXG4gIGxheWVyczogcHJvcHMudmlzU3RhdGUubGF5ZXJzLFxuICBhbmltYXRpb25Db25maWc6IHByb3BzLnZpc1N0YXRlLmFuaW1hdGlvbkNvbmZpZyxcbiAgdmlzU3RhdGVBY3Rpb25zOiBwcm9wcy52aXNTdGF0ZUFjdGlvbnMsXG4gIHRvZ2dsZU1vZGFsOiBwcm9wcy51aVN0YXRlQWN0aW9ucy50b2dnbGVNb2RhbCxcbiAgc2lkZVBhbmVsV2lkdGg6IHByb3BzLnVpU3RhdGUucmVhZE9ubHkgPyAwIDogcHJvcHMuc2lkZVBhbmVsV2lkdGggKyB0aGVtZS5zaWRlUGFuZWwubWFyZ2luLmxlZnRcbn0pO1xuXG5leHBvcnQgY29uc3QgbW9kYWxDb250YWluZXJTZWxlY3RvciA9IChwcm9wczogS2VwbGVyR0xQcm9wcywgcm9vdE5vZGUpID0+ICh7XG4gIGFwcE5hbWU6IHByb3BzLmFwcE5hbWUgPyBwcm9wcy5hcHBOYW1lIDogREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMuYXBwTmFtZSxcbiAgbWFwU3R5bGU6IHByb3BzLm1hcFN0eWxlLFxuICB2aXNTdGF0ZTogcHJvcHMudmlzU3RhdGUsXG4gIG1hcFN0YXRlOiBwcm9wcy5tYXBTdGF0ZSxcbiAgdWlTdGF0ZTogcHJvcHMudWlTdGF0ZSxcbiAgcHJvdmlkZXJTdGF0ZTogcHJvcHMucHJvdmlkZXJTdGF0ZSxcblxuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogcHJvcHMubWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gIG1hcGJveEFwaVVybDogcHJvcHMubWFwYm94QXBpVXJsLFxuICB2aXNTdGF0ZUFjdGlvbnM6IHByb3BzLnZpc1N0YXRlQWN0aW9ucyxcbiAgdWlTdGF0ZUFjdGlvbnM6IHByb3BzLnVpU3RhdGVBY3Rpb25zLFxuICBtYXBTdHlsZUFjdGlvbnM6IHByb3BzLm1hcFN0eWxlQWN0aW9ucyxcbiAgcHJvdmlkZXJBY3Rpb25zOiBwcm9wcy5wcm92aWRlckFjdGlvbnMsXG5cbiAgcm9vdE5vZGUsXG4gIC8vIFVzZXIgZGVmaW5lZCBjbG91ZCBwcm92aWRlciBwcm9wc1xuICBjbG91ZFByb3ZpZGVyczogcHJvcHMuY2xvdWRQcm92aWRlcnNcbiAgICA/IHByb3BzLmNsb3VkUHJvdmlkZXJzXG4gICAgOiBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy5jbG91ZFByb3ZpZGVycyxcbiAgb25FeHBvcnRUb0Nsb3VkU3VjY2VzczogcHJvcHMub25FeHBvcnRUb0Nsb3VkU3VjY2VzcyxcbiAgb25Mb2FkQ2xvdWRNYXBTdWNjZXNzOiBwcm9wcy5vbkxvYWRDbG91ZE1hcFN1Y2Nlc3MsXG4gIG9uTG9hZENsb3VkTWFwRXJyb3I6IHByb3BzLm9uTG9hZENsb3VkTWFwRXJyb3IsXG4gIG9uRXhwb3J0VG9DbG91ZEVycm9yOiBwcm9wcy5vbkV4cG9ydFRvQ2xvdWRFcnJvclxufSk7XG5cbmV4cG9ydCBjb25zdCBnZW9Db2RlclBhbmVsU2VsZWN0b3IgPSAoXG4gIHByb3BzOiBLZXBsZXJHTFByb3BzLFxuICBkaW1lbnNpb25zOiB7d2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXJ9XG4pID0+ICh7XG4gIGlzR2VvY29kZXJFbmFibGVkOiBwcm9wcy52aXNTdGF0ZS5pbnRlcmFjdGlvbkNvbmZpZy5nZW9jb2Rlci5lbmFibGVkLFxuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogcHJvcHMubWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gIG1hcFN0YXRlOiBwcm9wcy5tYXBTdGF0ZSxcbiAgdWlTdGF0ZTogcHJvcHMudWlTdGF0ZSxcbiAgbGF5ZXJPcmRlcjogcHJvcHMudmlzU3RhdGUubGF5ZXJPcmRlcixcbiAgdXBkYXRlVmlzRGF0YTogcHJvcHMudmlzU3RhdGVBY3Rpb25zLnVwZGF0ZVZpc0RhdGEsXG4gIHJlbW92ZURhdGFzZXQ6IHByb3BzLnZpc1N0YXRlQWN0aW9ucy5yZW1vdmVEYXRhc2V0LFxuICB1cGRhdGVNYXA6IHByb3BzLm1hcFN0YXRlQWN0aW9ucy51cGRhdGVNYXAsXG4gIGFwcFdpZHRoOiBkaW1lbnNpb25zLndpZHRoXG59KTtcblxuLyoqXG4gKiBSZXR1cm5zIGFycmF5IG9mIHVuaXF1ZSBkYXRhc2V0IGF0dHJpYnV0aW9ucywgZWFjaCB3aXRoIHRpdGxlIGFuZCB1cmwgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGRhdGFzZXRBdHRyaWJ1dGlvblNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gIFtzdGF0ZSA9PiBzdGF0ZS52aXNTdGF0ZS5kYXRhc2V0c10sXG4gIGRhdGFzZXRzID0+IHtcbiAgICBjb25zdCB1bmlxdWVBdHRyaWJ1dGlvbnM6IERhdGFzZXRBdHRyaWJ1dGlvbltdID0gW107XG4gICAgT2JqZWN0LmtleXMoZGF0YXNldHMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGNvbnN0IGRzID0gZGF0YXNldHNba2V5XTtcbiAgICAgIGNvbnN0IGF0dHJpYnV0aW9ucyA9IGRzPy5tZXRhZGF0YT8uYXR0cmlidXRpb25zO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYXR0cmlidXRpb25zKSkge1xuICAgICAgICBhdHRyaWJ1dGlvbnMuZm9yRWFjaChhdHRyaWJ1dGlvbiA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBhdHRyaWJ1dGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIC8vIGF0dHJpYnV0aW9uIGNhbiBiZSBhIHJhdyBzdHJpbmcgb3IgYSBzdHJpbmcgd2l0aCBsaW5rIHRhZ3NcbiAgICAgICAgICAgIGNvbnN0IGxpbmtzID0gYXR0cmlidXRpb24ubWF0Y2goLzxhW15dKz9hPi9nKTtcbiAgICAgICAgICAgIGlmIChsaW5rcykge1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxpbmtzPy5mb3JFYWNoKGxpbmsgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgaHJlZiA9IGxpbmsubWF0Y2goL2hyZWY9XCIoW15cIl0qKS8pPy5bMV07XG4gICAgICAgICAgICAgICAgICBjb25zdCB0aXRsZSA9IGxpbmsubWF0Y2goL3RpdGxlPVwiKFteXCJdKikvKT8uWzFdO1xuICAgICAgICAgICAgICAgICAgaWYgKGhyZWYgJiYgdGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdW5pcXVlQXR0cmlidXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBgJHtsaW5rLmluZGV4T2YoJyZjb3B5OycpID49IDAgPyAnwqkgJyA6ICcnfSR7dGl0bGV9YCxcbiAgICAgICAgICAgICAgICAgICAgICB1cmw6IGhyZWZcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgLy8ganVzdCBpZ25vcmUgZm9yIG5vd1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB1bmlxdWVBdHRyaWJ1dGlvbnMucHVzaCh7dGl0bGU6IGF0dHJpYnV0aW9uLCB1cmw6IG51bGx9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB1bmlxdWVBdHRyaWJ1dGlvbnM7XG4gIH1cbik7XG5cbi8qKlxuICogRGVkdXBsaWNhdGVkIGRhdGFzZXQgYW5kIGxheWVyIHRleHQgYXR0cmlidXRpb25zIGFuZCBsb2dvcy5cbiAqIFJldHVybnMgdGV4dCBhdHRyaWJ1dGlvbnMgYW5kIGxvZ29zIHRvIGRpc3BsYXkuXG4gKi9cbmV4cG9ydCBjb25zdCBhdHRyaWJ1dGlvblNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gIFtkYXRhc2V0QXR0cmlidXRpb25TZWxlY3Rvcl0sXG4gIGRhdGFzZXRBdHRyaWJ1dGlvbnMgPT4ge1xuICAgIC8vIFRPRE8gY29sbGVjdCBhdHRyaWJ1dGlvbnMgZnJvbSBsYXllcnMsIGFuZCBtZXJnZSB3aXRoIGRhdGFzZXQgYXR0cmlidXRpb25zIGhlcmVcbiAgICBjb25zdCB1bmlxdWVUZXh0QXR0cmlidXRpb25zID0gZGF0YXNldEF0dHJpYnV0aW9ucztcbiAgICBjb25zdCBsb2dvczogQXR0cmlidXRpb25XaXRoU3R5bGVbXSA9IFtdO1xuXG4gICAgcmV0dXJuIHtzb3VyY2VzOiB1bmlxdWVUZXh0QXR0cmlidXRpb25zLCBsb2dvc307XG4gIH1cbik7XG5cbmV4cG9ydCBjb25zdCBub3RpZmljYXRpb25QYW5lbFNlbGVjdG9yID0gKHByb3BzOiBLZXBsZXJHTFByb3BzKSA9PiAoe1xuICByZW1vdmVOb3RpZmljYXRpb246IHByb3BzLnVpU3RhdGVBY3Rpb25zLnJlbW92ZU5vdGlmaWNhdGlvbixcbiAgbm90aWZpY2F0aW9uczogcHJvcHMudWlTdGF0ZS5ub3RpZmljYXRpb25zXG59KTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTID0ge1xuICBtYXBTdHlsZXM6IFtdLFxuICBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdDogZmFsc2UsXG4gIG1hcGJveEFwaVVybDogREVGQVVMVF9NQVBCT1hfQVBJX1VSTCxcbiAgd2lkdGg6IDgwMCxcbiAgaGVpZ2h0OiA4MDAsXG4gIGFwcE5hbWU6IEtFUExFUl9HTF9OQU1FLFxuICB2ZXJzaW9uOiBLRVBMRVJfR0xfVkVSU0lPTixcbiAgc2lkZVBhbmVsV2lkdGg6IERJTUVOU0lPTlMuc2lkZVBhbmVsLndpZHRoLFxuICB0aGVtZToge30sXG4gIGNsb3VkUHJvdmlkZXJzOiBbXSxcbiAgcmVhZE9ubHk6IGZhbHNlLFxuICBmZWF0dXJlRmxhZ3M6IHt9XG59O1xuXG50eXBlIEtlcGxlckdMQmFzaWNQcm9wcyA9IHtcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW46IHN0cmluZztcbiAgbWFwYm94QXBpVXJsPzogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xuICB3aWR0aD86IG51bWJlcjtcbiAgaGVpZ2h0PzogbnVtYmVyO1xuXG4gIGFwcFdlYnNpdGU/OiBhbnk7XG4gIG9uU2F2ZU1hcD86ICgpID0+IHZvaWQ7XG4gIG9uVmlld1N0YXRlQ2hhbmdlPzogKHZpZXdTdGF0ZTogVmlld3BvcnQpID0+IHZvaWQ7XG4gIG9uRGVja0luaXRpYWxpemVkPzogKCkgPT4gdm9pZDtcbiAgb25LZXBsZXJHbEluaXRpYWxpemVkPzogKCkgPT4gdm9pZDtcbiAgZ2V0TWFwYm94UmVmPzogKCkgPT4gUmVhY3QuUmVmT2JqZWN0PGFueT47XG4gIG1hcFN0eWxlcz86IHtpZDogc3RyaW5nOyBzdHlsZT86IG9iamVjdH1bXTtcbiAgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQ/OiBib29sZWFuO1xuICBhcHBOYW1lPzogc3RyaW5nO1xuICB2ZXJzaW9uPzogc3RyaW5nO1xuICBzaWRlUGFuZWxXaWR0aD86IG51bWJlcjtcbiAgdGhlbWU/OiBvYmplY3Q7XG4gIGNsb3VkUHJvdmlkZXJzPzogUHJvdmlkZXJbXTtcbiAgZGVja0dsUHJvcHM/OiBvYmplY3Q7XG4gIG9uTG9hZENsb3VkTWFwU3VjY2Vzcz86IE9uU3VjY2Vzc0NhbGxCYWNrO1xuICBvbkxvYWRDbG91ZE1hcEVycm9yPzogT25FcnJvckNhbGxCYWNrO1xuICBvbk1vdXNlTW92ZT86IChldmVudDogUmVhY3QuTW91c2VFdmVudCAmIHtsbmdMYXQ/OiBbbnVtYmVyLCBudW1iZXJdfSkgPT4gdm9pZDtcbiAgb25FeHBvcnRUb0Nsb3VkU3VjY2Vzcz86IE9uU3VjY2Vzc0NhbGxCYWNrO1xuICBvbkV4cG9ydFRvQ2xvdWRFcnJvcj86IE9uRXJyb3JDYWxsQmFjaztcbiAgcmVhZE9ubHk/OiBib29sZWFuO1xuICBmZWF0dXJlRmxhZ3M/OiBGZWF0dXJlRmxhZ3M7XG5cbiAgbG9jYWxlTWVzc2FnZXM/OiB7W2tleTogc3RyaW5nXToge1trZXk6IHN0cmluZ106IHN0cmluZ319O1xuICBkaXNwYXRjaDogRGlzcGF0Y2g8YW55PjtcblxuICB0b3BNYXBDb250YWluZXJQcm9wcz86IG9iamVjdDtcbiAgYm90dG9tTWFwQ29udGFpbmVyUHJvcHM/OiBvYmplY3Q7XG5cbiAgdHJhbnNmb3JtUmVxdWVzdD86ICh1cmw6IHN0cmluZykgPT4ge3VybDogc3RyaW5nfTtcbn07XG5cbnR5cGUgS2VwbGVyR0xQcm9wcyA9IEtlcGxlckdsU3RhdGUgJiBLZXBsZXJHbEFjdGlvbnMgJiBLZXBsZXJHTEJhc2ljUHJvcHM7XG50eXBlIEtlcGxlckdMQ29tcFN0YXRlID0ge1xuICBkaW1lbnNpb25zOiB7d2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXJ9IHwgbnVsbDtcbn07XG5cbktlcGxlckdsRmFjdG9yeS5kZXBzID0gW1xuICBCb3R0b21XaWRnZXRGYWN0b3J5LFxuICBHZW9Db2RlclBhbmVsRmFjdG9yeSxcbiAgTWFwQ29udGFpbmVyRmFjdG9yeSxcbiAgTWFwc0xheW91dEZhY3RvcnksXG4gIE1vZGFsQ29udGFpbmVyRmFjdG9yeSxcbiAgU2lkZVBhbmVsRmFjdG9yeSxcbiAgUGxvdENvbnRhaW5lckZhY3RvcnksXG4gIE5vdGlmaWNhdGlvblBhbmVsRmFjdG9yeSxcbiAgRG5kQ29udGV4dEZhY3RvcnksXG4gIEVmZmVjdE1hbmFnZXJGYWN0b3J5XG5dO1xuXG5mdW5jdGlvbiBLZXBsZXJHbEZhY3RvcnkoXG4gIEJvdHRvbVdpZGdldDogUmV0dXJuVHlwZTx0eXBlb2YgQm90dG9tV2lkZ2V0RmFjdG9yeT4sXG4gIEdlb0NvZGVyUGFuZWw6IFJldHVyblR5cGU8dHlwZW9mIEdlb0NvZGVyUGFuZWxGYWN0b3J5PixcbiAgTWFwQ29udGFpbmVyOiBSZXR1cm5UeXBlPHR5cGVvZiBNYXBDb250YWluZXJGYWN0b3J5PixcbiAgTWFwc0xheW91dDogUmV0dXJuVHlwZTx0eXBlb2YgTWFwc0xheW91dEZhY3Rvcnk+LFxuICBNb2RhbENvbnRhaW5lcjogUmV0dXJuVHlwZTx0eXBlb2YgTW9kYWxDb250YWluZXJGYWN0b3J5PixcbiAgU2lkZVBhbmVsOiBSZXR1cm5UeXBlPHR5cGVvZiBTaWRlUGFuZWxGYWN0b3J5PixcbiAgUGxvdENvbnRhaW5lcjogUmV0dXJuVHlwZTx0eXBlb2YgUGxvdENvbnRhaW5lckZhY3Rvcnk+LFxuICBOb3RpZmljYXRpb25QYW5lbDogUmV0dXJuVHlwZTx0eXBlb2YgTm90aWZpY2F0aW9uUGFuZWxGYWN0b3J5PixcbiAgRG5kQ29udGV4dDogUmV0dXJuVHlwZTx0eXBlb2YgRG5kQ29udGV4dEZhY3Rvcnk+XG4pOiBSZWFjdC5Db21wb25lbnRUeXBlPEtlcGxlckdMQmFzaWNQcm9wcyAmIHtzZWxlY3RvcjogKC4uLmFyZ3M6IGFueVtdKSA9PiBLZXBsZXJHbFN0YXRlfT4ge1xuICAvKiogQHR5cGVkZWYge2ltcG9ydCgnLi9rZXBsZXItZ2wnKS5VbmNvbm5lY3RlZEtlcGxlckdsUHJvcHN9IEtlcGxlckdsUHJvcHMgKi9cbiAgLyoqIEBhdWdtZW50cyBSZWFjdC5Db21wb25lbnQ8S2VwbGVyR2xQcm9wcz4gKi9cbiAgY2xhc3MgS2VwbGVyR0wgZXh0ZW5kcyBDb21wb25lbnQ8XG4gICAgS2VwbGVyR0xQcm9wcyAmIHtzZWxlY3RvcjogKC4uLmFyZ3M6IGFueVtdKSA9PiBLZXBsZXJHbFN0YXRlfSxcbiAgICBLZXBsZXJHTENvbXBTdGF0ZVxuICA+IHtcbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID0gREVGQVVMVF9LRVBMRVJfR0xfUFJPUFM7XG5cbiAgICBzdGF0ZTogS2VwbGVyR0xDb21wU3RhdGUgPSB7XG4gICAgICBkaW1lbnNpb25zOiBudWxsXG4gICAgfTtcblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgaWYgKGdldEFwcGxpY2F0aW9uQ29uZmlnKCkuYmFzZU1hcExpYnJhcnlDb25maWc/LlsnbWFwYm94J10/Lm1hcExpYk5hbWUgPT09ICdNYXBib3gnKSB7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRlTWFwYm94VG9rZW4oKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2xvYWRNYXBTdHlsZSgpO1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLm9uS2VwbGVyR2xJbml0aWFsaXplZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLnByb3BzLm9uS2VwbGVyR2xJbml0aWFsaXplZCgpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucm9vdC5jdXJyZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgb2JzZXJ2ZURpbWVuc2lvbnModGhpcy5yb290LmN1cnJlbnQsIHRoaXMuX2hhbmRsZVJlc2l6ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICBpZiAodGhpcy5yb290LmN1cnJlbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICB1bm9ic2VydmVEaW1lbnNpb25zKHRoaXMucm9vdC5jdXJyZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfaGFuZGxlUmVzaXplID0gZGltZW5zaW9ucyA9PiB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtkaW1lbnNpb25zfSk7XG4gICAgfTtcblxuICAgIHN0YXRpYyBjb250ZXh0VHlwZSA9IFJvb3RDb250ZXh0O1xuXG4gICAgcm9vdCA9IGNyZWF0ZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcbiAgICBib3R0b21XaWRnZXRSZWYgPSBjcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG5cbiAgICAvKiBzZWxlY3RvcnMgKi9cbiAgICB0aGVtZVNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMudGhlbWU7XG4gICAgYXZhaWxhYmxlVGhlbWVTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKHRoaXMudGhlbWVTZWxlY3RvciwgdGhlbWUgPT5cbiAgICAgIHR5cGVvZiB0aGVtZSA9PT0gJ29iamVjdCdcbiAgICAgICAgPyB7XG4gICAgICAgICAgICAuLi5iYXNpY1RoZW1lLFxuICAgICAgICAgICAgLi4udGhlbWVcbiAgICAgICAgICB9XG4gICAgICAgIDogdGhlbWUgPT09IFRIRU1FLmxpZ2h0XG4gICAgICAgID8gdGhlbWVMVFxuICAgICAgICA6IHRoZW1lID09PSBUSEVNRS5iYXNlXG4gICAgICAgID8gdGhlbWVCU1xuICAgICAgICA6IHRoZW1lXG4gICAgKTtcblxuICAgIGRhdGFzZXRzU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy52aXNTdGF0ZS5kYXRhc2V0cztcbiAgICBmaWx0ZXJlZERhdGFzZXRzU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3Rvcih0aGlzLmRhdGFzZXRzU2VsZWN0b3IsIGdldFZpc2libGVEYXRhc2V0cyk7XG5cbiAgICBhdmFpbGFibGVQcm92aWRlcnMgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIChwcm9wczogS2VwbGVyR0xQcm9wcykgPT4gcHJvcHMuY2xvdWRQcm92aWRlcnMsXG4gICAgICBwcm92aWRlcnMgPT5cbiAgICAgICAgQXJyYXkuaXNBcnJheShwcm92aWRlcnMpICYmIHByb3ZpZGVycy5sZW5ndGhcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgaGFzU3RvcmFnZTogcHJvdmlkZXJzLnNvbWUocCA9PiBwLmhhc1ByaXZhdGVTdG9yYWdlKCkpLFxuICAgICAgICAgICAgICBoYXNTaGFyZTogcHJvdmlkZXJzLnNvbWUocCA9PiBwLmhhc1NoYXJpbmdVcmwoKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHt9XG4gICAgKTtcblxuICAgIGxvY2FsZU1lc3NhZ2VzU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIChwcm9wczogS2VwbGVyR0xQcm9wcykgPT4gcHJvcHMubG9jYWxlTWVzc2FnZXMsXG4gICAgICBjdXN0b21NZXNzYWdlcyA9PiAoY3VzdG9tTWVzc2FnZXMgPyBtZXJnZU1lc3NhZ2VzKG1lc3NhZ2VzLCBjdXN0b21NZXNzYWdlcykgOiBtZXNzYWdlcylcbiAgICApO1xuXG4gICAgLyogcHJpdmF0ZSBtZXRob2RzICovXG4gICAgX3ZhbGlkYXRlTWFwYm94VG9rZW4oKSB7XG4gICAgICBjb25zdCB7bWFwYm94QXBpQWNjZXNzVG9rZW59ID0gdGhpcy5wcm9wcztcbiAgICAgIGlmICghdmFsaWRhdGVUb2tlbihtYXBib3hBcGlBY2Nlc3NUb2tlbikpIHtcbiAgICAgICAgQ29uc29sZS53YXJuKE1JU1NJTkdfTUFQQk9YX1RPS0VOKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfbG9hZE1hcFN0eWxlID0gKCkgPT4ge1xuICAgICAgY29uc3QgZGVmYXVsdFN0eWxlcyA9IE9iamVjdC52YWx1ZXModGhpcy5wcm9wcy5tYXBTdHlsZS5tYXBTdHlsZXMpO1xuICAgICAgLy8gYWRkIGlkIHRvIGN1c3RvbSBtYXAgc3R5bGVzIGlmIG5vdCBnaXZlblxuICAgICAgY29uc3QgY3VzdG9tU3R5bGVzID0gKHRoaXMucHJvcHMubWFwU3R5bGVzIHx8IFtdKS5tYXAobXMgPT4gKHtcbiAgICAgICAgLi4ubXMsXG4gICAgICAgIGlkOiBtcy5pZCB8fCBnZW5lcmF0ZUhhc2hJZCgpXG4gICAgICB9KSk7XG5cbiAgICAgIGNvbnN0IGFsbFN0eWxlcyA9IFsuLi5jdXN0b21TdHlsZXMsIC4uLmRlZmF1bHRTdHlsZXNdLnJlZHVjZSgoYWNjdSwgc3R5bGUpID0+IHtcbiAgICAgICAgYWNjdVtzdHlsZS5pZF0gPSBzdHlsZTtcbiAgICAgICAgcmV0dXJuIGFjY3U7XG4gICAgICB9LCB7fSk7XG5cbiAgICAgIHRoaXMucHJvcHMubWFwU3R5bGVBY3Rpb25zLmxvYWRNYXBTdHlsZXMoYWxsU3R5bGVzKTtcbiAgICB9O1xuXG4gICAgX2RlbGV0ZU1hcExhYmVscyA9IChjb250YWluZXJJZCwgbGF5ZXJJZCkgPT4ge1xuICAgICAgdGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMudG9nZ2xlTGF5ZXJGb3JNYXAoY29udGFpbmVySWQsIGxheWVySWQpO1xuICAgIH07XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgaWQgPSAnbWFwJyxcbiAgICAgICAgd2lkdGggPSBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMuaGVpZ2h0LFxuICAgICAgICB1aVN0YXRlLFxuICAgICAgICB2aXNTdGF0ZSxcbiAgICAgICAgLy8gcmVhZE9ubHkgb3ZlcnJpZGVcbiAgICAgICAgcmVhZE9ubHksXG5cbiAgICAgICAgLy8gZmVhdHVyZXNcbiAgICAgICAgZmVhdHVyZUZsYWdzLFxuXG4gICAgICAgIC8vIGNsb3VkIHByb3ZpZGVyc1xuICAgICAgICBjbG91ZFByb3ZpZGVycyA9IFtdXG4gICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgY29uc3QgZGltZW5zaW9ucyA9IHRoaXMuc3RhdGUuZGltZW5zaW9ucyB8fCB7d2lkdGgsIGhlaWdodH07XG4gICAgICBjb25zdCB7XG4gICAgICAgIHNwbGl0TWFwcywgLy8gdGhpcyB3aWxsIHN0b3JlIHN1cHBvcnQgZm9yIHNwbGl0IG1hcCB2aWV3IGlzIG5lY2Vzc2FyeVxuICAgICAgICBpbnRlcmFjdGlvbkNvbmZpZ1xuICAgICAgfSA9IHZpc1N0YXRlO1xuXG4gICAgICBjb25zdCBpc1NwbGl0ID0gaXNTcGxpdFNlbGVjdG9yKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3QgdGhlbWUgPSB0aGlzLmF2YWlsYWJsZVRoZW1lU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBsb2NhbGVNZXNzYWdlcyA9IHRoaXMubG9jYWxlTWVzc2FnZXNTZWxlY3Rvcih0aGlzLnByb3BzKTtcbiAgICAgIGNvbnN0IGlzRXhwb3J0aW5nSW1hZ2UgPSB1aVN0YXRlLmV4cG9ydEltYWdlLmV4cG9ydGluZztcbiAgICAgIGNvbnN0IGF2YWlsYWJsZVByb3ZpZGVycyA9IHRoaXMuYXZhaWxhYmxlUHJvdmlkZXJzKHRoaXMucHJvcHMpO1xuXG4gICAgICBjb25zdCBmaWx0ZXJlZERhdGFzZXRzID0gdGhpcy5maWx0ZXJlZERhdGFzZXRzU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBzaWRlRmllbGRzID0gc2lkZVBhbmVsU2VsZWN0b3IodGhpcy5wcm9wcywgYXZhaWxhYmxlUHJvdmlkZXJzLCBmaWx0ZXJlZERhdGFzZXRzKTtcbiAgICAgIGNvbnN0IHBsb3RDb250YWluZXJGaWVsZHMgPSBwbG90Q29udGFpbmVyU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBib3R0b21XaWRnZXRGaWVsZHMgPSBib3R0b21XaWRnZXRTZWxlY3Rvcih0aGlzLnByb3BzLCB0aGVtZSk7XG4gICAgICBjb25zdCBtb2RhbENvbnRhaW5lckZpZWxkcyA9IG1vZGFsQ29udGFpbmVyU2VsZWN0b3IodGhpcy5wcm9wcywgdGhpcy5yb290LmN1cnJlbnQpO1xuICAgICAgY29uc3QgZ2VvQ29kZXJQYW5lbEZpZWxkcyA9IGdlb0NvZGVyUGFuZWxTZWxlY3Rvcih0aGlzLnByb3BzLCBkaW1lbnNpb25zKTtcbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvblBhbmVsRmllbGRzID0gbm90aWZpY2F0aW9uUGFuZWxTZWxlY3Rvcih0aGlzLnByb3BzKTtcblxuICAgICAgY29uc3QgbWFwQ29udGFpbmVycyA9ICFpc1NwbGl0XG4gICAgICAgID8gW1xuICAgICAgICAgICAgPE1hcENvbnRhaW5lclxuICAgICAgICAgICAgICBwcmltYXJ5PXt0cnVlfVxuICAgICAgICAgICAgICBrZXk9ezB9XG4gICAgICAgICAgICAgIGluZGV4PXswfVxuICAgICAgICAgICAgICB7Li4ubWFwRmllbGRzU2VsZWN0b3IodGhpcy5wcm9wcyl9XG4gICAgICAgICAgICAgIGNvbnRhaW5lcklkPXswfVxuICAgICAgICAgICAgICBkZWxldGVNYXBMYWJlbHM9e3RoaXMuX2RlbGV0ZU1hcExhYmVsc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgXVxuICAgICAgICA6IHNwbGl0TWFwcy5tYXAoKHNldHRpbmdzLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPE1hcENvbnRhaW5lclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgIHByaW1hcnk9e2luZGV4ID09PSAxfVxuICAgICAgICAgICAgICB7Li4ubWFwRmllbGRzU2VsZWN0b3IodGhpcy5wcm9wcywgaW5kZXgpfVxuICAgICAgICAgICAgICBjb250YWluZXJJZD17aW5kZXh9XG4gICAgICAgICAgICAgIGRlbGV0ZU1hcExhYmVscz17dGhpcy5fZGVsZXRlTWFwTGFiZWxzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFJvb3RDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt0aGlzLnJvb3R9PlxuICAgICAgICAgIDxGZWF0dXJlRmxhZ3NDb250ZXh0UHJvdmlkZXIgZmVhdHVyZUZsYWdzPXtmZWF0dXJlRmxhZ3N9PlxuICAgICAgICAgICAgPEludGxQcm92aWRlciBsb2NhbGU9e3VpU3RhdGUubG9jYWxlfSBtZXNzYWdlcz17bG9jYWxlTWVzc2FnZXNbdWlTdGF0ZS5sb2NhbGVdfT5cbiAgICAgICAgICAgICAgPFN0eWxlU2hlZXRNYW5hZ2VyIHNob3VsZEZvcndhcmRQcm9wPXtzaG91bGRGb3J3YXJkUHJvcH0+XG4gICAgICAgICAgICAgICAgPFRoZW1lUHJvdmlkZXIgdGhlbWU9e3RoZW1lfT5cbiAgICAgICAgICAgICAgICAgIDxDbG91ZExpc3RQcm92aWRlciBwcm92aWRlcnM9e2Nsb3VkUHJvdmlkZXJzfT5cbiAgICAgICAgICAgICAgICAgICAgPEdsb2JhbFN0eWxlXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwia2VwbGVyLWdsXCJcbiAgICAgICAgICAgICAgICAgICAgICBpZD17YGtlcGxlci1nbF9fJHtpZH1gfVxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGAke3dpZHRofXB4YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogYCR7aGVpZ2h0fXB4YFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnJvb3R9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uUGFuZWwgey4uLm5vdGlmaWNhdGlvblBhbmVsRmllbGRzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxEbmRDb250ZXh0IHZpc1N0YXRlPXt2aXNTdGF0ZX0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7IXVpU3RhdGUucmVhZE9ubHkgJiYgIXJlYWRPbmx5ICYmIDxTaWRlUGFuZWwgey4uLnNpZGVGaWVsZHN9IC8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgPE1hcHNMYXlvdXQgY2xhc3NOYW1lPVwibWFwc1wiIG1hcFN0YXRlPXt0aGlzLnByb3BzLm1hcFN0YXRlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge21hcENvbnRhaW5lcnN9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L01hcHNMYXlvdXQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC9EbmRDb250ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIHtpc0V4cG9ydGluZ0ltYWdlICYmIDxQbG90Q29udGFpbmVyIHsuLi5wbG90Q29udGFpbmVyRmllbGRzfSAvPn1cbiAgICAgICAgICAgICAgICAgICAgICB7LyogMSBnZW9jb2Rlcjogc2luZ2xlIG1vZGUgT1Igc3BsaXQgbW9kZSBhbmQgc3luY2VkIHZpZXdwb3J0cyAqL31cbiAgICAgICAgICAgICAgICAgICAgICB7IWlzVmlld3BvcnREaXNqb2ludGVkKHRoaXMucHJvcHMpICYmIGludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyLmVuYWJsZWQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEdlb0NvZGVyUGFuZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdlb0NvZGVyUGFuZWxGaWVsZHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB1bnN5bmNlZFZpZXdwb3J0cz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgey8qIDIgZ2VvY29kZXJzOiBzcGxpdCBtb2RlIGFuZCB1bnN5bmNlZCB2aWV3cG9ydHMgKi99XG4gICAgICAgICAgICAgICAgICAgICAge2lzVmlld3BvcnREaXNqb2ludGVkKHRoaXMucHJvcHMpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGlvbkNvbmZpZy5nZW9jb2Rlci5lbmFibGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXBDb250YWluZXJzLm1hcCgoX21hcENvbnRhaW5lciwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEdlb0NvZGVyUGFuZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZW9Db2RlclBhbmVsRmllbGRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnN5bmNlZFZpZXdwb3J0cz17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgIDxCb3R0b21XaWRnZXRPdXRlciBhYnNvbHV0ZT17IWhhc1BvcnRhYmxlV2lkdGgoYnJlYWtQb2ludFZhbHVlcyl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPEJvdHRvbVdpZGdldFxuICAgICAgICAgICAgICAgICAgICAgICAgICByb290UmVmPXt0aGlzLmJvdHRvbVdpZGdldFJlZn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLmJvdHRvbVdpZGdldEZpZWxkc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyVz17ZGltZW5zaW9ucy53aWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbWU9e3RoZW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L0JvdHRvbVdpZGdldE91dGVyPlxuICAgICAgICAgICAgICAgICAgICAgIDxNb2RhbENvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgey4uLm1vZGFsQ29udGFpbmVyRmllbGRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyVz17ZGltZW5zaW9ucy53aWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lckg9e2RpbWVuc2lvbnMuaGVpZ2h0fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvR2xvYmFsU3R5bGU+XG4gICAgICAgICAgICAgICAgICA8L0Nsb3VkTGlzdFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgICAgICAgICAgICAgPC9TdHlsZVNoZWV0TWFuYWdlcj5cbiAgICAgICAgICAgIDwvSW50bFByb3ZpZGVyPlxuICAgICAgICAgIDwvRmVhdHVyZUZsYWdzQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICA8L1Jvb3RDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ga2VwbGVyR2xDb25uZWN0KFxuICAgIG1hcFN0YXRlVG9Qcm9wcyxcbiAgICBtYWtlTWFwRGlzcGF0Y2hUb1Byb3BzXG4gICkod2l0aFRoZW1lKEtlcGxlckdMKSkgYXMgUmV0dXJuVHlwZTx0eXBlb2YgS2VwbGVyR2xGYWN0b3J5Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZTogS2VwbGVyR2xTdGF0ZSwgcHJvcHM6IEtlcGxlckdMUHJvcHMpIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5wcm9wcyxcbiAgICB2aXNTdGF0ZTogc3RhdGUudmlzU3RhdGUsXG4gICAgbWFwU3R5bGU6IHN0YXRlLm1hcFN0eWxlLFxuICAgIG1hcFN0YXRlOiBzdGF0ZS5tYXBTdGF0ZSxcbiAgICB1aVN0YXRlOiBzdGF0ZS51aVN0YXRlLFxuICAgIHByb3ZpZGVyU3RhdGU6IHN0YXRlLnByb3ZpZGVyU3RhdGVcbiAgfTtcbn1cblxuY29uc3QgZGVmYXVsdFVzZXJBY3Rpb25zID0ge307XG5cbmNvbnN0IGdldERpc3BhdGNoID0gZGlzcGF0Y2ggPT4gZGlzcGF0Y2g7XG5jb25zdCBnZXRVc2VyQWN0aW9ucyA9IChkaXNwYXRjaCwgcHJvcHMpID0+IHByb3BzLmFjdGlvbnMgfHwgZGVmYXVsdFVzZXJBY3Rpb25zO1xuXG4vKiogQHR5cGUgeygpID0+IGltcG9ydCgncmVzZWxlY3QnKS5PdXRwdXRQYXJhbWV0cmljU2VsZWN0b3I8YW55LCBhbnksIGFueSwgYW55Pn0gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlR2V0QWN0aW9uQ3JlYXRvcnMoKSB7XG4gIHJldHVybiBjcmVhdGVTZWxlY3RvcihbZ2V0RGlzcGF0Y2gsIGdldFVzZXJBY3Rpb25zXSwgKGRpc3BhdGNoLCB1c2VyQWN0aW9ucykgPT4ge1xuICAgIGNvbnN0IFt2aXNTdGF0ZUFjdGlvbnMsIG1hcFN0YXRlQWN0aW9ucywgbWFwU3R5bGVBY3Rpb25zLCB1aVN0YXRlQWN0aW9ucywgcHJvdmlkZXJBY3Rpb25zXSA9IFtcbiAgICAgIFZpc1N0YXRlQWN0aW9ucyxcbiAgICAgIE1hcFN0YXRlQWN0aW9ucyxcbiAgICAgIE1hcFN0eWxlQWN0aW9ucyxcbiAgICAgIFVJU3RhdGVBY3Rpb25zLFxuICAgICAgUHJvdmlkZXJBY3Rpb25zXG4gICAgXS5tYXAoYWN0aW9ucyA9PiBiaW5kQWN0aW9uQ3JlYXRvcnMobWVyZ2VBY3Rpb25zKGFjdGlvbnMsIHVzZXJBY3Rpb25zKSwgZGlzcGF0Y2gpKTtcblxuICAgIHJldHVybiB7XG4gICAgICB2aXNTdGF0ZUFjdGlvbnMsXG4gICAgICBtYXBTdGF0ZUFjdGlvbnMsXG4gICAgICBtYXBTdHlsZUFjdGlvbnMsXG4gICAgICB1aVN0YXRlQWN0aW9ucyxcbiAgICAgIHByb3ZpZGVyQWN0aW9ucyxcbiAgICAgIGRpc3BhdGNoXG4gICAgfTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG1ha2VNYXBEaXNwYXRjaFRvUHJvcHMoKSB7XG4gIGNvbnN0IGdldEFjdGlvbkNyZWF0b3JzID0gbWFrZUdldEFjdGlvbkNyZWF0b3JzKCk7XG4gIGNvbnN0IG1hcERpc3BhdGNoVG9Qcm9wcyA9IChkaXNwYXRjaCwgb3duUHJvcHMpID0+IHtcbiAgICBjb25zdCBncm91cGVkQWN0aW9uQ3JlYXRvcnMgPSBnZXRBY3Rpb25DcmVhdG9ycyhkaXNwYXRjaCwgb3duUHJvcHMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmdyb3VwZWRBY3Rpb25DcmVhdG9ycyxcbiAgICAgIGRpc3BhdGNoXG4gICAgfTtcbiAgfTtcblxuICByZXR1cm4gbWFwRGlzcGF0Y2hUb1Byb3BzO1xufVxuXG4vKipcbiAqIE92ZXJyaWRlIGRlZmF1bHQga2VwbGVyLmdsIGFjdGlvbnMgd2l0aCB1c2VyIGRlZmluZWQgYWN0aW9ucyB1c2luZyB0aGUgc2FtZSBrZXlcbiAqL1xuZnVuY3Rpb24gbWVyZ2VBY3Rpb25zKGFjdGlvbnMsIHVzZXJBY3Rpb25zKSB7XG4gIGNvbnN0IG92ZXJyaWRlcyA9IHt9O1xuICBmb3IgKGNvbnN0IGtleSBpbiB1c2VyQWN0aW9ucykge1xuICAgIGlmIChcbiAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh1c2VyQWN0aW9ucywga2V5KSAmJlxuICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGFjdGlvbnMsIGtleSlcbiAgICApIHtcbiAgICAgIG92ZXJyaWRlc1trZXldID0gdXNlckFjdGlvbnNba2V5XTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gey4uLmFjdGlvbnMsIC4uLm92ZXJyaWRlc307XG59XG5cbmV4cG9ydCBkZWZhdWx0IEtlcGxlckdsRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLGlCQUFBLEdBQUFMLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxTQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxnQkFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sVUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsYUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsUUFBQSxHQUFBVCxPQUFBO0FBU0EsSUFBQVUsUUFBQSxHQUFBVixPQUFBO0FBUUEsSUFBQVcsWUFBQSxHQUFBWCxPQUFBO0FBRUEsSUFBQVksa0JBQUEsR0FBQVosT0FBQTtBQVVBLElBQUFhLFVBQUEsR0FBQWIsT0FBQTtBQVVBLElBQUFjLFVBQUEsR0FBQVosc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFl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
@@ -44,7 +44,7 @@ var StyledMapPopover = _styledComponents["default"].div(_templateObject || (_tem
44
44
  }, function (props) {
45
45
  return props.theme.panelBoxShadow;
46
46
  }, function (props) {
47
- return "".concat(props.theme.panelBackground, "dd");
47
+ return "".concat(props.theme.panelBackground);
48
48
  }, function (props) {
49
49
  return props.theme.notificationColors.success;
50
50
  }, function (props) {
@@ -187,4 +187,4 @@ function MapPopoverFactory(MapPopoverContent) {
187
187
  };
188
188
  return (0, _reactIntl.injectIntl)(MapPopover);
189
189
  }
190
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfbWFwUG9wb3ZlckNvbnRlbnQiLCJfaWNvbnMiLCJfcmVhY3RJbnRsIiwiX2xvY2FsaXphdGlvbiIsIl9jb250ZXh0IiwiX2xheWVycyIsIl9jb21tb25VdGlscyIsIl9jb25zdGFudHMiLCJfcmVkdWNlcnMiLCJfcmVhY3QyIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfdGVtcGxhdGVPYmplY3Q0IiwiX3RlbXBsYXRlT2JqZWN0NSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIlNFTEVDVEFCTEVfTEFZRVJTIiwiTEFZRVJfVFlQRVMiLCJoZXhhZ29uSWQiLCJnZW9qc29uIiwiTUFYX1dJRFRIIiwiTUFYX0hFSUdIVCIsIlN0eWxlZE1hcFBvcG92ZXIiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJzY3JvbGxCYXIiLCJmb250RmFtaWx5IiwicGFuZWxCYWNrZ3JvdW5kIiwidGV4dENvbG9yIiwicGFuZWxCb3hTaGFkb3ciLCJjb25jYXQiLCJub3RpZmljYXRpb25Db2xvcnMiLCJzdWNjZXNzIiwidGV4dENvbG9ySGwiLCJQaW5uZWRCdXR0b25zIiwiUG9wb3ZlckNvbnRlbnQiLCJTdHlsZWRJY29uIiwiYWN0aXZlQ29sb3IiLCJsaW5rQnRuQ29sb3IiLCJTdHlsZWRTZWxlY3RHZW9tZXRyeSIsIk1hcFBvcG92ZXJGYWN0b3J5IiwiZGVwcyIsIk1hcFBvcG92ZXJDb250ZW50RmFjdG9yeSIsImdldFNlbGVjdGVkRmVhdHVyZSIsImxheWVySG92ZXJQcm9wIiwiX2xheWVyJGNvbmZpZyIsIl9sYXllciRjb25maWcyIiwibGF5ZXIiLCJmaWVsZElkeCIsInNlbGVjdGVkRmVhdHVyZSIsInR5cGUiLCJjb25maWciLCJjb2x1bW5zIiwiaGV4X2lkIiwiaWRUb1BvbHlnb25HZW8iLCJpZCIsImdldExheWVySG92ZXJQcm9wVmFsdWUiLCJkYXRhIiwiaXNDbG9zZWQiLCJwYXJzZUdlb0pzb25SYXdGZWF0dXJlIiwiZ2VuZXJhdGVIYXNoSWQiLCJNYXBQb3BvdmVyQ29udGVudCIsIk1hcFBvcG92ZXIiLCJfcmVmIiwiX2xheWVySG92ZXJQcm9wJGxheWVyIiwiX2xheWVySG92ZXJQcm9wJGxheWVyMiIsIngiLCJ5IiwiZnJvemVuIiwiY29vcmRpbmF0ZSIsImlzQmFzZSIsInpvb20iLCJjb250YWluZXIiLCJvbkNsb3NlIiwib25TZXRGZWF0dXJlcyIsInNldFNlbGVjdGVkRmVhdHVyZSIsImZlYXR1cmVDb2xsZWN0aW9uIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiaG9yaXpvbnRhbFBsYWNlbWVudCIsInNldEhvcml6b250YWxQbGFjZW1lbnQiLCJtb3ZlTGVmdCIsIm1vdmVSaWdodCIsInJvb3RDb250ZXh0IiwidXNlQ29udGV4dCIsIlJvb3RDb250ZXh0IiwiX3VzZUZsb2F0aW5nIiwidXNlRmxvYXRpbmciLCJwbGFjZW1lbnQiLCJtaWRkbGV3YXJlIiwib2Zmc2V0IiwibWFpbkF4aXMiLCJhbGlnbm1lbnRBeGlzIiwiZmxpcCIsInJlZnMiLCJjb250ZXh0IiwiZmxvYXRpbmdTdHlsZXMiLCJvblNldFNlbGVjdGVkRmVhdHVyZSIsInVzZUNhbGxiYWNrIiwiY2xpY2tDb250ZXh0IiwibWFwSW5kZXgiLCJyaWdodENsaWNrIiwicG9zaXRpb24iLCJ1cGRhdGVkRmVhdHVyZXMiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiZmVhdHVyZXMiLCJjb250YWluZXJCb3VuZHMiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJjbGllbnRQb2ludCIsInVzZUNsaWVudFBvaW50IiwibGVmdCIsInRvcCIsIl91c2VJbnRlcmFjdGlvbnMiLCJ1c2VJbnRlcmFjdGlvbnMiLCJnZXRGbG9hdGluZ1Byb3BzIiwiY3JlYXRlRWxlbWVudCIsIkZsb2F0aW5nUG9ydGFsIiwicm9vdCIsImN1cnJlbnQiLCJfZXh0ZW5kczIiLCJjbGFzc05hbWUiLCJyZWYiLCJzZXRGbG9hdGluZyIsInN0eWxlIiwib25DbGljayIsIkFycm93TGVmdCIsIlBpbiIsImhlaWdodCIsIkFycm93UmlnaHQiLCJGb3JtYXR0ZWRNZXNzYWdlIiwiaW5jbHVkZXMiLCJDdXJzb3JQb2ludCIsImluamVjdEludGwiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFwL21hcC1wb3BvdmVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IE1hcFBvcG92ZXJDb250ZW50RmFjdG9yeSBmcm9tICcuL21hcC1wb3BvdmVyLWNvbnRlbnQnO1xuaW1wb3J0IHtQaW4sIEFycm93TGVmdCwgQXJyb3dSaWdodCwgQ3Vyc29yUG9pbnR9IGZyb20gJy4uL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQge2luamVjdEludGwsIEludGxTaGFwZX0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQge0Zvcm1hdHRlZE1lc3NhZ2V9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcbmltcG9ydCB7Um9vdENvbnRleHR9IGZyb20gJy4uL2NvbnRleHQnO1xuaW1wb3J0IHtwYXJzZUdlb0pzb25SYXdGZWF0dXJlfSBmcm9tICdAa2VwbGVyLmdsL2xheWVycyc7XG5pbXBvcnQge2dlbmVyYXRlSGFzaElkLCBpZFRvUG9seWdvbkdlb30gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHtMQVlFUl9UWVBFU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtMYXllckhvdmVyUHJvcCwgZ2V0TGF5ZXJIb3ZlclByb3BWYWx1ZX0gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG5pbXBvcnQge0ZlYXR1cmUsIEZlYXR1cmVTZWxlY3Rpb25Db250ZXh0fSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7XG4gIEZsb2F0aW5nUG9ydGFsLFxuICBmbGlwLFxuICBvZmZzZXQsXG4gIHVzZUNsaWVudFBvaW50LFxuICB1c2VGbG9hdGluZyxcbiAgdXNlSW50ZXJhY3Rpb25zXG59IGZyb20gJ0BmbG9hdGluZy11aS9yZWFjdCc7XG5cbmNvbnN0IFNFTEVDVEFCTEVfTEFZRVJTOiBzdHJpbmdbXSA9IFtMQVlFUl9UWVBFUy5oZXhhZ29uSWQsIExBWUVSX1RZUEVTLmdlb2pzb25dO1xuY29uc3QgTUFYX1dJRFRIID0gNTAwO1xuY29uc3QgTUFYX0hFSUdIVCA9IDYwMDtcblxuY29uc3QgU3R5bGVkTWFwUG9wb3ZlciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgbWF4LXdpZHRoOiAke01BWF9XSURUSH1weDtcbiAgbWF4LWhlaWdodDogJHtNQVhfSEVJR0hUfXB4O1xuICBwYWRkaW5nOiAxNHB4O1xuICAmID4gKiArICoge1xuICAgIG1hcmdpbi10b3A6IDZweDtcbiAgfVxuICAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNjcm9sbEJhcn07XG4gIGZvbnQtZmFtaWx5OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmZvbnRGYW1pbHl9O1xuICBmb250LXNpemU6IDExcHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxCYWNrZ3JvdW5kfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgei1pbmRleDogOTg7IC8qIHNob3VsZCBiZSBiZWxvdyA5OSB3aGljaCBpcyBzaWRlIHBhbmUgKi9cbiAgb3ZlcmZsb3cteDogYXV0bztcbiAgYm94LXNoYWRvdzogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wYW5lbEJveFNoYWRvd307XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBgJHtwcm9wcy50aGVtZS5wYW5lbEJhY2tncm91bmR9ZGRgfTtcbiAgfVxuXG4gIC5wcmltYXJ5LWxhYmVsIHtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5ub3RpZmljYXRpb25Db2xvcnMuc3VjY2Vzc307XG4gICAgZm9udC1zaXplOiAxMHB4O1xuICB9XG5cbiAgLm1hcC1wb3BvdmVyX19sYXllci1pbmZvLFxuICAuY29vcmRpbmdhdGUtaG92ZXItaW5mbyB7XG4gICAgJiA+ICogKyAqIHtcbiAgICAgIG1hcmdpbi10b3A6IDdweDtcbiAgICB9XG4gIH1cblxuICB0YWJsZSB7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICAgIHJvdy1nYXA6IDVweDtcbiAgICBjb2x1bW4tZ2FwOiA1cHg7XG4gIH1cblxuICAuY29vcmRpbmdhdGUtaG92ZXItaW5mbyA+IHRhYmxlIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gYXV0byBhdXRvO1xuICB9XG4gIC5tYXAtcG9wb3Zlcl9fbGF5ZXItaW5mbyA+IHRhYmxlIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gYXV0bztcbiAgfVxuXG4gIHRib2R5LFxuICB0ciB7XG4gICAgZGlzcGxheTogY29udGVudHM7XG4gIH1cblxuICB0ZCB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3J9O1xuICB9XG5cbiAgdGQucm93X192YWx1ZSB7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG4gIH1cbmA7XG5cbmNvbnN0IFBpbm5lZEJ1dHRvbnMgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktaXRlbXM6IGNlbnRlcjtcbiAgJiA+ICogKyAqIHtcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgfVxuYDtcblxuY29uc3QgUG9wb3ZlckNvbnRlbnQgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAmID4gKiArICoge1xuICAgIG1hcmdpbi10b3A6IDEycHg7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZEljb24gPSBzdHlsZWQuZGl2YFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5hY3RpdmVDb2xvcn07XG5cbiAgJjpob3ZlciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxpbmtCdG5Db2xvcn07XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZFNlbGVjdEdlb21ldHJ5ID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9ySGx9O1xuICBzdmcge1xuICAgIG1hcmdpbi1yaWdodDogNnB4O1xuICB9XG5cbiAgJjpob3ZlciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxpbmtCdG5Db2xvcn07XG4gIH1cbmA7XG5cbk1hcFBvcG92ZXJGYWN0b3J5LmRlcHMgPSBbTWFwUG9wb3ZlckNvbnRlbnRGYWN0b3J5XTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbGVjdGVkRmVhdHVyZShsYXllckhvdmVyUHJvcDogTGF5ZXJIb3ZlclByb3AgfCBudWxsKTogRmVhdHVyZSB8IG51bGwge1xuICBjb25zdCBsYXllciA9IGxheWVySG92ZXJQcm9wPy5sYXllcjtcbiAgbGV0IGZpZWxkSWR4O1xuICBsZXQgc2VsZWN0ZWRGZWF0dXJlO1xuICBzd2l0Y2ggKGxheWVyPy50eXBlKSB7XG4gICAgY2FzZSBMQVlFUl9UWVBFUy5oZXhhZ29uSWQ6XG4gICAgICBmaWVsZElkeCA9IGxheWVyLmNvbmZpZz8uY29sdW1ucz8uaGV4X2lkPy5maWVsZElkeDtcbiAgICAgIHNlbGVjdGVkRmVhdHVyZSA9IGlkVG9Qb2x5Z29uR2VvKFxuICAgICAgICB7aWQ6IGdldExheWVySG92ZXJQcm9wVmFsdWUobGF5ZXJIb3ZlclByb3A/LmRhdGEsIGZpZWxkSWR4KX0sXG4gICAgICAgIHtpc0Nsb3NlZDogdHJ1ZX1cbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIExBWUVSX1RZUEVTLmdlb2pzb246XG4gICAgICBmaWVsZElkeCA9IGxheWVyLmNvbmZpZz8uY29sdW1ucz8uZ2VvanNvbj8uZmllbGRJZHg7XG4gICAgICBzZWxlY3RlZEZlYXR1cmUgPSBwYXJzZUdlb0pzb25SYXdGZWF0dXJlKFxuICAgICAgICBnZXRMYXllckhvdmVyUHJvcFZhbHVlKGxheWVySG92ZXJQcm9wPy5kYXRhLCBmaWVsZElkeClcbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgYnJlYWs7XG4gIH1cblxuICBpZiAoc2VsZWN0ZWRGZWF0dXJlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnNlbGVjdGVkRmVhdHVyZSxcbiAgICAgIC8vIHVuaXF1ZSBpZCBzaG91bGQgYmUgYXNzaWduZWQgdG8gZmVhdHVyZXMgaW4gdGhlIGVkaXRvclxuICAgICAgaWQ6IGdlbmVyYXRlSGFzaElkKDgpXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBNYXBQb3BvdmVyUHJvcHMgPSB7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xuICBmcm96ZW4/OiBib29sZWFuO1xuICBjb29yZGluYXRlOiBbbnVtYmVyLCBudW1iZXJdIHwgYm9vbGVhbjtcbiAgbGF5ZXJIb3ZlclByb3A6IExheWVySG92ZXJQcm9wIHwgbnVsbDtcbiAgaXNCYXNlPzogYm9vbGVhbjtcbiAgem9vbTogbnVtYmVyO1xuICBjb250YWluZXI/OiBIVE1MRWxlbWVudCB8IG51bGw7XG4gIG9uQ2xvc2U6ICgpID0+IHZvaWQ7XG4gIG9uU2V0RmVhdHVyZXM6IChmZWF0dXJlczogRmVhdHVyZVtdKSA9PiBhbnk7XG4gIHNldFNlbGVjdGVkRmVhdHVyZTogKGZlYXR1cmU6IEZlYXR1cmUgfCBudWxsLCBjbGlja0NvbnRleHQ/OiBGZWF0dXJlU2VsZWN0aW9uQ29udGV4dCkgPT4gYW55O1xuICBmZWF0dXJlQ29sbGVjdGlvbj86IHtcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgZmVhdHVyZXM6IEZlYXR1cmVbXTtcbiAgfTtcbn07XG5cbnR5cGUgSW50bFByb3BzID0ge1xuICBpbnRsOiBJbnRsU2hhcGU7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNYXBQb3BvdmVyRmFjdG9yeShcbiAgTWFwUG9wb3ZlckNvbnRlbnQ6IFJldHVyblR5cGU8dHlwZW9mIE1hcFBvcG92ZXJDb250ZW50RmFjdG9yeT5cbikge1xuICBjb25zdCBNYXBQb3BvdmVyOiBSZWFjdC5GQzxNYXBQb3BvdmVyUHJvcHMgJiBJbnRsUHJvcHM+ID0gKHtcbiAgICB4LFxuICAgIHksXG4gICAgZnJvemVuLFxuICAgIGNvb3JkaW5hdGUsXG4gICAgbGF5ZXJIb3ZlclByb3AsXG4gICAgaXNCYXNlLFxuICAgIHpvb20sXG4gICAgY29udGFpbmVyLFxuICAgIG9uQ2xvc2UsXG4gICAgb25TZXRGZWF0dXJlcyxcbiAgICBzZXRTZWxlY3RlZEZlYXR1cmUsXG4gICAgZmVhdHVyZUNvbGxlY3Rpb25cbiAgfSkgPT4ge1xuICAgIGNvbnN0IFtob3Jpem9udGFsUGxhY2VtZW50LCBzZXRIb3Jpem9udGFsUGxhY2VtZW50XSA9IHVzZVN0YXRlKCdzdGFydCcpO1xuICAgIGNvbnN0IG1vdmVMZWZ0ID0gKCkgPT4gc2V0SG9yaXpvbnRhbFBsYWNlbWVudCgnZW5kJyk7XG4gICAgY29uc3QgbW92ZVJpZ2h0ID0gKCkgPT4gc2V0SG9yaXpvbnRhbFBsYWNlbWVudCgnc3RhcnQnKTtcbiAgICBjb25zdCByb290Q29udGV4dCA9IHVzZUNvbnRleHQoUm9vdENvbnRleHQpO1xuICAgIGNvbnN0IHtyZWZzLCBjb250ZXh0LCBmbG9hdGluZ1N0eWxlc30gPSB1c2VGbG9hdGluZyh7XG4gICAgICBwbGFjZW1lbnQ6IGAke2hvcml6b250YWxQbGFjZW1lbnQgPT0gJ2VuZCcgPyAnbGVmdCcgOiAncmlnaHQnfS1zdGFydGAsXG4gICAgICBtaWRkbGV3YXJlOiBbb2Zmc2V0KHttYWluQXhpczogMjAsIGFsaWdubWVudEF4aXM6IDIwfSksIGZsaXAoKV1cbiAgICB9KTtcbiAgICBjb25zdCBvblNldFNlbGVjdGVkRmVhdHVyZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGNvbnN0IGNsaWNrQ29udGV4dCA9IHtcbiAgICAgICAgbWFwSW5kZXg6IDAsXG4gICAgICAgIHJpZ2h0Q2xpY2s6IHRydWUsXG4gICAgICAgIHBvc2l0aW9uOiB7eCwgeX1cbiAgICAgIH07XG4gICAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmUgPSBnZXRTZWxlY3RlZEZlYXR1cmUobGF5ZXJIb3ZlclByb3ApO1xuICAgICAgaWYgKHNlbGVjdGVkRmVhdHVyZSkge1xuICAgICAgICBzZXRTZWxlY3RlZEZlYXR1cmUoc2VsZWN0ZWRGZWF0dXJlLCBjbGlja0NvbnRleHQpO1xuICAgICAgICBjb25zdCB1cGRhdGVkRmVhdHVyZXMgPSBmZWF0dXJlQ29sbGVjdGlvblxuICAgICAgICAgID8gWy4uLmZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzLCBzZWxlY3RlZEZlYXR1cmVdXG4gICAgICAgICAgOiBbc2VsZWN0ZWRGZWF0dXJlXTtcbiAgICAgICAgb25TZXRGZWF0dXJlcyh1cGRhdGVkRmVhdHVyZXMpO1xuICAgICAgfVxuICAgICAgb25DbG9zZSgpO1xuICAgIH0sIFtvbkNsb3NlLCBvblNldEZlYXR1cmVzLCB4LCB5LCBzZXRTZWxlY3RlZEZlYXR1cmUsIGxheWVySG92ZXJQcm9wLCBmZWF0dXJlQ29sbGVjdGlvbl0pO1xuXG4gICAgY29uc3QgY29udGFpbmVyQm91bmRzID0gY29udGFpbmVyPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBjbGllbnRQb2ludCA9IHVzZUNsaWVudFBvaW50KGNvbnRleHQsIHtcbiAgICAgIHg6IChjb250YWluZXJCb3VuZHM/LmxlZnQgfHwgMCkgKyB4LFxuICAgICAgeTogKGNvbnRhaW5lckJvdW5kcz8udG9wIHx8IDApICsgeVxuICAgIH0pO1xuICAgIGNvbnN0IHtnZXRGbG9hdGluZ1Byb3BzfSA9IHVzZUludGVyYWN0aW9ucyhbY2xpZW50UG9pbnRdKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8RmxvYXRpbmdQb3J0YWwgcm9vdD17cm9vdENvbnRleHQ/LmN1cnJlbnR9PlxuICAgICAgICA8U3R5bGVkTWFwUG9wb3ZlclxuICAgICAgICAgIGNsYXNzTmFtZT1cIm1hcC1wb3BvdmVyXCJcbiAgICAgICAgICByZWY9e3JlZnMuc2V0RmxvYXRpbmd9XG4gICAgICAgICAgc3R5bGU9e2Zsb2F0aW5nU3R5bGVzfVxuICAgICAgICAgIHsuLi5nZXRGbG9hdGluZ1Byb3BzKCl9XG4gICAgICAgID5cbiAgICAgICAgICB7ZnJvemVuID8gKFxuICAgICAgICAgICAgPFBpbm5lZEJ1dHRvbnM+XG4gICAgICAgICAgICAgIHtob3Jpem9udGFsUGxhY2VtZW50ID09PSAnc3RhcnQnICYmIChcbiAgICAgICAgICAgICAgICA8U3R5bGVkSWNvbiBjbGFzc05hbWU9XCJwb3BvdmVyLWFycm93LWxlZnRcIiBvbkNsaWNrPXttb3ZlTGVmdH0+XG4gICAgICAgICAgICAgICAgICA8QXJyb3dMZWZ0IC8+XG4gICAgICAgICAgICAgICAgPC9TdHlsZWRJY29uPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8U3R5bGVkSWNvbiBjbGFzc05hbWU9XCJwb3BvdmVyLXBpblwiIG9uQ2xpY2s9e29uQ2xvc2V9PlxuICAgICAgICAgICAgICAgIDxQaW4gaGVpZ2h0PVwiMTZweFwiIC8+XG4gICAgICAgICAgICAgIDwvU3R5bGVkSWNvbj5cbiAgICAgICAgICAgICAge2hvcml6b250YWxQbGFjZW1lbnQgPT09ICdlbmQnICYmIChcbiAgICAgICAgICAgICAgICA8U3R5bGVkSWNvbiBjbGFzc05hbWU9XCJwb3BvdmVyLWFycm93LXJpZ2h0XCIgb25DbGljaz17bW92ZVJpZ2h0fT5cbiAgICAgICAgICAgICAgICAgIDxBcnJvd1JpZ2h0IC8+XG4gICAgICAgICAgICAgICAgPC9TdHlsZWRJY29uPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7aXNCYXNlICYmIChcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInByaW1hcnktbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibWFwUG9wb3Zlci5wcmltYXJ5XCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvUGlubmVkQnV0dG9ucz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8UG9wb3ZlckNvbnRlbnQ+XG4gICAgICAgICAgICA8TWFwUG9wb3ZlckNvbnRlbnRcbiAgICAgICAgICAgICAgY29vcmRpbmF0ZT17Y29vcmRpbmF0ZX1cbiAgICAgICAgICAgICAgem9vbT17em9vbX1cbiAgICAgICAgICAgICAgbGF5ZXJIb3ZlclByb3A9e2xheWVySG92ZXJQcm9wfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1BvcG92ZXJDb250ZW50PlxuICAgICAgICAgIHtsYXllckhvdmVyUHJvcD8ubGF5ZXI/LnR5cGUgJiZcbiAgICAgICAgICBTRUxFQ1RBQkxFX0xBWUVSUy5pbmNsdWRlcyhsYXllckhvdmVyUHJvcD8ubGF5ZXI/LnR5cGUpICYmXG4gICAgICAgICAgZnJvemVuID8gKFxuICAgICAgICAgICAgPFN0eWxlZFNlbGVjdEdlb21ldHJ5IGNsYXNzTmFtZT1cInNlbGVjdC1nZW9tZXRyeVwiIG9uQ2xpY2s9e29uU2V0U2VsZWN0ZWRGZWF0dXJlfT5cbiAgICAgICAgICAgICAgPEN1cnNvclBvaW50IC8+XG4gICAgICAgICAgICAgIFNlbGVjdCBHZW9tZXRyeVxuICAgICAgICAgICAgPC9TdHlsZWRTZWxlY3RHZW9tZXRyeT5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9TdHlsZWRNYXBQb3BvdmVyPlxuICAgICAgPC9GbG9hdGluZ1BvcnRhbD5cbiAgICApO1xuICB9O1xuICBy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
190
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfbWFwUG9wb3ZlckNvbnRlbnQiLCJfaWNvbnMiLCJfcmVhY3RJbnRsIiwiX2xvY2FsaXphdGlvbiIsIl9jb250ZXh0IiwiX2xheWVycyIsIl9jb21tb25VdGlscyIsIl9jb25zdGFudHMiLCJfcmVkdWNlcnMiLCJfcmVhY3QyIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfdGVtcGxhdGVPYmplY3Q0IiwiX3RlbXBsYXRlT2JqZWN0NSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIlNFTEVDVEFCTEVfTEFZRVJTIiwiTEFZRVJfVFlQRVMiLCJoZXhhZ29uSWQiLCJnZW9qc29uIiwiTUFYX1dJRFRIIiwiTUFYX0hFSUdIVCIsIlN0eWxlZE1hcFBvcG92ZXIiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJzY3JvbGxCYXIiLCJmb250RmFtaWx5IiwicGFuZWxCYWNrZ3JvdW5kIiwidGV4dENvbG9yIiwicGFuZWxCb3hTaGFkb3ciLCJjb25jYXQiLCJub3RpZmljYXRpb25Db2xvcnMiLCJzdWNjZXNzIiwidGV4dENvbG9ySGwiLCJQaW5uZWRCdXR0b25zIiwiUG9wb3ZlckNvbnRlbnQiLCJTdHlsZWRJY29uIiwiYWN0aXZlQ29sb3IiLCJsaW5rQnRuQ29sb3IiLCJTdHlsZWRTZWxlY3RHZW9tZXRyeSIsIk1hcFBvcG92ZXJGYWN0b3J5IiwiZGVwcyIsIk1hcFBvcG92ZXJDb250ZW50RmFjdG9yeSIsImdldFNlbGVjdGVkRmVhdHVyZSIsImxheWVySG92ZXJQcm9wIiwiX2xheWVyJGNvbmZpZyIsIl9sYXllciRjb25maWcyIiwibGF5ZXIiLCJmaWVsZElkeCIsInNlbGVjdGVkRmVhdHVyZSIsInR5cGUiLCJjb25maWciLCJjb2x1bW5zIiwiaGV4X2lkIiwiaWRUb1BvbHlnb25HZW8iLCJpZCIsImdldExheWVySG92ZXJQcm9wVmFsdWUiLCJkYXRhIiwiaXNDbG9zZWQiLCJwYXJzZUdlb0pzb25SYXdGZWF0dXJlIiwiZ2VuZXJhdGVIYXNoSWQiLCJNYXBQb3BvdmVyQ29udGVudCIsIk1hcFBvcG92ZXIiLCJfcmVmIiwiX2xheWVySG92ZXJQcm9wJGxheWVyIiwiX2xheWVySG92ZXJQcm9wJGxheWVyMiIsIngiLCJ5IiwiZnJvemVuIiwiY29vcmRpbmF0ZSIsImlzQmFzZSIsInpvb20iLCJjb250YWluZXIiLCJvbkNsb3NlIiwib25TZXRGZWF0dXJlcyIsInNldFNlbGVjdGVkRmVhdHVyZSIsImZlYXR1cmVDb2xsZWN0aW9uIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiaG9yaXpvbnRhbFBsYWNlbWVudCIsInNldEhvcml6b250YWxQbGFjZW1lbnQiLCJtb3ZlTGVmdCIsIm1vdmVSaWdodCIsInJvb3RDb250ZXh0IiwidXNlQ29udGV4dCIsIlJvb3RDb250ZXh0IiwiX3VzZUZsb2F0aW5nIiwidXNlRmxvYXRpbmciLCJwbGFjZW1lbnQiLCJtaWRkbGV3YXJlIiwib2Zmc2V0IiwibWFpbkF4aXMiLCJhbGlnbm1lbnRBeGlzIiwiZmxpcCIsInJlZnMiLCJjb250ZXh0IiwiZmxvYXRpbmdTdHlsZXMiLCJvblNldFNlbGVjdGVkRmVhdHVyZSIsInVzZUNhbGxiYWNrIiwiY2xpY2tDb250ZXh0IiwibWFwSW5kZXgiLCJyaWdodENsaWNrIiwicG9zaXRpb24iLCJ1cGRhdGVkRmVhdHVyZXMiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiZmVhdHVyZXMiLCJjb250YWluZXJCb3VuZHMiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJjbGllbnRQb2ludCIsInVzZUNsaWVudFBvaW50IiwibGVmdCIsInRvcCIsIl91c2VJbnRlcmFjdGlvbnMiLCJ1c2VJbnRlcmFjdGlvbnMiLCJnZXRGbG9hdGluZ1Byb3BzIiwiY3JlYXRlRWxlbWVudCIsIkZsb2F0aW5nUG9ydGFsIiwicm9vdCIsImN1cnJlbnQiLCJfZXh0ZW5kczIiLCJjbGFzc05hbWUiLCJyZWYiLCJzZXRGbG9hdGluZyIsInN0eWxlIiwib25DbGljayIsIkFycm93TGVmdCIsIlBpbiIsImhlaWdodCIsIkFycm93UmlnaHQiLCJGb3JtYXR0ZWRNZXNzYWdlIiwiaW5jbHVkZXMiLCJDdXJzb3JQb2ludCIsImluamVjdEludGwiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFwL21hcC1wb3BvdmVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IE1hcFBvcG92ZXJDb250ZW50RmFjdG9yeSBmcm9tICcuL21hcC1wb3BvdmVyLWNvbnRlbnQnO1xuaW1wb3J0IHtQaW4sIEFycm93TGVmdCwgQXJyb3dSaWdodCwgQ3Vyc29yUG9pbnR9IGZyb20gJy4uL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQge2luamVjdEludGwsIEludGxTaGFwZX0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQge0Zvcm1hdHRlZE1lc3NhZ2V9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcbmltcG9ydCB7Um9vdENvbnRleHR9IGZyb20gJy4uL2NvbnRleHQnO1xuaW1wb3J0IHtwYXJzZUdlb0pzb25SYXdGZWF0dXJlfSBmcm9tICdAa2VwbGVyLmdsL2xheWVycyc7XG5pbXBvcnQge2dlbmVyYXRlSGFzaElkLCBpZFRvUG9seWdvbkdlb30gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHtMQVlFUl9UWVBFU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtMYXllckhvdmVyUHJvcCwgZ2V0TGF5ZXJIb3ZlclByb3BWYWx1ZX0gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG5pbXBvcnQge0ZlYXR1cmUsIEZlYXR1cmVTZWxlY3Rpb25Db250ZXh0fSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7XG4gIEZsb2F0aW5nUG9ydGFsLFxuICBmbGlwLFxuICBvZmZzZXQsXG4gIHVzZUNsaWVudFBvaW50LFxuICB1c2VGbG9hdGluZyxcbiAgdXNlSW50ZXJhY3Rpb25zXG59IGZyb20gJ0BmbG9hdGluZy11aS9yZWFjdCc7XG5cbmNvbnN0IFNFTEVDVEFCTEVfTEFZRVJTOiBzdHJpbmdbXSA9IFtMQVlFUl9UWVBFUy5oZXhhZ29uSWQsIExBWUVSX1RZUEVTLmdlb2pzb25dO1xuY29uc3QgTUFYX1dJRFRIID0gNTAwO1xuY29uc3QgTUFYX0hFSUdIVCA9IDYwMDtcblxuY29uc3QgU3R5bGVkTWFwUG9wb3ZlciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgbWF4LXdpZHRoOiAke01BWF9XSURUSH1weDtcbiAgbWF4LWhlaWdodDogJHtNQVhfSEVJR0hUfXB4O1xuICBwYWRkaW5nOiAxNHB4O1xuICAmID4gKiArICoge1xuICAgIG1hcmdpbi10b3A6IDZweDtcbiAgfVxuICAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNjcm9sbEJhcn07XG4gIGZvbnQtZmFtaWx5OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmZvbnRGYW1pbHl9O1xuICBmb250LXNpemU6IDExcHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxCYWNrZ3JvdW5kfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgei1pbmRleDogOTg7IC8qIHNob3VsZCBiZSBiZWxvdyA5OSB3aGljaCBpcyBzaWRlIHBhbmUgKi9cbiAgb3ZlcmZsb3cteDogYXV0bztcbiAgYm94LXNoYWRvdzogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wYW5lbEJveFNoYWRvd307XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBgJHtwcm9wcy50aGVtZS5wYW5lbEJhY2tncm91bmR9YH07XG4gIH1cblxuICAucHJpbWFyeS1sYWJlbCB7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubm90aWZpY2F0aW9uQ29sb3JzLnN1Y2Nlc3N9O1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgfVxuXG4gIC5tYXAtcG9wb3Zlcl9fbGF5ZXItaW5mbyxcbiAgLmNvb3JkaW5nYXRlLWhvdmVyLWluZm8ge1xuICAgICYgPiAqICsgKiB7XG4gICAgICBtYXJnaW4tdG9wOiA3cHg7XG4gICAgfVxuICB9XG5cbiAgdGFibGUge1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgICByb3ctZ2FwOiA1cHg7XG4gICAgY29sdW1uLWdhcDogNXB4O1xuICB9XG5cbiAgLmNvb3JkaW5nYXRlLWhvdmVyLWluZm8gPiB0YWJsZSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIGF1dG8gYXV0bztcbiAgfVxuICAubWFwLXBvcG92ZXJfX2xheWVyLWluZm8gPiB0YWJsZSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIGF1dG87XG4gIH1cblxuICB0Ym9keSxcbiAgdHIge1xuICAgIGRpc3BsYXk6IGNvbnRlbnRzO1xuICB9XG5cbiAgdGQge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgfVxuXG4gIHRkLnJvd19fdmFsdWUge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9ySGx9O1xuICB9XG5gO1xuXG5jb25zdCBQaW5uZWRCdXR0b25zID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24tc2VsZjogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gICYgPiAqICsgKiB7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gIH1cbmA7XG5cbmNvbnN0IFBvcG92ZXJDb250ZW50ID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgJiA+ICogKyAqIHtcbiAgICBtYXJnaW4tdG9wOiAxMnB4O1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRJY29uID0gc3R5bGVkLmRpdmBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuYWN0aXZlQ29sb3J9O1xuXG4gICY6aG92ZXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5saW5rQnRuQ29sb3J9O1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRTZWxlY3RHZW9tZXRyeSA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckhsfTtcbiAgc3ZnIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5saW5rQnRuQ29sb3J9O1xuICB9XG5gO1xuXG5NYXBQb3BvdmVyRmFjdG9yeS5kZXBzID0gW01hcFBvcG92ZXJDb250ZW50RmFjdG9yeV07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWxlY3RlZEZlYXR1cmUobGF5ZXJIb3ZlclByb3A6IExheWVySG92ZXJQcm9wIHwgbnVsbCk6IEZlYXR1cmUgfCBudWxsIHtcbiAgY29uc3QgbGF5ZXIgPSBsYXllckhvdmVyUHJvcD8ubGF5ZXI7XG4gIGxldCBmaWVsZElkeDtcbiAgbGV0IHNlbGVjdGVkRmVhdHVyZTtcbiAgc3dpdGNoIChsYXllcj8udHlwZSkge1xuICAgIGNhc2UgTEFZRVJfVFlQRVMuaGV4YWdvbklkOlxuICAgICAgZmllbGRJZHggPSBsYXllci5jb25maWc/LmNvbHVtbnM/LmhleF9pZD8uZmllbGRJZHg7XG4gICAgICBzZWxlY3RlZEZlYXR1cmUgPSBpZFRvUG9seWdvbkdlbyhcbiAgICAgICAge2lkOiBnZXRMYXllckhvdmVyUHJvcFZhbHVlKGxheWVySG92ZXJQcm9wPy5kYXRhLCBmaWVsZElkeCl9LFxuICAgICAgICB7aXNDbG9zZWQ6IHRydWV9XG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBMQVlFUl9UWVBFUy5nZW9qc29uOlxuICAgICAgZmllbGRJZHggPSBsYXllci5jb25maWc/LmNvbHVtbnM/Lmdlb2pzb24/LmZpZWxkSWR4O1xuICAgICAgc2VsZWN0ZWRGZWF0dXJlID0gcGFyc2VHZW9Kc29uUmF3RmVhdHVyZShcbiAgICAgICAgZ2V0TGF5ZXJIb3ZlclByb3BWYWx1ZShsYXllckhvdmVyUHJvcD8uZGF0YSwgZmllbGRJZHgpXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgaWYgKHNlbGVjdGVkRmVhdHVyZSkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zZWxlY3RlZEZlYXR1cmUsXG4gICAgICAvLyB1bmlxdWUgaWQgc2hvdWxkIGJlIGFzc2lnbmVkIHRvIGZlYXR1cmVzIGluIHRoZSBlZGl0b3JcbiAgICAgIGlkOiBnZW5lcmF0ZUhhc2hJZCg4KVxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgTWFwUG9wb3ZlclByb3BzID0ge1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbiAgZnJvemVuPzogYm9vbGVhbjtcbiAgY29vcmRpbmF0ZTogW251bWJlciwgbnVtYmVyXSB8IGJvb2xlYW47XG4gIGxheWVySG92ZXJQcm9wOiBMYXllckhvdmVyUHJvcCB8IG51bGw7XG4gIGlzQmFzZT86IGJvb2xlYW47XG4gIHpvb206IG51bWJlcjtcbiAgY29udGFpbmVyPzogSFRNTEVsZW1lbnQgfCBudWxsO1xuICBvbkNsb3NlOiAoKSA9PiB2b2lkO1xuICBvblNldEZlYXR1cmVzOiAoZmVhdHVyZXM6IEZlYXR1cmVbXSkgPT4gYW55O1xuICBzZXRTZWxlY3RlZEZlYXR1cmU6IChmZWF0dXJlOiBGZWF0dXJlIHwgbnVsbCwgY2xpY2tDb250ZXh0PzogRmVhdHVyZVNlbGVjdGlvbkNvbnRleHQpID0+IGFueTtcbiAgZmVhdHVyZUNvbGxlY3Rpb24/OiB7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIGZlYXR1cmVzOiBGZWF0dXJlW107XG4gIH07XG59O1xuXG50eXBlIEludGxQcm9wcyA9IHtcbiAgaW50bDogSW50bFNoYXBlO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTWFwUG9wb3ZlckZhY3RvcnkoXG4gIE1hcFBvcG92ZXJDb250ZW50OiBSZXR1cm5UeXBlPHR5cGVvZiBNYXBQb3BvdmVyQ29udGVudEZhY3Rvcnk+XG4pIHtcbiAgY29uc3QgTWFwUG9wb3ZlcjogUmVhY3QuRkM8TWFwUG9wb3ZlclByb3BzICYgSW50bFByb3BzPiA9ICh7XG4gICAgeCxcbiAgICB5LFxuICAgIGZyb3plbixcbiAgICBjb29yZGluYXRlLFxuICAgIGxheWVySG92ZXJQcm9wLFxuICAgIGlzQmFzZSxcbiAgICB6b29tLFxuICAgIGNvbnRhaW5lcixcbiAgICBvbkNsb3NlLFxuICAgIG9uU2V0RmVhdHVyZXMsXG4gICAgc2V0U2VsZWN0ZWRGZWF0dXJlLFxuICAgIGZlYXR1cmVDb2xsZWN0aW9uXG4gIH0pID0+IHtcbiAgICBjb25zdCBbaG9yaXpvbnRhbFBsYWNlbWVudCwgc2V0SG9yaXpvbnRhbFBsYWNlbWVudF0gPSB1c2VTdGF0ZSgnc3RhcnQnKTtcbiAgICBjb25zdCBtb3ZlTGVmdCA9ICgpID0+IHNldEhvcml6b250YWxQbGFjZW1lbnQoJ2VuZCcpO1xuICAgIGNvbnN0IG1vdmVSaWdodCA9ICgpID0+IHNldEhvcml6b250YWxQbGFjZW1lbnQoJ3N0YXJ0Jyk7XG4gICAgY29uc3Qgcm9vdENvbnRleHQgPSB1c2VDb250ZXh0KFJvb3RDb250ZXh0KTtcbiAgICBjb25zdCB7cmVmcywgY29udGV4dCwgZmxvYXRpbmdTdHlsZXN9ID0gdXNlRmxvYXRpbmcoe1xuICAgICAgcGxhY2VtZW50OiBgJHtob3Jpem9udGFsUGxhY2VtZW50ID09ICdlbmQnID8gJ2xlZnQnIDogJ3JpZ2h0J30tc3RhcnRgLFxuICAgICAgbWlkZGxld2FyZTogW29mZnNldCh7bWFpbkF4aXM6IDIwLCBhbGlnbm1lbnRBeGlzOiAyMH0pLCBmbGlwKCldXG4gICAgfSk7XG4gICAgY29uc3Qgb25TZXRTZWxlY3RlZEZlYXR1cmUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBjb25zdCBjbGlja0NvbnRleHQgPSB7XG4gICAgICAgIG1hcEluZGV4OiAwLFxuICAgICAgICByaWdodENsaWNrOiB0cnVlLFxuICAgICAgICBwb3NpdGlvbjoge3gsIHl9XG4gICAgICB9O1xuICAgICAgY29uc3Qgc2VsZWN0ZWRGZWF0dXJlID0gZ2V0U2VsZWN0ZWRGZWF0dXJlKGxheWVySG92ZXJQcm9wKTtcbiAgICAgIGlmIChzZWxlY3RlZEZlYXR1cmUpIHtcbiAgICAgICAgc2V0U2VsZWN0ZWRGZWF0dXJlKHNlbGVjdGVkRmVhdHVyZSwgY2xpY2tDb250ZXh0KTtcbiAgICAgICAgY29uc3QgdXBkYXRlZEZlYXR1cmVzID0gZmVhdHVyZUNvbGxlY3Rpb25cbiAgICAgICAgICA/IFsuLi5mZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlcywgc2VsZWN0ZWRGZWF0dXJlXVxuICAgICAgICAgIDogW3NlbGVjdGVkRmVhdHVyZV07XG4gICAgICAgIG9uU2V0RmVhdHVyZXModXBkYXRlZEZlYXR1cmVzKTtcbiAgICAgIH1cbiAgICAgIG9uQ2xvc2UoKTtcbiAgICB9LCBbb25DbG9zZSwgb25TZXRGZWF0dXJlcywgeCwgeSwgc2V0U2VsZWN0ZWRGZWF0dXJlLCBsYXllckhvdmVyUHJvcCwgZmVhdHVyZUNvbGxlY3Rpb25dKTtcblxuICAgIGNvbnN0IGNvbnRhaW5lckJvdW5kcyA9IGNvbnRhaW5lcj8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgY2xpZW50UG9pbnQgPSB1c2VDbGllbnRQb2ludChjb250ZXh0LCB7XG4gICAgICB4OiAoY29udGFpbmVyQm91bmRzPy5sZWZ0IHx8IDApICsgeCxcbiAgICAgIHk6IChjb250YWluZXJCb3VuZHM/LnRvcCB8fCAwKSArIHlcbiAgICB9KTtcbiAgICBjb25zdCB7Z2V0RmxvYXRpbmdQcm9wc30gPSB1c2VJbnRlcmFjdGlvbnMoW2NsaWVudFBvaW50XSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEZsb2F0aW5nUG9ydGFsIHJvb3Q9e3Jvb3RDb250ZXh0Py5jdXJyZW50fT5cbiAgICAgICAgPFN0eWxlZE1hcFBvcG92ZXJcbiAgICAgICAgICBjbGFzc05hbWU9XCJtYXAtcG9wb3ZlclwiXG4gICAgICAgICAgcmVmPXtyZWZzLnNldEZsb2F0aW5nfVxuICAgICAgICAgIHN0eWxlPXtmbG9hdGluZ1N0eWxlc31cbiAgICAgICAgICB7Li4uZ2V0RmxvYXRpbmdQcm9wcygpfVxuICAgICAgICA+XG4gICAgICAgICAge2Zyb3plbiA/IChcbiAgICAgICAgICAgIDxQaW5uZWRCdXR0b25zPlxuICAgICAgICAgICAgICB7aG9yaXpvbnRhbFBsYWNlbWVudCA9PT0gJ3N0YXJ0JyAmJiAoXG4gICAgICAgICAgICAgICAgPFN0eWxlZEljb24gY2xhc3NOYW1lPVwicG9wb3Zlci1hcnJvdy1sZWZ0XCIgb25DbGljaz17bW92ZUxlZnR9PlxuICAgICAgICAgICAgICAgICAgPEFycm93TGVmdCAvPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkSWNvbj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPFN0eWxlZEljb24gY2xhc3NOYW1lPVwicG9wb3Zlci1waW5cIiBvbkNsaWNrPXtvbkNsb3NlfT5cbiAgICAgICAgICAgICAgICA8UGluIGhlaWdodD1cIjE2cHhcIiAvPlxuICAgICAgICAgICAgICA8L1N0eWxlZEljb24+XG4gICAgICAgICAgICAgIHtob3Jpem9udGFsUGxhY2VtZW50ID09PSAnZW5kJyAmJiAoXG4gICAgICAgICAgICAgICAgPFN0eWxlZEljb24gY2xhc3NOYW1lPVwicG9wb3Zlci1hcnJvdy1yaWdodFwiIG9uQ2xpY2s9e21vdmVSaWdodH0+XG4gICAgICAgICAgICAgICAgICA8QXJyb3dSaWdodCAvPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkSWNvbj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge2lzQmFzZSAmJiAoXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcmltYXJ5LWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cIm1hcFBvcG92ZXIucHJpbWFyeVwiIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1Bpbm5lZEJ1dHRvbnM+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPFBvcG92ZXJDb250ZW50PlxuICAgICAgICAgICAgPE1hcFBvcG92ZXJDb250ZW50XG4gICAgICAgICAgICAgIGNvb3JkaW5hdGU9e2Nvb3JkaW5hdGV9XG4gICAgICAgICAgICAgIHpvb209e3pvb219XG4gICAgICAgICAgICAgIGxheWVySG92ZXJQcm9wPXtsYXllckhvdmVyUHJvcH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9Qb3BvdmVyQ29udGVudD5cbiAgICAgICAgICB7bGF5ZXJIb3ZlclByb3A/LmxheWVyPy50eXBlICYmXG4gICAgICAgICAgU0VMRUNUQUJMRV9MQVlFUlMuaW5jbHVkZXMobGF5ZXJIb3ZlclByb3A/LmxheWVyPy50eXBlKSAmJlxuICAgICAgICAgIGZyb3plbiA/IChcbiAgICAgICAgICAgIDxTdHlsZWRTZWxlY3RHZW9tZXRyeSBjbGFzc05hbWU9XCJzZWxlY3QtZ2VvbWV0cnlcIiBvbkNsaWNrPXtvblNldFNlbGVjdGVkRmVhdHVyZX0+XG4gICAgICAgICAgICAgIDxDdXJzb3JQb2ludCAvPlxuICAgICAgICAgICAgICBTZWxlY3QgR2VvbWV0cnlcbiAgICAgICAgICAgIDwvU3R5bGVkU2VsZWN0R2VvbWV0cnk+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvU3R5bGVkTWFwUG9wb3Zlcj5cbiAgICAgIDwvRmxvYXRpbmdQb3J0YWw+XG4gICAgKTtcbiAgfTtcbiAgcmV0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