kepler.gl 3.1.0 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -132
- package/dist/src/common-utils/src/data-type.d.ts +9 -1
- package/dist/src/components/src/common/data-table/header-cell.d.ts +1 -0
- package/dist/src/components/src/common/data-table/index.d.ts +1 -0
- package/dist/src/components/src/common/file-uploader/file-drop.d.ts +1 -32
- package/dist/src/components/src/common/item-selector/dropdown-list.d.ts +2 -2
- package/dist/src/components/src/common/item-selector/item-selector.d.ts +1 -1
- package/dist/src/components/src/common/item-selector/typeahead.d.ts +1 -1
- package/dist/src/components/src/geocoder/geocoder.d.ts +7 -0
- package/dist/src/components/src/geocoder-panel.d.ts +2 -2
- package/dist/src/components/src/hooks/use-fetch-vector-tile-metadata.d.ts +4 -3
- package/dist/src/constants/src/default-settings.d.ts +14 -1
- package/dist/src/deckgl-arrow-layers/src/constants.d.ts +0 -12
- package/dist/src/deckgl-arrow-layers/src/index.d.ts +0 -1
- package/dist/src/deckgl-arrow-layers/src/utils/utils.d.ts +12 -1
- package/dist/src/duckdb/src/components/preview-data-panel.d.ts +7 -2
- package/dist/src/duckdb/src/components/schema-panel.d.ts +12 -3
- package/dist/src/duckdb/src/processors/data-processor.d.ts +1 -0
- package/dist/src/duckdb/src/table/duckdb-table-utils.d.ts +106 -0
- package/dist/src/duckdb/src/table/duckdb-table.d.ts +5 -3
- package/dist/src/processors/src/data-processor.d.ts +15 -1
- package/dist/src/reducers/src/provider-state-updaters.d.ts +1 -0
- package/dist/src/reducers/src/vis-state-updaters.d.ts +1 -1
- package/dist/src/table/src/dataset-utils.d.ts +1 -1
- package/dist/src/table/src/tileset/vector-tile-utils.d.ts +17 -1
- package/dist/src/utils/src/application-config.d.ts +4 -3
- package/dist/src/utils/src/data-utils.d.ts +9 -3
- package/dist/src/utils/src/indexed-data-container.d.ts +2 -2
- package/dist/src/utils/src/map-style-utils/mapbox-utils.d.ts +1 -1
- package/dist/src/utils/src/map-utils.d.ts +1 -1
- package/dist/src/utils/src/plot.d.ts +2 -2
- package/package.json +5 -5
- package/src/actions/package.json +8 -8
- package/src/ai-assistant/dist/components/ai-assistant-component.js +2 -1
- package/src/ai-assistant/package.json +7 -7
- package/src/ai-assistant/src/components/ai-assistant-component.tsx +1 -0
- package/src/cloud-providers/package.json +2 -2
- package/src/common-utils/dist/data-type.d.ts +9 -1
- package/src/common-utils/dist/data-type.js +50 -1
- package/src/common-utils/package.json +3 -3
- package/src/common-utils/src/data-type.ts +49 -1
- package/src/components/dist/common/data-table/header-cell.d.ts +1 -0
- package/src/components/dist/common/data-table/header-cell.js +2 -2
- package/src/components/dist/common/data-table/index.d.ts +1 -0
- package/src/components/dist/common/data-table/index.js +5 -1
- package/src/components/dist/common/file-uploader/file-drop.d.ts +1 -32
- package/src/components/dist/common/file-uploader/file-drop.js +152 -167
- package/src/components/dist/common/item-selector/dropdown-list.d.ts +2 -2
- package/src/components/dist/common/item-selector/dropdown-list.js +2 -3
- package/src/components/dist/common/item-selector/item-selector.d.ts +1 -1
- package/src/components/dist/common/item-selector/typeahead.d.ts +1 -1
- package/src/components/dist/common/range-brush.js +3 -3
- package/src/components/dist/geocoder/geocoder.d.ts +7 -0
- package/src/components/dist/geocoder/geocoder.js +19 -11
- package/src/components/dist/geocoder-panel.d.ts +2 -2
- package/src/components/dist/geocoder-panel.js +64 -91
- package/src/components/dist/hooks/use-fetch-vector-tile-metadata.d.ts +4 -3
- package/src/components/dist/hooks/use-fetch-vector-tile-metadata.js +35 -26
- package/src/components/dist/hooks/use-legend-position.js +8 -4
- package/src/components/dist/map/map-legend-panel.js +2 -3
- package/src/components/dist/modal-container.js +8 -8
- package/src/components/dist/modals/tilesets-modals/tileset-vector-form.js +31 -12
- package/src/components/dist/side-panel/layer-panel/color-palette-preset.js +2 -2
- package/src/components/dist/side-panel/layer-panel/color-range-selector.js +10 -11
- package/src/components/dist/side-panel/layer-panel/color-selector.js +3 -3
- package/src/components/dist/side-panel/layer-panel/custom-palette.js +1 -2
- package/src/components/dist/side-panel/layer-panel/layer-configurator.js +6 -8
- package/src/components/dist/side-panel/layer-panel/vector-tile-layer-configurator.js +1 -2
- package/src/components/package.json +16 -16
- package/src/components/src/common/data-table/header-cell.tsx +2 -1
- package/src/components/src/common/data-table/index.tsx +4 -0
- package/src/components/src/common/file-uploader/file-drop.tsx +186 -161
- package/src/components/src/common/item-selector/dropdown-list.tsx +1 -6
- package/src/components/src/common/range-brush.tsx +2 -2
- package/src/components/src/geocoder/geocoder.tsx +16 -8
- package/src/components/src/geocoder-panel.tsx +95 -85
- package/src/components/src/hooks/use-fetch-vector-tile-metadata.ts +27 -25
- package/src/components/src/hooks/use-legend-position.ts +5 -2
- package/src/components/src/map/map-legend-panel.tsx +1 -2
- package/src/components/src/modal-container.tsx +7 -7
- package/src/components/src/modals/tilesets-modals/tileset-vector-form.tsx +12 -3
- package/src/components/src/side-panel/layer-panel/color-palette-preset.tsx +1 -1
- package/src/components/src/side-panel/layer-panel/color-range-selector.tsx +6 -11
- package/src/components/src/side-panel/layer-panel/color-selector.tsx +2 -2
- package/src/components/src/side-panel/layer-panel/custom-palette.tsx +0 -1
- package/src/components/src/side-panel/layer-panel/layer-configurator.tsx +23 -33
- package/src/components/src/side-panel/layer-panel/vector-tile-layer-configurator.tsx +0 -1
- package/src/constants/dist/default-settings.d.ts +14 -1
- package/src/constants/dist/default-settings.js +20 -5
- package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/91/4f/6c65f3a1eba584ffd2d892cabc25ab5804d4a9ef53694c98707372a83e56343a274bec04f15927a6fe7602615f0f23f73ccf599f524ef97ad6c77c8832ea +1 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/a6/b2/5424aa4477192fb44cc90fd80892efdc96731f2ff0f48e8f28abf64243cc +2 -0
- package/src/constants/package.json +2 -2
- package/src/constants/src/default-settings.ts +16 -1
- package/src/constants/umd/keplergl.min.js +2 -2
- package/src/deckgl-arrow-layers/dist/constants.d.ts +0 -12
- package/src/deckgl-arrow-layers/dist/constants.js +4 -15
- package/src/deckgl-arrow-layers/dist/index.d.ts +0 -1
- package/src/deckgl-arrow-layers/dist/index.js +1 -8
- package/src/deckgl-arrow-layers/dist/layers/geo-arrow-scatterplot-layer.js +4 -4
- package/src/deckgl-arrow-layers/dist/layers/geo-arrow-text-layer.js +5 -5
- package/src/deckgl-arrow-layers/dist/utils/utils.d.ts +12 -1
- package/src/deckgl-arrow-layers/dist/utils/utils.js +7 -5
- package/src/deckgl-arrow-layers/package.json +2 -1
- package/src/deckgl-arrow-layers/src/constants.ts +0 -13
- package/src/deckgl-arrow-layers/src/index.ts +0 -2
- package/src/deckgl-arrow-layers/src/layers/geo-arrow-scatterplot-layer.ts +5 -3
- package/src/deckgl-arrow-layers/src/layers/geo-arrow-text-layer.ts +8 -4
- package/src/deckgl-arrow-layers/src/utils/utils.ts +7 -5
- package/src/deckgl-layers/dist/deckgl-extensions/filter-arrow-layer.d.ts +1 -1
- package/src/deckgl-layers/dist/deckgl-extensions/filter-shader-module.d.ts +1 -1
- package/src/deckgl-layers/dist/deckgl-extensions/filter-shader-module.js +3 -3
- package/src/deckgl-layers/package.json +5 -5
- package/src/deckgl-layers/src/deckgl-extensions/filter-shader-module.ts +4 -3
- package/src/duckdb/dist/components/monaco-editor.js +4 -5
- package/src/duckdb/dist/components/preview-data-panel.d.ts +7 -2
- package/src/duckdb/dist/components/preview-data-panel.js +7 -8
- package/src/duckdb/dist/components/schema-panel.d.ts +12 -3
- package/src/duckdb/dist/components/schema-panel.js +41 -24
- package/src/duckdb/dist/components/sql-panel.js +245 -56
- package/src/duckdb/dist/init.js +20 -14
- package/src/duckdb/dist/processors/data-processor.d.ts +1 -0
- package/src/duckdb/dist/processors/data-processor.js +4 -4
- package/src/duckdb/dist/table/duckdb-table-utils.d.ts +106 -0
- package/src/duckdb/dist/table/duckdb-table-utils.js +493 -2
- package/src/duckdb/dist/table/duckdb-table.d.ts +5 -3
- package/src/duckdb/dist/table/duckdb-table.js +153 -261
- package/src/duckdb/package.json +6 -6
- package/src/duckdb/src/components/monaco-editor.tsx +3 -3
- package/src/duckdb/src/components/preview-data-panel.tsx +15 -8
- package/src/duckdb/src/components/schema-panel.tsx +92 -21
- package/src/duckdb/src/components/sql-panel.tsx +160 -22
- package/src/duckdb/src/init.ts +4 -1
- package/src/duckdb/src/processors/data-processor.ts +2 -2
- package/src/duckdb/src/table/duckdb-table-utils.ts +407 -1
- package/src/duckdb/src/table/duckdb-table.ts +61 -92
- package/src/effects/package.json +5 -5
- package/src/layers/dist/arc-layer/arc-layer.d.ts +1 -1
- package/src/layers/dist/arc-layer/arc-layer.js +2 -3
- package/src/layers/dist/base-layer.d.ts +7 -6
- package/src/layers/dist/base-layer.js +36 -19
- package/src/layers/dist/geojson-layer/geojson-layer.js +4 -2
- package/src/layers/dist/geojson-layer/geojson-utils.js +10 -3
- package/src/layers/dist/heatmap-layer/heatmap-layer.d.ts +2 -0
- package/src/layers/dist/heatmap-layer/heatmap-layer.js +16 -9
- package/src/layers/dist/icon-layer/icon-layer.d.ts +6 -3
- package/src/layers/dist/icon-layer/icon-layer.js +19 -11
- package/src/layers/dist/index.d.ts +1 -1
- package/src/layers/dist/index.js +1 -1
- package/src/layers/dist/layer-text-label.d.ts +9 -0
- package/src/layers/dist/layer-text-label.js +51 -6
- package/src/layers/dist/layer-utils.d.ts +39 -30
- package/src/layers/dist/layer-utils.js +69 -9
- package/src/layers/dist/line-layer/line-layer.d.ts +1 -1
- package/src/layers/dist/line-layer/line-layer.js +2 -3
- package/src/layers/dist/point-layer/point-layer.d.ts +10 -7
- package/src/layers/dist/point-layer/point-layer.js +16 -8
- package/src/layers/dist/trip-layer/trip-layer.d.ts +2 -2
- package/src/layers/dist/trip-layer/trip-layer.js +4 -2
- package/src/layers/dist/vector-tile/abstract-tile-layer.d.ts +3 -7
- package/src/layers/dist/vector-tile/abstract-tile-layer.js +7 -6
- package/src/layers/dist/vector-tile/vector-tile-layer.d.ts +5 -7
- package/src/layers/dist/vector-tile/vector-tile-layer.js +23 -2
- package/src/layers/package.json +11 -10
- package/src/layers/src/arc-layer/arc-layer.ts +1 -1
- package/src/layers/src/base-layer.ts +50 -9
- package/src/layers/src/geojson-layer/geojson-layer.ts +3 -1
- package/src/layers/src/geojson-layer/geojson-utils.ts +4 -1
- package/src/layers/src/heatmap-layer/heatmap-layer.ts +17 -12
- package/src/layers/src/icon-layer/icon-layer.ts +7 -3
- package/src/layers/src/index.ts +1 -2
- package/src/layers/src/layer-text-label.ts +53 -4
- package/src/layers/src/layer-utils.ts +88 -9
- package/src/layers/src/line-layer/line-layer.ts +1 -1
- package/src/layers/src/point-layer/point-layer.ts +15 -11
- package/src/layers/src/trip-layer/trip-layer.ts +4 -2
- package/src/layers/src/vector-tile/abstract-tile-layer.ts +11 -5
- package/src/layers/src/vector-tile/vector-tile-layer.ts +33 -4
- package/src/localization/package.json +1 -1
- package/src/processors/dist/data-processor.d.ts +15 -1
- package/src/processors/dist/data-processor.js +104 -11
- package/src/processors/package.json +8 -7
- package/src/processors/src/data-processor.ts +116 -13
- package/src/reducers/dist/export-utils.js +2 -2
- package/src/reducers/dist/layer-utils.js +1 -1
- package/src/reducers/dist/provider-state-updaters.d.ts +1 -0
- package/src/reducers/dist/provider-state-updaters.js +5 -2
- package/src/reducers/dist/vis-state-updaters.d.ts +1 -1
- package/src/reducers/dist/vis-state-updaters.js +23 -12
- package/src/reducers/package.json +16 -16
- package/src/reducers/src/export-utils.ts +1 -1
- package/src/reducers/src/layer-utils.ts +2 -1
- package/src/reducers/src/provider-state-updaters.ts +4 -1
- package/src/reducers/src/vis-state-updaters.ts +45 -10
- package/src/schemas/dist/dataset-schema.js +35 -6
- package/src/schemas/package.json +7 -7
- package/src/schemas/src/dataset-schema.ts +36 -8
- package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/a3/a9/7f26bbc52905b0e21e9366a30ef0ba98f4ccf9aa8dd8326d90ba90191ba2e305323f505bf134c825356156c793bf9386ed2cef2aeb48eb327c26d106f69a +1 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/7e/51/b8756555a0e2e696d944445ac23f7febf769006013fbc8419f39a701649d +2 -0
- package/src/styles/package.json +2 -2
- package/src/styles/umd/keplergl.min.js +2 -2
- package/src/table/dist/dataset-utils.js +23 -14
- package/src/table/dist/src/table/src/dataset-utils.d.ts +1 -1
- package/src/table/dist/src/table/src/tileset/vector-tile-utils.d.ts +17 -1
- package/src/table/dist/tileset/vector-tile-utils.js +122 -2
- package/src/table/package.json +5 -5
- package/src/table/src/dataset-utils.ts +16 -6
- package/src/table/src/tileset/vector-tile-utils.ts +131 -8
- package/src/tasks/package.json +2 -2
- package/src/types/actions.d.ts +1 -0
- package/src/types/layers.d.ts +1 -0
- package/src/types/package.json +1 -1
- package/src/types/types.d.ts +17 -0
- package/src/utils/dist/application-config.d.ts +4 -3
- package/src/utils/dist/application-config.js +3 -2
- package/src/utils/dist/data-scale-utils.js +4 -4
- package/src/utils/dist/data-utils.d.ts +9 -3
- package/src/utils/dist/data-utils.js +40 -7
- package/src/utils/dist/dataset-utils.js +23 -8
- package/src/utils/dist/indexed-data-container.d.ts +2 -2
- package/src/utils/dist/indexed-data-container.js +1 -1
- package/src/utils/dist/map-style-utils/mapbox-utils.d.ts +1 -1
- package/src/utils/dist/map-style-utils/mapbox-utils.js +3 -3
- package/src/utils/dist/plot.d.ts +2 -2
- package/src/utils/dist/plot.js +6 -6
- package/src/utils/map-utils.spec.js +1 -2
- package/src/utils/package.json +5 -4
- package/src/utils/src/application-config.ts +11 -8
- package/src/utils/src/data-scale-utils.ts +3 -3
- package/src/utils/src/data-utils.ts +36 -7
- package/src/utils/src/dataset-utils.ts +41 -9
- package/src/utils/src/indexed-data-container.ts +1 -1
- package/src/utils/src/map-style-utils/mapbox-utils.ts +2 -2
- package/src/utils/src/plot.ts +5 -5
- package/umd/keplergl.min.js +1279 -1295
|
@@ -360,6 +360,8 @@ var TripLayer = exports["default"] = /*#__PURE__*/function (_Layer) {
|
|
|
360
360
|
this.updateLayerConfig(_objectSpread(_objectSpread({}, columnConfig), {}, {
|
|
361
361
|
columnMode: COLUMN_MODE_TABLE
|
|
362
362
|
}));
|
|
363
|
+
} else {
|
|
364
|
+
return this;
|
|
363
365
|
}
|
|
364
366
|
}
|
|
365
367
|
this.updateLayerMeta(dataset);
|
|
@@ -485,7 +487,7 @@ var TripLayer = exports["default"] = /*#__PURE__*/function (_Layer) {
|
|
|
485
487
|
};
|
|
486
488
|
}),
|
|
487
489
|
// if a geojson layer is created from this column, delete it
|
|
488
|
-
foundLayers: foundLayers.filter(function (prop) {
|
|
490
|
+
foundLayers: foundLayers === null || foundLayers === void 0 ? void 0 : foundLayers.filter(function (prop) {
|
|
489
491
|
return prop.type !== 'geojson' || prop.dataId !== id || !tripGeojsonColumns.find(function (c) {
|
|
490
492
|
return prop.columns.geojson.name === c.geojson.name;
|
|
491
493
|
});
|
|
@@ -498,4 +500,4 @@ var TripLayer = exports["default"] = /*#__PURE__*/function (_Layer) {
|
|
|
498
500
|
}
|
|
499
501
|
}]);
|
|
500
502
|
}(_baseLayer["default"]);
|
|
501
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbG9kYXNoMiIsIl9iYXNlTGF5ZXIiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9nZW9MYXllcnMiLCJfY29uc3RhbnRzIiwiX3RyaXBMYXllckljb24iLCJfZ2VvanNvblV0aWxzIiwiX3RyaXBVdGlscyIsIl90cmlwSW5mb01vZGFsIiwiX2QzQXJyYXkiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsIl9zdXBlclByb3BHZXQiLCJwIiwiX2dldDIiLCJ6b29tRmFjdG9yVmFsdWUiLCJkZWZhdWx0VGhpY2tuZXNzIiwiZXhwb3J0cyIsImRlZmF1bHRMaW5lV2lkdGgiLCJ0cmlwVmlzQ29uZmlncyIsIm9wYWNpdHkiLCJ0aGlja25lc3MiLCJ0eXBlIiwiZGVmYXVsdFZhbHVlIiwibGFiZWwiLCJpc1JhbmdlZCIsInJhbmdlIiwic3RlcCIsImdyb3VwIiwicHJvcGVydHkiLCJjb2xvclJhbmdlIiwidHJhaWxMZW5ndGgiLCJmYWRlVHJhaWwiLCJiaWxsYm9hcmQiLCJzaXplUmFuZ2UiLCJmZWF0dXJlQWNjZXNzb3IiLCJfcmVmIiwiZ2VvanNvbiIsImRjIiwiZCIsInZhbHVlQXQiLCJpbmRleCIsImZpZWxkSWR4IiwiZmVhdHVyZVJlc29sdmVyIiwiX3JlZjIiLCJnZXRUYWJsZU1vZGVWYWx1ZUFjY2Vzc29yIiwiZiIsImZpZWxkIiwicHJvcGVydGllcyIsInZhbHVlcyIsIm1hcCIsInYiLCJ2YWx1ZUFjY2Vzc29yIiwiZ2V0VGFibGVNb2RlRmllbGRWYWx1ZSIsImRhdGEiLCJydiIsImRlZmF1bHRHZXRGaWVsZFZhbHVlIiwiQ09MVU1OX01PREVfR0VPSlNPTiIsIkNPTFVNTl9NT0RFX1RBQkxFIiwiU1VQUE9SVEVEX0NPTFVNTl9NT0RFUyIsImtleSIsInJlcXVpcmVkQ29sdW1ucyIsIm9wdGlvbmFsQ29sdW1ucyIsIkRFRkFVTFRfQ09MVU1OX01PREUiLCJUcmlwTGF5ZXIiLCJfTGF5ZXIiLCJwcm9wcyIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsImRhdGFUb0ZlYXR1cmUiLCJkYXRhVG9UaW1lU3RhbXAiLCJkYXRhQ29udGFpbmVyIiwicmVnaXN0ZXJWaXNDb25maWciLCJnZXRGZWF0dXJlIiwibWVtb2l6ZSIsIl9sYXllckluZm9Nb2RhbCIsIlRyaXBJbmZvTW9kYWxGYWN0b3J5IiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJUcmlwTGF5ZXJJY29uIiwiZGVmYXVsdFBvaW50Q29sdW1uUGFpcnMiLCJ2YWx1ZSIsImFjY2Vzc1ZTRmllbGRWYWx1ZSIsImNvbmZpZyIsImNvbHVtbk1vZGUiLCJ2aXN1YWxDaGFubmVscyIsImNvbG9yIiwiYWNjZXNzb3IiLCJudWxsVmFsdWUiLCJnZXRBdHRyaWJ1dGVWYWx1ZSIsImxpbmVDb2xvciIsInNpemUiLCJjb25kaXRpb24iLCJ2aXNDb25maWciLCJzdHJva2VkIiwibGluZVdpZHRoIiwiYW5pbWF0aW9uIiwiZG9tYWluIiwiaWQiLCJ0ZW1wbGF0ZSIsIm1vZGFsUHJvcHMiLCJ0aXRsZSIsImdldFBvc2l0aW9uQWNjZXNzb3IiLCJjb2x1bW5zIiwiZ2V0RGVmYXVsdExheWVyQ29uZmlnIiwiX3Byb3BzJGNvbHVtbk1vZGUiLCJlbmFibGVkIiwiZ2V0SG92ZXJEYXRhIiwib2JqZWN0IiwiZmllbGRzIiwiYW5pbWF0aW9uQ29uZmlnIiwiX3RoaXMkX2ZpbmRDb2x1bW5Nb2RlIiwicm93IiwiX2ZpbmRDb2x1bW5Nb2RlRGF0dW1Gb3JGZWF0dXJlIiwiY3VycmVudFRpbWUiLCJkYXR1bSIsImNhbGN1bGF0ZURhdGFBdHRyaWJ1dGUiLCJkYXRhc2V0IiwiX3RoaXMyIiwiZmlsdGVyZWRJbmRleCIsIl9nZW9tZXRyeSIsImdlb21ldHJ5IiwiYXBwbHlGaWx0ZXJzVG9UYWJsZUNvbHVtbnMiLCJmb3JtYXRMYXllckRhdGEiLCJkYXRhc2V0cyIsIm9sZExheWVyRGF0YSIsIl90aGlzMyIsImRhdGFJZCIsIl9kYXRhc2V0cyR0aGlzJGNvbmZpZyIsImdwdUZpbHRlciIsIl90aGlzJHVwZGF0ZURhdGEiLCJ1cGRhdGVEYXRhIiwiZmllbGRJbmRleCIsImluZGV4QWNjZXNzb3IiLCJkYXRhQWNjZXNzb3IiLCJhY2Nlc3NvcnMiLCJnZXRBdHRyaWJ1dGVBY2Nlc3NvcnMiLCJnZXRGaWx0ZXJWYWx1ZSIsImZpbHRlclZhbHVlQWNjZXNzb3IiLCJnZXRQYXRoIiwiY29vcmRpbmF0ZXMiLCJnZXRUaW1lc3RhbXBzIiwidXBkYXRlQW5pbWF0aW9uRG9tYWluIiwidXBkYXRlTGF5ZXJDb25maWciLCJ1cGRhdGVMYXllck1ldGEiLCJtZXRhIiwiZ2V0R2VvanNvbkRhdGFNYXBzIiwiZ3JvdXBDb2x1bW5zQXNHZW9Kc29uIiwiX3BhcnNlVHJpcEdlb0pzb25UaW1lIiwicGFyc2VUcmlwR2VvSnNvblRpbWVzdGFtcCIsImFuaW1hdGlvbkRvbWFpbiIsImJvdW5kcyIsImdldEdlb2pzb25Cb3VuZHMiLCJmZWF0dXJlVHlwZXMiLCJnZXRHZW9qc29uRmVhdHVyZVR5cGVzIiwidXBkYXRlTWV0YSIsInNldEluaXRpYWxMYXllckNvbmZpZyIsIm51bVJvd3MiLCJjb2x1bW5Db25maWciLCJkZXRlY3RUYWJsZUNvbHVtbnMiLCJyZW5kZXJMYXllciIsIm9wdHMiLCJfYW5pbWF0aW9uQ29uZmlnJGRvbWEiLCJfbWFwU3RhdGUkZ2xvYmUiLCJtYXBTdGF0ZSIsInpvb21GYWN0b3IiLCJnZXRab29tRmFjdG9yIiwiaXNWYWxpZFRpbWUiLCJBcnJheSIsImlzQXJyYXkiLCJldmVyeSIsIk51bWJlciIsImlzRmluaXRlIiwiZG9tYWluMCIsImdwdUZpbHRlclVwZGF0ZVRyaWdnZXJzIiwiZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycyIsInVwZGF0ZVRyaWdnZXJzIiwiZ2V0VmlzdWFsQ2hhbm5lbFVwZGF0ZVRyaWdnZXJzIiwiZGVmYXVsdExheWVyUHJvcHMiLCJnZXREZWZhdWx0RGVja0xheWVyUHJvcHMiLCJiaWxsYm9hcmRXaWR0aEZhY3RvciIsIlBST0pFQ1RFRF9QSVhFTF9TSVpFX01VTFRJUExJRVIiLCJsYXllclByb3BzIiwidHMiLCJ3aWR0aFNjYWxlIiwiY2FwUm91bmRlZCIsImpvaW50Um91bmRlZCIsIndyYXBMb25naXR1ZGUiLCJwYXJhbWV0ZXJzIiwiZGVwdGhUZXN0IiwiZHJhZ1JvdGF0ZSIsImRlcHRoTWFzayIsImNvbmNhdCIsImdsb2JlIiwiRGVja0dMVHJpcHNMYXllciIsImZlYXR1cmVJbmRleCIsInRpbWUiLCJpZHgiLCJiaXNlY3RSaWdodCIsIl9yZWY0IiwiY29vcmRzIiwiZmluZERlZmF1bHRMYXllclByb3BzIiwiX3JlZjUiLCJmb3VuZExheWVycyIsIl90aGlzNCIsIl9yZWY1JGZpZWxkcyIsImdlb2pzb25Db2x1bW5zIiwibmFtZSIsImRlZmF1bHRDb2x1bW5zIiwidW5pcSIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJHRU9KU09OX0ZJRUxEUyIsImdlb0pzb25Db2x1bW5zIiwiZmluZERlZmF1bHRDb2x1bW5GaWVsZCIsInRyaXBHZW9qc29uQ29sdW1ucyIsImNvbCIsImlzVHJpcEdlb0pzb25GaWVsZCIsInJlcGxhY2UiLCJpc1Zpc2libGUiLCJwcm9wIiwiZmluZCIsImMiLCJMYXllciJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmlwLWxheWVyL3RyaXAtbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IG1lbW9pemUgZnJvbSAnbG9kYXNoLm1lbW9pemUnO1xuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoLnVuaXEnO1xuaW1wb3J0IExheWVyLCB7TGF5ZXJCYXNlQ29uZmlnLCBkZWZhdWx0R2V0RmllbGRWYWx1ZX0gZnJvbSAnLi4vYmFzZS1sYXllcic7XG5pbXBvcnQge1RyaXBzTGF5ZXIgYXMgRGVja0dMVHJpcHNMYXllcn0gZnJvbSAnQGRlY2suZ2wvZ2VvLWxheWVycyc7XG5cbmltcG9ydCB7R0VPSlNPTl9GSUVMRFMsIFBST0pFQ1RFRF9QSVhFTF9TSVpFX01VTFRJUExJRVJ9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCBUcmlwTGF5ZXJJY29uIGZyb20gJy4vdHJpcC1sYXllci1pY29uJztcblxuaW1wb3J0IHtcbiAgZ2V0R2VvanNvbkRhdGFNYXBzLFxuICBnZXRHZW9qc29uQm91bmRzLFxuICBnZXRHZW9qc29uRmVhdHVyZVR5cGVzLFxuICBHZW9qc29uRGF0YU1hcHMsXG4gIGRldGVjdFRhYmxlQ29sdW1ucyxcbiAgZ3JvdXBDb2x1bW5zQXNHZW9Kc29uLFxuICBhcHBseUZpbHRlcnNUb1RhYmxlQ29sdW1uc1xufSBmcm9tICcuLi9nZW9qc29uLWxheWVyL2dlb2pzb24tdXRpbHMnO1xuXG5pbXBvcnQge2lzVHJpcEdlb0pzb25GaWVsZCwgcGFyc2VUcmlwR2VvSnNvblRpbWVzdGFtcH0gZnJvbSAnLi90cmlwLXV0aWxzJztcbmltcG9ydCBUcmlwSW5mb01vZGFsRmFjdG9yeSBmcm9tICcuL3RyaXAtaW5mby1tb2RhbCc7XG5pbXBvcnQge2Jpc2VjdFJpZ2h0fSBmcm9tICdkMy1hcnJheSc7XG5pbXBvcnQge1xuICBDb2xvclJhbmdlLFxuICBNZXJnZSxcbiAgVmlzQ29uZmlnQ29sb3JSYW5nZSxcbiAgVmlzQ29uZmlnTnVtYmVyLFxuICBWaXNDb25maWdSYW5nZSxcbiAgTGF5ZXJDb2x1bW5cbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge2RlZmF1bHQgYXMgS2VwbGVyVGFibGUsIERhdGFzZXRzfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB7RGF0YUNvbnRhaW5lckludGVyZmFjZX0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmV4cG9ydCB0eXBlIFRyaXBMYXllclZpc0NvbmZpZ1NldHRpbmdzID0ge1xuICBvcGFjaXR5OiBWaXNDb25maWdOdW1iZXI7XG4gIHRoaWNrbmVzczogVmlzQ29uZmlnTnVtYmVyO1xuICBjb2xvclJhbmdlOiBWaXNDb25maWdDb2xvclJhbmdlO1xuICB0cmFpbExlbmd0aDogVmlzQ29uZmlnTnVtYmVyO1xuICBzaXplUmFuZ2U6IFZpc0NvbmZpZ1JhbmdlO1xufTtcblxuZXhwb3J0IHR5cGUgVHJpcExheWVyQ29sdW1uc0NvbmZpZyA9IHtcbiAgZ2VvanNvbjogTGF5ZXJDb2x1bW47XG59O1xuXG5leHBvcnQgdHlwZSBUcmlwTGF5ZXJWaXNDb25maWcgPSB7XG4gIG9wYWNpdHk6IG51bWJlcjtcbiAgdGhpY2tuZXNzOiBudW1iZXI7XG4gIGNvbG9yUmFuZ2U6IENvbG9yUmFuZ2U7XG4gIHRyYWlsTGVuZ3RoOiBudW1iZXI7XG4gIHNpemVSYW5nZTogW251bWJlciwgbnVtYmVyXTtcbiAgYmlsbGJvYXJkOiBib29sZWFuO1xuICBmYWRlVHJhaWw6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBUcmlwTGF5ZXJDb25maWcgPSBNZXJnZTxcbiAgTGF5ZXJCYXNlQ29uZmlnLFxuICB7Y29sdW1uczogVHJpcExheWVyQ29sdW1uc0NvbmZpZzsgdmlzQ29uZmlnOiBUcmlwTGF5ZXJWaXNDb25maWd9XG4+O1xuXG5leHBvcnQgdHlwZSBUcmlwTGF5ZXJNZXRhID0ge1xuICBnZXRGZWF0dXJlOiBhbnk7XG59O1xuXG5jb25zdCB6b29tRmFjdG9yVmFsdWUgPSA4O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdFRoaWNrbmVzcyA9IDAuNTtcbmV4cG9ydCBjb25zdCBkZWZhdWx0TGluZVdpZHRoID0gMTtcblxuZXhwb3J0IGNvbnN0IHRyaXBWaXNDb25maWdzOiB7XG4gIG9wYWNpdHk6ICdvcGFjaXR5JztcbiAgdGhpY2tuZXNzOiBWaXNDb25maWdOdW1iZXI7XG4gIGNvbG9yUmFuZ2U6ICdjb2xvclJhbmdlJztcbiAgdHJhaWxMZW5ndGg6ICd0cmFpbExlbmd0aCc7XG4gIGZhZGVUcmFpbDogJ2ZhZGVUcmFpbCc7XG4gIGJpbGxib2FyZDogJ2JpbGxib2FyZCc7XG4gIHNpemVSYW5nZTogJ3N0cm9rZVdpZHRoUmFuZ2UnO1xufSA9IHtcbiAgb3BhY2l0eTogJ29wYWNpdHknLFxuICB0aGlja25lc3M6IHtcbiAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICBkZWZhdWx0VmFsdWU6IGRlZmF1bHRUaGlja25lc3MsXG4gICAgbGFiZWw6ICdTdHJva2UgV2lkdGgnLFxuICAgIGlzUmFuZ2VkOiBmYWxzZSxcbiAgICByYW5nZTogWzAsIDEwMF0sXG4gICAgc3RlcDogMC4xLFxuICAgIGdyb3VwOiAnc3Ryb2tlJyxcbiAgICBwcm9wZXJ0eTogJ3RoaWNrbmVzcydcbiAgfSxcbiAgY29sb3JSYW5nZTogJ2NvbG9yUmFuZ2UnLFxuICB0cmFpbExlbmd0aDogJ3RyYWlsTGVuZ3RoJyxcbiAgZmFkZVRyYWlsOiAnZmFkZVRyYWlsJyxcbiAgYmlsbGJvYXJkOiAnYmlsbGJvYXJkJyxcbiAgc2l6ZVJhbmdlOiAnc3Ryb2tlV2lkdGhSYW5nZSdcbn07XG5cbmV4cG9ydCBjb25zdCBmZWF0dXJlQWNjZXNzb3IgPVxuICAoe2dlb2pzb259OiBUcmlwTGF5ZXJDb2x1bW5zQ29uZmlnKSA9PlxuICAoZGM6IERhdGFDb250YWluZXJJbnRlcmZhY2UpID0+XG4gIGQgPT5cbiAgICBkYy52YWx1ZUF0KGQuaW5kZXgsIGdlb2pzb24uZmllbGRJZHgpO1xuZXhwb3J0IGNvbnN0IGZlYXR1cmVSZXNvbHZlciA9ICh7Z2VvanNvbn06IFRyaXBMYXllckNvbHVtbnNDb25maWcpID0+IGdlb2pzb24uZmllbGRJZHg7XG5jb25zdCBnZXRUYWJsZU1vZGVWYWx1ZUFjY2Vzc29yID0gZiA9PiB7XG4gIC8vIENhbGxlZCBmcm9tIGdwdS1maWx0ZXItdXRpbHMuZ2V0RmlsdGVyVmFsdWVBY2Nlc3NvcigpXG4gIHJldHVybiBmaWVsZCA9PiBmLnByb3BlcnRpZXMudmFsdWVzLm1hcCh2ID0+IGZpZWxkLnZhbHVlQWNjZXNzb3IodikpO1xufTtcbmNvbnN0IGdldFRhYmxlTW9kZUZpZWxkVmFsdWUgPSAoZmllbGQsIGRhdGEpID0+IHtcbiAgbGV0IHJ2O1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICBydiA9IGRhdGEoZmllbGQpO1xuICB9IGVsc2Uge1xuICAgIHJ2ID0gZGVmYXVsdEdldEZpZWxkVmFsdWUoZmllbGQsIGRhdGEpO1xuICB9XG4gIHJldHVybiBydjtcbn07XG5cbmV4cG9ydCBjb25zdCBDT0xVTU5fTU9ERV9HRU9KU09OID0gJ2dlb2pzb24nO1xuZXhwb3J0IGNvbnN0IENPTFVNTl9NT0RFX1RBQkxFID0gJ3RhYmxlJztcbmNvbnN0IFNVUFBPUlRFRF9DT0xVTU5fTU9ERVMgPSBbXG4gIHtcbiAgICBrZXk6IENPTFVNTl9NT0RFX0dFT0pTT04sXG4gICAgbGFiZWw6ICdHZW9KU09OJyxcbiAgICByZXF1aXJlZENvbHVtbnM6IFsnZ2VvanNvbiddXG4gIH0sXG4gIHtcbiAgICBrZXk6IENPTFVNTl9NT0RFX1RBQkxFLFxuICAgIGxhYmVsOiAnVGFibGUgY29sdW1ucycsXG4gICAgcmVxdWlyZWRDb2x1bW5zOiBbJ2lkJywgJ2xhdCcsICdsbmcnLCAndGltZXN0YW1wJ10sXG4gICAgb3B0aW9uYWxDb2x1bW5zOiBbJ2FsdGl0dWRlJ11cbiAgfVxuXTtcbmNvbnN0IERFRkFVTFRfQ09MVU1OX01PREUgPSBDT0xVTU5fTU9ERV9HRU9KU09OO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUcmlwTGF5ZXIgZXh0ZW5kcyBMYXllciB7XG4gIGRlY2xhcmUgdmlzQ29uZmlnU2V0dGluZ3M6IFRyaXBMYXllclZpc0NvbmZpZ1NldHRpbmdzO1xuICBkZWNsYXJlIGNvbmZpZzogVHJpcExheWVyQ29uZmlnO1xuICBkZWNsYXJlIG1ldGE6IFRyaXBMYXllck1ldGE7XG4gIGRlY2xhcmUgZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSB8IG51bGw7XG5cbiAgZGF0YVRvRmVhdHVyZTogR2VvanNvbkRhdGFNYXBzO1xuICBkYXRhVG9UaW1lU3RhbXA6IGFueVtdO1xuICBnZXRGZWF0dXJlOiAoY29sdW1uczogVHJpcExheWVyQ29sdW1uc0NvbmZpZykgPT4gKGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UpID0+IGFueTtcbiAgX2xheWVySW5mb01vZGFsOiBSZWNvcmQ8c3RyaW5nLCAoKSA9PiBKU1guRWxlbWVudD47XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLmRhdGFUb0ZlYXR1cmUgPSBbXTtcbiAgICB0aGlzLmRhdGFUb1RpbWVTdGFtcCA9IFtdO1xuICAgIHRoaXMuZGF0YUNvbnRhaW5lciA9IG51bGw7XG4gICAgdGhpcy5yZWdpc3RlclZpc0NvbmZpZyh0cmlwVmlzQ29uZmlncyk7XG4gICAgdGhpcy5nZXRGZWF0dXJlID0gbWVtb2l6ZShmZWF0dXJlQWNjZXNzb3IsIGZlYXR1cmVSZXNvbHZlcik7XG4gICAgdGhpcy5fbGF5ZXJJbmZvTW9kYWwgPSB7XG4gICAgICBbQ09MVU1OX01PREVfVEFCTEVdOiBUcmlwSW5mb01vZGFsRmFjdG9yeShDT0xVTU5fTU9ERV9UQUJMRSksXG4gICAgICBbQ09MVU1OX01PREVfR0VPSlNPTl06IFRyaXBJbmZvTW9kYWxGYWN0b3J5KENPTFVNTl9NT0RFX0dFT0pTT04pXG4gICAgfTtcbiAgfVxuXG4gIGdldCBzdXBwb3J0ZWRDb2x1bW5Nb2RlcygpIHtcbiAgICByZXR1cm4gU1VQUE9SVEVEX0NPTFVNTl9NT0RFUztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdHlwZSgpOiAndHJpcCcge1xuICAgIHJldHVybiAndHJpcCc7XG4gIH1cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIFRyaXBMYXllci50eXBlO1xuICB9XG5cbiAgZ2V0IG5hbWUoKTogJ1RyaXAnIHtcbiAgICByZXR1cm4gJ1RyaXAnO1xuICB9XG5cbiAgZ2V0IGxheWVySWNvbigpIHtcbiAgICByZXR1cm4gVHJpcExheWVySWNvbjtcbiAgfVxuXG4gIGdldCBjb2x1bW5QYWlycygpIHtcbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9pbnRDb2x1bW5QYWlycztcbiAgfVxuXG4gIGFjY2Vzc1ZTRmllbGRWYWx1ZSgpIHtcbiAgICBpZiAodGhpcy5jb25maWcuY29sdW1uTW9kZSA9PT0gQ09MVU1OX01PREVfR0VPSlNPTikge1xuICAgICAgcmV0dXJuIGRlZmF1bHRHZXRGaWVsZFZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0VGFibGVNb2RlRmllbGRWYWx1ZTtcbiAgfVxuXG4gIGdldCB2aXN1YWxDaGFubmVscygpIHtcbiAgICBjb25zdCB2aXN1YWxDaGFubmVscyA9IHN1cGVyLnZpc3VhbENoYW5uZWxzO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnZpc3VhbENoYW5uZWxzLFxuICAgICAgY29sb3I6IHtcbiAgICAgICAgLi4udmlzdWFsQ2hhbm5lbHMuY29sb3IsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0Q29sb3InLFxuICAgICAgICBudWxsVmFsdWU6IHZpc3VhbENoYW5uZWxzLmNvbG9yLm51bGxWYWx1ZSxcbiAgICAgICAgZ2V0QXR0cmlidXRlVmFsdWU6IGNvbmZpZyA9PiBkID0+IGQucHJvcGVydGllcy5saW5lQ29sb3IgfHwgY29uZmlnLmNvbG9yLFxuICAgICAgICAvLyB1c2VkIHRoaXMgdG8gZ2V0IHVwZGF0ZVRyaWdnZXJzXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogY29uZmlnID0+IGNvbmZpZy5jb2xvclxuICAgICAgfSxcbiAgICAgIHNpemU6IHtcbiAgICAgICAgLi4udmlzdWFsQ2hhbm5lbHMuc2l6ZSxcbiAgICAgICAgcHJvcGVydHk6ICdzdHJva2UnLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldFdpZHRoJyxcbiAgICAgICAgY29uZGl0aW9uOiBjb25maWcgPT4gY29uZmlnLnZpc0NvbmZpZy5zdHJva2VkLFxuICAgICAgICBudWxsVmFsdWU6IDAsXG4gICAgICAgIGdldEF0dHJpYnV0ZVZhbHVlOiAoKSA9PiBkID0+IGQucHJvcGVydGllcy5saW5lV2lkdGggfHwgZGVmYXVsdExpbmVXaWR0aFxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBnZXQgYW5pbWF0aW9uRG9tYWluKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5hbmltYXRpb24uZG9tYWluO1xuICB9XG5cbiAgZ2V0IGxheWVySW5mb01vZGFsKCkge1xuICAgIHJldHVybiB7XG4gICAgICBbQ09MVU1OX01PREVfR0VPSlNPTl06IHtcbiAgICAgICAgaWQ6ICdpY29uSW5mbycsXG4gICAgICAgIHRlbXBsYXRlOiB0aGlzLl9sYXllckluZm9Nb2RhbFtDT0xVTU5fTU9ERV9HRU9KU09OXSxcbiAgICAgICAgbW9kYWxQcm9wczoge1xuICAgICAgICAgIHRpdGxlOiAnbW9kYWwudHJpcEluZm8udGl0bGUnXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbQ09MVU1OX01PREVfVEFCTEVdOiB7XG4gICAgICAgIGlkOiAnaWNvbkluZm8nLFxuICAgICAgICB0ZW1wbGF0ZTogdGhpcy5fbGF5ZXJJbmZvTW9kYWxbQ09MVU1OX01PREVfVEFCTEVdLFxuICAgICAgICBtb2RhbFByb3BzOiB7XG4gICAgICAgICAgdGl0bGU6ICdtb2RhbC50cmlwSW5mby50aXRsZVRhYmxlJ1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGdldFBvc2l0aW9uQWNjZXNzb3IoZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5jb2x1bW5Nb2RlID09PSBDT0xVTU5fTU9ERV9HRU9KU09OKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRGZWF0dXJlKHRoaXMuY29uZmlnLmNvbHVtbnMpKGRhdGFDb250YWluZXIpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBmaW5kRGVmYXVsdExheWVyUHJvcHMoXG4gICAge2xhYmVsLCBmaWVsZHMgPSBbXSwgZGF0YUNvbnRhaW5lciwgaWR9OiBLZXBsZXJUYWJsZSxcbiAgICBmb3VuZExheWVyczogYW55W11cbiAgKSB7XG4gICAgY29uc3QgZ2VvanNvbkNvbHVtbnMgPSBmaWVsZHMuZmlsdGVyKGYgPT4gZi50eXBlID09PSAnZ2VvanNvbicpLm1hcChmID0+IGYubmFtZSk7XG5cbiAgICBjb25zdCBkZWZhdWx0Q29sdW1ucyA9IHtcbiAgICAgIGdlb2pzb246IHVuaXEoWy4uLkdFT0pTT05fRklFTERTLmdlb2pzb24sIC4uLmdlb2pzb25Db2x1bW5zXSlcbiAgICB9O1xuXG4gICAgY29uc3QgZ2VvSnNvbkNvbHVtbnMgPSB0aGlzLmZpbmREZWZhdWx0Q29sdW1uRmllbGQoZGVmYXVsdENvbHVtbnMsIGZpZWxkcyk7XG5cbiAgICBjb25zdCB0cmlwR2VvanNvbkNvbHVtbnMgPSAoZ2VvSnNvbkNvbHVtbnMgfHwgW10pLmZpbHRlcihjb2wgPT5cbiAgICAgIGlzVHJpcEdlb0pzb25GaWVsZChkYXRhQ29udGFpbmVyLCBmaWVsZHNbY29sLmdlb2pzb24uZmllbGRJZHhdKVxuICAgICk7XG5cbiAgICBpZiAodHJpcEdlb2pzb25Db2x1bW5zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcHJvcHM6IHRyaXBHZW9qc29uQ29sdW1ucy5tYXAoY29sdW1ucyA9PiAoe1xuICAgICAgICAgIGxhYmVsOiAodHlwZW9mIGxhYmVsID09PSAnc3RyaW5nJyAmJiBsYWJlbC5yZXBsYWNlKC9cXC5bXi8uXSskLywgJycpKSB8fCB0aGlzLnR5cGUsXG4gICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICAgICAgY29sdW1uTW9kZTogQ09MVU1OX01PREVfR0VPSlNPTlxuICAgICAgICB9KSksXG5cbiAgICAgICAgLy8gaWYgYSBnZW9qc29uIGxheWVyIGlzIGNyZWF0ZWQgZnJvbSB0aGlzIGNvbHVtbiwgZGVsZXRlIGl0XG4gICAgICAgIGZvdW5kTGF5ZXJzOiBmb3VuZExheWVycy5maWx0ZXIoXG4gICAgICAgICAgcHJvcCA9PlxuICAgICAgICAgICAgcHJvcC50eXBlICE9PSAnZ2VvanNvbicgfHxcbiAgICAgICAgICAgIHByb3AuZGF0YUlkICE9PSBpZCB8fFxuICAgICAgICAgICAgIXRyaXBHZW9qc29uQ29sdW1ucy5maW5kKGMgPT4gcHJvcC5jb2x1bW5zLmdlb2pzb24ubmFtZSA9PT0gYy5nZW9qc29uLm5hbWUpXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtwcm9wczogW119O1xuICB9XG5cbiAgZ2V0RGVmYXVsdExheWVyQ29uZmlnKHByb3BzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLmdldERlZmF1bHRMYXllckNvbmZpZyhwcm9wcyksXG4gICAgICBjb2x1bW5Nb2RlOiBwcm9wcz8uY29sdW1uTW9kZSA/PyBERUZBVUxUX0NPTFVNTl9NT0RFLFxuICAgICAgYW5pbWF0aW9uOiB7XG4gICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgIGRvbWFpbjogbnVsbFxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBnZXRIb3ZlckRhdGEob2JqZWN0LCBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLCBmaWVsZHMsIGFuaW1hdGlvbkNvbmZpZykge1xuICAgIGlmICh0aGlzLmNvbmZpZy5jb2x1bW5Nb2RlID09PSBDT0xVTU5fTU9ERV9HRU9KU09OKSB7XG4gICAgICAvLyBpbmRleCBmb3IgZGF0YUNvbnRhaW5lciBpcyBzYXZlZCB0byBmZWF0dXJlLnByb3BlcnRpZXNcbiAgICAgIHJldHVybiBkYXRhQ29udGFpbmVyLnJvdyhvYmplY3QucHJvcGVydGllcy5pbmRleCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9maW5kQ29sdW1uTW9kZURhdHVtRm9yRmVhdHVyZShvYmplY3QucHJvcGVydGllcy5pbmRleCwgYW5pbWF0aW9uQ29uZmlnLmN1cnJlbnRUaW1lKVxuICAgICAgPy5kYXR1bTtcbiAgfVxuXG4gIGNhbGN1bGF0ZURhdGFBdHRyaWJ1dGUoZGF0YXNldDogS2VwbGVyVGFibGUpIHtcbiAgICBzd2l0Y2ggKHRoaXMuY29uZmlnLmNvbHVtbk1vZGUpIHtcbiAgICAgIGNhc2UgQ09MVU1OX01PREVfR0VPSlNPTjoge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGRhdGFzZXQuZmlsdGVyZWRJbmRleFxuICAgICAgICAgICAgLm1hcChpID0+IHRoaXMuZGF0YVRvRmVhdHVyZVtpXSlcbiAgICAgICAgICAgIC8vIFRPRE8gZCBjYW4gYmUgQmluYXJ5RmVhdHVyZUNvbGxlY3Rpb24sIGZpeCBsb2dpY1xuICAgICAgICAgICAgLmZpbHRlcihkID0+IGQgJiYgKGQgYXMgYW55KS5nZW9tZXRyeT8udHlwZSA9PT0gJ0xpbmVTdHJpbmcnKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjYXNlIENPTFVNTl9NT0RFX1RBQkxFOlxuICAgICAgICByZXR1cm4gYXBwbHlGaWx0ZXJzVG9UYWJsZUNvbHVtbnMoZGF0YXNldCwgdGhpcy5kYXRhVG9GZWF0dXJlKTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxuXG4gIGZvcm1hdExheWVyRGF0YShkYXRhc2V0czogRGF0YXNldHMsIG9sZExheWVyRGF0YSkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5kYXRhSWQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgLy8gdG8tZG86IHBhcnNlIHNlZ21lbnQgZnJvbSBkYXRhQ29udGFpbmVyXG5cbiAgICBjb25zdCB7ZGF0YUNvbnRhaW5lciwgZ3B1RmlsdGVyfSA9IGRhdGFzZXRzW3RoaXMuY29uZmlnLmRhdGFJZF07XG4gICAgY29uc3Qge2RhdGF9ID0gdGhpcy51cGRhdGVEYXRhKGRhdGFzZXRzLCBvbGRMYXllckRhdGEpO1xuXG4gICAgbGV0IHZhbHVlQWNjZXNzb3I7XG4gICAgaWYgKHRoaXMuY29uZmlnLmNvbHVtbk1vZGUgPT09IENPTFVNTl9NT0RFX0dFT0pTT04pIHtcbiAgICAgIHZhbHVlQWNjZXNzb3IgPSAoZGM6IERhdGFDb250YWluZXJJbnRlcmZhY2UsIGYsIGZpZWxkSW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICByZXR1cm4gZGMudmFsdWVBdChmLnByb3BlcnRpZXMuaW5kZXgsIGZpZWxkSW5kZXgpO1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWVBY2Nlc3NvciA9IGdldFRhYmxlTW9kZVZhbHVlQWNjZXNzb3I7XG4gICAgfVxuICAgIGNvbnN0IGluZGV4QWNjZXNzb3IgPSBmID0+IGYucHJvcGVydGllcy5pbmRleDtcbiAgICBjb25zdCBkYXRhQWNjZXNzb3IgPSAoKSA9PiBkID0+ICh7aW5kZXg6IGQucHJvcGVydGllcy5pbmRleH0pO1xuICAgIGNvbnN0IGFjY2Vzc29ycyA9IHRoaXMuZ2V0QXR0cmlidXRlQWNjZXNzb3JzKHtkYXRhQWNjZXNzb3IsIGRhdGFDb250YWluZXJ9KTtcbiAgICBjb25zdCBnZXRGaWx0ZXJWYWx1ZSA9IGdwdUZpbHRlci5maWx0ZXJWYWx1ZUFjY2Vzc29yKGRhdGFDb250YWluZXIpKFxuICAgICAgaW5kZXhBY2Nlc3NvcixcbiAgICAgIHZhbHVlQWNjZXNzb3JcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGEsXG4gICAgICBnZXRGaWx0ZXJWYWx1ZSxcbiAgICAgIGdldFBhdGg6IGQgPT4gZC5nZW9tZXRyeS5jb29yZGluYXRlcyxcbiAgICAgIGdldFRpbWVzdGFtcHM6IGQgPT4gdGhpcy5kYXRhVG9UaW1lU3RhbXBbZC5wcm9wZXJ0aWVzLmluZGV4XSxcbiAgICAgIC4uLmFjY2Vzc29yc1xuICAgIH07XG4gIH1cblxuICB1cGRhdGVBbmltYXRpb25Eb21haW4oZG9tYWluKSB7XG4gICAgdGhpcy51cGRhdGVMYXllckNvbmZpZyh7XG4gICAgICBhbmltYXRpb246IHtcbiAgICAgICAgLi4udGhpcy5jb25maWcuYW5pbWF0aW9uLFxuICAgICAgICBkb21haW5cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZUxheWVyTWV0YShkYXRhc2V0OiBLZXBsZXJUYWJsZSkge1xuICAgIGNvbnN0IHtkYXRhQ29udGFpbmVyfSA9IGRhdGFzZXQ7XG4gICAgbGV0IGdldEZlYXR1cmU7XG4gICAgaWYgKHRoaXMuY29uZmlnLmNvbHVtbk1vZGUgPT09IENPTFVNTl9NT0RFX0dFT0pTT04pIHtcbiAgICAgIGdldEZlYXR1cmUgPSB0aGlzLmdldFBvc2l0aW9uQWNjZXNzb3IoZGF0YUNvbnRhaW5lcik7XG4gICAgICBpZiAoZ2V0RmVhdHVyZSA9PT0gdGhpcy5tZXRhLmdldEZlYXR1cmUpIHtcbiAgICAgICAgLy8gVE9ETzogcmV2aXNpdCB0aGlzIGFmdGVyIGdwdSBmaWx0ZXJpbmdcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5kYXRhVG9GZWF0dXJlID0gZ2V0R2VvanNvbkRhdGFNYXBzKGRhdGFDb250YWluZXIsIGdldEZlYXR1cmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGFDb250YWluZXIgPSBkYXRhQ29udGFpbmVyO1xuICAgICAgdGhpcy5kYXRhVG9GZWF0dXJlID0gZ3JvdXBDb2x1bW5zQXNHZW9Kc29uKGRhdGFDb250YWluZXIsIHRoaXMuY29uZmlnLmNvbHVtbnMsICd0aW1lc3RhbXAnKTtcbiAgICB9XG5cbiAgICBjb25zdCB7ZGF0YVRvVGltZVN0YW1wLCBhbmltYXRpb25Eb21haW59ID0gcGFyc2VUcmlwR2VvSnNvblRpbWVzdGFtcCh0aGlzLmRhdGFUb0ZlYXR1cmUpO1xuXG4gICAgdGhpcy5kYXRhVG9UaW1lU3RhbXAgPSBkYXRhVG9UaW1lU3RhbXA7XG4gICAgdGhpcy51cGRhdGVBbmltYXRpb25Eb21haW4oYW5pbWF0aW9uRG9tYWluKTtcblxuICAgIC8vIGdldCBib3VuZHMgZnJvbSBmZWF0dXJlc1xuICAgIGNvbnN0IGJvdW5kcyA9IGdldEdlb2pzb25Cb3VuZHModGhpcy5kYXRhVG9GZWF0dXJlKTtcblxuICAgIC8vIGtlZXAgYSByZWNvcmQgb2Ygd2hhdCB0eXBlIG9mIGdlb21ldHJ5IHRoZSBjb2xsZWN0aW9uIGhhc1xuICAgIGNvbnN0IGZlYXR1cmVUeXBlcyA9IGdldEdlb2pzb25GZWF0dXJlVHlwZXModGhpcy5kYXRhVG9GZWF0dXJlKTtcblxuICAgIHRoaXMudXBkYXRlTWV0YSh7Ym91bmRzLCBmZWF0dXJlVHlwZXMsIGdldEZlYXR1cmV9KTtcbiAgfVxuXG4gIHNldEluaXRpYWxMYXllckNvbmZpZyhkYXRhc2V0KSB7XG4gICAgY29uc3Qge2RhdGFDb250YWluZXJ9ID0gZGF0YXNldDtcbiAgICBpZiAoIWRhdGFDb250YWluZXIubnVtUm93cygpKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBkZWZlZmF1bHRMYXllclByb3BzIHdpbGwgYXV0b21hdGljYWxseSBmaW5kIGdlb2pzb24gY29sdW1uXG4gICAgLy8gaWYgbm90IGZvdW5kLCB3ZSB0cnkgdG8gc2V0IGl0IHRvIGlkIC8gbGF0IC9sbmcgL3RzXG4gICAgaWYgKCF0aGlzLmNvbmZpZy5jb2x1bW5zLmdlb2pzb24udmFsdWUpIHtcbiAgICAgIC8vIGZpbmQgY29sdW1ucyBmcm9tIGxhdCwgbG5nLCBpZCwgYW5kIHRzXG4gICAgICBjb25zdCBjb2x1bW5Db25maWcgPSBkZXRlY3RUYWJsZUNvbHVtbnMoZGF0YXNldCwgdGhpcy5jb25maWcuY29sdW1ucyk7XG4gICAgICBpZiAoY29sdW1uQ29uZmlnKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTGF5ZXJDb25maWcoe1xuICAgICAgICAgIC4uLmNvbHVtbkNvbmZpZyxcbiAgICAgICAgICBjb2x1bW5Nb2RlOiBDT0xVTU5fTU9ERV9UQUJMRVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZUxheWVyTWV0YShkYXRhc2V0KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHJlbmRlckxheWVyKG9wdHMpIHtcbiAgICBjb25zdCB7ZGF0YSwgZ3B1RmlsdGVyLCBtYXBTdGF0ZSwgYW5pbWF0aW9uQ29uZmlnfSA9IG9wdHM7XG4gICAgY29uc3Qge3Zpc0NvbmZpZ30gPSB0aGlzLmNvbmZpZztcbiAgICBjb25zdCB6b29tRmFjdG9yID0gdGhpcy5nZXRab29tRmFjdG9yKG1hcFN0YXRlKTtcbiAgICBjb25zdCBpc1ZhbGlkVGltZSA9XG4gICAgICBhbmltYXRpb25Db25maWcgJiZcbiAgICAgIEFycmF5LmlzQXJyYXkoYW5pbWF0aW9uQ29uZmlnLmRvbWFpbikgJiZcbiAgICAgIGFuaW1hdGlvbkNvbmZpZy5kb21haW4uZXZlcnkoTnVtYmVyLmlzRmluaXRlKSAmJlxuICAgICAgTnVtYmVyLmlzRmluaXRlKGFuaW1hdGlvbkNvbmZpZy5jdXJyZW50VGltZSk7XG5cbiAgICBpZiAoIWlzVmFsaWRUaW1lKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgZG9tYWluMCA9IGFuaW1hdGlvbkNvbmZpZy5kb21haW4/LlswXTtcblxuICAgIGNvbnN0IGdwdUZpbHRlclVwZGF0ZVRyaWdnZXJzID0ge2dldEZpbHRlclZhbHVlOiBncHVGaWx0ZXIuZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2Vyc307XG4gICAgY29uc3QgdXBkYXRlVHJpZ2dlcnMgPSB7XG4gICAgICAuLi50aGlzLmdldFZpc3VhbENoYW5uZWxVcGRhdGVUcmlnZ2VycygpLFxuICAgICAgZ2V0VGltZXN0YW1wczoge1xuICAgICAgICBjb2x1bW5zOiB0aGlzLmNvbmZpZy5jb2x1bW5zLFxuICAgICAgICBkb21haW4wXG4gICAgICB9LFxuICAgICAgLi4uZ3B1RmlsdGVyVXBkYXRlVHJpZ2dlcnNcbiAgICB9O1xuICAgIGNvbnN0IGRlZmF1bHRMYXllclByb3BzID0gdGhpcy5nZXREZWZhdWx0RGVja0xheWVyUHJvcHMob3B0cyk7XG5cbiAgICBjb25zdCBiaWxsYm9hcmRXaWR0aEZhY3RvciA9IHZpc0NvbmZpZy5iaWxsYm9hcmQgPyBQUk9KRUNURURfUElYRUxfU0laRV9NVUxUSVBMSUVSIDogMTtcblxuICAgIGNvbnN0IGxheWVyUHJvcHMgPSB7XG4gICAgICAuLi5kZWZhdWx0TGF5ZXJQcm9wcyxcbiAgICAgIC4uLmRhdGEsXG4gICAgICBnZXRUaW1lc3RhbXBzOiBkID0+IChkYXRhLmdldFRpbWVzdGFtcHMoZCkgfHwgW10pLm1hcCh0cyA9PiB0cyAtIGRvbWFpbjApLFxuICAgICAgd2lkdGhTY2FsZTogdmlzQ29uZmlnLnRoaWNrbmVzcyAqIHpvb21GYWN0b3IgKiB6b29tRmFjdG9yVmFsdWUgKiBiaWxsYm9hcmRXaWR0aEZhY3RvcixcbiAgICAgIGNhcFJvdW5kZWQ6IHRydWUsXG4gICAgICBqb2ludFJvdW5kZWQ6IHRydWUsXG4gICAgICB3cmFwTG9uZ2l0dWRlOiBmYWxzZSxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgZGVwdGhUZXN0OiBtYXBTdGF0ZS5kcmFnUm90YXRlLFxuICAgICAgICBkZXB0aE1hc2s6IGZhbHNlXG4gICAgICB9LFxuICAgICAgdHJhaWxMZW5ndGg6IHZpc0NvbmZpZy50cmFpbExlbmd0aCAqIDEwMDAsXG4gICAgICBmYWRlVHJhaWw6IHZpc0NvbmZpZy5mYWRlVHJhaWwsXG4gICAgICBiaWxsYm9hcmQ6IHZpc0NvbmZpZy5iaWxsYm9hcmQsXG4gICAgICAvLyBUT0RPOiBnaXVzZXBwZSB0aGlzIHZhbHVlcyBiZWNvbWVzIG5lZ2F0aXZlXG4gICAgICBjdXJyZW50VGltZTogYW5pbWF0aW9uQ29uZmlnLmN1cnJlbnRUaW1lIC0gZG9tYWluMCxcbiAgICAgIHVwZGF0ZVRyaWdnZXJzLFxuICAgICAgaWQ6IGAke2RlZmF1bHRMYXllclByb3BzLmlkfSR7bWFwU3RhdGUuZ2xvYmU/LmVuYWJsZWQgPyAnLWdsb2JlJyA6ICcnfWBcbiAgICB9O1xuICAgIHJldHVybiBbbmV3IERlY2tHTFRyaXBzTGF5ZXIobGF5ZXJQcm9wcyldO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIGNvb3JkaW5hdGVzIGFuZCBkYXR1bSBhdCB0aGUgY3VycmVudCBhbmltYXRpb24gdGltZSBieSB0aGUgc3BlY2lmaWVkIGZlYXR1cmUgaW5kZXguXG4gICAqIEBwYXJhbSBmZWF0dXJlSW5kZXhcbiAgICogQHBhcmFtIHRpbWVcbiAgICogQHJldHVybnMge3tkYXR1bTogKG51bGx8c3RyaW5nfCopLCBpZHg6ICosIGNvb3Jkc318e2RhdHVtOiBudWxsLCBpZHg6IG51bWJlciwgY29vcmRzOiBudWxsfX1cbiAgICovXG4gIHByaXZhdGUgX2ZpbmRDb2x1bW5Nb2RlRGF0dW1Gb3JGZWF0dXJlKFxuICAgIGZlYXR1cmVJbmRleDogbnVtYmVyLFxuICAgIHRpbWU6IG51bWJlclxuICApOiB7XG4gICAgaWR4OiBudW1iZXI7XG4gICAgY29vcmRzOiBudW1iZXJbXSB8IG51bGw7XG4gICAgZGF0dW06IGFueTtcbiAgfSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmNvbHVtbk1vZGUgPT09IENPTFVNTl9NT0RFX1RBQkxFKSB7XG4gICAgICBjb25zdCBvYmplY3QgPSB0aGlzLmRhdGFUb0ZlYXR1cmVbZmVhdHVyZUluZGV4XTtcbiAgICAgIGNvbnN0IGlkeCA9IGJpc2VjdFJpZ2h0KHRoaXMuZGF0YVRvVGltZVN0YW1wW2ZlYXR1cmVJbmRleF0sIHRpbWUpO1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciB0eXBlIGdlb21ldHJ5P1xuICAgICAgY29uc3Qge2Nvb3JkaW5hdGVzfSA9IG9iamVjdD8uZ2VvbWV0cnkgfHwge2Nvb3JkaW5hdGVzOiBbXX07XG4gICAgICBpZiAoaWR4ID49IDAgJiYgaWR4IDwgY29vcmRpbmF0ZXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGNvb3JkcyA9IGNvb3JkaW5hdGVzW2lkeF07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaWR4LFxuICAgICAgICAgIGNvb3JkcyxcbiAgICAgICAgICBkYXR1bTogY29vcmRzPy5kYXR1bVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgaWR4OiAtMSxcbiAgICAgIGNvb3JkczogbnVsbCxcbiAgICAgIGRhdHVtOiBudWxsXG4gICAgfTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsVUFBQSxHQUFBQyx1QkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksVUFBQSxHQUFBSixPQUFBO0FBRUEsSUFBQUssVUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sY0FBQSxHQUFBUCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQU8sYUFBQSxHQUFBUCxPQUFBO0FBVUEsSUFBQVEsVUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsY0FBQSxHQUFBVixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVUsUUFBQSxHQUFBVixPQUFBO0FBQXFDLFNBQUFXLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBVCx3QkFBQVMsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZCxDQUFBLG9CQUFBYyxDQUFBLE9BQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBaEIsQ0FBQSxFQUFBYyxDQUFBLFNBQUFHLENBQUEsR0FBQVAsQ0FBQSxHQUFBQyxNQUFBLENBQUFFLHdCQUFBLENBQUFiLENBQUEsRUFBQWMsQ0FBQSxVQUFBRyxDQUFBLEtBQUFBLENBQUEsQ0FBQVYsR0FBQSxJQUFBVSxDQUFBLENBQUFDLEdBQUEsSUFBQVAsTUFBQSxDQUFBQyxjQUFBLENBQUFKLENBQUEsRUFBQU0sQ0FBQSxFQUFBRyxDQUFBLElBQUFULENBQUEsQ0FBQU0sQ0FBQSxJQUFBZCxDQUFBLENBQUFjLENBQUEsWUFBQU4sQ0FBQSxjQUFBUixDQUFBLEVBQUFHLENBQUEsSUFBQUEsQ0FBQSxDQUFBZSxHQUFBLENBQUFsQixDQUFBLEVBQUFRLENBQUEsR0FBQUEsQ0FBQTtBQUFBLFNBQUFXLFFBQUFuQixDQUFBLEVBQUFFLENBQUEsUUFBQUMsQ0FBQSxHQUFBUSxNQUFBLENBQUFTLElBQUEsQ0FBQXBCLENBQUEsT0FBQVcsTUFBQSxDQUFBVSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFYLE1BQUEsQ0FBQVUscUJBQUEsQ0FBQXJCLENBQUEsR0FBQUUsQ0FBQSxLQUFBb0IsQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQXJCLENBQUEsV0FBQVMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBYixDQUFBLEVBQUFFLENBQUEsRUFBQXNCLFVBQUEsT0FBQXJCLENBQUEsQ0FBQXNCLElBQUEsQ0FBQUMsS0FBQSxDQUFBdkIsQ0FBQSxFQUFBbUIsQ0FBQSxZQUFBbkIsQ0FBQTtBQUFBLFNBQUF3QixjQUFBM0IsQ0FBQSxhQUFBRSxDQUFBLE1BQUFBLENBQUEsR0FBQTBCLFNBQUEsQ0FBQUMsTUFBQSxFQUFBM0IsQ0FBQSxVQUFBQyxDQUFBLFdBQUF5QixTQUFBLENBQUExQixDQUFBLElBQUEwQixTQUFBLENBQUExQixDQUFBLFFBQUFBLENBQUEsT0FBQWlCLE9BQUEsQ0FBQVIsTUFBQSxDQUFBUixDQUFBLE9BQUEyQixPQUFBLFdBQUE1QixDQUFBLFFBQUE2QixnQkFBQSxhQUFBL0IsQ0FBQSxFQUFBRSxDQUFBLEVBQUFDLENBQUEsQ0FBQUQsQ0FBQSxTQUFBUyxNQUFBLENBQUFxQix5QkFBQSxHQUFBckIsTUFBQSxDQUFBc0IsZ0JBQUEsQ0FBQWpDLENBQUEsRUFBQVcsTUFBQSxDQUFBcUIseUJBQUEsQ0FBQTdCLENBQUEsS0FBQWdCLE9BQUEsQ0FBQVIsTUFBQSxDQUFBUixDQUFBLEdBQUEyQixPQUFBLFdBQUE1QixDQUFBLElBQUFTLE1BQUEsQ0FBQUMsY0FBQSxDQUFBWixDQUFBLEVBQUFFLENBQUEsRUFBQVMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBVixDQUFBLEVBQUFELENBQUEsaUJBQUFGLENBQUE7QUFBQSxTQUFBa0MsV0FBQS9CLENBQUEsRUFBQW1CLENBQUEsRUFBQXRCLENBQUEsV0FBQXNCLENBQUEsT0FBQWEsZ0JBQUEsYUFBQWIsQ0FBQSxPQUFBYywyQkFBQSxhQUFBakMsQ0FBQSxFQUFBa0MseUJBQUEsS0FBQUMsT0FBQSxDQUFBQyxTQUFBLENBQUFqQixDQUFBLEVBQUF0QixDQUFBLFlBQUFtQyxnQkFBQSxhQUFBaEMsQ0FBQSxFQUFBcUMsV0FBQSxJQUFBbEIsQ0FBQSxDQUFBSSxLQUFBLENBQUF2QixDQUFBLEVBQUFILENBQUE7QUFBQSxTQUFBcUMsMEJBQUEsY0FBQWxDLENBQUEsSUFBQXNDLE9BQUEsQ0FBQUMsU0FBQSxDQUFBQyxPQUFBLENBQUEzQixJQUFBLENBQUFzQixPQUFBLENBQUFDLFNBQUEsQ0FBQUUsT0FBQSxpQ0FBQXRDLENBQUEsYUFBQWtDLHlCQUFBLFlBQUFBLDBCQUFBLGFBQUFsQyxDQUFBO0FBQUEsU0FBQXlDLGNBQUF6QyxDQUFBLEVBQUFILENBQUEsRUFBQUUsQ0FBQSxFQUFBb0IsQ0FBQSxRQUFBdUIsQ0FBQSxPQUFBQyxLQUFBLGlCQUFBWCxnQkFBQSxpQkFBQWIsQ0FBQSxHQUFBbkIsQ0FBQSxDQUFBdUMsU0FBQSxHQUFBdkMsQ0FBQSxHQUFBSCxDQUFBLEVBQUFFLENBQUEsY0FBQW9CLENBQUEsYUFBQW5CLENBQUEsV0FBQTBDLENBQUEsQ0FBQW5CLEtBQUEsQ0FBQXhCLENBQUEsRUFBQUMsQ0FBQSxPQUFBMEMsQ0FBQSxJQXZCckM7QUFDQTtBQWlFQSxJQUFNRSxlQUFlLEdBQUcsQ0FBQztBQUVsQixJQUFNQyxnQkFBZ0IsR0FBQUMsT0FBQSxDQUFBRCxnQkFBQSxHQUFHLEdBQUc7QUFDNUIsSUFBTUUsZ0JBQWdCLEdBQUFELE9BQUEsQ0FBQUMsZ0JBQUEsR0FBRyxDQUFDO0FBRTFCLElBQU1DLGNBUVosR0FBQUYsT0FBQSxDQUFBRSxjQUFBLEdBQUc7RUFDRkMsT0FBTyxFQUFFLFNBQVM7RUFDbEJDLFNBQVMsRUFBRTtJQUNUQyxJQUFJLEVBQUUsUUFBUTtJQUNkQyxZQUFZLEVBQUVQLGdCQUFnQjtJQUM5QlEsS0FBSyxFQUFFLGNBQWM7SUFDckJDLFFBQVEsRUFBRSxLQUFLO0lBQ2ZDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDZkMsSUFBSSxFQUFFLEdBQUc7SUFDVEMsS0FBSyxFQUFFLFFBQVE7SUFDZkMsUUFBUSxFQUFFO0VBQ1osQ0FBQztFQUNEQyxVQUFVLEVBQUUsWUFBWTtFQUN4QkMsV0FBVyxFQUFFLGFBQWE7RUFDMUJDLFNBQVMsRUFBRSxXQUFXO0VBQ3RCQyxTQUFTLEVBQUUsV0FBVztFQUN0QkMsU0FBUyxFQUFFO0FBQ2IsQ0FBQztBQUVNLElBQU1DLGVBQWUsR0FBQWxCLE9BQUEsQ0FBQWtCLGVBQUEsR0FDMUIsU0FEV0EsZUFBZUEsQ0FBQUMsSUFBQTtFQUFBLElBQ3hCQyxPQUFPLEdBQUFELElBQUEsQ0FBUEMsT0FBTztFQUFBLE9BQ1QsVUFBQ0MsRUFBMEI7SUFBQSxPQUMzQixVQUFBQyxDQUFDO01BQUEsT0FDQ0QsRUFBRSxDQUFDRSxPQUFPLENBQUNELENBQUMsQ0FBQ0UsS0FBSyxFQUFFSixPQUFPLENBQUNLLFFBQVEsQ0FBQztJQUFBO0VBQUE7QUFBQTtBQUNsQyxJQUFNQyxlQUFlLEdBQUExQixPQUFBLENBQUEwQixlQUFBLEdBQUcsU0FBbEJBLGVBQWVBLENBQUFDLEtBQUE7RUFBQSxJQUFLUCxPQUFPLEdBQUFPLEtBQUEsQ0FBUFAsT0FBTztFQUFBLE9BQThCQSxPQUFPLENBQUNLLFFBQVE7QUFBQTtBQUN0RixJQUFNRyx5QkFBeUIsR0FBRyxTQUE1QkEseUJBQXlCQSxDQUFHQyxDQUFDLEVBQUk7RUFDckM7RUFDQSxPQUFPLFVBQUFDLEtBQUs7SUFBQSxPQUFJRCxDQUFDLENBQUNFLFVBQVUsQ0FBQ0MsTUFBTSxDQUFDQyxHQUFHLENBQUMsVUFBQUMsQ0FBQztNQUFBLE9BQUlKLEtBQUssQ0FBQ0ssYUFBYSxDQUFDRCxDQUFDLENBQUM7SUFBQSxFQUFDO0VBQUE7QUFDdEUsQ0FBQztBQUNELElBQU1FLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBc0JBLENBQUlOLEtBQUssRUFBRU8sSUFBSSxFQUFLO0VBQzlDLElBQUlDLEVBQUU7RUFDTixJQUFJLE9BQU9ELElBQUksS0FBSyxVQUFVLEVBQUU7SUFDOUJDLEVBQUUsR0FBR0QsSUFBSSxDQUFDUCxLQUFLLENBQUM7RUFDbEIsQ0FBQyxNQUFNO0lBQ0xRLEVBQUUsR0FBRyxJQUFBQywrQkFBb0IsRUFBQ1QsS0FBSyxFQUFFTyxJQUFJLENBQUM7RUFDeEM7RUFDQSxPQUFPQyxFQUFFO0FBQ1gsQ0FBQztBQUVNLElBQU1FLG1CQUFtQixHQUFBeEMsT0FBQSxDQUFBd0MsbUJBQUEsR0FBRyxTQUFTO0FBQ3JDLElBQU1DLGlCQUFpQixHQUFBekMsT0FBQSxDQUFBeUMsaUJBQUEsR0FBRyxPQUFPO0FBQ3hDLElBQU1DLHNCQUFzQixHQUFHLENBQzdCO0VBQ0VDLEdBQUcsRUFBRUgsbUJBQW1CO0VBQ3hCakMsS0FBSyxFQUFFLFNBQVM7RUFDaEJxQyxlQUFlLEVBQUUsQ0FBQyxTQUFTO0FBQzdCLENBQUMsRUFDRDtFQUNFRCxHQUFHLEVBQUVGLGlCQUFpQjtFQUN0QmxDLEtBQUssRUFBRSxlQUFlO0VBQ3RCcUMsZUFBZSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDO0VBQ2xEQyxlQUFlLEVBQUUsQ0FBQyxVQUFVO0FBQzlCLENBQUMsQ0FDRjtBQUNELElBQU1DLG1CQUFtQixHQUFHTixtQkFBbUI7QUFBQyxJQUUzQk8sU0FBUyxHQUFBL0MsT0FBQSxxQ0FBQWdELE1BQUE7RUFXNUIsU0FBQUQsVUFBWUUsS0FBSyxFQUFFO0lBQUEsSUFBQUMsS0FBQTtJQUFBLElBQUFDLGdCQUFBLG1CQUFBSixTQUFBO0lBQ2pCRyxLQUFBLEdBQUFqRSxVQUFBLE9BQUE4RCxTQUFBLEdBQU1FLEtBQUs7SUFBRSxJQUFBbkUsZ0JBQUEsYUFBQW9FLEtBQUE7SUFBQSxJQUFBcEUsZ0JBQUEsYUFBQW9FLEtBQUE7SUFBQSxJQUFBcEUsZ0JBQUEsYUFBQW9FLEtBQUE7SUFBQSxJQUFBcEUsZ0JBQUEsYUFBQW9FLEtBQUE7SUFFYkEsS0FBQSxDQUFLRSxhQUFhLEdBQUcsRUFBRTtJQUN2QkYsS0FBQSxDQUFLRyxlQUFlLEdBQUcsRUFBRTtJQUN6QkgsS0FBQSxDQUFLSSxhQUFhLEdBQUcsSUFBSTtJQUN6QkosS0FBQSxDQUFLSyxpQkFBaUIsQ0FBQ3JELGNBQWMsQ0FBQztJQUN0Q2dELEtBQUEsQ0FBS00sVUFBVSxHQUFHLElBQUFDLGtCQUFPLEVBQUN2QyxlQUFlLEVBQUVRLGVBQWUsQ0FBQztJQUMzRHdCLEtBQUEsQ0FBS1EsZUFBZSxPQUFBNUUsZ0JBQUEsaUJBQUFBLGdCQUFBLGlCQUNqQjJELGlCQUFpQixFQUFHLElBQUFrQix5QkFBb0IsRUFBQ2xCLGlCQUFpQixDQUFDLEdBQzNERCxtQkFBbUIsRUFBRyxJQUFBbUIseUJBQW9CLEVBQUNuQixtQkFBbUIsQ0FBQyxDQUNqRTtJQUFDLE9BQUFVLEtBQUE7RUFDSjtFQUFDLElBQUFVLFVBQUEsYUFBQWIsU0FBQSxFQUFBQyxNQUFBO0VBQUEsV0FBQWEsYUFBQSxhQUFBZCxTQUFBO0lBQUFKLEdBQUE7SUFBQXJGLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQTJCO01BQ3pCLE9BQU9vRixzQkFBc0I7SUFDL0I7RUFBQztJQUFBQyxHQUFBO0lBQUFyRixHQUFBLEVBS0QsU0FBQUEsSUFBQSxFQUFXO01BQ1QsT0FBT3lGLFNBQVMsQ0FBQzFDLElBQUk7SUFDdkI7RUFBQztJQUFBc0MsR0FBQTtJQUFBckYsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBbUI7TUFDakIsT0FBTyxNQUFNO0lBQ2Y7RUFBQztJQUFBcUYsR0FBQTtJQUFBckYsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBZ0I7TUFDZCxPQUFPd0cseUJBQWE7SUFDdEI7RUFBQztJQUFBbkIsR0FBQTtJQUFBckYsR0FBQSxFQUVELFNBQUFBLElBQUEsRUFBa0I7TUFDaEIsT0FBTyxJQUFJLENBQUN5Ryx1QkFBdUI7SUFDckM7RUFBQztJQUFBcEIsR0FBQTtJQUFBcUIsS0FBQSxFQUVELFNBQUFDLGtCQUFrQkEsQ0FBQSxFQUFHO01BQ25CLElBQUksSUFBSSxDQUFDQyxNQUFNLENBQUNDLFVBQVUsS0FBSzNCLG1CQUFtQixFQUFFO1FBQ2xELE9BQU9ELCtCQUFvQjtNQUM3QjtNQUNBLE9BQU9ILHNCQUFzQjtJQUMvQjtFQUFDO0lBQUFPLEdBQUE7SUFBQXJGLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXFCO01BQ25CLElBQU04RyxjQUFjLEdBQUF6RSxhQUFBLENBQUFvRCxTQUFBLDRCQUF1QjtNQUUzQyxPQUFBckUsYUFBQSxDQUFBQSxhQUFBLEtBQ0swRixjQUFjO1FBQ2pCQyxLQUFLLEVBQUEzRixhQUFBLENBQUFBLGFBQUEsS0FDQTBGLGNBQWMsQ0FBQ0MsS0FBSztVQUN2QkMsUUFBUSxFQUFFLFVBQVU7VUFDcEJDLFNBQVMsRUFBRUgsY0FBYyxDQUFDQyxLQUFLLENBQUNFLFNBQVM7VUFDekNDLGlCQUFpQixFQUFFLFNBQW5CQSxpQkFBaUJBLENBQUVOLE1BQU07WUFBQSxPQUFJLFVBQUE1QyxDQUFDO2NBQUEsT0FBSUEsQ0FBQyxDQUFDUyxVQUFVLENBQUMwQyxTQUFTLElBQUlQLE1BQU0sQ0FBQ0csS0FBSztZQUFBO1VBQUE7VUFDeEU7VUFDQS9ELFlBQVksRUFBRSxTQUFkQSxZQUFZQSxDQUFFNEQsTUFBTTtZQUFBLE9BQUlBLE1BQU0sQ0FBQ0csS0FBSztVQUFBO1FBQUEsRUFDckM7UUFDREssSUFBSSxFQUFBaEcsYUFBQSxDQUFBQSxhQUFBLEtBQ0MwRixjQUFjLENBQUNNLElBQUk7VUFDdEI5RCxRQUFRLEVBQUUsUUFBUTtVQUNsQjBELFFBQVEsRUFBRSxVQUFVO1VBQ3BCSyxTQUFTLEVBQUUsU0FBWEEsU0FBU0EsQ0FBRVQsTUFBTTtZQUFBLE9BQUlBLE1BQU0sQ0FBQ1UsU0FBUyxDQUFDQyxPQUFPO1VBQUE7VUFDN0NOLFNBQVMsRUFBRSxDQUFDO1VBQ1pDLGlCQUFpQixFQUFFLFNBQW5CQSxpQkFBaUJBLENBQUE7WUFBQSxPQUFRLFVBQUFsRCxDQUFDO2NBQUEsT0FBSUEsQ0FBQyxDQUFDUyxVQUFVLENBQUMrQyxTQUFTLElBQUk3RSxnQkFBZ0I7WUFBQTtVQUFBO1FBQUE7TUFDekU7SUFFTDtFQUFDO0lBQUEwQyxHQUFBO0lBQUFyRixHQUFBLEVBRUQsU0FBQUEsSUFBQSxFQUFzQjtNQUNwQixPQUFPLElBQUksQ0FBQzRHLE1BQU0sQ0FBQ2EsU0FBUyxDQUFDQyxNQUFNO0lBQ3JDO0VBQUM7SUFBQXJDLEdBQUE7SUFBQXJGLEdBQUEsRUFFRCxTQUFBQSxJQUFBLEVBQXFCO01BQ25CLFdBQUF3QixnQkFBQSxpQkFBQUEsZ0JBQUEsaUJBQ0cwRCxtQkFBbUIsRUFBRztRQUNyQnlDLEVBQUUsRUFBRSxVQUFVO1FBQ2RDLFFBQVEsRUFBRSxJQUFJLENBQUN4QixlQUFlLENBQUNsQixtQkFBbUIsQ0FBQztRQUNuRDJDLFVBQVUsRUFBRTtVQUNWQyxLQUFLLEVBQUU7UUFDVDtNQUNGLENBQUMsR0FDQTNDLGlCQUFpQixFQUFHO1FBQ25Cd0MsRUFBRSxFQUFFLFVBQVU7UUFDZEMsUUFBUSxFQUFFLElBQUksQ0FBQ3hCLGVBQWUsQ0FBQ2pCLGlCQUFpQixDQUFDO1FBQ2pEMEMsVUFBVSxFQUFFO1VBQ1ZDLEtBQUssRUFBRTtRQUNUO01BQ0YsQ0FBQztJQUVMO0VBQUM7SUFBQXpDLEdBQUE7SUFBQXFCLEtBQUEsRUFFRCxTQUFBcUIsbUJBQW1CQSxDQUFDL0IsYUFBcUMsRUFBRTtNQUN6RCxJQUFJLElBQUksQ0FBQ1ksTUFBTSxDQUFDQyxVQUFVLEtBQUszQixtQkFBbUIsRUFBRTtRQUNsRCxPQUFPLElBQUksQ0FBQ2dCLFVBQVUsQ0FBQyxJQUFJLENBQUNVLE1BQU0sQ0FBQ29CLE9BQU8sQ0FBQyxDQUFDaEMsYUFBYSxDQUFDO01BQzVEO01BQ0EsT0FBTyxJQUFJO0lBQ2I7RUFBQztJQUFBWCxHQUFBO0lBQUFxQixLQUFBLEVBd0NELFNBQUF1QixxQkFBcUJBLENBQUN0QyxLQUFLLEVBQUU7TUFBQSxJQUFBdUMsaUJBQUE7TUFDM0IsT0FBQTlHLGFBQUEsQ0FBQUEsYUFBQSxLQUFBaUIsYUFBQSxDQUFBb0QsU0FBQSxxQ0FDaUNFLEtBQUs7UUFDcENrQixVQUFVLEdBQUFxQixpQkFBQSxHQUFFdkMsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVrQixVQUFVLGNBQUFxQixpQkFBQSxjQUFBQSxpQkFBQSxHQUFJMUMsbUJBQW1CO1FBQ3BEaUMsU0FBUyxFQUFFO1VBQ1RVLE9BQU8sRUFBRSxJQUFJO1VBQ2JULE1BQU0sRUFBRTtRQUNWO01BQUM7SUFFTDtFQUFDO0lBQUFyQyxHQUFBO0lBQUFxQixLQUFBLEVBRUQsU0FBQTBCLFlBQVlBLENBQUNDLE1BQU0sRUFBRXJDLGFBQXFDLEVBQUVzQyxNQUFNLEVBQUVDLGVBQWUsRUFBRTtNQUFBLElBQUFDLHFCQUFBO01BQ25GLElBQUksSUFBSSxDQUFDNUIsTUFBTSxDQUFDQyxVQUFVLEtBQUszQixtQkFBbUIsRUFBRTtRQUNsRDtRQUNBLE9BQU9jLGFBQWEsQ0FBQ3lDLEdBQUcsQ0FBQ0osTUFBTSxDQUFDNUQsVUFBVSxDQUFDUCxLQUFLLENBQUM7TUFDbkQ7TUFDQSxRQUFBc0UscUJBQUEsR0FBTyxJQUFJLENBQUNFLDhCQUE4QixDQUFDTCxNQUFNLENBQUM1RCxVQUFVLENBQUNQLEtBQUssRUFBRXFFLGVBQWUsQ0FBQ0ksV0FBVyxDQUFDLGNBQUFILHFCQUFBLHVCQUF6RkEscUJBQUEsQ0FDSEksS0FBSztJQUNYO0VBQUM7SUFBQXZELEdBQUE7SUFBQXFCLEtBQUEsRUFFRCxTQUFBbUMsc0JBQXNCQSxDQUFDQyxPQUFvQixFQUFFO01BQUEsSUFBQUMsTUFBQTtNQUMzQyxRQUFRLElBQUksQ0FBQ25DLE1BQU0sQ0FBQ0MsVUFBVTtRQUM1QixLQUFLM0IsbUJBQW1CO1VBQUU7WUFDeEIsT0FDRTRELE9BQU8sQ0FBQ0UsYUFBYSxDQUNsQnJFLEdBQUcsQ0FBQyxVQUFBakUsQ0FBQztjQUFBLE9BQUlxSSxNQUFJLENBQUNqRCxhQUFhLENBQUNwRixDQUFDLENBQUM7WUFBQTtZQUMvQjtZQUFBLENBQ0NNLE1BQU0sQ0FBQyxVQUFBZ0QsQ0FBQztjQUFBLElBQUFpRixTQUFBO2NBQUEsT0FBSWpGLENBQUMsSUFBSSxFQUFBaUYsU0FBQSxHQUFDakYsQ0FBQyxDQUFTa0YsUUFBUSxjQUFBRCxTQUFBLHVCQUFuQkEsU0FBQSxDQUFxQmxHLElBQUksTUFBSyxZQUFZO1lBQUEsRUFBQztVQUVuRTtRQUVBLEtBQUtvQyxpQkFBaUI7VUFDcEIsT0FBTyxJQUFBZ0Usd0NBQTBCLEVBQUNMLE9BQU8sRUFBRSxJQUFJLENBQUNoRCxhQUFhLENBQUM7UUFFaEU7VUFDRSxPQUFPLEVBQUU7TUFDYjtJQUNGO0VBQUM7SUFBQVQsR0FBQTtJQUFBcUIsS0FBQSxFQUVELFNBQUEwQyxlQUFlQSxDQUFDQyxRQUFrQixFQUFFQyxZQUFZLEVBQUU7TUFBQSxJQUFBQyxNQUFBO01BQ2hELElBQUksSUFBSSxDQUFDM0MsTUFBTSxDQUFDNEMsTUFBTSxLQUFLLElBQUksRUFBRTtRQUMvQixPQUFPLENBQUMsQ0FBQztNQUNYO01BQ0E7O01BRUEsSUFBQUMscUJBQUEsR0FBbUNKLFFBQVEsQ0FBQyxJQUFJLENBQUN6QyxNQUFNLENBQUM0QyxNQUFNLENBQUM7UUFBeER4RCxhQUFhLEdBQUF5RCxxQkFBQSxDQUFiekQsYUFBYTtRQUFFMEQsU0FBUyxHQUFBRCxxQkFBQSxDQUFUQyxTQUFTO01BQy9CLElBQUFDLGdCQUFBLEdBQWUsSUFBSSxDQUFDQyxVQUFVLENBQUNQLFFBQVEsRUFBRUMsWUFBWSxDQUFDO1FBQS9DdkUsSUFBSSxHQUFBNEUsZ0JBQUEsQ0FBSjVFLElBQUk7TUFFWCxJQUFJRixhQUFhO01BQ2pCLElBQUksSUFBSSxDQUFDK0IsTUFBTSxDQUFDQyxVQUFVLEtBQUszQixtQkFBbUIsRUFBRTtRQUNsREwsYUFBYSxHQUFHLFNBQWhCQSxhQUFhQSxDQUFJZCxFQUEwQixFQUFFUSxDQUFDLEVBQUVzRixVQUFrQixFQUFLO1VBQ3JFLE9BQU85RixFQUFFLENBQUNFLE9BQU8sQ0FBQ00sQ0FBQyxDQUFDRSxVQUFVLENBQUNQLEtBQUssRUFBRTJGLFVBQVUsQ0FBQztRQUNuRCxDQUFDO01BQ0gsQ0FBQyxNQUFNO1FBQ0xoRixhQUFhLEdBQUdQLHlCQUF5QjtNQUMzQztNQUNBLElBQU13RixhQUFhLEdBQUcsU0FBaEJBLGFBQWFBLENBQUd2RixDQUFDO1FBQUEsT0FBSUEsQ0FBQyxDQUFDRSxVQUFVLENBQUNQLEtBQUs7TUFBQTtNQUM3QyxJQUFNNkYsWUFBWSxHQUFHLFNBQWZBLFlBQVlBLENBQUE7UUFBQSxPQUFTLFVBQUEvRixDQUFDO1VBQUEsT0FBSztZQUFDRSxLQUFLLEVBQUVGLENBQUMsQ0FBQ1MsVUFBVSxDQUFDUDtVQUFLLENBQUM7UUFBQSxDQUFDO01BQUE7TUFDN0QsSUFBTThGLFNBQVMsR0FBRyxJQUFJLENBQUNDLHFCQUFxQixDQUFDO1FBQUNGLFlBQVksRUFBWkEsWUFBWTtRQUFFL0QsYUFBYSxFQUFiQTtNQUFhLENBQUMsQ0FBQztNQUMzRSxJQUFNa0UsY0FBYyxHQUFHUixTQUFTLENBQUNTLG1CQUFtQixDQUFDbkUsYUFBYSxDQUFDLENBQ2pFOEQsYUFBYSxFQUNiakYsYUFDRixDQUFDO01BRUQsT0FBQXpELGFBQUE7UUFDRTJELElBQUksRUFBSkEsSUFBSTtRQUNKbUYsY0FBYyxFQUFkQSxjQUFjO1FBQ2RFLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFFcEcsQ0FBQztVQUFBLE9BQUlBLENBQUMsQ0FBQ2tGLFFBQVEsQ0FBQ21CLFdBQVc7UUFBQTtRQUNwQ0MsYUFBYSxFQUFFLFNBQWZBLGFBQWFBLENBQUV0RyxDQUFDO1VBQUEsT0FBSXVGLE1BQUksQ0FBQ3hELGVBQWUsQ0FBQy9CLENBQUMsQ0FBQ1MsVUFBVSxDQUFDUCxLQUFLLENBQUM7UUFBQTtNQUFBLEdBQ3pEOEYsU0FBUztJQUVoQjtFQUFDO0lBQUEzRSxHQUFBO0lBQUFxQixLQUFBLEVBRUQsU0FBQTZELHFCQUFxQkEsQ0FBQzdDLE1BQU0sRUFBRTtNQUM1QixJQUFJLENBQUM4QyxpQkFBaUIsQ0FBQztRQUNyQi9DLFNBQVMsRUFBQXJHLGFBQUEsQ0FBQUEsYUFBQSxLQUNKLElBQUksQ0FBQ3dGLE1BQU0sQ0FBQ2EsU0FBUztVQUN4QkMsTUFBTSxFQUFOQTtRQUFNO01BRVYsQ0FBQyxDQUFDO0lBQ0o7RUFBQztJQUFBckMsR0FBQTtJQUFBcUIsS0FBQSxFQUVELFNBQUErRCxlQUFlQSxDQUFDM0IsT0FBb0IsRUFBRTtNQUNwQyxJQUFPOUMsYUFBYSxHQUFJOEMsT0FBTyxDQUF4QjlDLGFBQWE7TUFDcEIsSUFBSUUsVUFBVTtNQUNkLElBQUksSUFBSSxDQUFDVSxNQUFNLENBQUNDLFVBQVUsS0FBSzNCLG1CQUFtQixFQUFFO1FBQ2xEZ0IsVUFBVSxHQUFHLElBQUksQ0FBQzZCLG1CQUFtQixDQUFDL0IsYUFBYSxDQUFDO1FBQ3BELElBQUlFLFVBQVUsS0FBSyxJQUFJLENBQUN3RSxJQUFJLENBQUN4RSxVQUFVLEVBQUU7VUFDdkM7VUFDQTtRQUNGO1FBQ0EsSUFBSSxDQUFDSixhQUFhLEdBQUcsSUFBQTZFLGdDQUFrQixFQUFDM0UsYUFBYSxFQUFFRSxVQUFVLENBQUM7TUFDcEUsQ0FBQyxNQUFNO1FBQ0wsSUFBSSxDQUFDRixhQUFhLEdBQUdBLGFBQWE7UUFDbEMsSUFBSSxDQUFDRixhQUFhLEdBQUcsSUFBQThFLG1DQUFxQixFQUFDNUUsYUFBYSxFQUFFLElBQUksQ0FBQ1ksTUFBTSxDQUFDb0IsT0FBTyxFQUFFLFdBQVcsQ0FBQztNQUM3RjtNQUVBLElBQUE2QyxxQkFBQSxHQUEyQyxJQUFBQyxvQ0FBeUIsRUFBQyxJQUFJLENBQUNoRixhQUFhLENBQUM7UUFBakZDLGVBQWUsR0FBQThFLHFCQUFBLENBQWY5RSxlQUFlO1FBQUVnRixlQUFlLEdBQUFGLHFCQUFBLENBQWZFLGVBQWU7TUFFdkMsSUFBSSxDQUFDaEYsZUFBZSxHQUFHQSxlQUFlO01BQ3RDLElBQUksQ0FBQ3dFLHFCQUFxQixDQUFDUSxlQUFlLENBQUM7O01BRTNDO01BQ0EsSUFBTUMsTUFBTSxHQUFHLElBQUFDLDhCQUFnQixFQUFDLElBQUksQ0FBQ25GLGFBQWEsQ0FBQzs7TUFFbkQ7TUFDQSxJQUFNb0YsWUFBWSxHQUFHLElBQUFDLG9DQUFzQixFQUFDLElBQUksQ0FBQ3JGLGFBQWEsQ0FBQztNQUUvRCxJQUFJLENBQUNzRixVQUFVLENBQUM7UUFBQ0osTUFBTSxFQUFOQSxNQUFNO1FBQUVFLFlBQVksRUFBWkEsWUFBWTtRQUFFaEYsVUFBVSxFQUFWQTtNQUFVLENBQUMsQ0FBQztJQUNyRDtFQUFDO0lBQUFiLEdBQUE7SUFBQXFCLEtBQUEsRUFFRCxTQUFBMkUscUJBQXFCQSxDQUFDdkMsT0FBTyxFQUFFO01BQzdCLElBQU85QyxhQUFhLEdBQUk4QyxPQUFPLENBQXhCOUMsYUFBYTtNQUNwQixJQUFJLENBQUNBLGFBQWEsQ0FBQ3NGLE9BQU8sQ0FBQyxDQUFDLEVBQUU7UUFDNUIsT0FBTyxJQUFJO01BQ2I7O01BRUE7TUFDQTtNQUNBLElBQUksQ0FBQyxJQUFJLENBQUMxRSxNQUFNLENBQUNvQixPQUFPLENBQUNsRSxPQUFPLENBQUM0QyxLQUFLLEVBQUU7UUFDdEM7UUFDQSxJQUFNNkUsWUFBWSxHQUFHLElBQUFDLGdDQUFrQixFQUFDMUMsT0FBTyxFQUFFLElBQUksQ0FBQ2xDLE1BQU0sQ0FBQ29CLE9BQU8sQ0FBQztRQUNyRSxJQUFJdUQsWUFBWSxFQUFFO1VBQ2hCLElBQUksQ0FBQ2YsaUJBQWlCLENBQUFwSixhQUFBLENBQUFBLGFBQUEsS0FDakJtSyxZQUFZO1lBQ2YxRSxVQUFVLEVBQUUxQjtVQUFpQixFQUM5QixDQUFDO1FBQ0o7TUFDRjtNQUVBLElBQUksQ0FBQ3NGLGVBQWUsQ0FBQzNCLE9BQU8sQ0FBQztNQUM3QixPQUFPLElBQUk7SUFDYjtFQUFDO0lBQUF6RCxHQUFBO0lBQUFxQixLQUFBLEVBRUQsU0FBQStFLFdBQVdBLENBQUNDLElBQUksRUFBRTtNQUFBLElBQUFDLHFCQUFBLEVBQUFDLGVBQUE7TUFDaEIsSUFBTzdHLElBQUksR0FBMEMyRyxJQUFJLENBQWxEM0csSUFBSTtRQUFFMkUsU0FBUyxHQUErQmdDLElBQUksQ0FBNUNoQyxTQUFTO1FBQUVtQyxRQUFRLEdBQXFCSCxJQUFJLENBQWpDRyxRQUFRO1FBQUV0RCxlQUFlLEdBQUltRCxJQUFJLENBQXZCbkQsZUFBZTtNQUNqRCxJQUFPakIsU0FBUyxHQUFJLElBQUksQ0FBQ1YsTUFBTSxDQUF4QlUsU0FBUztNQUNoQixJQUFNd0UsVUFBVSxHQUFHLElBQUksQ0FBQ0MsYUFBYSxDQUFDRixRQUFRLENBQUM7TUFDL0MsSUFBTUcsV0FBVyxHQUNmekQsZUFBZSxJQUNmMEQsS0FBSyxDQUFDQyxPQUFPLENBQUMzRCxlQUFlLENBQUNiLE1BQU0sQ0FBQyxJQUNyQ2EsZUFBZSxDQUFDYixNQUFNLENBQUN5RSxLQUFLLENBQUNDLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDLElBQzdDRCxNQUFNLENBQUNDLFFBQVEsQ0FBQzlELGVBQWUsQ0FBQ0ksV0FBVyxDQUFDO01BRTlDLElBQUksQ0FBQ3FELFdBQVcsRUFBRTtRQUNoQixPQUFPLEVBQUU7TUFDWDtNQUVBLElBQU1NLE9BQU8sSUFBQVgscUJBQUEsR0FBR3BELGVBQWUsQ0FBQ2IsTUFBTSxjQUFBaUUscUJBQUEsdUJBQXRCQSxxQkFBQSxDQUF5QixDQUFDLENBQUM7TUFFM0MsSUFBTVksdUJBQXVCLEdBQUc7UUFBQ3JDLGNBQWMsRUFBRVIsU0FBUyxDQUFDOEM7TUFBeUIsQ0FBQztNQUNyRixJQUFNQyxjQUFjLEdBQUFyTCxhQUFBLENBQUFBLGFBQUEsS0FDZixJQUFJLENBQUNzTCw4QkFBOEIsQ0FBQyxDQUFDO1FBQ3hDcEMsYUFBYSxFQUFFO1VBQ2J0QyxPQUFPLEVBQUUsSUFBSSxDQUFDcEIsTUFBTSxDQUFDb0IsT0FBTztVQUM1QnNFLE9BQU8sRUFBUEE7UUFDRjtNQUFDLEdBQ0VDLHVCQUF1QixDQUMzQjtNQUNELElBQU1JLGlCQUFpQixHQUFHLElBQUksQ0FBQ0Msd0JBQXdCLENBQUNsQixJQUFJLENBQUM7TUFFN0QsSUFBTW1CLG9CQUFvQixHQUFHdkYsU0FBUyxDQUFDNUQsU0FBUyxHQUFHb0osMENBQStCLEdBQUcsQ0FBQztNQUV0RixJQUFNQyxVQUFVLEdBQUEzTCxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQSxLQUNYdUwsaUJBQWlCLEdBQ2pCNUgsSUFBSTtRQUNQdUYsYUFBYSxFQUFFLFNBQWZBLGFBQWFBLENBQUV0RyxDQUFDO1VBQUEsT0FBSSxDQUFDZSxJQUFJLENBQUN1RixhQUFhLENBQUN0RyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUVXLEdBQUcsQ0FBQyxVQUFBcUksRUFBRTtZQUFBLE9BQUlBLEVBQUUsR0FBR1YsT0FBTztVQUFBLEVBQUM7UUFBQTtRQUN6RVcsVUFBVSxFQUFFM0YsU0FBUyxDQUFDeEUsU0FBUyxHQUFHZ0osVUFBVSxHQUFHdEosZUFBZSxHQUFHcUssb0JBQW9CO1FBQ3JGSyxVQUFVLEVBQUUsSUFBSTtRQUNoQkMsWUFBWSxFQUFFLElBQUk7UUFDbEJDLGFBQWEsRUFBRSxLQUFLO1FBQ3BCQyxVQUFVLEVBQUU7VUFDVkMsU0FBUyxFQUFFekIsUUFBUSxDQUFDMEIsVUFBVTtVQUM5QkMsU0FBUyxFQUFFO1FBQ2IsQ0FBQztRQUNEaEssV0FBVyxFQUFFOEQsU0FBUyxDQUFDOUQsV0FBVyxHQUFHLElBQUk7UUFDekNDLFNBQVMsRUFBRTZELFNBQVMsQ0FBQzdELFNBQVM7UUFDOUJDLFNBQVMsRUFBRTRELFNBQVMsQ0FBQzVELFNBQVM7UUFDOUI7UUFDQWlGLFdBQVcsRUFBRUosZUFBZSxDQUFDSSxXQUFXLEdBQUcyRCxPQUFPO1FBQ2xERyxjQUFjLEVBQWRBLGNBQWM7UUFDZDlFLEVBQUUsS0FBQThGLE1BQUEsQ0FBS2QsaUJBQWlCLENBQUNoRixFQUFFLEVBQUE4RixNQUFBLENBQUcsQ0FBQTdCLGVBQUEsR0FBQUMsUUFBUSxDQUFDNkIsS0FBSyxjQUFBOUIsZUFBQSxlQUFkQSxlQUFBLENBQWdCekQsT0FBTyxHQUFHLFFBQVEsR0FBRyxFQUFFO01BQUUsRUFDeEU7TUFDRCxPQUFPLENBQUMsSUFBSXdGLHFCQUFnQixDQUFDWixVQUFVLENBQUMsQ0FBQztJQUMzQzs7SUFFQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFMRTtJQUFBMUgsR0FBQTtJQUFBcUIsS0FBQSxFQU1BLFNBQVFnQyw4QkFBOEJBLENBQ3BDa0YsWUFBb0IsRUFDcEJDLElBQVksRUFLWjtNQUNBLElBQUksSUFBSSxDQUFDakgsTUFBTSxDQUFDQyxVQUFVLEtBQUsxQixpQkFBaUIsRUFBRTtRQUNoRCxJQUFNa0QsTUFBTSxHQUFHLElBQUksQ0FBQ3ZDLGFBQWEsQ0FBQzhILFlBQVksQ0FBQztRQUMvQyxJQUFNRSxHQUFHLEdBQUcsSUFBQUMsb0JBQVcsRUFBQyxJQUFJLENBQUNoSSxlQUFlLENBQUM2SCxZQUFZLENBQUMsRUFBRUMsSUFBSSxDQUFDO1FBQ2pFO1FBQ0EsSUFBQUcsS0FBQSxHQUFzQixDQUFBM0YsTUFBTSxhQUFOQSxNQUFNLHVCQUFOQSxNQUFNLENBQUVhLFFBQVEsS0FBSTtZQUFDbUIsV0FBVyxFQUFFO1VBQUUsQ0FBQztVQUFwREEsV0FBVyxHQUFBMkQsS0FBQSxDQUFYM0QsV0FBVztRQUNsQixJQUFJeUQsR0FBRyxJQUFJLENBQUMsSUFBSUEsR0FBRyxHQUFHekQsV0FBVyxDQUFDL0ksTUFBTSxFQUFFO1VBQ3hDLElBQU0yTSxNQUFNLEdBQUc1RCxXQUFXLENBQUN5RCxHQUFHLENBQUM7VUFDL0IsT0FBTztZQUNMQSxHQUFHLEVBQUhBLEdBQUc7WUFDSEcsTUFBTSxFQUFOQSxNQUFNO1lBQ05yRixLQUFLLEVBQUVxRixNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRXJGO1VBQ2pCLENBQUM7UUFDSDtNQUNGO01BQ0EsT0FBTztRQUNMa0YsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNQRyxNQUFNLEVBQUUsSUFBSTtRQUNackYsS0FBSyxFQUFFO01BQ1QsQ0FBQztJQUNIO0VBQUM7SUFBQXZELEdBQUE7SUFBQXJGLEdBQUEsRUFqVkQsU0FBQUEsSUFBQSxFQUEwQjtNQUN4QixPQUFPLE1BQU07SUFDZjtFQUFDO0lBQUFxRixHQUFBO0lBQUFxQixLQUFBLEVBOEVELFNBQU93SCxxQkFBcUJBLENBQUFDLEtBQUEsRUFFMUJDLFdBQWtCLEVBQ2xCO01BQUEsSUFBQUMsTUFBQTtNQUFBLElBRkNwTCxLQUFLLEdBQUFrTCxLQUFBLENBQUxsTCxLQUFLO1FBQUFxTCxZQUFBLEdBQUFILEtBQUEsQ0FBRTdGLE1BQU07UUFBTkEsTUFBTSxHQUFBZ0csWUFBQSxjQUFHLEVBQUUsR0FBQUEsWUFBQTtRQUFFdEksYUFBYSxHQUFBbUksS0FBQSxDQUFibkksYUFBYTtRQUFFMkIsRUFBRSxHQUFBd0csS0FBQSxDQUFGeEcsRUFBRTtNQUd0QyxJQUFNNEcsY0FBYyxHQUFHakcsTUFBTSxDQUFDdEgsTUFBTSxDQUFDLFVBQUF1RCxDQUFDO1FBQUEsT0FBSUEsQ0FBQyxDQUFDeEIsSUFBSSxLQUFLLFNBQVM7TUFBQSxFQUFDLENBQUM0QixHQUFHLENBQUMsVUFBQUosQ0FBQztRQUFBLE9BQUlBLENBQUMsQ0FBQ2lLLElBQUk7TUFBQSxFQUFDO01BRWhGLElBQU1DLGNBQWMsR0FBRztRQUNyQjNLLE9BQU8sRUFBRSxJQUFBNEssbUJBQUksS0FBQWpCLE1BQUEsS0FBQWtCLG1CQUFBLGFBQUtDLHlCQUFjLENBQUM5SyxPQUFPLE9BQUE2SyxtQkFBQSxhQUFLSixjQUFjLEVBQUM7TUFDOUQsQ0FBQztNQUVELElBQU1NLGNBQWMsR0FBRyxJQUFJLENBQUNDLHNCQUFzQixDQUFDTCxjQUFjLEVBQUVuRyxNQUFNLENBQUM7TUFFMUUsSUFBTXlHLGtCQUFrQixHQUFHLENBQUNGLGNBQWMsSUFBSSxFQUFFLEVBQUU3TixNQUFNLENBQUMsVUFBQWdPLEdBQUc7UUFBQSxPQUMxRCxJQUFBQyw2QkFBa0IsRUFBQ2pKLGFBQWEsRUFBRXNDLE1BQU0sQ0FBQzBHLEdBQUcsQ0FBQ2xMLE9BQU8sQ0FBQ0ssUUFBUSxDQUFDLENBQUM7TUFBQSxDQUNqRSxDQUFDO01BRUQsSUFBSTRLLGtCQUFrQixDQUFDek4sTUFBTSxFQUFFO1FBQzdCLE9BQU87VUFDTHFFLEtBQUssRUFBRW9KLGtCQUFrQixDQUFDcEssR0FBRyxDQUFDLFVBQUFxRCxPQUFPO1lBQUEsT0FBSztjQUN4Qy9FLEtBQUssRUFBRyxPQUFPQSxLQUFLLEtBQUssUUFBUSxJQUFJQSxLQUFLLENBQUNpTSxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFLYixNQUFJLENBQUN0TCxJQUFJO2NBQ2pGaUYsT0FBTyxFQUFQQSxPQUFPO2NBQ1BtSCxTQUFTLEVBQUUsSUFBSTtjQUNmdEksVUFBVSxFQUFFM0I7WUFDZCxDQUFDO1VBQUEsQ0FBQyxDQUFDO1VBRUg7VUFDQWtKLFdBQVcsRUFBRUEsV0FBVyxDQUFDcE4sTUFBTSxDQUM3QixVQUFBb08sSUFBSTtZQUFBLE9BQ0ZBLElBQUksQ0FBQ3JNLElBQUksS0FBSyxTQUFTLElBQ3ZCcU0sSUFBSSxDQUFDNUYsTUFBTSxLQUFLN0IsRUFBRSxJQUNsQixDQUFDb0gsa0JBQWtCLENBQUNNLElBQUksQ0FBQyxVQUFBQyxDQUFDO2NBQUEsT0FBSUYsSUFBSSxDQUFDcEgsT0FBTyxDQUFDbEUsT0FBTyxDQUFDMEssSUFBSSxLQUFLYyxDQUFDLENBQUN4TCxPQUFPLENBQUMwSyxJQUFJO1lBQUEsRUFBQztVQUFBLENBQy9FO1FBQ0YsQ0FBQztNQUNIO01BRUEsT0FBTztRQUFDN0ksS0FBSyxFQUFFO01BQUUsQ0FBQztJQUNwQjtFQUFDO0FBQUEsRUFqSm9DNEoscUJBQUsiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
503
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbG9kYXNoMiIsIl9iYXNlTGF5ZXIiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9nZW9MYXllcnMiLCJfY29uc3RhbnRzIiwiX3RyaXBMYXllckljb24iLCJfZ2VvanNvblV0aWxzIiwiX3RyaXBVdGlscyIsIl90cmlwSW5mb01vZGFsIiwiX2QzQXJyYXkiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsIl9zdXBlclByb3BHZXQiLCJwIiwiX2dldDIiLCJ6b29tRmFjdG9yVmFsdWUiLCJkZWZhdWx0VGhpY2tuZXNzIiwiZXhwb3J0cyIsImRlZmF1bHRMaW5lV2lkdGgiLCJ0cmlwVmlzQ29uZmlncyIsIm9wYWNpdHkiLCJ0aGlja25lc3MiLCJ0eXBlIiwiZGVmYXVsdFZhbHVlIiwibGFiZWwiLCJpc1JhbmdlZCIsInJhbmdlIiwic3RlcCIsImdyb3VwIiwicHJvcGVydHkiLCJjb2xvclJhbmdlIiwidHJhaWxMZW5ndGgiLCJmYWRlVHJhaWwiLCJiaWxsYm9hcmQiLCJzaXplUmFuZ2UiLCJmZWF0dXJlQWNjZXNzb3IiLCJfcmVmIiwiZ2VvanNvbiIsImRjIiwiZCIsInZhbHVlQXQiLCJpbmRleCIsImZpZWxkSWR4IiwiZmVhdHVyZVJlc29sdmVyIiwiX3JlZjIiLCJnZXRUYWJsZU1vZGVWYWx1ZUFjY2Vzc29yIiwiZiIsImZpZWxkIiwicHJvcGVydGllcyIsInZhbHVlcyIsIm1hcCIsInYiLCJ2YWx1ZUFjY2Vzc29yIiwiZ2V0VGFibGVNb2RlRmllbGRWYWx1ZSIsImRhdGEiLCJydiIsImRlZmF1bHRHZXRGaWVsZFZhbHVlIiwiQ09MVU1OX01PREVfR0VPSlNPTiIsIkNPTFVNTl9NT0RFX1RBQkxFIiwiU1VQUE9SVEVEX0NPTFVNTl9NT0RFUyIsImtleSIsInJlcXVpcmVkQ29sdW1ucyIsIm9wdGlvbmFsQ29sdW1ucyIsIkRFRkFVTFRfQ09MVU1OX01PREUiLCJUcmlwTGF5ZXIiLCJfTGF5ZXIiLCJwcm9wcyIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsImRhdGFUb0ZlYXR1cmUiLCJkYXRhVG9UaW1lU3RhbXAiLCJkYXRhQ29udGFpbmVyIiwicmVnaXN0ZXJWaXNDb25maWciLCJnZXRGZWF0dXJlIiwibWVtb2l6ZSIsIl9sYXllckluZm9Nb2RhbCIsIlRyaXBJbmZvTW9kYWxGYWN0b3J5IiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJUcmlwTGF5ZXJJY29uIiwiZGVmYXVsdFBvaW50Q29sdW1uUGFpcnMiLCJ2YWx1ZSIsImFjY2Vzc1ZTRmllbGRWYWx1ZSIsImNvbmZpZyIsImNvbHVtbk1vZGUiLCJ2aXN1YWxDaGFubmVscyIsImNvbG9yIiwiYWNjZXNzb3IiLCJudWxsVmFsdWUiLCJnZXRBdHRyaWJ1dGVWYWx1ZSIsImxpbmVDb2xvciIsInNpemUiLCJjb25kaXRpb24iLCJ2aXNDb25maWciLCJzdHJva2VkIiwibGluZVdpZHRoIiwiYW5pbWF0aW9uIiwiZG9tYWluIiwiaWQiLCJ0ZW1wbGF0ZSIsIm1vZGFsUHJvcHMiLCJ0aXRsZSIsImdldFBvc2l0aW9uQWNjZXNzb3IiLCJjb2x1bW5zIiwiZ2V0RGVmYXVsdExheWVyQ29uZmlnIiwiX3Byb3BzJGNvbHVtbk1vZGUiLCJlbmFibGVkIiwiZ2V0SG92ZXJEYXRhIiwib2JqZWN0IiwiZmllbGRzIiwiYW5pbWF0aW9uQ29uZmlnIiwiX3RoaXMkX2ZpbmRDb2x1bW5Nb2RlIiwicm93IiwiX2ZpbmRDb2x1bW5Nb2RlRGF0dW1Gb3JGZWF0dXJlIiwiY3VycmVudFRpbWUiLCJkYXR1bSIsImNhbGN1bGF0ZURhdGFBdHRyaWJ1dGUiLCJkYXRhc2V0IiwiX3RoaXMyIiwiZmlsdGVyZWRJbmRleCIsIl9nZW9tZXRyeSIsImdlb21ldHJ5IiwiYXBwbHlGaWx0ZXJzVG9UYWJsZUNvbHVtbnMiLCJmb3JtYXRMYXllckRhdGEiLCJkYXRhc2V0cyIsIm9sZExheWVyRGF0YSIsIl90aGlzMyIsImRhdGFJZCIsIl9kYXRhc2V0cyR0aGlzJGNvbmZpZyIsImdwdUZpbHRlciIsIl90aGlzJHVwZGF0ZURhdGEiLCJ1cGRhdGVEYXRhIiwiZmllbGRJbmRleCIsImluZGV4QWNjZXNzb3IiLCJkYXRhQWNjZXNzb3IiLCJhY2Nlc3NvcnMiLCJnZXRBdHRyaWJ1dGVBY2Nlc3NvcnMiLCJnZXRGaWx0ZXJWYWx1ZSIsImZpbHRlclZhbHVlQWNjZXNzb3IiLCJnZXRQYXRoIiwiY29vcmRpbmF0ZXMiLCJnZXRUaW1lc3RhbXBzIiwidXBkYXRlQW5pbWF0aW9uRG9tYWluIiwidXBkYXRlTGF5ZXJDb25maWciLCJ1cGRhdGVMYXllck1ldGEiLCJtZXRhIiwiZ2V0R2VvanNvbkRhdGFNYXBzIiwiZ3JvdXBDb2x1bW5zQXNHZW9Kc29uIiwiX3BhcnNlVHJpcEdlb0pzb25UaW1lIiwicGFyc2VUcmlwR2VvSnNvblRpbWVzdGFtcCIsImFuaW1hdGlvbkRvbWFpbiIsImJvdW5kcyIsImdldEdlb2pzb25Cb3VuZHMiLCJmZWF0dXJlVHlwZXMiLCJnZXRHZW9qc29uRmVhdHVyZVR5cGVzIiwidXBkYXRlTWV0YSIsInNldEluaXRpYWxMYXllckNvbmZpZyIsIm51bVJvd3MiLCJjb2x1bW5Db25maWciLCJkZXRlY3RUYWJsZUNvbHVtbnMiLCJyZW5kZXJMYXllciIsIm9wdHMiLCJfYW5pbWF0aW9uQ29uZmlnJGRvbWEiLCJfbWFwU3RhdGUkZ2xvYmUiLCJtYXBTdGF0ZSIsInpvb21GYWN0b3IiLCJnZXRab29tRmFjdG9yIiwiaXNWYWxpZFRpbWUiLCJBcnJheSIsImlzQXJyYXkiLCJldmVyeSIsIk51bWJlciIsImlzRmluaXRlIiwiZG9tYWluMCIsImdwdUZpbHRlclVwZGF0ZVRyaWdnZXJzIiwiZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycyIsInVwZGF0ZVRyaWdnZXJzIiwiZ2V0VmlzdWFsQ2hhbm5lbFVwZGF0ZVRyaWdnZXJzIiwiZGVmYXVsdExheWVyUHJvcHMiLCJnZXREZWZhdWx0RGVja0xheWVyUHJvcHMiLCJiaWxsYm9hcmRXaWR0aEZhY3RvciIsIlBST0pFQ1RFRF9QSVhFTF9TSVpFX01VTFRJUExJRVIiLCJsYXllclByb3BzIiwidHMiLCJ3aWR0aFNjYWxlIiwiY2FwUm91bmRlZCIsImpvaW50Um91bmRlZCIsIndyYXBMb25naXR1ZGUiLCJwYXJhbWV0ZXJzIiwiZGVwdGhUZXN0IiwiZHJhZ1JvdGF0ZSIsImRlcHRoTWFzayIsImNvbmNhdCIsImdsb2JlIiwiRGVja0dMVHJpcHNMYXllciIsImZlYXR1cmVJbmRleCIsInRpbWUiLCJpZHgiLCJiaXNlY3RSaWdodCIsIl9yZWY0IiwiY29vcmRzIiwiZmluZERlZmF1bHRMYXllclByb3BzIiwiX3JlZjUiLCJmb3VuZExheWVycyIsIl90aGlzNCIsIl9yZWY1JGZpZWxkcyIsImdlb2pzb25Db2x1bW5zIiwibmFtZSIsImRlZmF1bHRDb2x1bW5zIiwidW5pcSIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJHRU9KU09OX0ZJRUxEUyIsImdlb0pzb25Db2x1bW5zIiwiZmluZERlZmF1bHRDb2x1bW5GaWVsZCIsInRyaXBHZW9qc29uQ29sdW1ucyIsImNvbCIsImlzVHJpcEdlb0pzb25GaWVsZCIsInJlcGxhY2UiLCJpc1Zpc2libGUiLCJwcm9wIiwiZmluZCIsImMiLCJMYXllciJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmlwLWxheWVyL3RyaXAtbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IG1lbW9pemUgZnJvbSAnbG9kYXNoLm1lbW9pemUnO1xuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoLnVuaXEnO1xuaW1wb3J0IExheWVyLCB7TGF5ZXJCYXNlQ29uZmlnLCBkZWZhdWx0R2V0RmllbGRWYWx1ZX0gZnJvbSAnLi4vYmFzZS1sYXllcic7XG5pbXBvcnQge1RyaXBzTGF5ZXIgYXMgRGVja0dMVHJpcHNMYXllcn0gZnJvbSAnQGRlY2suZ2wvZ2VvLWxheWVycyc7XG5cbmltcG9ydCB7R0VPSlNPTl9GSUVMRFMsIFBST0pFQ1RFRF9QSVhFTF9TSVpFX01VTFRJUExJRVJ9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCBUcmlwTGF5ZXJJY29uIGZyb20gJy4vdHJpcC1sYXllci1pY29uJztcblxuaW1wb3J0IHtcbiAgZ2V0R2VvanNvbkRhdGFNYXBzLFxuICBnZXRHZW9qc29uQm91bmRzLFxuICBnZXRHZW9qc29uRmVhdHVyZVR5cGVzLFxuICBHZW9qc29uRGF0YU1hcHMsXG4gIGRldGVjdFRhYmxlQ29sdW1ucyxcbiAgZ3JvdXBDb2x1bW5zQXNHZW9Kc29uLFxuICBhcHBseUZpbHRlcnNUb1RhYmxlQ29sdW1uc1xufSBmcm9tICcuLi9nZW9qc29uLWxheWVyL2dlb2pzb24tdXRpbHMnO1xuXG5pbXBvcnQge2lzVHJpcEdlb0pzb25GaWVsZCwgcGFyc2VUcmlwR2VvSnNvblRpbWVzdGFtcH0gZnJvbSAnLi90cmlwLXV0aWxzJztcbmltcG9ydCBUcmlwSW5mb01vZGFsRmFjdG9yeSBmcm9tICcuL3RyaXAtaW5mby1tb2RhbCc7XG5pbXBvcnQge2Jpc2VjdFJpZ2h0fSBmcm9tICdkMy1hcnJheSc7XG5pbXBvcnQge1xuICBDb2xvclJhbmdlLFxuICBNZXJnZSxcbiAgVmlzQ29uZmlnQ29sb3JSYW5nZSxcbiAgVmlzQ29uZmlnTnVtYmVyLFxuICBWaXNDb25maWdSYW5nZSxcbiAgTGF5ZXJDb2x1bW5cbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge2RlZmF1bHQgYXMgS2VwbGVyVGFibGUsIERhdGFzZXRzfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB7RGF0YUNvbnRhaW5lckludGVyZmFjZX0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmV4cG9ydCB0eXBlIFRyaXBMYXllclZpc0NvbmZpZ1NldHRpbmdzID0ge1xuICBvcGFjaXR5OiBWaXNDb25maWdOdW1iZXI7XG4gIHRoaWNrbmVzczogVmlzQ29uZmlnTnVtYmVyO1xuICBjb2xvclJhbmdlOiBWaXNDb25maWdDb2xvclJhbmdlO1xuICB0cmFpbExlbmd0aDogVmlzQ29uZmlnTnVtYmVyO1xuICBzaXplUmFuZ2U6IFZpc0NvbmZpZ1JhbmdlO1xufTtcblxuZXhwb3J0IHR5cGUgVHJpcExheWVyQ29sdW1uc0NvbmZpZyA9IHtcbiAgZ2VvanNvbjogTGF5ZXJDb2x1bW47XG59O1xuXG5leHBvcnQgdHlwZSBUcmlwTGF5ZXJWaXNDb25maWcgPSB7XG4gIG9wYWNpdHk6IG51bWJlcjtcbiAgdGhpY2tuZXNzOiBudW1iZXI7XG4gIGNvbG9yUmFuZ2U6IENvbG9yUmFuZ2U7XG4gIHRyYWlsTGVuZ3RoOiBudW1iZXI7XG4gIHNpemVSYW5nZTogW251bWJlciwgbnVtYmVyXTtcbiAgYmlsbGJvYXJkOiBib29sZWFuO1xuICBmYWRlVHJhaWw6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBUcmlwTGF5ZXJDb25maWcgPSBNZXJnZTxcbiAgTGF5ZXJCYXNlQ29uZmlnLFxuICB7Y29sdW1uczogVHJpcExheWVyQ29sdW1uc0NvbmZpZzsgdmlzQ29uZmlnOiBUcmlwTGF5ZXJWaXNDb25maWd9XG4+O1xuXG5leHBvcnQgdHlwZSBUcmlwTGF5ZXJNZXRhID0ge1xuICBnZXRGZWF0dXJlOiBhbnk7XG59O1xuXG5jb25zdCB6b29tRmFjdG9yVmFsdWUgPSA4O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdFRoaWNrbmVzcyA9IDAuNTtcbmV4cG9ydCBjb25zdCBkZWZhdWx0TGluZVdpZHRoID0gMTtcblxuZXhwb3J0IGNvbnN0IHRyaXBWaXNDb25maWdzOiB7XG4gIG9wYWNpdHk6ICdvcGFjaXR5JztcbiAgdGhpY2tuZXNzOiBWaXNDb25maWdOdW1iZXI7XG4gIGNvbG9yUmFuZ2U6ICdjb2xvclJhbmdlJztcbiAgdHJhaWxMZW5ndGg6ICd0cmFpbExlbmd0aCc7XG4gIGZhZGVUcmFpbDogJ2ZhZGVUcmFpbCc7XG4gIGJpbGxib2FyZDogJ2JpbGxib2FyZCc7XG4gIHNpemVSYW5nZTogJ3N0cm9rZVdpZHRoUmFuZ2UnO1xufSA9IHtcbiAgb3BhY2l0eTogJ29wYWNpdHknLFxuICB0aGlja25lc3M6IHtcbiAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICBkZWZhdWx0VmFsdWU6IGRlZmF1bHRUaGlja25lc3MsXG4gICAgbGFiZWw6ICdTdHJva2UgV2lkdGgnLFxuICAgIGlzUmFuZ2VkOiBmYWxzZSxcbiAgICByYW5nZTogWzAsIDEwMF0sXG4gICAgc3RlcDogMC4xLFxuICAgIGdyb3VwOiAnc3Ryb2tlJyxcbiAgICBwcm9wZXJ0eTogJ3RoaWNrbmVzcydcbiAgfSxcbiAgY29sb3JSYW5nZTogJ2NvbG9yUmFuZ2UnLFxuICB0cmFpbExlbmd0aDogJ3RyYWlsTGVuZ3RoJyxcbiAgZmFkZVRyYWlsOiAnZmFkZVRyYWlsJyxcbiAgYmlsbGJvYXJkOiAnYmlsbGJvYXJkJyxcbiAgc2l6ZVJhbmdlOiAnc3Ryb2tlV2lkdGhSYW5nZSdcbn07XG5cbmV4cG9ydCBjb25zdCBmZWF0dXJlQWNjZXNzb3IgPVxuICAoe2dlb2pzb259OiBUcmlwTGF5ZXJDb2x1bW5zQ29uZmlnKSA9PlxuICAoZGM6IERhdGFDb250YWluZXJJbnRlcmZhY2UpID0+XG4gIGQgPT5cbiAgICBkYy52YWx1ZUF0KGQuaW5kZXgsIGdlb2pzb24uZmllbGRJZHgpO1xuZXhwb3J0IGNvbnN0IGZlYXR1cmVSZXNvbHZlciA9ICh7Z2VvanNvbn06IFRyaXBMYXllckNvbHVtbnNDb25maWcpID0+IGdlb2pzb24uZmllbGRJZHg7XG5jb25zdCBnZXRUYWJsZU1vZGVWYWx1ZUFjY2Vzc29yID0gZiA9PiB7XG4gIC8vIENhbGxlZCBmcm9tIGdwdS1maWx0ZXItdXRpbHMuZ2V0RmlsdGVyVmFsdWVBY2Nlc3NvcigpXG4gIHJldHVybiBmaWVsZCA9PiBmLnByb3BlcnRpZXMudmFsdWVzLm1hcCh2ID0+IGZpZWxkLnZhbHVlQWNjZXNzb3IodikpO1xufTtcbmNvbnN0IGdldFRhYmxlTW9kZUZpZWxkVmFsdWUgPSAoZmllbGQsIGRhdGEpID0+IHtcbiAgbGV0IHJ2O1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICBydiA9IGRhdGEoZmllbGQpO1xuICB9IGVsc2Uge1xuICAgIHJ2ID0gZGVmYXVsdEdldEZpZWxkVmFsdWUoZmllbGQsIGRhdGEpO1xuICB9XG4gIHJldHVybiBydjtcbn07XG5cbmV4cG9ydCBjb25zdCBDT0xVTU5fTU9ERV9HRU9KU09OID0gJ2dlb2pzb24nO1xuZXhwb3J0IGNvbnN0IENPTFVNTl9NT0RFX1RBQkxFID0gJ3RhYmxlJztcbmNvbnN0IFNVUFBPUlRFRF9DT0xVTU5fTU9ERVMgPSBbXG4gIHtcbiAgICBrZXk6IENPTFVNTl9NT0RFX0dFT0pTT04sXG4gICAgbGFiZWw6ICdHZW9KU09OJyxcbiAgICByZXF1aXJlZENvbHVtbnM6IFsnZ2VvanNvbiddXG4gIH0sXG4gIHtcbiAgICBrZXk6IENPTFVNTl9NT0RFX1RBQkxFLFxuICAgIGxhYmVsOiAnVGFibGUgY29sdW1ucycsXG4gICAgcmVxdWlyZWRDb2x1bW5zOiBbJ2lkJywgJ2xhdCcsICdsbmcnLCAndGltZXN0YW1wJ10sXG4gICAgb3B0aW9uYWxDb2x1bW5zOiBbJ2FsdGl0dWRlJ11cbiAgfVxuXTtcbmNvbnN0IERFRkFVTFRfQ09MVU1OX01PREUgPSBDT0xVTU5fTU9ERV9HRU9KU09OO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUcmlwTGF5ZXIgZXh0ZW5kcyBMYXllciB7XG4gIGRlY2xhcmUgdmlzQ29uZmlnU2V0dGluZ3M6IFRyaXBMYXllclZpc0NvbmZpZ1NldHRpbmdzO1xuICBkZWNsYXJlIGNvbmZpZzogVHJpcExheWVyQ29uZmlnO1xuICBkZWNsYXJlIG1ldGE6IFRyaXBMYXllck1ldGE7XG4gIGRlY2xhcmUgZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSB8IG51bGw7XG5cbiAgZGF0YVRvRmVhdHVyZTogR2VvanNvbkRhdGFNYXBzO1xuICBkYXRhVG9UaW1lU3RhbXA6IGFueVtdO1xuICBnZXRGZWF0dXJlOiAoY29sdW1uczogVHJpcExheWVyQ29sdW1uc0NvbmZpZykgPT4gKGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UpID0+IGFueTtcbiAgX2xheWVySW5mb01vZGFsOiBSZWNvcmQ8c3RyaW5nLCAoKSA9PiBKU1guRWxlbWVudD47XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLmRhdGFUb0ZlYXR1cmUgPSBbXTtcbiAgICB0aGlzLmRhdGFUb1RpbWVTdGFtcCA9IFtdO1xuICAgIHRoaXMuZGF0YUNvbnRhaW5lciA9IG51bGw7XG4gICAgdGhpcy5yZWdpc3RlclZpc0NvbmZpZyh0cmlwVmlzQ29uZmlncyk7XG4gICAgdGhpcy5nZXRGZWF0dXJlID0gbWVtb2l6ZShmZWF0dXJlQWNjZXNzb3IsIGZlYXR1cmVSZXNvbHZlcik7XG4gICAgdGhpcy5fbGF5ZXJJbmZvTW9kYWwgPSB7XG4gICAgICBbQ09MVU1OX01PREVfVEFCTEVdOiBUcmlwSW5mb01vZGFsRmFjdG9yeShDT0xVTU5fTU9ERV9UQUJMRSksXG4gICAgICBbQ09MVU1OX01PREVfR0VPSlNPTl06IFRyaXBJbmZvTW9kYWxGYWN0b3J5KENPTFVNTl9NT0RFX0dFT0pTT04pXG4gICAgfTtcbiAgfVxuXG4gIGdldCBzdXBwb3J0ZWRDb2x1bW5Nb2RlcygpIHtcbiAgICByZXR1cm4gU1VQUE9SVEVEX0NPTFVNTl9NT0RFUztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdHlwZSgpOiAndHJpcCcge1xuICAgIHJldHVybiAndHJpcCc7XG4gIH1cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIFRyaXBMYXllci50eXBlO1xuICB9XG5cbiAgZ2V0IG5hbWUoKTogJ1RyaXAnIHtcbiAgICByZXR1cm4gJ1RyaXAnO1xuICB9XG5cbiAgZ2V0IGxheWVySWNvbigpIHtcbiAgICByZXR1cm4gVHJpcExheWVySWNvbjtcbiAgfVxuXG4gIGdldCBjb2x1bW5QYWlycygpIHtcbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9pbnRDb2x1bW5QYWlycztcbiAgfVxuXG4gIGFjY2Vzc1ZTRmllbGRWYWx1ZSgpIHtcbiAgICBpZiAodGhpcy5jb25maWcuY29sdW1uTW9kZSA9PT0gQ09MVU1OX01PREVfR0VPSlNPTikge1xuICAgICAgcmV0dXJuIGRlZmF1bHRHZXRGaWVsZFZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0VGFibGVNb2RlRmllbGRWYWx1ZTtcbiAgfVxuXG4gIGdldCB2aXN1YWxDaGFubmVscygpIHtcbiAgICBjb25zdCB2aXN1YWxDaGFubmVscyA9IHN1cGVyLnZpc3VhbENoYW5uZWxzO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnZpc3VhbENoYW5uZWxzLFxuICAgICAgY29sb3I6IHtcbiAgICAgICAgLi4udmlzdWFsQ2hhbm5lbHMuY29sb3IsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0Q29sb3InLFxuICAgICAgICBudWxsVmFsdWU6IHZpc3VhbENoYW5uZWxzLmNvbG9yLm51bGxWYWx1ZSxcbiAgICAgICAgZ2V0QXR0cmlidXRlVmFsdWU6IGNvbmZpZyA9PiBkID0+IGQucHJvcGVydGllcy5saW5lQ29sb3IgfHwgY29uZmlnLmNvbG9yLFxuICAgICAgICAvLyB1c2VkIHRoaXMgdG8gZ2V0IHVwZGF0ZVRyaWdnZXJzXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogY29uZmlnID0+IGNvbmZpZy5jb2xvclxuICAgICAgfSxcbiAgICAgIHNpemU6IHtcbiAgICAgICAgLi4udmlzdWFsQ2hhbm5lbHMuc2l6ZSxcbiAgICAgICAgcHJvcGVydHk6ICdzdHJva2UnLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldFdpZHRoJyxcbiAgICAgICAgY29uZGl0aW9uOiBjb25maWcgPT4gY29uZmlnLnZpc0NvbmZpZy5zdHJva2VkLFxuICAgICAgICBudWxsVmFsdWU6IDAsXG4gICAgICAgIGdldEF0dHJpYnV0ZVZhbHVlOiAoKSA9PiBkID0+IGQucHJvcGVydGllcy5saW5lV2lkdGggfHwgZGVmYXVsdExpbmVXaWR0aFxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBnZXQgYW5pbWF0aW9uRG9tYWluKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5hbmltYXRpb24uZG9tYWluO1xuICB9XG5cbiAgZ2V0IGxheWVySW5mb01vZGFsKCkge1xuICAgIHJldHVybiB7XG4gICAgICBbQ09MVU1OX01PREVfR0VPSlNPTl06IHtcbiAgICAgICAgaWQ6ICdpY29uSW5mbycsXG4gICAgICAgIHRlbXBsYXRlOiB0aGlzLl9sYXllckluZm9Nb2RhbFtDT0xVTU5fTU9ERV9HRU9KU09OXSxcbiAgICAgICAgbW9kYWxQcm9wczoge1xuICAgICAgICAgIHRpdGxlOiAnbW9kYWwudHJpcEluZm8udGl0bGUnXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbQ09MVU1OX01PREVfVEFCTEVdOiB7XG4gICAgICAgIGlkOiAnaWNvbkluZm8nLFxuICAgICAgICB0ZW1wbGF0ZTogdGhpcy5fbGF5ZXJJbmZvTW9kYWxbQ09MVU1OX01PREVfVEFCTEVdLFxuICAgICAgICBtb2RhbFByb3BzOiB7XG4gICAgICAgICAgdGl0bGU6ICdtb2RhbC50cmlwSW5mby50aXRsZVRhYmxlJ1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGdldFBvc2l0aW9uQWNjZXNzb3IoZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5jb2x1bW5Nb2RlID09PSBDT0xVTU5fTU9ERV9HRU9KU09OKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRGZWF0dXJlKHRoaXMuY29uZmlnLmNvbHVtbnMpKGRhdGFDb250YWluZXIpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHN0YXRpYyBmaW5kRGVmYXVsdExheWVyUHJvcHMoXG4gICAge2xhYmVsLCBmaWVsZHMgPSBbXSwgZGF0YUNvbnRhaW5lciwgaWR9OiBLZXBsZXJUYWJsZSxcbiAgICBmb3VuZExheWVycz86IGFueVtdXG4gICkge1xuICAgIGNvbnN0IGdlb2pzb25Db2x1bW5zID0gZmllbGRzLmZpbHRlcihmID0+IGYudHlwZSA9PT0gJ2dlb2pzb24nKS5tYXAoZiA9PiBmLm5hbWUpO1xuXG4gICAgY29uc3QgZGVmYXVsdENvbHVtbnMgPSB7XG4gICAgICBnZW9qc29uOiB1bmlxKFsuLi5HRU9KU09OX0ZJRUxEUy5nZW9qc29uLCAuLi5nZW9qc29uQ29sdW1uc10pXG4gICAgfTtcblxuICAgIGNvbnN0IGdlb0pzb25Db2x1bW5zID0gdGhpcy5maW5kRGVmYXVsdENvbHVtbkZpZWxkKGRlZmF1bHRDb2x1bW5zLCBmaWVsZHMpO1xuXG4gICAgY29uc3QgdHJpcEdlb2pzb25Db2x1bW5zID0gKGdlb0pzb25Db2x1bW5zIHx8IFtdKS5maWx0ZXIoY29sID0+XG4gICAgICBpc1RyaXBHZW9Kc29uRmllbGQoZGF0YUNvbnRhaW5lciwgZmllbGRzW2NvbC5nZW9qc29uLmZpZWxkSWR4XSlcbiAgICApO1xuXG4gICAgaWYgKHRyaXBHZW9qc29uQ29sdW1ucy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHByb3BzOiB0cmlwR2VvanNvbkNvbHVtbnMubWFwKGNvbHVtbnMgPT4gKHtcbiAgICAgICAgICBsYWJlbDogKHR5cGVvZiBsYWJlbCA9PT0gJ3N0cmluZycgJiYgbGFiZWwucmVwbGFjZSgvXFwuW14vLl0rJC8sICcnKSkgfHwgdGhpcy50eXBlLFxuICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgICAgIGNvbHVtbk1vZGU6IENPTFVNTl9NT0RFX0dFT0pTT05cbiAgICAgICAgfSkpLFxuXG4gICAgICAgIC8vIGlmIGEgZ2VvanNvbiBsYXllciBpcyBjcmVhdGVkIGZyb20gdGhpcyBjb2x1bW4sIGRlbGV0ZSBpdFxuICAgICAgICBmb3VuZExheWVyczogZm91bmRMYXllcnM/LmZpbHRlcihcbiAgICAgICAgICBwcm9wID0+XG4gICAgICAgICAgICBwcm9wLnR5cGUgIT09ICdnZW9qc29uJyB8fFxuICAgICAgICAgICAgcHJvcC5kYXRhSWQgIT09IGlkIHx8XG4gICAgICAgICAgICAhdHJpcEdlb2pzb25Db2x1bW5zLmZpbmQoYyA9PiBwcm9wLmNvbHVtbnMuZ2VvanNvbi5uYW1lID09PSBjLmdlb2pzb24ubmFtZSlcbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge3Byb3BzOiBbXX07XG4gIH1cblxuICBnZXREZWZhdWx0TGF5ZXJDb25maWcocHJvcHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VwZXIuZ2V0RGVmYXVsdExheWVyQ29uZmlnKHByb3BzKSxcbiAgICAgIGNvbHVtbk1vZGU6IHByb3BzPy5jb2x1bW5Nb2RlID8/IERFRkFVTFRfQ09MVU1OX01PREUsXG4gICAgICBhbmltYXRpb246IHtcbiAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgZG9tYWluOiBudWxsXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGdldEhvdmVyRGF0YShvYmplY3QsIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UsIGZpZWxkcywgYW5pbWF0aW9uQ29uZmlnKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmNvbHVtbk1vZGUgPT09IENPTFVNTl9NT0RFX0dFT0pTT04pIHtcbiAgICAgIC8vIGluZGV4IGZvciBkYXRhQ29udGFpbmVyIGlzIHNhdmVkIHRvIGZlYXR1cmUucHJvcGVydGllc1xuICAgICAgcmV0dXJuIGRhdGFDb250YWluZXIucm93KG9iamVjdC5wcm9wZXJ0aWVzLmluZGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2ZpbmRDb2x1bW5Nb2RlRGF0dW1Gb3JGZWF0dXJlKG9iamVjdC5wcm9wZXJ0aWVzLmluZGV4LCBhbmltYXRpb25Db25maWcuY3VycmVudFRpbWUpXG4gICAgICA/LmRhdHVtO1xuICB9XG5cbiAgY2FsY3VsYXRlRGF0YUF0dHJpYnV0ZShkYXRhc2V0OiBLZXBsZXJUYWJsZSkge1xuICAgIHN3aXRjaCAodGhpcy5jb25maWcuY29sdW1uTW9kZSkge1xuICAgICAgY2FzZSBDT0xVTU5fTU9ERV9HRU9KU09OOiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgZGF0YXNldC5maWx0ZXJlZEluZGV4XG4gICAgICAgICAgICAubWFwKGkgPT4gdGhpcy5kYXRhVG9GZWF0dXJlW2ldKVxuICAgICAgICAgICAgLy8gVE9ETyBkIGNhbiBiZSBCaW5hcnlGZWF0dXJlQ29sbGVjdGlvbiwgZml4IGxvZ2ljXG4gICAgICAgICAgICAuZmlsdGVyKGQgPT4gZCAmJiAoZCBhcyBhbnkpLmdlb21ldHJ5Py50eXBlID09PSAnTGluZVN0cmluZycpXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgQ09MVU1OX01PREVfVEFCTEU6XG4gICAgICAgIHJldHVybiBhcHBseUZpbHRlcnNUb1RhYmxlQ29sdW1ucyhkYXRhc2V0LCB0aGlzLmRhdGFUb0ZlYXR1cmUpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgZm9ybWF0TGF5ZXJEYXRhKGRhdGFzZXRzOiBEYXRhc2V0cywgb2xkTGF5ZXJEYXRhKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmRhdGFJZCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICAvLyB0by1kbzogcGFyc2Ugc2VnbWVudCBmcm9tIGRhdGFDb250YWluZXJcblxuICAgIGNvbnN0IHtkYXRhQ29udGFpbmVyLCBncHVGaWx0ZXJ9ID0gZGF0YXNldHNbdGhpcy5jb25maWcuZGF0YUlkXTtcbiAgICBjb25zdCB7ZGF0YX0gPSB0aGlzLnVwZGF0ZURhdGEoZGF0YXNldHMsIG9sZExheWVyRGF0YSk7XG5cbiAgICBsZXQgdmFsdWVBY2Nlc3NvcjtcbiAgICBpZiAodGhpcy5jb25maWcuY29sdW1uTW9kZSA9PT0gQ09MVU1OX01PREVfR0VPSlNPTikge1xuICAgICAgdmFsdWVBY2Nlc3NvciA9IChkYzogRGF0YUNvbnRhaW5lckludGVyZmFjZSwgZiwgZmllbGRJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIHJldHVybiBkYy52YWx1ZUF0KGYucHJvcGVydGllcy5pbmRleCwgZmllbGRJbmRleCk7XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZUFjY2Vzc29yID0gZ2V0VGFibGVNb2RlVmFsdWVBY2Nlc3NvcjtcbiAgICB9XG4gICAgY29uc3QgaW5kZXhBY2Nlc3NvciA9IGYgPT4gZi5wcm9wZXJ0aWVzLmluZGV4O1xuICAgIGNvbnN0IGRhdGFBY2Nlc3NvciA9ICgpID0+IGQgPT4gKHtpbmRleDogZC5wcm9wZXJ0aWVzLmluZGV4fSk7XG4gICAgY29uc3QgYWNjZXNzb3JzID0gdGhpcy5nZXRBdHRyaWJ1dGVBY2Nlc3NvcnMoe2RhdGFBY2Nlc3NvciwgZGF0YUNvbnRhaW5lcn0pO1xuICAgIGNvbnN0IGdldEZpbHRlclZhbHVlID0gZ3B1RmlsdGVyLmZpbHRlclZhbHVlQWNjZXNzb3IoZGF0YUNvbnRhaW5lcikoXG4gICAgICBpbmRleEFjY2Vzc29yLFxuICAgICAgdmFsdWVBY2Nlc3NvclxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YSxcbiAgICAgIGdldEZpbHRlclZhbHVlLFxuICAgICAgZ2V0UGF0aDogZCA9PiBkLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgICAgZ2V0VGltZXN0YW1wczogZCA9PiB0aGlzLmRhdGFUb1RpbWVTdGFtcFtkLnByb3BlcnRpZXMuaW5kZXhdLFxuICAgICAgLi4uYWNjZXNzb3JzXG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZUFuaW1hdGlvbkRvbWFpbihkb21haW4pIHtcbiAgICB0aGlzLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICAgIGFuaW1hdGlvbjoge1xuICAgICAgICAuLi50aGlzLmNvbmZpZy5hbmltYXRpb24sXG4gICAgICAgIGRvbWFpblxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlTGF5ZXJNZXRhKGRhdGFzZXQ6IEtlcGxlclRhYmxlKSB7XG4gICAgY29uc3Qge2RhdGFDb250YWluZXJ9ID0gZGF0YXNldDtcbiAgICBsZXQgZ2V0RmVhdHVyZTtcbiAgICBpZiAodGhpcy5jb25maWcuY29sdW1uTW9kZSA9PT0gQ09MVU1OX01PREVfR0VPSlNPTikge1xuICAgICAgZ2V0RmVhdHVyZSA9IHRoaXMuZ2V0UG9zaXRpb25BY2Nlc3NvcihkYXRhQ29udGFpbmVyKTtcbiAgICAgIGlmIChnZXRGZWF0dXJlID09PSB0aGlzLm1ldGEuZ2V0RmVhdHVyZSkge1xuICAgICAgICAvLyBUT0RPOiByZXZpc2l0IHRoaXMgYWZ0ZXIgZ3B1IGZpbHRlcmluZ1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmRhdGFUb0ZlYXR1cmUgPSBnZXRHZW9qc29uRGF0YU1hcHMoZGF0YUNvbnRhaW5lciwgZ2V0RmVhdHVyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0YUNvbnRhaW5lciA9IGRhdGFDb250YWluZXI7XG4gICAgICB0aGlzLmRhdGFUb0ZlYXR1cmUgPSBncm91cENvbHVtbnNBc0dlb0pzb24oZGF0YUNvbnRhaW5lciwgdGhpcy5jb25maWcuY29sdW1ucywgJ3RpbWVzdGFtcCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHtkYXRhVG9UaW1lU3RhbXAsIGFuaW1hdGlvbkRvbWFpbn0gPSBwYXJzZVRyaXBHZW9Kc29uVGltZXN0YW1wKHRoaXMuZGF0YVRvRmVhdHVyZSk7XG5cbiAgICB0aGlzLmRhdGFUb1RpbWVTdGFtcCA9IGRhdGFUb1RpbWVTdGFtcDtcbiAgICB0aGlzLnVwZGF0ZUFuaW1hdGlvbkRvbWFpbihhbmltYXRpb25Eb21haW4pO1xuXG4gICAgLy8gZ2V0IGJvdW5kcyBmcm9tIGZlYXR1cmVzXG4gICAgY29uc3QgYm91bmRzID0gZ2V0R2VvanNvbkJvdW5kcyh0aGlzLmRhdGFUb0ZlYXR1cmUpO1xuXG4gICAgLy8ga2VlcCBhIHJlY29yZCBvZiB3aGF0IHR5cGUgb2YgZ2VvbWV0cnkgdGhlIGNvbGxlY3Rpb24gaGFzXG4gICAgY29uc3QgZmVhdHVyZVR5cGVzID0gZ2V0R2VvanNvbkZlYXR1cmVUeXBlcyh0aGlzLmRhdGFUb0ZlYXR1cmUpO1xuXG4gICAgdGhpcy51cGRhdGVNZXRhKHtib3VuZHMsIGZlYXR1cmVUeXBlcywgZ2V0RmVhdHVyZX0pO1xuICB9XG5cbiAgc2V0SW5pdGlhbExheWVyQ29uZmlnKGRhdGFzZXQpIHtcbiAgICBjb25zdCB7ZGF0YUNvbnRhaW5lcn0gPSBkYXRhc2V0O1xuICAgIGlmICghZGF0YUNvbnRhaW5lci5udW1Sb3dzKCkpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIGRlZmVmYXVsdExheWVyUHJvcHMgd2lsbCBhdXRvbWF0aWNhbGx5IGZpbmQgZ2VvanNvbiBjb2x1bW5cbiAgICAvLyBpZiBub3QgZm91bmQsIHdlIHRyeSB0byBzZXQgaXQgdG8gaWQgLyBsYXQgL2xuZyAvdHNcbiAgICBpZiAoIXRoaXMuY29uZmlnLmNvbHVtbnMuZ2VvanNvbi52YWx1ZSkge1xuICAgICAgLy8gZmluZCBjb2x1bW5zIGZyb20gbGF0LCBsbmcsIGlkLCBhbmQgdHNcbiAgICAgIGNvbnN0IGNvbHVtbkNvbmZpZyA9IGRldGVjdFRhYmxlQ29sdW1ucyhkYXRhc2V0LCB0aGlzLmNvbmZpZy5jb2x1bW5zKTtcbiAgICAgIGlmIChjb2x1bW5Db25maWcpIHtcbiAgICAgICAgdGhpcy51cGRhdGVMYXllckNvbmZpZyh7XG4gICAgICAgICAgLi4uY29sdW1uQ29uZmlnLFxuICAgICAgICAgIGNvbHVtbk1vZGU6IENPTFVNTl9NT0RFX1RBQkxFXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVMYXllck1ldGEoZGF0YXNldCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICByZW5kZXJMYXllcihvcHRzKSB7XG4gICAgY29uc3Qge2RhdGEsIGdwdUZpbHRlciwgbWFwU3RhdGUsIGFuaW1hdGlvbkNvbmZpZ30gPSBvcHRzO1xuICAgIGNvbnN0IHt2aXNDb25maWd9ID0gdGhpcy5jb25maWc7XG4gICAgY29uc3Qgem9vbUZhY3RvciA9IHRoaXMuZ2V0Wm9vbUZhY3RvcihtYXBTdGF0ZSk7XG4gICAgY29uc3QgaXNWYWxpZFRpbWUgPVxuICAgICAgYW5pbWF0aW9uQ29uZmlnICYmXG4gICAgICBBcnJheS5pc0FycmF5KGFuaW1hdGlvbkNvbmZpZy5kb21haW4pICYmXG4gICAgICBhbmltYXRpb25Db25maWcuZG9tYWluLmV2ZXJ5KE51bWJlci5pc0Zpbml0ZSkgJiZcbiAgICAgIE51bWJlci5pc0Zpbml0ZShhbmltYXRpb25Db25maWcuY3VycmVudFRpbWUpO1xuXG4gICAgaWYgKCFpc1ZhbGlkVGltZSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGRvbWFpbjAgPSBhbmltYXRpb25Db25maWcuZG9tYWluPy5bMF07XG5cbiAgICBjb25zdCBncHVGaWx0ZXJVcGRhdGVUcmlnZ2VycyA9IHtnZXRGaWx0ZXJWYWx1ZTogZ3B1RmlsdGVyLmZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnN9O1xuICAgIGNvbnN0IHVwZGF0ZVRyaWdnZXJzID0ge1xuICAgICAgLi4udGhpcy5nZXRWaXN1YWxDaGFubmVsVXBkYXRlVHJpZ2dlcnMoKSxcbiAgICAgIGdldFRpbWVzdGFtcHM6IHtcbiAgICAgICAgY29sdW1uczogdGhpcy5jb25maWcuY29sdW1ucyxcbiAgICAgICAgZG9tYWluMFxuICAgICAgfSxcbiAgICAgIC4uLmdwdUZpbHRlclVwZGF0ZVRyaWdnZXJzXG4gICAgfTtcbiAgICBjb25zdCBkZWZhdWx0TGF5ZXJQcm9wcyA9IHRoaXMuZ2V0RGVmYXVsdERlY2tMYXllclByb3BzKG9wdHMpO1xuXG4gICAgY29uc3QgYmlsbGJvYXJkV2lkdGhGYWN0b3IgPSB2aXNDb25maWcuYmlsbGJvYXJkID8gUFJPSkVDVEVEX1BJWEVMX1NJWkVfTVVMVElQTElFUiA6IDE7XG5cbiAgICBjb25zdCBsYXllclByb3BzID0ge1xuICAgICAgLi4uZGVmYXVsdExheWVyUHJvcHMsXG4gICAgICAuLi5kYXRhLFxuICAgICAgZ2V0VGltZXN0YW1wczogZCA9PiAoZGF0YS5nZXRUaW1lc3RhbXBzKGQpIHx8IFtdKS5tYXAodHMgPT4gdHMgLSBkb21haW4wKSxcbiAgICAgIHdpZHRoU2NhbGU6IHZpc0NvbmZpZy50aGlja25lc3MgKiB6b29tRmFjdG9yICogem9vbUZhY3RvclZhbHVlICogYmlsbGJvYXJkV2lkdGhGYWN0b3IsXG4gICAgICBjYXBSb3VuZGVkOiB0cnVlLFxuICAgICAgam9pbnRSb3VuZGVkOiB0cnVlLFxuICAgICAgd3JhcExvbmdpdHVkZTogZmFsc2UsXG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgIGRlcHRoVGVzdDogbWFwU3RhdGUuZHJhZ1JvdGF0ZSxcbiAgICAgICAgZGVwdGhNYXNrOiBmYWxzZVxuICAgICAgfSxcbiAgICAgIHRyYWlsTGVuZ3RoOiB2aXNDb25maWcudHJhaWxMZW5ndGggKiAxMDAwLFxuICAgICAgZmFkZVRyYWlsOiB2aXNDb25maWcuZmFkZVRyYWlsLFxuICAgICAgYmlsbGJvYXJkOiB2aXNDb25maWcuYmlsbGJvYXJkLFxuICAgICAgLy8gVE9ETzogZ2l1c2VwcGUgdGhpcyB2YWx1ZXMgYmVjb21lcyBuZWdhdGl2ZVxuICAgICAgY3VycmVudFRpbWU6IGFuaW1hdGlvbkNvbmZpZy5jdXJyZW50VGltZSAtIGRvbWFpbjAsXG4gICAgICB1cGRhdGVUcmlnZ2VycyxcbiAgICAgIGlkOiBgJHtkZWZhdWx0TGF5ZXJQcm9wcy5pZH0ke21hcFN0YXRlLmdsb2JlPy5lbmFibGVkID8gJy1nbG9iZScgOiAnJ31gXG4gICAgfTtcbiAgICByZXR1cm4gW25ldyBEZWNrR0xUcmlwc0xheWVyKGxheWVyUHJvcHMpXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyBjb29yZGluYXRlcyBhbmQgZGF0dW0gYXQgdGhlIGN1cnJlbnQgYW5pbWF0aW9uIHRpbWUgYnkgdGhlIHNwZWNpZmllZCBmZWF0dXJlIGluZGV4LlxuICAgKiBAcGFyYW0gZmVhdHVyZUluZGV4XG4gICAqIEBwYXJhbSB0aW1lXG4gICAqIEByZXR1cm5zIHt7ZGF0dW06IChudWxsfHN0cmluZ3wqKSwgaWR4OiAqLCBjb29yZHN9fHtkYXR1bTogbnVsbCwgaWR4OiBudW1iZXIsIGNvb3JkczogbnVsbH19XG4gICAqL1xuICBwcml2YXRlIF9maW5kQ29sdW1uTW9kZURhdHVtRm9yRmVhdHVyZShcbiAgICBmZWF0dXJlSW5kZXg6IG51bWJlcixcbiAgICB0aW1lOiBudW1iZXJcbiAgKToge1xuICAgIGlkeDogbnVtYmVyO1xuICAgIGNvb3JkczogbnVtYmVyW10gfCBudWxsO1xuICAgIGRhdHVtOiBhbnk7XG4gIH0ge1xuICAgIGlmICh0aGlzLmNvbmZpZy5jb2x1bW5Nb2RlID09PSBDT0xVTU5fTU9ERV9UQUJMRSkge1xuICAgICAgY29uc3Qgb2JqZWN0ID0gdGhpcy5kYXRhVG9GZWF0dXJlW2ZlYXR1cmVJbmRleF07XG4gICAgICBjb25zdCBpZHggPSBiaXNlY3RSaWdodCh0aGlzLmRhdGFUb1RpbWVTdGFtcFtmZWF0dXJlSW5kZXhdLCB0aW1lKTtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgdHlwZSBnZW9tZXRyeT9cbiAgICAgIGNvbnN0IHtjb29yZGluYXRlc30gPSBvYmplY3Q/Lmdlb21ldHJ5IHx8IHtjb29yZGluYXRlczogW119O1xuICAgICAgaWYgKGlkeCA+PSAwICYmIGlkeCA8IGNvb3JkaW5hdGVzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBjb29yZHMgPSBjb29yZGluYXRlc1tpZHhdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlkeCxcbiAgICAgICAgICBjb29yZHMsXG4gICAgICAgICAgZGF0dW06IGNvb3Jkcz8uZGF0dW1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkeDogLTEsXG4gICAgICBjb29yZHM6IG51bGwsXG4gICAgICBkYXR1bTogbnVsbFxuICAgIH07XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFVBQUEsR0FBQUMsdUJBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLFVBQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLFVBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLGNBQUEsR0FBQVAsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFPLGFBQUEsR0FB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
|
|
@@ -3,6 +3,7 @@ import { KeplerTable as KeplerDataset, Datasets as KeplerDatasets, GpuFilter } f
|
|
|
3
3
|
import { AnimationConfig, Field, BindedLayerCallbacks, VisConfigBoolean, VisConfigRange, VisConfigColorRange, VisConfigNumber, VisConfigColorSelect, LayerColorConfig, LayerHeightConfig, Filter, Field as KeplerField, MapState, Merge } from '@kepler.gl/types';
|
|
4
4
|
import { default as KeplerLayer, LayerBaseConfig, LayerBaseConfigPartial, VisualChannel, VisualChannelDomain, VisualChannelField } from '../base-layer';
|
|
5
5
|
import TileDataset from './common-tile/tile-dataset';
|
|
6
|
+
import { FindDefaultLayerPropsReturnValue } from '../layer-utils';
|
|
6
7
|
export declare const DEFAULT_RADIUS = 1;
|
|
7
8
|
export declare type AbstractTileLayerVisConfigSettings = {
|
|
8
9
|
strokeColor: VisConfigColorSelect;
|
|
@@ -22,6 +23,7 @@ export declare type AbstractTileLayerVisConfigSettings = {
|
|
|
22
23
|
export declare type LayerData = {
|
|
23
24
|
minZoom?: number;
|
|
24
25
|
maxZoom?: number;
|
|
26
|
+
bounds?: number[];
|
|
25
27
|
getPointRadius?: () => number;
|
|
26
28
|
};
|
|
27
29
|
export declare type LayerOpts = {
|
|
@@ -97,13 +99,7 @@ export default abstract class AbstractTileLayer<T, I extends Iterable<any> = T e
|
|
|
97
99
|
protected tileDataset: TileDataset<T, I>;
|
|
98
100
|
protected setLayerDomain: BindedLayerCallbacks['onSetLayerDomain'];
|
|
99
101
|
protected abstract initTileDataset(): TileDataset<T, I>;
|
|
100
|
-
static findDefaultLayerProps(dataset: KeplerDataset):
|
|
101
|
-
props: {
|
|
102
|
-
dataId: string;
|
|
103
|
-
label?: string;
|
|
104
|
-
isVisible: boolean;
|
|
105
|
-
}[];
|
|
106
|
-
};
|
|
102
|
+
static findDefaultLayerProps(dataset: KeplerDataset): FindDefaultLayerPropsReturnValue;
|
|
107
103
|
get requireData(): boolean;
|
|
108
104
|
get requiredLayerColumns(): string[];
|
|
109
105
|
get visualChannels(): Record<string, VisualChannel>;
|
|
@@ -343,11 +343,12 @@ var AbstractTileLayer = exports["default"] = /*#__PURE__*/function (_KeplerLayer
|
|
|
343
343
|
indexKey: indexKey
|
|
344
344
|
});
|
|
345
345
|
var metadata = dataset === null || dataset === void 0 ? void 0 : dataset.metadata;
|
|
346
|
-
|
|
347
|
-
minZoom: metadata.minZoom
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
} : {}
|
|
346
|
+
var metadataToData = metadata ? {
|
|
347
|
+
minZoom: metadata.minZoom,
|
|
348
|
+
maxZoom: metadata.maxZoom,
|
|
349
|
+
bounds: metadata.bounds
|
|
350
|
+
} : {};
|
|
351
|
+
return _objectSpread(_objectSpread({}, metadataToData), accessors);
|
|
351
352
|
}
|
|
352
353
|
}, {
|
|
353
354
|
key: "getGpuFilterValueAccessor",
|
|
@@ -382,4 +383,4 @@ var AbstractTileLayer = exports["default"] = /*#__PURE__*/function (_KeplerLayer
|
|
|
382
383
|
}
|
|
383
384
|
}]);
|
|
384
385
|
}(_baseLayer["default"]);
|
|
385
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29tbW9uVXRpbHMiLCJfY29uc3RhbnRzIiwiX3RhYmxlIiwiX3V0aWxzIiwiX2Jhc2VMYXllciIsIl90aWxlVXRpbHMiLCJfY2FsbFN1cGVyIiwidCIsIm8iLCJlIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJhcHBseSIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiY2FsbCIsIl9zdXBlclByb3BHZXQiLCJyIiwicCIsIl9nZXQyIiwib3duS2V5cyIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJERUZBVUxUX0VMRVZBVElPTiIsIkRFRkFVTFRfUkFESVVTIiwiZXhwb3J0cyIsImNvbW1vblRpbGVWaXNDb25maWdzIiwic3Ryb2tlQ29sb3IiLCJzdHJva2VPcGFjaXR5IiwiTEFZRVJfVklTX0NPTkZJR1MiLCJvcGFjaXR5IiwicHJvcGVydHkiLCJyYWRpdXMiLCJyYW5nZSIsInN0ZXAiLCJkZWZhdWx0VmFsdWUiLCJhbGxvd0N1c3RvbVZhbHVlIiwicmFkaXVzVW5pdHMiLCJ0eXBlIiwibGFiZWwiLCJncm91cCIsImRlc2NyaXB0aW9uIiwiZW5hYmxlM2QiLCJzdHJva2VkIiwidHJhbnNpdGlvbiIsImhlaWdodFJhbmdlIiwiZWxldmF0aW9uU2NhbGUiLCJjb2xvclJhbmdlIiwicmFkaXVzQnlab29tIiwiZW5hYmxlZCIsInN0b3BzIiwiZHluYW1pY0NvbG9yIiwiQWJzdHJhY3RUaWxlTGF5ZXIiLCJfS2VwbGVyTGF5ZXIiLCJwcm9wcyIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsInVuZGVmaW5lZCIsInRpbGVzIiwidGlsZURhdGFzZXQiLCJ1cGRhdGVUaWxlcyIsImNvbmZpZyIsInZpc0NvbmZpZyIsInNldER5bmFtaWNDb2xvckRvbWFpbiIsInRocm90dGxlIiwiX3RoaXMyIiwic2V0TGF5ZXJEb21haW4iLCJmaWVsZCIsImNvbG9yRmllbGQiLCJjb2xvckRvbWFpbiIsImNvbG9yU2NhbGUiLCJTQ0FMRV9UWVBFUyIsInF1YW50aXplIiwiX3RpbGVEYXRhc2V0JGdldEV4dGVuIiwiZ2V0RXh0ZW50IiwiX3RpbGVEYXRhc2V0JGdldEV4dGVuMiIsIl9zbGljZWRUb0FycmF5MiIsIm1pbiIsIm1heCIsIkFycmF5IiwiaXNBcnJheSIsImRvbWFpbiIsInF1YW50aWxlIiwiZ2V0UXVhbnRpbGVTYW1wbGUiLCJvcmRpbmFsIiwiZ2V0VW5pcXVlVmFsdWVzIiwicmVnaXN0ZXJWaXNDb25maWciLCJpbml0VGlsZURhdGFzZXQiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsImdldCIsImNvbG9yIiwiYWNjZXNzb3IiLCJoZWlnaHQiLCJzY2FsZSIsImNoYW5uZWxTY2FsZVR5cGUiLCJjb25kaXRpb24iLCJudWxsVmFsdWUiLCJ2YWx1ZSIsImFjY2Vzc1ZTRmllbGRWYWx1ZSIsImlucHV0RmllbGQiLCJpbmRleEtleSIsImFjY2Vzc1Jvd1ZhbHVlIiwiZ2V0U2NhbGVPcHRpb25zIiwiY2hhbm5lbEtleSIsIl9maWVsZCRmaWx0ZXJQcm9wcyIsImNoYW5uZWwiLCJ2aXN1YWxDaGFubmVscyIsImlzRG9tYWluUXVhbnRpbGVzIiwiZmlsdGVyUHJvcHMiLCJkb21haW5RdWFudGlsZXMiLCJjdXN0b20iLCJsaW5lYXIiLCJyZXNldENvbG9yRG9tYWluIiwiX3RoaXMkc2V0TGF5ZXJEb21haW4iLCJfdGhpcyRtZXRhIiwibWV0YSIsImRhdGFzZXRJZCIsImRhdGFzZXRzIiwidXBkYXRlTGF5ZXJWaXN1YWxDaGFubmVsIiwidXBkYXRlTGF5ZXJDb25maWciLCJuZXdDb25maWciLCJfdGhpcyRjb25maWckdmlzQ29uZmkiLCJfbmV3Q29uZmlnJHZpc0NvbmZpZyQiLCJfbmV3Q29uZmlnJHZpc0NvbmZpZyIsIl90aGlzMyIsIm9sZCIsIm5leHQiLCJzY2FsZVR5cGVDaGFuZ2VkIiwic2V0VGltZW91dCIsImFuaW1hdGlvbiIsInNldEluaXRpYWxMYXllckNvbmZpZyIsImRhdGFzZXQiLCJkZWZhdWx0Q29sb3JGaWVsZCIsImZpbmREZWZhdWx0Q29sb3JGaWVsZCIsImdldERlZmF1bHRMYXllckNvbmZpZyIsImhlaWdodEZpZWxkIiwiaGVpZ2h0RG9tYWluIiwiaGVpZ2h0U2NhbGUiLCJzaG91bGRSZW5kZXJMYXllciIsImlzVmlzaWJsZSIsInVwZGF0ZUFuaW1hdGlvbkRvbWFpbkJ5RmllbGQiLCJpc0luZGV4ZWRGaWVsZCIsImluZGV4QnkiLCJBTExfRklFTERfVFlQRVMiLCJ0aW1lc3RhbXAiLCJ0aW1lRG9tYWluIiwic3RhcnRUaW1lIiwidXBkYXRlQW5pbWF0aW9uRG9tYWluIiwidXBkYXRlTGF5ZXJEb21haW4iLCJuZXdGaWx0ZXIiLCJfdGhpczQiLCJpbnZhbGlkYXRlQ2FjaGUiLCJmb3JtYXRMYXllckRhdGEiLCJvbGRMYXllckRhdGEiLCJhbmltYXRpb25Db25maWciLCJkYXRhSWQiLCJub3ROdWxsb3JVbmRlZmluZWQiLCJkYXRhVXBkYXRlVHJpZ2dlcnMiLCJnZXREYXRhVXBkYXRlVHJpZ2dlcnMiLCJ0cmlnZ2VyQ2hhbmdlZCIsImdldENoYW5nZWRUcmlnZ2VycyIsImdldE1ldGEiLCJ1cGRhdGVMYXllck1ldGEiLCJjdXJyZW50VGltZSIsImFjY2Vzc29ycyIsImdldEF0dHJpYnV0ZUFjY2Vzc29ycyIsImRhdGFBY2Nlc3NvciIsImQiLCJkYXRhQ29udGFpbmVyIiwibWV0YWRhdGEiLCJtaW5ab29tIiwibWF4Wm9vbSIsImdldEdwdUZpbHRlclZhbHVlQWNjZXNzb3IiLCJfcmVmIiwiX3RoaXM1IiwiZ3B1RmlsdGVyIiwidmFsdWVBY2Nlc3NvciIsImZpbHRlclZhbHVlQWNjZXNzb3IiLCJmaW5kRGVmYXVsdExheWVyUHJvcHMiLCJpc1RpbGVEYXRhc2V0IiwibmV3TGF5ZXJQcm9wIiwiaWQiLCJLZXBsZXJMYXllciJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZWN0b3ItdGlsZS9hYnN0cmFjdC10aWxlLWxheWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB0aHJvdHRsZSBmcm9tICdsb2Rhc2gudGhyb3R0bGUnO1xuXG5pbXBvcnQge25vdE51bGxvclVuZGVmaW5lZH0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHtTQ0FMRV9UWVBFUywgQUxMX0ZJRUxEX1RZUEVTLCBMQVlFUl9WSVNfQ09ORklHU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgaXNUaWxlRGF0YXNldCxcbiAgS2VwbGVyVGFibGUgYXMgS2VwbGVyRGF0YXNldCxcbiAgRGF0YXNldHMgYXMgS2VwbGVyRGF0YXNldHMsXG4gIEdwdUZpbHRlclxufSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB7XG4gIEFuaW1hdGlvbkNvbmZpZyxcbiAgRmllbGQsXG4gIEJpbmRlZExheWVyQ2FsbGJhY2tzLFxuICBWaXNDb25maWdCb29sZWFuLFxuICBWaXNDb25maWdSYW5nZSxcbiAgVmlzQ29uZmlnQ29sb3JSYW5nZSxcbiAgVmlzQ29uZmlnTnVtYmVyLFxuICBWaXNDb25maWdDb2xvclNlbGVjdCxcbiAgTGF5ZXJDb2xvckNvbmZpZyxcbiAgTGF5ZXJIZWlnaHRDb25maWcsXG4gIEZpbHRlcixcbiAgRmllbGQgYXMgS2VwbGVyRmllbGQsXG4gIE1hcFN0YXRlLFxuICBNZXJnZSxcbiAgWm9vbVN0b3BzQ29uZmlnXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtmaW5kRGVmYXVsdENvbG9yRmllbGQsIERhdGFDb250YWluZXJJbnRlcmZhY2V9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuXG5pbXBvcnQge1xuICBkZWZhdWx0IGFzIEtlcGxlckxheWVyLFxuICBMYXllckJhc2VDb25maWcsXG4gIExheWVyQmFzZUNvbmZpZ1BhcnRpYWwsXG4gIFZpc3VhbENoYW5uZWwsXG4gIFZpc3VhbENoYW5uZWxEb21haW4sXG4gIFZpc3VhbENoYW5uZWxGaWVsZFxufSBmcm9tICcuLi9iYXNlLWxheWVyJztcbmltcG9ydCBUaWxlRGF0YXNldCBmcm9tICcuL2NvbW1vbi10aWxlL3RpbGUtZGF0YXNldCc7XG5pbXBvcnQge2lzSW5kZXhlZEZpZWxkLCBpc0RvbWFpblF1YW50aWxlc30gZnJvbSAnLi9jb21tb24tdGlsZS90aWxlLXV0aWxzJztcblxuY29uc3QgREVGQVVMVF9FTEVWQVRJT04gPSA1MDA7XG5leHBvcnQgY29uc3QgREVGQVVMVF9SQURJVVMgPSAxO1xuXG5leHBvcnQgdHlwZSBBYnN0cmFjdFRpbGVMYXllclZpc0NvbmZpZ1NldHRpbmdzID0ge1xuICBzdHJva2VDb2xvcjogVmlzQ29uZmlnQ29sb3JTZWxlY3Q7XG4gIHN0cm9rZU9wYWNpdHk6IFZpc0NvbmZpZ051bWJlcjtcbiAgcmFkaXVzOiBWaXNDb25maWdOdW1iZXI7XG4gIHJhZGl1c1VuaXRzOiBWaXNDb25maWdCb29sZWFuO1xuICBlbmFibGUzZDogVmlzQ29uZmlnQm9vbGVhbjtcbiAgc3Ryb2tlZDogVmlzQ29uZmlnQm9vbGVhbjtcbiAgdHJhbnNpdGlvbjogVmlzQ29uZmlnQm9vbGVhbjtcbiAgaGVpZ2h0UmFuZ2U6IFZpc0NvbmZpZ1JhbmdlO1xuICBlbGV2YXRpb25TY2FsZTogVmlzQ29uZmlnTnVtYmVyO1xuICBvcGFjaXR5OiBWaXNDb25maWdOdW1iZXI7XG4gIGNvbG9yUmFuZ2U6IFZpc0NvbmZpZ0NvbG9yUmFuZ2U7XG4gIC8vIFRPRE86IGZpZ3VyZSBvdXQgdHlwZSBmb3IgcmFkaXVzQnlab29tIHZpcyBjb25maWdcbiAgcmFkaXVzQnlab29tOiBhbnk7XG4gIGR5bmFtaWNDb2xvcjogVmlzQ29uZmlnQm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIExheWVyRGF0YSA9IHtcbiAgbWluWm9vbT86IG51bWJlcjtcbiAgbWF4Wm9vbT86IG51bWJlcjtcbiAgZ2V0UG9pbnRSYWRpdXM/OiAoKSA9PiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBMYXllck9wdHMgPSB7XG4gIGlkeDogbnVtYmVyO1xuICBtYXBTdGF0ZTogTWFwU3RhdGU7XG4gIGRhdGE6IExheWVyRGF0YTtcbiAgZ3B1RmlsdGVyOiBHcHVGaWx0ZXI7XG4gIGFuaW1hdGlvbkNvbmZpZzogQW5pbWF0aW9uQ29uZmlnO1xuICB0aWxlc2V0RGF0YVVybD86IHN0cmluZyB8IG51bGw7XG4gIGxheWVyQ2FsbGJhY2tzOiBCaW5kZWRMYXllckNhbGxiYWNrcztcbn07XG5cbmV4cG9ydCBjb25zdCBjb21tb25UaWxlVmlzQ29uZmlncyA9IHtcbiAgc3Ryb2tlQ29sb3I6ICdzdHJva2VDb2xvcicgYXMgY29uc3QsXG4gIHN0cm9rZU9wYWNpdHk6IHtcbiAgICAuLi5MQVlFUl9WSVNfQ09ORklHUy5vcGFjaXR5LFxuICAgIHByb3BlcnR5OiAnc3Ryb2tlT3BhY2l0eSdcbiAgfSxcbiAgcmFkaXVzOiB7XG4gICAgLi4uTEFZRVJfVklTX0NPTkZJR1MucmFkaXVzLFxuICAgIHJhbmdlOiBbMC4xLCAxMDBdLFxuICAgIHN0ZXA6IDAuMSxcbiAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfUkFESVVTLFxuICAgIGFsbG93Q3VzdG9tVmFsdWU6IGZhbHNlXG4gIH0gYXMgVmlzQ29uZmlnTnVtYmVyLFxuICByYWRpdXNVbml0czoge1xuICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgbGFiZWw6ICdSYWRpdXMgaW4gcGl4ZWxzJyxcbiAgICBncm91cDogJycsXG4gICAgcHJvcGVydHk6ICdyYWRpdXNVbml0cycsXG4gICAgZGVzY3JpcHRpb246ICdSYWRpdXMgaW4gcGl4ZWxzIG9yIGluIG1ldGVycydcbiAgfSBhcyBWaXNDb25maWdCb29sZWFuLFxuICBlbmFibGUzZDogJ2VuYWJsZTNkJyBhcyBjb25zdCxcbiAgc3Ryb2tlZDoge1xuICAgIC4uLkxBWUVSX1ZJU19DT05GSUdTLnN0cm9rZWQsXG4gICAgZGVmYXVsdFZhbHVlOiBmYWxzZVxuICB9LFxuICB0cmFuc2l0aW9uOiB7XG4gICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgbGFiZWw6ICdUcmFuc2l0aW9uJyxcbiAgICBncm91cDogJycsXG4gICAgcHJvcGVydHk6ICd0cmFuc2l0aW9uJyxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdTbW9vdGhlciB0cmFuc2l0aW9uIGR1cmluZyBhbmltYXRpb24gKGVuYWJsZSB0cmFuc2l0aW9uIHdpbGwgZGVjcmVhc2UgcGVyZm9ybWFuY2UpJ1xuICB9IGFzIFZpc0NvbmZpZ0Jvb2xlYW4sXG4gIGhlaWdodFJhbmdlOiAnZWxldmF0aW9uUmFuZ2UnIGFzIGNvbnN0LFxuICBlbGV2YXRpb25TY2FsZTogey4uLkxBWUVSX1ZJU19DT05GSUdTLmVsZXZhdGlvblNjYWxlLCBhbGxvd0N1c3RvbVZhbHVlOiBmYWxzZX0sXG4gIG9wYWNpdHk6ICdvcGFjaXR5JyBhcyBjb25zdCxcbiAgY29sb3JSYW5nZTogJ2NvbG9yUmFuZ2UnIGFzIGNvbnN0LFxuICAvLyBUT0RPOiBmaWd1cmUgb3V0IHR5cGUgZm9yIHJhZGl1c0J5Wm9vbSB2aXMgY29uZmlnXG4gIHJhZGl1c0J5Wm9vbToge1xuICAgIC4uLkxBWUVSX1ZJU19DT05GSUdTLnJhZGl1cyxcbiAgICBkZWZhdWx0VmFsdWU6IHtcbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgc3RvcHM6IG51bGxcbiAgICB9IGFzIFpvb21TdG9wc0NvbmZpZ1xuICB9IGFzIGFueSxcbiAgZHluYW1pY0NvbG9yOiB7XG4gICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgbGFiZWw6ICdEeW5hbWljIENvbG9yJyxcbiAgICBncm91cDogJycsXG4gICAgcHJvcGVydHk6ICdkeW5hbWljQ29sb3InLFxuICAgIGRlc2NyaXB0aW9uOiAnVXNlIGEgZHluYW1pYyBjb2xvciBzY2FsZSBiYXNlZCBvbiBkYXRhIHZpc2libGUgaW4gdGhlIHZpZXdwb3J0J1xuICB9IGFzIFZpc0NvbmZpZ0Jvb2xlYW5cbn07XG5cbmV4cG9ydCB0eXBlIEFic3RyYWN0VGlsZUxheWVyQ29uZmlnID0gTWVyZ2U8XG4gIExheWVyQmFzZUNvbmZpZyxcbiAge2NvbG9yRmllbGQ/OiBWaXN1YWxDaGFubmVsRmllbGQ7IGNvbG9yU2NhbGU/OiBzdHJpbmc7IGNvbG9yRG9tYWluPzogVmlzdWFsQ2hhbm5lbERvbWFpbn1cbj47XG5cbi8qKlxuICogQWJzdHJhY3QgdGlsZSBsYXllciwgaW5jbHVkaW5nIGNvbW1vbiBmdW5jdGlvbmFsaXR5IGZvciB2aWV3cG9ydC1iYXNlZCBkYXRhc2V0cyxcbiAqIGR5bmFtaWMgc2NhbGVzLCBhbmQgdGlsZS1iYXNlZCBhbmltYXRpb25cbiAqL1xuZXhwb3J0IGRlZmF1bHQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RUaWxlTGF5ZXI8XG4gIC8vIFR5cGUgb2YgdGhlIHRpbGUgaXRzZWxmXG4gIFQsXG4gIC8vIFR5cGUgb2YgdGhlIGl0ZXJhYmxlIGRhdGEgb2JqZWN0XG4gIEkgZXh0ZW5kcyBJdGVyYWJsZTxhbnk+ID0gVCBleHRlbmRzIEl0ZXJhYmxlPGFueT4gPyBUIDogbmV2ZXJcbj4gZXh0ZW5kcyBLZXBsZXJMYXllciB7XG4gIGRlY2xhcmUgY29uZmlnOiBBYnN0cmFjdFRpbGVMYXllckNvbmZpZztcbiAgZGVjbGFyZSB2aXNDb25maWdTZXR0aW5nczogQWJzdHJhY3RUaWxlTGF5ZXJWaXNDb25maWdTZXR0aW5ncztcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogQ29uc3RydWN0b3JQYXJhbWV0ZXJzPHR5cGVvZiBLZXBsZXJMYXllcj5bMF0pIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5yZWdpc3RlclZpc0NvbmZpZyhjb21tb25UaWxlVmlzQ29uZmlncyk7XG4gICAgdGhpcy50aWxlRGF0YXNldCA9IHRoaXMuaW5pdFRpbGVEYXRhc2V0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdGlsZURhdGFzZXQ6IFRpbGVEYXRhc2V0PFQsIEk+O1xuICBwcm90ZWN0ZWQgc2V0TGF5ZXJEb21haW46IEJpbmRlZExheWVyQ2FsbGJhY2tzWydvblNldExheWVyRG9tYWluJ10gPSB1bmRlZmluZWQ7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGluaXRUaWxlRGF0YXNldCgpOiBUaWxlRGF0YXNldDxULCBJPjtcblxuICBzdGF0aWMgZmluZERlZmF1bHRMYXllclByb3BzKGRhdGFzZXQ6IEtlcGxlckRhdGFzZXQpOiB7XG4gICAgcHJvcHM6IHtkYXRhSWQ6IHN0cmluZzsgbGFiZWw/OiBzdHJpbmc7IGlzVmlzaWJsZTogYm9vbGVhbn1bXTtcbiAgfSB7XG4gICAgaWYgKCFpc1RpbGVEYXRhc2V0KGRhdGFzZXQpKSB7XG4gICAgICByZXR1cm4ge3Byb3BzOiBbXX07XG4gICAgfVxuXG4gICAgY29uc3QgbmV3TGF5ZXJQcm9wID0ge1xuICAgICAgZGF0YUlkOiBkYXRhc2V0LmlkLFxuICAgICAgbGFiZWw6IGRhdGFzZXQubGFiZWwsXG4gICAgICBpc1Zpc2libGU6IHRydWVcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtwcm9wczogW25ld0xheWVyUHJvcF19O1xuICB9XG5cbiAgZ2V0IHJlcXVpcmVEYXRhKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZ2V0IHJlcXVpcmVkTGF5ZXJDb2x1bW5zKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBnZXQgdmlzdWFsQ2hhbm5lbHMoKTogUmVjb3JkPHN0cmluZywgVmlzdWFsQ2hhbm5lbD4ge1xuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjoge1xuICAgICAgICAuLi5zdXBlci52aXN1YWxDaGFubmVscy5jb2xvcixcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRGaWxsQ29sb3InLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGNvbmZpZyA9PiBjb25maWcuY29sb3JcbiAgICAgIH0sXG4gICAgICBoZWlnaHQ6IHtcbiAgICAgICAgcHJvcGVydHk6ICdoZWlnaHQnLFxuICAgICAgICBmaWVsZDogJ2hlaWdodEZpZWxkJyxcbiAgICAgICAgc2NhbGU6ICdoZWlnaHRTY2FsZScsXG4gICAgICAgIGRvbWFpbjogJ2hlaWdodERvbWFpbicsXG4gICAgICAgIHJhbmdlOiAnaGVpZ2h0UmFuZ2UnLFxuICAgICAgICBrZXk6ICdoZWlnaHQnLFxuICAgICAgICBjaGFubmVsU2NhbGVUeXBlOiAnc2l6ZScsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0RWxldmF0aW9uJyxcbiAgICAgICAgY29uZGl0aW9uOiBjb25maWcgPT4gY29uZmlnLnZpc0NvbmZpZy5lbmFibGUzZCxcbiAgICAgICAgbnVsbFZhbHVlOiAwLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRUxFVkFUSU9OXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiB0aGUgdmlld3BvcnQgY2hhbmdlc1xuICAgKi9cbiAgb25WaWV3cG9ydExvYWQgPSAodGlsZXM6IFRbXSk6IHZvaWQgPT4ge1xuICAgIHRoaXMudGlsZURhdGFzZXQudXBkYXRlVGlsZXModGlsZXMpO1xuICAgIC8vIFVwZGF0ZSBkeW5hbWljIGNvbG9yIGRvbWFpbiBpZiByZXF1aXJlZFxuICAgIGlmICh0aGlzLmNvbmZpZy52aXNDb25maWcuZHluYW1pY0NvbG9yKSB7XG4gICAgICB0aGlzLnNldER5bmFtaWNDb2xvckRvbWFpbigpO1xuICAgIH1cbiAgfTtcblxuICBhYnN0cmFjdCBhY2Nlc3NSb3dWYWx1ZShcbiAgICBmaWVsZD86IEtlcGxlckZpZWxkLFxuICAgIGluZGV4S2V5PzogbnVtYmVyIHwgbnVsbFxuICApOiAoZmllbGQ6IEtlcGxlckZpZWxkLCBkYXR1bTogVCBleHRlbmRzIEl0ZXJhYmxlPGluZmVyIFY+ID8gViA6IG5ldmVyKSA9PiBzdHJpbmcgfCBudW1iZXIgfCBudWxsO1xuXG4gIGFjY2Vzc1ZTRmllbGRWYWx1ZShpbnB1dEZpZWxkPzogRmllbGQsIGluZGV4S2V5PzogbnVtYmVyIHwgbnVsbCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuYWNjZXNzUm93VmFsdWUoaW5wdXRGaWVsZCwgaW5kZXhLZXkpO1xuICB9XG5cbiAgZ2V0U2NhbGVPcHRpb25zKGNoYW5uZWxLZXk6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBpZiAoY2hhbm5lbEtleSA9PT0gJ2NvbG9yJykge1xuICAgICAgY29uc3QgY2hhbm5lbCA9IHRoaXMudmlzdWFsQ2hhbm5lbHMuY29sb3I7XG4gICAgICBjb25zdCBmaWVsZCA9IHRoaXMuY29uZmlnW2NoYW5uZWwuZmllbGRdO1xuXG4gICAgICBpZiAoXG4gICAgICAgIGlzRG9tYWluUXVhbnRpbGVzKGZpZWxkPy5maWx0ZXJQcm9wcz8uZG9tYWluUXVhbnRpbGVzKSB8fFxuICAgICAgICB0aGlzLmNvbmZpZy52aXNDb25maWcuZHluYW1pY0NvbG9yIHx8XG4gICAgICAgIC8vIElmIHdlJ3ZlIHNldCB0aGUgc2NhbGUgdG8gcXVhbnRpbGUsIHdlIG5lZWQgdG8gaW5jbHVkZSBpdCAtIHRoZXJlJ3MgYSBsb2FkaW5nXG4gICAgICAgIC8vIHBlcmlvZCBpbiB3aGljaCB0aGUgdmlzQ29uZmlnIGlzbid0IHNldCB5ZXQsIGJ1dCBpZiB3ZSBkb24ndCByZXR1cm4gdGhlIHJpZ2h0XG4gICAgICAgIC8vIHNjYWxlIHR5cGUgd2UgbG9zZSBpdFxuICAgICAgICB0aGlzLmNvbmZpZy5jb2xvclNjYWxlID09PSBTQ0FMRV9UWVBFUy5xdWFudGlsZVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMuY3VzdG9tXTtcbiAgICB9XG5cbiAgICByZXR1cm4gW1NDQUxFX1RZUEVTLmxpbmVhcl07XG4gIH1cblxuICBzZXREeW5hbWljQ29sb3JEb21haW4gPSB0aHJvdHRsZSgoKTogdm9pZCA9PiB7XG4gICAgY29uc3Qge2NvbmZpZywgdGlsZURhdGFzZXQsIHNldExheWVyRG9tYWlufSA9IHRoaXM7XG4gICAgY29uc3QgZmllbGQgPSBjb25maWcuY29sb3JGaWVsZDtcbiAgICBjb25zdCB7Y29sb3JEb21haW4sIGNvbG9yU2NhbGV9ID0gY29uZmlnO1xuICAgIGlmICghdGlsZURhdGFzZXQgfHwgIXNldExheWVyRG9tYWluIHx8ICFmaWVsZCkgcmV0dXJuO1xuXG4gICAgaWYgKGNvbG9yU2NhbGUgPT09IFNDQUxFX1RZUEVTLnF1YW50aXplKSB7XG4gICAgICBjb25zdCBbbWluLCBtYXhdID0gdGlsZURhdGFzZXQuZ2V0RXh0ZW50KGZpZWxkKTtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShjb2xvckRvbWFpbikgfHwgbWluICE9PSBjb2xvckRvbWFpblswXSB8fCBtYXggIT09IGNvbG9yRG9tYWluWzFdKSB7XG4gICAgICAgIHNldExheWVyRG9tYWluKHtkb21haW46IFttaW4sIG1heF19KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNvbG9yU2NhbGUgPT09IFNDQUxFX1RZUEVTLnF1YW50aWxlKSB7XG4gICAgICBjb25zdCBkb21haW4gPSB0aWxlRGF0YXNldC5nZXRRdWFudGlsZVNhbXBsZShmaWVsZCk7XG4gICAgICBzZXRMYXllckRvbWFpbih7ZG9tYWlufSk7XG4gICAgfSBlbHNlIGlmIChjb2xvclNjYWxlID09PSBTQ0FMRV9UWVBFUy5vcmRpbmFsKSB7XG4gICAgICBjb25zdCBkb21haW4gPSB0aWxlRGF0YXNldC5nZXRVbmlxdWVWYWx1ZXMoZmllbGQpO1xuICAgICAgc2V0TGF5ZXJEb21haW4oe2RvbWFpbn0pO1xuICAgIH1cbiAgfSwgNTAwKTtcblxuICByZXNldENvbG9yRG9tYWluKCk6IHZvaWQge1xuICAgIGNvbnN0IHtkYXRhc2V0SWQsIGRhdGFzZXRzfSA9IHRoaXMubWV0YTtcbiAgICB0aGlzLnVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbChkYXRhc2V0cz8uW2RhdGFzZXRJZCB8fCAnJ10sICdjb2xvcicpO1xuICAgIHRoaXMuc2V0TGF5ZXJEb21haW4/Lih7ZG9tYWluOiB0aGlzLmNvbmZpZy5jb2xvckRvbWFpbn0pO1xuICB9XG5cbiAgdXBkYXRlTGF5ZXJDb25maWcoXG4gICAgbmV3Q29uZmlnOiBQYXJ0aWFsPExheWVyQmFzZUNvbmZpZz4gJiBQYXJ0aWFsPExheWVyQ29sb3JDb25maWc+XG4gICk6IEFic3RyYWN0VGlsZUxheWVyPFQsIEk+IHtcbiAgICAvLyBXaGVuIHRoZSBkeW5hbWljIGNvbG9yIHNldHRpbmcgY2hhbmdlcywgd2UgbmVlZCB0byByZWNhbGN1bGF0ZSB0aGUgbGF5ZXIgZG9tYWluXG4gICAgY29uc3Qgb2xkID0gdGhpcy5jb25maWcudmlzQ29uZmlnLmR5bmFtaWNDb2xvciA/PyBmYWxzZTtcbiAgICBjb25zdCBuZXh0ID0gbmV3Q29uZmlnLnZpc0NvbmZpZz8uZHluYW1pY0NvbG9yID8/IG9sZDtcbiAgICBjb25zdCBzY2FsZVR5cGVDaGFuZ2VkID1cbiAgICAgIG5ld0NvbmZpZy5jb2xvclNjYWxlICYmIHRoaXMuY29uZmlnLmNvbG9yU2NhbGUgIT09IG5ld0NvbmZpZy5jb2xvclNjYWxlO1xuXG4gICAgc3VwZXIudXBkYXRlTGF5ZXJDb25maWcobmV3Q29uZmlnKTtcbiAgICBjb25zdCB7Y29sb3JGaWVsZH0gPSB0aGlzLmNvbmZpZztcblxuICAgIGlmIChjb2xvckZpZWxkKSB7XG4gICAgICAvLyBXaGVuIHdlIHN3aXRjaCBmcm9tIGR5bmFtaWMgdG8gbm9uLWR5bmFtaWMgb3IgdmljZSB2ZXJzYSwgd2UgbmVlZCB0byB1cGRhdGVcbiAgICAgIC8vIHRoZSBjb2xvciBkb21haW4uIFRoaXMgaXMgZG93bnN0cmVhbSBmcm9tIGEgZGlzcGF0Y2ggY2FsbCwgc28gd2UgdXNlXG4gICAgICAvLyBzZXRUaW1lb3V0IHRvIGF2b2lkIFwicmVkdWNlcnMgbWF5IG5vdCBkaXNwYXRjaCBhY3Rpb25zXCIgZXJyb3JzXG4gICAgICBpZiAobmV4dCAmJiAoIW9sZCB8fCBzY2FsZVR5cGVDaGFuZ2VkKSkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2V0RHluYW1pY0NvbG9yRG9tYWluKCksIDApO1xuICAgICAgfSBlbHNlIGlmIChvbGQgJiYgIW5leHQpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlc2V0Q29sb3JEb21haW4oKSwgMCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXQgYW5pbWF0aW9uRG9tYWluKCk6IFtudW1iZXIsIG51bWJlcl0gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuYW5pbWF0aW9uLmRvbWFpbjtcbiAgfVxuXG4gIHNldEluaXRpYWxMYXllckNvbmZpZyhkYXRhc2V0OiBLZXBsZXJEYXRhc2V0KTogQWJzdHJhY3RUaWxlTGF5ZXI8VCwgST4ge1xuICAgIGNvbnN0IGRlZmF1bHRDb2xvckZpZWxkID0gZmluZERlZmF1bHRDb2xvckZpZWxkKGRhdGFzZXQpO1xuXG4gICAgaWYgKGRlZmF1bHRDb2xvckZpZWxkKSB7XG4gICAgICB0aGlzLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICAgICAgY29sb3JGaWVsZDogZGVmYXVsdENvbG9yRmllbGRcbiAgICAgIH0pO1xuICAgICAgdGhpcy51cGRhdGVMYXllclZpc3VhbENoYW5uZWwoZGF0YXNldCwgJ2NvbG9yJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXREZWZhdWx0TGF5ZXJDb25maWcoXG4gICAgcHJvcHM6IExheWVyQmFzZUNvbmZpZ1BhcnRpYWxcbiAgKTogTGF5ZXJCYXNlQ29uZmlnICYgUGFydGlhbDxMYXllckNvbG9yQ29uZmlnICYgTGF5ZXJIZWlnaHRDb25maWc+IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VwZXIuZ2V0RGVmYXVsdExheWVyQ29uZmlnKHByb3BzKSxcbiAgICAgIGNvbG9yU2NhbGU6IFNDQUxFX1RZUEVTLnF1YW50aXplLFxuXG4gICAgICAvLyBhZGQgaGVpZ2h0IHZpc3VhbCBjaGFubmVsXG4gICAgICBoZWlnaHRGaWVsZDogbnVsbCxcbiAgICAgIGhlaWdodERvbWFpbjogWzAsIDFdLFxuICAgICAgaGVpZ2h0U2NhbGU6ICdsaW5lYXInXG4gICAgfTtcbiAgfVxuXG4gIC8vIFdlIGNhbiByZW5kZXIgd2l0aG91dCBjb2x1bW5zLCBzbyB3ZSByZWRlZmluZSB0aGlzIG1ldGhvZFxuICBzaG91bGRSZW5kZXJMYXllcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLnR5cGUgJiYgdGhpcy5jb25maWcuaXNWaXNpYmxlKTtcbiAgfVxuXG4gIHVwZGF0ZUFuaW1hdGlvbkRvbWFpbkJ5RmllbGQoY2hhbm5lbDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmNvbmZpZ1t0aGlzLnZpc3VhbENoYW5uZWxzW2NoYW5uZWxdLmZpZWxkXTtcblxuICAgIGlmIChpc0luZGV4ZWRGaWVsZChmaWVsZCkgJiYgZmllbGQuaW5kZXhCeS50eXBlID09PSBBTExfRklFTERfVFlQRVMudGltZXN0YW1wKSB7XG4gICAgICBjb25zdCB7dGltZURvbWFpbn0gPSBmaWVsZC5pbmRleEJ5O1xuXG4gICAgICB0aGlzLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICAgICAgYW5pbWF0aW9uOiB7XG4gICAgICAgICAgLi4udGltZURvbWFpbixcbiAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgIHN0YXJ0VGltZTogdGltZURvbWFpbi5kb21haW5bMF1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQW5pbWF0aW9uRG9tYWluKGRvbWFpbjogW251bWJlciwgbnVtYmVyXSB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICAgIGFuaW1hdGlvbjoge1xuICAgICAgICAuLi50aGlzLmNvbmZpZy5hbmltYXRpb24sXG4gICAgICAgIGRvbWFpblxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlTGF5ZXJEb21haW4oZGF0YXNldHM6IEtlcGxlckRhdGFzZXRzLCBuZXdGaWx0ZXI/OiBGaWx0ZXIpOiBBYnN0cmFjdFRpbGVMYXllcjxULCBJPiB7XG4gICAgc3VwZXIudXBkYXRlTGF5ZXJEb21haW4oZGF0YXNldHMsIG5ld0ZpbHRlcik7XG4gICAgaWYgKG5ld0ZpbHRlcikge1xuICAgICAgLy8gaW52YWxpZGF0ZSBjYWNoZWRWaXNpYmxlRGF0YXNldCB3aGVuIGUuZy4gY2hhbmdpbmcgZmlsdGVyc1xuICAgICAgdGhpcy50aWxlRGF0YXNldC5pbnZhbGlkYXRlQ2FjaGUoKTtcbiAgICB9XG4gICAgT2JqZWN0LmtleXModGhpcy52aXN1YWxDaGFubmVscykuZm9yRWFjaChjaGFubmVsID0+IHtcbiAgICAgIHRoaXMudXBkYXRlQW5pbWF0aW9uRG9tYWluQnlGaWVsZChjaGFubmVsKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbChkYXRhc2V0OiBLZXBsZXJEYXRhc2V0LCBjaGFubmVsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBzdXBlci51cGRhdGVMYXllclZpc3VhbENoYW5uZWwoZGF0YXNldCwgY2hhbm5lbCk7XG5cbiAgICAvLyBjcmVhdGUgYW5pbWF0aW9uIGlmIGZpZWxkIGlzIGluZGV4ZWQgYnkgdGltZVxuICAgIHRoaXMudXBkYXRlQW5pbWF0aW9uRG9tYWluQnlGaWVsZChjaGFubmVsKTtcbiAgfVxuXG4gIGZvcm1hdExheWVyRGF0YShcbiAgICBkYXRhc2V0czogS2VwbGVyRGF0YXNldHMsXG4gICAgb2xkTGF5ZXJEYXRhOiB1bmtub3duLFxuICAgIGFuaW1hdGlvbkNvbmZpZzogQW5pbWF0aW9uQ29uZmlnXG4gICk6IExheWVyRGF0YSB7XG4gICAgY29uc3Qge2RhdGFJZH0gPSB0aGlzLmNvbmZpZztcbiAgICBpZiAoIW5vdE51bGxvclVuZGVmaW5lZChkYXRhSWQpKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tkYXRhSWRdO1xuXG4gICAgY29uc3QgZGF0YVVwZGF0ZVRyaWdnZXJzID0gdGhpcy5nZXREYXRhVXBkYXRlVHJpZ2dlcnMoZGF0YXNldCk7XG4gICAgY29uc3QgdHJpZ2dlckNoYW5nZWQgPSB0aGlzLmdldENoYW5nZWRUcmlnZ2VycyhkYXRhVXBkYXRlVHJpZ2dlcnMpO1xuXG4gICAgaWYgKHRyaWdnZXJDaGFuZ2VkICYmIHRyaWdnZXJDaGFuZ2VkLmdldE1ldGEpIHtcbiAgICAgIHRoaXMudXBkYXRlTGF5ZXJNZXRhKGRhdGFzZXQsIGRhdGFzZXRzKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbmRleEtleSA9IHRoaXMuY29uZmlnLmFuaW1hdGlvbi5lbmFibGVkID8gYW5pbWF0aW9uQ29uZmlnLmN1cnJlbnRUaW1lIDogbnVsbDtcbiAgICBjb25zdCBhY2Nlc3NvcnMgPSB0aGlzLmdldEF0dHJpYnV0ZUFjY2Vzc29ycyh7XG4gICAgICBkYXRhQWNjZXNzb3I6ICgpID0+IGQgPT4gZCxcbiAgICAgIGRhdGFDb250YWluZXI6IGRhdGFzZXQuZGF0YUNvbnRhaW5lcixcbiAgICAgIGluZGV4S2V5XG4gICAgfSk7XG5cbiAgICBjb25zdCBtZXRhZGF0YSA9IGRhdGFzZXQ/Lm1ldGFkYXRhIGFzIExheWVyRGF0YSB8IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi4obWV0YWRhdGEgPyB7bWluWm9vbTogbWV0YWRhdGEubWluWm9vbX0gOiB7fSksXG4gICAgICAuLi4obWV0YWRhdGEgPyB7bWF4Wm9vbTogbWV0YWRhdGEubWF4Wm9vbX0gOiB7fSksXG4gICAgICAuLi5hY2Nlc3NvcnNcbiAgICB9O1xuICB9XG5cbiAgZ2V0R3B1RmlsdGVyVmFsdWVBY2Nlc3Nvcih7Z3B1RmlsdGVyLCBhbmltYXRpb25Db25maWd9OiBMYXllck9wdHMpOiBhbnkge1xuICAgIGNvbnN0IGluZGV4S2V5ID0gdGhpcy5jb25maWcuYW5pbWF0aW9uLmVuYWJsZWQgPyBhbmltYXRpb25Db25maWcuY3VycmVudFRpbWUgOiBudWxsO1xuICAgIGNvbnN0IHZhbHVlQWNjZXNzb3IgPSAoZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSwgZCkgPT4gZmllbGQgPT5cbiAgICAgIHRoaXMuYWNjZXNzVlNGaWVsZFZhbHVlKGZpZWxkLCBpbmRleEtleSkoZmllbGQsIGQpO1xuICAgIHJldHVybiBncHVGaWx0ZXIuZmlsdGVyVmFsdWVBY2Nlc3NvcihudWxsIGFzIGFueSkodW5kZWZpbmVkLCB2YWx1ZUFjY2Vzc29yKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxZQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxVQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUF1QkEsSUFBQUksTUFBQSxHQUFB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
|
|
386
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29tbW9uVXRpbHMiLCJfY29uc3RhbnRzIiwiX3RhYmxlIiwiX3V0aWxzIiwiX2Jhc2VMYXllciIsIl90aWxlVXRpbHMiLCJfY2FsbFN1cGVyIiwidCIsIm8iLCJlIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJhcHBseSIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiY2FsbCIsIl9zdXBlclByb3BHZXQiLCJyIiwicCIsIl9nZXQyIiwib3duS2V5cyIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJERUZBVUxUX0VMRVZBVElPTiIsIkRFRkFVTFRfUkFESVVTIiwiZXhwb3J0cyIsImNvbW1vblRpbGVWaXNDb25maWdzIiwic3Ryb2tlQ29sb3IiLCJzdHJva2VPcGFjaXR5IiwiTEFZRVJfVklTX0NPTkZJR1MiLCJvcGFjaXR5IiwicHJvcGVydHkiLCJyYWRpdXMiLCJyYW5nZSIsInN0ZXAiLCJkZWZhdWx0VmFsdWUiLCJhbGxvd0N1c3RvbVZhbHVlIiwicmFkaXVzVW5pdHMiLCJ0eXBlIiwibGFiZWwiLCJncm91cCIsImRlc2NyaXB0aW9uIiwiZW5hYmxlM2QiLCJzdHJva2VkIiwidHJhbnNpdGlvbiIsImhlaWdodFJhbmdlIiwiZWxldmF0aW9uU2NhbGUiLCJjb2xvclJhbmdlIiwicmFkaXVzQnlab29tIiwiZW5hYmxlZCIsInN0b3BzIiwiZHluYW1pY0NvbG9yIiwiQWJzdHJhY3RUaWxlTGF5ZXIiLCJfS2VwbGVyTGF5ZXIiLCJwcm9wcyIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsInVuZGVmaW5lZCIsInRpbGVzIiwidGlsZURhdGFzZXQiLCJ1cGRhdGVUaWxlcyIsImNvbmZpZyIsInZpc0NvbmZpZyIsInNldER5bmFtaWNDb2xvckRvbWFpbiIsInRocm90dGxlIiwiX3RoaXMyIiwic2V0TGF5ZXJEb21haW4iLCJmaWVsZCIsImNvbG9yRmllbGQiLCJjb2xvckRvbWFpbiIsImNvbG9yU2NhbGUiLCJTQ0FMRV9UWVBFUyIsInF1YW50aXplIiwiX3RpbGVEYXRhc2V0JGdldEV4dGVuIiwiZ2V0RXh0ZW50IiwiX3RpbGVEYXRhc2V0JGdldEV4dGVuMiIsIl9zbGljZWRUb0FycmF5MiIsIm1pbiIsIm1heCIsIkFycmF5IiwiaXNBcnJheSIsImRvbWFpbiIsInF1YW50aWxlIiwiZ2V0UXVhbnRpbGVTYW1wbGUiLCJvcmRpbmFsIiwiZ2V0VW5pcXVlVmFsdWVzIiwicmVnaXN0ZXJWaXNDb25maWciLCJpbml0VGlsZURhdGFzZXQiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsImdldCIsImNvbG9yIiwiYWNjZXNzb3IiLCJoZWlnaHQiLCJzY2FsZSIsImNoYW5uZWxTY2FsZVR5cGUiLCJjb25kaXRpb24iLCJudWxsVmFsdWUiLCJ2YWx1ZSIsImFjY2Vzc1ZTRmllbGRWYWx1ZSIsImlucHV0RmllbGQiLCJpbmRleEtleSIsImFjY2Vzc1Jvd1ZhbHVlIiwiZ2V0U2NhbGVPcHRpb25zIiwiY2hhbm5lbEtleSIsIl9maWVsZCRmaWx0ZXJQcm9wcyIsImNoYW5uZWwiLCJ2aXN1YWxDaGFubmVscyIsImlzRG9tYWluUXVhbnRpbGVzIiwiZmlsdGVyUHJvcHMiLCJkb21haW5RdWFudGlsZXMiLCJjdXN0b20iLCJsaW5lYXIiLCJyZXNldENvbG9yRG9tYWluIiwiX3RoaXMkc2V0TGF5ZXJEb21haW4iLCJfdGhpcyRtZXRhIiwibWV0YSIsImRhdGFzZXRJZCIsImRhdGFzZXRzIiwidXBkYXRlTGF5ZXJWaXN1YWxDaGFubmVsIiwidXBkYXRlTGF5ZXJDb25maWciLCJuZXdDb25maWciLCJfdGhpcyRjb25maWckdmlzQ29uZmkiLCJfbmV3Q29uZmlnJHZpc0NvbmZpZyQiLCJfbmV3Q29uZmlnJHZpc0NvbmZpZyIsIl90aGlzMyIsIm9sZCIsIm5leHQiLCJzY2FsZVR5cGVDaGFuZ2VkIiwic2V0VGltZW91dCIsImFuaW1hdGlvbiIsInNldEluaXRpYWxMYXllckNvbmZpZyIsImRhdGFzZXQiLCJkZWZhdWx0Q29sb3JGaWVsZCIsImZpbmREZWZhdWx0Q29sb3JGaWVsZCIsImdldERlZmF1bHRMYXllckNvbmZpZyIsImhlaWdodEZpZWxkIiwiaGVpZ2h0RG9tYWluIiwiaGVpZ2h0U2NhbGUiLCJzaG91bGRSZW5kZXJMYXllciIsImlzVmlzaWJsZSIsInVwZGF0ZUFuaW1hdGlvbkRvbWFpbkJ5RmllbGQiLCJpc0luZGV4ZWRGaWVsZCIsImluZGV4QnkiLCJBTExfRklFTERfVFlQRVMiLCJ0aW1lc3RhbXAiLCJ0aW1lRG9tYWluIiwic3RhcnRUaW1lIiwidXBkYXRlQW5pbWF0aW9uRG9tYWluIiwidXBkYXRlTGF5ZXJEb21haW4iLCJuZXdGaWx0ZXIiLCJfdGhpczQiLCJpbnZhbGlkYXRlQ2FjaGUiLCJmb3JtYXRMYXllckRhdGEiLCJvbGRMYXllckRhdGEiLCJhbmltYXRpb25Db25maWciLCJkYXRhSWQiLCJub3ROdWxsb3JVbmRlZmluZWQiLCJkYXRhVXBkYXRlVHJpZ2dlcnMiLCJnZXREYXRhVXBkYXRlVHJpZ2dlcnMiLCJ0cmlnZ2VyQ2hhbmdlZCIsImdldENoYW5nZWRUcmlnZ2VycyIsImdldE1ldGEiLCJ1cGRhdGVMYXllck1ldGEiLCJjdXJyZW50VGltZSIsImFjY2Vzc29ycyIsImdldEF0dHJpYnV0ZUFjY2Vzc29ycyIsImRhdGFBY2Nlc3NvciIsImQiLCJkYXRhQ29udGFpbmVyIiwibWV0YWRhdGEiLCJtZXRhZGF0YVRvRGF0YSIsIm1pblpvb20iLCJtYXhab29tIiwiYm91bmRzIiwiZ2V0R3B1RmlsdGVyVmFsdWVBY2Nlc3NvciIsIl9yZWYiLCJfdGhpczUiLCJncHVGaWx0ZXIiLCJ2YWx1ZUFjY2Vzc29yIiwiZmlsdGVyVmFsdWVBY2Nlc3NvciIsImZpbmREZWZhdWx0TGF5ZXJQcm9wcyIsImlzVGlsZURhdGFzZXQiLCJuZXdMYXllclByb3AiLCJpZCIsIktlcGxlckxheWVyIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZlY3Rvci10aWxlL2Fic3RyYWN0LXRpbGUtbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHRocm90dGxlIGZyb20gJ2xvZGFzaC50aHJvdHRsZSc7XG5cbmltcG9ydCB7bm90TnVsbG9yVW5kZWZpbmVkfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5pbXBvcnQge1NDQUxFX1RZUEVTLCBBTExfRklFTERfVFlQRVMsIExBWUVSX1ZJU19DT05GSUdTfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBpc1RpbGVEYXRhc2V0LFxuICBLZXBsZXJUYWJsZSBhcyBLZXBsZXJEYXRhc2V0LFxuICBEYXRhc2V0cyBhcyBLZXBsZXJEYXRhc2V0cyxcbiAgR3B1RmlsdGVyXG59IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHtcbiAgQW5pbWF0aW9uQ29uZmlnLFxuICBGaWVsZCxcbiAgQmluZGVkTGF5ZXJDYWxsYmFja3MsXG4gIFZpc0NvbmZpZ0Jvb2xlYW4sXG4gIFZpc0NvbmZpZ1JhbmdlLFxuICBWaXNDb25maWdDb2xvclJhbmdlLFxuICBWaXNDb25maWdOdW1iZXIsXG4gIFZpc0NvbmZpZ0NvbG9yU2VsZWN0LFxuICBMYXllckNvbG9yQ29uZmlnLFxuICBMYXllckhlaWdodENvbmZpZyxcbiAgRmlsdGVyLFxuICBGaWVsZCBhcyBLZXBsZXJGaWVsZCxcbiAgTWFwU3RhdGUsXG4gIE1lcmdlLFxuICBab29tU3RvcHNDb25maWdcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge2ZpbmREZWZhdWx0Q29sb3JGaWVsZCwgRGF0YUNvbnRhaW5lckludGVyZmFjZX0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmltcG9ydCB7XG4gIGRlZmF1bHQgYXMgS2VwbGVyTGF5ZXIsXG4gIExheWVyQmFzZUNvbmZpZyxcbiAgTGF5ZXJCYXNlQ29uZmlnUGFydGlhbCxcbiAgVmlzdWFsQ2hhbm5lbCxcbiAgVmlzdWFsQ2hhbm5lbERvbWFpbixcbiAgVmlzdWFsQ2hhbm5lbEZpZWxkXG59IGZyb20gJy4uL2Jhc2UtbGF5ZXInO1xuaW1wb3J0IFRpbGVEYXRhc2V0IGZyb20gJy4vY29tbW9uLXRpbGUvdGlsZS1kYXRhc2V0JztcbmltcG9ydCB7aXNJbmRleGVkRmllbGQsIGlzRG9tYWluUXVhbnRpbGVzfSBmcm9tICcuL2NvbW1vbi10aWxlL3RpbGUtdXRpbHMnO1xuaW1wb3J0IHtGaW5kRGVmYXVsdExheWVyUHJvcHNSZXR1cm5WYWx1ZX0gZnJvbSAnLi4vbGF5ZXItdXRpbHMnO1xuXG5jb25zdCBERUZBVUxUX0VMRVZBVElPTiA9IDUwMDtcbmV4cG9ydCBjb25zdCBERUZBVUxUX1JBRElVUyA9IDE7XG5cbmV4cG9ydCB0eXBlIEFic3RyYWN0VGlsZUxheWVyVmlzQ29uZmlnU2V0dGluZ3MgPSB7XG4gIHN0cm9rZUNvbG9yOiBWaXNDb25maWdDb2xvclNlbGVjdDtcbiAgc3Ryb2tlT3BhY2l0eTogVmlzQ29uZmlnTnVtYmVyO1xuICByYWRpdXM6IFZpc0NvbmZpZ051bWJlcjtcbiAgcmFkaXVzVW5pdHM6IFZpc0NvbmZpZ0Jvb2xlYW47XG4gIGVuYWJsZTNkOiBWaXNDb25maWdCb29sZWFuO1xuICBzdHJva2VkOiBWaXNDb25maWdCb29sZWFuO1xuICB0cmFuc2l0aW9uOiBWaXNDb25maWdCb29sZWFuO1xuICBoZWlnaHRSYW5nZTogVmlzQ29uZmlnUmFuZ2U7XG4gIGVsZXZhdGlvblNjYWxlOiBWaXNDb25maWdOdW1iZXI7XG4gIG9wYWNpdHk6IFZpc0NvbmZpZ051bWJlcjtcbiAgY29sb3JSYW5nZTogVmlzQ29uZmlnQ29sb3JSYW5nZTtcbiAgLy8gVE9ETzogZmlndXJlIG91dCB0eXBlIGZvciByYWRpdXNCeVpvb20gdmlzIGNvbmZpZ1xuICByYWRpdXNCeVpvb206IGFueTtcbiAgZHluYW1pY0NvbG9yOiBWaXNDb25maWdCb29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgTGF5ZXJEYXRhID0ge1xuICBtaW5ab29tPzogbnVtYmVyO1xuICBtYXhab29tPzogbnVtYmVyO1xuICBib3VuZHM/OiBudW1iZXJbXTtcbiAgZ2V0UG9pbnRSYWRpdXM/OiAoKSA9PiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBMYXllck9wdHMgPSB7XG4gIGlkeDogbnVtYmVyO1xuICBtYXBTdGF0ZTogTWFwU3RhdGU7XG4gIGRhdGE6IExheWVyRGF0YTtcbiAgZ3B1RmlsdGVyOiBHcHVGaWx0ZXI7XG4gIGFuaW1hdGlvbkNvbmZpZzogQW5pbWF0aW9uQ29uZmlnO1xuICB0aWxlc2V0RGF0YVVybD86IHN0cmluZyB8IG51bGw7XG4gIGxheWVyQ2FsbGJhY2tzOiBCaW5kZWRMYXllckNhbGxiYWNrcztcbn07XG5cbmV4cG9ydCBjb25zdCBjb21tb25UaWxlVmlzQ29uZmlncyA9IHtcbiAgc3Ryb2tlQ29sb3I6ICdzdHJva2VDb2xvcicgYXMgY29uc3QsXG4gIHN0cm9rZU9wYWNpdHk6IHtcbiAgICAuLi5MQVlFUl9WSVNfQ09ORklHUy5vcGFjaXR5LFxuICAgIHByb3BlcnR5OiAnc3Ryb2tlT3BhY2l0eSdcbiAgfSxcbiAgcmFkaXVzOiB7XG4gICAgLi4uTEFZRVJfVklTX0NPTkZJR1MucmFkaXVzLFxuICAgIHJhbmdlOiBbMC4xLCAxMDBdLFxuICAgIHN0ZXA6IDAuMSxcbiAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfUkFESVVTLFxuICAgIGFsbG93Q3VzdG9tVmFsdWU6IGZhbHNlXG4gIH0gYXMgVmlzQ29uZmlnTnVtYmVyLFxuICByYWRpdXNVbml0czoge1xuICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgbGFiZWw6ICdSYWRpdXMgaW4gcGl4ZWxzJyxcbiAgICBncm91cDogJycsXG4gICAgcHJvcGVydHk6ICdyYWRpdXNVbml0cycsXG4gICAgZGVzY3JpcHRpb246ICdSYWRpdXMgaW4gcGl4ZWxzIG9yIGluIG1ldGVycydcbiAgfSBhcyBWaXNDb25maWdCb29sZWFuLFxuICBlbmFibGUzZDogJ2VuYWJsZTNkJyBhcyBjb25zdCxcbiAgc3Ryb2tlZDoge1xuICAgIC4uLkxBWUVSX1ZJU19DT05GSUdTLnN0cm9rZWQsXG4gICAgZGVmYXVsdFZhbHVlOiBmYWxzZVxuICB9LFxuICB0cmFuc2l0aW9uOiB7XG4gICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgbGFiZWw6ICdUcmFuc2l0aW9uJyxcbiAgICBncm91cDogJycsXG4gICAgcHJvcGVydHk6ICd0cmFuc2l0aW9uJyxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdTbW9vdGhlciB0cmFuc2l0aW9uIGR1cmluZyBhbmltYXRpb24gKGVuYWJsZSB0cmFuc2l0aW9uIHdpbGwgZGVjcmVhc2UgcGVyZm9ybWFuY2UpJ1xuICB9IGFzIFZpc0NvbmZpZ0Jvb2xlYW4sXG4gIGhlaWdodFJhbmdlOiAnZWxldmF0aW9uUmFuZ2UnIGFzIGNvbnN0LFxuICBlbGV2YXRpb25TY2FsZTogey4uLkxBWUVSX1ZJU19DT05GSUdTLmVsZXZhdGlvblNjYWxlLCBhbGxvd0N1c3RvbVZhbHVlOiBmYWxzZX0sXG4gIG9wYWNpdHk6ICdvcGFjaXR5JyBhcyBjb25zdCxcbiAgY29sb3JSYW5nZTogJ2NvbG9yUmFuZ2UnIGFzIGNvbnN0LFxuICAvLyBUT0RPOiBmaWd1cmUgb3V0IHR5cGUgZm9yIHJhZGl1c0J5Wm9vbSB2aXMgY29uZmlnXG4gIHJhZGl1c0J5Wm9vbToge1xuICAgIC4uLkxBWUVSX1ZJU19DT05GSUdTLnJhZGl1cyxcbiAgICBkZWZhdWx0VmFsdWU6IHtcbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgc3RvcHM6IG51bGxcbiAgICB9IGFzIFpvb21TdG9wc0NvbmZpZ1xuICB9IGFzIGFueSxcbiAgZHluYW1pY0NvbG9yOiB7XG4gICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgbGFiZWw6ICdEeW5hbWljIENvbG9yJyxcbiAgICBncm91cDogJycsXG4gICAgcHJvcGVydHk6ICdkeW5hbWljQ29sb3InLFxuICAgIGRlc2NyaXB0aW9uOiAnVXNlIGEgZHluYW1pYyBjb2xvciBzY2FsZSBiYXNlZCBvbiBkYXRhIHZpc2libGUgaW4gdGhlIHZpZXdwb3J0J1xuICB9IGFzIFZpc0NvbmZpZ0Jvb2xlYW5cbn07XG5cbmV4cG9ydCB0eXBlIEFic3RyYWN0VGlsZUxheWVyQ29uZmlnID0gTWVyZ2U8XG4gIExheWVyQmFzZUNvbmZpZyxcbiAge2NvbG9yRmllbGQ/OiBWaXN1YWxDaGFubmVsRmllbGQ7IGNvbG9yU2NhbGU/OiBzdHJpbmc7IGNvbG9yRG9tYWluPzogVmlzdWFsQ2hhbm5lbERvbWFpbn1cbj47XG5cbi8qKlxuICogQWJzdHJhY3QgdGlsZSBsYXllciwgaW5jbHVkaW5nIGNvbW1vbiBmdW5jdGlvbmFsaXR5IGZvciB2aWV3cG9ydC1iYXNlZCBkYXRhc2V0cyxcbiAqIGR5bmFtaWMgc2NhbGVzLCBhbmQgdGlsZS1iYXNlZCBhbmltYXRpb25cbiAqL1xuZXhwb3J0IGRlZmF1bHQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RUaWxlTGF5ZXI8XG4gIC8vIFR5cGUgb2YgdGhlIHRpbGUgaXRzZWxmXG4gIFQsXG4gIC8vIFR5cGUgb2YgdGhlIGl0ZXJhYmxlIGRhdGEgb2JqZWN0XG4gIEkgZXh0ZW5kcyBJdGVyYWJsZTxhbnk+ID0gVCBleHRlbmRzIEl0ZXJhYmxlPGFueT4gPyBUIDogbmV2ZXJcbj4gZXh0ZW5kcyBLZXBsZXJMYXllciB7XG4gIGRlY2xhcmUgY29uZmlnOiBBYnN0cmFjdFRpbGVMYXllckNvbmZpZztcbiAgZGVjbGFyZSB2aXNDb25maWdTZXR0aW5nczogQWJzdHJhY3RUaWxlTGF5ZXJWaXNDb25maWdTZXR0aW5ncztcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogQ29uc3RydWN0b3JQYXJhbWV0ZXJzPHR5cGVvZiBLZXBsZXJMYXllcj5bMF0pIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5yZWdpc3RlclZpc0NvbmZpZyhjb21tb25UaWxlVmlzQ29uZmlncyk7XG4gICAgdGhpcy50aWxlRGF0YXNldCA9IHRoaXMuaW5pdFRpbGVEYXRhc2V0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdGlsZURhdGFzZXQ6IFRpbGVEYXRhc2V0PFQsIEk+O1xuICBwcm90ZWN0ZWQgc2V0TGF5ZXJEb21haW46IEJpbmRlZExheWVyQ2FsbGJhY2tzWydvblNldExheWVyRG9tYWluJ10gPSB1bmRlZmluZWQ7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGluaXRUaWxlRGF0YXNldCgpOiBUaWxlRGF0YXNldDxULCBJPjtcblxuICBzdGF0aWMgZmluZERlZmF1bHRMYXllclByb3BzKGRhdGFzZXQ6IEtlcGxlckRhdGFzZXQpOiBGaW5kRGVmYXVsdExheWVyUHJvcHNSZXR1cm5WYWx1ZSB7XG4gICAgaWYgKCFpc1RpbGVEYXRhc2V0KGRhdGFzZXQpKSB7XG4gICAgICByZXR1cm4ge3Byb3BzOiBbXX07XG4gICAgfVxuXG4gICAgY29uc3QgbmV3TGF5ZXJQcm9wID0ge1xuICAgICAgZGF0YUlkOiBkYXRhc2V0LmlkLFxuICAgICAgbGFiZWw6IGRhdGFzZXQubGFiZWwsXG4gICAgICBpc1Zpc2libGU6IHRydWVcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtwcm9wczogW25ld0xheWVyUHJvcF19O1xuICB9XG5cbiAgZ2V0IHJlcXVpcmVEYXRhKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZ2V0IHJlcXVpcmVkTGF5ZXJDb2x1bW5zKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBnZXQgdmlzdWFsQ2hhbm5lbHMoKTogUmVjb3JkPHN0cmluZywgVmlzdWFsQ2hhbm5lbD4ge1xuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjoge1xuICAgICAgICAuLi5zdXBlci52aXN1YWxDaGFubmVscy5jb2xvcixcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRGaWxsQ29sb3InLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGNvbmZpZyA9PiBjb25maWcuY29sb3JcbiAgICAgIH0sXG4gICAgICBoZWlnaHQ6IHtcbiAgICAgICAgcHJvcGVydHk6ICdoZWlnaHQnLFxuICAgICAgICBmaWVsZDogJ2hlaWdodEZpZWxkJyxcbiAgICAgICAgc2NhbGU6ICdoZWlnaHRTY2FsZScsXG4gICAgICAgIGRvbWFpbjogJ2hlaWdodERvbWFpbicsXG4gICAgICAgIHJhbmdlOiAnaGVpZ2h0UmFuZ2UnLFxuICAgICAgICBrZXk6ICdoZWlnaHQnLFxuICAgICAgICBjaGFubmVsU2NhbGVUeXBlOiAnc2l6ZScsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0RWxldmF0aW9uJyxcbiAgICAgICAgY29uZGl0aW9uOiBjb25maWcgPT4gY29uZmlnLnZpc0NvbmZpZy5lbmFibGUzZCxcbiAgICAgICAgbnVsbFZhbHVlOiAwLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRUxFVkFUSU9OXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiB0aGUgdmlld3BvcnQgY2hhbmdlc1xuICAgKi9cbiAgb25WaWV3cG9ydExvYWQgPSAodGlsZXM6IFRbXSk6IHZvaWQgPT4ge1xuICAgIHRoaXMudGlsZURhdGFzZXQudXBkYXRlVGlsZXModGlsZXMpO1xuICAgIC8vIFVwZGF0ZSBkeW5hbWljIGNvbG9yIGRvbWFpbiBpZiByZXF1aXJlZFxuICAgIGlmICh0aGlzLmNvbmZpZy52aXNDb25maWcuZHluYW1pY0NvbG9yKSB7XG4gICAgICB0aGlzLnNldER5bmFtaWNDb2xvckRvbWFpbigpO1xuICAgIH1cbiAgfTtcblxuICBhYnN0cmFjdCBhY2Nlc3NSb3dWYWx1ZShcbiAgICBmaWVsZD86IEtlcGxlckZpZWxkLFxuICAgIGluZGV4S2V5PzogbnVtYmVyIHwgbnVsbFxuICApOiAoZmllbGQ6IEtlcGxlckZpZWxkLCBkYXR1bTogVCBleHRlbmRzIEl0ZXJhYmxlPGluZmVyIFY+ID8gViA6IG5ldmVyKSA9PiBzdHJpbmcgfCBudW1iZXIgfCBudWxsO1xuXG4gIGFjY2Vzc1ZTRmllbGRWYWx1ZShpbnB1dEZpZWxkPzogRmllbGQsIGluZGV4S2V5PzogbnVtYmVyIHwgbnVsbCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuYWNjZXNzUm93VmFsdWUoaW5wdXRGaWVsZCwgaW5kZXhLZXkpO1xuICB9XG5cbiAgZ2V0U2NhbGVPcHRpb25zKGNoYW5uZWxLZXk6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBpZiAoY2hhbm5lbEtleSA9PT0gJ2NvbG9yJykge1xuICAgICAgY29uc3QgY2hhbm5lbCA9IHRoaXMudmlzdWFsQ2hhbm5lbHMuY29sb3I7XG4gICAgICBjb25zdCBmaWVsZCA9IHRoaXMuY29uZmlnW2NoYW5uZWwuZmllbGRdO1xuXG4gICAgICBpZiAoXG4gICAgICAgIGlzRG9tYWluUXVhbnRpbGVzKGZpZWxkPy5maWx0ZXJQcm9wcz8uZG9tYWluUXVhbnRpbGVzKSB8fFxuICAgICAgICB0aGlzLmNvbmZpZy52aXNDb25maWcuZHluYW1pY0NvbG9yIHx8XG4gICAgICAgIC8vIElmIHdlJ3ZlIHNldCB0aGUgc2NhbGUgdG8gcXVhbnRpbGUsIHdlIG5lZWQgdG8gaW5jbHVkZSBpdCAtIHRoZXJlJ3MgYSBsb2FkaW5nXG4gICAgICAgIC8vIHBlcmlvZCBpbiB3aGljaCB0aGUgdmlzQ29uZmlnIGlzbid0IHNldCB5ZXQsIGJ1dCBpZiB3ZSBkb24ndCByZXR1cm4gdGhlIHJpZ2h0XG4gICAgICAgIC8vIHNjYWxlIHR5cGUgd2UgbG9zZSBpdFxuICAgICAgICB0aGlzLmNvbmZpZy5jb2xvclNjYWxlID09PSBTQ0FMRV9UWVBFUy5xdWFudGlsZVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMuY3VzdG9tXTtcbiAgICB9XG5cbiAgICByZXR1cm4gW1NDQUxFX1RZUEVTLmxpbmVhcl07XG4gIH1cblxuICBzZXREeW5hbWljQ29sb3JEb21haW4gPSB0aHJvdHRsZSgoKTogdm9pZCA9PiB7XG4gICAgY29uc3Qge2NvbmZpZywgdGlsZURhdGFzZXQsIHNldExheWVyRG9tYWlufSA9IHRoaXM7XG4gICAgY29uc3QgZmllbGQgPSBjb25maWcuY29sb3JGaWVsZDtcbiAgICBjb25zdCB7Y29sb3JEb21haW4sIGNvbG9yU2NhbGV9ID0gY29uZmlnO1xuICAgIGlmICghdGlsZURhdGFzZXQgfHwgIXNldExheWVyRG9tYWluIHx8ICFmaWVsZCkgcmV0dXJuO1xuXG4gICAgaWYgKGNvbG9yU2NhbGUgPT09IFNDQUxFX1RZUEVTLnF1YW50aXplKSB7XG4gICAgICBjb25zdCBbbWluLCBtYXhdID0gdGlsZURhdGFzZXQuZ2V0RXh0ZW50KGZpZWxkKTtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShjb2xvckRvbWFpbikgfHwgbWluICE9PSBjb2xvckRvbWFpblswXSB8fCBtYXggIT09IGNvbG9yRG9tYWluWzFdKSB7XG4gICAgICAgIHNldExheWVyRG9tYWluKHtkb21haW46IFttaW4sIG1heF19KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNvbG9yU2NhbGUgPT09IFNDQUxFX1RZUEVTLnF1YW50aWxlKSB7XG4gICAgICBjb25zdCBkb21haW4gPSB0aWxlRGF0YXNldC5nZXRRdWFudGlsZVNhbXBsZShmaWVsZCk7XG4gICAgICBzZXRMYXllckRvbWFpbih7ZG9tYWlufSk7XG4gICAgfSBlbHNlIGlmIChjb2xvclNjYWxlID09PSBTQ0FMRV9UWVBFUy5vcmRpbmFsKSB7XG4gICAgICBjb25zdCBkb21haW4gPSB0aWxlRGF0YXNldC5nZXRVbmlxdWVWYWx1ZXMoZmllbGQpO1xuICAgICAgc2V0TGF5ZXJEb21haW4oe2RvbWFpbn0pO1xuICAgIH1cbiAgfSwgNTAwKTtcblxuICByZXNldENvbG9yRG9tYWluKCk6IHZvaWQge1xuICAgIGNvbnN0IHtkYXRhc2V0SWQsIGRhdGFzZXRzfSA9IHRoaXMubWV0YTtcbiAgICB0aGlzLnVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbChkYXRhc2V0cz8uW2RhdGFzZXRJZCB8fCAnJ10sICdjb2xvcicpO1xuICAgIHRoaXMuc2V0TGF5ZXJEb21haW4/Lih7ZG9tYWluOiB0aGlzLmNvbmZpZy5jb2xvckRvbWFpbn0pO1xuICB9XG5cbiAgdXBkYXRlTGF5ZXJDb25maWcoXG4gICAgbmV3Q29uZmlnOiBQYXJ0aWFsPExheWVyQmFzZUNvbmZpZz4gJiBQYXJ0aWFsPExheWVyQ29sb3JDb25maWc+XG4gICk6IEFic3RyYWN0VGlsZUxheWVyPFQsIEk+IHtcbiAgICAvLyBXaGVuIHRoZSBkeW5hbWljIGNvbG9yIHNldHRpbmcgY2hhbmdlcywgd2UgbmVlZCB0byByZWNhbGN1bGF0ZSB0aGUgbGF5ZXIgZG9tYWluXG4gICAgY29uc3Qgb2xkID0gdGhpcy5jb25maWcudmlzQ29uZmlnLmR5bmFtaWNDb2xvciA/PyBmYWxzZTtcbiAgICBjb25zdCBuZXh0ID0gbmV3Q29uZmlnLnZpc0NvbmZpZz8uZHluYW1pY0NvbG9yID8/IG9sZDtcbiAgICBjb25zdCBzY2FsZVR5cGVDaGFuZ2VkID1cbiAgICAgIG5ld0NvbmZpZy5jb2xvclNjYWxlICYmIHRoaXMuY29uZmlnLmNvbG9yU2NhbGUgIT09IG5ld0NvbmZpZy5jb2xvclNjYWxlO1xuXG4gICAgc3VwZXIudXBkYXRlTGF5ZXJDb25maWcobmV3Q29uZmlnKTtcbiAgICBjb25zdCB7Y29sb3JGaWVsZH0gPSB0aGlzLmNvbmZpZztcblxuICAgIGlmIChjb2xvckZpZWxkKSB7XG4gICAgICAvLyBXaGVuIHdlIHN3aXRjaCBmcm9tIGR5bmFtaWMgdG8gbm9uLWR5bmFtaWMgb3IgdmljZSB2ZXJzYSwgd2UgbmVlZCB0byB1cGRhdGVcbiAgICAgIC8vIHRoZSBjb2xvciBkb21haW4uIFRoaXMgaXMgZG93bnN0cmVhbSBmcm9tIGEgZGlzcGF0Y2ggY2FsbCwgc28gd2UgdXNlXG4gICAgICAvLyBzZXRUaW1lb3V0IHRvIGF2b2lkIFwicmVkdWNlcnMgbWF5IG5vdCBkaXNwYXRjaCBhY3Rpb25zXCIgZXJyb3JzXG4gICAgICBpZiAobmV4dCAmJiAoIW9sZCB8fCBzY2FsZVR5cGVDaGFuZ2VkKSkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2V0RHluYW1pY0NvbG9yRG9tYWluKCksIDApO1xuICAgICAgfSBlbHNlIGlmIChvbGQgJiYgIW5leHQpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlc2V0Q29sb3JEb21haW4oKSwgMCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXQgYW5pbWF0aW9uRG9tYWluKCk6IFtudW1iZXIsIG51bWJlcl0gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuYW5pbWF0aW9uLmRvbWFpbjtcbiAgfVxuXG4gIHNldEluaXRpYWxMYXllckNvbmZpZyhkYXRhc2V0OiBLZXBsZXJEYXRhc2V0KTogQWJzdHJhY3RUaWxlTGF5ZXI8VCwgST4ge1xuICAgIGNvbnN0IGRlZmF1bHRDb2xvckZpZWxkID0gZmluZERlZmF1bHRDb2xvckZpZWxkKGRhdGFzZXQpO1xuXG4gICAgaWYgKGRlZmF1bHRDb2xvckZpZWxkKSB7XG4gICAgICB0aGlzLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICAgICAgY29sb3JGaWVsZDogZGVmYXVsdENvbG9yRmllbGRcbiAgICAgIH0pO1xuICAgICAgdGhpcy51cGRhdGVMYXllclZpc3VhbENoYW5uZWwoZGF0YXNldCwgJ2NvbG9yJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXREZWZhdWx0TGF5ZXJDb25maWcoXG4gICAgcHJvcHM6IExheWVyQmFzZUNvbmZpZ1BhcnRpYWxcbiAgKTogTGF5ZXJCYXNlQ29uZmlnICYgUGFydGlhbDxMYXllckNvbG9yQ29uZmlnICYgTGF5ZXJIZWlnaHRDb25maWc+IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VwZXIuZ2V0RGVmYXVsdExheWVyQ29uZmlnKHByb3BzKSxcbiAgICAgIGNvbG9yU2NhbGU6IFNDQUxFX1RZUEVTLnF1YW50aXplLFxuXG4gICAgICAvLyBhZGQgaGVpZ2h0IHZpc3VhbCBjaGFubmVsXG4gICAgICBoZWlnaHRGaWVsZDogbnVsbCxcbiAgICAgIGhlaWdodERvbWFpbjogWzAsIDFdLFxuICAgICAgaGVpZ2h0U2NhbGU6ICdsaW5lYXInXG4gICAgfTtcbiAgfVxuXG4gIC8vIFdlIGNhbiByZW5kZXIgd2l0aG91dCBjb2x1bW5zLCBzbyB3ZSByZWRlZmluZSB0aGlzIG1ldGhvZFxuICBzaG91bGRSZW5kZXJMYXllcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLnR5cGUgJiYgdGhpcy5jb25maWcuaXNWaXNpYmxlKTtcbiAgfVxuXG4gIHVwZGF0ZUFuaW1hdGlvbkRvbWFpbkJ5RmllbGQoY2hhbm5lbDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmNvbmZpZ1t0aGlzLnZpc3VhbENoYW5uZWxzW2NoYW5uZWxdLmZpZWxkXTtcblxuICAgIGlmIChpc0luZGV4ZWRGaWVsZChmaWVsZCkgJiYgZmllbGQuaW5kZXhCeS50eXBlID09PSBBTExfRklFTERfVFlQRVMudGltZXN0YW1wKSB7XG4gICAgICBjb25zdCB7dGltZURvbWFpbn0gPSBmaWVsZC5pbmRleEJ5O1xuXG4gICAgICB0aGlzLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICAgICAgYW5pbWF0aW9uOiB7XG4gICAgICAgICAgLi4udGltZURvbWFpbixcbiAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgIHN0YXJ0VGltZTogdGltZURvbWFpbi5kb21haW5bMF1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQW5pbWF0aW9uRG9tYWluKGRvbWFpbjogW251bWJlciwgbnVtYmVyXSB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICAgIGFuaW1hdGlvbjoge1xuICAgICAgICAuLi50aGlzLmNvbmZpZy5hbmltYXRpb24sXG4gICAgICAgIGRvbWFpblxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlTGF5ZXJEb21haW4oZGF0YXNldHM6IEtlcGxlckRhdGFzZXRzLCBuZXdGaWx0ZXI/OiBGaWx0ZXIpOiBBYnN0cmFjdFRpbGVMYXllcjxULCBJPiB7XG4gICAgc3VwZXIudXBkYXRlTGF5ZXJEb21haW4oZGF0YXNldHMsIG5ld0ZpbHRlcik7XG4gICAgaWYgKG5ld0ZpbHRlcikge1xuICAgICAgLy8gaW52YWxpZGF0ZSBjYWNoZWRWaXNpYmxlRGF0YXNldCB3aGVuIGUuZy4gY2hhbmdpbmcgZmlsdGVyc1xuICAgICAgdGhpcy50aWxlRGF0YXNldC5pbnZhbGlkYXRlQ2FjaGUoKTtcbiAgICB9XG4gICAgT2JqZWN0LmtleXModGhpcy52aXN1YWxDaGFubmVscykuZm9yRWFjaChjaGFubmVsID0+IHtcbiAgICAgIHRoaXMudXBkYXRlQW5pbWF0aW9uRG9tYWluQnlGaWVsZChjaGFubmVsKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbChkYXRhc2V0OiBLZXBsZXJEYXRhc2V0LCBjaGFubmVsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBzdXBlci51cGRhdGVMYXllclZpc3VhbENoYW5uZWwoZGF0YXNldCwgY2hhbm5lbCk7XG5cbiAgICAvLyBjcmVhdGUgYW5pbWF0aW9uIGlmIGZpZWxkIGlzIGluZGV4ZWQgYnkgdGltZVxuICAgIHRoaXMudXBkYXRlQW5pbWF0aW9uRG9tYWluQnlGaWVsZChjaGFubmVsKTtcbiAgfVxuXG4gIGZvcm1hdExheWVyRGF0YShcbiAgICBkYXRhc2V0czogS2VwbGVyRGF0YXNldHMsXG4gICAgb2xkTGF5ZXJEYXRhOiB1bmtub3duLFxuICAgIGFuaW1hdGlvbkNvbmZpZzogQW5pbWF0aW9uQ29uZmlnXG4gICk6IExheWVyRGF0YSB7XG4gICAgY29uc3Qge2RhdGFJZH0gPSB0aGlzLmNvbmZpZztcbiAgICBpZiAoIW5vdE51bGxvclVuZGVmaW5lZChkYXRhSWQpKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tkYXRhSWRdO1xuXG4gICAgY29uc3QgZGF0YVVwZGF0ZVRyaWdnZXJzID0gdGhpcy5nZXREYXRhVXBkYXRlVHJpZ2dlcnMoZGF0YXNldCk7XG4gICAgY29uc3QgdHJpZ2dlckNoYW5nZWQgPSB0aGlzLmdldENoYW5nZWRUcmlnZ2VycyhkYXRhVXBkYXRlVHJpZ2dlcnMpO1xuXG4gICAgaWYgKHRyaWdnZXJDaGFuZ2VkICYmIHRyaWdnZXJDaGFuZ2VkLmdldE1ldGEpIHtcbiAgICAgIHRoaXMudXBkYXRlTGF5ZXJNZXRhKGRhdGFzZXQsIGRhdGFzZXRzKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbmRleEtleSA9IHRoaXMuY29uZmlnLmFuaW1hdGlvbi5lbmFibGVkID8gYW5pbWF0aW9uQ29uZmlnLmN1cnJlbnRUaW1lIDogbnVsbDtcbiAgICBjb25zdCBhY2Nlc3NvcnMgPSB0aGlzLmdldEF0dHJpYnV0ZUFjY2Vzc29ycyh7XG4gICAgICBkYXRhQWNjZXNzb3I6ICgpID0+IGQgPT4gZCxcbiAgICAgIGRhdGFDb250YWluZXI6IGRhdGFzZXQuZGF0YUNvbnRhaW5lcixcbiAgICAgIGluZGV4S2V5XG4gICAgfSk7XG5cbiAgICBjb25zdCBtZXRhZGF0YSA9IGRhdGFzZXQ/Lm1ldGFkYXRhIGFzIExheWVyRGF0YSB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBtZXRhZGF0YVRvRGF0YSA9IG1ldGFkYXRhXG4gICAgICA/IHtcbiAgICAgICAgICBtaW5ab29tOiBtZXRhZGF0YS5taW5ab29tLFxuICAgICAgICAgIG1heFpvb206IG1ldGFkYXRhLm1heFpvb20sXG4gICAgICAgICAgYm91bmRzOiBtZXRhZGF0YS5ib3VuZHNcbiAgICAgICAgfVxuICAgICAgOiB7fTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5tZXRhZGF0YVRvRGF0YSxcbiAgICAgIC4uLmFjY2Vzc29yc1xuICAgIH07XG4gIH1cblxuICBnZXRHcHVGaWx0ZXJWYWx1ZUFjY2Vzc29yKHtncHVGaWx0ZXIsIGFuaW1hdGlvbkNvbmZpZ306IExheWVyT3B0cyk6IGFueSB7XG4gICAgY29uc3QgaW5kZXhLZXkgPSB0aGlzLmNvbmZpZy5hbmltYXRpb24uZW5hYmxlZCA/IGFuaW1hdGlvbkNvbmZpZy5jdXJyZW50VGltZSA6IG51bGw7XG4gICAgY29uc3QgdmFsdWVBY2Nlc3NvciA9IChkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLCBkKSA9PiBmaWVsZCA9PlxuICAgICAgdGhpcy5hY2Nlc3NWU0ZpZWxkVmFsdWUoZmllbGQsIGluZGV4S2V5KShmaWVsZCwgZCk7XG4gICAgcmV0dXJuIGdwdUZpbHRlci5maWx0ZXJWYWx1ZUFjY2Vzc29yKG51bGwgYXMgYW55KSh1bmRlZmluZWQsIHZhbHVlQWNjZXNzb3IpO1xuICB9XG59XG4iXSwi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
|
|
@@ -9,6 +9,7 @@ import { KeplerTable as KeplerDataset, Datasets as KeplerDatasets, GpuFilter } f
|
|
|
9
9
|
import { AnimationConfig, Field as KeplerField, LayerColorConfig, LayerHeightConfig, Merge, MapState, BindedLayerCallbacks, VisConfigRange, VisConfigNumber, DomainStops } from '@kepler.gl/types';
|
|
10
10
|
import { DataContainerInterface } from '@kepler.gl/utils';
|
|
11
11
|
import { default as KeplerLayer, LayerBaseConfig, LayerBaseConfigPartial, VisualChannel, VisualChannelDomain, VisualChannelField } from '../base-layer';
|
|
12
|
+
import { FindDefaultLayerPropsReturnValue } from '../layer-utils';
|
|
12
13
|
import AbstractTileLayer, { LayerData as CommonLayerData, AbstractTileLayerConfig, AbstractTileLayerVisConfigSettings } from './abstract-tile-layer';
|
|
13
14
|
import TileDataset from './common-tile/tile-dataset';
|
|
14
15
|
export declare const DEFAULT_HIGHLIGHT_FILL_COLOR: number[];
|
|
@@ -130,18 +131,15 @@ export declare type VectorTileLayerVisConfigSettings = Merge<AbstractTileLayerVi
|
|
|
130
131
|
sizeRange: VisConfigRange;
|
|
131
132
|
strokeWidth: VisConfigNumber;
|
|
132
133
|
}>;
|
|
134
|
+
export declare function tileLayerBoundsLayer(id: string, props: {
|
|
135
|
+
bounds?: number[];
|
|
136
|
+
}): DeckLayer[];
|
|
133
137
|
export default class VectorTileLayer extends AbstractTileLayer<VectorTile, Feature[]> {
|
|
134
138
|
config: VectorTileLayerConfig;
|
|
135
139
|
visConfigSettings: VectorTileLayerVisConfigSettings;
|
|
136
140
|
constructor(props: ConstructorParameters<typeof AbstractTileLayer>[0]);
|
|
137
141
|
meta: {};
|
|
138
|
-
static findDefaultLayerProps(dataset: KeplerDataset):
|
|
139
|
-
props: {
|
|
140
|
-
dataId: string;
|
|
141
|
-
label?: string;
|
|
142
|
-
isVisible: boolean;
|
|
143
|
-
}[];
|
|
144
|
-
};
|
|
142
|
+
static findDefaultLayerProps(dataset: KeplerDataset): FindDefaultLayerPropsReturnValue;
|
|
145
143
|
initTileDataset(): TileDataset<VectorTile, Feature[]>;
|
|
146
144
|
get type(): "vectorTile";
|
|
147
145
|
get name(): string;
|