@kepler.gl/constants 3.3.0-alpha.7 → 3.3.0-alpha.9

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.
@@ -3,11 +3,17 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.TILE3D_PROVIDERS = exports.RemoteTileFormat = exports.RasterTileType = exports.REMOTE_TILE = exports.PMTilesType = exports.DatasetType = void 0;
6
+ exports.TILE3D_PROVIDERS = exports.RemoteTileFormat = exports.RasterTileType = exports.REMOTE_TILE = exports.REMOTE_FILE_MIME_TYPES = exports.REMOTE_FILE_FORMATS = exports.REMOTE_FILE_EXTENSIONS = exports.PMTilesType = exports.MIME_TO_REMOTE_FILE_EXTENSION = exports.DatasetType = exports.DATASET_REFRESH_MIN_INTERVAL_MS = exports.DATASET_REFRESH_INTERVAL_OPTIONS = exports.DATASET_REFRESH_DEFAULT_CUSTOM_MS = exports.DATASET_REFRESH_CUSTOM_VALUE = void 0;
7
+ exports.formatCustomRefreshSeconds = formatCustomRefreshSeconds;
8
+ exports.getDatasetRefreshIntervalMs = getDatasetRefreshIntervalMs;
9
+ exports.getRemoteSourceFormat = getRemoteSourceFormat;
10
+ exports.isPresetDatasetRefreshInterval = isPresetDatasetRefreshInterval;
11
+ exports.parseCustomRefreshIntervalMs = parseCustomRefreshIntervalMs;
7
12
  // SPDX-License-Identifier: MIT
8
13
  // Copyright contributors to the kepler.gl project
9
14
  var DatasetType = exports.DatasetType = /*#__PURE__*/function (DatasetType) {
10
15
  DatasetType["LOCAL"] = "local";
16
+ DatasetType["EXTERNALLY_HOSTED"] = "externally-hosted";
11
17
  DatasetType["VECTOR_TILE"] = "vector-tile";
12
18
  DatasetType["RASTER_TILE"] = "raster-tile";
13
19
  DatasetType["WMS_TILE"] = "wms-tile";
@@ -15,6 +21,94 @@ var DatasetType = exports.DatasetType = /*#__PURE__*/function (DatasetType) {
15
21
  DatasetType["BITMAP"] = "bitmap";
16
22
  return DatasetType;
17
23
  }({});
24
+ var REMOTE_FILE_FORMATS = exports.REMOTE_FILE_FORMATS = ['auto', 'csv', 'geojson', 'json', 'arrow', 'parquet'];
25
+ var REMOTE_FILE_MIME_TYPES = exports.REMOTE_FILE_MIME_TYPES = {
26
+ csv: 'text/csv',
27
+ geojson: 'application/geo+json',
28
+ json: 'application/json',
29
+ arrow: 'application/vnd.apache.arrow.file',
30
+ parquet: 'application/vnd.apache.parquet'
31
+ };
32
+ var REMOTE_FILE_EXTENSIONS = exports.REMOTE_FILE_EXTENSIONS = {
33
+ csv: 'csv',
34
+ geojson: 'geojson',
35
+ json: 'json',
36
+ arrow: 'arrow',
37
+ parquet: 'parquet'
38
+ };
39
+ var MIME_TO_REMOTE_FILE_EXTENSION = exports.MIME_TO_REMOTE_FILE_EXTENSION = {
40
+ 'text/csv': 'csv',
41
+ 'text/tab-separated-values': 'tsv',
42
+ 'application/geo+json': 'geojson',
43
+ 'application/vnd.geo+json': 'geojson',
44
+ 'application/json': 'json',
45
+ 'application/vnd.apache.arrow.file': 'arrow',
46
+ 'application/vnd.apache.arrow.stream': 'arrow',
47
+ 'application/vnd.apache.parquet': 'parquet',
48
+ 'application/x-parquet': 'parquet'
49
+ };
50
+ var DATASET_REFRESH_INTERVAL_OPTIONS = exports.DATASET_REFRESH_INTERVAL_OPTIONS = [{
51
+ value: 0,
52
+ labelId: 'datasetTitle.refreshOff'
53
+ }, {
54
+ value: 10000,
55
+ labelId: 'datasetTitle.refresh10s'
56
+ }, {
57
+ value: 15000,
58
+ labelId: 'datasetTitle.refresh15s'
59
+ }, {
60
+ value: 60000,
61
+ labelId: 'datasetTitle.refresh1m'
62
+ }, {
63
+ value: 300000,
64
+ labelId: 'datasetTitle.refresh5m'
65
+ }, {
66
+ value: 900000,
67
+ labelId: 'datasetTitle.refresh15m'
68
+ }];
69
+
70
+ /** Select value for a user-entered interval that is not one of the presets. */
71
+ var DATASET_REFRESH_CUSTOM_VALUE = exports.DATASET_REFRESH_CUSTOM_VALUE = 'custom';
72
+ /** Default custom poll interval when switching from Off to Custom. */
73
+ var DATASET_REFRESH_DEFAULT_CUSTOM_MS = exports.DATASET_REFRESH_DEFAULT_CUSTOM_MS = 30000;
74
+ var DATASET_REFRESH_MIN_INTERVAL_MS = exports.DATASET_REFRESH_MIN_INTERVAL_MS = 100;
75
+ function isPresetDatasetRefreshInterval(ms) {
76
+ return DATASET_REFRESH_INTERVAL_OPTIONS.some(function (option) {
77
+ return option.value === ms;
78
+ });
79
+ }
80
+
81
+ /** Runtime copy of {@link ExternalDatasetMetadata} with `format` renamed to avoid colliding with DATASET_FORMATS. */
82
+
83
+ function getDatasetRefreshIntervalMs(metadata) {
84
+ var value = metadata === null || metadata === void 0 ? void 0 : metadata.refreshIntervalMs;
85
+ return typeof value === 'number' && Number.isFinite(value) && value > 0 ? value : 0;
86
+ }
87
+
88
+ /** Parse a seconds field into ms, or null if the input is not a positive number. */
89
+ function parseCustomRefreshIntervalMs(secondsText) {
90
+ var seconds = Number.parseFloat(secondsText);
91
+ if (!Number.isFinite(seconds) || seconds <= 0) {
92
+ return null;
93
+ }
94
+ return Math.max(DATASET_REFRESH_MIN_INTERVAL_MS, Math.round(seconds * 1000));
95
+ }
96
+
97
+ /** Display string for the custom seconds input (keeps tenths for sub-second values). */
98
+ function formatCustomRefreshSeconds(ms) {
99
+ var seconds = Math.max(DATASET_REFRESH_MIN_INTERVAL_MS, ms) / 1000;
100
+ if (Number.isInteger(seconds)) {
101
+ return String(seconds);
102
+ }
103
+ return String(Number(seconds.toFixed(3)));
104
+ }
105
+ function getRemoteSourceFormat(metadata) {
106
+ var candidate = typeof (metadata === null || metadata === void 0 ? void 0 : metadata.sourceFormat) === 'string' && metadata.sourceFormat || typeof (metadata === null || metadata === void 0 ? void 0 : metadata.format) === 'string' && metadata.format || undefined;
107
+ if (candidate && candidate !== 'auto' && Object.prototype.hasOwnProperty.call(REMOTE_FILE_EXTENSIONS, candidate)) {
108
+ return candidate;
109
+ }
110
+ return undefined;
111
+ }
18
112
  var RemoteTileFormat = exports.RemoteTileFormat = /*#__PURE__*/function (RemoteTileFormat) {
19
113
  RemoteTileFormat["MVT"] = "mvt";
20
114
  RemoteTileFormat["PMTILES"] = "pmtiles";
@@ -79,4 +173,4 @@ var TILE3D_PROVIDERS = exports.TILE3D_PROVIDERS = {
79
173
  }
80
174
  }
81
175
  };
