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
@@ -319,7 +319,6 @@ function _processFileData() {
319
319
  case 0:
320
320
  content = _ref2.content, fileCache = _ref2.fileCache;
321
321
  fileName = content.fileName, data = content.data;
322
- console.log('Processing file', fileName);
323
322
  // generate unique id with length of 4 using fileName string
324
323
  id = (0, _utils.generateHashIdFromString)(fileName); // decide on which table class to use based on application config
325
324
  table = (_getApplicationConfig = (0, _utils.getApplicationConfig)().table) !== null && _getApplicationConfig !== void 0 ? _getApplicationConfig : _table.KeplerTable;
@@ -346,21 +345,21 @@ function _processFileData() {
346
345
  }
347
346
  }
348
347
  if (!(format && processor)) {
349
- _context4.next = 19;
348
+ _context4.next = 18;
350
349
  break;
351
350
  }
352
- _context4.prev = 7;
353
- _context4.next = 10;
351
+ _context4.prev = 6;
352
+ _context4.next = 9;
354
353
  return processor(data);
355
- case 10:
354
+ case 9:
356
355
  result = _context4.sent;
357
- _context4.next = 16;
356
+ _context4.next = 15;
358
357
  break;
359
- case 13:
360
- _context4.prev = 13;
361
- _context4.t0 = _context4["catch"](7);
358
+ case 12:
359
+ _context4.prev = 12;
360
+ _context4.t0 = _context4["catch"](6);
362
361
  throw new Error("Can not process uploaded file, ".concat((0, _utils.getError)(_context4.t0)));
363
- case 16:
362
+ case 15:
364
363
  return _context4.abrupt("return", [].concat((0, _toConsumableArray2["default"])(fileCache), [{
365
364
  data: result,
366
365
  info: {
@@ -369,13 +368,13 @@ function _processFileData() {
369
368
  format: format
370
369
  }
371
370
  }]));
372
- case 19:
371
+ case 18:
373
372
  throw new Error('Can not process uploaded file, unknown file format');
374
- case 20:
373
+ case 19:
375
374
  case "end":
376
375
  return _context4.stop();
377
376
  }
378
- }, _callee4, null, [[7, 13]]);
377
+ }, _callee4, null, [[6, 12]]);
379
378
  }));
380
379
  return _processFileData.apply(this, arguments);
381
380
  }
@@ -413,4 +412,4 @@ function filesToDataPayload(fileCache) {
413
412
  datasets: collection.datasets
414
413
  });
415
414
  }
