kepler.gl 3.1.0-alpha.6 → 3.1.0
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/dist/src/actions/src/action-types.d.ts +2 -0
- package/dist/src/actions/src/ui-state-actions.d.ts +16 -0
- package/dist/src/ai-assistant/src/actions.d.ts +1 -1
- package/dist/src/ai-assistant/src/components/ai-assistant-component.d.ts +2 -1
- package/dist/src/ai-assistant/src/constants.d.ts +3 -3
- package/dist/src/ai-assistant/src/reducers/index.d.ts +1 -1
- package/dist/src/ai-assistant/src/tools/basemap-functions.d.ts +1 -1
- package/dist/src/ai-assistant/src/tools/filter-function.d.ts +1 -1
- package/dist/src/ai-assistant/src/tools/layer-creation-function.d.ts +1 -1
- package/dist/src/ai-assistant/src/tools/layer-style-function.d.ts +1 -1
- package/dist/src/ai-assistant/src/tools/loadurl-function.d.ts +1 -1
- package/dist/src/ai-assistant/src/tools/utils.d.ts +73 -0
- package/dist/src/components/src/common/data-table/index.d.ts +1 -1
- package/dist/src/components/src/common/data-table/option-dropdown.d.ts +3 -3
- package/dist/src/components/src/common/file-uploader/file-drop.d.ts +2 -2
- package/dist/src/components/src/kepler-gl.d.ts +5 -0
- package/dist/src/components/src/loading-indicator.d.ts +13 -0
- package/dist/src/components/src/map-container.d.ts +3 -0
- package/dist/src/constants/src/default-settings.d.ts +1 -0
- package/dist/src/duckdb/src/plugin.d.ts +1 -0
- package/dist/src/duckdb/src/table/duckdb-table-utils.d.ts +13 -0
- package/dist/src/duckdb/src/table/duckdb-table.d.ts +7 -2
- package/dist/src/reducers/src/ui-state-updaters.d.ts +10 -0
- package/dist/src/reducers/src/vis-state-updaters.d.ts +1 -0
- package/dist/src/reducers/src/vis-state.d.ts +4 -0
- package/dist/src/utils/src/application-config.d.ts +2 -0
- package/dist/src/utils/src/observe-dimensions.d.ts +2 -1
- package/package.json +5 -3
- package/src/actions/dist/action-types.d.ts +2 -0
- package/src/actions/dist/action-types.js +2 -1
- package/src/actions/dist/ui-state-actions.d.ts +16 -0
- package/src/actions/dist/ui-state-actions.js +17 -2
- package/src/actions/package.json +8 -8
- package/src/actions/src/action-types.ts +1 -0
- package/src/actions/src/ui-state-actions.ts +22 -0
- package/src/ai-assistant/README.md +76 -0
- package/src/ai-assistant/dist/actions.d.ts +1 -1
- package/src/ai-assistant/dist/actions.js +2 -2
- package/src/ai-assistant/dist/components/ai-assistant-component.d.ts +2 -1
- package/src/ai-assistant/dist/components/ai-assistant-component.js +64 -23
- package/src/ai-assistant/dist/components/ai-assistant-config.js +67 -54
- package/src/ai-assistant/dist/constants.d.ts +3 -3
- package/src/ai-assistant/dist/constants.js +4 -4
- package/src/ai-assistant/dist/reducers/index.d.ts +1 -1
- package/src/ai-assistant/dist/reducers/index.js +2 -2
- package/src/ai-assistant/dist/tools/basemap-functions.d.ts +1 -1
- package/src/ai-assistant/dist/tools/basemap-functions.js +1 -1
- package/src/ai-assistant/dist/tools/filter-function.d.ts +1 -1
- package/src/ai-assistant/dist/tools/filter-function.js +9 -6
- package/src/ai-assistant/dist/tools/layer-creation-function.d.ts +1 -1
- package/src/ai-assistant/dist/tools/layer-creation-function.js +1 -1
- package/src/ai-assistant/dist/tools/layer-style-function.d.ts +1 -1
- package/src/ai-assistant/dist/tools/layer-style-function.js +1 -1
- package/src/ai-assistant/dist/tools/loadurl-function.d.ts +1 -1
- package/src/ai-assistant/dist/tools/loadurl-function.js +1 -1
- package/src/ai-assistant/dist/tools/utils.d.ts +73 -0
- package/src/ai-assistant/dist/tools/utils.js +211 -3
- package/src/ai-assistant/package.json +13 -9
- package/src/ai-assistant/src/actions.ts +2 -2
- package/src/ai-assistant/src/components/ai-assistant-component.tsx +56 -23
- package/src/ai-assistant/src/components/ai-assistant-config.tsx +63 -46
- package/src/ai-assistant/src/config/models.json +32 -0
- package/src/ai-assistant/src/constants.ts +7 -2
- package/src/ai-assistant/src/reducers/index.ts +2 -2
- package/src/ai-assistant/src/tools/basemap-functions.tsx +1 -1
- package/src/ai-assistant/src/tools/filter-function.tsx +11 -7
- package/src/ai-assistant/src/tools/layer-creation-function.tsx +1 -1
- package/src/ai-assistant/src/tools/layer-style-function.tsx +1 -1
- package/src/ai-assistant/src/tools/loadurl-function.tsx +1 -1
- package/src/ai-assistant/src/tools/utils.ts +212 -2
- package/src/cloud-providers/package.json +2 -2
- package/src/common-utils/package.json +3 -3
- package/src/components/dist/common/data-table/header-cell.js +10 -10
- package/src/components/dist/common/data-table/index.d.ts +1 -1
- package/src/components/dist/common/data-table/index.js +1 -1
- package/src/components/dist/common/data-table/option-dropdown.d.ts +3 -3
- package/src/components/dist/common/data-table/option-dropdown.js +5 -5
- package/src/components/dist/common/file-uploader/file-drop.d.ts +2 -2
- package/src/components/dist/common/file-uploader/file-drop.js +1 -1
- package/src/components/dist/common/portaled.js +1 -1
- package/src/components/dist/editor/editor.js +1 -1
- package/src/components/dist/kepler-gl.d.ts +5 -0
- package/src/components/dist/kepler-gl.js +7 -2
- package/src/components/dist/loading-indicator.d.ts +13 -0
- package/src/components/dist/loading-indicator.js +40 -0
- package/src/components/dist/map-container.d.ts +3 -0
- package/src/components/dist/map-container.js +11 -3
- package/src/components/dist/modals/save-map-modal.js +4 -3
- package/src/components/package.json +15 -15
- package/src/components/src/common/data-table/header-cell.tsx +5 -3
- package/src/components/src/common/data-table/index.tsx +1 -1
- package/src/components/src/common/data-table/option-dropdown.tsx +7 -7
- package/src/components/src/common/file-uploader/file-drop.tsx +11 -11
- package/src/components/src/common/portaled.tsx +12 -12
- package/src/components/src/editor/editor.tsx +3 -3
- package/src/components/src/kepler-gl.tsx +7 -2
- package/src/components/src/loading-indicator.tsx +49 -0
- package/src/components/src/map-container.tsx +19 -1
- package/src/components/src/modals/save-map-modal.tsx +6 -2
- package/src/constants/dist/default-settings.d.ts +1 -0
- package/src/constants/dist/default-settings.js +13 -9
- package/src/constants/dist/keyevent.js +1 -1
- package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/72/80/7a7c561d7985e92aab7b9683e7baf5a0286b353a8f2609c4c71099f668d012be027929e4bbac937f9aa0c9a61be3bd4405136f582895f05aa0313c8efa42 +1 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/8f/f6/b66955867599392dc69ff1db64419e83c087a82c2e3d4b6418d49ac6bc80e3200dd6c86cdfd4a2cf98ce573f71a5281b86ba3df8a7210e02544f63054191 +1 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/bd/ba/47ea8fcb11ecd5cd47ad867052e58b1f7e0c8dc5f8918a36fe90eaf45981 +2 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/f0/6e/aadf3c48345aa72e7b2fb92e8c9788d04986b55caf83daa3fbd749c37c44 +2 -0
- package/src/constants/package.json +2 -2
- package/src/constants/src/default-settings.ts +11 -5
- package/src/constants/src/keyevent.ts +2 -2
- package/src/constants/umd/keplergl.min.js +1 -1
- package/src/deckgl-arrow-layers/package.json +1 -1
- package/src/deckgl-layers/package.json +4 -4
- package/src/duckdb/dist/components/preview-data-panel.js +2 -11
- package/src/duckdb/dist/components/sql-panel.js +7 -3
- package/src/duckdb/dist/components/tree.js +5 -4
- package/src/duckdb/dist/plugin.d.ts +1 -0
- package/src/duckdb/dist/plugin.js +9 -2
- package/src/duckdb/dist/processors/data-processor.js +4 -5
- package/src/duckdb/dist/table/duckdb-table-utils.d.ts +13 -0
- package/src/duckdb/dist/table/duckdb-table-utils.js +110 -0
- package/src/duckdb/dist/table/duckdb-table.d.ts +7 -2
- package/src/duckdb/dist/table/duckdb-table.js +189 -44
- package/src/duckdb/package.json +6 -6
- package/src/duckdb/src/components/preview-data-panel.tsx +0 -5
- package/src/duckdb/src/components/sql-panel.tsx +4 -2
- package/src/duckdb/src/components/tree.tsx +5 -1
- package/src/duckdb/src/plugin.ts +8 -1
- package/src/duckdb/src/processors/data-processor.ts +3 -4
- package/src/duckdb/src/table/duckdb-table-utils.ts +106 -0
- package/src/duckdb/src/table/duckdb-table.ts +134 -33
- package/src/effects/package.json +5 -5
- package/src/layers/dist/icon-layer/icon-layer.js +1 -1
- package/src/layers/dist/index.d.ts +3 -0
- package/src/layers/dist/index.js +6 -7
- package/src/layers/dist/point-layer/point-layer.d.ts +1 -1
- package/src/layers/dist/point-layer/point-layer.js +8 -2
- package/src/layers/package.json +9 -9
- package/src/layers/src/icon-layer/icon-layer.ts +8 -10
- package/src/layers/src/index.ts +5 -5
- package/src/layers/src/point-layer/point-layer.ts +6 -1
- package/src/localization/package.json +1 -1
- package/src/processors/dist/data-processor.js +2 -4
- package/src/processors/package.json +7 -7
- package/src/processors/src/data-processor.ts +1 -3
- package/src/reducers/dist/ui-state-updaters.d.ts +10 -0
- package/src/reducers/dist/ui-state-updaters.js +22 -2
- package/src/reducers/dist/ui-state.js +2 -2
- package/src/reducers/dist/vis-state-updaters.d.ts +1 -0
- package/src/reducers/dist/vis-state-updaters.js +21 -5
- package/src/reducers/dist/vis-state.d.ts +4 -0
- package/src/reducers/package.json +16 -16
- package/src/reducers/src/ui-state-updaters.ts +24 -0
- package/src/reducers/src/ui-state.ts +3 -1
- package/src/reducers/src/vis-state-updaters.ts +24 -5
- package/src/schemas/dist/dataset-schema.js +38 -2
- package/src/schemas/package.json +8 -7
- package/src/schemas/src/dataset-schema.ts +43 -1
- package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/5f/aa/96c67b383dbcd2b95625113a5389c6078fd8a53e6fc73a054229709f2dac1e0a409e7117049485a569fbebf8434a319451842671398904bfe1a7f7b5991c +1 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/af/aa/228fbff58007b23eea5eb6cc7d2da1f0af1d8a7024129a416ea88b4df0ad7afc7aec93b09f3dd42a98f1d6a6f4dce6b53204818da85ef5becc42f928a64d +1 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/40/72/cac221d8459e6b743bc62ecdb370ed854b21ec30d3f7f4c06c7d1d7ffde2 +2 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/c1/39/f7cd1d5947ec6e5d82bfa07041271344eb02f9e67bf5823acf2f22c2d01f +2 -0
- package/src/styles/package.json +2 -2
- package/src/styles/umd/keplergl.min.js +1 -1
- package/src/table/dist/dataset-utils.js +10 -4
- package/src/table/package.json +5 -5
- package/src/table/src/dataset-utils.ts +7 -1
- package/src/tasks/package.json +2 -2
- package/src/types/package.json +1 -1
- package/src/types/reducers.d.ts +2 -0
- package/src/utils/dist/application-config.d.ts +2 -0
- package/src/utils/dist/application-config.js +4 -2
- package/src/utils/dist/data-utils.js +14 -2
- package/src/utils/dist/dataset-utils.js +5 -3
- package/src/utils/dist/dom-to-image.js +1 -1
- package/src/utils/dist/dom-utils.js +1 -1
- package/src/utils/dist/map-style-utils/mapbox-gl-style-editor.js +7 -1
- package/src/utils/dist/observe-dimensions.d.ts +2 -1
- package/src/utils/dist/observe-dimensions.js +10 -4
- package/src/utils/dist/utils.js +1 -1
- package/src/utils/package.json +4 -4
- package/src/utils/src/application-config.ts +9 -1
- package/src/utils/src/data-utils.ts +13 -1
- package/src/utils/src/dataset-utils.ts +1 -1
- package/src/utils/src/dom-to-image.ts +5 -6
- package/src/utils/src/dom-utils.ts +15 -15
- package/src/utils/src/map-style-utils/mapbox-gl-style-editor.ts +6 -0
- package/src/utils/src/observe-dimensions.ts +9 -4
- package/src/utils/src/utils.ts +8 -8
- package/umd/keplergl.min.css +1 -1
- package/umd/keplergl.min.js +1499 -1428
|
@@ -20,13 +20,14 @@ var _imagePreview = _interopRequireDefault(require("../common/image-preview"));
|
|
|
20
20
|
var _localization = require("@kepler.gl/localization");
|
|
21
21
|
var _modal = require("../common/modal");
|
|
22
22
|
var _useCloudListProvider2 = require("../hooks/use-cloud-list-provider");
|
|
23
|
-
var _templateObject; // SPDX-License-Identifier: MIT
|
|
23
|
+
var _templateObject, _templateObject2; // SPDX-License-Identifier: MIT
|
|
24
24
|
// Copyright contributors to the kepler.gl project
|
|
25
25
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
26
26
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
27
27
|
var StyledSaveMapModal = _styledComponents["default"].div.attrs({
|
|
28
28
|
className: 'save-map-modal'
|
|
29
29
|
})(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n .save-map-modal-content {\n min-height: 400px;\n flex-direction: column;\n }\n\n .description {\n width: 300px;\n }\n\n .image-preview-panel {\n width: 300px;\n\n .image-preview {\n padding: 0;\n }\n }\n\n .map-info-panel {\n flex-direction: column;\n }\n\n .save-map-modal-description {\n .modal-section-subtitle {\n margin-left: 6px;\n }\n }\n"])));
|
|
30
|
+
var StyledCompactExportSection = (0, _styledComponents["default"])(_styledComponents2.StyledExportSection)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n margin: 5px 0;\n"])));
|
|
30
31
|
var nop = function nop() {
|
|
31
32
|
return;
|
|
32
33
|
};
|
|
@@ -148,7 +149,7 @@ function SaveMapModalFactory() {
|
|
|
148
149
|
target: "_blank",
|
|
149
150
|
rel: "noopener noreferrer",
|
|
150
151
|
style: PROVIDER_MANAGER_URL_STYLE
|
|
151
|
-
}, "Go to your Kepler.gl ", provider.displayName, " page"))) : null, /*#__PURE__*/_react["default"].createElement(
|
|
152
|
+
}, "Go to your Kepler.gl ", provider.displayName, " page"))) : null, /*#__PURE__*/_react["default"].createElement(StyledCompactExportSection, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
152
153
|
className: "description image-preview-panel"
|
|
153
154
|
}, /*#__PURE__*/_react["default"].createElement(_imagePreview["default"], {
|
|
154
155
|
exportImage: exportImage,
|
|
@@ -176,4 +177,4 @@ function SaveMapModalFactory() {
|
|
|
176
177
|
return SaveMapModal;
|
|
177
178
|
}
|
|
178
179
|
var _default = exports["default"] = SaveMapModalFactory;
|
|
179
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfaW1hZ2VNb2RhbENvbnRhaW5lciIsIl9mbGV4Q29udGFpbmVyIiwiX3N0YXR1c1BhbmVsIiwiX3Byb3ZpZGVyU2VsZWN0IiwiX2NvbnN0YW50cyIsIl9zdHlsZWRDb21wb25lbnRzMiIsIl9pbWFnZVByZXZpZXciLCJfbG9jYWxpemF0aW9uIiwiX21vZGFsIiwiX3VzZUNsb3VkTGlzdFByb3ZpZGVyMiIsIl90ZW1wbGF0ZU9iamVjdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIlN0eWxlZFNhdmVNYXBNb2RhbCIsInN0eWxlZCIsImRpdiIsImF0dHJzIiwiY2xhc3NOYW1lIiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJub3AiLCJURVhUX0FSRUFfTElHSFRfU1RZTEUiLCJyZXNpemUiLCJNYXBJbmZvUGFuZWwiLCJleHBvcnRzIiwiX3JlZiIsIm1hcEluZm8iLCJjaGFyYWN0ZXJMaW1pdHMiLCJvbkNoYW5nZUlucHV0IiwiX21hcEluZm8kZGVzY3JpcHRpb24iLCJkZXNjcmlwdGlvbiIsIl9tYXBJbmZvJHRpdGxlIiwidGl0bGUiLCJjcmVhdGVFbGVtZW50IiwiZGF0YVRlc3RJZHMiLCJwcm92aWRlck1hcEluZm9QYW5lbCIsIlN0eWxlZE1vZGFsU2VjdGlvbiIsIklucHV0TGlnaHQiLCJpZCIsInR5cGUiLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwicGxhY2Vob2xkZXIiLCJGbGV4Q29udGFpbmVyIiwiVGV4dEFyZWFMaWdodCIsInJvd3MiLCJzdHlsZSIsIlN0eWxlZE1vZGFsSW5wdXRGb290bm90ZSIsImVycm9yIiwiQm9vbGVhbiIsImxlbmd0aCIsIk51bWJlciIsIk1BUF9JTkZPX0NIQVJBQ1RFUiIsIlNhdmVNYXBIZWFkZXIiLCJfcmVmMiIsImNsb3VkUHJvdmlkZXJzIiwiU3R5bGVkRXhwb3J0U2VjdGlvbiIsIkZvcm1hdHRlZE1lc3NhZ2UiLCJQcm92aWRlclNlbGVjdCIsIlNUWUxFRF9FWFBPUlRfU0VDVElPTl9TVFlMRSIsIm1hcmdpbiIsIlBST1ZJREVSX01BTkFHRVJfVVJMX1NUWUxFIiwidGV4dERlY29yYXRpb24iLCJTYXZlTWFwTW9kYWxGYWN0b3J5IiwiU2F2ZU1hcE1vZGFsIiwiX3JlZjMiLCJleHBvcnRJbWFnZSIsIl9yZWYzJGNoYXJhY3RlckxpbWl0cyIsImlzUHJvdmlkZXJMb2FkaW5nIiwicHJvdmlkZXJFcnJvciIsIl9yZWYzJG9uVXBkYXRlSW1hZ2VTZSIsIm9uVXBkYXRlSW1hZ2VTZXR0aW5nIiwiY2xlYW51cEV4cG9ydEltYWdlIiwib25TZXRNYXBJbmZvIiwib25DYW5jZWwiLCJvbkNvbmZpcm0iLCJfdXNlQ2xvdWRMaXN0UHJvdmlkZXIiLCJ1c2VDbG91ZExpc3RQcm92aWRlciIsInByb3ZpZGVyIiwia2V5IiwiX3JlZjQiLCJ0YXJnZXQiLCJfZGVmaW5lUHJvcGVydHkyIiwiY29uZmlybUJ1dHRvbiIsInVzZU1lbW8iLCJsYXJnZSIsImRpc2FibGVkIiwiY2hpbGRyZW4iLCJjb25maXJtIiwidXNlQ2FsbGJhY2siLCJTdHlsZWRNb2RhbENvbnRlbnQiLCJGcmFnbWVudCIsImdldE1hbmFnZW1lbnRVcmwiLCJocmVmIiwicmVsIiwiZGlzcGxheU5hbWUiLCJ3aWR0aCIsIk1BUF9USFVNQk5BSUxfRElNRU5TSU9OIiwic2hvd0RpbWVuc2lvbiIsInByb3ZpZGVyTG9hZGluZyIsIlVwbG9hZEFuaW1hdGlvbiIsImljb24iLCJpc0xvYWRpbmciLCJtZXNzYWdlIiwicHJvdmlkZXJJY29uIiwiTW9kYWxGb290ZXIiLCJjYW5jZWwiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RhbHMvc2F2ZS1tYXAtbW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VNZW1vfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBJbWFnZU1vZGFsQ29udGFpbmVyLCB7SW1hZ2VNb2RhbENvbnRhaW5lclByb3BzfSBmcm9tICcuL2ltYWdlLW1vZGFsLWNvbnRhaW5lcic7XG5pbXBvcnQge0ZsZXhDb250YWluZXJ9IGZyb20gJy4uL2NvbW1vbi9mbGV4LWNvbnRhaW5lcic7XG5pbXBvcnQgU3RhdHVzUGFuZWwsIHtVcGxvYWRBbmltYXRpb259IGZyb20gJy4vc3RhdHVzLXBhbmVsJztcbmltcG9ydCB7UHJvdmlkZXJTZWxlY3R9IGZyb20gJy4vY2xvdWQtY29tcG9uZW50cy9wcm92aWRlci1zZWxlY3QnO1xuaW1wb3J0IHtcbiAgTUFQX1RIVU1CTkFJTF9ESU1FTlNJT04sXG4gIE1BUF9JTkZPX0NIQVJBQ1RFUixcbiAgRXhwb3J0SW1hZ2UsXG4gIGRhdGFUZXN0SWRzXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuaW1wb3J0IHtcbiAgU3R5bGVkTW9kYWxDb250ZW50LFxuICBJbnB1dExpZ2h0LFxuICBUZXh0QXJlYUxpZ2h0LFxuICBTdHlsZWRFeHBvcnRTZWN0aW9uLFxuICBTdHlsZWRNb2RhbFNlY3Rpb24sXG4gIFN0eWxlZE1vZGFsSW5wdXRGb290bm90ZVxufSBmcm9tICcuLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IEltYWdlUHJldmlldyBmcm9tICcuLi9jb21tb24vaW1hZ2UtcHJldmlldyc7XG5pbXBvcnQge0Zvcm1hdHRlZE1lc3NhZ2V9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcbmltcG9ydCB7TWFwSW5mb30gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1Byb3ZpZGVyfSBmcm9tICdAa2VwbGVyLmdsL2Nsb3VkLXByb3ZpZGVycyc7XG5pbXBvcnQge3NldE1hcEluZm8sIGNsZWFudXBFeHBvcnRJbWFnZSBhcyBjbGVhbnVwRXhwb3J0SW1hZ2VBY3Rpb259IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge01vZGFsRm9vdGVyfSBmcm9tICcuLi9jb21tb24vbW9kYWwnO1xuaW1wb3J0IHt1c2VDbG91ZExpc3RQcm92aWRlcn0gZnJvbSAnLi4vaG9va3MvdXNlLWNsb3VkLWxpc3QtcHJvdmlkZXInO1xuXG5jb25zdCBTdHlsZWRTYXZlTWFwTW9kYWwgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnc2F2ZS1tYXAtbW9kYWwnXG59KWBcbiAgLnNhdmUtbWFwLW1vZGFsLWNvbnRlbnQge1xuICAgIG1pbi1oZWlnaHQ6IDQwMHB4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIH1cblxuICAuZGVzY3JpcHRpb24ge1xuICAgIHdpZHRoOiAzMDBweDtcbiAgfVxuXG4gIC5pbWFnZS1wcmV2aWV3LXBhbmVsIHtcbiAgICB3aWR0aDogMzAwcHg7XG5cbiAgICAuaW1hZ2UtcHJldmlldyB7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgIH1cbiAgfVxuXG4gIC5tYXAtaW5mby1wYW5lbCB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgfVxuXG4gIC5zYXZlLW1hcC1tb2RhbC1kZXNjcmlwdGlvbiB7XG4gICAgLm1vZGFsLXNlY3Rpb24tc3VidGl0bGUge1xuICAgICAgbWFyZ2luLWxlZnQ6IDZweDtcbiAgICB9XG4gIH1cbmA7XG5cbmNvbnN0IG5vcCA9ICgpID0+IHtcbiAgcmV0dXJuO1xufTtcbmNvbnN0IFRFWFRfQVJFQV9MSUdIVF9TVFlMRSA9IHtyZXNpemU6ICdub25lJ307XG5cbnR5cGUgQ2hhcmFjdGVyTGltaXRzID0ge1xuICB0aXRsZT86IG51bWJlcjtcbiAgZGVzY3JpcHRpb24/OiBudW1iZXI7XG59O1xuXG50eXBlIFNhdmVNYXBNb2RhbFByb3BzID0ge1xuICBtYXBJbmZvOiBNYXBJbmZvO1xuICBleHBvcnRJbWFnZTogRXhwb3J0SW1hZ2U7XG4gIGlzUHJvdmlkZXJMb2FkaW5nOiBib29sZWFuO1xuICBwcm92aWRlckVycm9yPzogRXJyb3I7XG4gIGNoYXJhY3RlckxpbWl0cz86IENoYXJhY3RlckxpbWl0cztcblxuICAvLyBjYWxsYmFja3NcbiAgb25VcGRhdGVJbWFnZVNldHRpbmc6IEltYWdlTW9kYWxDb250YWluZXJQcm9wc1snb25VcGRhdGVJbWFnZVNldHRpbmcnXTtcbiAgY2xlYW51cEV4cG9ydEltYWdlOiB0eXBlb2YgY2xlYW51cEV4cG9ydEltYWdlQWN0aW9uO1xuICBvblNldE1hcEluZm86IHR5cGVvZiBzZXRNYXBJbmZvO1xuICBvbkNvbmZpcm06IChwcm92aWRlcjogUHJvdmlkZXIpID0+IHZvaWQ7XG4gIG9uQ2FuY2VsOiAoKSA9PiB2b2lkO1xufTtcblxudHlwZSBNYXBJbmZvUGFuZWxQcm9wcyA9IFBpY2s8U2F2ZU1hcE1vZGFsUHJvcHMsICdtYXBJbmZvJyB8ICdjaGFyYWN0ZXJMaW1pdHMnPiAmIHtcbiAgb25DaGFuZ2VJbnB1dDogKFxuICAgIHR5cGU6IHN0cmluZyxcbiAgICBldmVudDogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudCB8IEhUTUxJbnB1dEVsZW1lbnQ+XG4gICkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCBjb25zdCBNYXBJbmZvUGFuZWw6IFJlYWN0LkZDPE1hcEluZm9QYW5lbFByb3BzPiA9ICh7XG4gIG1hcEluZm8sXG4gIGNoYXJhY3RlckxpbWl0cyxcbiAgb25DaGFuZ2VJbnB1dFxufSkgPT4ge1xuICBjb25zdCB7ZGVzY3JpcHRpb24gPSAnJywgdGl0bGUgPSAnJ30gPSBtYXBJbmZvO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwic2VsZWN0aW9uIG1hcC1pbmZvLXBhbmVsXCIgZGF0YS10ZXN0aWQ9e2RhdGFUZXN0SWRzLnByb3ZpZGVyTWFwSW5mb1BhbmVsfT5cbiAgICAgIDxTdHlsZWRNb2RhbFNlY3Rpb24gY2xhc3NOYW1lPVwic2F2ZS1tYXAtbW9kYWwtbmFtZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLXNlY3Rpb24tdGl0bGVcIj5OYW1lKjwvZGl2PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxJbnB1dExpZ2h0XG4gICAgICAgICAgICBpZD1cIm1hcC10aXRsZVwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICB2YWx1ZT17dGl0bGV9XG4gICAgICAgICAgICBvbkNoYW5nZT17ZSA9PiBvbkNoYW5nZUlucHV0KCd0aXRsZScsIGUpfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJUeXBlIG1hcCB0aXRsZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L1N0eWxlZE1vZGFsU2VjdGlvbj5cbiAgICAgIDxTdHlsZWRNb2RhbFNlY3Rpb24+XG4gICAgICAgIDxGbGV4Q29udGFpbmVyIGNsYXNzTmFtZT1cInNhdmUtbWFwLW1vZGFsLWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtb2RhbC1zZWN0aW9uLXRpdGxlXCI+RGVzY3JpcHRpb248L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLXNlY3Rpb24tc3VidGl0bGVcIj4ob3B0aW9uYWwpPC9kaXY+XG4gICAgICAgIDwvRmxleENvbnRhaW5lcj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8VGV4dEFyZWFMaWdodFxuICAgICAgICAgICAgcm93cz17M31cbiAgICAgICAgICAgIGlkPVwibWFwLWRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgIHN0eWxlPXtURVhUX0FSRUFfTElHSFRfU1RZTEUgYXMgUmVhY3QuQ1NTUHJvcGVydGllc31cbiAgICAgICAgICAgIHZhbHVlPXtkZXNjcmlwdGlvbn1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtlID0+IG9uQ2hhbmdlSW5wdXQoJ2Rlc2NyaXB0aW9uJywgZSl9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlR5cGUgbWFwIGRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPFN0eWxlZE1vZGFsSW5wdXRGb290bm90ZVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIEJvb2xlYW4oY2hhcmFjdGVyTGltaXRzPy5kZXNjcmlwdGlvbikgJiZcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uLmxlbmd0aCA+IE51bWJlcihjaGFyYWN0ZXJMaW1pdHM/LmRlc2NyaXB0aW9uKVxuICAgICAgICAgIH1cbiAgICAgICAgPlxuICAgICAgICAgIHtkZXNjcmlwdGlvbi5sZW5ndGh9L3tjaGFyYWN0ZXJMaW1pdHM/LmRlc2NyaXB0aW9uIHx8IE1BUF9JTkZPX0NIQVJBQ1RFUi5kZXNjcmlwdGlvbn17JyAnfVxuICAgICAgICAgIGNoYXJhY3RlcnNcbiAgICAgICAgPC9TdHlsZWRNb2RhbElucHV0Rm9vdG5vdGU+XG4gICAgICA8L1N0eWxlZE1vZGFsU2VjdGlvbj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmNvbnN0IFNhdmVNYXBIZWFkZXIgPSAoe2Nsb3VkUHJvdmlkZXJzfSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxTdHlsZWRFeHBvcnRTZWN0aW9uPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpdGxlXCI+XG4gICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9eydtb2RhbC5zYXZlTWFwLnRpdGxlJ30gLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3VidGl0bGVcIj5cbiAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17J21vZGFsLnNhdmVNYXAuc3VidGl0bGUnfSAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPFByb3ZpZGVyU2VsZWN0IGNsb3VkUHJvdmlkZXJzPXtjbG91ZFByb3ZpZGVyc30gLz5cbiAgICA8L1N0eWxlZEV4cG9ydFNlY3Rpb24+XG4gICk7XG59O1xuXG5jb25zdCBTVFlMRURfRVhQT1JUX1NFQ1RJT05fU1RZTEUgPSB7bWFyZ2luOiAnMnB4IDAnfTtcbmNvbnN0IFBST1ZJREVSX01BTkFHRVJfVVJMX1NUWUxFID0ge3RleHREZWNvcmF0aW9uOiAndW5kZXJsaW5lJ307XG5cbmZ1bmN0aW9uIFNhdmVNYXBNb2RhbEZhY3RvcnkoKSB7XG4gIGNvbnN0IFNhdmVNYXBNb2RhbDogUmVhY3QuRkM8U2F2ZU1hcE1vZGFsUHJvcHM+ID0gKHtcbiAgICBtYXBJbmZvLFxuICAgIGV4cG9ydEltYWdlLFxuICAgIGNoYXJhY3RlckxpbWl0cyA9IE1BUF9JTkZPX0NIQVJBQ1RFUixcbiAgICBpc1Byb3ZpZGVyTG9hZGluZyxcbiAgICBwcm92aWRlckVycm9yLFxuICAgIG9uVXBkYXRlSW1hZ2VTZXR0aW5nID0gbm9wLFxuICAgIGNsZWFudXBFeHBvcnRJbWFnZSxcbiAgICBvblNldE1hcEluZm8sXG4gICAgb25DYW5jZWwsXG4gICAgb25Db25maXJtXG4gIH0pID0+IHtcbiAgICBjb25zdCB7cHJvdmlkZXIsIGNsb3VkUHJvdmlkZXJzfSA9IHVzZUNsb3VkTGlzdFByb3ZpZGVyKCk7XG5cbiAgICBjb25zdCBvbkNoYW5nZUlucHV0ID0gKFxuICAgICAga2V5OiBzdHJpbmcsXG4gICAgICB7dGFyZ2V0OiB7dmFsdWV9fTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudCB8IEhUTUxJbnB1dEVsZW1lbnQ+XG4gICAgKSA9PiB7XG4gICAgICBvblNldE1hcEluZm8oe1trZXldOiB2YWx1ZX0pO1xuICAgIH07XG5cbiAgICBjb25zdCBjb25maXJtQnV0dG9uID0gdXNlTWVtbyhcbiAgICAgICgpID0+ICh7XG4gICAgICAgIGxhcmdlOiB0cnVlLFxuICAgICAgICBkaXNhYmxlZDogQm9vbGVhbighKHByb3ZpZGVyICYmIG1hcEluZm8udGl0bGUpKSxcbiAgICAgICAgY2hpbGRyZW46ICdtb2RhbC5idXR0b24uc2F2ZSdcbiAgICAgIH0pLFxuICAgICAgW3Byb3ZpZGVyLCBtYXBJbmZvXVxuICAgICk7XG5cbiAgICBjb25zdCBjb25maXJtID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKHByb3ZpZGVyKSB7XG4gICAgICAgIG9uQ29uZmlybShwcm92aWRlcik7XG4gICAgICB9XG4gICAgfSwgW29uQ29uZmlybSwgcHJvdmlkZXJdKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8SW1hZ2VNb2RhbENvbnRhaW5lclxuICAgICAgICBwcm92aWRlcj17cHJvdmlkZXJ9XG4gICAgICAgIG9uVXBkYXRlSW1hZ2VTZXR0aW5nPXtvblVwZGF0ZUltYWdlU2V0dGluZ31cbiAgICAgICAgY2xlYW51cEV4cG9ydEltYWdlPXtjbGVhbnVwRXhwb3J0SW1hZ2V9XG4gICAgICA+XG4gICAgICAgIDxTdHlsZWRTYXZlTWFwTW9kYWw+XG4gICAgICAgICAgPFN0eWxlZE1vZGFsQ29udGVudCBjbGFzc05hbWU9XCJzYXZlLW1hcC1tb2RhbC1jb250ZW50XCI+XG4gICAgICAgICAgICA8U2F2ZU1hcEhlYWRlciBjbG91ZFByb3ZpZGVycz17Y2xvdWRQcm92aWRlcnN9IC8+XG4gICAgICAgICAgICB7cHJvdmlkZXIgJiYgKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIHtwcm92aWRlci5nZXRNYW5hZ2VtZW50VXJsID8gKFxuICAgICAgICAgICAgICAgICAgPFN0eWxlZEV4cG9ydFNlY3Rpb24gc3R5bGU9e1NUWUxFRF9FWFBPUlRfU0VDVElPTl9TVFlMRX0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2VsZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e3Byb3ZpZGVyLmdldE1hbmFnZW1lbnRVcmwoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtQUk9WSURFUl9NQU5BR0VSX1VSTF9TVFlMRX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBHbyB0byB5b3VyIEtlcGxlci5nbCB7cHJvdmlkZXIuZGlzcGxheU5hbWV9IHBhZ2VcbiAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9TdHlsZWRFeHBvcnRTZWN0aW9uPlxuICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDxTdHlsZWRFeHBvcnRTZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkZXNjcmlwdGlvbiBpbWFnZS1wcmV2aWV3LXBhbmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxJbWFnZVByZXZpZXdcbiAgICAgICAgICAgICAgICAgICAgICBleHBvcnRJbWFnZT17ZXhwb3J0SW1hZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e01BUF9USFVNQk5BSUxfRElNRU5TSU9OLndpZHRofVxuICAgICAgICAgICAgICAgICAgICAgIHNob3dEaW1lbnNpb249e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB7aXNQcm92aWRlckxvYWRpbmcgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZHMucHJvdmlkZXJMb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInNlbGVjdGlvbiBtYXAtc2F2aW5nLWFuaW1hdGlvblwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8VXBsb2FkQW5pbWF0aW9uIGljb249e3Byb3ZpZGVyICYmIHByb3ZpZGVyLmljb259IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPE1hcEluZm9QYW5lbFxuICAgICAgICAgICAgICAgICAgICAgIG1hcEluZm89e21hcEluZm99XG4gICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyTGltaXRzPXtjaGFyYWN0ZXJMaW1pdHN9XG4gICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VJbnB1dD17b25DaGFuZ2VJbnB1dH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9TdHlsZWRFeHBvcnRTZWN0aW9uPlxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7cHJvdmlkZXJFcnJvciA/IChcbiAgICAgICAgICAgICAgPFN0YXR1c1BhbmVsXG4gICAgICAgICAgICAgICAgaXNMb2FkaW5nPXtmYWxzZX1cbiAgICAgICAgICAgICAgICBlcnJvcj17cHJvdmlkZXJFcnJvci5tZXNzYWdlfVxuICAgICAgICAgICAgICAgIHByb3ZpZGVySWNvbj17cHJvdmlkZXIgJiYgcHJvdmlkZXIuaWNvbn1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvU3R5bGVkTW9kYWxDb250ZW50PlxuICAgICAgICA8L1N0eWxlZFNhdmVNYXBNb2RhbD5cbiAgICAgICAgPE1vZGFsRm9vdGVyIGNhbmNlbD17b25DYW5jZWx9IGNvbmZpcm09e2NvbmZpcm19IGNvbmZpcm1CdXR0b249e2NvbmZpcm1CdXR0b259IC8+XG4gICAgICA8L0ltYWdlTW9kYWxDb250YWluZXI+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gU2F2ZU1hcE1vZGFsO1xufVxuXG5leHBvcnQgZGVmYXVsdCBTYXZlTWFwTW9kYWxGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLG9CQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxjQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxZQUFBLEdBQUFOLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxlQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxVQUFBLEdBQUFQLE9BQUE7QUFPQSxJQUFBUSxrQkFBQSxHQUFBUixPQUFBO0FBUUEsSUFBQVMsYUFBQSxHQUFBUCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVUsYUFBQSxHQUFBVixPQUFBO0FBSUEsSUFBQVcsTUFBQSxHQUFBWCxPQUFBO0FBQ0EsSUFBQVksc0JBQUEsR0FBQVosT0FBQTtBQUFzRSxJQUFBYSxlQUFBLEVBOUJ0RTtBQUNBO0FBQUEsU0FBQUMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FB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
|
|
180
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfaW1hZ2VNb2RhbENvbnRhaW5lciIsIl9mbGV4Q29udGFpbmVyIiwiX3N0YXR1c1BhbmVsIiwiX3Byb3ZpZGVyU2VsZWN0IiwiX2NvbnN0YW50cyIsIl9zdHlsZWRDb21wb25lbnRzMiIsIl9pbWFnZVByZXZpZXciLCJfbG9jYWxpemF0aW9uIiwiX21vZGFsIiwiX3VzZUNsb3VkTGlzdFByb3ZpZGVyMiIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJTdHlsZWRTYXZlTWFwTW9kYWwiLCJzdHlsZWQiLCJkaXYiLCJhdHRycyIsImNsYXNzTmFtZSIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwiU3R5bGVkQ29tcGFjdEV4cG9ydFNlY3Rpb24iLCJTdHlsZWRFeHBvcnRTZWN0aW9uIiwibm9wIiwiVEVYVF9BUkVBX0xJR0hUX1NUWUxFIiwicmVzaXplIiwiTWFwSW5mb1BhbmVsIiwiZXhwb3J0cyIsIl9yZWYiLCJtYXBJbmZvIiwiY2hhcmFjdGVyTGltaXRzIiwib25DaGFuZ2VJbnB1dCIsIl9tYXBJbmZvJGRlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb24iLCJfbWFwSW5mbyR0aXRsZSIsInRpdGxlIiwiY3JlYXRlRWxlbWVudCIsImRhdGFUZXN0SWRzIiwicHJvdmlkZXJNYXBJbmZvUGFuZWwiLCJTdHlsZWRNb2RhbFNlY3Rpb24iLCJJbnB1dExpZ2h0IiwiaWQiLCJ0eXBlIiwidmFsdWUiLCJvbkNoYW5nZSIsInBsYWNlaG9sZGVyIiwiRmxleENvbnRhaW5lciIsIlRleHRBcmVhTGlnaHQiLCJyb3dzIiwic3R5bGUiLCJTdHlsZWRNb2RhbElucHV0Rm9vdG5vdGUiLCJlcnJvciIsIkJvb2xlYW4iLCJsZW5ndGgiLCJOdW1iZXIiLCJNQVBfSU5GT19DSEFSQUNURVIiLCJTYXZlTWFwSGVhZGVyIiwiX3JlZjIiLCJjbG91ZFByb3ZpZGVycyIsIkZvcm1hdHRlZE1lc3NhZ2UiLCJQcm92aWRlclNlbGVjdCIsIlNUWUxFRF9FWFBPUlRfU0VDVElPTl9TVFlMRSIsIm1hcmdpbiIsIlBST1ZJREVSX01BTkFHRVJfVVJMX1NUWUxFIiwidGV4dERlY29yYXRpb24iLCJTYXZlTWFwTW9kYWxGYWN0b3J5IiwiU2F2ZU1hcE1vZGFsIiwiX3JlZjMiLCJleHBvcnRJbWFnZSIsIl9yZWYzJGNoYXJhY3RlckxpbWl0cyIsImlzUHJvdmlkZXJMb2FkaW5nIiwicHJvdmlkZXJFcnJvciIsIl9yZWYzJG9uVXBkYXRlSW1hZ2VTZSIsIm9uVXBkYXRlSW1hZ2VTZXR0aW5nIiwiY2xlYW51cEV4cG9ydEltYWdlIiwib25TZXRNYXBJbmZvIiwib25DYW5jZWwiLCJvbkNvbmZpcm0iLCJfdXNlQ2xvdWRMaXN0UHJvdmlkZXIiLCJ1c2VDbG91ZExpc3RQcm92aWRlciIsInByb3ZpZGVyIiwia2V5IiwiX3JlZjQiLCJ0YXJnZXQiLCJfZGVmaW5lUHJvcGVydHkyIiwiY29uZmlybUJ1dHRvbiIsInVzZU1lbW8iLCJsYXJnZSIsImRpc2FibGVkIiwiY2hpbGRyZW4iLCJjb25maXJtIiwidXNlQ2FsbGJhY2siLCJTdHlsZWRNb2RhbENvbnRlbnQiLCJGcmFnbWVudCIsImdldE1hbmFnZW1lbnRVcmwiLCJocmVmIiwicmVsIiwiZGlzcGxheU5hbWUiLCJ3aWR0aCIsIk1BUF9USFVNQk5BSUxfRElNRU5TSU9OIiwic2hvd0RpbWVuc2lvbiIsInByb3ZpZGVyTG9hZGluZyIsIlVwbG9hZEFuaW1hdGlvbiIsImljb24iLCJpc0xvYWRpbmciLCJtZXNzYWdlIiwicHJvdmlkZXJJY29uIiwiTW9kYWxGb290ZXIiLCJjYW5jZWwiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RhbHMvc2F2ZS1tYXAtbW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VNZW1vfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBJbWFnZU1vZGFsQ29udGFpbmVyLCB7SW1hZ2VNb2RhbENvbnRhaW5lclByb3BzfSBmcm9tICcuL2ltYWdlLW1vZGFsLWNvbnRhaW5lcic7XG5pbXBvcnQge0ZsZXhDb250YWluZXJ9IGZyb20gJy4uL2NvbW1vbi9mbGV4LWNvbnRhaW5lcic7XG5pbXBvcnQgU3RhdHVzUGFuZWwsIHtVcGxvYWRBbmltYXRpb259IGZyb20gJy4vc3RhdHVzLXBhbmVsJztcbmltcG9ydCB7UHJvdmlkZXJTZWxlY3R9IGZyb20gJy4vY2xvdWQtY29tcG9uZW50cy9wcm92aWRlci1zZWxlY3QnO1xuaW1wb3J0IHtcbiAgTUFQX1RIVU1CTkFJTF9ESU1FTlNJT04sXG4gIE1BUF9JTkZPX0NIQVJBQ1RFUixcbiAgRXhwb3J0SW1hZ2UsXG4gIGRhdGFUZXN0SWRzXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuaW1wb3J0IHtcbiAgU3R5bGVkTW9kYWxDb250ZW50LFxuICBJbnB1dExpZ2h0LFxuICBUZXh0QXJlYUxpZ2h0LFxuICBTdHlsZWRFeHBvcnRTZWN0aW9uLFxuICBTdHlsZWRNb2RhbFNlY3Rpb24sXG4gIFN0eWxlZE1vZGFsSW5wdXRGb290bm90ZVxufSBmcm9tICcuLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IEltYWdlUHJldmlldyBmcm9tICcuLi9jb21tb24vaW1hZ2UtcHJldmlldyc7XG5pbXBvcnQge0Zvcm1hdHRlZE1lc3NhZ2V9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcbmltcG9ydCB7TWFwSW5mb30gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1Byb3ZpZGVyfSBmcm9tICdAa2VwbGVyLmdsL2Nsb3VkLXByb3ZpZGVycyc7XG5pbXBvcnQge3NldE1hcEluZm8sIGNsZWFudXBFeHBvcnRJbWFnZSBhcyBjbGVhbnVwRXhwb3J0SW1hZ2VBY3Rpb259IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge01vZGFsRm9vdGVyfSBmcm9tICcuLi9jb21tb24vbW9kYWwnO1xuaW1wb3J0IHt1c2VDbG91ZExpc3RQcm92aWRlcn0gZnJvbSAnLi4vaG9va3MvdXNlLWNsb3VkLWxpc3QtcHJvdmlkZXInO1xuXG5jb25zdCBTdHlsZWRTYXZlTWFwTW9kYWwgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnc2F2ZS1tYXAtbW9kYWwnXG59KWBcbiAgLnNhdmUtbWFwLW1vZGFsLWNvbnRlbnQge1xuICAgIG1pbi1oZWlnaHQ6IDQwMHB4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIH1cblxuICAuZGVzY3JpcHRpb24ge1xuICAgIHdpZHRoOiAzMDBweDtcbiAgfVxuXG4gIC5pbWFnZS1wcmV2aWV3LXBhbmVsIHtcbiAgICB3aWR0aDogMzAwcHg7XG5cbiAgICAuaW1hZ2UtcHJldmlldyB7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgIH1cbiAgfVxuXG4gIC5tYXAtaW5mby1wYW5lbCB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgfVxuXG4gIC5zYXZlLW1hcC1tb2RhbC1kZXNjcmlwdGlvbiB7XG4gICAgLm1vZGFsLXNlY3Rpb24tc3VidGl0bGUge1xuICAgICAgbWFyZ2luLWxlZnQ6IDZweDtcbiAgICB9XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZENvbXBhY3RFeHBvcnRTZWN0aW9uID0gc3R5bGVkKFN0eWxlZEV4cG9ydFNlY3Rpb24pYFxuICBtYXJnaW46IDVweCAwO1xuYDtcblxuY29uc3Qgbm9wID0gKCkgPT4ge1xuICByZXR1cm47XG59O1xuY29uc3QgVEVYVF9BUkVBX0xJR0hUX1NUWUxFID0ge3Jlc2l6ZTogJ25vbmUnfTtcblxudHlwZSBDaGFyYWN0ZXJMaW1pdHMgPSB7XG4gIHRpdGxlPzogbnVtYmVyO1xuICBkZXNjcmlwdGlvbj86IG51bWJlcjtcbn07XG5cbnR5cGUgU2F2ZU1hcE1vZGFsUHJvcHMgPSB7XG4gIG1hcEluZm86IE1hcEluZm87XG4gIGV4cG9ydEltYWdlOiBFeHBvcnRJbWFnZTtcbiAgaXNQcm92aWRlckxvYWRpbmc6IGJvb2xlYW47XG4gIHByb3ZpZGVyRXJyb3I/OiBFcnJvcjtcbiAgY2hhcmFjdGVyTGltaXRzPzogQ2hhcmFjdGVyTGltaXRzO1xuXG4gIC8vIGNhbGxiYWNrc1xuICBvblVwZGF0ZUltYWdlU2V0dGluZzogSW1hZ2VNb2RhbENvbnRhaW5lclByb3BzWydvblVwZGF0ZUltYWdlU2V0dGluZyddO1xuICBjbGVhbnVwRXhwb3J0SW1hZ2U6IHR5cGVvZiBjbGVhbnVwRXhwb3J0SW1hZ2VBY3Rpb247XG4gIG9uU2V0TWFwSW5mbzogdHlwZW9mIHNldE1hcEluZm87XG4gIG9uQ29uZmlybTogKHByb3ZpZGVyOiBQcm92aWRlcikgPT4gdm9pZDtcbiAgb25DYW5jZWw6ICgpID0+IHZvaWQ7XG59O1xuXG50eXBlIE1hcEluZm9QYW5lbFByb3BzID0gUGljazxTYXZlTWFwTW9kYWxQcm9wcywgJ21hcEluZm8nIHwgJ2NoYXJhY3RlckxpbWl0cyc+ICYge1xuICBvbkNoYW5nZUlucHV0OiAoXG4gICAgdHlwZTogc3RyaW5nLFxuICAgIGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50IHwgSFRNTElucHV0RWxlbWVudD5cbiAgKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IGNvbnN0IE1hcEluZm9QYW5lbDogUmVhY3QuRkM8TWFwSW5mb1BhbmVsUHJvcHM+ID0gKHtcbiAgbWFwSW5mbyxcbiAgY2hhcmFjdGVyTGltaXRzLFxuICBvbkNoYW5nZUlucHV0XG59KSA9PiB7XG4gIGNvbnN0IHtkZXNjcmlwdGlvbiA9ICcnLCB0aXRsZSA9ICcnfSA9IG1hcEluZm87XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJzZWxlY3Rpb24gbWFwLWluZm8tcGFuZWxcIiBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZHMucHJvdmlkZXJNYXBJbmZvUGFuZWx9PlxuICAgICAgPFN0eWxlZE1vZGFsU2VjdGlvbiBjbGFzc05hbWU9XCJzYXZlLW1hcC1tb2RhbC1uYW1lXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtc2VjdGlvbi10aXRsZVwiPk5hbWUqPC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPElucHV0TGlnaHRcbiAgICAgICAgICAgIGlkPVwibWFwLXRpdGxlXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIHZhbHVlPXt0aXRsZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtlID0+IG9uQ2hhbmdlSW5wdXQoJ3RpdGxlJywgZSl9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlR5cGUgbWFwIHRpdGxlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvU3R5bGVkTW9kYWxTZWN0aW9uPlxuICAgICAgPFN0eWxlZE1vZGFsU2VjdGlvbj5cbiAgICAgICAgPEZsZXhDb250YWluZXIgY2xhc3NOYW1lPVwic2F2ZS1tYXAtbW9kYWwtZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLXNlY3Rpb24tdGl0bGVcIj5EZXNjcmlwdGlvbjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtc2VjdGlvbi1zdWJ0aXRsZVwiPihvcHRpb25hbCk8L2Rpdj5cbiAgICAgICAgPC9GbGV4Q29udGFpbmVyPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxUZXh0QXJlYUxpZ2h0XG4gICAgICAgICAgICByb3dzPXszfVxuICAgICAgICAgICAgaWQ9XCJtYXAtZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgc3R5bGU9e1RFWFRfQVJFQV9MSUdIVF9TVFlMRSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzfVxuICAgICAgICAgICAgdmFsdWU9e2Rlc2NyaXB0aW9ufVxuICAgICAgICAgICAgb25DaGFuZ2U9e2UgPT4gb25DaGFuZ2VJbnB1dCgnZGVzY3JpcHRpb24nLCBlKX1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVHlwZSBtYXAgZGVzY3JpcHRpb25cIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8U3R5bGVkTW9kYWxJbnB1dEZvb3Rub3RlXG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgQm9vbGVhbihjaGFyYWN0ZXJMaW1pdHM/LmRlc2NyaXB0aW9uKSAmJlxuICAgICAgICAgICAgZGVzY3JpcHRpb24ubGVuZ3RoID4gTnVtYmVyKGNoYXJhY3RlckxpbWl0cz8uZGVzY3JpcHRpb24pXG4gICAgICAgICAgfVxuICAgICAgICA+XG4gICAgICAgICAge2Rlc2NyaXB0aW9uLmxlbmd0aH0ve2NoYXJhY3RlckxpbWl0cz8uZGVzY3JpcHRpb24gfHwgTUFQX0lORk9fQ0hBUkFDVEVSLmRlc2NyaXB0aW9ufXsnICd9XG4gICAgICAgICAgY2hhcmFjdGVyc1xuICAgICAgICA8L1N0eWxlZE1vZGFsSW5wdXRGb290bm90ZT5cbiAgICAgIDwvU3R5bGVkTW9kYWxTZWN0aW9uPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuY29uc3QgU2F2ZU1hcEhlYWRlciA9ICh7Y2xvdWRQcm92aWRlcnN9KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPFN0eWxlZEV4cG9ydFNlY3Rpb24+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGl0bGVcIj5cbiAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17J21vZGFsLnNhdmVNYXAudGl0bGUnfSAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzdWJ0aXRsZVwiPlxuICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXsnbW9kYWwuc2F2ZU1hcC5zdWJ0aXRsZSd9IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8UHJvdmlkZXJTZWxlY3QgY2xvdWRQcm92aWRlcnM9e2Nsb3VkUHJvdmlkZXJzfSAvPlxuICAgIDwvU3R5bGVkRXhwb3J0U2VjdGlvbj5cbiAgKTtcbn07XG5cbmNvbnN0IFNUWUxFRF9FWFBPUlRfU0VDVElPTl9TVFlMRSA9IHttYXJnaW46ICcycHggMCd9O1xuY29uc3QgUFJPVklERVJfTUFOQUdFUl9VUkxfU1RZTEUgPSB7dGV4dERlY29yYXRpb246ICd1bmRlcmxpbmUnfTtcblxuZnVuY3Rpb24gU2F2ZU1hcE1vZGFsRmFjdG9yeSgpIHtcbiAgY29uc3QgU2F2ZU1hcE1vZGFsOiBSZWFjdC5GQzxTYXZlTWFwTW9kYWxQcm9wcz4gPSAoe1xuICAgIG1hcEluZm8sXG4gICAgZXhwb3J0SW1hZ2UsXG4gICAgY2hhcmFjdGVyTGltaXRzID0gTUFQX0lORk9fQ0hBUkFDVEVSLFxuICAgIGlzUHJvdmlkZXJMb2FkaW5nLFxuICAgIHByb3ZpZGVyRXJyb3IsXG4gICAgb25VcGRhdGVJbWFnZVNldHRpbmcgPSBub3AsXG4gICAgY2xlYW51cEV4cG9ydEltYWdlLFxuICAgIG9uU2V0TWFwSW5mbyxcbiAgICBvbkNhbmNlbCxcbiAgICBvbkNvbmZpcm1cbiAgfSkgPT4ge1xuICAgIGNvbnN0IHtwcm92aWRlciwgY2xvdWRQcm92aWRlcnN9ID0gdXNlQ2xvdWRMaXN0UHJvdmlkZXIoKTtcblxuICAgIGNvbnN0IG9uQ2hhbmdlSW5wdXQgPSAoXG4gICAgICBrZXk6IHN0cmluZyxcbiAgICAgIHt0YXJnZXQ6IHt2YWx1ZX19OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50IHwgSFRNTElucHV0RWxlbWVudD5cbiAgICApID0+IHtcbiAgICAgIG9uU2V0TWFwSW5mbyh7W2tleV06IHZhbHVlfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGNvbmZpcm1CdXR0b24gPSB1c2VNZW1vKFxuICAgICAgKCkgPT4gKHtcbiAgICAgICAgbGFyZ2U6IHRydWUsXG4gICAgICAgIGRpc2FibGVkOiBCb29sZWFuKCEocHJvdmlkZXIgJiYgbWFwSW5mby50aXRsZSkpLFxuICAgICAgICBjaGlsZHJlbjogJ21vZGFsLmJ1dHRvbi5zYXZlJ1xuICAgICAgfSksXG4gICAgICBbcHJvdmlkZXIsIG1hcEluZm9dXG4gICAgKTtcblxuICAgIGNvbnN0IGNvbmZpcm0gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBpZiAocHJvdmlkZXIpIHtcbiAgICAgICAgb25Db25maXJtKHByb3ZpZGVyKTtcbiAgICAgIH1cbiAgICB9LCBbb25Db25maXJtLCBwcm92aWRlcl0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxJbWFnZU1vZGFsQ29udGFpbmVyXG4gICAgICAgIHByb3ZpZGVyPXtwcm92aWRlcn1cbiAgICAgICAgb25VcGRhdGVJbWFnZVNldHRpbmc9e29uVXBkYXRlSW1hZ2VTZXR0aW5nfVxuICAgICAgICBjbGVhbnVwRXhwb3J0SW1hZ2U9e2NsZWFudXBFeHBvcnRJbWFnZX1cbiAgICAgID5cbiAgICAgICAgPFN0eWxlZFNhdmVNYXBNb2RhbD5cbiAgICAgICAgICA8U3R5bGVkTW9kYWxDb250ZW50IGNsYXNzTmFtZT1cInNhdmUtbWFwLW1vZGFsLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxTYXZlTWFwSGVhZGVyIGNsb3VkUHJvdmlkZXJzPXtjbG91ZFByb3ZpZGVyc30gLz5cbiAgICAgICAgICAgIHtwcm92aWRlciAmJiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAge3Byb3ZpZGVyLmdldE1hbmFnZW1lbnRVcmwgPyAoXG4gICAgICAgICAgICAgICAgICA8U3R5bGVkRXhwb3J0U2VjdGlvbiBzdHlsZT17U1RZTEVEX0VYUE9SVF9TRUNUSU9OX1NUWUxFfT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzZWxlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXsxfVxuICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj17cHJvdmlkZXIuZ2V0TWFuYWdlbWVudFVybCgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e1BST1ZJREVSX01BTkFHRVJfVVJMX1NUWUxFfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIEdvIHRvIHlvdXIgS2VwbGVyLmdsIHtwcm92aWRlci5kaXNwbGF5TmFtZX0gcGFnZVxuICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L1N0eWxlZEV4cG9ydFNlY3Rpb24+XG4gICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPFN0eWxlZENvbXBhY3RFeHBvcnRTZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkZXNjcmlwdGlvbiBpbWFnZS1wcmV2aWV3LXBhbmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxJbWFnZVByZXZpZXdcbiAgICAgICAgICAgICAgICAgICAgICBleHBvcnRJbWFnZT17ZXhwb3J0SW1hZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e01BUF9USFVNQk5BSUxfRElNRU5TSU9OLndpZHRofVxuICAgICAgICAgICAgICAgICAgICAgIHNob3dEaW1lbnNpb249e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB7aXNQcm92aWRlckxvYWRpbmcgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZHMucHJvdmlkZXJMb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInNlbGVjdGlvbiBtYXAtc2F2aW5nLWFuaW1hdGlvblwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8VXBsb2FkQW5pbWF0aW9uIGljb249e3Byb3ZpZGVyICYmIHByb3ZpZGVyLmljb259IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPE1hcEluZm9QYW5lbFxuICAgICAgICAgICAgICAgICAgICAgIG1hcEluZm89e21hcEluZm99XG4gICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyTGltaXRzPXtjaGFyYWN0ZXJMaW1pdHN9XG4gICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VJbnB1dD17b25DaGFuZ2VJbnB1dH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9TdHlsZWRDb21wYWN0RXhwb3J0U2VjdGlvbj5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge3Byb3ZpZGVyRXJyb3IgPyAoXG4gICAgICAgICAgICAgIDxTdGF0dXNQYW5lbFxuICAgICAgICAgICAgICAgIGlzTG9hZGluZz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgZXJyb3I9e3Byb3ZpZGVyRXJyb3IubWVzc2FnZX1cbiAgICAgICAgICAgICAgICBwcm92aWRlckljb249e3Byb3ZpZGVyICYmIHByb3ZpZGVyLmljb259XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8L1N0eWxlZE1vZGFsQ29udGVudD5cbiAgICAgICAgPC9TdHlsZWRTYXZlTWFwTW9kYWw+XG4gICAgICAgIDxNb2RhbEZvb3RlciBjYW5jZWw9e29uQ2FuY2VsfSBjb25maXJtPXtjb25maXJtfSBjb25maXJtQnV0dG9uPXtjb25maXJtQnV0dG9ufSAvPlxuICAgICAgPC9JbWFnZU1vZGFsQ29udGFpbmVyPlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIFNhdmVNYXBNb2RhbDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgU2F2ZU1hcE1vZGFsRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxvQkFBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUksY0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssWUFBQSxHQUFBTix1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0sZUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sVUFBQSxHQUFBUCxPQUFBO0FBT0EsSUFBQVEsa0JBQUEsR0FBQVIsT0FBQTtBQVFBLElBQUFTLGFBQUEsR0FBQVAsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFVLGFBQUEsR0FBQVYsT0FBQTtBQUlBLElBQUFXLE1BQUEsR0FBQVgsT0FBQTtBQUNBLElBQUFZLHNCQUFBLEdBQUFaLE9BQUE7QUFBc0UsSUFBQWEsZUFBQSxFQUFBQyxnQkFBQSxFQTlCdEU7QUFDQTtBQUFBLFNBQUFDLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBakIsd0JBQUFpQixDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEsT0FBQUMsQ0FBQSxJQUFBQSxDQUFBLENBQUFHLEdBQUEsQ0FBQU4sQ0FBQSxVQUFBRyxDQUFBLENBQUFJLEdBQUEsQ0FBQVAsQ0FBQSxPQUFBUSxDQUFBLEtBQUFDLFNBQUEsVUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLGNBQUEsSUFBQUQsTUFBQSxDQUFBRSx3QkFBQSxXQUFBQyxDQUFBLElBQUFkLENBQUEsb0JBQUFjLENBQUEsT0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFoQixDQUFBLEVBQUFjLENBQUEsU0FBQUcsQ0FBQSxHQUFBUCxDQUFBLEdBQUFDLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWIsQ0FBQSxFQUFBYyxDQUFBLFVBQUFHLENBQUEsS0FBQUEsQ0FBQSxDQUFBVixHQUFBLElBQUFVLENBQUEsQ0FBQUMsR0FBQSxJQUFBUCxNQUFBLENBQUFDLGNBQUEsQ0FBQUosQ0FBQSxFQUFBTSxDQUFBLEVBQUFHLENBQUEsSUFBQVQsQ0FBQSxDQUFBTSxDQUFBLElBQUFkLENBQUEsQ0FBQWMsQ0FBQSxZQUFBTixDQUFBLGNBQUFSLENBQUEsRUFBQUcsQ0FBQSxJQUFBQSxDQUFBLENBQUFlLEdBQUEsQ0FBQWxCLENBQUEsRUFBQVEsQ0FBQSxHQUFBQSxDQUFBO0FBK0JBLElBQU1XLGtCQUFrQixHQUFHQyw0QkFBTSxDQUFDQyxHQUFHLENBQUNDLEtBQUssQ0FBQztFQUMxQ0MsU0FBUyxFQUFFO0FBQ2IsQ0FBQyxDQUFDLENBQUExQixlQUFBLEtBQUFBLGVBQUEsT0FBQTJCLHVCQUFBLCtaQTJCRDtBQUVELElBQU1DLDBCQUEwQixHQUFHLElBQUFMLDRCQUFNLEVBQUNNLHNDQUFtQixDQUFDLENBQUE1QixnQkFBQSxLQUFBQSxnQkFBQSxPQUFBMEIsdUJBQUEsd0NBRTdEO0FBRUQsSUFBTUcsR0FBRyxHQUFHLFNBQU5BLEdBQUdBLENBQUEsRUFBUztFQUNoQjtBQUNGLENBQUM7QUFDRCxJQUFNQyxxQkFBcUIsR0FBRztFQUFDQyxNQUFNLEVBQUU7QUFBTSxDQUFDO0FBNkJ2QyxJQUFNQyxZQUF5QyxHQUFBQyxPQUFBLENBQUFELFlBQUEsR0FBRyxTQUE1Q0EsWUFBeUNBLENBQUFFLElBQUEsRUFJaEQ7RUFBQSxJQUhKQyxPQUFPLEdBQUFELElBQUEsQ0FBUEMsT0FBTztJQUNQQyxlQUFlLEdBQUFGLElBQUEsQ0FBZkUsZUFBZTtJQUNmQyxhQUFhLEdBQUFILElBQUEsQ0FBYkcsYUFBYTtFQUViLElBQUFDLG9CQUFBLEdBQXVDSCxPQUFPLENBQXZDSSxXQUFXO0lBQVhBLFdBQVcsR0FBQUQsb0JBQUEsY0FBRyxFQUFFLEdBQUFBLG9CQUFBO0lBQUFFLGNBQUEsR0FBZ0JMLE9BQU8sQ0FBckJNLEtBQUs7SUFBTEEsS0FBSyxHQUFBRCxjQUFBLGNBQUcsRUFBRSxHQUFBQSxjQUFBO0VBQ25DLG9CQUNFeEQsTUFBQSxZQUFBMEQsYUFBQTtJQUFLakIsU0FBUyxFQUFDLDBCQUEwQjtJQUFDLGVBQWFrQixzQkFBVyxDQUFDQztFQUFxQixnQkFDdEY1RCxNQUFBLFlBQUEwRCxhQUFBLENBQUNoRCxrQkFBQSxDQUFBbUQsa0JBQWtCO0lBQUNwQixTQUFTLEVBQUM7RUFBcUIsZ0JBQ2pEekMsTUFBQSxZQUFBMEQsYUFBQTtJQUFLakIsU0FBUyxFQUFDO0VBQXFCLEdBQUMsT0FBVSxDQUFDLGVBQ2hEekMsTUFBQSxZQUFBMEQsYUFBQSwyQkFDRTFELE1BQUEsWUFBQTBELGFBQUEsQ0FBQ2hELGtCQUFBLENBQUFvRCxVQUFVO0lBQ1RDLEVBQUUsRUFBQyxXQUFXO0lBQ2RDLElBQUksRUFBQyxNQUFNO0lBQ1hDLEtBQUssRUFBRVIsS0FBTTtJQUNiUyxRQUFRLEVBQUUsU0FBVkEsUUFBUUEsQ0FBRWhELENBQUM7TUFBQSxPQUFJbUMsYUFBYSxDQUFDLE9BQU8sRUFBRW5DLENBQUMsQ0FBQztJQUFBLENBQUM7SUFDekNpRCxXQUFXLEVBQUM7RUFBZ0IsQ0FDN0IsQ0FDRSxDQUNhLENBQUMsZUFDckJuRSxNQUFBLFlBQUEwRCxhQUFBLENBQUNoRCxrQkFBQSxDQUFBbUQsa0JBQWtCLHFCQUNqQjdELE1BQUEsWUFBQTBELGFBQUEsQ0FBQ3BELGNBQUEsQ0FBQThELGFBQWE7SUFBQzNCLFNBQVMsRUFBQztFQUE0QixnQkFDbkR6QyxNQUFBLFlBQUEwRCxhQUFBO0lBQUtqQixTQUFTLEVBQUM7RUFBcUIsR0FBQyxhQUFnQixDQUFDLGVBQ3REekMsTUFBQSxZQUFBMEQsYUFBQTtJQUFLakIsU0FBUyxFQUFDO0VBQXdCLEdBQUMsWUFBZSxDQUMxQyxDQUFDLGVBQ2hCekMsTUFBQSxZQUFBMEQsYUFBQSwyQkFDRTFELE1BQUEsWUFBQTBELGFBQUEsQ0FBQ2hELGtCQUFBLENBQUEyRCxhQUFhO0lBQ1pDLElBQUksRUFBRSxDQUFFO0lBQ1JQLEVBQUUsRUFBQyxpQkFBaUI7SUFDcEJRLEtBQUssRUFBRXpCLHFCQUE2QztJQUNwRG1CLEtBQUssRUFBRVYsV0FBWTtJQUNuQlcsUUFBUSxFQUFFLFNBQVZBLFFBQVFBLENBQUVoRCxDQUFDO01BQUEsT0FBSW1DLGFBQWEsQ0FBQyxhQUFhLEVBQUVuQyxDQUFDLENBQUM7SUFBQSxDQUFDO0lBQy9DaUQsV0FBVyxFQUFDO0VBQXNCLENBQ25DLENBQ0UsQ0FBQyxlQUNObkUsTUFBQSxZQUFBMEQsYUFBQSxDQUFDaEQsa0JBQUEsQ0FBQThELHdCQUF3QjtJQUN2QkMsS0FBSyxFQUNIQyxPQUFPLENBQUN0QixlQUFlLGFBQWZBLGVBQWUsdUJBQWZBLGVBQWUsQ0FBRUcsV0FBVyxDQUFDLElBQ3JDQSxXQUFXLENBQUNvQixNQUFNLEdBQUdDLE1BQU0sQ0FBQ3hCLGVBQWUsYUFBZkEsZUFBZSx1QkFBZkEsZUFBZSxDQUFFRyxXQUFXO0VBQ3pELEdBRUFBLFdBQVcsQ0FBQ29CLE1BQU0sRUFBQyxHQUFDLEVBQUMsQ0FBQXZCLGVBQWUsYUFBZkEsZUFBZSx1QkFBZkEsZUFBZSxDQUFFRyxXQUFXLEtBQUlzQiw2QkFBa0IsQ0FBQ3RCLFdBQVcsRUFBRSxHQUFHLEVBQUMsWUFFbEUsQ0FDUixDQUNqQixDQUFDO0FBRVYsQ0FBQztBQUVELElBQU11QixhQUFhLEdBQUcsU0FBaEJBLGFBQWFBLENBQUFDLEtBQUEsRUFBeUI7RUFBQSxJQUFwQkMsY0FBYyxHQUFBRCxLQUFBLENBQWRDLGNBQWM7RUFDcEMsb0JBQ0VoRixNQUFBLFlBQUEwRCxhQUFBLENBQUNoRCxrQkFBQSxDQUFBa0MsbUJBQW1CLHFCQUNsQjVDLE1BQUEsWUFBQTBELGFBQUE7SUFBS2pCLFNBQVMsRUFBQztFQUFhLGdCQUMxQnpDLE1BQUEsWUFBQTBELGFBQUE7SUFBS2pCLFNBQVMsRUFBQztFQUFPLGdCQUNwQnpDLE1BQUEsWUFBQTBELGFBQUEsQ0FBQzlDLGFBQUEsQ0FBQXFFLGdCQUFnQjtJQUFDbEIsRUFBRSxFQUFFO0VBQXNCLENBQUUsQ0FDM0MsQ0FBQyxlQUNOL0QsTUFBQSxZQUFBMEQsYUFBQTtJQUFLakIsU0FBUyxFQUFDO0VBQVUsZ0JBQ3ZCekMsTUFBQSxZQUFBMEQsYUFBQSxDQUFDOUMsYUFBQSxDQUFBcUUsZ0JBQWdCO0lBQUNsQixFQUFFLEVBQUU7RUFBeUIsQ0FBRSxDQUM5QyxDQUNGLENBQUMsZUFDTi9ELE1BQUEsWUFBQTBELGFBQUEsQ0FBQ2xELGVBQUEsQ0FBQTBFLGNBQWM7SUFBQ0YsY0FBYyxFQUFFQTtFQUFlLENBQUUsQ0FDOUIsQ0FBQztBQUUxQixDQUFDO0FBRUQsSUFBTUcsMkJBQTJCLEdBQUc7RUFBQ0MsTUFBTSxFQUFFO0FBQU8sQ0FBQztBQUNyRCxJQUFNQywwQkFBMEIsR0FBRztFQUFDQyxjQUFjLEVBQUU7QUFBVyxDQUFDO0FBRWhFLFNBQVNDLG1CQUFtQkEsQ0FBQSxFQUFHO0VBQzdCLElBQU1DLFlBQXlDLEdBQUcsU0FBNUNBLFlBQXlDQSxDQUFBQyxLQUFBLEVBV3pDO0lBQUEsSUFWSnRDLE9BQU8sR0FBQXNDLEtBQUEsQ0FBUHRDLE9BQU87TUFDUHVDLFdBQVcsR0FBQUQsS0FBQSxDQUFYQyxXQUFXO01BQUFDLHFCQUFBLEdBQUFGLEtBQUEsQ0FDWHJDLGVBQWU7TUFBZkEsZUFBZSxHQUFBdUMscUJBQUEsY0FBR2QsNkJBQWtCLEdBQUFjLHFCQUFBO01BQ3BDQyxpQkFBaUIsR0FBQUgsS0FBQSxDQUFqQkcsaUJBQWlCO01BQ2pCQyxhQUFhLEdBQUFKLEtBQUEsQ0FBYkksYUFBYTtNQUFBQyxxQkFBQSxHQUFBTCxLQUFBLENBQ2JNLG9CQUFvQjtNQUFwQkEsb0JBQW9CLEdBQUFELHFCQUFBLGNBQUdqRCxHQUFHLEdBQUFpRCxxQkFBQTtNQUMxQkUsa0JBQWtCLEdBQUFQLEtBQUEsQ0FBbEJPLGtCQUFrQjtNQUNsQkMsWUFBWSxHQUFBUixLQUFBLENBQVpRLFlBQVk7TUFDWkMsUUFBUSxHQUFBVCxLQUFBLENBQVJTLFFBQVE7TUFDUkMsU0FBUyxHQUFBVixLQUFBLENBQVRVLFNBQVM7SUFFVCxJQUFBQyxxQkFBQSxHQUFtQyxJQUFBQywyQ0FBb0IsRUFBQyxDQUFDO01BQWxEQyxRQUFRLEdBQUFGLHFCQUFBLENBQVJFLFFBQVE7TUFBRXRCLGNBQWMsR0FBQW9CLHFCQUFBLENBQWRwQixjQUFjO0lBRS9CLElBQU0zQixhQUFhLEdBQUcsU0FBaEJBLGFBQWFBLENBQ2pCa0QsR0FBVyxFQUFBQyxLQUFBLEVBRVI7TUFBQSxJQURPdkMsS0FBSyxHQUFBdUMsS0FBQSxDQUFkQyxNQUFNLENBQUd4QyxLQUFLO01BRWZnQyxZQUFZLEtBQUFTLGdCQUFBLGlCQUFHSCxHQUFHLEVBQUd0QyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBTTBDLGFBQWEsR0FBRyxJQUFBQyxjQUFPLEVBQzNCO01BQUEsT0FBTztRQUNMQyxLQUFLLEVBQUUsSUFBSTtRQUNYQyxRQUFRLEVBQUVwQyxPQUFPLENBQUMsRUFBRTRCLFFBQVEsSUFBSW5ELE9BQU8sQ0FBQ00sS0FBSyxDQUFDLENBQUM7UUFDL0NzRCxRQUFRLEVBQUU7TUFDWixDQUFDO0lBQUEsQ0FBQyxFQUNGLENBQUNULFFBQVEsRUFBRW5ELE9BQU8sQ0FDcEIsQ0FBQztJQUVELElBQU02RCxPQUFPLEdBQUcsSUFBQUMsa0JBQVcsRUFBQyxZQUFNO01BQ2hDLElBQUlYLFFBQVEsRUFBRTtRQUNaSCxTQUFTLENBQUNHLFFBQVEsQ0FBQztNQUNyQjtJQUNGLENBQUMsRUFBRSxDQUFDSCxTQUFTLEVBQUVHLFFBQVEsQ0FBQyxDQUFDO0lBRXpCLG9CQUNFdEcsTUFBQSxZQUFBMEQsYUFBQSxDQUFDckQsb0JBQUEsV0FBbUI7TUFDbEJpRyxRQUFRLEVBQUVBLFFBQVM7TUFDbkJQLG9CQUFvQixFQUFFQSxvQkFBcUI7TUFDM0NDLGtCQUFrQixFQUFFQTtJQUFtQixnQkFFdkNoRyxNQUFBLFlBQUEwRCxhQUFBLENBQUNyQixrQkFBa0IscUJBQ2pCckMsTUFBQSxZQUFBMEQsYUFBQSxDQUFDaEQsa0JBQUEsQ0FBQXdHLGtCQUFrQjtNQUFDekUsU0FBUyxFQUFDO0lBQXdCLGdCQUNwRHpDLE1BQUEsWUFBQTBELGFBQUEsQ0FBQ29CLGFBQWE7TUFBQ0UsY0FBYyxFQUFFQTtJQUFlLENBQUUsQ0FBQyxFQUNoRHNCLFFBQVEsaUJBQ1B0RyxNQUFBLFlBQUEwRCxhQUFBLENBQUExRCxNQUFBLFlBQUFtSCxRQUFBLFFBQ0diLFFBQVEsQ0FBQ2MsZ0JBQWdCLGdCQUN4QnBILE1BQUEsWUFBQTBELGFBQUEsQ0FBQ2hELGtCQUFBLENBQUFrQyxtQkFBbUI7TUFBQzJCLEtBQUssRUFBRVk7SUFBNEIsZ0JBQ3REbkYsTUFBQSxZQUFBMEQsYUFBQTtNQUFLakIsU0FBUyxFQUFDO0lBQVcsZ0JBQ3hCekMsTUFBQSxZQUFBMEQsYUFBQTtNQUNFNkMsR0FBRyxFQUFFLENBQUU7TUFDUGMsSUFBSSxFQUFFZixRQUFRLENBQUNjLGdCQUFnQixDQUFDLENBQUU7TUFDbENYLE1BQU0sRUFBQyxRQUFRO01BQ2ZhLEdBQUcsRUFBQyxxQkFBcUI7TUFDekIvQyxLQUFLLEVBQUVjO0lBQTJCLEdBQ25DLHVCQUNzQixFQUFDaUIsUUFBUSxDQUFDaUIsV0FBVyxFQUFDLE9BQzFDLENBQ0EsQ0FDYyxDQUFDLEdBQ3BCLElBQUksZUFDUnZILE1BQUEsWUFBQTBELGFBQUEsQ0FBQ2YsMEJBQTBCLHFCQUN6QjNDLE1BQUEsWUFBQTBELGFBQUE7TUFBS2pCLFNBQVMsRUFBQztJQUFpQyxnQkFDOUN6QyxNQUFBLFlBQUEwRCxhQUFBLENBQUMvQyxhQUFBLFdBQVk7TUFDWCtFLFdBQVcsRUFBRUEsV0FBWTtNQUN6QjhCLEtBQUssRUFBRUMsa0NBQXVCLENBQUNELEtBQU07TUFDckNFLGFBQWEsRUFBRTtJQUFNLENBQ3RCLENBQ0UsQ0FBQyxFQUNMOUIsaUJBQWlCLGdCQUNoQjVGLE1BQUEsWUFBQTBELGFBQUE7TUFDRSxlQUFhQyxzQkFBVyxDQUFDZ0UsZUFBZ0I7TUFDekNsRixTQUFTLEVBQUM7SUFBZ0MsZ0JBRTFDekMsTUFBQSxZQUFBMEQsYUFBQSxDQUFDbkQsWUFBQSxDQUFBcUgsZUFBZTtNQUFDQyxJQUFJLEVBQUV2QixRQUFRLElBQUlBLFFBQVEsQ0FBQ3VCO0lBQUssQ0FBRSxDQUNoRCxDQUFDLGdCQUVON0gsTUFBQSxZQUFBMEQsYUFBQSxDQUFDVixZQUFZO01BQ1hHLE9BQU8sRUFBRUEsT0FBUTtNQUNqQkMsZUFBZSxFQUFFQSxlQUFnQjtNQUNqQ0MsYUFBYSxFQUFFQTtJQUFjLENBQzlCLENBRXVCLENBQzVCLENBQ0gsRUFDQXdDLGFBQWEsZ0JBQ1o3RixNQUFBLFlBQUEwRCxhQUFBLENBQUNuRCxZQUFBLFdBQVc7TUFDVnVILFNBQVMsRUFBRSxLQUFNO01BQ2pCckQsS0FBSyxFQUFFb0IsYUFBYSxDQUFDa0MsT0FBUTtNQUM3QkMsWUFBWSxFQUFFMUIsUUFBUSxJQUFJQSxRQUFRLENBQUN1QjtJQUFLLENBQ3pDLENBQUMsR0FDQSxJQUNjLENBQ0YsQ0FBQyxlQUNyQjdILE1BQUEsWUFBQTBELGFBQUEsQ0FBQzdDLE1BQUEsQ0FBQW9ILFdBQVc7TUFBQ0MsTUFBTSxFQUFFaEMsUUFBUztNQUFDYyxPQUFPLEVBQUVBLE9BQVE7TUFBQ0wsYUFBYSxFQUFFQTtJQUFjLENBQUUsQ0FDN0QsQ0FBQztFQUUxQixDQUFDO0VBRUQsT0FBT25CLFlBQVk7QUFDckI7QUFBQyxJQUFBMkMsUUFBQSxHQUFBbEYsT0FBQSxjQUVjc0MsbUJBQW1CIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kepler.gl/components",
|
|
3
3
|
"author": "Shan He <shan@uber.com>",
|
|
4
|
-
"version": "3.1.0
|
|
4
|
+
"version": "3.1.0",
|
|
5
5
|
"description": "kepler.gl constants used by kepler.gl components, actions and reducers",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -38,20 +38,20 @@
|
|
|
38
38
|
"@dnd-kit/utilities": "^3.2.2",
|
|
39
39
|
"@emotion/is-prop-valid": "^1.2.1",
|
|
40
40
|
"@floating-ui/react": "0.25.1",
|
|
41
|
-
"@kepler.gl/actions": "3.1.0
|
|
42
|
-
"@kepler.gl/cloud-providers": "3.1.0
|
|
43
|
-
"@kepler.gl/common-utils": "3.1.0
|
|
44
|
-
"@kepler.gl/constants": "3.1.0
|
|
45
|
-
"@kepler.gl/effects": "3.1.0
|
|
46
|
-
"@kepler.gl/layers": "3.1.0
|
|
47
|
-
"@kepler.gl/localization": "3.1.0
|
|
48
|
-
"@kepler.gl/processors": "3.1.0
|
|
49
|
-
"@kepler.gl/reducers": "3.1.0
|
|
50
|
-
"@kepler.gl/schemas": "3.1.0
|
|
51
|
-
"@kepler.gl/styles": "3.1.0
|
|
52
|
-
"@kepler.gl/table": "3.1.0
|
|
53
|
-
"@kepler.gl/types": "3.1.0
|
|
54
|
-
"@kepler.gl/utils": "3.1.0
|
|
41
|
+
"@kepler.gl/actions": "3.1.0",
|
|
42
|
+
"@kepler.gl/cloud-providers": "3.1.0",
|
|
43
|
+
"@kepler.gl/common-utils": "3.1.0",
|
|
44
|
+
"@kepler.gl/constants": "3.1.0",
|
|
45
|
+
"@kepler.gl/effects": "3.1.0",
|
|
46
|
+
"@kepler.gl/layers": "3.1.0",
|
|
47
|
+
"@kepler.gl/localization": "3.1.0",
|
|
48
|
+
"@kepler.gl/processors": "3.1.0",
|
|
49
|
+
"@kepler.gl/reducers": "3.1.0",
|
|
50
|
+
"@kepler.gl/schemas": "3.1.0",
|
|
51
|
+
"@kepler.gl/styles": "3.1.0",
|
|
52
|
+
"@kepler.gl/table": "3.1.0",
|
|
53
|
+
"@kepler.gl/types": "3.1.0",
|
|
54
|
+
"@kepler.gl/utils": "3.1.0",
|
|
55
55
|
"@loaders.gl/mvt": "^4.3.2",
|
|
56
56
|
"@loaders.gl/pmtiles": "^4.3.2",
|
|
57
57
|
"@mapbox/mapbox-sdk": "^0.15.3",
|
|
@@ -128,7 +128,7 @@ const HeaderCellFactory = (FieldToken: React.FC<FieldTokenProps>) => {
|
|
|
128
128
|
const onCopy = useCallback(() => copyTableColumn(column), [copyTableColumn, column]);
|
|
129
129
|
const onSetDisplayFormat = useCallback(
|
|
130
130
|
displayFormat => {
|
|
131
|
-
setColumnDisplayFormat({[column]: displayFormat.format});
|
|
131
|
+
setColumnDisplayFormat?.({[column]: displayFormat.format});
|
|
132
132
|
},
|
|
133
133
|
[column, setColumnDisplayFormat]
|
|
134
134
|
);
|
|
@@ -195,10 +195,12 @@ const HeaderCellFactory = (FieldToken: React.FC<FieldTokenProps>) => {
|
|
|
195
195
|
column={column}
|
|
196
196
|
colMeta={colMeta}
|
|
197
197
|
toggleMoreOptions={toggleMoreOptions}
|
|
198
|
-
sortTableColumn={
|
|
198
|
+
sortTableColumn={
|
|
199
|
+
sortTableColumn ? mode => sortTableColumn(column, mode) : undefined
|
|
200
|
+
}
|
|
199
201
|
pinTableColumn={onPin}
|
|
200
202
|
copyTableColumn={onCopy}
|
|
201
|
-
setDisplayFormat={onSetDisplayFormat}
|
|
203
|
+
setDisplayFormat={setColumnDisplayFormat ? onSetDisplayFormat : undefined}
|
|
202
204
|
/>
|
|
203
205
|
</section>
|
|
204
206
|
</>
|
|
@@ -389,7 +389,7 @@ export interface DataTableProps {
|
|
|
389
389
|
sortColumn: SortColumn;
|
|
390
390
|
sortTableColumn: (column: string, mode?: string) => void;
|
|
391
391
|
pinTableColumn: (column: string) => void;
|
|
392
|
-
setColumnDisplayFormat
|
|
392
|
+
setColumnDisplayFormat?: (formats: {[key: string]: string}) => void;
|
|
393
393
|
copyTableColumn: (column: string) => void;
|
|
394
394
|
sortOrder?: number[] | null;
|
|
395
395
|
showStats?: boolean;
|
|
@@ -70,7 +70,7 @@ export type FormatterDropdownProps = {
|
|
|
70
70
|
top: number;
|
|
71
71
|
isOpened: boolean;
|
|
72
72
|
displayFormat?: string;
|
|
73
|
-
setDisplayFormat
|
|
73
|
+
setDisplayFormat?: (displayFormat: TooltipFormat) => void;
|
|
74
74
|
onClose: () => void;
|
|
75
75
|
formatLabels: TooltipFormat[];
|
|
76
76
|
};
|
|
@@ -91,7 +91,7 @@ export const FormatterDropdown: React.FC<FormatterDropdownProps> = (
|
|
|
91
91
|
|
|
92
92
|
const onSelectDisplayFormat = useCallback(
|
|
93
93
|
result => {
|
|
94
|
-
setDisplayFormat(result);
|
|
94
|
+
setDisplayFormat?.(result);
|
|
95
95
|
onClose();
|
|
96
96
|
},
|
|
97
97
|
[setDisplayFormat, onClose]
|
|
@@ -117,10 +117,10 @@ export interface OptionDropdownProps {
|
|
|
117
117
|
column: string;
|
|
118
118
|
colMeta: ColMeta;
|
|
119
119
|
toggleMoreOptions: (column: string) => void;
|
|
120
|
-
sortTableColumn
|
|
120
|
+
sortTableColumn?: (sort: string) => void;
|
|
121
121
|
pinTableColumn: () => void;
|
|
122
122
|
copyTableColumn: () => void;
|
|
123
|
-
setDisplayFormat
|
|
123
|
+
setDisplayFormat?: (displayFormat: any) => void;
|
|
124
124
|
sortMode?: string;
|
|
125
125
|
isSorted?: string;
|
|
126
126
|
isPinned?: boolean;
|
|
@@ -142,13 +142,13 @@ const OptionDropdown = (props: OptionDropdownProps) => {
|
|
|
142
142
|
({value}) => {
|
|
143
143
|
switch (value) {
|
|
144
144
|
case TABLE_OPTION.SORT_ASC:
|
|
145
|
-
sortTableColumn(SORT_ORDER.ASCENDING);
|
|
145
|
+
sortTableColumn?.(SORT_ORDER.ASCENDING);
|
|
146
146
|
break;
|
|
147
147
|
case TABLE_OPTION.SORT_DES:
|
|
148
|
-
sortTableColumn(SORT_ORDER.DESCENDING);
|
|
148
|
+
sortTableColumn?.(SORT_ORDER.DESCENDING);
|
|
149
149
|
break;
|
|
150
150
|
case TABLE_OPTION.UNSORT:
|
|
151
|
-
sortTableColumn(SORT_ORDER.UNSORT);
|
|
151
|
+
sortTableColumn?.(SORT_ORDER.UNSORT);
|
|
152
152
|
break;
|
|
153
153
|
case TABLE_OPTION.PIN:
|
|
154
154
|
pinTableColumn();
|
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
* For React 16.8 compatibility
|
|
7
7
|
*/
|
|
8
8
|
import React, {ReactNode} from 'react';
|
|
9
|
-
import
|
|
9
|
+
import Window from 'global/window';
|
|
10
10
|
|
|
11
11
|
export type FileDropProps = {
|
|
12
12
|
dropEffect?: 'copy' | 'move' | 'link' | 'none';
|
|
13
|
-
frame?: typeof document | typeof
|
|
13
|
+
frame?: typeof document | typeof Window | HTMLElement;
|
|
14
14
|
className?: string;
|
|
15
15
|
targetClassName?: string;
|
|
16
16
|
draggingOverFrameClassName?: string;
|
|
@@ -29,10 +29,10 @@ export type FileDropProps = {
|
|
|
29
29
|
/** @augments React.PureComponent<FileDropProps> */
|
|
30
30
|
class FileDrop extends React.PureComponent<FileDropProps> {
|
|
31
31
|
static isIE = () =>
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
((
|
|
35
|
-
(
|
|
32
|
+
Window &&
|
|
33
|
+
Window.navigator &&
|
|
34
|
+
((Window.navigator.userAgent || []).includes('MSIE') ||
|
|
35
|
+
(Window.navigator.appVersion || []).includes('Trident/'));
|
|
36
36
|
|
|
37
37
|
static eventHasFiles = event => {
|
|
38
38
|
// In most browsers this is an array, but in IE11 it's an Object :(
|
|
@@ -52,7 +52,7 @@ class FileDrop extends React.PureComponent<FileDropProps> {
|
|
|
52
52
|
|
|
53
53
|
static defaultProps = {
|
|
54
54
|
dropEffect: 'copy',
|
|
55
|
-
frame:
|
|
55
|
+
frame: Window ? Window.document : undefined,
|
|
56
56
|
className: 'file-drop',
|
|
57
57
|
targetClassName: 'file-drop-target',
|
|
58
58
|
draggingOverFrameClassName: 'file-drop-dragging-over-frame',
|
|
@@ -65,8 +65,8 @@ class FileDrop extends React.PureComponent<FileDropProps> {
|
|
|
65
65
|
componentDidMount() {
|
|
66
66
|
this.startFrameListeners(this.props.frame);
|
|
67
67
|
this.resetDragging();
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
Window.addEventListener('dragover', this.handleWindowDragOverOrDrop);
|
|
69
|
+
Window.addEventListener('drop', this.handleWindowDragOverOrDrop);
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
componentDidUpdate(prevProps) {
|
|
@@ -79,8 +79,8 @@ class FileDrop extends React.PureComponent<FileDropProps> {
|
|
|
79
79
|
|
|
80
80
|
componentWillUnmount() {
|
|
81
81
|
this.stopFrameListeners(this.props.frame);
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
Window.removeEventListener('dragover', this.handleWindowDragOverOrDrop);
|
|
83
|
+
Window.removeEventListener('drop', this.handleWindowDragOverOrDrop);
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
resetDragging = () => {
|
|
@@ -9,7 +9,7 @@ import {canUseDOM} from 'exenv';
|
|
|
9
9
|
import {withTheme} from 'styled-components';
|
|
10
10
|
import {RootContext} from '../context';
|
|
11
11
|
import Modal from 'react-modal';
|
|
12
|
-
import
|
|
12
|
+
import Window from 'global/window';
|
|
13
13
|
import {theme} from '@kepler.gl/styles';
|
|
14
14
|
|
|
15
15
|
const listeners = {};
|
|
@@ -18,19 +18,19 @@ const startListening = () => Object.keys(listeners).forEach(key => listeners[key
|
|
|
18
18
|
|
|
19
19
|
const getPageOffset = () => ({
|
|
20
20
|
x:
|
|
21
|
-
|
|
22
|
-
?
|
|
21
|
+
Window.pageXOffset !== undefined
|
|
22
|
+
? Window.pageXOffset
|
|
23
23
|
: (document.documentElement || document.body.parentNode || document.body).scrollLeft,
|
|
24
24
|
y:
|
|
25
|
-
|
|
26
|
-
?
|
|
25
|
+
Window.pageYOffset !== undefined
|
|
26
|
+
? Window.pageYOffset
|
|
27
27
|
: (document.documentElement || document.body.parentNode || document.body).scrollTop
|
|
28
28
|
});
|
|
29
29
|
|
|
30
30
|
const addEventListeners = () => {
|
|
31
31
|
if (document && document.body)
|
|
32
32
|
document.body.addEventListener('mousewheel', debounce(startListening, 100, {leading: true}));
|
|
33
|
-
|
|
33
|
+
Window.addEventListener('resize', debounce(startListening, 50, {leading: true}));
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
interface GetChildPosProps {
|
|
@@ -56,21 +56,21 @@ export const getChildPos = ({offsets, rect, childRect, pageOffset, padding}: Get
|
|
|
56
56
|
top: pageOffset.y + rect.top + (topOffset || 0),
|
|
57
57
|
...(anchorLeft
|
|
58
58
|
? {left: pageOffset.x + rect.left + (leftOffset || 0)}
|
|
59
|
-
: {right:
|
|
59
|
+
: {right: Window.innerWidth - rect.right - pageOffset.x + (rightOffset || 0)})
|
|
60
60
|
};
|
|
61
61
|
|
|
62
62
|
const leftOrRight = anchorLeft ? 'left' : 'right';
|
|
63
63
|
|
|
64
64
|
if (pos[leftOrRight] && pos[leftOrRight] < 0) {
|
|
65
65
|
pos[leftOrRight] = padding;
|
|
66
|
-
} else if (pos[leftOrRight] && pos[leftOrRight] + childRect.width >
|
|
67
|
-
pos[leftOrRight] =
|
|
66
|
+
} else if (pos[leftOrRight] && pos[leftOrRight] + childRect.width > Window.innerWidth) {
|
|
67
|
+
pos[leftOrRight] = Window.innerWidth - childRect.width - padding;
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
if (pos.top < 0) {
|
|
71
71
|
pos.top = padding;
|
|
72
|
-
} else if (pos.top + childRect.height >
|
|
73
|
-
pos.top =
|
|
72
|
+
} else if (pos.top + childRect.height > Window.innerHeight) {
|
|
73
|
+
pos.top = Window.innerHeight - childRect.height - padding;
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
return pos;
|
|
@@ -183,7 +183,7 @@ class Portaled extends Component<PortaledProps, PortaledState> {
|
|
|
183
183
|
const didOpen = this.props.isOpened && !prevProps.isOpened;
|
|
184
184
|
const didClose = !this.props.isOpened && prevProps.isOpened;
|
|
185
185
|
if (didOpen || didClose) {
|
|
186
|
-
|
|
186
|
+
Window.requestAnimationFrame(() => {
|
|
187
187
|
if (this._unmounted) return;
|
|
188
188
|
this.setState({isVisible: Boolean(didOpen)});
|
|
189
189
|
});
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import React, {Component, CSSProperties, KeyboardEvent} from 'react';
|
|
5
5
|
import {createPortal} from 'react-dom';
|
|
6
6
|
import styled from 'styled-components';
|
|
7
|
-
import
|
|
7
|
+
import Window from 'global/window';
|
|
8
8
|
import classnames from 'classnames';
|
|
9
9
|
import get from 'lodash.get';
|
|
10
10
|
import {createSelector} from 'reselect';
|
|
@@ -102,11 +102,11 @@ export default function EditorFactory(
|
|
|
102
102
|
state = {};
|
|
103
103
|
|
|
104
104
|
componentDidMount() {
|
|
105
|
-
|
|
105
|
+
Window.addEventListener('keydown', this._onKeyPressed);
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
componentWillUnmount() {
|
|
109
|
-
|
|
109
|
+
Window.removeEventListener('keydown', this._onKeyPressed);
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
layerSelector = (props: EditorProps) => props.layers;
|
|
@@ -65,7 +65,8 @@ import {
|
|
|
65
65
|
mergeMessages,
|
|
66
66
|
observeDimensions,
|
|
67
67
|
unobserveDimensions,
|
|
68
|
-
hasPortableWidth
|
|
68
|
+
hasPortableWidth,
|
|
69
|
+
getApplicationConfig
|
|
69
70
|
} from '@kepler.gl/utils';
|
|
70
71
|
|
|
71
72
|
import {theme as basicTheme, themeLT, themeBS, breakPointValues} from '@kepler.gl/styles';
|
|
@@ -181,6 +182,8 @@ export const mapFieldsSelector = (props: KeplerGLProps, index = 0) => ({
|
|
|
181
182
|
mapControls: props.uiState.mapControls,
|
|
182
183
|
readOnly: props.uiState.readOnly,
|
|
183
184
|
locale: props.uiState.locale,
|
|
185
|
+
isLoadingIndicatorVisible: Number(props.uiState.loadingIndicatorValue) > 0,
|
|
186
|
+
sidePanelWidth: props.sidePanelWidth ? props.sidePanelWidth : DEFAULT_KEPLER_GL_PROPS.width,
|
|
184
187
|
|
|
185
188
|
// mapStyle
|
|
186
189
|
topMapContainerProps: props.topMapContainerProps,
|
|
@@ -445,7 +448,9 @@ function KeplerGlFactory(
|
|
|
445
448
|
};
|
|
446
449
|
|
|
447
450
|
componentDidMount() {
|
|
448
|
-
|
|
451
|
+
if (getApplicationConfig().baseMapLibraryConfig?.['mapbox']?.mapLibName === 'Mapbox') {
|
|
452
|
+
this._validateMapboxToken();
|
|
453
|
+
}
|
|
449
454
|
this._loadMapStyle();
|
|
450
455
|
if (typeof this.props.onKeplerGlInitialized === 'function') {
|
|
451
456
|
this.props.onKeplerGlInitialized();
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Copyright contributors to the kepler.gl project
|
|
3
|
+
|
|
4
|
+
import React, {PropsWithChildren} from 'react';
|
|
5
|
+
import styled, {withTheme} from 'styled-components';
|
|
6
|
+
|
|
7
|
+
type StyledContainerProps = {
|
|
8
|
+
isVisible?: boolean;
|
|
9
|
+
left: number;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export const StyledContainer = styled.div<StyledContainerProps>`
|
|
13
|
+
position: absolute;
|
|
14
|
+
left: ${props => props.left}px;
|
|
15
|
+
bottom: ${props => props.theme.sidePanel.margin.left}px;
|
|
16
|
+
z-index: 1;
|
|
17
|
+
color: ${props => props.theme.textColorHl};
|
|
18
|
+
opacity: ${props => (props.isVisible ? 1 : 0)};
|
|
19
|
+
transition: opacity 0.5s ease-in-out;
|
|
20
|
+
background-color: ${props => props.theme.sidePanelBg};
|
|
21
|
+
border-radius: 0px;
|
|
22
|
+
padding-left: 3px;
|
|
23
|
+
padding-right: 3px;
|
|
24
|
+
font-size: 12px;
|
|
25
|
+
`;
|
|
26
|
+
|
|
27
|
+
type LoadingIndicatorProps = {
|
|
28
|
+
isVisible?: boolean;
|
|
29
|
+
activeSidePanel?: boolean;
|
|
30
|
+
sidePanelWidth?: number;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const LoadingIndicator: React.FC<PropsWithChildren<LoadingIndicatorProps> & {theme: any}> = ({
|
|
34
|
+
isVisible,
|
|
35
|
+
children,
|
|
36
|
+
activeSidePanel,
|
|
37
|
+
sidePanelWidth,
|
|
38
|
+
theme
|
|
39
|
+
}) => {
|
|
40
|
+
const left = (activeSidePanel ? sidePanelWidth || 0 : 0) + theme.sidePanel.margin.left;
|
|
41
|
+
|
|
42
|
+
return (
|
|
43
|
+
<StyledContainer isVisible={isVisible} left={left}>
|
|
44
|
+
{children}
|
|
45
|
+
</StyledContainer>
|
|
46
|
+
);
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
export default withTheme(LoadingIndicator) as React.FC<PropsWithChildren<LoadingIndicatorProps>>;
|
|
@@ -91,6 +91,8 @@ import {
|
|
|
91
91
|
} from '@kepler.gl/reducers';
|
|
92
92
|
import {VisState} from '@kepler.gl/schemas';
|
|
93
93
|
|
|
94
|
+
import LoadingIndicator from './loading-indicator';
|
|
95
|
+
|
|
94
96
|
// Debounce the propagation of viewport change and mouse moves to redux store.
|
|
95
97
|
// This is to avoid too many renders of other components when the map is
|
|
96
98
|
// being panned/zoomed (leading to laggy basemap/deck syncing).
|
|
@@ -324,6 +326,10 @@ export interface MapContainerProps {
|
|
|
324
326
|
deleteMapLabels?: (containerId: string, layerId: string) => void;
|
|
325
327
|
containerId?: number;
|
|
326
328
|
|
|
329
|
+
isLoadingIndicatorVisible?: boolean;
|
|
330
|
+
activeSidePanel: string | null;
|
|
331
|
+
sidePanelWidth?: number;
|
|
332
|
+
|
|
327
333
|
locale?: any;
|
|
328
334
|
theme?: any;
|
|
329
335
|
editor?: any;
|
|
@@ -1022,7 +1028,10 @@ export default function MapContainerFactory(
|
|
|
1022
1028
|
topMapContainerProps,
|
|
1023
1029
|
theme,
|
|
1024
1030
|
datasetAttributions = [],
|
|
1025
|
-
containerId = 0
|
|
1031
|
+
containerId = 0,
|
|
1032
|
+
isLoadingIndicatorVisible,
|
|
1033
|
+
activeSidePanel,
|
|
1034
|
+
sidePanelWidth
|
|
1026
1035
|
} = this.props;
|
|
1027
1036
|
|
|
1028
1037
|
const {layers, datasets, editor, interactionConfig} = visState;
|
|
@@ -1144,6 +1153,15 @@ export default function MapContainerFactory(
|
|
|
1144
1153
|
)
|
|
1145
1154
|
: null}
|
|
1146
1155
|
{this._renderMapPopover()}
|
|
1156
|
+
{primary !== isSplit ? (
|
|
1157
|
+
<LoadingIndicator
|
|
1158
|
+
isVisible={Boolean(isLoadingIndicatorVisible)}
|
|
1159
|
+
activeSidePanel={Boolean(activeSidePanel)}
|
|
1160
|
+
sidePanelWidth={sidePanelWidth}
|
|
1161
|
+
>
|
|
1162
|
+
Loading...
|
|
1163
|
+
</LoadingIndicator>
|
|
1164
|
+
) : null}
|
|
1147
1165
|
{this.props.primary ? (
|
|
1148
1166
|
<Attribution
|
|
1149
1167
|
showBaseMapLibLogo={this.state.showBaseMapAttribution}
|
|
@@ -61,6 +61,10 @@ const StyledSaveMapModal = styled.div.attrs({
|
|
|
61
61
|
}
|
|
62
62
|
`;
|
|
63
63
|
|
|
64
|
+
const StyledCompactExportSection = styled(StyledExportSection)`
|
|
65
|
+
margin: 5px 0;
|
|
66
|
+
`;
|
|
67
|
+
|
|
64
68
|
const nop = () => {
|
|
65
69
|
return;
|
|
66
70
|
};
|
|
@@ -224,7 +228,7 @@ function SaveMapModalFactory() {
|
|
|
224
228
|
</div>
|
|
225
229
|
</StyledExportSection>
|
|
226
230
|
) : null}
|
|
227
|
-
<
|
|
231
|
+
<StyledCompactExportSection>
|
|
228
232
|
<div className="description image-preview-panel">
|
|
229
233
|
<ImagePreview
|
|
230
234
|
exportImage={exportImage}
|
|
@@ -246,7 +250,7 @@ function SaveMapModalFactory() {
|
|
|
246
250
|
onChangeInput={onChangeInput}
|
|
247
251
|
/>
|
|
248
252
|
)}
|
|
249
|
-
</
|
|
253
|
+
</StyledCompactExportSection>
|
|
250
254
|
</>
|
|
251
255
|
)}
|
|
252
256
|
{providerError ? (
|