82
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEYXRhc2V0VHlwZSIsImV4cG9ydHMiLCJSZW1vdGVUaWxlRm9ybWF0IiwiUE1UaWxlc1R5cGUiLCJSRU1PVEVfVElMRSIsIlJhc3RlclRpbGVUeXBlIiwiVElMRTNEX1BST1ZJREVSUyIsImdvb2dsZSIsIm5hbWUiLCJ1cmxLZXkiLCJhdHRyaWJ1dGlvbiIsInRpdGxlIiwidXJsIiwibG9nb1VybCIsImhlaWdodCIsImJvdHRvbSIsImNlc2l1bSIsImFyY2dpcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhc2V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmV4cG9ydCBlbnVtIERhdGFzZXRUeXBlIHtcbiAgTE9DQUwgPSAnbG9jYWwnLFxuICBWRUNUT1JfVElMRSA9ICd2ZWN0b3ItdGlsZScsXG4gIFJBU1RFUl9USUxFID0gJ3Jhc3Rlci10aWxlJyxcbiAgV01TX1RJTEUgPSAnd21zLXRpbGUnLFxuICBUSUxFXzNEID0gJ3RpbGUtM2QnLFxuICBCSVRNQVAgPSAnYml0bWFwJ1xufVxuXG5leHBvcnQgZW51bSBSZW1vdGVUaWxlRm9ybWF0IHtcbiAgTVZUID0gJ212dCcsXG4gIFBNVElMRVMgPSAncG10aWxlcycsXG4gIFdNUyA9ICd3bXMnXG59XG5cbmV4cG9ydCBlbnVtIFBNVGlsZXNUeXBlIHtcbiAgUkFTVEVSID0gJ3Jhc3RlcicsXG4gIE1WVCA9ICdtdnQnXG59XG5cbmV4cG9ydCBjb25zdCBSRU1PVEVfVElMRSA9ICdyZW1vdGUnO1xuXG5leHBvcnQgdHlwZSBWZWN0b3JUaWxlRGF0YXNldE1ldGFkYXRhID0ge1xuICB0eXBlOiB0eXBlb2YgUkVNT1RFX1RJTEU7XG4gIHJlbW90ZVRpbGVGb3JtYXQ6IFJlbW90ZVRpbGVGb3JtYXQ7XG4gIHRpbGVzZXREYXRhVXJsOiBzdHJpbmc7XG4gIHRpbGVzZXRNZXRhZGF0YVVybD86IHN0cmluZztcbn07XG5cbi8qKlxuICogUmFzdGVyIHRpbGVzZXQgbWV0YWRhdGEgaW4gU1RBQyBJdGVtIGZvcm1hdC4gU1RBQyB2ZXJzaW9uIG11c3QgYmUgPj0gMS4wLjAsXG4gKiBhbmQgdGhlIEVPIGFuZCBSYXN0ZXIgU1RBQyBleHRlbnNpb25zIGFyZSByZXF1aXJlZC4gVGhpcyBtZXRhZGF0YSBzaGFwZSBjYW5cbiAqIGJlIHBhc3NlZCB0byB0aGUgbWFwIHRvIHN5bmNocm9ub3VzbHkgYWRkIGEgcmFzdGVyIHRpbGVzZXQuXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yYWRpYW50ZWFydGgvc3RhYy1zcGVjL2Jsb2IvbWFzdGVyL2l0ZW0tc3BlYy9pdGVtLXNwZWMubWRcbiAqL1xuZXhwb3J0IHR5cGUgUmFzdGVyVGlsZUxvY2FsTWV0YWRhdGEgPSB7XG4gIHR5cGU6ICdGZWF0dXJlJztcblxuICAvKiogVVJMIGZvciB0aWxlc2V0IG1ldGFkYXRhLiAqL1xuICBtZXRhZGF0YVVybD86IHN0cmluZztcbiAgc3RhY192ZXJzaW9uOiBzdHJpbmc7XG4gIHN0YWNfZXh0ZW5zaW9uczogc3RyaW5nW107XG4gIGFzc2V0czogUmVjb3JkPHN0cmluZywgYW55Pjtcbn07XG5cbi8qKlxuICogUmFzdGVyIHRpbGVzZXQgbWV0YWRhdGEgd2l0aCBhIHJlbW90ZSBtZXRhZGF0YSBVUkwuIFRoaXMgbWV0YWRhdGEgY2FuXG4gKiBiZSBwYXNzZWQgdG8gdGhlIG1hcCB0byBhc3luY2hyb25vdXNseSBsb2FkIGEgcmFzdGVyIHRpbGVzZXQuXG4gKi9cbmV4cG9ydCB0eXBlIFJhc3RlclRpbGVSZW1vdGVNZXRhZGF0YSA9IHtcbiAgbWV0YWRhdGFVcmw6IHN0cmluZztcbn07XG5cbmV4cG9ydCBlbnVtIFJhc3RlclRpbGVUeXBlIHtcbiAgU1RBQyA9ICdzdGFjJyxcbiAgUE1USUxFUyA9ICdwbXRpbGVzJ1xufVxuXG5leHBvcnQgdHlwZSBSYXN0ZXJUaWxlTWV0YWRhdGFTb3VyY2VUeXBlID0ge1xuICBwbXRpbGVzVHlwZT86IFBNVGlsZXNUeXBlO1xufTtcblxuLyoqXG4gKiBSYXN0ZXIgdGlsZXNldCBtZXRhZGF0YS5cbiAqL1xuZXhwb3J0IHR5cGUgUmFzdGVyVGlsZURhdGFzZXRNZXRhZGF0YSA9IChSYXN0ZXJUaWxlTG9jYWxNZXRhZGF0YSB8IFJhc3RlclRpbGVSZW1vdGVNZXRhZGF0YSkgJlxuICBSYXN0ZXJUaWxlTWV0YWRhdGFTb3VyY2VUeXBlO1xuXG5leHBvcnQgdHlwZSBXTVNEYXRhc2V0TWV0YWRhdGEgPSB7XG4gIHR5cGU6IHR5cGVvZiBSRU1PVEVfVElMRTtcbiAgcmVtb3RlVGlsZUZvcm1hdDogUmVtb3RlVGlsZUZvcm1hdC5XTVM7XG4gIHRpbGVzZXREYXRhVXJsOiBzdHJpbmc7XG4gIHRpbGVzZXRNZXRhZGF0YVVybDogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIGxheWVyczoge25hbWU6IHN0cmluZzsgdGl0bGU6IHN0cmluZzsgYm91bmRpbmdCb3g6IG51bWJlcltdIHwgbnVsbH1bXTtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIGF0dHJpYnV0aW9uPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVGlsZTNEUHJvdmlkZXJBdHRyaWJ1dGlvbiA9IHtcbiAgdGl0bGU6IHN0cmluZztcbiAgdXJsOiBzdHJpbmc7XG4gIGxvZ29Vcmw/OiBzdHJpbmc7XG4gIGhlaWdodD86IG51bWJlcjtcbiAgYm90dG9tPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgVGlsZTNEUHJvdmlkZXIgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdXJsS2V5OiBzdHJpbmc7XG4gIGF0dHJpYnV0aW9uPzogVGlsZTNEUHJvdmlkZXJBdHRyaWJ1dGlvbjtcbn07XG5cbmV4cG9ydCBjb25zdCBUSUxFM0RfUFJPVklERVJTOiBSZWNvcmQ8c3RyaW5nLCBUaWxlM0RQcm92aWRlcj4gPSB7XG4gIGdvb2dsZToge1xuICAgIG5hbWU6ICdHb29nbGUgM0QgVGlsZXMnLFxuICAgIHVybEtleTogJ2dvb2dsZScsXG4gICAgYXR0cmlidXRpb246IHtcbiAgICAgIHRpdGxlOiAnQnVpbHQgd2l0aCBHb29nbGUgTWFwcy4nLFxuICAgICAgdXJsOiAnJyxcbiAgICAgIGxvZ29Vcmw6XG4gICAgICAgICdodHRwczovL3N0dWRpby1wdWJsaWMtZGF0YS5mb3Vyc3F1YXJlLmNvbS9zdGF0aWNzL2ltYWdlcy9nb29nbGUtd2F0ZXJtYXJrLXdoaXRlLnBuZycsXG4gICAgICBoZWlnaHQ6IDE3LFxuICAgICAgYm90dG9tOiAwXG4gICAgfVxuICB9LFxuICBjZXNpdW06IHtcbiAgICBuYW1lOiAnQ2VzaXVtIGlvbicsXG4gICAgdXJsS2V5OiAnaW9uLmNlc2l1bScsXG4gICAgYXR0cmlidXRpb246IHt0aXRsZTogJ0Nlc2l1bS4nLCB1cmw6ICdodHRwczovL2Nlc2l1bS5jb20vJywgaGVpZ2h0OiAxOSwgYm90dG9tOiAwfVxuICB9LFxuICBhcmNnaXM6IHtcbiAgICBuYW1lOiAnQXJjR0lTJyxcbiAgICB1cmxLZXk6ICdhcmNnaXMnLFxuICAgIGF0dHJpYnV0aW9uOiB7dGl0bGU6ICdQb3dlcmVkIGJ5IEVzcmkuJywgdXJsOiAnaHR0cHM6Ly9hcmNnaXMuY29tLycsIGhlaWdodDogMTZ9XG4gIH1cbn07XG5cbmV4cG9ydCB0eXBlIFRpbGUzRERhdGFzZXRNZXRhZGF0YSA9IHtcbiAgdGlsZTNkVXJsOiBzdHJpbmc7XG4gIHRpbGUzZEFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuICB0aWxlM2RQcm92aWRlcj86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEJpdG1hcEJvdW5kcyA9XG4gIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl1cbiAgfCBbW251bWJlciwgbnVtYmVyXSwgW251bWJlciwgbnVtYmVyXSwgW251bWJlciwgbnVtYmVyXSwgW251bWJlciwgbnVtYmVyXV07XG5cbmV4cG9ydCB0eXBlIEJpdG1hcERhdGFzZXRNZXRhZGF0YSA9IHtcbiAgaW1hZ2VVcmw6IHN0cmluZztcbiAgYm91bmRzOiBCaXRtYXBCb3VuZHM7XG4gIGlzRGF0YVVyaT86IGJvb2xlYW47XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQUEsSUFFWUEsV0FBVyxHQUFBQyxPQUFBLENBQUFELFdBQUEsMEJBQVhBLFdBQVc7RUFBWEEsV0FBVztFQUFYQSxXQUFXO0VBQVhBLFdBQVc7RUFBWEEsV0FBVztFQUFYQSxXQUFXO0VBQVhBLFdBQVc7RUFBQSxPQUFYQSxXQUFXO0FBQUE7QUFBQSxJQVNYRSxnQkFBZ0IsR0FBQUQsT0FBQSxDQUFBQyxnQkFBQSwwQkFBaEJBLGdCQUFnQjtFQUFoQkEsZ0JBQWdCO0VBQWhCQSxnQkFBZ0I7RUFBaEJBLGdCQUFnQjtFQUFBLE9BQWhCQSxnQkFBZ0I7QUFBQTtBQUFBLElBTWhCQyxXQUFXLEdBQUFGLE9BQUEsQ0FBQUUsV0FBQSwwQkFBWEEsV0FBVztFQUFYQSxXQUFXO0VBQVhBLFdBQVc7RUFBQSxPQUFYQSxXQUFXO0FBQUE7QUFLaEIsSUFBTUMsV0FBVyxHQUFBSCxPQUFBLENBQUFHLFdBQUEsR0FBRyxRQUFROztBQVNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFIQSxJQVFZQyxjQUFjLEdBQUFKLE9BQUEsQ0FBQUksY0FBQSwwQkFBZEEsY0FBYztFQUFkQSxjQUFjO0VBQWRBLGNBQWM7RUFBQSxPQUFkQSxjQUFjO0FBQUE7QUFTMUI7QUFDQTtBQUNBO0FBNkJPLElBQU1DLGdCQUFnRCxHQUFBTCxPQUFBLENBQUFLLGdCQUFBLEdBQUc7RUFDOURDLE1BQU0sRUFBRTtJQUNOQyxJQUFJLEVBQUUsaUJBQWlCO0lBQ3ZCQyxNQUFNLEVBQUUsUUFBUTtJQUNoQkMsV0FBVyxFQUFFO01BQ1hDLEtBQUssRUFBRSx5QkFBeUI7TUFDaENDLEdBQUcsRUFBRSxFQUFFO01BQ1BDLE9BQU8sRUFDTCxxRkFBcUY7TUFDdkZDLE1BQU0sRUFBRSxFQUFFO01BQ1ZDLE1BQU0sRUFBRTtJQUNWO0VBQ0YsQ0FBQztFQUNEQyxNQUFNLEVBQUU7SUFDTlIsSUFBSSxFQUFFLFlBQVk7SUFDbEJDLE1BQU0sRUFBRSxZQUFZO0lBQ3BCQyxXQUFXLEVBQUU7TUFBQ0MsS0FBSyxFQUFFLFNBQVM7TUFBRUMsR0FBRyxFQUFFLHFCQUFxQjtNQUFFRSxNQUFNLEVBQUUsRUFBRTtNQUFFQyxNQUFNLEVBQUU7SUFBQztFQUNuRixDQUFDO0VBQ0RFLE1BQU0sRUFBRTtJQUNOVCxJQUFJLEVBQUUsUUFBUTtJQUNkQyxNQUFNLEVBQUUsUUFBUTtJQUNoQkMsV0FBVyxFQUFFO01BQUNDLEtBQUssRUFBRSxrQkFBa0I7TUFBRUMsR0FBRyxFQUFFLHFCQUFxQjtNQUFFRSxNQUFNLEVBQUU7SUFBRTtFQUNqRjtBQUNGLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
176
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEYXRhc2V0VHlwZSIsImV4cG9ydHMiLCJSRU1PVEVfRklMRV9GT1JNQVRTIiwiUkVNT1RFX0ZJTEVfTUlNRV9UWVBFUyIsImNzdiIsImdlb2pzb24iLCJqc29uIiwiYXJyb3ciLCJwYXJxdWV0IiwiUkVNT1RFX0ZJTEVfRVhURU5TSU9OUyIsIk1JTUVfVE9fUkVNT1RFX0ZJTEVfRVhURU5TSU9OIiwiREFUQVNFVF9SRUZSRVNIX0lOVEVSVkFMX09QVElPTlMiLCJ2YWx1ZSIsImxhYmVsSWQiLCJEQVRBU0VUX1JFRlJFU0hfQ1VTVE9NX1ZBTFVFIiwiREFUQVNFVF9SRUZSRVNIX0RFRkFVTFRfQ1VTVE9NX01TIiwiREFUQVNFVF9SRUZSRVNIX01JTl9JTlRFUlZBTF9NUyIsImlzUHJlc2V0RGF0YXNldFJlZnJlc2hJbnRlcnZhbCIsIm1zIiwic29tZSIsIm9wdGlvbiIsImdldERhdGFzZXRSZWZyZXNoSW50ZXJ2YWxNcyIsIm1ldGFkYXRhIiwicmVmcmVzaEludGVydmFsTXMiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsInBhcnNlQ3VzdG9tUmVmcmVzaEludGVydmFsTXMiLCJzZWNvbmRzVGV4dCIsInNlY29uZHMiLCJwYXJzZUZsb2F0IiwiTWF0aCIsIm1heCIsInJvdW5kIiwiZm9ybWF0Q3VzdG9tUmVmcmVzaFNlY29uZHMiLCJpc0ludGVnZXIiLCJTdHJpbmciLCJ0b0ZpeGVkIiwiZ2V0UmVtb3RlU291cmNlRm9ybWF0IiwiY2FuZGlkYXRlIiwic291cmNlRm9ybWF0IiwiZm9ybWF0IiwidW5kZWZpbmVkIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiUmVtb3RlVGlsZUZvcm1hdCIsIlBNVGlsZXNUeXBlIiwiUkVNT1RFX1RJTEUiLCJSYXN0ZXJUaWxlVHlwZSIsIlRJTEUzRF9QUk9WSURFUlMiLCJnb29nbGUiLCJuYW1lIiwidXJsS2V5IiwiYXR0cmlidXRpb24iLCJ0aXRsZSIsInVybCIsImxvZ29VcmwiLCJoZWlnaHQiLCJib3R0b20iLCJjZXNpdW0iLCJhcmNnaXMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YXNldC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5leHBvcnQgZW51bSBEYXRhc2V0VHlwZSB7XG4gIExPQ0FMID0gJ2xvY2FsJyxcbiAgRVhURVJOQUxMWV9IT1NURUQgPSAnZXh0ZXJuYWxseS1ob3N0ZWQnLFxuICBWRUNUT1JfVElMRSA9ICd2ZWN0b3ItdGlsZScsXG4gIFJBU1RFUl9USUxFID0gJ3Jhc3Rlci10aWxlJyxcbiAgV01TX1RJTEUgPSAnd21zLXRpbGUnLFxuICBUSUxFXzNEID0gJ3RpbGUtM2QnLFxuICBCSVRNQVAgPSAnYml0bWFwJ1xufVxuXG5leHBvcnQgY29uc3QgUkVNT1RFX0ZJTEVfRk9STUFUUyA9IFsnYXV0bycsICdjc3YnLCAnZ2VvanNvbicsICdqc29uJywgJ2Fycm93JywgJ3BhcnF1ZXQnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJlbW90ZUZpbGVGb3JtYXQgPSAodHlwZW9mIFJFTU9URV9GSUxFX0ZPUk1BVFMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBSRU1PVEVfRklMRV9NSU1FX1RZUEVTOiBSZWNvcmQ8RXhjbHVkZTxSZW1vdGVGaWxlRm9ybWF0LCAnYXV0byc+LCBzdHJpbmc+ID0ge1xuICBjc3Y6ICd0ZXh0L2NzdicsXG4gIGdlb2pzb246ICdhcHBsaWNhdGlvbi9nZW8ranNvbicsXG4gIGpzb246ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgYXJyb3c6ICdhcHBsaWNhdGlvbi92bmQuYXBhY2hlLmFycm93LmZpbGUnLFxuICBwYXJxdWV0OiAnYXBwbGljYXRpb24vdm5kLmFwYWNoZS5wYXJxdWV0J1xufTtcblxuZXhwb3J0IGNvbnN0IFJFTU9URV9GSUxFX0VYVEVOU0lPTlM6IFJlY29yZDxFeGNsdWRlPFJlbW90ZUZpbGVGb3JtYXQsICdhdXRvJz4sIHN0cmluZz4gPSB7XG4gIGNzdjogJ2NzdicsXG4gIGdlb2pzb246ICdnZW9qc29uJyxcbiAganNvbjogJ2pzb24nLFxuICBhcnJvdzogJ2Fycm93JyxcbiAgcGFycXVldDogJ3BhcnF1ZXQnXG59O1xuXG5leHBvcnQgY29uc3QgTUlNRV9UT19SRU1PVEVfRklMRV9FWFRFTlNJT046IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICd0ZXh0L2Nzdic6ICdjc3YnLFxuICAndGV4dC90YWItc2VwYXJhdGVkLXZhbHVlcyc6ICd0c3YnLFxuICAnYXBwbGljYXRpb24vZ2VvK2pzb24nOiAnZ2VvanNvbicsXG4gICdhcHBsaWNhdGlvbi92bmQuZ2VvK2pzb24nOiAnZ2VvanNvbicsXG4gICdhcHBsaWNhdGlvbi9qc29uJzogJ2pzb24nLFxuICAnYXBwbGljYXRpb24vdm5kLmFwYWNoZS5hcnJvdy5maWxlJzogJ2Fycm93JyxcbiAgJ2FwcGxpY2F0aW9uL3ZuZC5hcGFjaGUuYXJyb3cuc3RyZWFtJzogJ2Fycm93JyxcbiAgJ2FwcGxpY2F0aW9uL3ZuZC5hcGFjaGUucGFycXVldCc6ICdwYXJxdWV0JyxcbiAgJ2FwcGxpY2F0aW9uL3gtcGFycXVldCc6ICdwYXJxdWV0J1xufTtcblxuZXhwb3J0IGNvbnN0IERBVEFTRVRfUkVGUkVTSF9JTlRFUlZBTF9PUFRJT05TOiB7dmFsdWU6IG51bWJlcjsgbGFiZWxJZDogc3RyaW5nfVtdID0gW1xuICB7dmFsdWU6IDAsIGxhYmVsSWQ6ICdkYXRhc2V0VGl0bGUucmVmcmVzaE9mZid9LFxuICB7dmFsdWU6IDEwXzAwMCwgbGFiZWxJZDogJ2RhdGFzZXRUaXRsZS5yZWZyZXNoMTBzJ30sXG4gIHt2YWx1ZTogMTVfMDAwLCBsYWJlbElkOiAnZGF0YXNldFRpdGxlLnJlZnJlc2gxNXMnfSxcbiAge3ZhbHVlOiA2MF8wMDAsIGxhYmVsSWQ6ICdkYXRhc2V0VGl0bGUucmVmcmVzaDFtJ30sXG4gIHt2YWx1ZTogMzAwXzAwMCwgbGFiZWxJZDogJ2RhdGFzZXRUaXRsZS5yZWZyZXNoNW0nfSxcbiAge3ZhbHVlOiA5MDBfMDAwLCBsYWJlbElkOiAnZGF0YXNldFRpdGxlLnJlZnJlc2gxNW0nfVxuXTtcblxuLyoqIFNlbGVjdCB2YWx1ZSBmb3IgYSB1c2VyLWVudGVyZWQgaW50ZXJ2YWwgdGhhdCBpcyBub3Qgb25lIG9mIHRoZSBwcmVzZXRzLiAqL1xuZXhwb3J0IGNvbnN0IERBVEFTRVRfUkVGUkVTSF9DVVNUT01fVkFMVUUgPSAnY3VzdG9tJztcbi8qKiBEZWZhdWx0IGN1c3RvbSBwb2xsIGludGVydmFsIHdoZW4gc3dpdGNoaW5nIGZyb20gT2ZmIHRvIEN1c3RvbS4gKi9cbmV4cG9ydCBjb25zdCBEQVRBU0VUX1JFRlJFU0hfREVGQVVMVF9DVVNUT01fTVMgPSAzMF8wMDA7XG5leHBvcnQgY29uc3QgREFUQVNFVF9SRUZSRVNIX01JTl9JTlRFUlZBTF9NUyA9IDEwMDtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJlc2V0RGF0YXNldFJlZnJlc2hJbnRlcnZhbChtczogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiBEQVRBU0VUX1JFRlJFU0hfSU5URVJWQUxfT1BUSU9OUy5zb21lKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IG1zKTtcbn1cblxuZXhwb3J0IHR5cGUgRXh0ZXJuYWxEYXRhc2V0UmVmcmVzaFN0YXR1cyA9ICdpZGxlJyB8ICdsb2FkaW5nJyB8ICdlcnJvcic7XG5cbmV4cG9ydCB0eXBlIEV4dGVybmFsRGF0YXNldE1ldGFkYXRhID0ge1xuICAvKiogUmVtb3RlIFVSTCBvZiB0aGUgZGF0YXNldCBmaWxlLiAqL1xuICBzb3VyY2U6IHN0cmluZztcbiAgLyoqIE9wdGlvbmFsIGZvcm1hdCBoaW50IGZvciBleHRlbnNpb25sZXNzIFVSTHMgKFNBUyBrZXlzLCBldGMpLiAqL1xuICBmb3JtYXQ/OiBFeGNsdWRlPFJlbW90ZUZpbGVGb3JtYXQsICdhdXRvJz4gfCBzdHJpbmc7XG4gIC8qKiBMYXN0IGtub3duIHNpemUgb2YgdGhlIGhvc3RlZCByZXNvdXJjZSwgaW4gYnl0ZXMuICovXG4gIHNpemU/OiBudW1iZXI7XG4gIC8qKiBQb2xsIGludGVydmFsIGluIG1zLiBPbWl0dGVkIG9yIDAgbWVhbnMgbWFudWFsIHJlZnJlc2ggb25seS4gKi9cbiAgcmVmcmVzaEludGVydmFsTXM/OiBudW1iZXI7XG59O1xuXG4vKiogUnVudGltZSBjb3B5IG9mIHtAbGluayBFeHRlcm5hbERhdGFzZXRNZXRhZGF0YX0gd2l0aCBgZm9ybWF0YCByZW5hbWVkIHRvIGF2b2lkIGNvbGxpZGluZyB3aXRoIERBVEFTRVRfRk9STUFUUy4gKi9cbmV4cG9ydCB0eXBlIEV4dGVybmFsRGF0YXNldFJ1bnRpbWVNZXRhZGF0YSA9IHtcbiAgc291cmNlOiBzdHJpbmc7XG4gIHNvdXJjZUZvcm1hdD86IEV4Y2x1ZGU8UmVtb3RlRmlsZUZvcm1hdCwgJ2F1dG8nPiB8IHN0cmluZztcbiAgc2l6ZT86IG51bWJlcjtcbiAgcmVmcmVzaEludGVydmFsTXM/OiBudW1iZXI7XG4gIGV0YWc/OiBzdHJpbmc7XG4gIGxhc3RNb2RpZmllZD86IHN0cmluZztcbiAgbGFzdEZldGNoZWRBdD86IG51bWJlcjtcbiAgcmVmcmVzaFN0YXR1cz86IEV4dGVybmFsRGF0YXNldFJlZnJlc2hTdGF0dXM7XG4gIHJlZnJlc2hFcnJvcj86IHN0cmluZztcbiAgLyoqIERvd25sb2FkIHByb2dyZXNzIDDigJMxMDAgd2hpbGUgYHJlZnJlc2hTdGF0dXNgIGlzIGBsb2FkaW5nYC4gKi9cbiAgcmVmcmVzaFByb2dyZXNzPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGFzZXRSZWZyZXNoSW50ZXJ2YWxNcyhtZXRhZGF0YT86IHtyZWZyZXNoSW50ZXJ2YWxNcz86IHVua25vd259KTogbnVtYmVyIHtcbiAgY29uc3QgdmFsdWUgPSBtZXRhZGF0YT8ucmVmcmVzaEludGVydmFsTXM7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIE51bWJlci5pc0Zpbml0ZSh2YWx1ZSkgJiYgdmFsdWUgPiAwID8gdmFsdWUgOiAwO1xufVxuXG4vKiogUGFyc2UgYSBzZWNvbmRzIGZpZWxkIGludG8gbXMsIG9yIG51bGwgaWYgdGhlIGlucHV0IGlzIG5vdCBhIHBvc2l0aXZlIG51bWJlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUN1c3RvbVJlZnJlc2hJbnRlcnZhbE1zKHNlY29uZHNUZXh0OiBzdHJpbmcpOiBudW1iZXIgfCBudWxsIHtcbiAgY29uc3Qgc2Vjb25kcyA9IE51bWJlci5wYXJzZUZsb2F0KHNlY29uZHNUZXh0KTtcbiAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoc2Vjb25kcykgfHwgc2Vjb25kcyA8PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIE1hdGgubWF4KERBVEFTRVRfUkVGUkVTSF9NSU5fSU5URVJWQUxfTVMsIE1hdGgucm91bmQoc2Vjb25kcyAqIDEwMDApKTtcbn1cblxuLyoqIERpc3BsYXkgc3RyaW5nIGZvciB0aGUgY3VzdG9tIHNlY29uZHMgaW5wdXQgKGtlZXBzIHRlbnRocyBmb3Igc3ViLXNlY29uZCB2YWx1ZXMpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEN1c3RvbVJlZnJlc2hTZWNvbmRzKG1zOiBudW1iZXIpOiBzdHJpbmcge1xuICBjb25zdCBzZWNvbmRzID0gTWF0aC5tYXgoREFUQVNFVF9SRUZSRVNIX01JTl9JTlRFUlZBTF9NUywgbXMpIC8gMTAwMDtcbiAgaWYgKE51bWJlci5pc0ludGVnZXIoc2Vjb25kcykpIHtcbiAgICByZXR1cm4gU3RyaW5nKHNlY29uZHMpO1xuICB9XG4gIHJldHVybiBTdHJpbmcoTnVtYmVyKHNlY29uZHMudG9GaXhlZCgzKSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVtb3RlU291cmNlRm9ybWF0KG1ldGFkYXRhPzoge1xuICBzb3VyY2VGb3JtYXQ/OiB1bmtub3duO1xuICBmb3JtYXQ/OiB1bmtub3duO1xufSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGNhbmRpZGF0ZSA9XG4gICAgKHR5cGVvZiBtZXRhZGF0YT8uc291cmNlRm9ybWF0ID09PSAnc3RyaW5nJyAmJiBtZXRhZGF0YS5zb3VyY2VGb3JtYXQpIHx8XG4gICAgKHR5cGVvZiBtZXRhZGF0YT8uZm9ybWF0ID09PSAnc3RyaW5nJyAmJiBtZXRhZGF0YS5mb3JtYXQpIHx8XG4gICAgdW5kZWZpbmVkO1xuICBpZiAoXG4gICAgY2FuZGlkYXRlICYmXG4gICAgY2FuZGlkYXRlICE9PSAnYXV0bycgJiZcbiAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoUkVNT1RFX0ZJTEVfRVhURU5TSU9OUywgY2FuZGlkYXRlKVxuICApIHtcbiAgICByZXR1cm4gY2FuZGlkYXRlO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBlbnVtIFJlbW90ZVRpbGVGb3JtYXQge1xuICBNVlQgPSAnbXZ0JyxcbiAgUE1USUxFUyA9ICdwbXRpbGVzJyxcbiAgV01TID0gJ3dtcydcbn1cblxuZXhwb3J0IGVudW0gUE1UaWxlc1R5cGUge1xuICBSQVNURVIgPSAncmFzdGVyJyxcbiAgTVZUID0gJ212dCdcbn1cblxuZXhwb3J0IGNvbnN0IFJFTU9URV9USUxFID0gJ3JlbW90ZSc7XG5cbmV4cG9ydCB0eXBlIFZlY3RvclRpbGVEYXRhc2V0TWV0YWRhdGEgPSB7XG4gIHR5cGU6IHR5cGVvZiBSRU1PVEVfVElMRTtcbiAgcmVtb3RlVGlsZUZvcm1hdDogUmVtb3RlVGlsZUZvcm1hdDtcbiAgdGlsZXNldERhdGFVcmw6IHN0cmluZztcbiAgdGlsZXNldE1ldGFkYXRhVXJsPzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBSYXN0ZXIgdGlsZXNldCBtZXRhZGF0YSBpbiBTVEFDIEl0ZW0gZm9ybWF0LiBTVEFDIHZlcnNpb24gbXVzdCBiZSA+PSAxLjAuMCxcbiAqIGFuZCB0aGUgRU8gYW5kIFJhc3RlciBTVEFDIGV4dGVuc2lvbnMgYXJlIHJlcXVpcmVkLiBUaGlzIG1ldGFkYXRhIHNoYXBlIGNhblxuICogYmUgcGFzc2VkIHRvIHRoZSBtYXAgdG8gc3luY2hyb25vdXNseSBhZGQgYSByYXN0ZXIgdGlsZXNldC5cbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JhZGlhbnRlYXJ0aC9zdGFjLXNwZWMvYmxvYi9tYXN0ZXIvaXRlbS1zcGVjL2l0ZW0tc3BlYy5tZFxuICovXG5leHBvcnQgdHlwZSBSYXN0ZXJUaWxlTG9jYWxNZXRhZGF0YSA9IHtcbiAgdHlwZTogJ0ZlYXR1cmUnO1xuXG4gIC8qKiBVUkwgZm9yIHRpbGVzZXQgbWV0YWRhdGEuICovXG4gIG1ldGFkYXRhVXJsPzogc3RyaW5nO1xuICBzdGFjX3ZlcnNpb246IHN0cmluZztcbiAgc3RhY19leHRlbnNpb25zOiBzdHJpbmdbXTtcbiAgYXNzZXRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufTtcblxuLyoqXG4gKiBSYXN0ZXIgdGlsZXNldCBtZXRhZGF0YSB3aXRoIGEgcmVtb3RlIG1ldGFkYXRhIFVSTC4gVGhpcyBtZXRhZGF0YSBjYW5cbiAqIGJlIHBhc3NlZCB0byB0aGUgbWFwIHRvIGFzeW5jaHJvbm91c2x5IGxvYWQgYSByYXN0ZXIgdGlsZXNldC5cbiAqL1xuZXhwb3J0IHR5cGUgUmFzdGVyVGlsZVJlbW90ZU1ldGFkYXRhID0ge1xuICBtZXRhZGF0YVVybDogc3RyaW5nO1xufTtcblxuZXhwb3J0IGVudW0gUmFzdGVyVGlsZVR5cGUge1xuICBTVEFDID0gJ3N0YWMnLFxuICBQTVRJTEVTID0gJ3BtdGlsZXMnXG59XG5cbmV4cG9ydCB0eXBlIFJhc3RlclRpbGVNZXRhZGF0YVNvdXJjZVR5cGUgPSB7XG4gIHBtdGlsZXNUeXBlPzogUE1UaWxlc1R5cGU7XG59O1xuXG4vKipcbiAqIFJhc3RlciB0aWxlc2V0IG1ldGFkYXRhLlxuICovXG5leHBvcnQgdHlwZSBSYXN0ZXJUaWxlRGF0YXNldE1ldGFkYXRhID0gKFJhc3RlclRpbGVMb2NhbE1ldGFkYXRhIHwgUmFzdGVyVGlsZVJlbW90ZU1ldGFkYXRhKSAmXG4gIFJhc3RlclRpbGVNZXRhZGF0YVNvdXJjZVR5cGU7XG5cbmV4cG9ydCB0eXBlIFdNU0RhdGFzZXRNZXRhZGF0YSA9IHtcbiAgdHlwZTogdHlwZW9mIFJFTU9URV9USUxFO1xuICByZW1vdGVUaWxlRm9ybWF0OiBSZW1vdGVUaWxlRm9ybWF0LldNUztcbiAgdGlsZXNldERhdGFVcmw6IHN0cmluZztcbiAgdGlsZXNldE1ldGFkYXRhVXJsOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgbGF5ZXJzOiB7bmFtZTogc3RyaW5nOyB0aXRsZTogc3RyaW5nOyBib3VuZGluZ0JveDogbnVtYmVyW10gfCBudWxsfVtdO1xuICBsYWJlbD86IHN0cmluZztcbiAgYXR0cmlidXRpb24/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBUaWxlM0RQcm92aWRlckF0dHJpYnV0aW9uID0ge1xuICB0aXRsZTogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbiAgbG9nb1VybD86IHN0cmluZztcbiAgaGVpZ2h0PzogbnVtYmVyO1xuICBib3R0b20/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBUaWxlM0RQcm92aWRlciA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICB1cmxLZXk6IHN0cmluZztcbiAgYXR0cmlidXRpb24/OiBUaWxlM0RQcm92aWRlckF0dHJpYnV0aW9uO1xufTtcblxuZXhwb3J0IGNvbnN0IFRJTEUzRF9QUk9WSURFUlM6IFJlY29yZDxzdHJpbmcsIFRpbGUzRFByb3ZpZGVyPiA9IHtcbiAgZ29vZ2xlOiB7XG4gICAgbmFtZTogJ0dvb2dsZSAzRCBUaWxlcycsXG4gICAgdXJsS2V5OiAnZ29vZ2xlJyxcbiAgICBhdHRyaWJ1dGlvbjoge1xuICAgICAgdGl0bGU6ICdCdWlsdCB3aXRoIEdvb2dsZSBNYXBzLicsXG4gICAgICB1cmw6ICcnLFxuICAgICAgbG9nb1VybDpcbiAgICAgICAgJ2h0dHBzOi8vc3R1ZGlvLXB1YmxpYy1kYXRhLmZvdXJzcXVhcmUuY29tL3N0YXRpY3MvaW1hZ2VzL2dvb2dsZS13YXRlcm1hcmstd2hpdGUucG5nJyxcbiAgICAgIGhlaWdodDogMTcsXG4gICAgICBib3R0b206IDBcbiAgICB9XG4gIH0sXG4gIGNlc2l1bToge1xuICAgIG5hbWU6ICdDZXNpdW0gaW9uJyxcbiAgICB1cmxLZXk6ICdpb24uY2VzaXVtJyxcbiAgICBhdHRyaWJ1dGlvbjoge3RpdGxlOiAnQ2VzaXVtLicsIHVybDogJ2h0dHBzOi8vY2VzaXVtLmNvbS8nLCBoZWlnaHQ6IDE5LCBib3R0b206IDB9XG4gIH0sXG4gIGFyY2dpczoge1xuICAgIG5hbWU6ICdBcmNHSVMnLFxuICAgIHVybEtleTogJ2FyY2dpcycsXG4gICAgYXR0cmlidXRpb246IHt0aXRsZTogJ1Bvd2VyZWQgYnkgRXNyaS4nLCB1cmw6ICdodHRwczovL2FyY2dpcy5jb20vJywgaGVpZ2h0OiAxNn1cbiAgfVxufTtcblxuZXhwb3J0IHR5cGUgVGlsZTNERGF0YXNldE1ldGFkYXRhID0ge1xuICB0aWxlM2RVcmw6IHN0cmluZztcbiAgdGlsZTNkQWNjZXNzVG9rZW4/OiBzdHJpbmc7XG4gIHRpbGUzZFByb3ZpZGVyPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQml0bWFwQm91bmRzID1cbiAgfCBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXVxuICB8IFtbbnVtYmVyLCBudW1iZXJdLCBbbnVtYmVyLCBudW1iZXJdLCBbbnVtYmVyLCBudW1iZXJdLCBbbnVtYmVyLCBudW1iZXJdXTtcblxuZXhwb3J0IHR5cGUgQml0bWFwRGF0YXNldE1ldGFkYXRhID0ge1xuICBpbWFnZVVybDogc3RyaW5nO1xuICBib3VuZHM6IEJpdG1hcEJvdW5kcztcbiAgaXNEYXRhVXJpPzogYm9vbGVhbjtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUFBLElBRVlBLFdBQVcsR0FBQUMsT0FBQSxDQUFBRCxXQUFBLDBCQUFYQSxXQUFXO0VBQVhBLFdBQVc7RUFBWEEsV0FB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