416
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnJvdyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9jb3JlIiwiX2pzb24iLCJfY3N2IiwiX2Fycm93IiwiX3BhcnF1ZXQiLCJfdXRpbHMiLCJfY29tbW9uVXRpbHMiLCJfY29uc3RhbnRzIiwiX3RhYmxlIiwiX2RhdGFQcm9jZXNzb3IiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJfYXN5bmNJdGVyYXRvciIsIlN5bWJvbCIsImFzeW5jSXRlcmF0b3IiLCJpdGVyYXRvciIsIkFzeW5jRnJvbVN5bmNJdGVyYXRvciIsIlR5cGVFcnJvciIsIkFzeW5jRnJvbVN5bmNJdGVyYXRvckNvbnRpbnVhdGlvbiIsIlByb21pc2UiLCJyZWplY3QiLCJkb25lIiwicmVzb2x2ZSIsInZhbHVlIiwidGhlbiIsInMiLCJuZXh0IiwicHJvdG90eXBlIiwiX3JldHVybiIsIl90aHJvdyIsIkJBVENIX1RZUEUiLCJNRVRBREFUQSIsIlBBUlRJQUxfUkVTVUxUIiwiRklOQUxfUkVTVUxUIiwiQ1NWX0xPQURFUl9PUFRJT05TIiwic2hhcGUiLCJkeW5hbWljVHlwaW5nIiwiQVJST1dfTE9BREVSX09QVElPTlMiLCJiYXRjaERlYm91bmNlTXMiLCJQQVJRVUVUX0xPQURFUl9PUFRJT05TIiwiSlNPTl9MT0FERVJfT1BUSU9OUyIsImpzb25wYXRocyIsImlzQXJyb3dUYWJsZSIsInRhYmxlIiwiQm9vbGVhbiIsIlRhYmxlIiwiaXNBcnJvd0RhdGEiLCJkYXRhIiwiQXJyYXkiLCJpc0FycmF5Iiwic2NoZW1hIiwiaXNHZW9Kc29uIiwianNvbiIsImlzUGxhaW5PYmplY3QiLCJpc0ZlYXR1cmUiLCJpc0ZlYXR1cmVDb2xsZWN0aW9uIiwidHlwZSIsImdlb21ldHJ5IiwiZmVhdHVyZXMiLCJpc1Jvd09iamVjdCIsImlzS2VwbGVyR2xNYXAiLCJkYXRhc2V0cyIsImNvbmZpZyIsImluZm8iLCJhcHAiLCJtYWtlUHJvZ3Jlc3NJdGVyYXRvciIsIl94IiwiX3gyIiwiX21ha2VQcm9ncmVzc0l0ZXJhdG9yIiwiX3dyYXBBc3luY0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsInJvd0NvdW50IiwiX2l0ZXJhdG9yQWJydXB0Q29tcGxldGlvbiIsIl9kaWRJdGVyYXRvckVycm9yIiwiX2l0ZXJhdG9yRXJyb3IiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImJhdGNoIiwicm93Q291bnRJbkJhdGNoIiwicGVyY2VudCIsInByb2dyZXNzIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwiX2F3YWl0QXN5bmNHZW5lcmF0b3IyIiwic2VudCIsIk51bWJlciIsImlzRmluaXRlIiwiYnl0ZXNVc2VkIiwic2l6ZSIsInQwIiwiZmluaXNoIiwic3RvcCIsInJlYWRCYXRjaCIsIl94MyIsIl94NCIsIl9yZWFkQmF0Y2giLCJfY2FsbGVlMiIsImZpbGVOYW1lIiwicmVzdWx0IiwiYmF0Y2hlcyIsIl9pdGVyYXRvckFicnVwdENvbXBsZXRpb24yIiwiX2RpZEl0ZXJhdG9yRXJyb3IyIiwiX2l0ZXJhdG9yRXJyb3IyIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsInN0cmVhbWluZ1BhdGgiLCJiYXRjaERhdGEiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJiYXRjaFR5cGUiLCJjb250YWluZXIiLCJqc29ucGF0aCIsIl9KU09OUGF0aCIsInNldEZpZWxkQXRQYXRoIiwiaGVhZGVycyIsInJlYWRGaWxlSW5CYXRjaGVzIiwiX3g1IiwiX3JlYWRGaWxlSW5CYXRjaGVzIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX2NhbGxlZTMiLCJfcmVmIiwiZmlsZSIsIl9yZWYkbG9hZGVycyIsImxvYWRlcnMiLCJfcmVmJGxvYWRPcHRpb25zIiwibG9hZE9wdGlvbnMiLCJiYXRjaEl0ZXJhdG9yIiwicHJvZ3Jlc3NJdGVyYXRvciIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsIkpTT05Mb2FkZXIiLCJDU1ZMb2FkZXIiLCJHZW9BcnJvd0xvYWRlciIsIlBhcnF1ZXRXYXNtTG9hZGVyIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImNzdiIsInBhcnF1ZXQiLCJtZXRhZGF0YSIsInBhcnNlSW5CYXRjaGVzIiwiYWJydXB0IiwibmFtZSIsInByb2Nlc3NGaWxlRGF0YSIsIl94NiIsIl9wcm9jZXNzRmlsZURhdGEiLCJfY2FsbGVlNCIsIl9yZWYyIiwiX2dldEFwcGxpY2F0aW9uQ29uZmlnIiwiY29udGVudCIsImZpbGVDYWNoZSIsImZvcm1hdCIsInByb2Nlc3NvciIsImlkIiwicHJvY2Vzc29yUmVzdWx0IiwiX2NhbGxlZTQkIiwiX2NvbnRleHQ0IiwiY29uc29sZSIsImxvZyIsImdlbmVyYXRlSGFzaElkRnJvbVN0cmluZyIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwiS2VwbGVyVGFibGUiLCJnZXRGaWxlUHJvY2Vzc29yIiwiREFUQVNFVF9GT1JNQVRTIiwicHJvY2Vzc0Fycm93QmF0Y2hlcyIsImtlcGxlcmdsIiwicHJvY2Vzc0tlcGxlcmdsSlNPTiIsInJvdyIsInByb2Nlc3NSb3dPYmplY3QiLCJnZW9qc29uIiwicHJvY2Vzc0dlb2pzb24iLCJFcnJvciIsImdldEVycm9yIiwibGFiZWwiLCJmaWxlc1RvRGF0YVBheWxvYWQiLCJjb2xsZWN0aW9uIiwicmVkdWNlIiwiYWNjdSIsImtlcGxlck1hcHMiLCJvcHRpb25zIiwiY2VudGVyTWFwIiwibWFwU3RhdGUiLCJuZXdEYXRhc2V0IiwiZ2VuZXJhdGVIYXNoSWQiXSwic291cmNlcyI6WyIuLi9zcmMvZmlsZS1oYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCAqIGFzIGFycm93IGZyb20gJ2FwYWNoZS1hcnJvdyc7XG5pbXBvcnQge3BhcnNlSW5CYXRjaGVzfSBmcm9tICdAbG9hZGVycy5nbC9jb3JlJztcbmltcG9ydCB7SlNPTkxvYWRlciwgX0pTT05QYXRofSBmcm9tICdAbG9hZGVycy5nbC9qc29uJztcbmltcG9ydCB7Q1NWTG9hZGVyfSBmcm9tICdAbG9hZGVycy5nbC9jc3YnO1xuaW1wb3J0IHtHZW9BcnJvd0xvYWRlcn0gZnJvbSAnQGxvYWRlcnMuZ2wvYXJyb3cnO1xuaW1wb3J0IHtQYXJxdWV0V2FzbUxvYWRlcn0gZnJvbSAnQGxvYWRlcnMuZ2wvcGFycXVldCc7XG5pbXBvcnQge0xvYWRlcn0gZnJvbSAnQGxvYWRlcnMuZ2wvbG9hZGVyLXV0aWxzJztcbmltcG9ydCB7XG4gIGlzUGxhaW5PYmplY3QsXG4gIGdlbmVyYXRlSGFzaElkRnJvbVN0cmluZyxcbiAgZ2V0QXBwbGljYXRpb25Db25maWcsXG4gIGdldEVycm9yXG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtnZW5lcmF0ZUhhc2hJZH0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHtEQVRBU0VUX0ZPUk1BVFN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7QWRkRGF0YVRvTWFwUGF5bG9hZCwgRmVhdHVyZSwgTG9hZGVkTWFwLCBQcm9jZXNzb3JSZXN1bHR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtLZXBsZXJUYWJsZX0gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5pbXBvcnQge0ZlYXR1cmVDb2xsZWN0aW9ufSBmcm9tICdAdHVyZi9oZWxwZXJzJztcblxuaW1wb3J0IHtcbiAgcHJvY2Vzc0Fycm93QmF0Y2hlcyxcbiAgcHJvY2Vzc0dlb2pzb24sXG4gIHByb2Nlc3NLZXBsZXJnbEpTT04sXG4gIHByb2Nlc3NSb3dPYmplY3Rcbn0gZnJvbSAnLi9kYXRhLXByb2Nlc3Nvcic7XG5cbmltcG9ydCB7RmlsZUNhY2hlSXRlbSwgVmFsaWRLZXBsZXJHbE1hcH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IEJBVENIX1RZUEUgPSB7XG4gIE1FVEFEQVRBOiAnbWV0YWRhdGEnLFxuICBQQVJUSUFMX1JFU1VMVDogJ3BhcnRpYWwtcmVzdWx0JyxcbiAgRklOQUxfUkVTVUxUOiAnZmluYWwtcmVzdWx0J1xufTtcblxuY29uc3QgQ1NWX0xPQURFUl9PUFRJT05TID0ge1xuICBzaGFwZTogJ29iamVjdC1yb3ctdGFibGUnLFxuICBkeW5hbWljVHlwaW5nOiBmYWxzZSAvLyBub3Qgd29ya2luZyBmb3Igbm93XG59O1xuXG5jb25zdCBBUlJPV19MT0FERVJfT1BUSU9OUyA9IHtcbiAgc2hhcGU6ICdhcnJvdy10YWJsZScsXG4gIGJhdGNoRGVib3VuY2VNczogMTAgLy8gdGltZSB0byBkZWxheSBiZXR3ZWVuIGJhdGNoZXMsIGZvciBpbmNyZW1lbnRhbCBsb2FkaW5nXG59O1xuXG5jb25zdCBQQVJRVUVUX0xPQURFUl9PUFRJT05TID0ge1xuICBzaGFwZTogJ2Fycm93LXRhYmxlJ1xufTtcblxuY29uc3QgSlNPTl9MT0FERVJfT1BUSU9OUyA9IHtcbiAgc2hhcGU6ICdvYmplY3Qtcm93LXRhYmxlJyxcbiAgLy8gaW5zdHJ1Y3QgbG9hZGVycy5nbCBvbiB3aGF0IGpzb24gcGF0aHMgdG8gc3RyZWFtXG4gIGpzb25wYXRoczogW1xuICAgICckJywgLy8gSlNPTiBSb3cgYXJyYXlcbiAgICAnJC5mZWF0dXJlcycsIC8vIEdlb0pTT05cbiAgICAnJC5kYXRhc2V0cycgLy8gS2VwbGVyR0wgSlNPTlxuICBdXG59O1xuXG5leHBvcnQgdHlwZSBQcm9jZXNzRmlsZURhdGFDb250ZW50ID0ge1xuICBkYXRhOiB1bmtub3duO1xuICBmaWxlTmFtZTogc3RyaW5nO1xuICBsZW5ndGg/OiBudW1iZXI7XG4gIHByb2dyZXNzPzoge3Jvd0NvdW50PzogbnVtYmVyOyByb3dDb3VudEluQmF0Y2g/OiBudW1iZXI7IHBlcmNlbnQ/OiBudW1iZXJ9O1xuICAvKiogIG1ldGFkYXRhIGUuZy4gZm9yIGFycm93IGRhdGEsIG1ldGFkYXRhIGNvdWxkIGJlIHRoZSBzY2hlbWEuZmllbGRzICovXG4gIG1ldGFkYXRhPzogTWFwPHN0cmluZywgc3RyaW5nPjtcbn07XG5cbi8qKlxuICogY2hlY2sgaWYgdGFibGUgaXMgYW4gQXJyb3dUYWJsZSBvYmplY3RcbiAqIEBwYXJhbSB0YWJsZSAtIG9iamVjdCB0byBjaGVja1xuICogQHJldHVybnMge2Jvb2xlYW59IC0gdHJ1ZSBpZiB0YWJsZSBpcyBhbiBBcnJvd1RhYmxlIG9iamVjdCB0eXBlIGd1YXJkZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQXJyb3dUYWJsZSh0YWJsZTogYW55KTogdGFibGUgaXMgYXJyb3cuVGFibGUge1xuICByZXR1cm4gQm9vbGVhbih0YWJsZSBpbnN0YW5jZW9mIGFycm93LlRhYmxlKTtcbn1cblxuLyoqXG4gKiBjaGVjayBpZiBkYXRhIGlzIGFuIEFycm93RGF0YSBvYmplY3QsIHdoaWNoIGlzIGFuIGFycmF5IG9mIFJlY29yZEJhdGNoXG4gKiBAcGFyYW0gZGF0YSAtIG9iamVjdCB0byBjaGVja1xuICogQHJldHVybnMge2Jvb2xlYW59IC0gdHJ1ZSBpZiBkYXRhIGlzIGFuIEFycm93RGF0YSBvYmplY3QgdHlwZSBndWFyZGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Fycm93RGF0YShkYXRhOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZGF0YSkgJiYgQm9vbGVhbihkYXRhLmxlbmd0aCAmJiBkYXRhWzBdLmRhdGEgJiYgZGF0YVswXS5zY2hlbWEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNHZW9Kc29uKGpzb246IHVua25vd24pOiBqc29uIGlzIEZlYXR1cmUgfCBGZWF0dXJlQ29sbGVjdGlvbiB7XG4gIC8vIGpzb24gY2FuIGJlIGZlYXR1cmUgY29sbGVjdGlvblxuICAvLyBvciBzaW5nbGUgZmVhdHVyZVxuICByZXR1cm4gaXNQbGFpbk9iamVjdChqc29uKSAmJiAoaXNGZWF0dXJlKGpzb24pIHx8IGlzRmVhdHVyZUNvbGxlY3Rpb24oanNvbikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNGZWF0dXJlKGpzb246IHVua25vd24pOiBqc29uIGlzIEZlYXR1cmUge1xuICByZXR1cm4gaXNQbGFpbk9iamVjdChqc29uKSAmJiBqc29uLnR5cGUgPT09ICdGZWF0dXJlJyAmJiBCb29sZWFuKGpzb24uZ2VvbWV0cnkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNGZWF0dXJlQ29sbGVjdGlvbihqc29uOiB1bmtub3duKToganNvbiBpcyBGZWF0dXJlQ29sbGVjdGlvbiB7XG4gIHJldHVybiBpc1BsYWluT2JqZWN0KGpzb24pICYmIGpzb24udHlwZSA9PT0gJ0ZlYXR1cmVDb2xsZWN0aW9uJyAmJiBCb29sZWFuKGpzb24uZmVhdHVyZXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSb3dPYmplY3QoanNvbjogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGpzb24pICYmIGlzUGxhaW5PYmplY3QoanNvblswXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0tlcGxlckdsTWFwKGpzb246IHVua25vd24pOiBqc29uIGlzIFZhbGlkS2VwbGVyR2xNYXAge1xuICByZXR1cm4gQm9vbGVhbihcbiAgICBpc1BsYWluT2JqZWN0KGpzb24pICYmXG4gICAgICBqc29uLmRhdGFzZXRzICYmXG4gICAgICBqc29uLmNvbmZpZyAmJlxuICAgICAganNvbi5pbmZvICYmXG4gICAgICBpc1BsYWluT2JqZWN0KGpzb24uaW5mbykgJiZcbiAgICAgIGpzb24uaW5mby5hcHAgPT09ICdrZXBsZXIuZ2wnXG4gICk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiogbWFrZVByb2dyZXNzSXRlcmF0b3IoXG4gIGFzeW5jSXRlcmF0b3I6IEFzeW5jSXRlcmFibGU8YW55PixcbiAgaW5mbzoge3NpemU6IG51bWJlcn1cbik6IEFzeW5jR2VuZXJhdG9yIHtcbiAgbGV0IHJvd0NvdW50ID0gMDtcblxuICBmb3IgYXdhaXQgKGNvbnN0IGJhdGNoIG9mIGFzeW5jSXRlcmF0b3IpIHtcbiAgICAvLyB0aGUgbGVuZ3RoIGNvdWxkIGJlIHN0b3JlZCBpbiBgYmF0Y2gubGVuZ3RoYCBmb3IgYXJyb3cgYmF0Y2hcbiAgICBjb25zdCByb3dDb3VudEluQmF0Y2ggPSAoYmF0Y2guZGF0YSAmJiAoYmF0Y2guZGF0YS5sZW5ndGggfHwgYmF0Y2gubGVuZ3RoKSkgfHwgMDtcbiAgICByb3dDb3VudCArPSByb3dDb3VudEluQmF0Y2g7XG4gICAgY29uc3QgcGVyY2VudCA9IE51bWJlci5pc0Zpbml0ZShiYXRjaC5ieXRlc1VzZWQpID8gYmF0Y2guYnl0ZXNVc2VkIC8gaW5mby5zaXplIDogbnVsbDtcblxuICAgIC8vIFVwZGF0ZSBwcm9ncmVzcyBvYmplY3RcbiAgICBjb25zdCBwcm9ncmVzcyA9IHtcbiAgICAgIHJvd0NvdW50LFxuICAgICAgcm93Q291bnRJbkJhdGNoLFxuICAgICAgLi4uKE51bWJlci5pc0Zpbml0ZShwZXJjZW50KSA/IHtwZXJjZW50fSA6IHt9KVxuICAgIH07XG5cbiAgICB5aWVsZCB7Li4uYmF0Y2gsIHByb2dyZXNzfTtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uKiByZWFkQmF0Y2goXG4gIGFzeW5jSXRlcmF0b3I6IEFzeW5jSXRlcmFibGU8YW55PixcbiAgZmlsZU5hbWU6IHN0cmluZ1xuKTogQXN5bmNHZW5lcmF0b3Ige1xuICBsZXQgcmVzdWx0ID0gbnVsbDtcbiAgY29uc3QgYmF0Y2hlcyA9IDxhbnk+W107XG4gIGZvciBhd2FpdCAoY29uc3QgYmF0Y2ggb2YgYXN5bmNJdGVyYXRvcikge1xuICAgIC8vIExhc3QgYmF0Y2ggd2lsbCBoYXZlIHRoaXMgc3BlY2lhbCB0eXBlIGFuZCB3aWxsIHByb3ZpZGUgYWxsIHRoZSByb290XG4gICAgLy8gcHJvcGVydGllcyBvZiB0aGUgcGFyc2VkIGRvY3VtZW50LlxuICAgIC8vIE9ubHkganNvbiBwYXJzZSB3aWxsIGhhdmUgYEZJTkFMX1JFU1VMVGBcbiAgICBpZiAoYmF0Y2guYmF0Y2hUeXBlID09PSBCQVRDSF9UWVBFLkZJTkFMX1JFU1VMVCkge1xuICAgICAgaWYgKGJhdGNoLmNvbnRhaW5lcikge1xuICAgICAgICByZXN1bHQgPSB7Li4uYmF0Y2guY29udGFpbmVyfTtcbiAgICAgIH1cbiAgICAgIC8vIFNldCB0aGUgc3RyZWFtZWQgZGF0YSBjb3JyZWN0bHkgaXMgQmF0Y2gganNvbiBwYXRoIGlzIHNldFxuICAgICAgLy8gYW5kIHRoZSBwYXRoIHN0cmVhbWVkIGlzIG5vdCB0aGUgdG9wIGxldmVsIG9iamVjdCAoanNvbnBhdGggPSAnJCcpXG4gICAgICBpZiAoYmF0Y2guanNvbnBhdGggJiYgYmF0Y2guanNvbnBhdGgubGVuZ3RoID4gMSkge1xuICAgICAgICBjb25zdCBzdHJlYW1pbmdQYXRoID0gbmV3IF9KU09OUGF0aChiYXRjaC5qc29ucGF0aCk7XG4gICAgICAgIHN0cmVhbWluZ1BhdGguc2V0RmllbGRBdFBhdGgocmVzdWx0LCBiYXRjaGVzKTtcbiAgICAgIH0gZWxzZSBpZiAoYmF0Y2guanNvbnBhdGggJiYgYmF0Y2guanNvbnBhdGgubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIC8vIFRoZSBzdHJlYW1lZCBvYmplY3QgaXMgYSBST1cgSlNPTi1iYXRjaCAoanNvbnBhdGggPSAnJCcpXG4gICAgICAgIC8vIHJvdyBvYmplY3RzXG4gICAgICAgIHJlc3VsdCA9IGJhdGNoZXM7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGJhdGNoRGF0YSA9IGlzQXJyb3dUYWJsZShiYXRjaC5kYXRhKSA/IGJhdGNoLmRhdGEuYmF0Y2hlcyA6IGJhdGNoLmRhdGE7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJhdGNoRGF0YT8ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYmF0Y2hlcy5wdXNoKGJhdGNoRGF0YVtpXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgeWllbGQge1xuICAgICAgLi4uYmF0Y2gsXG4gICAgICAuLi4oYmF0Y2guc2NoZW1hID8ge2hlYWRlcnM6IE9iamVjdC5rZXlzKGJhdGNoLnNjaGVtYSl9IDoge30pLFxuICAgICAgZmlsZU5hbWUsXG4gICAgICAvLyBpZiBkYXRhc2V0IGlzIENTViwgZGF0YSBpcyBzZXQgdG8gdGhlIHJhdyBiYXRjaGVzXG4gICAgICBkYXRhOiByZXN1bHQgPyByZXN1bHQgOiBiYXRjaGVzXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEZpbGVJbkJhdGNoZXMoe1xuICBmaWxlLFxuICBsb2FkZXJzID0gW10sXG4gIGxvYWRPcHRpb25zID0ge31cbn06IHtcbiAgZmlsZTogRmlsZTtcbiAgZmlsZUNhY2hlOiBGaWxlQ2FjaGVJdGVtW107XG4gIGxvYWRlcnM6IExvYWRlcltdO1xuICBsb2FkT3B0aW9uczogYW55O1xufSk6IFByb21pc2U8QXN5bmNHZW5lcmF0b3I+IHtcbiAgbG9hZGVycyA9IFtKU09OTG9hZGVyLCBDU1ZMb2FkZXIsIEdlb0Fycm93TG9hZGVyLCBQYXJxdWV0V2FzbUxvYWRlciwgLi4ubG9hZGVyc107XG4gIGxvYWRPcHRpb25zID0ge1xuICAgIGNzdjogQ1NWX0xPQURFUl9PUFRJT05TLFxuICAgIGFycm93OiBBUlJPV19MT0FERVJfT1BUSU9OUyxcbiAgICBqc29uOiBKU09OX0xPQURFUl9PUFRJT05TLFxuICAgIHBhcnF1ZXQ6IFBBUlFVRVRfTE9BREVSX09QVElPTlMsXG4gICAgbWV0YWRhdGE6IHRydWUsXG4gICAgLi4ubG9hZE9wdGlvbnNcbiAgfTtcblxuICBjb25zdCBiYXRjaEl0ZXJhdG9yID0gYXdhaXQgcGFyc2VJbkJhdGNoZXMoZmlsZSwgbG9hZGVycywgbG9hZE9wdGlvbnMpO1xuICBjb25zdCBwcm9ncmVzc0l0ZXJhdG9yID0gbWFrZVByb2dyZXNzSXRlcmF0b3IoYmF0Y2hJdGVyYXRvciwge3NpemU6IGZpbGUuc2l6ZX0pO1xuXG4gIHJldHVybiByZWFkQmF0Y2gocHJvZ3Jlc3NJdGVyYXRvciwgZmlsZS5uYW1lKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NGaWxlRGF0YSh7XG4gIGNvbnRlbnQsXG4gIGZpbGVDYWNoZVxufToge1xuICBjb250ZW50OiBQcm9jZXNzRmlsZURhdGFDb250ZW50O1xuICBmaWxlQ2FjaGU6IEZpbGVDYWNoZUl0ZW1bXTtcbn0pOiBQcm9taXNlPEZpbGVDYWNoZUl0ZW1bXT4ge1xuICBjb25zdCB7ZmlsZU5hbWUsIGRhdGF9ID0gY29udGVudDtcbiAgbGV0IGZvcm1hdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBsZXQgcHJvY2Vzc29yOiAoKGRhdGE6IGFueSkgPT4gUHJvY2Vzc29yUmVzdWx0IHwgTG9hZGVkTWFwIHwgbnVsbCkgfCB1bmRlZmluZWQ7XG4gIGNvbnNvbGUubG9nKCdQcm9jZXNzaW5nIGZpbGUnLCBmaWxlTmFtZSk7XG4gIC8vIGdlbmVyYXRlIHVuaXF1ZSBpZCB3aXRoIGxlbmd0aCBvZiA0IHVzaW5nIGZpbGVOYW1lIHN0cmluZ1xuICBjb25zdCBpZCA9IGdlbmVyYXRlSGFzaElkRnJvbVN0cmluZyhmaWxlTmFtZSk7XG4gIC8vIGRlY2lkZSBvbiB3aGljaCB0YWJsZSBjbGFzcyB0byB1c2UgYmFzZWQgb24gYXBwbGljYXRpb24gY29uZmlnXG4gIGNvbnN0IHRhYmxlID0gZ2V0QXBwbGljYXRpb25Db25maWcoKS50YWJsZSA/PyBLZXBsZXJUYWJsZTtcblxuICBpZiAodHlwZW9mIHRhYmxlLmdldEZpbGVQcm9jZXNzb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyB1c2UgY3VzdG9tIHByb2Nlc3NvcnMgZnJvbSB0YWJsZSBjbGFzc1xuICAgIGNvbnN0IHByb2Nlc3NvclJlc3VsdCA9IHRhYmxlLmdldEZpbGVQcm9jZXNzb3IoZGF0YSk7XG4gICAgZm9ybWF0ID0gcHJvY2Vzc29yUmVzdWx0LmZvcm1hdDtcbiAgICBwcm9jZXNzb3IgPSBwcm9jZXNzb3JSZXN1bHQucHJvY2Vzc29yO1xuICB9IGVsc2Uge1xuICAgIC8vIHVzZSBkZWZhdWx0IHByb2Nlc3NvcnNcbiAgICBpZiAoaXNBcnJvd0RhdGEoZGF0YSkpIHtcbiAgICAgIGZvcm1hdCA9IERBVEFTRVRfRk9STUFUUy5hcnJvdztcbiAgICAgIHByb2Nlc3NvciA9IHByb2Nlc3NBcnJvd0JhdGNoZXM7XG4gICAgfSBlbHNlIGlmIChpc0tlcGxlckdsTWFwKGRhdGEpKSB7XG4gICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMua2VwbGVyZ2w7XG4gICAgICBwcm9jZXNzb3IgPSBwcm9jZXNzS2VwbGVyZ2xKU09OO1xuICAgIH0gZWxzZSBpZiAoaXNSb3dPYmplY3QoZGF0YSkpIHtcbiAgICAgIC8vIGNzdiBmaWxlIGdvZXMgaGVyZVxuICAgICAgZm9ybWF0ID0gREFUQVNFVF9GT1JNQVRTLnJvdztcbiAgICAgIHByb2Nlc3NvciA9IHByb2Nlc3NSb3dPYmplY3Q7XG4gICAgfSBlbHNlIGlmIChpc0dlb0pzb24oZGF0YSkpIHtcbiAgICAgIGZvcm1hdCA9IERBVEFTRVRfRk9STUFUUy5nZW9qc29uO1xuICAgICAgcHJvY2Vzc29yID0gcHJvY2Vzc0dlb2pzb247XG4gICAgfVxuICB9XG4gIGlmIChmb3JtYXQgJiYgcHJvY2Vzc29yKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtY2F0Y2hcbiAgICBsZXQgcmVzdWx0O1xuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBhd2FpdCBwcm9jZXNzb3IoZGF0YSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2FuIG5vdCBwcm9jZXNzIHVwbG9hZGVkIGZpbGUsICR7Z2V0RXJyb3IoZXJyb3IgYXMgRXJyb3IpfWApO1xuICAgIH1cblxuICAgIHJldHVybiBbXG4gICAgICAuLi5maWxlQ2FjaGUsXG4gICAgICB7XG4gICAgICAgIGRhdGE6IHJlc3VsdCxcbiAgICAgICAgaW5mbzoge1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIGxhYmVsOiBjb250ZW50LmZpbGVOYW1lLFxuICAgICAgICAgIGZvcm1hdFxuICAgICAgICB9XG4gICAgICB9XG4gICAgXTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NhbiBub3QgcHJvY2VzcyB1cGxvYWRlZCBmaWxlLCB1bmtub3duIGZpbGUgZm9ybWF0Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbGVzVG9EYXRhUGF5bG9hZChmaWxlQ2FjaGU6IEZpbGVDYWNoZUl0ZW1bXSk6IEFkZERhdGFUb01hcFBheWxvYWRbXSB7XG4gIC8vIHNlcGVyYXRlIG91dCBmaWxlcyB3aGljaCBjb3VsZCBiZSBhIHNpbmdsZSBkYXRhc2V0cy4gb3IgYSBrZXBsZXJnbCBtYXAganNvblxuICBjb25zdCBjb2xsZWN0aW9uID0gZmlsZUNhY2hlLnJlZHVjZTx7XG4gICAgZGF0YXNldHM6IEZpbGVDYWNoZUl0ZW1bXTtcbiAgICBrZXBsZXJNYXBzOiBBZGREYXRhVG9NYXBQYXlsb2FkW107XG4gIH0+KFxuICAgIChhY2N1LCBmaWxlKSA9PiB7XG4gICAgICBjb25zdCB7ZGF0YSwgaW5mb30gPSBmaWxlO1xuICAgICAgaWYgKGluZm8/LmZvcm1hdCA9PT0gREFUQVNFVF9GT1JNQVRTLmtlcGxlcmdsKSB7XG4gICAgICAgIC8vIGlmIGZpbGUgY29udGFpbnMgYSBzaW5nbGUga2VwbGVyIG1hcCBkYXRhc2V0ICYgY29uZmlnXG4gICAgICAgIGFjY3Uua2VwbGVyTWFwcy5wdXNoKHtcbiAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIGNlbnRlck1hcDogIShkYXRhLmNvbmZpZyAmJiBkYXRhLmNvbmZpZy5tYXBTdGF0ZSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChEQVRBU0VUX0ZPUk1BVFNbaW5mbz8uZm9ybWF0XSkge1xuICAgICAgICAvLyBpZiBmaWxlIGNvbnRhaW5zIG9ubHkgZGF0YVxuICAgICAgICBjb25zdCBuZXdEYXRhc2V0ID0ge1xuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgaW5mbzoge1xuICAgICAgICAgICAgaWQ6IGluZm8/LmlkIHx8IGdlbmVyYXRlSGFzaElkKDQpLFxuICAgICAgICAgICAgLi4uKGluZm8gfHwge30pXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBhY2N1LmRhdGFzZXRzLnB1c2gobmV3RGF0YXNldCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjdTtcbiAgICB9LFxuICAgIHtkYXRhc2V0czogW10sIGtlcGxlck1hcHM6IFtdfVxuICApO1xuXG4gIC8vIGFkZCBrZXBsZXIgbWFwIGZpcnN0IHdpdGggY29uZmlnXG4gIC8vIGFkZCBkYXRhc2V0cyBsYXRlciBpbiBvbmUgYWRkIGRhdGEgY2FsbFxuICByZXR1cm4gY29sbGVjdGlvbi5rZXBsZXJNYXBzLmNvbmNhdCh7ZGF0YXNldHM6IGNvbGxlY3Rpb24uZGF0YXNldHN9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUQsT0FB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
415
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnJvdyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9jb3JlIiwiX2pzb24iLCJfY3N2IiwiX2Fycm93IiwiX3BhcnF1ZXQiLCJfdXRpbHMiLCJfY29tbW9uVXRpbHMiLCJfY29uc3RhbnRzIiwiX3RhYmxlIiwiX2RhdGFQcm9jZXNzb3IiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJfYXN5bmNJdGVyYXRvciIsIlN5bWJvbCIsImFzeW5jSXRlcmF0b3IiLCJpdGVyYXRvciIsIkFzeW5jRnJvbVN5bmNJdGVyYXRvciIsIlR5cGVFcnJvciIsIkFzeW5jRnJvbVN5bmNJdGVyYXRvckNvbnRpbnVhdGlvbiIsIlByb21pc2UiLCJyZWplY3QiLCJkb25lIiwicmVzb2x2ZSIsInZhbHVlIiwidGhlbiIsInMiLCJuZXh0IiwicHJvdG90eXBlIiwiX3JldHVybiIsIl90aHJvdyIsIkJBVENIX1RZUEUiLCJNRVRBREFUQSIsIlBBUlRJQUxfUkVTVUxUIiwiRklOQUxfUkVTVUxUIiwiQ1NWX0xPQURFUl9PUFRJT05TIiwic2hhcGUiLCJkeW5hbWljVHlwaW5nIiwiQVJST1dfTE9BREVSX09QVElPTlMiLCJiYXRjaERlYm91bmNlTXMiLCJQQVJRVUVUX0xPQURFUl9PUFRJT05TIiwiSlNPTl9MT0FERVJfT1BUSU9OUyIsImpzb25wYXRocyIsImlzQXJyb3dUYWJsZSIsInRhYmxlIiwiQm9vbGVhbiIsIlRhYmxlIiwiaXNBcnJvd0RhdGEiLCJkYXRhIiwiQXJyYXkiLCJpc0FycmF5Iiwic2NoZW1hIiwiaXNHZW9Kc29uIiwianNvbiIsImlzUGxhaW5PYmplY3QiLCJpc0ZlYXR1cmUiLCJpc0ZlYXR1cmVDb2xsZWN0aW9uIiwidHlwZSIsImdlb21ldHJ5IiwiZmVhdHVyZXMiLCJpc1Jvd09iamVjdCIsImlzS2VwbGVyR2xNYXAiLCJkYXRhc2V0cyIsImNvbmZpZyIsImluZm8iLCJhcHAiLCJtYWtlUHJvZ3Jlc3NJdGVyYXRvciIsIl94IiwiX3gyIiwiX21ha2VQcm9ncmVzc0l0ZXJhdG9yIiwiX3dyYXBBc3luY0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsInJvd0NvdW50IiwiX2l0ZXJhdG9yQWJydXB0Q29tcGxldGlvbiIsIl9kaWRJdGVyYXRvckVycm9yIiwiX2l0ZXJhdG9yRXJyb3IiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImJhdGNoIiwicm93Q291bnRJbkJhdGNoIiwicGVyY2VudCIsInByb2dyZXNzIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwiX2F3YWl0QXN5bmNHZW5lcmF0b3IyIiwic2VudCIsIk51bWJlciIsImlzRmluaXRlIiwiYnl0ZXNVc2VkIiwic2l6ZSIsInQwIiwiZmluaXNoIiwic3RvcCIsInJlYWRCYXRjaCIsIl94MyIsIl94NCIsIl9yZWFkQmF0Y2giLCJfY2FsbGVlMiIsImZpbGVOYW1lIiwicmVzdWx0IiwiYmF0Y2hlcyIsIl9pdGVyYXRvckFicnVwdENvbXBsZXRpb24yIiwiX2RpZEl0ZXJhdG9yRXJyb3IyIiwiX2l0ZXJhdG9yRXJyb3IyIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsInN0cmVhbWluZ1BhdGgiLCJiYXRjaERhdGEiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJiYXRjaFR5cGUiLCJjb250YWluZXIiLCJqc29ucGF0aCIsIl9KU09OUGF0aCIsInNldEZpZWxkQXRQYXRoIiwiaGVhZGVycyIsInJlYWRGaWxlSW5CYXRjaGVzIiwiX3g1IiwiX3JlYWRGaWxlSW5CYXRjaGVzIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX2NhbGxlZTMiLCJfcmVmIiwiZmlsZSIsIl9yZWYkbG9hZGVycyIsImxvYWRlcnMiLCJfcmVmJGxvYWRPcHRpb25zIiwibG9hZE9wdGlvbnMiLCJiYXRjaEl0ZXJhdG9yIiwicHJvZ3Jlc3NJdGVyYXRvciIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsIkpTT05Mb2FkZXIiLCJDU1ZMb2FkZXIiLCJHZW9BcnJvd0xvYWRlciIsIlBhcnF1ZXRXYXNtTG9hZGVyIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImNzdiIsInBhcnF1ZXQiLCJtZXRhZGF0YSIsInBhcnNlSW5CYXRjaGVzIiwiYWJydXB0IiwibmFtZSIsInByb2Nlc3NGaWxlRGF0YSIsIl94NiIsIl9wcm9jZXNzRmlsZURhdGEiLCJfY2FsbGVlNCIsIl9yZWYyIiwiX2dldEFwcGxpY2F0aW9uQ29uZmlnIiwiY29udGVudCIsImZpbGVDYWNoZSIsImZvcm1hdCIsInByb2Nlc3NvciIsImlkIiwicHJvY2Vzc29yUmVzdWx0IiwiX2NhbGxlZTQkIiwiX2NvbnRleHQ0IiwiZ2VuZXJhdGVIYXNoSWRGcm9tU3RyaW5nIiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJLZXBsZXJUYWJsZSIsImdldEZpbGVQcm9jZXNzb3IiLCJEQVRBU0VUX0ZPUk1BVFMiLCJwcm9jZXNzQXJyb3dCYXRjaGVzIiwia2VwbGVyZ2wiLCJwcm9jZXNzS2VwbGVyZ2xKU09OIiwicm93IiwicHJvY2Vzc1Jvd09iamVjdCIsImdlb2pzb24iLCJwcm9jZXNzR2VvanNvbiIsIkVycm9yIiwiZ2V0RXJyb3IiLCJsYWJlbCIsImZpbGVzVG9EYXRhUGF5bG9hZCIsImNvbGxlY3Rpb24iLCJyZWR1Y2UiLCJhY2N1Iiwia2VwbGVyTWFwcyIsIm9wdGlvbnMiLCJjZW50ZXJNYXAiLCJtYXBTdGF0ZSIsIm5ld0RhdGFzZXQiLCJnZW5lcmF0ZUhhc2hJZCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9maWxlLWhhbmRsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0ICogYXMgYXJyb3cgZnJvbSAnYXBhY2hlLWFycm93JztcbmltcG9ydCB7cGFyc2VJbkJhdGNoZXN9IGZyb20gJ0Bsb2FkZXJzLmdsL2NvcmUnO1xuaW1wb3J0IHtKU09OTG9hZGVyLCBfSlNPTlBhdGh9IGZyb20gJ0Bsb2FkZXJzLmdsL2pzb24nO1xuaW1wb3J0IHtDU1ZMb2FkZXJ9IGZyb20gJ0Bsb2FkZXJzLmdsL2Nzdic7XG5pbXBvcnQge0dlb0Fycm93TG9hZGVyfSBmcm9tICdAbG9hZGVycy5nbC9hcnJvdyc7XG5pbXBvcnQge1BhcnF1ZXRXYXNtTG9hZGVyfSBmcm9tICdAbG9hZGVycy5nbC9wYXJxdWV0JztcbmltcG9ydCB7TG9hZGVyfSBmcm9tICdAbG9hZGVycy5nbC9sb2FkZXItdXRpbHMnO1xuaW1wb3J0IHtcbiAgaXNQbGFpbk9iamVjdCxcbiAgZ2VuZXJhdGVIYXNoSWRGcm9tU3RyaW5nLFxuICBnZXRBcHBsaWNhdGlvbkNvbmZpZyxcbiAgZ2V0RXJyb3Jcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge2dlbmVyYXRlSGFzaElkfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5pbXBvcnQge0RBVEFTRVRfRk9STUFUU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtBZGREYXRhVG9NYXBQYXlsb2FkLCBGZWF0dXJlLCBMb2FkZWRNYXAsIFByb2Nlc3NvclJlc3VsdH0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge0tlcGxlclRhYmxlfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB7RmVhdHVyZUNvbGxlY3Rpb259IGZyb20gJ0B0dXJmL2hlbHBlcnMnO1xuXG5pbXBvcnQge1xuICBwcm9jZXNzQXJyb3dCYXRjaGVzLFxuICBwcm9jZXNzR2VvanNvbixcbiAgcHJvY2Vzc0tlcGxlcmdsSlNPTixcbiAgcHJvY2Vzc1Jvd09iamVjdFxufSBmcm9tICcuL2RhdGEtcHJvY2Vzc29yJztcblxuaW1wb3J0IHtGaWxlQ2FjaGVJdGVtLCBWYWxpZEtlcGxlckdsTWFwfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgQkFUQ0hfVFlQRSA9IHtcbiAgTUVUQURBVEE6ICdtZXRhZGF0YScsXG4gIFBBUlRJQUxfUkVTVUxUOiAncGFydGlhbC1yZXN1bHQnLFxuICBGSU5BTF9SRVNVTFQ6ICdmaW5hbC1yZXN1bHQnXG59O1xuXG5jb25zdCBDU1ZfTE9BREVSX09QVElPTlMgPSB7XG4gIHNoYXBlOiAnb2JqZWN0LXJvdy10YWJsZScsXG4gIGR5bmFtaWNUeXBpbmc6IGZhbHNlIC8vIG5vdCB3b3JraW5nIGZvciBub3dcbn07XG5cbmNvbnN0IEFSUk9XX0xPQURFUl9PUFRJT05TID0ge1xuICBzaGFwZTogJ2Fycm93LXRhYmxlJyxcbiAgYmF0Y2hEZWJvdW5jZU1zOiAxMCAvLyB0aW1lIHRvIGRlbGF5IGJldHdlZW4gYmF0Y2hlcywgZm9yIGluY3JlbWVudGFsIGxvYWRpbmdcbn07XG5cbmNvbnN0IFBBUlFVRVRfTE9BREVSX09QVElPTlMgPSB7XG4gIHNoYXBlOiAnYXJyb3ctdGFibGUnXG59O1xuXG5jb25zdCBKU09OX0xPQURFUl9PUFRJT05TID0ge1xuICBzaGFwZTogJ29iamVjdC1yb3ctdGFibGUnLFxuICAvLyBpbnN0cnVjdCBsb2FkZXJzLmdsIG9uIHdoYXQganNvbiBwYXRocyB0byBzdHJlYW1cbiAganNvbnBhdGhzOiBbXG4gICAgJyQnLCAvLyBKU09OIFJvdyBhcnJheVxuICAgICckLmZlYXR1cmVzJywgLy8gR2VvSlNPTlxuICAgICckLmRhdGFzZXRzJyAvLyBLZXBsZXJHTCBKU09OXG4gIF1cbn07XG5cbmV4cG9ydCB0eXBlIFByb2Nlc3NGaWxlRGF0YUNvbnRlbnQgPSB7XG4gIGRhdGE6IHVua25vd247XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG4gIGxlbmd0aD86IG51bWJlcjtcbiAgcHJvZ3Jlc3M/OiB7cm93Q291bnQ/OiBudW1iZXI7IHJvd0NvdW50SW5CYXRjaD86IG51bWJlcjsgcGVyY2VudD86IG51bWJlcn07XG4gIC8qKiAgbWV0YWRhdGEgZS5nLiBmb3IgYXJyb3cgZGF0YSwgbWV0YWRhdGEgY291bGQgYmUgdGhlIHNjaGVtYS5maWVsZHMgKi9cbiAgbWV0YWRhdGE/OiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xufTtcblxuLyoqXG4gKiBjaGVjayBpZiB0YWJsZSBpcyBhbiBBcnJvd1RhYmxlIG9iamVjdFxuICogQHBhcmFtIHRhYmxlIC0gb2JqZWN0IHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0cnVlIGlmIHRhYmxlIGlzIGFuIEFycm93VGFibGUgb2JqZWN0IHR5cGUgZ3VhcmRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBcnJvd1RhYmxlKHRhYmxlOiBhbnkpOiB0YWJsZSBpcyBhcnJvdy5UYWJsZSB7XG4gIHJldHVybiBCb29sZWFuKHRhYmxlIGluc3RhbmNlb2YgYXJyb3cuVGFibGUpO1xufVxuXG4vKipcbiAqIGNoZWNrIGlmIGRhdGEgaXMgYW4gQXJyb3dEYXRhIG9iamVjdCwgd2hpY2ggaXMgYW4gYXJyYXkgb2YgUmVjb3JkQmF0Y2hcbiAqIEBwYXJhbSBkYXRhIC0gb2JqZWN0IHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0cnVlIGlmIGRhdGEgaXMgYW4gQXJyb3dEYXRhIG9iamVjdCB0eXBlIGd1YXJkZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQXJyb3dEYXRhKGRhdGE6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShkYXRhKSAmJiBCb29sZWFuKGRhdGEubGVuZ3RoICYmIGRhdGFbMF0uZGF0YSAmJiBkYXRhWzBdLnNjaGVtYSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0dlb0pzb24oanNvbjogdW5rbm93bik6IGpzb24gaXMgRmVhdHVyZSB8IEZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgLy8ganNvbiBjYW4gYmUgZmVhdHVyZSBjb2xsZWN0aW9uXG4gIC8vIG9yIHNpbmdsZSBmZWF0dXJlXG4gIHJldHVybiBpc1BsYWluT2JqZWN0KGpzb24pICYmIChpc0ZlYXR1cmUoanNvbikgfHwgaXNGZWF0dXJlQ29sbGVjdGlvbihqc29uKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ZlYXR1cmUoanNvbjogdW5rbm93bik6IGpzb24gaXMgRmVhdHVyZSB7XG4gIHJldHVybiBpc1BsYWluT2JqZWN0KGpzb24pICYmIGpzb24udHlwZSA9PT0gJ0ZlYXR1cmUnICYmIEJvb2xlYW4oanNvbi5nZW9tZXRyeSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ZlYXR1cmVDb2xsZWN0aW9uKGpzb246IHVua25vd24pOiBqc29uIGlzIEZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgcmV0dXJuIGlzUGxhaW5PYmplY3QoanNvbikgJiYganNvbi50eXBlID09PSAnRmVhdHVyZUNvbGxlY3Rpb24nICYmIEJvb2xlYW4oanNvbi5mZWF0dXJlcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Jvd09iamVjdChqc29uOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoanNvbikgJiYgaXNQbGFpbk9iamVjdChqc29uWzBdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzS2VwbGVyR2xNYXAoanNvbjogdW5rbm93bik6IGpzb24gaXMgVmFsaWRLZXBsZXJHbE1hcCB7XG4gIHJldHVybiBCb29sZWFuKFxuICAgIGlzUGxhaW5PYmplY3QoanNvbikgJiZcbiAgICAgIGpzb24uZGF0YXNldHMgJiZcbiAgICAgIGpzb24uY29uZmlnICYmXG4gICAgICBqc29uLmluZm8gJiZcbiAgICAgIGlzUGxhaW5PYmplY3QoanNvbi5pbmZvKSAmJlxuICAgICAganNvbi5pbmZvLmFwcCA9PT0gJ2tlcGxlci5nbCdcbiAgKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uKiBtYWtlUHJvZ3Jlc3NJdGVyYXRvcihcbiAgYXN5bmNJdGVyYXRvcjogQXN5bmNJdGVyYWJsZTxhbnk+LFxuICBpbmZvOiB7c2l6ZTogbnVtYmVyfVxuKTogQXN5bmNHZW5lcmF0b3Ige1xuICBsZXQgcm93Q291bnQgPSAwO1xuXG4gIGZvciBhd2FpdCAoY29uc3QgYmF0Y2ggb2YgYXN5bmNJdGVyYXRvcikge1xuICAgIC8vIHRoZSBsZW5ndGggY291bGQgYmUgc3RvcmVkIGluIGBiYXRjaC5sZW5ndGhgIGZvciBhcnJvdyBiYXRjaFxuICAgIGNvbnN0IHJvd0NvdW50SW5CYXRjaCA9IChiYXRjaC5kYXRhICYmIChiYXRjaC5kYXRhLmxlbmd0aCB8fCBiYXRjaC5sZW5ndGgpKSB8fCAwO1xuICAgIHJvd0NvdW50ICs9IHJvd0NvdW50SW5CYXRjaDtcbiAgICBjb25zdCBwZXJjZW50ID0gTnVtYmVyLmlzRmluaXRlKGJhdGNoLmJ5dGVzVXNlZCkgPyBiYXRjaC5ieXRlc1VzZWQgLyBpbmZvLnNpemUgOiBudWxsO1xuXG4gICAgLy8gVXBkYXRlIHByb2dyZXNzIG9iamVjdFxuICAgIGNvbnN0IHByb2dyZXNzID0ge1xuICAgICAgcm93Q291bnQsXG4gICAgICByb3dDb3VudEluQmF0Y2gsXG4gICAgICAuLi4oTnVtYmVyLmlzRmluaXRlKHBlcmNlbnQpID8ge3BlcmNlbnR9IDoge30pXG4gICAgfTtcblxuICAgIHlpZWxkIHsuLi5iYXRjaCwgcHJvZ3Jlc3N9O1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24qIHJlYWRCYXRjaChcbiAgYXN5bmNJdGVyYXRvcjogQXN5bmNJdGVyYWJsZTxhbnk+LFxuICBmaWxlTmFtZTogc3RyaW5nXG4pOiBBc3luY0dlbmVyYXRvciB7XG4gIGxldCByZXN1bHQgPSBudWxsO1xuICBjb25zdCBiYXRjaGVzID0gPGFueT5bXTtcbiAgZm9yIGF3YWl0IChjb25zdCBiYXRjaCBvZiBhc3luY0l0ZXJhdG9yKSB7XG4gICAgLy8gTGFzdCBiYXRjaCB3aWxsIGhhdmUgdGhpcyBzcGVjaWFsIHR5cGUgYW5kIHdpbGwgcHJvdmlkZSBhbGwgdGhlIHJvb3RcbiAgICAvLyBwcm9wZXJ0aWVzIG9mIHRoZSBwYXJzZWQgZG9jdW1lbnQuXG4gICAgLy8gT25seSBqc29uIHBhcnNlIHdpbGwgaGF2ZSBgRklOQUxfUkVTVUxUYFxuICAgIGlmIChiYXRjaC5iYXRjaFR5cGUgPT09IEJBVENIX1RZUEUuRklOQUxfUkVTVUxUKSB7XG4gICAgICBpZiAoYmF0Y2guY29udGFpbmVyKSB7XG4gICAgICAgIHJlc3VsdCA9IHsuLi5iYXRjaC5jb250YWluZXJ9O1xuICAgICAgfVxuICAgICAgLy8gU2V0IHRoZSBzdHJlYW1lZCBkYXRhIGNvcnJlY3RseSBpcyBCYXRjaCBqc29uIHBhdGggaXMgc2V0XG4gICAgICAvLyBhbmQgdGhlIHBhdGggc3RyZWFtZWQgaXMgbm90IHRoZSB0b3AgbGV2ZWwgb2JqZWN0IChqc29ucGF0aCA9ICckJylcbiAgICAgIGlmIChiYXRjaC5qc29ucGF0aCAmJiBiYXRjaC5qc29ucGF0aC5sZW5ndGggPiAxKSB7XG4gICAgICAgIGNvbnN0IHN0cmVhbWluZ1BhdGggPSBuZXcgX0pTT05QYXRoKGJhdGNoLmpzb25wYXRoKTtcbiAgICAgICAgc3RyZWFtaW5nUGF0aC5zZXRGaWVsZEF0UGF0aChyZXN1bHQsIGJhdGNoZXMpO1xuICAgICAgfSBlbHNlIGlmIChiYXRjaC5qc29ucGF0aCAmJiBiYXRjaC5qc29ucGF0aC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgLy8gVGhlIHN0cmVhbWVkIG9iamVjdCBpcyBhIFJPVyBKU09OLWJhdGNoIChqc29ucGF0aCA9ICckJylcbiAgICAgICAgLy8gcm93IG9iamVjdHNcbiAgICAgICAgcmVzdWx0ID0gYmF0Y2hlcztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYmF0Y2hEYXRhID0gaXNBcnJvd1RhYmxlKGJhdGNoLmRhdGEpID8gYmF0Y2guZGF0YS5iYXRjaGVzIDogYmF0Y2guZGF0YTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmF0Y2hEYXRhPy5sZW5ndGg7IGkrKykge1xuICAgICAgICBiYXRjaGVzLnB1c2goYmF0Y2hEYXRhW2ldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB5aWVsZCB7XG4gICAgICAuLi5iYXRjaCxcbiAgICAgIC4uLihiYXRjaC5zY2hlbWEgPyB7aGVhZGVyczogT2JqZWN0LmtleXMoYmF0Y2guc2NoZW1hKX0gOiB7fSksXG4gICAgICBmaWxlTmFtZSxcbiAgICAgIC8vIGlmIGRhdGFzZXQgaXMgQ1NWLCBkYXRhIGlzIHNldCB0byB0aGUgcmF3IGJhdGNoZXNcbiAgICAgIGRhdGE6IHJlc3VsdCA/IHJlc3VsdCA6IGJhdGNoZXNcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkRmlsZUluQmF0Y2hlcyh7XG4gIGZpbGUsXG4gIGxvYWRlcnMgPSBbXSxcbiAgbG9hZE9wdGlvbnMgPSB7fVxufToge1xuICBmaWxlOiBGaWxlO1xuICBmaWxlQ2FjaGU6IEZpbGVDYWNoZUl0ZW1bXTtcbiAgbG9hZGVyczogTG9hZGVyW107XG4gIGxvYWRPcHRpb25zOiBhbnk7XG59KTogUHJvbWlzZTxBc3luY0dlbmVyYXRvcj4ge1xuICBsb2FkZXJzID0gW0pTT05Mb2FkZXIsIENTVkxvYWRlciwgR2VvQXJyb3dMb2FkZXIsIFBhcnF1ZXRXYXNtTG9hZGVyLCAuLi5sb2FkZXJzXTtcbiAgbG9hZE9wdGlvbnMgPSB7XG4gICAgY3N2OiBDU1ZfTE9BREVSX09QVElPTlMsXG4gICAgYXJyb3c6IEFSUk9XX0xPQURFUl9PUFRJT05TLFxuICAgIGpzb246IEpTT05fTE9BREVSX09QVElPTlMsXG4gICAgcGFycXVldDogUEFSUVVFVF9MT0FERVJfT1BUSU9OUyxcbiAgICBtZXRhZGF0YTogdHJ1ZSxcbiAgICAuLi5sb2FkT3B0aW9uc1xuICB9O1xuXG4gIGNvbnN0IGJhdGNoSXRlcmF0b3IgPSBhd2FpdCBwYXJzZUluQmF0Y2hlcyhmaWxlLCBsb2FkZXJzLCBsb2FkT3B0aW9ucyk7XG4gIGNvbnN0IHByb2dyZXNzSXRlcmF0b3IgPSBtYWtlUHJvZ3Jlc3NJdGVyYXRvcihiYXRjaEl0ZXJhdG9yLCB7c2l6ZTogZmlsZS5zaXplfSk7XG5cbiAgcmV0dXJuIHJlYWRCYXRjaChwcm9ncmVzc0l0ZXJhdG9yLCBmaWxlLm5hbWUpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0ZpbGVEYXRhKHtcbiAgY29udGVudCxcbiAgZmlsZUNhY2hlXG59OiB7XG4gIGNvbnRlbnQ6IFByb2Nlc3NGaWxlRGF0YUNvbnRlbnQ7XG4gIGZpbGVDYWNoZTogRmlsZUNhY2hlSXRlbVtdO1xufSk6IFByb21pc2U8RmlsZUNhY2hlSXRlbVtdPiB7XG4gIGNvbnN0IHtmaWxlTmFtZSwgZGF0YX0gPSBjb250ZW50O1xuICBsZXQgZm9ybWF0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGxldCBwcm9jZXNzb3I6ICgoZGF0YTogYW55KSA9PiBQcm9jZXNzb3JSZXN1bHQgfCBMb2FkZWRNYXAgfCBudWxsKSB8IHVuZGVmaW5lZDtcbiAgLy8gZ2VuZXJhdGUgdW5pcXVlIGlkIHdpdGggbGVuZ3RoIG9mIDQgdXNpbmcgZmlsZU5hbWUgc3RyaW5nXG4gIGNvbnN0IGlkID0gZ2VuZXJhdGVIYXNoSWRGcm9tU3RyaW5nKGZpbGVOYW1lKTtcbiAgLy8gZGVjaWRlIG9uIHdoaWNoIHRhYmxlIGNsYXNzIHRvIHVzZSBiYXNlZCBvbiBhcHBsaWNhdGlvbiBjb25maWdcbiAgY29uc3QgdGFibGUgPSBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLnRhYmxlID8/IEtlcGxlclRhYmxlO1xuXG4gIGlmICh0eXBlb2YgdGFibGUuZ2V0RmlsZVByb2Nlc3NvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIHVzZSBjdXN0b20gcHJvY2Vzc29ycyBmcm9tIHRhYmxlIGNsYXNzXG4gICAgY29uc3QgcHJvY2Vzc29yUmVzdWx0ID0gdGFibGUuZ2V0RmlsZVByb2Nlc3NvcihkYXRhKTtcbiAgICBmb3JtYXQgPSBwcm9jZXNzb3JSZXN1bHQuZm9ybWF0O1xuICAgIHByb2Nlc3NvciA9IHByb2Nlc3NvclJlc3VsdC5wcm9jZXNzb3I7XG4gIH0gZWxzZSB7XG4gICAgLy8gdXNlIGRlZmF1bHQgcHJvY2Vzc29yc1xuICAgIGlmIChpc0Fycm93RGF0YShkYXRhKSkge1xuICAgICAgZm9ybWF0ID0gREFUQVNFVF9GT1JNQVRTLmFycm93O1xuICAgICAgcHJvY2Vzc29yID0gcHJvY2Vzc0Fycm93QmF0Y2hlcztcbiAgICB9IGVsc2UgaWYgKGlzS2VwbGVyR2xNYXAoZGF0YSkpIHtcbiAgICAgIGZvcm1hdCA9IERBVEFTRVRfRk9STUFUUy5rZXBsZXJnbDtcbiAgICAgIHByb2Nlc3NvciA9IHByb2Nlc3NLZXBsZXJnbEpTT047XG4gICAgfSBlbHNlIGlmIChpc1Jvd09iamVjdChkYXRhKSkge1xuICAgICAgLy8gY3N2IGZpbGUgZ29lcyBoZXJlXG4gICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMucm93O1xuICAgICAgcHJvY2Vzc29yID0gcHJvY2Vzc1Jvd09iamVjdDtcbiAgICB9IGVsc2UgaWYgKGlzR2VvSnNvbihkYXRhKSkge1xuICAgICAgZm9ybWF0ID0gREFUQVNFVF9GT1JNQVRTLmdlb2pzb247XG4gICAgICBwcm9jZXNzb3IgPSBwcm9jZXNzR2VvanNvbjtcbiAgICB9XG4gIH1cbiAgaWYgKGZvcm1hdCAmJiBwcm9jZXNzb3IpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1jYXRjaFxuICAgIGxldCByZXN1bHQ7XG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGF3YWl0IHByb2Nlc3NvcihkYXRhKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW4gbm90IHByb2Nlc3MgdXBsb2FkZWQgZmlsZSwgJHtnZXRFcnJvcihlcnJvciBhcyBFcnJvcil9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLmZpbGVDYWNoZSxcbiAgICAgIHtcbiAgICAgICAgZGF0YTogcmVzdWx0LFxuICAgICAgICBpbmZvOiB7XG4gICAgICAgICAgaWQsXG4gICAgICAgICAgbGFiZWw6IGNvbnRlbnQuZmlsZU5hbWUsXG4gICAgICAgICAgZm9ybWF0XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2FuIG5vdCBwcm9jZXNzIHVwbG9hZGVkIGZpbGUsIHVua25vd24gZmlsZSBmb3JtYXQnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsZXNUb0RhdGFQYXlsb2FkKGZpbGVDYWNoZTogRmlsZUNhY2hlSXRlbVtdKTogQWRkRGF0YVRvTWFwUGF5bG9hZFtdIHtcbiAgLy8gc2VwZXJhdGUgb3V0IGZpbGVzIHdoaWNoIGNvdWxkIGJlIGEgc2luZ2xlIGRhdGFzZXRzLiBvciBhIGtlcGxlcmdsIG1hcCBqc29uXG4gIGNvbnN0IGNvbGxlY3Rpb24gPSBmaWxlQ2FjaGUucmVkdWNlPHtcbiAgICBkYXRhc2V0czogRmlsZUNhY2hlSXRlbVtdO1xuICAgIGtlcGxlck1hcHM6IEFkZERhdGFUb01hcFBheWxvYWRbXTtcbiAgfT4oXG4gICAgKGFjY3UsIGZpbGUpID0+IHtcbiAgICAgIGNvbnN0IHtkYXRhLCBpbmZvfSA9IGZpbGU7XG4gICAgICBpZiAoaW5mbz8uZm9ybWF0ID09PSBEQVRBU0VUX0ZPUk1BVFMua2VwbGVyZ2wpIHtcbiAgICAgICAgLy8gaWYgZmlsZSBjb250YWlucyBhIHNpbmdsZSBrZXBsZXIgbWFwIGRhdGFzZXQgJiBjb25maWdcbiAgICAgICAgYWNjdS5rZXBsZXJNYXBzLnB1c2goe1xuICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgY2VudGVyTWFwOiAhKGRhdGEuY29uZmlnICYmIGRhdGEuY29uZmlnLm1hcFN0YXRlKVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKERBVEFTRVRfRk9STUFUU1tpbmZvPy5mb3JtYXRdKSB7XG4gICAgICAgIC8vIGlmIGZpbGUgY29udGFpbnMgb25seSBkYXRhXG4gICAgICAgIGNvbnN0IG5ld0RhdGFzZXQgPSB7XG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICBpbmZvOiB7XG4gICAgICAgICAgICBpZDogaW5mbz8uaWQgfHwgZ2VuZXJhdGVIYXNoSWQoNCksXG4gICAgICAgICAgICAuLi4oaW5mbyB8fCB7fSlcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGFjY3UuZGF0YXNldHMucHVzaChuZXdEYXRhc2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2N1O1xuICAgIH0sXG4gICAge2RhdGFzZXRzOiBbXSwga2VwbGVyTWFwczogW119XG4gICk7XG5cbiAgLy8gYWRkIGtlcGxlciBtYXAgZmlyc3Qgd2l0aCBjb25maWdcbiAgLy8gYWRkIGRhdGFzZXRzIGxhdGVyIGluIG9uZSBhZGQgZGF0YSBjYWxsXG4gIHJldHVybiBjb2xsZWN0aW9uLmtlcGxlck1hcHMuY29uY2F0KHtkYXRhc2V0czogY29sbGVjdGlvbi5kYXRhc2V0c30pO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsS0FBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsS0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsSUFBQSxHQUFBSCxPQUFBO0FBQ0Es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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/processors",
3
3
  "author": "Shan He <shan@uber.com>",
4
- "version": "3.1.7",
4
+ "version": "3.1.8",
5
5
  "description": "kepler.gl constants used by kepler.gl components, actions and reducers",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
@@ -31,12 +31,12 @@
31
31
  ],
32
32
  "dependencies": {
33
33
  "@danmarshall/deckgl-typings": "4.9.22",
34
- "@kepler.gl/common-utils": "3.1.7",
35
- "@kepler.gl/constants": "3.1.7",
36
- "@kepler.gl/schemas": "3.1.7",
37
- "@kepler.gl/table": "3.1.7",
38
- "@kepler.gl/types": "3.1.7",
39
- "@kepler.gl/utils": "3.1.7",
34
+ "@kepler.gl/common-utils": "3.1.8",
35
+ "@kepler.gl/constants": "3.1.8",
36
+ "@kepler.gl/schemas": "3.1.8",
37
+ "@kepler.gl/table": "3.1.8",
38
+ "@kepler.gl/types": "3.1.8",
39
+ "@kepler.gl/utils": "3.1.8",
40
40
  "@loaders.gl/arrow": "^4.3.2",
41
41
  "@loaders.gl/core": "^4.3.2",
42
42
  "@loaders.gl/csv": "^4.3.2",
@@ -216,7 +216,6 @@ export async function processFileData({
216
216
  const {fileName, data} = content;
217
217
  let format: string | undefined;
218
218
  let processor: ((data: any) => ProcessorResult | LoadedMap | null) | undefined;
219
- console.log('Processing file', fileName);
220
219
  // generate unique id with length of 4 using fileName string
221
220
  const id = generateHashIdFromString(fileName);
222
221
  // decide on which table class to use based on application config
@@ -141,7 +141,9 @@ var addDataToMapUpdater = exports.addDataToMapUpdater = function addDataToMapUpd
141
141
  var bounds = options.centerMap && (0, _dataUtils.findMapBounds)(layers);
142
142
  return bounds ? bounds : undefined;
143
143
  };
144
- return (0, _composerHelpers.compose_)([(0, _composerHelpers.pick_)('visState')((0, _composerHelpers.apply_)(_visStateUpdaters.updateVisDataUpdater, {
144
+ return (0, _composerHelpers.compose_)([(0, _composerHelpers.pick_)('visState')(
145
+ // this part can be async
146
+ (0, _composerHelpers.apply_)(_visStateUpdaters.updateVisDataUpdater, {
145
147
  datasets: datasets,
146
148
  options: options,
147
149
  config: parsedConfig
@@ -361,4 +363,4 @@ var replaceDataInMapUpdater = exports.replaceDataInMapUpdater = function replace
361
363
  }));
362
364
  return nextState;
363
365
  };
364
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdWlTdGF0ZVVwZGF0ZXJzIiwicmVxdWlyZSIsIl92aXNTdGF0ZVVwZGF0ZXJzIiwiX21hcFN0YXRlVXBkYXRlcnMiLCJfbWFwU3R5bGVVcGRhdGVycyIsIl9wcm9jZXNzb3JzIiwiX2NvbXBvc2VySGVscGVycyIsIl91dGlscyIsIl9kYXRhVXRpbHMiLCJfY29uc3RhbnRzIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJjb21iaW5lZFVwZGF0ZXJzIiwiaXNWYWxpZENvbmZpZyIsImV4cG9ydHMiLCJjb25maWciLCJpc1BsYWluT2JqZWN0IiwidmVyc2lvbiIsImRlZmF1bHRBZGREYXRhVG9NYXBPcHRpb25zIiwiY2VudGVyTWFwIiwia2VlcEV4aXN0aW5nQ29uZmlnIiwiYXV0b0NyZWF0ZUxheWVycyIsImF1dG9DcmVhdGVUb29sdGlwcyIsImFkZERhdGFUb01hcFVwZGF0ZXIiLCJzdGF0ZSIsIl9yZWYiLCJfZGF0YXNldHMkIiwiX2RhdGFzZXRzJDIiLCJfZGF0YXNldHMkMyIsIl9wYXJzZWRDb25maWciLCJfcGFyc2VkQ29uZmlnMiIsIl9wYXJzZWRDb25maWckdWlTdGF0ZSIsIl9wYXJzZWRDb25maWczIiwicGF5bG9hZCIsImRhdGFzZXRzIiwiaW5mbyIsIm9wdGlvbnMiLCJpc1Byb2dyZXNzaXZlTG9hZGluZyIsIkFycmF5IiwiaXNBcnJheSIsImZvcm1hdCIsImlkIiwidmlzU3RhdGUiLCJjb21wb3NlXyIsInBpY2tfIiwiYXBwbHlfIiwidmlzU3RhdGVVcGRhdGVWaXNEYXRhVXBkYXRlciIsInBhcnNlZENvbmZpZyIsInNjaGVtYSIsInBhcnNlU2F2ZWRDb25maWciLCJvbGRMYXllcnMiLCJsYXllcnMiLCJmaWx0ZXJOZXdseUFkZGVkTGF5ZXJzIiwibmwiLCJmaW5kIiwib2wiLCJmaW5kTWFwQm91bmRzSWZDZW50ZXJlZCIsImJvdW5kcyIsImZpbmRNYXBCb3VuZHMiLCJ1bmRlZmluZWQiLCJpZl8iLCJCb29sZWFuIiwic2V0TWFwSW5mb1VwZGF0ZXIiLCJ3aXRoXyIsIl9yZWYyIiwic3RhdGVNYXBDb25maWdVcGRhdGVyIiwicGF5bG9hZF8iLCJzdHlsZU1hcENvbmZpZ1VwZGF0ZXIiLCJ1aVN0YXRlTG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIiLCJ1aVN0YXRlIiwibWFwQ29udHJvbHMiLCJtYXBMZWdlbmQiLCJhY3RpdmUiLCJ1aVN0YXRlVG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIiLCJwYW5lbElkIiwiaW5kZXgiLCJzZXR0aW5ncyIsInVpU3RhdGVTZXRNYXBDb250cm9sU2V0dGluZ3NVcGRhdGVyIiwidG9nZ2xlTW9kYWxVcGRhdGVyIiwibWVyZ2VfIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwicmVhZE9ubHkiLCJsb2FkRmlsZXNTdWNjZXNzVXBkYXRlciIsImFjdGlvbiIsInBheWxvYWRzIiwiZmlsZXNUb0RhdGFQYXlsb2FkIiwicmVzdWx0IiwibmV4dFN0YXRlIiwiZmlsZUxvYWRpbmciLCJmaWxlTG9hZGluZ1Byb2dyZXNzIiwic3RhdGVXaXRoRGF0YSIsIm1hcCIsInAiLCJhZGREYXRhVG9NYXBDb21wb3NlZCIsInVwZGF0ZU92ZXJsYXlCbGVuZGluZyIsIm92ZXJsYXlCbGVuZGluZyIsIk9WRVJMQVlfQkxFTkRJTkdTIiwibm9ybWFsIiwidmFsdWUiLCJ1cGRhdGVEYXJrQmFzZU1hcExheWVycyIsImRhcmtCYXNlTWFwRW5hYmxlZCIsImxheWVySWQiLCJsYXllciIsInZpc0NvbmZpZ1NldHRpbmdzIiwidmlzQ29uZmlnIiwidXBkYXRlTGF5ZXJDb25maWciLCJjb21iaW5lZE1hcFN0eWxlQ2hhbmdlVXBkYXRlciIsIm1hcFN0eWxlIiwiZ2V0Q29sb3JNb2RlIiwia2V5IiwiX21hcFN0eWxlJG1hcFN0eWxlcyRrIiwibWFwU3R5bGVzIiwiY29sb3JNb2RlIiwicHJldkNvbG9yTW9kZSIsInN0eWxlVHlwZSIsIm5leHRDb2xvck1vZGUiLCJCQVNFX01BUF9DT0xPUl9NT0RFUyIsIkRBUksiLCJzY3JlZW4iLCJMSUdIVCIsImRhcmtlbiIsIm1hcFN0eWxlQ2hhbmdlVXBkYXRlciIsImNvbWJpbmVkTGF5ZXJUeXBlQ2hhbmdlVXBkYXRlciIsIm9sZExheWVySW5kZXgiLCJmaW5kSW5kZXgiLCJvbGRMYXllciIsImxheWVyVHlwZUNoYW5nZVVwZGF0ZXIiLCJuZXdMYXllciIsInRvZ2dsZVNwbGl0TWFwVXBkYXRlciIsIl9uZXdTdGF0ZSR1aVN0YXRlJG1hcCIsIm5ld1N0YXRlIiwidmlzU3RhdGVUb2dnbGVTcGxpdE1hcFVwZGF0ZXIiLCJ1aVN0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwibWFwU3RhdGUiLCJtYXBTdGF0ZVRvZ2dsZVNwbGl0TWFwVXBkYXRlciIsImlzU3BsaXQiLCJzcGxpdE1hcHMiLCJpc0xlZ2VuZEFjdGl2ZSIsInRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyIiwiZGVmYXVsdFJlcGxhY2VEYXRhVG9NYXBPcHRpb25zIiwicmVwbGFjZURhdGFJbk1hcFVwZGF0ZXIiLCJfcmVmMyIsImRhdGFzZXRUb1JlcGxhY2VJZCIsImRhdGFzZXRUb1VzZSIsIl9wYXlsb2FkJG9wdGlvbnMiLCJhZGREYXRhVG9NYXBPcHRpb25zIiwiZGF0YUlkVG9Vc2UiLCJwcmVwYXJlZFN0YXRlIiwicHJlcGFyZVN0YXRlRm9yRGF0YXNldFJlcGxhY2UiXSwic291cmNlcyI6WyIuLi9zcmMvY29tYmluZWQtdXBkYXRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtcbiAgdG9nZ2xlTW9kYWxVcGRhdGVyLFxuICBsb2FkRmlsZXNTdWNjZXNzVXBkYXRlciBhcyB1aVN0YXRlTG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIsXG4gIHNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXIgYXMgdWlTdGF0ZVNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXIsXG4gIHRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyIGFzIHVpU3RhdGVUb2dnbGVNYXBDb250cm9sVXBkYXRlcixcbiAgdG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIsXG4gIHRvZ2dsZVNwbGl0TWFwVXBkYXRlciBhcyB1aVN0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyXG59IGZyb20gJy4vdWktc3RhdGUtdXBkYXRlcnMnO1xuaW1wb3J0IHtcbiAgdXBkYXRlVmlzRGF0YVVwZGF0ZXIgYXMgdmlzU3RhdGVVcGRhdGVWaXNEYXRhVXBkYXRlcixcbiAgc2V0TWFwSW5mb1VwZGF0ZXIsXG4gIGxheWVyVHlwZUNoYW5nZVVwZGF0ZXIsXG4gIHRvZ2dsZVNwbGl0TWFwVXBkYXRlciBhcyB2aXNTdGF0ZVRvZ2dsZVNwbGl0TWFwVXBkYXRlcixcbiAgcHJlcGFyZVN0YXRlRm9yRGF0YXNldFJlcGxhY2Vcbn0gZnJvbSAnLi92aXMtc3RhdGUtdXBkYXRlcnMnO1xuaW1wb3J0IHtcbiAgcmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIgYXMgc3RhdGVNYXBDb25maWdVcGRhdGVyLFxuICB0b2dnbGVTcGxpdE1hcFVwZGF0ZXIgYXMgbWFwU3RhdGVUb2dnbGVTcGxpdE1hcFVwZGF0ZXJcbn0gZnJvbSAnLi9tYXAtc3RhdGUtdXBkYXRlcnMnO1xuaW1wb3J0IHtcbiAgbWFwU3R5bGVDaGFuZ2VVcGRhdGVyLFxuICByZWNlaXZlTWFwQ29uZmlnVXBkYXRlciBhcyBzdHlsZU1hcENvbmZpZ1VwZGF0ZXJcbn0gZnJvbSAnLi9tYXAtc3R5bGUtdXBkYXRlcnMnO1xuaW1wb3J0IHtmaWxlc1RvRGF0YVBheWxvYWR9IGZyb20gJ0BrZXBsZXIuZ2wvcHJvY2Vzc29ycyc7XG5pbXBvcnQge3BheWxvYWRfLCBhcHBseV8sIHdpdGhfLCBpZl8sIGNvbXBvc2VfLCBtZXJnZV8sIHBpY2tffSBmcm9tICcuL2NvbXBvc2VyLWhlbHBlcnMnO1xuaW1wb3J0IHtNYXBTdGF0ZSwgVWlTdGF0ZSwgQWRkRGF0YVRvTWFwUGF5bG9hZCwgUGFyc2VkQ29uZmlnfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7TWFwU3R5bGV9IGZyb20gJy4vbWFwLXN0eWxlLXVwZGF0ZXJzJztcbmltcG9ydCB7UHJvdmlkZXJTdGF0ZX0gZnJvbSAnLi9wcm92aWRlci1zdGF0ZS11cGRhdGVycyc7XG5pbXBvcnQge1xuICBsb2FkRmlsZXNTdWNjZXNzVXBkYXRlckFjdGlvbixcbiAgTWFwU3R5bGVDaGFuZ2VVcGRhdGVyQWN0aW9uLFxuICBMYXllclR5cGVDaGFuZ2VVcGRhdGVyQWN0aW9uLFxuICBUb2dnbGVTcGxpdE1hcFVwZGF0ZXJBY3Rpb24sXG4gIFJlcGxhY2VEYXRhSW5NYXBQYXlsb2FkXG59IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge1Zpc1N0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3NjaGVtYXMnO1xuaW1wb3J0IHtMYXllcn0gZnJvbSAnQGtlcGxlci5nbC9sYXllcnMnO1xuaW1wb3J0IHtpc1BsYWluT2JqZWN0fSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7ZmluZE1hcEJvdW5kc30gZnJvbSAnLi9kYXRhLXV0aWxzJztcbmltcG9ydCB7QkFTRV9NQVBfQ09MT1JfTU9ERVMsIE9WRVJMQVlfQkxFTkRJTkdTfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmV4cG9ydCB0eXBlIEtlcGxlckdsU3RhdGUgPSB7XG4gIHZpc1N0YXRlOiBWaXNTdGF0ZTtcbiAgbWFwU3RhdGU6IE1hcFN0YXRlO1xuICBtYXBTdHlsZTogTWFwU3R5bGU7XG4gIHVpU3RhdGU6IFVpU3RhdGU7XG4gIHByb3ZpZGVyU3RhdGU6IFByb3ZpZGVyU3RhdGU7XG59O1xuXG4vLyBjb21wb3NlIGFjdGlvbiB0byBhcHBseSByZXN1bHQgbXVsdGlwbGUgcmVkdWNlcnMsIHdpdGggdGhlIG91dHB1dCBvZiBvbmVcblxuLyoqXG4gKiBTb21lIGFjdGlvbnMgd2lsbCBhZmZlY3QgdGhlIGVudGlyZSBrZXBsZXIubGcgaW5zdGFuY2Ugc3RhdGUuXG4gKiBUaGUgdXBkYXRlcnMgZm9yIHRoZXNlIGFjdGlvbnMgaXMgZXhwb3J0ZWQgYXMgYGNvbWJpbmVkVXBkYXRlcnNgLiBUaGVzZSB1cGRhdGVyIHRha2UgdGhlIGVudGlyZSBpbnN0YW5jZSBzdGF0ZVxuICogYXMgdGhlIGZpcnN0IGFyZ3VtZW50LiBSZWFkIG1vcmUgYWJvdXQgW1VzaW5nIHVwZGF0ZXJzXSguLi9hZHZhbmNlZC11c2FnZS91c2luZy11cGRhdGVycy5tZClcbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKlxuICogaW1wb3J0IGtlcGxlckdsUmVkdWNlciwge2NvbWJpbmVkVXBkYXRlcnN9IGZyb20gJ2tlcGxlci5nbC9yZWR1Y2Vycyc7XG4gKiAvLyBSb290IFJlZHVjZXJcbiAqIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAqICBrZXBsZXJHbDoga2VwbGVyR2xSZWR1Y2VyLFxuICogIGFwcDogYXBwUmVkdWNlclxuICogfSk7XG4gKlxuICogY29uc3QgY29tcG9zZWRSZWR1Y2VyID0gKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAqICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gKiAgICAvLyBhZGQgZGF0YSB0byBtYXAgYWZ0ZXIgcmVjZWl2aW5nIGRhdGEgZnJvbSByZW1vdGUgc291cmNlc1xuICogICAgY2FzZSAnTE9BRF9SRU1PVEVfUkVTT1VSQ0VfU1VDQ0VTUyc6XG4gKiAgICAgIHJldHVybiB7XG4gKiAgICAgICAgLi4uc3RhdGUsXG4gKiAgICAgICAga2VwbGVyR2w6IHtcbiAqICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLFxuICogICAgICAgICAgLy8gcGFzcyBpbiBrZXBsZXIuZ2wgaW5zdGFuY2Ugc3RhdGUgdG8gY29tYmluZWRVcGRhdGVyc1xuICogICAgICAgICAgbWFwOiAgY29tYmluZWRVcGRhdGVycy5hZGREYXRhVG9NYXBVcGRhdGVyKFxuICogICAgICAgICAgIHN0YXRlLmtlcGxlckdsLm1hcCxcbiAqICAgICAgICAgICB7XG4gKiAgICAgICAgICAgICBwYXlsb2FkOiB7XG4gKiAgICAgICAgICAgICAgIGRhdGFzZXRzOiBhY3Rpb24uZGF0YXNldHMsXG4gKiAgICAgICAgICAgICAgIG9wdGlvbnM6IHtyZWFkT25seTogdHJ1ZX0sXG4gKiAgICAgICAgICAgICAgIGNvbmZpZzogYWN0aW9uLmNvbmZpZ1xuICogICAgICAgICAgICAgIH1cbiAqICAgICAgICAgICAgfVxuICogICAgICAgICAgKVxuICogICAgICAgIH1cbiAqICAgICAgfTtcbiAqICB9XG4gKiAgcmV0dXJuIHJlZHVjZXJzKHN0YXRlLCBhY3Rpb24pO1xuICogfTtcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBjb21wb3NlZFJlZHVjZXI7XG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vLyBAdHMtaWdub3JlXG5jb25zdCBjb21iaW5lZFVwZGF0ZXJzID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG5cbmV4cG9ydCBjb25zdCBpc1ZhbGlkQ29uZmlnID0gY29uZmlnID0+XG4gIGlzUGxhaW5PYmplY3QoY29uZmlnKSAmJiBpc1BsYWluT2JqZWN0KGNvbmZpZy5jb25maWcpICYmIGNvbmZpZy52ZXJzaW9uO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEFkZERhdGFUb01hcE9wdGlvbnMgPSB7XG4gIGNlbnRlck1hcDogdHJ1ZSxcbiAga2VlcEV4aXN0aW5nQ29uZmlnOiBmYWxzZSxcbiAgYXV0b0NyZWF0ZUxheWVyczogdHJ1ZSxcbiAgYXV0b0NyZWF0ZVRvb2x0aXBzOiB0cnVlXG59O1xuXG4vKipcbiAqIENvbWJpbmUgZGF0YSBhbmQgZnVsbCBjb25maWd1cmF0aW9uIHVwZGF0ZSBpbiBhIHNpbmdsZSBhY3Rpb25cbiAqXG4gKiBAbWVtYmVyb2YgY29tYmluZWRVcGRhdGVyc1xuICogQHBhcmFtIHtPYmplY3R9IHN0YXRlIGtlcGxlci5nbCBpbnN0YW5jZSBzdGF0ZSwgY29udGFpbmluZyBhbGwgc3VicmVkdWNlciBzdGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGFjdGlvblxuICogQHBhcmFtIHtPYmplY3R9IGFjdGlvbi5wYXlsb2FkIGB7ZGF0YXNldHMsIG9wdGlvbnMsIGNvbmZpZ31gXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQuZGF0YXNldHMgLSAqKipyZXF1aXJlZCoqIGRhdGFzZXRzIGNhbiBiZSBhIGRhdGFzZXQgb3IgYW4gYXJyYXkgb2YgZGF0YXNldHNcbiAqIEVhY2ggZGF0YXNldCBvYmplY3QgbmVlZHMgdG8gaGF2ZSBgaW5mb2AgYW5kIGBkYXRhYCBwcm9wZXJ0eS5cbiAqIEBwYXJhbSBbYWN0aW9uLnBheWxvYWQub3B0aW9uc10gb3B0aW9uIG9iamVjdCBge2NlbnRlck1hcDogdHJ1ZX1gXG4gKiBAcGFyYW0gW2FjdGlvbi5wYXlsb2FkLmNvbmZpZ10gbWFwIGNvbmZpZ1xuICogQHBhcmFtIFthY3Rpb24ucGF5bG9hZC5pbmZvXSBtYXAgaW5mbyBjb250YWlucyB0aXRsZSBhbmQgZGVzY3JpcHRpb25cbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICpcbiAqIEB0eXBlZGVmIHtPYmplY3R9IERhdGFzZXRcbiAqIEBwcm9wZXJ0eSBpbmZvIC1pbmZvIG9mIGEgZGF0YXNldFxuICogQHByb3BlcnR5IGluZm8uaWQgLSBpZCBvZiB0aGlzIGRhdGFzZXQuIElmIGNvbmZpZyBpcyBkZWZpbmVkLCBgaWRgIHNob3VsZCBtYXRjaGVzIHRoZSBgZGF0YUlkYCBpbiBjb25maWcuXG4gKiBAcHJvcGVydHkgaW5mby5sYWJlbCAtIEEgZGlzcGxheSBuYW1lIG9mIHRoaXMgZGF0YXNldFxuICogQHByb3BlcnR5IGRhdGEgLSAqKipyZXF1aXJlZCoqIFRoZSBkYXRhIG9iamVjdCwgaW4gYSB0YWJ1bGFyIGZvcm1hdCB3aXRoIDIgcHJvcGVydGllcyBgZmllbGRzYCBhbmQgYHJvd3NgXG4gKiBAcHJvcGVydHkgZGF0YS5maWVsZHMgLSAqKipyZXF1aXJlZCoqIEFycmF5IG9mIGZpZWxkcyxcbiAqIEBwcm9wZXJ0eSBkYXRhLmZpZWxkcy5uYW1lIC0gKioqcmVxdWlyZWQqKiBOYW1lIG9mIHRoZSBmaWVsZCxcbiAqIEBwcm9wZXJ0eSBkYXRhLnJvd3MgLSAqKipyZXF1aXJlZCoqIEFycmF5IG9mIHJvd3MsIGluIGEgdGFidWxhciBmb3JtYXQgd2l0aCBgZmllbGRzYCBhbmQgYHJvd3NgXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgYWRkRGF0YVRvTWFwVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIHtwYXlsb2FkfToge3BheWxvYWQ6IEFkZERhdGFUb01hcFBheWxvYWR9XG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgY29uc3Qge2RhdGFzZXRzLCBjb25maWcsIGluZm99ID0gcGF5bG9hZDtcblxuICBjb25zdCBvcHRpb25zID0ge1xuICAgIC4uLmRlZmF1bHRBZGREYXRhVG9NYXBPcHRpb25zLFxuICAgIC4uLnBheWxvYWQub3B0aW9uc1xuICB9O1xuXG4gIC8vIGNoZWNrIGlmIHByb2dyZXNzaXZlIGxvYWRpbmcgZGF0YXNldCBieSBiYXRjaGVzLCBhbmQgdXBkYXRlIHZpc1N0YXRlIGRpcmVjdGx5XG4gIGNvbnN0IGlzUHJvZ3Jlc3NpdmVMb2FkaW5nID1cbiAgICBBcnJheS5pc0FycmF5KGRhdGFzZXRzKSAmJlxuICAgIGRhdGFzZXRzWzBdPy5pbmZvLmZvcm1hdCA9PT0gJ2Fycm93JyAmJlxuICAgIGRhdGFzZXRzWzBdPy5pbmZvLmlkICYmXG4gICAgZGF0YXNldHNbMF0/LmluZm8uaWQgaW4gc3RhdGUudmlzU3RhdGUuZGF0YXNldHM7XG4gIGlmIChpc1Byb2dyZXNzaXZlTG9hZGluZykge1xuICAgIHJldHVybiBjb21wb3NlXzxLZXBsZXJHbFN0YXRlPihbXG4gICAgICBwaWNrXygndmlzU3RhdGUnKShcbiAgICAgICAgYXBwbHlfPFZpc1N0YXRlLCBhbnk+KHZpc1N0YXRlVXBkYXRlVmlzRGF0YVVwZGF0ZXIsIHtcbiAgICAgICAgICBkYXRhc2V0cyxcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgIGNvbmZpZ1xuICAgICAgICB9KVxuICAgICAgKVxuICAgIF0pKHN0YXRlKTtcbiAgfVxuXG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgbGV0IHBhcnNlZENvbmZpZzogUGFyc2VkQ29uZmlnID0gY29uZmlnO1xuXG4gIGlmIChpc1ZhbGlkQ29uZmlnKGNvbmZpZykpIHtcbiAgICAvLyBpZiBwYXNzZWQgaW4gc2F2ZWQgY29uZmlnXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHBhcnNlZENvbmZpZyA9IHN0YXRlLnZpc1N0YXRlLnNjaGVtYS5wYXJzZVNhdmVkQ29uZmlnKGNvbmZpZyk7XG4gIH1cbiAgY29uc3Qgb2xkTGF5ZXJzID0gc3RhdGUudmlzU3RhdGUubGF5ZXJzO1xuICBjb25zdCBmaWx0ZXJOZXdseUFkZGVkTGF5ZXJzID0gKGxheWVyczogTGF5ZXJbXSkgPT5cbiAgICBsYXllcnMuZmlsdGVyKG5sID0+ICFvbGRMYXllcnMuZmluZChvbCA9PiBvbCA9PT0gbmwpKTtcblxuICAvLyBSZXR1cm5zIHVuZGVmaW5lZCBpZiBub3QgZm91bmQsIHRvIG1ha2UgdHlwZXNjcmlwdCBoYXBweVxuICBjb25zdCBmaW5kTWFwQm91bmRzSWZDZW50ZXJlZCA9IChsYXllcnM6IExheWVyW10pID0+IHtcbiAgICBjb25zdCBib3VuZHMgPSBvcHRpb25zLmNlbnRlck1hcCAmJiBmaW5kTWFwQm91bmRzKGxheWVycyk7XG4gICAgcmV0dXJuIGJvdW5kcyA/IGJvdW5kcyA6IHVuZGVmaW5lZDtcbiAgfTtcblxuICByZXR1cm4gY29tcG9zZV88S2VwbGVyR2xTdGF0ZT4oW1xuICAgIHBpY2tfKCd2aXNTdGF0ZScpKFxuICAgICAgYXBwbHlfPFZpc1N0YXRlLCBhbnk+KHZpc1N0YXRlVXBkYXRlVmlzRGF0YVVwZGF0ZXIsIHtcbiAgICAgICAgZGF0YXNldHMsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIGNvbmZpZzogcGFyc2VkQ29uZmlnXG4gICAgICB9KVxuICAgICksXG5cbiAgICBpZl8oQm9vbGVhbihpbmZvKSwgcGlja18oJ3Zpc1N0YXRlJykoYXBwbHlfPFZpc1N0YXRlLCBhbnk+KHNldE1hcEluZm9VcGRhdGVyLCB7aW5mb30pKSksXG4gICAgLy8gTm90ZSB0aGF0IGZpdCBib3VuZHMgaGVyZSB3b24ndCBiZSBjYWxsZWQgaW4gY2FzZSBkYXRhc2V0cyBhcmUgY3JlYXRlZCBpbiBUYXNrcy5cbiAgICAvLyBBIHNlcGFyYXRlIFRhc2sgdG8gdXBkYXRlIGJvdW5kcyBpcyBjcmVhdGVkIG9uY2UgdGhlIGRhdGFzZXRzIGFyZSByZWFkeS5cbiAgICB3aXRoXygoe3Zpc1N0YXRlfSkgPT5cbiAgICAgIHBpY2tfKCdtYXBTdGF0ZScpKFxuICAgICAgICBhcHBseV8oXG4gICAgICAgICAgc3RhdGVNYXBDb25maWdVcGRhdGVyLFxuICAgICAgICAgIHBheWxvYWRfKHtcbiAgICAgICAgICAgIGNvbmZpZzogcGFyc2VkQ29uZmlnLFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIGJvdW5kczogZmluZE1hcEJvdW5kc0lmQ2VudGVyZWQoZmlsdGVyTmV3bHlBZGRlZExheWVycyh2aXNTdGF0ZS5sYXllcnMpKVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApLFxuICAgIHBpY2tfKCdtYXBTdHlsZScpKGFwcGx5XyhzdHlsZU1hcENvbmZpZ1VwZGF0ZXIsIHBheWxvYWRfKHtjb25maWc6IHBhcnNlZENvbmZpZywgb3B0aW9uc30pKSksXG4gICAgcGlja18oJ3VpU3RhdGUnKShhcHBseV8odWlTdGF0ZUxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyLCBwYXlsb2FkXyhudWxsKSkpLFxuXG4gICAgaWZfKFxuICAgICAgQm9vbGVhbihwYXJzZWRDb25maWc/LnVpU3RhdGU/Lm1hcENvbnRyb2xzPy5tYXBMZWdlbmQ/LmFjdGl2ZSksXG4gICAgICBwaWNrXygndWlTdGF0ZScpKFxuICAgICAgICBhcHBseV8odWlTdGF0ZVRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyLCBwYXlsb2FkXyh7cGFuZWxJZDogJ21hcExlZ2VuZCcsIGluZGV4OiAwfSkpXG4gICAgICApXG4gICAgKSxcblxuICAgIGlmXyhcbiAgICAgIEJvb2xlYW4ocGFyc2VkQ29uZmlnPy51aVN0YXRlPy5tYXBDb250cm9scz8ubWFwTGVnZW5kPy5zZXR0aW5ncyksXG4gICAgICBwaWNrXygndWlTdGF0ZScpKFxuICAgICAgICBhcHBseV8oXG4gICAgICAgICAgdWlTdGF0ZVNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXIsXG4gICAgICAgICAgcGF5bG9hZF8oe1xuICAgICAgICAgICAgcGFuZWxJZDogJ21hcExlZ2VuZCcsXG4gICAgICAgICAgICBzZXR0aW5nczogcGFyc2VkQ29uZmlnPy51aVN0YXRlPy5tYXBDb250cm9scz8ubWFwTGVnZW5kPy5zZXR0aW5ncyA/PyB7fVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApLFxuICAgIHBpY2tfKCd1aVN0YXRlJykoYXBwbHlfKHRvZ2dsZU1vZGFsVXBkYXRlciwgcGF5bG9hZF8obnVsbCkpKSxcbiAgICBwaWNrXygndWlTdGF0ZScpKFxuICAgICAgbWVyZ2VfKFxuICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywgJ3JlYWRPbmx5JylcbiAgICAgICAgICA/IHtyZWFkT25seTogb3B0aW9ucy5yZWFkT25seX1cbiAgICAgICAgICA6IHt9XG4gICAgICApXG4gICAgKVxuICBdKShzdGF0ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgbG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBLZXBsZXJHbFN0YXRlLFxuICBhY3Rpb246IGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyQWN0aW9uXG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgLy8gc3RpbGwgbW9yZSB0byBsb2FkXG4gIGNvbnN0IHBheWxvYWRzID0gZmlsZXNUb0RhdGFQYXlsb2FkKGFjdGlvbi5yZXN1bHQpO1xuICBjb25zdCBuZXh0U3RhdGUgPSBjb21wb3NlXyhbXG4gICAgcGlja18oJ3Zpc1N0YXRlJykoXG4gICAgICBtZXJnZV8oe1xuICAgICAgICBmaWxlTG9hZGluZzogZmFsc2UsXG4gICAgICAgIGZpbGVMb2FkaW5nUHJvZ3Jlc3M6IHt9XG4gICAgICB9KVxuICAgIClcbiAgXSkoc3RhdGUpO1xuICAvLyBtYWtlIG11bHRpcGxlIGFkZCBkYXRhIHRvIG1hcCBjYWxsc1xuICBjb25zdCBzdGF0ZVdpdGhEYXRhID0gY29tcG9zZV8ocGF5bG9hZHMubWFwKHAgPT4gYXBwbHlfKGFkZERhdGFUb01hcFVwZGF0ZXIsIHBheWxvYWRfKHApKSkpKFxuICAgIG5leHRTdGF0ZVxuICApO1xuICByZXR1cm4gc3RhdGVXaXRoRGF0YSBhcyBLZXBsZXJHbFN0YXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZERhdGFUb01hcENvbXBvc2VkID0gYWRkRGF0YVRvTWFwVXBkYXRlcjtcblxuLyoqXG4gKiBIZWxwZXIgd2hpY2ggdXBkYXRlcyBtYXAgb3ZlcmxheSBibGVuZGluZyBtb2RlIGluIHZpc1N0YXRlLFxuICogYnV0IG9ubHkgaWYgaXQncyBub3QgY3VycmVudGx5IGluIHRoZSBgbm9ybWFsYCBtb2RlLlxuICovXG5jb25zdCB1cGRhdGVPdmVybGF5QmxlbmRpbmcgPSBvdmVybGF5QmxlbmRpbmcgPT4gdmlzU3RhdGUgPT4ge1xuICBpZiAodmlzU3RhdGUub3ZlcmxheUJsZW5kaW5nICE9PSBPVkVSTEFZX0JMRU5ESU5HUy5ub3JtYWwudmFsdWUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4udmlzU3RhdGUsXG4gICAgICBvdmVybGF5QmxlbmRpbmdcbiAgICB9O1xuICB9XG4gIHJldHVybiB2aXNTdGF0ZTtcbn07XG5cbi8qKlxuICogSGVscGVyIHdoaWNoIHVwZGF0ZXMgYGRhcmtCYXNlTWFwRW5hYmxlZGAgaW4gYWxsIHRoZSBsYXllcnMgaW4gdmlzU3RhdGUgd2hpY2hcbiAqIGhhdmUgdGhpcyBjb25maWcgc2V0dGluZyAob3IgaW4gb25lIHNwZWNpZmljIGxheWVyIGlmIHRoZSBgbGF5ZXJJZGAgcGFyYW0gaXMgcHJvdmlkZWQpLlxuICovXG5jb25zdCB1cGRhdGVEYXJrQmFzZU1hcExheWVycyA9XG4gIChkYXJrQmFzZU1hcEVuYWJsZWQ6IGJvb2xlYW4sIGxheWVySWQ6IHN0cmluZyB8IG51bGwgPSBudWxsKSA9PlxuICB2aXNTdGF0ZSA9PiAoe1xuICAgIC4uLnZpc1N0YXRlLFxuICAgIGxheWVyczogdmlzU3RhdGUubGF5ZXJzLm1hcChsYXllciA9PiB7XG4gICAgICBpZiAoIWxheWVySWQgfHwgbGF5ZXIuaWQgPT09IGxheWVySWQpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChsYXllci52aXNDb25maWdTZXR0aW5ncywgJ2RhcmtCYXNlTWFwRW5hYmxlZCcpKSB7XG4gICAgICAgICAgY29uc3Qge3Zpc0NvbmZpZ30gPSBsYXllci5jb25maWc7XG4gICAgICAgICAgcmV0dXJuIGxheWVyLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICAgICAgICAgIHZpc0NvbmZpZzogey4uLnZpc0NvbmZpZywgZGFya0Jhc2VNYXBFbmFibGVkfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbGF5ZXI7XG4gICAgfSlcbiAgfSk7XG5cbi8qKlxuICogVXBkYXRlciB0aGF0IGNoYW5nZXMgdGhlIG1hcCBzdHlsZSBieSBjYWxsaW5nIG1hcFN0eWxlQ2hhbmdlVXBkYXRlciBvbiB2aXNTdGF0ZS5cbiAqIEluIGFkZGl0aW9uIHRvIHRoYXQsIGl0IGRvZXMgdGhlIGZvbGxvd2luZzpcbiAqXG4gKiAgIDEuIFVwZGF0ZSBtYXAgb3ZlcmxheSBibGVuZGluZyBtb2RlIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29sb3JNb2RlIG9mIHRoZVxuICogICAgICBiYXNlIG1hcCwgYnV0IG9ubHkgaWYgaXQncyBub3QgaW4gdGhlIGBub3JtYWxgIG1vZGUuXG4gKlxuICogICAyLiBVcGRhdGUgYWxsIHRoZSBsYXllcnMgd2hpY2ggaGF2ZSB0aGUgYGRhcmtCYXNlTWFwRW5hYmxlZGAgY29uZmlnIHNldHRpbmdcbiAqICAgICAgYWRqdXN0aW5nIGl0IGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29sb3JNb2RlIG9mIHRoZSBiYXNlIG1hcC5cbiAqXG4gKi9cbmV4cG9ydCBjb25zdCBjb21iaW5lZE1hcFN0eWxlQ2hhbmdlVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIGFjdGlvbjogTWFwU3R5bGVDaGFuZ2VVcGRhdGVyQWN0aW9uXG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgY29uc3Qge3BheWxvYWR9ID0gYWN0aW9uO1xuICBjb25zdCB7bWFwU3R5bGV9ID0gc3RhdGU7XG4gIGNvbnN0IGdldENvbG9yTW9kZSA9IGtleSA9PiBtYXBTdHlsZS5tYXBTdHlsZXNba2V5XT8uY29sb3JNb2RlO1xuICBjb25zdCBwcmV2Q29sb3JNb2RlID0gZ2V0Q29sb3JNb2RlKG1hcFN0eWxlLnN0eWxlVHlwZSk7XG4gIGNvbnN0IG5leHRDb2xvck1vZGUgPSBnZXRDb2xvck1vZGUocGF5bG9hZC5zdHlsZVR5cGUpO1xuICBsZXQge3Zpc1N0YXRlfSA9IHN0YXRlO1xuICBpZiAobmV4dENvbG9yTW9kZSAhPT0gcHJldkNvbG9yTW9kZSkge1xuICAgIHN3aXRjaCAobmV4dENvbG9yTW9kZSkge1xuICAgICAgY2FzZSBCQVNFX01BUF9DT0xPUl9NT0RFUy5EQVJLOlxuICAgICAgICB2aXNTdGF0ZSA9IGNvbXBvc2VfKFtcbiAgICAgICAgICB1cGRhdGVPdmVybGF5QmxlbmRpbmcoT1ZFUkxBWV9CTEVORElOR1Muc2NyZWVuLnZhbHVlKSxcbiAgICAgICAgICB1cGRhdGVEYXJrQmFzZU1hcExheWVycyh0cnVlKVxuICAgICAgICBdKSh2aXNTdGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCQVNFX01BUF9DT0xPUl9NT0RFUy5MSUdIVDpcbiAgICAgICAgdmlzU3RhdGUgPSBjb21wb3NlXyhbXG4gICAgICAgICAgdXBkYXRlT3ZlcmxheUJsZW5kaW5nKE9WRVJMQVlfQkxFTkRJTkdTLmRhcmtlbi52YWx1ZSksXG4gICAgICAgICAgdXBkYXRlRGFya0Jhc2VNYXBMYXllcnMoZmFsc2UpXG4gICAgICAgIF0pKHZpc1N0YXRlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIHZpc1N0YXRlLFxuICAgIG1hcFN0eWxlOiBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIobWFwU3R5bGUsIHtwYXlsb2FkOiB7Li4ucGF5bG9hZH19KVxuICB9O1xufTtcblxuLyoqXG4gKiBVcGRhdGVyIHRoYXQgY2hhbmdlcyB0aGUgbGF5ZXIgdHlwZSBieSBjYWxsaW5nIGBsYXllclR5cGVDaGFuZ2VVcGRhdGVyYCBvbiB2aXNTdGF0ZS5cbiAqIEluIGFkZGl0aW9uIHRvIHRoYXQsIGlmIHRoZSBuZXcgbGF5ZXIgdHlwZSBoYXMgdGhlIGBkYXJrQmFzZU1hcEVuYWJsZWRgIGNvbmZpZ1xuICogc2V0dGluZywgd2UgYWRqdXN0IGl0IGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29sb3JNb2RlIG9mIHRoZSBiYXNlIG1hcC5zXG4gKi9cbmV4cG9ydCBjb25zdCBjb21iaW5lZExheWVyVHlwZUNoYW5nZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBLZXBsZXJHbFN0YXRlLFxuICBhY3Rpb246IExheWVyVHlwZUNoYW5nZVVwZGF0ZXJBY3Rpb25cbik6IEtlcGxlckdsU3RhdGUgPT4ge1xuICBsZXQge3Zpc1N0YXRlfSA9IHN0YXRlO1xuICBjb25zdCBvbGRMYXllckluZGV4ID0gdmlzU3RhdGUubGF5ZXJzLmZpbmRJbmRleChsYXllciA9PiBsYXllciA9PT0gYWN0aW9uLm9sZExheWVyKTtcbiAgdmlzU3RhdGUgPSBsYXllclR5cGVDaGFuZ2VVcGRhdGVyKHZpc1N0YXRlLCBhY3Rpb24pO1xuICBjb25zdCBuZXdMYXllciA9IHZpc1N0YXRlLmxheWVyc1tvbGRMYXllckluZGV4XTtcbiAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuZXdMYXllcj8udmlzQ29uZmlnU2V0dGluZ3MsICdkYXJrQmFzZU1hcEVuYWJsZWQnKSkge1xuICAgIGNvbnN0IHttYXBTdHlsZX0gPSBzdGF0ZTtcbiAgICBjb25zdCB7Y29sb3JNb2RlfSA9IG1hcFN0eWxlLm1hcFN0eWxlc1ttYXBTdHlsZS5zdHlsZVR5cGVdO1xuICAgIGNvbnN0IHtkYXJrQmFzZU1hcEVuYWJsZWR9ID0gbmV3TGF5ZXIuY29uZmlnLnZpc0NvbmZpZztcbiAgICBzd2l0Y2ggKGNvbG9yTW9kZSkge1xuICAgICAgY2FzZSBCQVNFX01BUF9DT0xPUl9NT0RFUy5EQVJLOlxuICAgICAgICBpZiAoIWRhcmtCYXNlTWFwRW5hYmxlZCkge1xuICAgICAgICAgIHZpc1N0YXRlID0gdXBkYXRlRGFya0Jhc2VNYXBMYXllcnModHJ1ZSwgbmV3TGF5ZXIuaWQpKHZpc1N0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQkFTRV9NQVBfQ09MT1JfTU9ERVMuTElHSFQ6XG4gICAgICAgIGlmIChkYXJrQmFzZU1hcEVuYWJsZWQpIHtcbiAgICAgICAgICB2aXNTdGF0ZSA9IHVwZGF0ZURhcmtCYXNlTWFwTGF5ZXJzKGZhbHNlLCBuZXdMYXllci5pZCkodmlzU3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICB2aXNTdGF0ZVxuICB9O1xufTtcblxuLyoqXG4gKiBNYWtlIG1hcExlZ2VuZCBhY3RpdmUgd2hlbiB0b2dnbGVTcGxpdE1hcCBhY3Rpb24gaXMgY2FsbGVkXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTcGxpdE1hcFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBLZXBsZXJHbFN0YXRlLFxuICBhY3Rpb246IFRvZ2dsZVNwbGl0TWFwVXBkYXRlckFjdGlvblxuKTogS2VwbGVyR2xTdGF0ZSA9PiB7XG4gIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIHZpc1N0YXRlOiB2aXNTdGF0ZVRvZ2dsZVNwbGl0TWFwVXBkYXRlcihzdGF0ZS52aXNTdGF0ZSwgYWN0aW9uKSxcbiAgICB1aVN0YXRlOiB1aVN0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyKHN0YXRlLnVpU3RhdGUpLFxuICAgIG1hcFN0YXRlOiBtYXBTdGF0ZVRvZ2dsZVNwbGl0TWFwVXBkYXRlcihzdGF0ZS5tYXBTdGF0ZSlcbiAgfTtcblxuICBjb25zdCBpc1NwbGl0ID0gbmV3U3RhdGUudmlzU3RhdGUuc3BsaXRNYXBzLmxlbmd0aCAhPT0gMDtcbiAgY29uc3QgaXNMZWdlbmRBY3RpdmUgPSBuZXdTdGF0ZS51aVN0YXRlLm1hcENvbnRyb2xzPy5tYXBMZWdlbmQ/LmFjdGl2ZTtcbiAgaWYgKGlzU3BsaXQgJiYgIWlzTGVnZW5kQWN0aXZlKSB7XG4gICAgbmV3U3RhdGUudWlTdGF0ZSA9IHRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyKG5ld1N0YXRlLnVpU3RhdGUsIHtcbiAgICAgIHBheWxvYWQ6IHtwYW5lbElkOiAnbWFwTGVnZW5kJywgaW5kZXg6IGFjdGlvbi5wYXlsb2FkfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG5ld1N0YXRlO1xufTtcblxuY29uc3QgZGVmYXVsdFJlcGxhY2VEYXRhVG9NYXBPcHRpb25zID0ge1xuICBrZWVwRXhpc3RpbmdDb25maWc6IHRydWUsXG4gIGNlbnRlck1hcDogdHJ1ZSxcbiAgYXV0b0NyZWF0ZUxheWVyczogZmFsc2Vcbn07XG5cbi8qKlxuICogVXBkYXRlciByZXBsYWNlIGEgZGF0YXNldCBpbiBzdGF0ZVxuICovXG5leHBvcnQgY29uc3QgcmVwbGFjZURhdGFJbk1hcFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBLZXBsZXJHbFN0YXRlLFxuICB7cGF5bG9hZH06IHtwYXlsb2FkOiBSZXBsYWNlRGF0YUluTWFwUGF5bG9hZH1cbik6IEtlcGxlckdsU3RhdGUgPT4ge1xuICBjb25zdCB7ZGF0YXNldFRvUmVwbGFjZUlkLCBkYXRhc2V0VG9Vc2UsIG9wdGlvbnMgPSB7fX0gPSBwYXlsb2FkO1xuICBjb25zdCBhZGREYXRhVG9NYXBPcHRpb25zID0gey4uLmRlZmF1bHRSZXBsYWNlRGF0YVRvTWFwT3B0aW9ucywgLi4ub3B0aW9uc307XG5cbiAgLy8gY2hlY2sgaWYgZGF0YXNldCBpcyB0aGVyZVxuICBpZiAoIXN0YXRlLnZpc1N0YXRlLmRhdGFzZXRzW2RhdGFzZXRUb1JlcGxhY2VJZF0pIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgLy8gZGF0YXNldFRvVXNlIGlzIFByb3RvRGF0YXNldFxuICBjb25zdCBkYXRhSWRUb1VzZSA9IGRhdGFzZXRUb1VzZS5pbmZvLmlkO1xuICBpZiAoIWRhdGFJZFRvVXNlKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIC8vIHJlbW92ZSBkYXRhc2V0IGFuZCBwdXQgZGVwZW5kZW5jaWVzIGluIHRvQmVNZXJnZWRcbiAgY29uc3QgcHJlcGFyZWRTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICB2aXNTdGF0ZTogcHJlcGFyZVN0YXRlRm9yRGF0YXNldFJlcGxhY2Uoc3RhdGUudmlzU3RhdGUsIGRhdGFzZXRUb1JlcGxhY2VJZCwgZGF0YUlkVG9Vc2UpXG4gIH07XG5cbiAgY29uc3QgbmV4dFN0YXRlID0gYWRkRGF0YVRvTWFwVXBkYXRlcihcbiAgICBwcmVwYXJlZFN0YXRlLFxuICAgIHBheWxvYWRfKHtcbiAgICAgIGRhdGFzZXRzOiBkYXRhc2V0VG9Vc2UsXG4gICAgICAvLyBzaG91bGQgem9vbSB0byBuZXcgZGF0YXNldFxuICAgICAgb3B0aW9uczogYWRkRGF0YVRvTWFwT3B0aW9uc1xuICAgIH0pXG4gICk7XG5cbiAgcmV0dXJuIG5leHRTdGF0ZTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBR0EsSUFBQUEsZ0JBQUEsR0FBQUMsT0FBQTtBQVFBLElBQUFDLGlCQUFBLEdBQUFELE9BQUE7QUFPQSxJQUFBRSxpQkFBQSxHQUFBRixPQUFBO0FBSUEsSUFBQUcsaUJBQUEsR0FBQUgsT0FBQTtBQUlBLElBQUFJLFdBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLGdCQUFBLEdBQUFMLE9BQUE7QUFhQSxJQUFBTSxNQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxVQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxVQUFBLEdBQUFSLE9BQUE7QUFBNkUsU0FBQVMsUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxD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
366
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdWlTdGF0ZVVwZGF0ZXJzIiwicmVxdWlyZSIsIl92aXNTdGF0ZVVwZGF0ZXJzIiwiX21hcFN0YXRlVXBkYXRlcnMiLCJfbWFwU3R5bGVVcGRhdGVycyIsIl9wcm9jZXNzb3JzIiwiX2NvbXBvc2VySGVscGVycyIsIl91dGlscyIsIl9kYXRhVXRpbHMiLCJfY29uc3RhbnRzIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJjb21iaW5lZFVwZGF0ZXJzIiwiaXNWYWxpZENvbmZpZyIsImV4cG9ydHMiLCJjb25maWciLCJpc1BsYWluT2JqZWN0IiwidmVyc2lvbiIsImRlZmF1bHRBZGREYXRhVG9NYXBPcHRpb25zIiwiY2VudGVyTWFwIiwia2VlcEV4aXN0aW5nQ29uZmlnIiwiYXV0b0NyZWF0ZUxheWVycyIsImF1dG9DcmVhdGVUb29sdGlwcyIsImFkZERhdGFUb01hcFVwZGF0ZXIiLCJzdGF0ZSIsIl9yZWYiLCJfZGF0YXNldHMkIiwiX2RhdGFzZXRzJDIiLCJfZGF0YXNldHMkMyIsIl9wYXJzZWRDb25maWciLCJfcGFyc2VkQ29uZmlnMiIsIl9wYXJzZWRDb25maWckdWlTdGF0ZSIsIl9wYXJzZWRDb25maWczIiwicGF5bG9hZCIsImRhdGFzZXRzIiwiaW5mbyIsIm9wdGlvbnMiLCJpc1Byb2dyZXNzaXZlTG9hZGluZyIsIkFycmF5IiwiaXNBcnJheSIsImZvcm1hdCIsImlkIiwidmlzU3RhdGUiLCJjb21wb3NlXyIsInBpY2tfIiwiYXBwbHlfIiwidmlzU3RhdGVVcGRhdGVWaXNEYXRhVXBkYXRlciIsInBhcnNlZENvbmZpZyIsInNjaGVtYSIsInBhcnNlU2F2ZWRDb25maWciLCJvbGRMYXllcnMiLCJsYXllcnMiLCJmaWx0ZXJOZXdseUFkZGVkTGF5ZXJzIiwibmwiLCJmaW5kIiwib2wiLCJmaW5kTWFwQm91bmRzSWZDZW50ZXJlZCIsImJvdW5kcyIsImZpbmRNYXBCb3VuZHMiLCJ1bmRlZmluZWQiLCJpZl8iLCJCb29sZWFuIiwic2V0TWFwSW5mb1VwZGF0ZXIiLCJ3aXRoXyIsIl9yZWYyIiwic3RhdGVNYXBDb25maWdVcGRhdGVyIiwicGF5bG9hZF8iLCJzdHlsZU1hcENvbmZpZ1VwZGF0ZXIiLCJ1aVN0YXRlTG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIiLCJ1aVN0YXRlIiwibWFwQ29udHJvbHMiLCJtYXBMZWdlbmQiLCJhY3RpdmUiLCJ1aVN0YXRlVG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIiLCJwYW5lbElkIiwiaW5kZXgiLCJzZXR0aW5ncyIsInVpU3RhdGVTZXRNYXBDb250cm9sU2V0dGluZ3NVcGRhdGVyIiwidG9nZ2xlTW9kYWxVcGRhdGVyIiwibWVyZ2VfIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwicmVhZE9ubHkiLCJsb2FkRmlsZXNTdWNjZXNzVXBkYXRlciIsImFjdGlvbiIsInBheWxvYWRzIiwiZmlsZXNUb0RhdGFQYXlsb2FkIiwicmVzdWx0IiwibmV4dFN0YXRlIiwiZmlsZUxvYWRpbmciLCJmaWxlTG9hZGluZ1Byb2dyZXNzIiwic3RhdGVXaXRoRGF0YSIsIm1hcCIsInAiLCJhZGREYXRhVG9NYXBDb21wb3NlZCIsInVwZGF0ZU92ZXJsYXlCbGVuZGluZyIsIm92ZXJsYXlCbGVuZGluZyIsIk9WRVJMQVlfQkxFTkRJTkdTIiwibm9ybWFsIiwidmFsdWUiLCJ1cGRhdGVEYXJrQmFzZU1hcExheWVycyIsImRhcmtCYXNlTWFwRW5hYmxlZCIsImxheWVySWQiLCJsYXllciIsInZpc0NvbmZpZ1NldHRpbmdzIiwidmlzQ29uZmlnIiwidXBkYXRlTGF5ZXJDb25maWciLCJjb21iaW5lZE1hcFN0eWxlQ2hhbmdlVXBkYXRlciIsIm1hcFN0eWxlIiwiZ2V0Q29sb3JNb2RlIiwia2V5IiwiX21hcFN0eWxlJG1hcFN0eWxlcyRrIiwibWFwU3R5bGVzIiwiY29sb3JNb2RlIiwicHJldkNvbG9yTW9kZSIsInN0eWxlVHlwZSIsIm5leHRDb2xvck1vZGUiLCJCQVNFX01BUF9DT0xPUl9NT0RFUyIsIkRBUksiLCJzY3JlZW4iLCJMSUdIVCIsImRhcmtlbiIsIm1hcFN0eWxlQ2hhbmdlVXBkYXRlciIsImNvbWJpbmVkTGF5ZXJUeXBlQ2hhbmdlVXBkYXRlciIsIm9sZExheWVySW5kZXgiLCJmaW5kSW5kZXgiLCJvbGRMYXllciIsImxheWVyVHlwZUNoYW5nZVVwZGF0ZXIiLCJuZXdMYXllciIsInRvZ2dsZVNwbGl0TWFwVXBkYXRlciIsIl9uZXdTdGF0ZSR1aVN0YXRlJG1hcCIsIm5ld1N0YXRlIiwidmlzU3RhdGVUb2dnbGVTcGxpdE1hcFVwZGF0ZXIiLCJ1aVN0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwibWFwU3RhdGUiLCJtYXBTdGF0ZVRvZ2dsZVNwbGl0TWFwVXBkYXRlciIsImlzU3BsaXQiLCJzcGxpdE1hcHMiLCJpc0xlZ2VuZEFjdGl2ZSIsInRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyIiwiZGVmYXVsdFJlcGxhY2VEYXRhVG9NYXBPcHRpb25zIiwicmVwbGFjZURhdGFJbk1hcFVwZGF0ZXIiLCJfcmVmMyIsImRhdGFzZXRUb1JlcGxhY2VJZCIsImRhdGFzZXRUb1VzZSIsIl9wYXlsb2FkJG9wdGlvbnMiLCJhZGREYXRhVG9NYXBPcHRpb25zIiwiZGF0YUlkVG9Vc2UiLCJwcmVwYXJlZFN0YXRlIiwicHJlcGFyZVN0YXRlRm9yRGF0YXNldFJlcGxhY2UiXSwic291cmNlcyI6WyIuLi9zcmMvY29tYmluZWQtdXBkYXRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtcbiAgdG9nZ2xlTW9kYWxVcGRhdGVyLFxuICBsb2FkRmlsZXNTdWNjZXNzVXBkYXRlciBhcyB1aVN0YXRlTG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIsXG4gIHNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXIgYXMgdWlTdGF0ZVNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXIsXG4gIHRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyIGFzIHVpU3RhdGVUb2dnbGVNYXBDb250cm9sVXBkYXRlcixcbiAgdG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIsXG4gIHRvZ2dsZVNwbGl0TWFwVXBkYXRlciBhcyB1aVN0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyXG59IGZyb20gJy4vdWktc3RhdGUtdXBkYXRlcnMnO1xuaW1wb3J0IHtcbiAgdXBkYXRlVmlzRGF0YVVwZGF0ZXIgYXMgdmlzU3RhdGVVcGRhdGVWaXNEYXRhVXBkYXRlcixcbiAgc2V0TWFwSW5mb1VwZGF0ZXIsXG4gIGxheWVyVHlwZUNoYW5nZVVwZGF0ZXIsXG4gIHRvZ2dsZVNwbGl0TWFwVXBkYXRlciBhcyB2aXNTdGF0ZVRvZ2dsZVNwbGl0TWFwVXBkYXRlcixcbiAgcHJlcGFyZVN0YXRlRm9yRGF0YXNldFJlcGxhY2Vcbn0gZnJvbSAnLi92aXMtc3RhdGUtdXBkYXRlcnMnO1xuaW1wb3J0IHtcbiAgcmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIgYXMgc3RhdGVNYXBDb25maWdVcGRhdGVyLFxuICB0b2dnbGVTcGxpdE1hcFVwZGF0ZXIgYXMgbWFwU3RhdGVUb2dnbGVTcGxpdE1hcFVwZGF0ZXJcbn0gZnJvbSAnLi9tYXAtc3RhdGUtdXBkYXRlcnMnO1xuaW1wb3J0IHtcbiAgbWFwU3R5bGVDaGFuZ2VVcGRhdGVyLFxuICByZWNlaXZlTWFwQ29uZmlnVXBkYXRlciBhcyBzdHlsZU1hcENvbmZpZ1VwZGF0ZXJcbn0gZnJvbSAnLi9tYXAtc3R5bGUtdXBkYXRlcnMnO1xuaW1wb3J0IHtmaWxlc1RvRGF0YVBheWxvYWR9IGZyb20gJ0BrZXBsZXIuZ2wvcHJvY2Vzc29ycyc7XG5pbXBvcnQge3BheWxvYWRfLCBhcHBseV8sIHdpdGhfLCBpZl8sIGNvbXBvc2VfLCBtZXJnZV8sIHBpY2tffSBmcm9tICcuL2NvbXBvc2VyLWhlbHBlcnMnO1xuaW1wb3J0IHtNYXBTdGF0ZSwgVWlTdGF0ZSwgQWRkRGF0YVRvTWFwUGF5bG9hZCwgUGFyc2VkQ29uZmlnfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7TWFwU3R5bGV9IGZyb20gJy4vbWFwLXN0eWxlLXVwZGF0ZXJzJztcbmltcG9ydCB7UHJvdmlkZXJTdGF0ZX0gZnJvbSAnLi9wcm92aWRlci1zdGF0ZS11cGRhdGVycyc7XG5pbXBvcnQge1xuICBsb2FkRmlsZXNTdWNjZXNzVXBkYXRlckFjdGlvbixcbiAgTWFwU3R5bGVDaGFuZ2VVcGRhdGVyQWN0aW9uLFxuICBMYXllclR5cGVDaGFuZ2VVcGRhdGVyQWN0aW9uLFxuICBUb2dnbGVTcGxpdE1hcFVwZGF0ZXJBY3Rpb24sXG4gIFJlcGxhY2VEYXRhSW5NYXBQYXlsb2FkXG59IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge1Zpc1N0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3NjaGVtYXMnO1xuaW1wb3J0IHtMYXllcn0gZnJvbSAnQGtlcGxlci5nbC9sYXllcnMnO1xuaW1wb3J0IHtpc1BsYWluT2JqZWN0fSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7ZmluZE1hcEJvdW5kc30gZnJvbSAnLi9kYXRhLXV0aWxzJztcbmltcG9ydCB7QkFTRV9NQVBfQ09MT1JfTU9ERVMsIE9WRVJMQVlfQkxFTkRJTkdTfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmV4cG9ydCB0eXBlIEtlcGxlckdsU3RhdGUgPSB7XG4gIHZpc1N0YXRlOiBWaXNTdGF0ZTtcbiAgbWFwU3RhdGU6IE1hcFN0YXRlO1xuICBtYXBTdHlsZTogTWFwU3R5bGU7XG4gIHVpU3RhdGU6IFVpU3RhdGU7XG4gIHByb3ZpZGVyU3RhdGU6IFByb3ZpZGVyU3RhdGU7XG59O1xuXG4vLyBjb21wb3NlIGFjdGlvbiB0byBhcHBseSByZXN1bHQgbXVsdGlwbGUgcmVkdWNlcnMsIHdpdGggdGhlIG91dHB1dCBvZiBvbmVcblxuLyoqXG4gKiBTb21lIGFjdGlvbnMgd2lsbCBhZmZlY3QgdGhlIGVudGlyZSBrZXBsZXIubGcgaW5zdGFuY2Ugc3RhdGUuXG4gKiBUaGUgdXBkYXRlcnMgZm9yIHRoZXNlIGFjdGlvbnMgaXMgZXhwb3J0ZWQgYXMgYGNvbWJpbmVkVXBkYXRlcnNgLiBUaGVzZSB1cGRhdGVyIHRha2UgdGhlIGVudGlyZSBpbnN0YW5jZSBzdGF0ZVxuICogYXMgdGhlIGZpcnN0IGFyZ3VtZW50LiBSZWFkIG1vcmUgYWJvdXQgW1VzaW5nIHVwZGF0ZXJzXSguLi9hZHZhbmNlZC11c2FnZS91c2luZy11cGRhdGVycy5tZClcbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKlxuICogaW1wb3J0IGtlcGxlckdsUmVkdWNlciwge2NvbWJpbmVkVXBkYXRlcnN9IGZyb20gJ2tlcGxlci5nbC9yZWR1Y2Vycyc7XG4gKiAvLyBSb290IFJlZHVjZXJcbiAqIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAqICBrZXBsZXJHbDoga2VwbGVyR2xSZWR1Y2VyLFxuICogIGFwcDogYXBwUmVkdWNlclxuICogfSk7XG4gKlxuICogY29uc3QgY29tcG9zZWRSZWR1Y2VyID0gKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAqICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gKiAgICAvLyBhZGQgZGF0YSB0byBtYXAgYWZ0ZXIgcmVjZWl2aW5nIGRhdGEgZnJvbSByZW1vdGUgc291cmNlc1xuICogICAgY2FzZSAnTE9BRF9SRU1PVEVfUkVTT1VSQ0VfU1VDQ0VTUyc6XG4gKiAgICAgIHJldHVybiB7XG4gKiAgICAgICAgLi4uc3RhdGUsXG4gKiAgICAgICAga2VwbGVyR2w6IHtcbiAqICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLFxuICogICAgICAgICAgLy8gcGFzcyBpbiBrZXBsZXIuZ2wgaW5zdGFuY2Ugc3RhdGUgdG8gY29tYmluZWRVcGRhdGVyc1xuICogICAgICAgICAgbWFwOiAgY29tYmluZWRVcGRhdGVycy5hZGREYXRhVG9NYXBVcGRhdGVyKFxuICogICAgICAgICAgIHN0YXRlLmtlcGxlckdsLm1hcCxcbiAqICAgICAgICAgICB7XG4gKiAgICAgICAgICAgICBwYXlsb2FkOiB7XG4gKiAgICAgICAgICAgICAgIGRhdGFzZXRzOiBhY3Rpb24uZGF0YXNldHMsXG4gKiAgICAgICAgICAgICAgIG9wdGlvbnM6IHtyZWFkT25seTogdHJ1ZX0sXG4gKiAgICAgICAgICAgICAgIGNvbmZpZzogYWN0aW9uLmNvbmZpZ1xuICogICAgICAgICAgICAgIH1cbiAqICAgICAgICAgICAgfVxuICogICAgICAgICAgKVxuICogICAgICAgIH1cbiAqICAgICAgfTtcbiAqICB9XG4gKiAgcmV0dXJuIHJlZHVjZXJzKHN0YXRlLCBhY3Rpb24pO1xuICogfTtcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBjb21wb3NlZFJlZHVjZXI7XG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vLyBAdHMtaWdub3JlXG5jb25zdCBjb21iaW5lZFVwZGF0ZXJzID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG5cbmV4cG9ydCBjb25zdCBpc1ZhbGlkQ29uZmlnID0gY29uZmlnID0+XG4gIGlzUGxhaW5PYmplY3QoY29uZmlnKSAmJiBpc1BsYWluT2JqZWN0KGNvbmZpZy5jb25maWcpICYmIGNvbmZpZy52ZXJzaW9uO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEFkZERhdGFUb01hcE9wdGlvbnMgPSB7XG4gIGNlbnRlck1hcDogdHJ1ZSxcbiAga2VlcEV4aXN0aW5nQ29uZmlnOiBmYWxzZSxcbiAgYXV0b0NyZWF0ZUxheWVyczogdHJ1ZSxcbiAgYXV0b0NyZWF0ZVRvb2x0aXBzOiB0cnVlXG59O1xuXG4vKipcbiAqIENvbWJpbmUgZGF0YSBhbmQgZnVsbCBjb25maWd1cmF0aW9uIHVwZGF0ZSBpbiBhIHNpbmdsZSBhY3Rpb25cbiAqXG4gKiBAbWVtYmVyb2YgY29tYmluZWRVcGRhdGVyc1xuICogQHBhcmFtIHtPYmplY3R9IHN0YXRlIGtlcGxlci5nbCBpbnN0YW5jZSBzdGF0ZSwgY29udGFpbmluZyBhbGwgc3VicmVkdWNlciBzdGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGFjdGlvblxuICogQHBhcmFtIHtPYmplY3R9IGFjdGlvbi5wYXlsb2FkIGB7ZGF0YXNldHMsIG9wdGlvbnMsIGNvbmZpZ31gXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQuZGF0YXNldHMgLSAqKipyZXF1aXJlZCoqIGRhdGFzZXRzIGNhbiBiZSBhIGRhdGFzZXQgb3IgYW4gYXJyYXkgb2YgZGF0YXNldHNcbiAqIEVhY2ggZGF0YXNldCBvYmplY3QgbmVlZHMgdG8gaGF2ZSBgaW5mb2AgYW5kIGBkYXRhYCBwcm9wZXJ0eS5cbiAqIEBwYXJhbSBbYWN0aW9uLnBheWxvYWQub3B0aW9uc10gb3B0aW9uIG9iamVjdCBge2NlbnRlck1hcDogdHJ1ZX1gXG4gKiBAcGFyYW0gW2FjdGlvbi5wYXlsb2FkLmNvbmZpZ10gbWFwIGNvbmZpZ1xuICogQHBhcmFtIFthY3Rpb24ucGF5bG9hZC5pbmZvXSBtYXAgaW5mbyBjb250YWlucyB0aXRsZSBhbmQgZGVzY3JpcHRpb25cbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICpcbiAqIEB0eXBlZGVmIHtPYmplY3R9IERhdGFzZXRcbiAqIEBwcm9wZXJ0eSBpbmZvIC1pbmZvIG9mIGEgZGF0YXNldFxuICogQHByb3BlcnR5IGluZm8uaWQgLSBpZCBvZiB0aGlzIGRhdGFzZXQuIElmIGNvbmZpZyBpcyBkZWZpbmVkLCBgaWRgIHNob3VsZCBtYXRjaGVzIHRoZSBgZGF0YUlkYCBpbiBjb25maWcuXG4gKiBAcHJvcGVydHkgaW5mby5sYWJlbCAtIEEgZGlzcGxheSBuYW1lIG9mIHRoaXMgZGF0YXNldFxuICogQHByb3BlcnR5IGRhdGEgLSAqKipyZXF1aXJlZCoqIFRoZSBkYXRhIG9iamVjdCwgaW4gYSB0YWJ1bGFyIGZvcm1hdCB3aXRoIDIgcHJvcGVydGllcyBgZmllbGRzYCBhbmQgYHJvd3NgXG4gKiBAcHJvcGVydHkgZGF0YS5maWVsZHMgLSAqKipyZXF1aXJlZCoqIEFycmF5IG9mIGZpZWxkcyxcbiAqIEBwcm9wZXJ0eSBkYXRhLmZpZWxkcy5uYW1lIC0gKioqcmVxdWlyZWQqKiBOYW1lIG9mIHRoZSBmaWVsZCxcbiAqIEBwcm9wZXJ0eSBkYXRhLnJvd3MgLSAqKipyZXF1aXJlZCoqIEFycmF5IG9mIHJvd3MsIGluIGEgdGFidWxhciBmb3JtYXQgd2l0aCBgZmllbGRzYCBhbmQgYHJvd3NgXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgYWRkRGF0YVRvTWFwVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIHtwYXlsb2FkfToge3BheWxvYWQ6IEFkZERhdGFUb01hcFBheWxvYWR9XG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgY29uc3Qge2RhdGFzZXRzLCBjb25maWcsIGluZm99ID0gcGF5bG9hZDtcblxuICBjb25zdCBvcHRpb25zID0ge1xuICAgIC4uLmRlZmF1bHRBZGREYXRhVG9NYXBPcHRpb25zLFxuICAgIC4uLnBheWxvYWQub3B0aW9uc1xuICB9O1xuXG4gIC8vIGNoZWNrIGlmIHByb2dyZXNzaXZlIGxvYWRpbmcgZGF0YXNldCBieSBiYXRjaGVzLCBhbmQgdXBkYXRlIHZpc1N0YXRlIGRpcmVjdGx5XG4gIGNvbnN0IGlzUHJvZ3Jlc3NpdmVMb2FkaW5nID1cbiAgICBBcnJheS5pc0FycmF5KGRhdGFzZXRzKSAmJlxuICAgIGRhdGFzZXRzWzBdPy5pbmZvLmZvcm1hdCA9PT0gJ2Fycm93JyAmJlxuICAgIGRhdGFzZXRzWzBdPy5pbmZvLmlkICYmXG4gICAgZGF0YXNldHNbMF0/LmluZm8uaWQgaW4gc3RhdGUudmlzU3RhdGUuZGF0YXNldHM7XG4gIGlmIChpc1Byb2dyZXNzaXZlTG9hZGluZykge1xuICAgIHJldHVybiBjb21wb3NlXzxLZXBsZXJHbFN0YXRlPihbXG4gICAgICBwaWNrXygndmlzU3RhdGUnKShcbiAgICAgICAgYXBwbHlfPFZpc1N0YXRlLCBhbnk+KHZpc1N0YXRlVXBkYXRlVmlzRGF0YVVwZGF0ZXIsIHtcbiAgICAgICAgICBkYXRhc2V0cyxcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgIGNvbmZpZ1xuICAgICAgICB9KVxuICAgICAgKVxuICAgIF0pKHN0YXRlKTtcbiAgfVxuXG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgbGV0IHBhcnNlZENvbmZpZzogUGFyc2VkQ29uZmlnID0gY29uZmlnO1xuXG4gIGlmIChpc1ZhbGlkQ29uZmlnKGNvbmZpZykpIHtcbiAgICAvLyBpZiBwYXNzZWQgaW4gc2F2ZWQgY29uZmlnXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHBhcnNlZENvbmZpZyA9IHN0YXRlLnZpc1N0YXRlLnNjaGVtYS5wYXJzZVNhdmVkQ29uZmlnKGNvbmZpZyk7XG4gIH1cbiAgY29uc3Qgb2xkTGF5ZXJzID0gc3RhdGUudmlzU3RhdGUubGF5ZXJzO1xuICBjb25zdCBmaWx0ZXJOZXdseUFkZGVkTGF5ZXJzID0gKGxheWVyczogTGF5ZXJbXSkgPT5cbiAgICBsYXllcnMuZmlsdGVyKG5sID0+ICFvbGRMYXllcnMuZmluZChvbCA9PiBvbCA9PT0gbmwpKTtcblxuICAvLyBSZXR1cm5zIHVuZGVmaW5lZCBpZiBub3QgZm91bmQsIHRvIG1ha2UgdHlwZXNjcmlwdCBoYXBweVxuICBjb25zdCBmaW5kTWFwQm91bmRzSWZDZW50ZXJlZCA9IChsYXllcnM6IExheWVyW10pID0+IHtcbiAgICBjb25zdCBib3VuZHMgPSBvcHRpb25zLmNlbnRlck1hcCAmJiBmaW5kTWFwQm91bmRzKGxheWVycyk7XG4gICAgcmV0dXJuIGJvdW5kcyA/IGJvdW5kcyA6IHVuZGVmaW5lZDtcbiAgfTtcblxuICByZXR1cm4gY29tcG9zZV88S2VwbGVyR2xTdGF0ZT4oW1xuICAgIHBpY2tfKCd2aXNTdGF0ZScpKFxuICAgICAgLy8gdGhpcyBwYXJ0IGNhbiBiZSBhc3luY1xuICAgICAgYXBwbHlfPFZpc1N0YXRlLCBhbnk+KHZpc1N0YXRlVXBkYXRlVmlzRGF0YVVwZGF0ZXIsIHtcbiAgICAgICAgZGF0YXNldHMsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIGNvbmZpZzogcGFyc2VkQ29uZmlnXG4gICAgICB9KVxuICAgICksXG5cbiAgICBpZl8oQm9vbGVhbihpbmZvKSwgcGlja18oJ3Zpc1N0YXRlJykoYXBwbHlfPFZpc1N0YXRlLCBhbnk+KHNldE1hcEluZm9VcGRhdGVyLCB7aW5mb30pKSksXG4gICAgLy8gTm90ZSB0aGF0IGZpdCBib3VuZHMgaGVyZSB3b24ndCBiZSBjYWxsZWQgaW4gY2FzZSBkYXRhc2V0cyBhcmUgY3JlYXRlZCBpbiBUYXNrcy5cbiAgICAvLyBBIHNlcGFyYXRlIFRhc2sgdG8gdXBkYXRlIGJvdW5kcyBpcyBjcmVhdGVkIG9uY2UgdGhlIGRhdGFzZXRzIGFyZSByZWFkeS5cbiAgICB3aXRoXygoe3Zpc1N0YXRlfSkgPT5cbiAgICAgIHBpY2tfKCdtYXBTdGF0ZScpKFxuICAgICAgICBhcHBseV8oXG4gICAgICAgICAgc3RhdGVNYXBDb25maWdVcGRhdGVyLFxuICAgICAgICAgIHBheWxvYWRfKHtcbiAgICAgICAgICAgIGNvbmZpZzogcGFyc2VkQ29uZmlnLFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIGJvdW5kczogZmluZE1hcEJvdW5kc0lmQ2VudGVyZWQoZmlsdGVyTmV3bHlBZGRlZExheWVycyh2aXNTdGF0ZS5sYXllcnMpKVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApLFxuICAgIHBpY2tfKCdtYXBTdHlsZScpKGFwcGx5XyhzdHlsZU1hcENvbmZpZ1VwZGF0ZXIsIHBheWxvYWRfKHtjb25maWc6IHBhcnNlZENvbmZpZywgb3B0aW9uc30pKSksXG4gICAgcGlja18oJ3VpU3RhdGUnKShhcHBseV8odWlTdGF0ZUxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyLCBwYXlsb2FkXyhudWxsKSkpLFxuXG4gICAgaWZfKFxuICAgICAgQm9vbGVhbihwYXJzZWRDb25maWc/LnVpU3RhdGU/Lm1hcENvbnRyb2xzPy5tYXBMZWdlbmQ/LmFjdGl2ZSksXG4gICAgICBwaWNrXygndWlTdGF0ZScpKFxuICAgICAgICBhcHBseV8odWlTdGF0ZVRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyLCBwYXlsb2FkXyh7cGFuZWxJZDogJ21hcExlZ2VuZCcsIGluZGV4OiAwfSkpXG4gICAgICApXG4gICAgKSxcblxuICAgIGlmXyhcbiAgICAgIEJvb2xlYW4ocGFyc2VkQ29uZmlnPy51aVN0YXRlPy5tYXBDb250cm9scz8ubWFwTGVnZW5kPy5zZXR0aW5ncyksXG4gICAgICBwaWNrXygndWlTdGF0ZScpKFxuICAgICAgICBhcHBseV8oXG4gICAgICAgICAgdWlTdGF0ZVNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXIsXG4gICAgICAgICAgcGF5bG9hZF8oe1xuICAgICAgICAgICAgcGFuZWxJZDogJ21hcExlZ2VuZCcsXG4gICAgICAgICAgICBzZXR0aW5nczogcGFyc2VkQ29uZmlnPy51aVN0YXRlPy5tYXBDb250cm9scz8ubWFwTGVnZW5kPy5zZXR0aW5ncyA/PyB7fVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApLFxuICAgIHBpY2tfKCd1aVN0YXRlJykoYXBwbHlfKHRvZ2dsZU1vZGFsVXBkYXRlciwgcGF5bG9hZF8obnVsbCkpKSxcbiAgICBwaWNrXygndWlTdGF0ZScpKFxuICAgICAgbWVyZ2VfKFxuICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywgJ3JlYWRPbmx5JylcbiAgICAgICAgICA/IHtyZWFkT25seTogb3B0aW9ucy5yZWFkT25seX1cbiAgICAgICAgICA6IHt9XG4gICAgICApXG4gICAgKVxuICBdKShzdGF0ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgbG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBLZXBsZXJHbFN0YXRlLFxuICBhY3Rpb246IGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyQWN0aW9uXG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgLy8gc3RpbGwgbW9yZSB0byBsb2FkXG4gIGNvbnN0IHBheWxvYWRzID0gZmlsZXNUb0RhdGFQYXlsb2FkKGFjdGlvbi5yZXN1bHQpO1xuICBjb25zdCBuZXh0U3RhdGUgPSBjb21wb3NlXyhbXG4gICAgcGlja18oJ3Zpc1N0YXRlJykoXG4gICAgICBtZXJnZV8oe1xuICAgICAgICBmaWxlTG9hZGluZzogZmFsc2UsXG4gICAgICAgIGZpbGVMb2FkaW5nUHJvZ3Jlc3M6IHt9XG4gICAgICB9KVxuICAgIClcbiAgXSkoc3RhdGUpO1xuICAvLyBtYWtlIG11bHRpcGxlIGFkZCBkYXRhIHRvIG1hcCBjYWxsc1xuICBjb25zdCBzdGF0ZVdpdGhEYXRhID0gY29tcG9zZV8ocGF5bG9hZHMubWFwKHAgPT4gYXBwbHlfKGFkZERhdGFUb01hcFVwZGF0ZXIsIHBheWxvYWRfKHApKSkpKFxuICAgIG5leHRTdGF0ZVxuICApO1xuICByZXR1cm4gc3RhdGVXaXRoRGF0YSBhcyBLZXBsZXJHbFN0YXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZERhdGFUb01hcENvbXBvc2VkID0gYWRkRGF0YVRvTWFwVXBkYXRlcjtcblxuLyoqXG4gKiBIZWxwZXIgd2hpY2ggdXBkYXRlcyBtYXAgb3ZlcmxheSBibGVuZGluZyBtb2RlIGluIHZpc1N0YXRlLFxuICogYnV0IG9ubHkgaWYgaXQncyBub3QgY3VycmVudGx5IGluIHRoZSBgbm9ybWFsYCBtb2RlLlxuICovXG5jb25zdCB1cGRhdGVPdmVybGF5QmxlbmRpbmcgPSBvdmVybGF5QmxlbmRpbmcgPT4gdmlzU3RhdGUgPT4ge1xuICBpZiAodmlzU3RhdGUub3ZlcmxheUJsZW5kaW5nICE9PSBPVkVSTEFZX0JMRU5ESU5HUy5ub3JtYWwudmFsdWUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4udmlzU3RhdGUsXG4gICAgICBvdmVybGF5QmxlbmRpbmdcbiAgICB9O1xuICB9XG4gIHJldHVybiB2aXNTdGF0ZTtcbn07XG5cbi8qKlxuICogSGVscGVyIHdoaWNoIHVwZGF0ZXMgYGRhcmtCYXNlTWFwRW5hYmxlZGAgaW4gYWxsIHRoZSBsYXllcnMgaW4gdmlzU3RhdGUgd2hpY2hcbiAqIGhhdmUgdGhpcyBjb25maWcgc2V0dGluZyAob3IgaW4gb25lIHNwZWNpZmljIGxheWVyIGlmIHRoZSBgbGF5ZXJJZGAgcGFyYW0gaXMgcHJvdmlkZWQpLlxuICovXG5jb25zdCB1cGRhdGVEYXJrQmFzZU1hcExheWVycyA9XG4gIChkYXJrQmFzZU1hcEVuYWJsZWQ6IGJvb2xlYW4sIGxheWVySWQ6IHN0cmluZyB8IG51bGwgPSBudWxsKSA9PlxuICB2aXNTdGF0ZSA9PiAoe1xuICAgIC4uLnZpc1N0YXRlLFxuICAgIGxheWVyczogdmlzU3RhdGUubGF5ZXJzLm1hcChsYXllciA9PiB7XG4gICAgICBpZiAoIWxheWVySWQgfHwgbGF5ZXIuaWQgPT09IGxheWVySWQpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChsYXllci52aXNDb25maWdTZXR0aW5ncywgJ2RhcmtCYXNlTWFwRW5hYmxlZCcpKSB7XG4gICAgICAgICAgY29uc3Qge3Zpc0NvbmZpZ30gPSBsYXllci5jb25maWc7XG4gICAgICAgICAgcmV0dXJuIGxheWVyLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICAgICAgICAgIHZpc0NvbmZpZzogey4uLnZpc0NvbmZpZywgZGFya0Jhc2VNYXBFbmFibGVkfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbGF5ZXI7XG4gICAgfSlcbiAgfSk7XG5cbi8qKlxuICogVXBkYXRlciB0aGF0IGNoYW5nZXMgdGhlIG1hcCBzdHlsZSBieSBjYWxsaW5nIG1hcFN0eWxlQ2hhbmdlVXBkYXRlciBvbiB2aXNTdGF0ZS5cbiAqIEluIGFkZGl0aW9uIHRvIHRoYXQsIGl0IGRvZXMgdGhlIGZvbGxvd2luZzpcbiAqXG4gKiAgIDEuIFVwZGF0ZSBtYXAgb3ZlcmxheSBibGVuZGluZyBtb2RlIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29sb3JNb2RlIG9mIHRoZVxuICogICAgICBiYXNlIG1hcCwgYnV0IG9ubHkgaWYgaXQncyBub3QgaW4gdGhlIGBub3JtYWxgIG1vZGUuXG4gKlxuICogICAyLiBVcGRhdGUgYWxsIHRoZSBsYXllcnMgd2hpY2ggaGF2ZSB0aGUgYGRhcmtCYXNlTWFwRW5hYmxlZGAgY29uZmlnIHNldHRpbmdcbiAqICAgICAgYWRqdXN0aW5nIGl0IGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29sb3JNb2RlIG9mIHRoZSBiYXNlIG1hcC5cbiAqXG4gKi9cbmV4cG9ydCBjb25zdCBjb21iaW5lZE1hcFN0eWxlQ2hhbmdlVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIGFjdGlvbjogTWFwU3R5bGVDaGFuZ2VVcGRhdGVyQWN0aW9uXG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgY29uc3Qge3BheWxvYWR9ID0gYWN0aW9uO1xuICBjb25zdCB7bWFwU3R5bGV9ID0gc3RhdGU7XG4gIGNvbnN0IGdldENvbG9yTW9kZSA9IGtleSA9PiBtYXBTdHlsZS5tYXBTdHlsZXNba2V5XT8uY29sb3JNb2RlO1xuICBjb25zdCBwcmV2Q29sb3JNb2RlID0gZ2V0Q29sb3JNb2RlKG1hcFN0eWxlLnN0eWxlVHlwZSk7XG4gIGNvbnN0IG5leHRDb2xvck1vZGUgPSBnZXRDb2xvck1vZGUocGF5bG9hZC5zdHlsZVR5cGUpO1xuICBsZXQge3Zpc1N0YXRlfSA9IHN0YXRlO1xuICBpZiAobmV4dENvbG9yTW9kZSAhPT0gcHJldkNvbG9yTW9kZSkge1xuICAgIHN3aXRjaCAobmV4dENvbG9yTW9kZSkge1xuICAgICAgY2FzZSBCQVNFX01BUF9DT0xPUl9NT0RFUy5EQVJLOlxuICAgICAgICB2aXNTdGF0ZSA9IGNvbXBvc2VfKFtcbiAgICAgICAgICB1cGRhdGVPdmVybGF5QmxlbmRpbmcoT1ZFUkxBWV9CTEVORElOR1Muc2NyZWVuLnZhbHVlKSxcbiAgICAgICAgICB1cGRhdGVEYXJrQmFzZU1hcExheWVycyh0cnVlKVxuICAgICAgICBdKSh2aXNTdGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCQVNFX01BUF9DT0xPUl9NT0RFUy5MSUdIVDpcbiAgICAgICAgdmlzU3RhdGUgPSBjb21wb3NlXyhbXG4gICAgICAgICAgdXBkYXRlT3ZlcmxheUJsZW5kaW5nKE9WRVJMQVlfQkxFTkRJTkdTLmRhcmtlbi52YWx1ZSksXG4gICAgICAgICAgdXBkYXRlRGFya0Jhc2VNYXBMYXllcnMoZmFsc2UpXG4gICAgICAgIF0pKHZpc1N0YXRlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIHZpc1N0YXRlLFxuICAgIG1hcFN0eWxlOiBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIobWFwU3R5bGUsIHtwYXlsb2FkOiB7Li4ucGF5bG9hZH19KVxuICB9O1xufTtcblxuLyoqXG4gKiBVcGRhdGVyIHRoYXQgY2hhbmdlcyB0aGUgbGF5ZXIgdHlwZSBieSBjYWxsaW5nIGBsYXllclR5cGVDaGFuZ2VVcGRhdGVyYCBvbiB2aXNTdGF0ZS5cbiAqIEluIGFkZGl0aW9uIHRvIHRoYXQsIGlmIHRoZSBuZXcgbGF5ZXIgdHlwZSBoYXMgdGhlIGBkYXJrQmFzZU1hcEVuYWJsZWRgIGNvbmZpZ1xuICogc2V0dGluZywgd2UgYWRqdXN0IGl0IGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29sb3JNb2RlIG9mIHRoZSBiYXNlIG1hcC5zXG4gKi9cbmV4cG9ydCBjb25zdCBjb21iaW5lZExheWVyVHlwZUNoYW5nZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBLZXBsZXJHbFN0YXRlLFxuICBhY3Rpb246IExheWVyVHlwZUNoYW5nZVVwZGF0ZXJBY3Rpb25cbik6IEtlcGxlckdsU3RhdGUgPT4ge1xuICBsZXQge3Zpc1N0YXRlfSA9IHN0YXRlO1xuICBjb25zdCBvbGRMYXllckluZGV4ID0gdmlzU3RhdGUubGF5ZXJzLmZpbmRJbmRleChsYXllciA9PiBsYXllciA9PT0gYWN0aW9uLm9sZExheWVyKTtcbiAgdmlzU3RhdGUgPSBsYXllclR5cGVDaGFuZ2VVcGRhdGVyKHZpc1N0YXRlLCBhY3Rpb24pO1xuICBjb25zdCBuZXdMYXllciA9IHZpc1N0YXRlLmxheWVyc1tvbGRMYXllckluZGV4XTtcbiAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuZXdMYXllcj8udmlzQ29uZmlnU2V0dGluZ3MsICdkYXJrQmFzZU1hcEVuYWJsZWQnKSkge1xuICAgIGNvbnN0IHttYXBTdHlsZX0gPSBzdGF0ZTtcbiAgICBjb25zdCB7Y29sb3JNb2RlfSA9IG1hcFN0eWxlLm1hcFN0eWxlc1ttYXBTdHlsZS5zdHlsZVR5cGVdO1xuICAgIGNvbnN0IHtkYXJrQmFzZU1hcEVuYWJsZWR9ID0gbmV3TGF5ZXIuY29uZmlnLnZpc0NvbmZpZztcbiAgICBzd2l0Y2ggKGNvbG9yTW9kZSkge1xuICAgICAgY2FzZSBCQVNFX01BUF9DT0xPUl9NT0RFUy5EQVJLOlxuICAgICAgICBpZiAoIWRhcmtCYXNlTWFwRW5hYmxlZCkge1xuICAgICAgICAgIHZpc1N0YXRlID0gdXBkYXRlRGFya0Jhc2VNYXBMYXllcnModHJ1ZSwgbmV3TGF5ZXIuaWQpKHZpc1N0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQkFTRV9NQVBfQ09MT1JfTU9ERVMuTElHSFQ6XG4gICAgICAgIGlmIChkYXJrQmFzZU1hcEVuYWJsZWQpIHtcbiAgICAgICAgICB2aXNTdGF0ZSA9IHVwZGF0ZURhcmtCYXNlTWFwTGF5ZXJzKGZhbHNlLCBuZXdMYXllci5pZCkodmlzU3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICB2aXNTdGF0ZVxuICB9O1xufTtcblxuLyoqXG4gKiBNYWtlIG1hcExlZ2VuZCBhY3RpdmUgd2hlbiB0b2dnbGVTcGxpdE1hcCBhY3Rpb24gaXMgY2FsbGVkXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTcGxpdE1hcFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBLZXBsZXJHbFN0YXRlLFxuICBhY3Rpb246IFRvZ2dsZVNwbGl0TWFwVXBkYXRlckFjdGlvblxuKTogS2VwbGVyR2xTdGF0ZSA9PiB7XG4gIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIHZpc1N0YXRlOiB2aXNTdGF0ZVRvZ2dsZVNwbGl0TWFwVXBkYXRlcihzdGF0ZS52aXNTdGF0ZSwgYWN0aW9uKSxcbiAgICB1aVN0YXRlOiB1aVN0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyKHN0YXRlLnVpU3RhdGUpLFxuICAgIG1hcFN0YXRlOiBtYXBTdGF0ZVRvZ2dsZVNwbGl0TWFwVXBkYXRlcihzdGF0ZS5tYXBTdGF0ZSlcbiAgfTtcblxuICBjb25zdCBpc1NwbGl0ID0gbmV3U3RhdGUudmlzU3RhdGUuc3BsaXRNYXBzLmxlbmd0aCAhPT0gMDtcbiAgY29uc3QgaXNMZWdlbmRBY3RpdmUgPSBuZXdTdGF0ZS51aVN0YXRlLm1hcENvbnRyb2xzPy5tYXBMZWdlbmQ/LmFjdGl2ZTtcbiAgaWYgKGlzU3BsaXQgJiYgIWlzTGVnZW5kQWN0aXZlKSB7XG4gICAgbmV3U3RhdGUudWlTdGF0ZSA9IHRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyKG5ld1N0YXRlLnVpU3RhdGUsIHtcbiAgICAgIHBheWxvYWQ6IHtwYW5lbElkOiAnbWFwTGVnZW5kJywgaW5kZXg6IGFjdGlvbi5wYXlsb2FkfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG5ld1N0YXRlO1xufTtcblxuY29uc3QgZGVmYXVsdFJlcGxhY2VEYXRhVG9NYXBPcHRpb25zID0ge1xuICBrZWVwRXhpc3RpbmdDb25maWc6IHRydWUsXG4gIGNlbnRlck1hcDogdHJ1ZSxcbiAgYXV0b0NyZWF0ZUxheWVyczogZmFsc2Vcbn07XG5cbi8qKlxuICogVXBkYXRlciByZXBsYWNlIGEgZGF0YXNldCBpbiBzdGF0ZVxuICovXG5leHBvcnQgY29uc3QgcmVwbGFjZURhdGFJbk1hcFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBLZXBsZXJHbFN0YXRlLFxuICB7cGF5bG9hZH06IHtwYXlsb2FkOiBSZXBsYWNlRGF0YUluTWFwUGF5bG9hZH1cbik6IEtlcGxlckdsU3RhdGUgPT4ge1xuICBjb25zdCB7ZGF0YXNldFRvUmVwbGFjZUlkLCBkYXRhc2V0VG9Vc2UsIG9wdGlvbnMgPSB7fX0gPSBwYXlsb2FkO1xuICBjb25zdCBhZGREYXRhVG9NYXBPcHRpb25zID0gey4uLmRlZmF1bHRSZXBsYWNlRGF0YVRvTWFwT3B0aW9ucywgLi4ub3B0aW9uc307XG5cbiAgLy8gY2hlY2sgaWYgZGF0YXNldCBpcyB0aGVyZVxuICBpZiAoIXN0YXRlLnZpc1N0YXRlLmRhdGFzZXRzW2RhdGFzZXRUb1JlcGxhY2VJZF0pIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgLy8gZGF0YXNldFRvVXNlIGlzIFByb3RvRGF0YXNldFxuICBjb25zdCBkYXRhSWRUb1VzZSA9IGRhdGFzZXRUb1VzZS5pbmZvLmlkO1xuICBpZiAoIWRhdGFJZFRvVXNlKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIC8vIHJlbW92ZSBkYXRhc2V0IGFuZCBwdXQgZGVwZW5kZW5jaWVzIGluIHRvQmVNZXJnZWRcbiAgY29uc3QgcHJlcGFyZWRTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICB2aXNTdGF0ZTogcHJlcGFyZVN0YXRlRm9yRGF0YXNldFJlcGxhY2Uoc3RhdGUudmlzU3RhdGUsIGRhdGFzZXRUb1JlcGxhY2VJZCwgZGF0YUlkVG9Vc2UpXG4gIH07XG5cbiAgY29uc3QgbmV4dFN0YXRlID0gYWRkRGF0YVRvTWFwVXBkYXRlcihcbiAgICBwcmVwYXJlZFN0YXRlLFxuICAgIHBheWxvYWRfKHtcbiAgICAgIGRhdGFzZXRzOiBkYXRhc2V0VG9Vc2UsXG4gICAgICAvLyBzaG91bGQgem9vbSB0byBuZXcgZGF0YXNldFxuICAgICAgb3B0aW9uczogYWRkRGF0YVRvTWFwT3B0aW9uc1xuICAgIH0pXG4gICk7XG5cbiAgcmV0dXJuIG5leHRTdGF0ZTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBR0EsSUFBQUEsZ0JBQUEsR0FBQUMsT0FBQTtBQVFBLElBQUFDLGlCQUFBLEdBQUFELE9BQUE7QUFPQSxJQUFBRSxpQkFBQSxHQUFBRixPQUFBO0FBSUEsSUFBQUcsaUJBQUEsR0FBQUgsT0FBQTtBQUlBLElBQUFJLFdBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLGdCQUFBLEdBQUFMLE9BQUE7QUFhQSxJQUFBTSxNQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxVQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxVQUFBLEdBQUFSLE9BQUE7QUFBNkUsU0FBQVMsUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxD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
@@ -370,13 +370,3 @@ export declare const setLocaleUpdater: (state: UiState, { payload: { locale } }:
370
370
  * @public
371
371
  */
372
372
  export declare const togglePanelListViewUpdater: (state: UiState, { payload: { panelId, listView } }: UIStateActions.TogglePanelListViewAction) => UiState;
373
- /**
374
- * Update state of the loading indicator.
375
- * @memberof uiStateUpdaters
376
- * @param state uiState
377
- * @param action
378
- * @param action.payload Payload with change of number of active loading actions.
379
- * @returns nextState
380
- * @public
381
- */
382
- export declare const setLoadingIndicatorUpdater: (state: UiState, { payload: { change } }: UIStateActions.SetLoadingIndicatorAction) => UiState;