@kepler.gl/components 3.3.0-alpha.0 → 3.3.0-alpha.2
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/annotations/annotation-node.d.ts +11 -0
- package/dist/annotations/annotation-node.js +145 -0
- package/dist/annotations/annotation-overlay.d.ts +16 -0
- package/dist/annotations/annotation-overlay.js +166 -0
- package/dist/annotations/annotation-panel.d.ts +24 -0
- package/dist/annotations/annotation-panel.js +362 -0
- package/dist/annotations/annotation-text.d.ts +16 -0
- package/dist/annotations/annotation-text.js +150 -0
- package/dist/annotations/annotation-utils.d.ts +39 -0
- package/dist/annotations/annotation-utils.js +156 -0
- package/dist/annotations/index.d.ts +7 -0
- package/dist/annotations/index.js +53 -0
- package/dist/annotations/lexical-editor/clickable-link-plugin.d.ts +3 -0
- package/dist/annotations/lexical-editor/clickable-link-plugin.js +71 -0
- package/dist/annotations/lexical-editor/floating-link-editor.d.ts +1 -0
- package/dist/annotations/lexical-editor/floating-link-editor.js +194 -0
- package/dist/annotations/lexical-editor/index.d.ts +7 -0
- package/dist/annotations/lexical-editor/index.js +78 -0
- package/dist/annotations/lexical-editor/lexical-constants.d.ts +12 -0
- package/dist/annotations/lexical-editor/lexical-constants.js +22 -0
- package/dist/annotations/lexical-editor/lexical-nodes.d.ts +3 -0
- package/dist/annotations/lexical-editor/lexical-nodes.js +13 -0
- package/dist/annotations/lexical-editor/lexical-rich-text-editor.d.ts +15 -0
- package/dist/annotations/lexical-editor/lexical-rich-text-editor.js +122 -0
- package/dist/annotations/lexical-editor/lexical-theme.d.ts +15 -0
- package/dist/annotations/lexical-editor/lexical-theme.js +25 -0
- package/dist/annotations/lexical-editor/lexical-toolbar.d.ts +7 -0
- package/dist/annotations/lexical-editor/lexical-toolbar.js +293 -0
- package/dist/annotations/lexical-editor/lexical-utils.d.ts +4 -0
- package/dist/annotations/lexical-editor/lexical-utils.js +45 -0
- package/dist/annotations/lexical-editor/use-lexical-toolbar.d.ts +36 -0
- package/dist/annotations/lexical-editor/use-lexical-toolbar.js +253 -0
- package/dist/bottom-widget.d.ts +1 -1
- package/dist/bottom-widget.js +12 -6
- package/dist/common/action-panel.js +1 -1
- package/dist/common/animation-control/animation-control.d.ts +1 -0
- package/dist/common/animation-control/animation-control.js +3 -1
- package/dist/common/animation-control/animation-controller.js +8 -6
- package/dist/common/animation-control/export-video-control.d.ts +9 -0
- package/dist/common/animation-control/export-video-control.js +43 -0
- package/dist/common/animation-control/playback-controls.d.ts +4 -2
- package/dist/common/animation-control/playback-controls.js +7 -4
- package/dist/common/checkbox.d.ts +5 -21
- package/dist/common/checkbox.js +58 -70
- package/dist/common/color-legend.d.ts +1 -1
- package/dist/common/color-legend.js +3 -3
- package/dist/common/data-table/canvas.d.ts +1 -1
- package/dist/common/data-table/index.d.ts +2 -2
- package/dist/common/data-table/index.js +3 -3
- package/dist/common/dnd-layer-items.d.ts +4 -0
- package/dist/common/dnd-layer-items.js +6 -2
- package/dist/common/error-boundary.d.ts +1 -1
- package/dist/common/file-uploader/file-upload.d.ts +1 -1
- package/dist/common/file-uploader/file-upload.js +4 -4
- package/dist/common/flex-container.d.ts +15 -7
- package/dist/common/histogram-plot.js +102 -53
- package/dist/common/icon-button.d.ts +53 -6
- package/dist/common/icons/3d-models/airplane.d.ts +14 -0
- package/dist/common/icons/3d-models/airplane.js +104 -0
- package/dist/common/icons/3d-models/bicycle.d.ts +14 -0
- package/dist/common/icons/3d-models/bicycle.js +426 -0
- package/dist/common/icons/3d-models/boeing.d.ts +14 -0
- package/dist/common/icons/3d-models/boeing.js +119 -0
- package/dist/common/icons/3d-models/car.d.ts +14 -0
- package/dist/common/icons/3d-models/car.js +110 -0
- package/dist/common/icons/3d-models/cargoship.d.ts +14 -0
- package/dist/common/icons/3d-models/cargoship.js +246 -0
- package/dist/common/icons/3d-models/evtol.d.ts +14 -0
- package/dist/common/icons/3d-models/evtol.js +134 -0
- package/dist/common/icons/3d-models/glider.d.ts +14 -0
- package/dist/common/icons/3d-models/glider.js +62 -0
- package/dist/common/icons/3d-models/helicopter.d.ts +14 -0
- package/dist/common/icons/3d-models/helicopter.js +110 -0
- package/dist/common/icons/3d-models/scooter.d.ts +14 -0
- package/dist/common/icons/3d-models/scooter.js +159 -0
- package/dist/common/icons/3d-models/semitruck.d.ts +14 -0
- package/dist/common/icons/3d-models/semitruck.js +177 -0
- package/dist/common/icons/3d-models/truck.d.ts +14 -0
- package/dist/common/icons/3d-models/truck.js +122 -0
- package/dist/common/icons/anchor_window.d.ts +1 -8
- package/dist/common/icons/anchor_window.js +17 -10
- package/dist/common/icons/annotation-text.d.ts +9 -0
- package/dist/common/icons/annotation-text.js +56 -0
- package/dist/common/icons/arrow-down-full.d.ts +2 -1
- package/dist/common/icons/arrow-down-full.js +1 -1
- package/dist/common/icons/folder.d.ts +10 -0
- package/dist/common/icons/folder.js +51 -0
- package/dist/common/icons/index.d.ts +2 -0
- package/dist/common/icons/index.js +15 -1
- package/dist/common/icons/timeline-marker.d.ts +2 -1
- package/dist/common/icons/timeline-marker.js +1 -1
- package/dist/common/item-selector/chickleted-input.d.ts +1 -1
- package/dist/common/item-selector/chickleted-input.js +5 -5
- package/dist/common/item-selector/dropdown-list.d.ts +1 -1
- package/dist/common/item-selector/dropdown-list.js +1 -1
- package/dist/common/item-selector/dropdown-select.d.ts +13 -7
- package/dist/common/item-selector/item-selector.d.ts +1 -1
- package/dist/common/item-selector/item-selector.js +1 -1
- package/dist/common/item-selector/typeahead.d.ts +4 -4
- package/dist/common/item-selector/typeahead.js +1 -3
- package/dist/common/layout-splitter.d.ts +45 -0
- package/dist/common/layout-splitter.js +231 -0
- package/dist/common/line-chart.d.ts +10 -3
- package/dist/common/line-chart.js +219 -52
- package/dist/common/modal.d.ts +11 -5
- package/dist/common/modal.js +1 -1
- package/dist/common/portaled.d.ts +17 -17
- package/dist/common/range-plot.js +4 -2
- package/dist/common/range-slider.d.ts +2 -0
- package/dist/common/range-slider.js +108 -45
- package/dist/common/slider/mouse-event.d.ts +1 -1
- package/dist/common/slider/mouse-event.js +1 -2
- package/dist/common/slider/slider-bar-handle.d.ts +1 -1
- package/dist/common/slider/slider-bar-handle.js +1 -1
- package/dist/common/slider/slider-handle.d.ts +3 -3
- package/dist/common/slider/slider-handle.js +1 -1
- package/dist/common/slider/slider.d.ts +8 -4
- package/dist/common/slider/slider.js +78 -35
- package/dist/common/styled-components.d.ts +628 -178
- package/dist/common/styled-components.js +2 -2
- package/dist/common/time-range-slider-time-title.d.ts +1 -1
- package/dist/common/time-range-slider-time-title.js +5 -5
- package/dist/common/time-range-slider.d.ts +2 -1
- package/dist/common/time-range-slider.js +19 -7
- package/dist/common/timeline-helpers.d.ts +3 -0
- package/dist/common/timeline-helpers.js +57 -0
- package/dist/common/timeline-slider.js +21 -12
- package/dist/common/toolbar-item.js +5 -5
- package/dist/common/toolbar.d.ts +1 -1
- package/dist/common/toolbar.js +4 -4
- package/dist/common/vertical-toolbar.d.ts +13 -3
- package/dist/container.d.ts +3 -2
- package/dist/container.js +2 -2
- package/dist/context.d.ts +1 -1
- package/dist/context.js +1 -1
- package/dist/dnd-context.d.ts +4 -3
- package/dist/dnd-context.js +64 -9
- package/dist/effects/compact-color-picker.d.ts +1 -1
- package/dist/effects/effect-configurator.d.ts +5 -6
- package/dist/effects/effect-configurator.js +213 -52
- package/dist/effects/effect-manager.js +3 -3
- package/dist/effects/effect-panel-header.js +34 -17
- package/dist/effects/effect-panel.d.ts +4 -4
- package/dist/effects/effect-panel.js +61 -86
- package/dist/effects/effect-time-configurator.js +10 -10
- package/dist/effects/effect-type-dropdown-list.d.ts +1 -0
- package/dist/effects/effect-type-dropdown-list.js +1 -1
- package/dist/effects/effect-type-list-item.d.ts +2 -1
- package/dist/effects/effect-type-list-item.js +23 -7
- package/dist/effects/effect-type-selector.d.ts +1 -0
- package/dist/effects/effect-type-selector.js +2 -2
- package/dist/effects/surface-fog-section.d.ts +14 -0
- package/dist/effects/surface-fog-section.js +263 -0
- package/dist/filters/components.d.ts +7 -5
- package/dist/filters/filter-panels/filter-synced-dataset-panel.d.ts +6 -2
- package/dist/filters/index.d.ts +1 -0
- package/dist/filters/index.js +8 -1
- package/dist/filters/polygon-filter.js +2 -2
- package/dist/filters/time-range-filter.js +3 -1
- package/dist/filters/time-widget-settings.d.ts +14 -0
- package/dist/filters/time-widget-settings.js +312 -0
- package/dist/filters/time-widget-top.d.ts +2 -3
- package/dist/filters/time-widget-top.js +32 -39
- package/dist/filters/time-widget.d.ts +3 -2
- package/dist/filters/time-widget.js +285 -9
- package/dist/filters/types.d.ts +3 -3
- package/dist/filters/types.js +1 -1
- package/dist/geocoder/geocoder.d.ts +4 -1
- package/dist/geocoder/geocoder.js +61 -14
- package/dist/geocoder-panel.d.ts +3 -2
- package/dist/geocoder-panel.js +11 -8
- package/dist/hooks/use-dnd-layers.d.ts +4 -3
- package/dist/hooks/use-dnd-layers.js +103 -42
- package/dist/index.d.ts +17 -2
- package/dist/index.js +161 -9
- package/dist/injector.d.ts +1 -1
- package/dist/kepler-gl.d.ts +179 -27
- package/dist/kepler-gl.js +91 -12
- package/dist/loading-indicator.d.ts +3 -1
- package/dist/loading-indicator.js +6 -3
- package/dist/map/annotations/annotation-control.d.ts +16 -0
- package/dist/map/annotations/annotation-control.js +56 -0
- package/dist/map/layer-hover-info.d.ts +7 -3
- package/dist/map/layer-hover-info.js +124 -55
- package/dist/map/locale-panel.d.ts +1 -1
- package/dist/map/locale-panel.js +2 -2
- package/dist/map/map-control-panel.js +3 -2
- package/dist/map/map-control-toolbar.d.ts +33 -8
- package/dist/map/map-control.d.ts +14 -4
- package/dist/map/map-control.js +18 -8
- package/dist/map/map-draw-panel.d.ts +1 -1
- package/dist/map/map-draw-panel.js +7 -4
- package/dist/map/map-legend-panel.d.ts +11 -2
- package/dist/map/map-legend-panel.js +25 -8
- package/dist/map/map-legend.d.ts +20 -3
- package/dist/map/map-legend.js +145 -31
- package/dist/map/map-navigation-control.d.ts +13 -0
- package/dist/map/map-navigation-control.js +143 -0
- package/dist/map/map-popover.js +2 -2
- package/dist/map/split-map-button.d.ts +6 -1
- package/dist/map/split-map-button.js +113 -19
- package/dist/map-container.d.ts +13 -3
- package/dist/map-container.js +269 -59
- package/dist/map-view-state-context.d.ts +1 -0
- package/dist/map-view-state-context.js +1 -1
- package/dist/maps-layout.d.ts +3 -0
- package/dist/maps-layout.js +86 -26
- package/dist/modal-container.d.ts +3 -2
- package/dist/modal-container.js +28 -6
- package/dist/modals/add-map-style-modal.js +173 -200
- package/dist/modals/cloud-tile.d.ts +1 -2
- package/dist/modals/data-table-modal.d.ts +1 -1
- package/dist/modals/data-table-modal.js +146 -194
- package/dist/modals/export-data-modal.js +117 -139
- package/dist/modals/export-map-modal/components.d.ts +9 -5
- package/dist/modals/export-video-modal.d.ts +28 -0
- package/dist/modals/export-video-modal.js +371 -0
- package/dist/modals/export-video-modal.spec.d.ts +1 -0
- package/dist/modals/export-video-modal.spec.js +686 -0
- package/dist/modals/fog-height-animation.d.ts +8 -0
- package/dist/modals/fog-height-animation.js +97 -0
- package/dist/modals/hubble-utils.d.ts +41 -0
- package/dist/modals/hubble-utils.js +294 -0
- package/dist/modals/hubble-utils.spec.d.ts +1 -0
- package/dist/modals/hubble-utils.spec.js +397 -0
- package/dist/modals/modal-dialog.d.ts +1 -1
- package/dist/modals/share-map-modal.d.ts +2 -4
- package/dist/modals/swipe-composite-utils.d.ts +10 -0
- package/dist/modals/swipe-composite-utils.js +108 -0
- package/dist/modals/swipe-export-settings.d.ts +24 -0
- package/dist/modals/swipe-export-settings.js +370 -0
- package/dist/modals/swipe-export-video-container.d.ts +122 -0
- package/dist/modals/swipe-export-video-container.js +630 -0
- package/dist/modals/swipe-export-video-preview.d.ts +68 -0
- package/dist/modals/swipe-export-video-preview.js +339 -0
- package/dist/modals/tilesets-modals/load-data-footer.js +2 -2
- package/dist/modals/tilesets-modals/load-tileset.js +21 -10
- package/dist/modals/tilesets-modals/tileset-bitmap-form.d.ts +14 -0
- package/dist/modals/tilesets-modals/tileset-bitmap-form.js +284 -0
- package/dist/modals/tilesets-modals/tileset-raster-form.js +90 -11
- package/dist/modals/tilesets-modals/tileset-tile3d-form.js +3 -2
- package/dist/modals/tilesets-modals/tileset-vector-form.js +58 -4
- package/dist/modals/tilesets-modals/tileset-wms-form.js +4 -3
- package/dist/notification-panel/notification-item.d.ts +1 -53
- package/dist/notification-panel/notification-item.js +47 -75
- package/dist/notification-panel.d.ts +1 -1
- package/dist/notification-panel.js +20 -42
- package/dist/plot-container.js +7 -6
- package/dist/side-panel/add-by-dataset-button.js +3 -3
- package/dist/side-panel/common/dataset-info.js +2 -2
- package/dist/side-panel/filter-panel/filter-panel-header.d.ts +7 -3
- package/dist/side-panel/interaction-panel/geocoder-config.d.ts +11 -0
- package/dist/side-panel/interaction-panel/geocoder-config.js +45 -0
- package/dist/side-panel/interaction-panel/interaction-panel.d.ts +3 -2
- package/dist/side-panel/interaction-panel/interaction-panel.js +10 -3
- package/dist/side-panel/layer-manager.d.ts +5 -4
- package/dist/side-panel/layer-manager.js +26 -6
- package/dist/side-panel/layer-panel/color-scale-selector.d.ts +1 -1
- package/dist/side-panel/layer-panel/color-scale-selector.js +1 -1
- package/dist/side-panel/layer-panel/color-selector.d.ts +6 -4
- package/dist/side-panel/layer-panel/custom-palette.d.ts +3 -5
- package/dist/side-panel/layer-panel/custom-palette.js +5 -5
- package/dist/side-panel/layer-panel/dataset-layer-group.d.ts +2 -1
- package/dist/side-panel/layer-panel/dataset-layer-group.js +1 -1
- package/dist/side-panel/layer-panel/dataset-layer-section.d.ts +2 -1
- package/dist/side-panel/layer-panel/dataset-layer-section.js +19 -3
- package/dist/side-panel/layer-panel/layer-config-group.d.ts +5 -11
- package/dist/side-panel/layer-panel/layer-configurator.d.ts +4 -2
- package/dist/side-panel/layer-panel/layer-configurator.js +450 -76
- package/dist/side-panel/layer-panel/layer-group-header.d.ts +15 -0
- package/dist/side-panel/layer-panel/layer-group-header.js +179 -0
- package/dist/side-panel/layer-panel/layer-list.d.ts +9 -4
- package/dist/side-panel/layer-panel/layer-list.js +197 -40
- package/dist/side-panel/layer-panel/layer-panel-header.js +2 -2
- package/dist/side-panel/layer-panel/raster-tile-layer-configurator.d.ts +1 -1
- package/dist/side-panel/layer-panel/raster-tile-layer-configurator.js +127 -27
- package/dist/side-panel/layer-panel/scenegraph-model-selector.d.ts +24 -0
- package/dist/side-panel/layer-panel/scenegraph-model-selector.js +123 -0
- package/dist/side-panel/layer-panel/text-label-panel.d.ts +1 -1
- package/dist/side-panel/layer-panel/text-label-panel.js +11 -2
- package/dist/side-panel/layer-panel/vector-tile-layer-configurator.d.ts +1 -1
- package/dist/side-panel/layer-panel/vector-tile-layer-configurator.js +2 -10
- package/dist/side-panel/layer-panel/vis-config-slider.d.ts +2 -0
- package/dist/side-panel/layer-panel/vis-config-slider.js +7 -3
- package/dist/side-panel/panel-header.d.ts +1 -0
- package/dist/side-panel/panel-header.js +9 -2
- package/dist/side-panel/panel-tab.d.ts +2 -4
- package/dist/side-panel/panel-tab.js +4 -4
- package/dist/side-panel/panel-view-list-toggle.d.ts +4 -4
- package/dist/side-panel/side-bar.d.ts +1 -6
- package/dist/side-panel.d.ts +1 -1
- package/dist/side-panel.js +5 -1
- package/dist/types.d.ts +2 -2
- package/dist/types.js +1 -1
- package/package.json +53 -48
- package/dist/map/layer-selector-panel.d.ts +0 -21
- package/dist/map/layer-selector-panel.js +0 -85
- package/dist/side-panel/layer-panel/radius-by-zoom-input.d.ts +0 -11
- package/dist/side-panel/layer-panel/radius-by-zoom-input.js +0 -220
|
@@ -18,9 +18,11 @@ var _constants = require("@kepler.gl/constants");
|
|
|
18
18
|
var _utils = require("@kepler.gl/utils");
|
|
19
19
|
var _rangeSlider = _interopRequireDefault(require("../common/range-slider"));
|
|
20
20
|
var _icons = require("../common/icons");
|
|
21
|
+
var _styledComponents2 = require("../common/styled-components");
|
|
21
22
|
var _effectTimeConfigurator = _interopRequireDefault(require("./effect-time-configurator"));
|
|
22
23
|
var _compactColorPicker = _interopRequireDefault(require("./compact-color-picker"));
|
|
23
|
-
var
|
|
24
|
+
var _surfaceFogSection = _interopRequireWildcard(require("./surface-fog-section"));
|
|
25
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18; // SPDX-License-Identifier: MIT
|
|
24
26
|
// Copyright contributors to the kepler.gl project
|
|
25
27
|
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
28
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(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; }
|
|
@@ -41,8 +43,8 @@ var StyledVerticalSeparator = _styledComponents["default"].div(_templateObject4
|
|
|
41
43
|
return props.theme.inputBgd;
|
|
42
44
|
});
|
|
43
45
|
var StyledWrapper = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: ", "px;\n"])), function (props) {
|
|
44
|
-
var _props
|
|
45
|
-
return (_props
|
|
46
|
+
var _props$$marginBottom;
|
|
47
|
+
return (_props$$marginBottom = props.$marginBottom) !== null && _props$$marginBottom !== void 0 ? _props$$marginBottom : 9;
|
|
46
48
|
});
|
|
47
49
|
var StyledConfigSection = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n"])));
|
|
48
50
|
var SectionTitle = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n font-size: ", ";\n color: ", ";\n margin-bottom: 5px;\n text-transform: capitalize;\n"])), function (props) {
|
|
@@ -69,14 +71,36 @@ var RegularSectionTitleWrapper = _styledComponents["default"].div.attrs({
|
|
|
69
71
|
var RegularSliderWrapper = _styledComponents["default"].div.attrs({
|
|
70
72
|
className: 'effect-configurator__pp-section-control'
|
|
71
73
|
})(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n height: 32px;\n .kg-range-slider__input {\n height: 32px;\n text-align: center;\n padding: 3px 6px;\n }\n .kg-slider {\n padding-left: 6px;\n }\n .kg-range-slider {\n padding: 0px !important;\n }\n"])));
|
|
74
|
+
var StyledCheckboxWrapper = _styledComponents["default"].div.attrs({
|
|
75
|
+
className: 'effect-configurator__pp-section-checkbox'
|
|
76
|
+
})(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n cursor: pointer;\n"])));
|
|
77
|
+
var StyledCheckbox = _styledComponents["default"].input(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteral2["default"])(["\n margin-right: 6px;\n cursor: pointer;\n accent-color: ", ";\n"])), function (props) {
|
|
78
|
+
return props.theme.activeColor;
|
|
79
|
+
});
|
|
80
|
+
var StyledCheckboxLabel = _styledComponents["default"].label(_templateObject15 || (_templateObject15 = (0, _taggedTemplateLiteral2["default"])(["\n font-size: ", ";\n color: ", ";\n cursor: pointer;\n white-space: nowrap;\n"])), function (props) {
|
|
81
|
+
return props.theme.inputFontSize;
|
|
82
|
+
}, function (props) {
|
|
83
|
+
return props.theme.effectPanelTextSecondary1;
|
|
84
|
+
});
|
|
85
|
+
var StyledHintTooltip = (0, _styledComponents["default"])(_styledComponents2.Tooltip)(_templateObject16 || (_templateObject16 = (0, _taggedTemplateLiteral2["default"])(["\n &.__react_component_tooltip {\n max-width: 220px;\n white-space: normal;\n line-height: 1.4;\n text-align: left;\n }\n"])));
|
|
86
|
+
var StyledHintIcon = _styledComponents["default"].span(_templateObject17 || (_templateObject17 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 14px;\n height: 14px;\n margin-left: 6px;\n border-radius: 50%;\n font-size: 9px;\n font-weight: 600;\n line-height: 1;\n color: ", ";\n border: 1px solid ", ";\n cursor: help;\n &:hover {\n color: ", ";\n border-color: ", ";\n }\n"])), function (props) {
|
|
87
|
+
return props.theme.labelColor;
|
|
88
|
+
}, function (props) {
|
|
89
|
+
return props.theme.labelColor;
|
|
90
|
+
}, function (props) {
|
|
91
|
+
return props.theme.textColorHl;
|
|
92
|
+
}, function (props) {
|
|
93
|
+
return props.theme.textColorHl;
|
|
94
|
+
});
|
|
95
|
+
var StyledColorCheckboxRow = _styledComponents["default"].div(_templateObject18 || (_templateObject18 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 8px;\n"])));
|
|
72
96
|
var COMMON_SLIDER_PROPS = {
|
|
73
97
|
showInput: true,
|
|
74
98
|
isRanged: false,
|
|
75
99
|
step: 0.001,
|
|
76
100
|
label: 'value'
|
|
77
101
|
};
|
|
78
|
-
EffectConfiguratorFactory.deps = [_rangeSlider["default"], _effectTimeConfigurator["default"]];
|
|
79
|
-
function EffectConfiguratorFactory(RangeSlider, EffectTimeConfigurator) {
|
|
102
|
+
EffectConfiguratorFactory.deps = [_rangeSlider["default"], _effectTimeConfigurator["default"], _surfaceFogSection["default"]];
|
|
103
|
+
function EffectConfiguratorFactory(RangeSlider, EffectTimeConfigurator, SurfaceFogElevationSection) {
|
|
80
104
|
var ShadowEffectConfigurator = function ShadowEffectConfigurator(_ref) {
|
|
81
105
|
var effect = _ref.effect,
|
|
82
106
|
updateEffectConfig = _ref.updateEffectConfig;
|
|
@@ -84,11 +108,18 @@ function EffectConfiguratorFactory(RangeSlider, EffectTimeConfigurator) {
|
|
|
84
108
|
id = effect.id;
|
|
85
109
|
var sliderProps = (0, _react.useMemo)(function () {
|
|
86
110
|
var propNames = ['shadowIntensity', 'ambientLightIntensity', 'sunLightIntensity'];
|
|
111
|
+
var descriptions = effect.getParameterDescriptions();
|
|
87
112
|
return propNames.map(function (propName) {
|
|
113
|
+
var _desc$min, _desc$max;
|
|
114
|
+
var desc = descriptions.find(function (d) {
|
|
115
|
+
return d.name === propName;
|
|
116
|
+
});
|
|
117
|
+
var min = (_desc$min = desc === null || desc === void 0 ? void 0 : desc.min) !== null && _desc$min !== void 0 ? _desc$min : 0;
|
|
118
|
+
var max = (_desc$max = desc === null || desc === void 0 ? void 0 : desc.max) !== null && _desc$max !== void 0 ? _desc$max : 1;
|
|
88
119
|
return {
|
|
89
120
|
value1: parameters[propName],
|
|
90
|
-
range: [
|
|
91
|
-
value0:
|
|
121
|
+
range: [min, max],
|
|
122
|
+
value0: min,
|
|
92
123
|
onChange: function onChange(value, event) {
|
|
93
124
|
updateEffectConfig(event, id, {
|
|
94
125
|
parameters: (0, _defineProperty2["default"])({}, propName, value[1])
|
|
@@ -96,7 +127,7 @@ function EffectConfiguratorFactory(RangeSlider, EffectTimeConfigurator) {
|
|
|
96
127
|
}
|
|
97
128
|
};
|
|
98
129
|
});
|
|
99
|
-
}, [id, parameters, updateEffectConfig]);
|
|
130
|
+
}, [id, effect, parameters, updateEffectConfig]);
|
|
100
131
|
var onTimeParametersChanged = (0, _react.useCallback)(function (parameters) {
|
|
101
132
|
updateEffectConfig(null, id, {
|
|
102
133
|
parameters: _objectSpread(_objectSpread(_objectSpread({}, parameters.timestamp ? {
|
|
@@ -131,27 +162,27 @@ function EffectConfiguratorFactory(RangeSlider, EffectTimeConfigurator) {
|
|
|
131
162
|
timeMode: parameters.timeMode,
|
|
132
163
|
onChange: onTimeParametersChanged
|
|
133
164
|
}), /*#__PURE__*/_react["default"].createElement(StyledVerticalSeparator, null), /*#__PURE__*/_react["default"].createElement(StyledWrapper, {
|
|
134
|
-
marginBottom: 0
|
|
165
|
+
$marginBottom: 0
|
|
135
166
|
}, /*#__PURE__*/_react["default"].createElement(SectionTitle, null, 'Shadow')), /*#__PURE__*/_react["default"].createElement(StyledWrapper, {
|
|
136
|
-
marginBottom: 16
|
|
167
|
+
$marginBottom: 16
|
|
137
168
|
}, /*#__PURE__*/_react["default"].createElement(_compactColorPicker["default"], {
|
|
138
169
|
label: 'Color',
|
|
139
170
|
color: colorPickerProps[2].colorSets[0].selectedColor,
|
|
140
171
|
onSetColor: colorPickerProps[2].colorSets[0].setColor,
|
|
141
172
|
Icon: _icons.ArrowDownSmall
|
|
142
173
|
}), /*#__PURE__*/_react["default"].createElement(StyledConfigSection, null, /*#__PURE__*/_react["default"].createElement(SectionSubTitle, null, "Intensity"), /*#__PURE__*/_react["default"].createElement(StyleSliderWrapper, null, /*#__PURE__*/_react["default"].createElement(RangeSlider, (0, _extends2["default"])({}, COMMON_SLIDER_PROPS, sliderProps[0]))))), /*#__PURE__*/_react["default"].createElement(StyledWrapper, {
|
|
143
|
-
marginBottom: 0
|
|
174
|
+
$marginBottom: 0
|
|
144
175
|
}, /*#__PURE__*/_react["default"].createElement(SectionTitle, null, 'Ambient light')), /*#__PURE__*/_react["default"].createElement(StyledWrapper, {
|
|
145
|
-
marginBottom: 16
|
|
176
|
+
$marginBottom: 16
|
|
146
177
|
}, /*#__PURE__*/_react["default"].createElement(_compactColorPicker["default"], {
|
|
147
178
|
label: 'Color',
|
|
148
179
|
color: colorPickerProps[0].colorSets[0].selectedColor,
|
|
149
180
|
onSetColor: colorPickerProps[0].colorSets[0].setColor,
|
|
150
181
|
Icon: _icons.ArrowDownSmall
|
|
151
182
|
}), /*#__PURE__*/_react["default"].createElement(StyledConfigSection, null, /*#__PURE__*/_react["default"].createElement(SectionSubTitle, null, "Intensity"), /*#__PURE__*/_react["default"].createElement(StyleSliderWrapper, null, /*#__PURE__*/_react["default"].createElement(RangeSlider, (0, _extends2["default"])({}, COMMON_SLIDER_PROPS, sliderProps[1]))))), /*#__PURE__*/_react["default"].createElement(StyledWrapper, {
|
|
152
|
-
marginBottom: 0
|
|
183
|
+
$marginBottom: 0
|
|
153
184
|
}, /*#__PURE__*/_react["default"].createElement(SectionTitle, null, 'Sun light')), /*#__PURE__*/_react["default"].createElement(StyledWrapper, {
|
|
154
|
-
marginBottom: 0
|
|
185
|
+
$marginBottom: 0
|
|
155
186
|
}, /*#__PURE__*/_react["default"].createElement(_compactColorPicker["default"], {
|
|
156
187
|
label: 'Color',
|
|
157
188
|
color: colorPickerProps[1].colorSets[0].selectedColor,
|
|
@@ -160,6 +191,7 @@ function EffectConfiguratorFactory(RangeSlider, EffectTimeConfigurator) {
|
|
|
160
191
|
}), /*#__PURE__*/_react["default"].createElement(StyledConfigSection, null, /*#__PURE__*/_react["default"].createElement(SectionSubTitle, null, "Intensity"), /*#__PURE__*/_react["default"].createElement(StyleSliderWrapper, null, /*#__PURE__*/_react["default"].createElement(RangeSlider, (0, _extends2["default"])({}, COMMON_SLIDER_PROPS, sliderProps[2]))))));
|
|
161
192
|
};
|
|
162
193
|
var defaultUniforms = {};
|
|
194
|
+
var ELEVATION_EXTRA_PARAMS = new Set(['heightEnd', 'animateHeight', 'linearEasing']);
|
|
163
195
|
var PostProcessingEffectConfigurator = function PostProcessingEffectConfigurator(_ref2) {
|
|
164
196
|
var _effect$deckEffect;
|
|
165
197
|
var effect = _ref2.effect,
|
|
@@ -168,13 +200,21 @@ function EffectConfiguratorFactory(RangeSlider, EffectTimeConfigurator) {
|
|
|
168
200
|
var parameterDescriptions = effect.getParameterDescriptions();
|
|
169
201
|
var parameters = effect.parameters,
|
|
170
202
|
id = effect.id;
|
|
203
|
+
var hasElevationSection = parameterDescriptions.some(function (d) {
|
|
204
|
+
return d.name === 'animateHeight';
|
|
205
|
+
});
|
|
171
206
|
var flatParameterDescriptions = (0, _react.useMemo)(function () {
|
|
172
207
|
return parameterDescriptions.reduce(function (acc, description) {
|
|
208
|
+
if (hasElevationSection && ELEVATION_EXTRA_PARAMS.has(description.name)) return acc;
|
|
209
|
+
if (hasElevationSection && description.name === 'height') {
|
|
210
|
+
acc.push(_objectSpread(_objectSpread({}, description), {}, {
|
|
211
|
+
type: _surfaceFogSection.ELEVATION_SECTION_TYPE
|
|
212
|
+
}));
|
|
213
|
+
return acc;
|
|
214
|
+
}
|
|
173
215
|
if (description.type === 'color') {
|
|
174
|
-
// color parameters are rendered separately via CompactColorPicker
|
|
175
216
|
acc.push(description);
|
|
176
217
|
} else if (description.type === 'array') {
|
|
177
|
-
// split arrays of controls into a separate controls for each component
|
|
178
218
|
if (Array.isArray(description.defaultValue)) {
|
|
179
219
|
description.defaultValue.forEach(function (_, index) {
|
|
180
220
|
var _description$label;
|
|
@@ -189,9 +229,14 @@ function EffectConfiguratorFactory(RangeSlider, EffectTimeConfigurator) {
|
|
|
189
229
|
}
|
|
190
230
|
return acc;
|
|
191
231
|
}, []);
|
|
192
|
-
}, [parameterDescriptions]);
|
|
232
|
+
}, [parameterDescriptions, hasElevationSection]);
|
|
193
233
|
var controls = (0, _react.useMemo)(function () {
|
|
194
234
|
return flatParameterDescriptions.map(function (desc) {
|
|
235
|
+
if (desc.type === _surfaceFogSection.ELEVATION_SECTION_TYPE) {
|
|
236
|
+
return {
|
|
237
|
+
isElevationSection: true
|
|
238
|
+
};
|
|
239
|
+
}
|
|
195
240
|
if (desc.type === 'color') {
|
|
196
241
|
return {
|
|
197
242
|
isColor: true,
|
|
@@ -205,9 +250,24 @@ function EffectConfiguratorFactory(RangeSlider, EffectTimeConfigurator) {
|
|
|
205
250
|
}
|
|
206
251
|
};
|
|
207
252
|
}
|
|
253
|
+
if (desc.type === 'checkbox') {
|
|
254
|
+
var _label = typeof desc.label === 'string' ? desc.label : desc.name;
|
|
255
|
+
return {
|
|
256
|
+
isCheckbox: true,
|
|
257
|
+
label: _label,
|
|
258
|
+
paramName: desc.name,
|
|
259
|
+
checked: Boolean(parameters[desc.name]),
|
|
260
|
+
tooltip: desc.tooltip,
|
|
261
|
+
onChange: function onChange() {
|
|
262
|
+
return updateEffectConfig(null, id, {
|
|
263
|
+
parameters: (0, _defineProperty2["default"])({}, desc.name, !parameters[desc.name])
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
};
|
|
267
|
+
}
|
|
208
268
|
var paramName = desc.name;
|
|
209
269
|
var rawUniform = uniforms[desc.name];
|
|
210
|
-
if (
|
|
270
|
+
if (rawUniform && rawUniform["private"]) {
|
|
211
271
|
return null;
|
|
212
272
|
}
|
|
213
273
|
|
|
@@ -232,12 +292,12 @@ function EffectConfiguratorFactory(RangeSlider, EffectTimeConfigurator) {
|
|
|
232
292
|
}
|
|
233
293
|
// the uniform is a plain number without any description
|
|
234
294
|
else if ((0, _utils.isNumber)(uniform)) {
|
|
235
|
-
var _desc$
|
|
295
|
+
var _desc$min2, _desc$max2, _desc$min3;
|
|
236
296
|
return {
|
|
237
297
|
label: label,
|
|
238
298
|
value1: prevValue !== null && prevValue !== void 0 ? prevValue : 0,
|
|
239
|
-
range: [(_desc$
|
|
240
|
-
value0: (_desc$
|
|
299
|
+
range: [(_desc$min2 = desc.min) !== null && _desc$min2 !== void 0 ? _desc$min2 : 0, (_desc$max2 = desc.max) !== null && _desc$max2 !== void 0 ? _desc$max2 : 500],
|
|
300
|
+
value0: (_desc$min3 = desc.min) !== null && _desc$min3 !== void 0 ? _desc$min3 : 0,
|
|
241
301
|
onChange: function onChange(newValue, event) {
|
|
242
302
|
updateEffectConfig(event, id, {
|
|
243
303
|
parameters: (0, _defineProperty2["default"])({}, paramName, newValue[1])
|
|
@@ -246,10 +306,10 @@ function EffectConfiguratorFactory(RangeSlider, EffectTimeConfigurator) {
|
|
|
246
306
|
};
|
|
247
307
|
}
|
|
248
308
|
// the uniform description is {value: 0, min: 0, max: 1, ...}
|
|
249
|
-
else if ((0, _utils.isNumber)(uniform.value)) {
|
|
250
|
-
var _ref3, _ref4, _desc$
|
|
251
|
-
var rangeMin = (_ref3 = (_ref4 = (_desc$
|
|
252
|
-
var rangeMax = (_ref5 = (_ref6 = (_desc$
|
|
309
|
+
else if (uniform && (0, _utils.isNumber)(uniform.value)) {
|
|
310
|
+
var _ref3, _ref4, _desc$min4, _ref5, _ref6, _desc$max3;
|
|
311
|
+
var rangeMin = (_ref3 = (_ref4 = (_desc$min4 = desc.min) !== null && _desc$min4 !== void 0 ? _desc$min4 : uniform.min) !== null && _ref4 !== void 0 ? _ref4 : uniform.softMin) !== null && _ref3 !== void 0 ? _ref3 : 0;
|
|
312
|
+
var rangeMax = (_ref5 = (_ref6 = (_desc$max3 = desc.max) !== null && _desc$max3 !== void 0 ? _desc$max3 : uniform.max) !== null && _ref6 !== void 0 ? _ref6 : uniform.softMax) !== null && _ref5 !== void 0 ? _ref5 : 1;
|
|
253
313
|
var rangeSpan = rangeMax - rangeMin;
|
|
254
314
|
var step = rangeSpan > 10 ? 1 : 0.001;
|
|
255
315
|
return {
|
|
@@ -265,6 +325,24 @@ function EffectConfiguratorFactory(RangeSlider, EffectTimeConfigurator) {
|
|
|
265
325
|
}
|
|
266
326
|
};
|
|
267
327
|
}
|
|
328
|
+
// Parameter defined in effect description but not in shader propTypes
|
|
329
|
+
else if (desc.min !== undefined && desc.max !== undefined) {
|
|
330
|
+
var _ref7;
|
|
331
|
+
var _rangeSpan = desc.max - desc.min;
|
|
332
|
+
var _step = _rangeSpan > 10 ? 1 : 0.001;
|
|
333
|
+
return {
|
|
334
|
+
label: label,
|
|
335
|
+
value1: (_ref7 = prevValue !== null && prevValue !== void 0 ? prevValue : desc.defaultValue) !== null && _ref7 !== void 0 ? _ref7 : 0,
|
|
336
|
+
range: [desc.min, desc.max],
|
|
337
|
+
value0: desc.min,
|
|
338
|
+
step: _step,
|
|
339
|
+
onChange: function onChange(newValue, event) {
|
|
340
|
+
updateEffectConfig(event, id, {
|
|
341
|
+
parameters: (0, _defineProperty2["default"])({}, paramName, newValue[1])
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
};
|
|
345
|
+
}
|
|
268
346
|
|
|
269
347
|
// ignore everything else for now
|
|
270
348
|
return null;
|
|
@@ -272,34 +350,117 @@ function EffectConfiguratorFactory(RangeSlider, EffectTimeConfigurator) {
|
|
|
272
350
|
}, [flatParameterDescriptions, id, parameters, updateEffectConfig, uniforms]);
|
|
273
351
|
return /*#__PURE__*/_react["default"].createElement(StyledEffectConfigurator, {
|
|
274
352
|
key: effect.id
|
|
275
|
-
},
|
|
276
|
-
var
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
353
|
+
}, function () {
|
|
354
|
+
var elements = [];
|
|
355
|
+
var i = 0;
|
|
356
|
+
var _loop = function _loop() {
|
|
357
|
+
var control = controls[i];
|
|
358
|
+
if (!control) {
|
|
359
|
+
i++;
|
|
360
|
+
return 0; // continue
|
|
361
|
+
}
|
|
362
|
+
if ('isColor' in control) {
|
|
363
|
+
var _control$onSetColor2;
|
|
364
|
+
var nextControl = i + 1 < controls.length ? controls[i + 1] : null;
|
|
365
|
+
if (nextControl && 'isCheckbox' in nextControl) {
|
|
366
|
+
var _control$onSetColor;
|
|
367
|
+
var cbTooltipId = nextControl.tooltip ? "effect-cb-hint-".concat(effect.id, "-").concat(i) : undefined;
|
|
368
|
+
elements.push( /*#__PURE__*/_react["default"].createElement(StyledColorCheckboxRow, {
|
|
369
|
+
key: "".concat(effect.id, "-").concat(i)
|
|
370
|
+
}, /*#__PURE__*/_react["default"].createElement(_compactColorPicker["default"], {
|
|
371
|
+
label: typeof control.label === 'string' ? control.label : 'Color',
|
|
372
|
+
color: control.color,
|
|
373
|
+
onSetColor: (_control$onSetColor = control.onSetColor) !== null && _control$onSetColor !== void 0 ? _control$onSetColor : function () {
|
|
374
|
+
/* noop */
|
|
375
|
+
},
|
|
376
|
+
Icon: _icons.ArrowDownSmall
|
|
377
|
+
}), /*#__PURE__*/_react["default"].createElement(StyledCheckboxWrapper, {
|
|
378
|
+
onClick: function onClick() {
|
|
379
|
+
return nextControl.onChange();
|
|
380
|
+
}
|
|
381
|
+
}, /*#__PURE__*/_react["default"].createElement(StyledCheckbox, {
|
|
382
|
+
type: "checkbox",
|
|
383
|
+
checked: nextControl.checked,
|
|
384
|
+
onChange: function onChange() {
|
|
385
|
+
return nextControl.onChange();
|
|
386
|
+
},
|
|
387
|
+
onClick: function onClick(e) {
|
|
388
|
+
return e.stopPropagation();
|
|
389
|
+
}
|
|
390
|
+
}), /*#__PURE__*/_react["default"].createElement(StyledCheckboxLabel, null, nextControl.label), nextControl.tooltip ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(StyledHintIcon, {
|
|
391
|
+
"data-tip": true,
|
|
392
|
+
"data-for": cbTooltipId,
|
|
393
|
+
onClick: function onClick(e) {
|
|
394
|
+
return e.stopPropagation();
|
|
395
|
+
}
|
|
396
|
+
}, "?"), /*#__PURE__*/_react["default"].createElement(StyledHintTooltip, {
|
|
397
|
+
id: cbTooltipId,
|
|
398
|
+
effect: "solid",
|
|
399
|
+
delayShow: 200
|
|
400
|
+
}, nextControl.tooltip)) : null)));
|
|
401
|
+
i += 2;
|
|
402
|
+
return 0; // continue
|
|
403
|
+
}
|
|
404
|
+
elements.push( /*#__PURE__*/_react["default"].createElement(RegularOuterWrapper, {
|
|
405
|
+
key: "".concat(effect.id, "-").concat(i)
|
|
406
|
+
}, /*#__PURE__*/_react["default"].createElement(_compactColorPicker["default"], {
|
|
407
|
+
label: typeof control.label === 'string' ? control.label : 'Color',
|
|
408
|
+
color: control.color,
|
|
409
|
+
onSetColor: (_control$onSetColor2 = control.onSetColor) !== null && _control$onSetColor2 !== void 0 ? _control$onSetColor2 : function () {
|
|
410
|
+
/* noop */
|
|
411
|
+
},
|
|
412
|
+
Icon: _icons.ArrowDownSmall
|
|
413
|
+
})));
|
|
414
|
+
i++;
|
|
415
|
+
return 0; // continue
|
|
416
|
+
}
|
|
417
|
+
if ('isCheckbox' in control) {
|
|
418
|
+
elements.push( /*#__PURE__*/_react["default"].createElement(RegularOuterWrapper, {
|
|
419
|
+
key: "".concat(effect.id, "-").concat(i)
|
|
420
|
+
}, /*#__PURE__*/_react["default"].createElement(StyledCheckboxWrapper, {
|
|
421
|
+
onClick: function onClick() {
|
|
422
|
+
return control.onChange();
|
|
423
|
+
}
|
|
424
|
+
}, /*#__PURE__*/_react["default"].createElement(StyledCheckbox, {
|
|
425
|
+
type: "checkbox",
|
|
426
|
+
checked: control.checked,
|
|
427
|
+
onChange: function onChange() {
|
|
428
|
+
return control.onChange();
|
|
429
|
+
},
|
|
430
|
+
onClick: function onClick(e) {
|
|
431
|
+
return e.stopPropagation();
|
|
432
|
+
}
|
|
433
|
+
}), /*#__PURE__*/_react["default"].createElement(StyledCheckboxLabel, null, control.label))));
|
|
434
|
+
i++;
|
|
435
|
+
return 0; // continue
|
|
436
|
+
}
|
|
437
|
+
if ('isElevationSection' in control) {
|
|
438
|
+
elements.push( /*#__PURE__*/_react["default"].createElement(SurfaceFogElevationSection, {
|
|
439
|
+
key: "".concat(effect.id, "-elevation"),
|
|
440
|
+
effect: effect,
|
|
441
|
+
updateEffectConfig: updateEffectConfig
|
|
442
|
+
}));
|
|
443
|
+
i++;
|
|
444
|
+
return 0; // continue
|
|
445
|
+
}
|
|
446
|
+
elements.push( /*#__PURE__*/_react["default"].createElement(RegularOuterWrapper, {
|
|
447
|
+
key: "".concat(effect.id, "-").concat(i)
|
|
448
|
+
}, control.label ? /*#__PURE__*/_react["default"].createElement(RegularSectionTitleWrapper, null, control.label) : null, /*#__PURE__*/_react["default"].createElement(RegularSliderWrapper, null, /*#__PURE__*/_react["default"].createElement(RangeSlider, (0, _extends2["default"])({
|
|
449
|
+
key: i
|
|
450
|
+
}, COMMON_SLIDER_PROPS, control)))));
|
|
451
|
+
i++;
|
|
452
|
+
},
|
|
453
|
+
_ret;
|
|
454
|
+
while (i < flatParameterDescriptions.length) {
|
|
455
|
+
_ret = _loop();
|
|
456
|
+
if (_ret === 0) continue;
|
|
292
457
|
}
|
|
293
|
-
return
|
|
294
|
-
|
|
295
|
-
}, control.label ? /*#__PURE__*/_react["default"].createElement(RegularSectionTitleWrapper, null, control.label) : null, /*#__PURE__*/_react["default"].createElement(RegularSliderWrapper, null, /*#__PURE__*/_react["default"].createElement(RangeSlider, (0, _extends2["default"])({
|
|
296
|
-
key: parameterIndex
|
|
297
|
-
}, COMMON_SLIDER_PROPS, control))));
|
|
298
|
-
}));
|
|
458
|
+
return elements;
|
|
459
|
+
}());
|
|
299
460
|
};
|
|
300
|
-
var EffectConfigurator = function EffectConfigurator(
|
|
301
|
-
var effect =
|
|
302
|
-
updateEffectConfig =
|
|
461
|
+
var EffectConfigurator = function EffectConfigurator(_ref8) {
|
|
462
|
+
var effect = _ref8.effect,
|
|
463
|
+
updateEffectConfig = _ref8.updateEffectConfig;
|
|
303
464
|
return effect.type === _constants.LIGHT_AND_SHADOW_EFFECT.type ? /*#__PURE__*/_react["default"].createElement(ShadowEffectConfigurator, {
|
|
304
465
|
effect: effect,
|
|
305
466
|
updateEffectConfig: updateEffectConfig
|
|
@@ -310,4 +471,4 @@ function EffectConfiguratorFactory(RangeSlider, EffectTimeConfigurator) {
|
|
|
310
471
|
};
|
|
311
472
|
return (0, _reactIntl.injectIntl)(EffectConfigurator);
|
|
312
473
|
}
|
|
313
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVhY3RJbnRsIiwiX2NvbnN0YW50cyIsIl91dGlscyIsIl9yYW5nZVNsaWRlciIsIl9pY29ucyIsIl9lZmZlY3RUaW1lQ29uZmlndXJhdG9yIiwiX2NvbXBhY3RDb2xvclBpY2tlciIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfdGVtcGxhdGVPYmplY3QzIiwiX3RlbXBsYXRlT2JqZWN0NCIsIl90ZW1wbGF0ZU9iamVjdDUiLCJfdGVtcGxhdGVPYmplY3Q2IiwiX3RlbXBsYXRlT2JqZWN0NyIsIl90ZW1wbGF0ZU9iamVjdDgiLCJfdGVtcGxhdGVPYmplY3Q5IiwiX3RlbXBsYXRlT2JqZWN0MTAiLCJfdGVtcGxhdGVPYmplY3QxMSIsIl90ZW1wbGF0ZU9iamVjdDEyIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mMyIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIlN0eWxlZEVmZmVjdENvbmZpZ3VyYXRvciIsInN0eWxlZCIsImRpdiIsImF0dHJzIiwiY2xhc3NOYW1lIiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwiZWZmZWN0Q29uZmlndXJhdG9yTWFyZ2luIiwiZWZmZWN0Q29uZmlndXJhdG9yUGFkZGluZyIsIlBhbmVsTGFiZWxXcmFwcGVyIiwiZXhwb3J0cyIsIlN0eWxlZENvbG9yU2VsZWN0b3JXcmFwcGVyIiwiU3R5bGVkVmVydGljYWxTZXBhcmF0b3IiLCJpbnB1dEJnZCIsIlN0eWxlZFdyYXBwZXIiLCJfcHJvcHMkbWFyZ2luQm90dG9tIiwibWFyZ2luQm90dG9tIiwiU3R5bGVkQ29uZmlnU2VjdGlvbiIsIlNlY3Rpb25UaXRsZSIsImlucHV0Rm9udFNpemUiLCJlZmZlY3RQYW5lbFRleHRTZWNvbmRhcnkxIiwiU2VjdGlvblN1YlRpdGxlIiwiZWZmZWN0UGFuZWxUZXh0U2Vjb25kYXJ5MiIsIlN0eWxlU2xpZGVyV3JhcHBlciIsIlJlZ3VsYXJPdXRlcldyYXBwZXIiLCJSZWd1bGFyU2VjdGlvblRpdGxlV3JhcHBlciIsIlJlZ3VsYXJTbGlkZXJXcmFwcGVyIiwiQ09NTU9OX1NMSURFUl9QUk9QUyIsInNob3dJbnB1dCIsImlzUmFuZ2VkIiwic3RlcCIsImxhYmVsIiwiRWZmZWN0Q29uZmlndXJhdG9yRmFjdG9yeSIsImRlcHMiLCJSYW5nZVNsaWRlckZhY3RvcnkiLCJFZmZlY3RUaW1lQ29uZmlndXJhdG9yRmFjdG9yeSIsIlJhbmdlU2xpZGVyIiwiRWZmZWN0VGltZUNvbmZpZ3VyYXRvciIsIlNoYWRvd0VmZmVjdENvbmZpZ3VyYXRvciIsIl9yZWYiLCJlZmZlY3QiLCJ1cGRhdGVFZmZlY3RDb25maWciLCJwYXJhbWV0ZXJzIiwiaWQiLCJzbGlkZXJQcm9wcyIsInVzZU1lbW8iLCJwcm9wTmFtZXMiLCJtYXAiLCJwcm9wTmFtZSIsInZhbHVlMSIsInJhbmdlIiwidmFsdWUwIiwib25DaGFuZ2UiLCJ2YWx1ZSIsImV2ZW50Iiwib25UaW1lUGFyYW1ldGVyc0NoYW5nZWQiLCJ1c2VDYWxsYmFjayIsInRpbWVzdGFtcCIsInRpbWV6b25lIiwidGltZU1vZGUiLCJjb2xvclBpY2tlclByb3BzIiwiY29sb3JTZXRzIiwic2VsZWN0ZWRDb2xvciIsInNldENvbG9yIiwidiIsImNyZWF0ZUVsZW1lbnQiLCJrZXkiLCJjb2xvciIsIm9uU2V0Q29sb3IiLCJJY29uIiwiQXJyb3dEb3duU21hbGwiLCJfZXh0ZW5kczIiLCJkZWZhdWx0VW5pZm9ybXMiLCJQb3N0UHJvY2Vzc2luZ0VmZmVjdENvbmZpZ3VyYXRvciIsIl9yZWYyIiwiX2VmZmVjdCRkZWNrRWZmZWN0IiwidW5pZm9ybXMiLCJkZWNrRWZmZWN0IiwibW9kdWxlIiwicHJvcFR5cGVzIiwicGFyYW1ldGVyRGVzY3JpcHRpb25zIiwiZ2V0UGFyYW1ldGVyRGVzY3JpcHRpb25zIiwiZmxhdFBhcmFtZXRlckRlc2NyaXB0aW9ucyIsInJlZHVjZSIsImFjYyIsImRlc2NyaXB0aW9uIiwidHlwZSIsIkFycmF5IiwiaXNBcnJheSIsImRlZmF1bHRWYWx1ZSIsIl8iLCJpbmRleCIsIl9kZXNjcmlwdGlvbiRsYWJlbCIsImNvbnRyb2xzIiwiZGVzYyIsImlzQ29sb3IiLCJuYW1lIiwicGFyYW1OYW1lIiwicmF3VW5pZm9ybSIsInVuaWZvcm0iLCJfdHlwZW9mMiIsInByZXZWYWx1ZSIsIm5ld1ZhbHVlIiwiaXNOdW1iZXIiLCJfZGVzYyRtaW4iLCJfZGVzYyRtYXgiLCJfZGVzYyRtaW4yIiwibWluIiwibWF4IiwiX3JlZjMiLCJfcmVmNCIsIl9kZXNjJG1pbjMiLCJfcmVmNSIsIl9yZWY2IiwiX2Rlc2MkbWF4MiIsInJhbmdlTWluIiwic29mdE1pbiIsInJhbmdlTWF4Iiwic29mdE1heCIsInJhbmdlU3BhbiIsInBhcmFtZXRlckluZGV4IiwiY29udHJvbCIsIl9jb250cm9sJG9uU2V0Q29sb3IiLCJjb25jYXQiLCJFZmZlY3RDb25maWd1cmF0b3IiLCJfcmVmNyIsIkxJR0hUX0FORF9TSEFET1dfRUZGRUNUIiwiaW5qZWN0SW50bCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lZmZlY3RzL2VmZmVjdC1jb25maWd1cmF0b3IudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VNZW1vfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7aW5qZWN0SW50bCwgSW50bFNoYXBlfSBmcm9tICdyZWFjdC1pbnRsJztcblxuaW1wb3J0IHtMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVH0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtpc051bWJlcn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge0VmZmVjdCwgRWZmZWN0VXBkYXRlUHJvcHN9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5pbXBvcnQgUmFuZ2VTbGlkZXJGYWN0b3J5IGZyb20gJy4uL2NvbW1vbi9yYW5nZS1zbGlkZXInO1xuaW1wb3J0IHtBcnJvd0Rvd25TbWFsbH0gZnJvbSAnLi4vY29tbW9uL2ljb25zJztcbmltcG9ydCBFZmZlY3RUaW1lQ29uZmlndXJhdG9yRmFjdG9yeSBmcm9tICcuL2VmZmVjdC10aW1lLWNvbmZpZ3VyYXRvcic7XG5pbXBvcnQgQ29tcGFjdENvbG9yUGlja2VyIGZyb20gJy4vY29tcGFjdC1jb2xvci1waWNrZXInO1xuXG5leHBvcnQgdHlwZSBFZmZlY3RDb25maWd1cmF0b3JQcm9wcyA9IHtcbiAgZWZmZWN0OiBFZmZlY3Q7XG4gIHVwZGF0ZUVmZmVjdENvbmZpZzogKFxuICAgIGU6IEV2ZW50IHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGNvbmZpZzogUGFydGlhbDxFZmZlY3RVcGRhdGVQcm9wcz5cbiAgKSA9PiB2b2lkO1xufTtcblxuY29uc3QgU3R5bGVkRWZmZWN0Q29uZmlndXJhdG9yID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2VmZmVjdC1wYW5lbF9fY29uZmlnJ1xufSlgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmVmZmVjdENvbmZpZ3VyYXRvck1hcmdpbn07XG4gIHBhZGRpbmc6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZWZmZWN0Q29uZmlndXJhdG9yUGFkZGluZ307XG5gO1xuXG5leHBvcnQgY29uc3QgUGFuZWxMYWJlbFdyYXBwZXIgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnc2lkZS1wYW5lbC1wYW5lbF9fbGFiZWwtd3JhcHBlcidcbn0pYFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogc2VsZi1zdGFydDtcbiAgbWFyZ2luLWJvdHRvbTogMTFweDtcblxuICAuc2lkZS1wYW5lbC1wYW5lbF9fbGFiZWwge1xuICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICBtYXJnaW4tYm90dG9tOiAwcHg7XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRDb2xvclNlbGVjdG9yV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbi1yaWdodDogNXB4O1xuICBtYXJnaW4tbGVmdDogNXB4O1xuICBtYXJnaW4tYm90dG9tOiA2cHg7XG4gIG1hcmdpbi10b3A6IDJweDtcbmA7XG5cbmNvbnN0IFN0eWxlZFZlcnRpY2FsU2VwYXJhdG9yID0gc3R5bGVkLmRpdmBcbiAgaGVpZ2h0OiAxcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaW5wdXRCZ2R9O1xuICBtYXJnaW4tdG9wOiAyMHB4O1xuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICBtYXJnaW4tbGVmdDogLTIwcHg7XG5gO1xuXG50eXBlIFN0eWxlZFdyYXBwZXJQcm9wcyA9IHtcbiAgbWFyZ2luQm90dG9tPzogbnVtYmVyO1xufTtcbmNvbnN0IFN0eWxlZFdyYXBwZXIgPSBzdHlsZWQuZGl2PFN0eWxlZFdyYXBwZXJQcm9wcz5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWFyZ2luLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy5tYXJnaW5Cb3R0b20gPz8gOX1weDtcbmA7XG5cbmNvbnN0IFN0eWxlZENvbmZpZ1NlY3Rpb24gPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuYDtcblxuY29uc3QgU2VjdGlvblRpdGxlID0gc3R5bGVkLmRpdmBcbiAgZm9udC1zaXplOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0Rm9udFNpemV9O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5lZmZlY3RQYW5lbFRleHRTZWNvbmRhcnkxfTtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbmA7XG5cbmNvbnN0IFNlY3Rpb25TdWJUaXRsZSA9IHN0eWxlZC5kaXZgXG4gIGZvbnQtc2l6ZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dEZvbnRTaXplfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZWZmZWN0UGFuZWxUZXh0U2Vjb25kYXJ5Mn07XG4gIG1hcmdpbi1ib3R0b206IDhweDtcbiAgbWFyZ2luLWxlZnQ6IDZweDtcbmA7XG5cbmNvbnN0IFN0eWxlU2xpZGVyV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG4gIHdpZHRoOiAxOTlweDtcbiAgaGVpZ2h0OiAzMnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAua2ctcmFuZ2Utc2xpZGVyX19pbnB1dCB7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAzcHggNnB4O1xuICB9XG4gIC5rZy1zbGlkZXIge1xuICAgIHBhZGRpbmctbGVmdDogNnB4O1xuICB9XG4gIC5rZy1yYW5nZS1zbGlkZXIge1xuICAgIHBhZGRpbmc6IDBweCAhaW1wb3J0YW50O1xuICB9XG5gO1xuXG5jb25zdCBSZWd1bGFyT3V0ZXJXcmFwcGVyID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2VmZmVjdC1jb25maWd1cmF0b3JfX3BwLXNlY3Rpb24nXG59KWBcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xuYDtcblxuY29uc3QgUmVndWxhclNlY3Rpb25UaXRsZVdyYXBwZXIgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnZWZmZWN0LWNvbmZpZ3VyYXRvcl9fcHAtc2VjdGlvbi10aXRsZSdcbn0pYFxuICBmb250LXNpemU6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaW5wdXRGb250U2l6ZX07XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmVmZmVjdFBhbmVsVGV4dFNlY29uZGFyeTF9O1xuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgbWFyZ2luLWJvdHRvbTogLTNweDtcbmA7XG5cbmNvbnN0IFJlZ3VsYXJTbGlkZXJXcmFwcGVyID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2VmZmVjdC1jb25maWd1cmF0b3JfX3BwLXNlY3Rpb24tY29udHJvbCdcbn0pYFxuICBoZWlnaHQ6IDMycHg7XG4gIC5rZy1yYW5nZS1zbGlkZXJfX2lucHV0IHtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBhZGRpbmc6IDNweCA2cHg7XG4gIH1cbiAgLmtnLXNsaWRlciB7XG4gICAgcGFkZGluZy1sZWZ0OiA2cHg7XG4gIH1cbiAgLmtnLXJhbmdlLXNsaWRlciB7XG4gICAgcGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7XG4gIH1cbmA7XG5cbmNvbnN0IENPTU1PTl9TTElERVJfUFJPUFMgPSB7XG4gIHNob3dJbnB1dDogdHJ1ZSxcbiAgaXNSYW5nZWQ6IGZhbHNlLFxuICBzdGVwOiAwLjAwMSxcbiAgbGFiZWw6ICd2YWx1ZSdcbn07XG5cbnR5cGUgRWZmZWN0UGFyYW1ldGVyRGVzY3JpcHRpb25GbGF0dGVuZWQgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZT86ICdudW1iZXInIHwgJ2FycmF5JyB8ICdjb2xvcic7XG4gIGxhYmVsPzogc3RyaW5nIHwgZmFsc2UgfCAoc3RyaW5nIHwgZmFsc2UpW107XG4gIG1pbjogbnVtYmVyO1xuICBtYXg6IG51bWJlcjtcbiAgZGVmYXVsdFZhbHVlPzogbnVtYmVyIHwgbnVtYmVyW107XG4gIGluZGV4PzogbnVtYmVyO1xufTtcblxuRWZmZWN0Q29uZmlndXJhdG9yRmFjdG9yeS5kZXBzID0gW1JhbmdlU2xpZGVyRmFjdG9yeSwgRWZmZWN0VGltZUNvbmZpZ3VyYXRvckZhY3RvcnldO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBFZmZlY3RDb25maWd1cmF0b3JGYWN0b3J5KFxuICBSYW5nZVNsaWRlcjogUmV0dXJuVHlwZTx0eXBlb2YgUmFuZ2VTbGlkZXJGYWN0b3J5PixcbiAgRWZmZWN0VGltZUNvbmZpZ3VyYXRvcjogUmV0dXJuVHlwZTx0eXBlb2YgRWZmZWN0VGltZUNvbmZpZ3VyYXRvckZhY3Rvcnk+XG4pOiBSZWFjdC5GQzxFZmZlY3RDb25maWd1cmF0b3JQcm9wcz4ge1xuICBjb25zdCBTaGFkb3dFZmZlY3RDb25maWd1cmF0b3I6IFJlYWN0LkZDPEVmZmVjdENvbmZpZ3VyYXRvclByb3BzPiA9ICh7XG4gICAgZWZmZWN0LFxuICAgIHVwZGF0ZUVmZmVjdENvbmZpZ1xuICB9KSA9PiB7XG4gICAgY29uc3Qge3BhcmFtZXRlcnMsIGlkfSA9IGVmZmVjdDtcblxuICAgIGNvbnN0IHNsaWRlclByb3BzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wTmFtZXMgPSBbJ3NoYWRvd0ludGVuc2l0eScsICdhbWJpZW50TGlnaHRJbnRlbnNpdHknLCAnc3VuTGlnaHRJbnRlbnNpdHknXTtcbiAgICAgIHJldHVybiBwcm9wTmFtZXMubWFwKHByb3BOYW1lID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB2YWx1ZTE6IHBhcmFtZXRlcnNbcHJvcE5hbWVdLFxuICAgICAgICAgIHJhbmdlOiBbMCwgMV0sXG4gICAgICAgICAgdmFsdWUwOiAwLFxuICAgICAgICAgIG9uQ2hhbmdlOiAodmFsdWU6IG51bWJlcltdLCBldmVudD86IEV2ZW50IHwgbnVsbCkgPT4ge1xuICAgICAgICAgICAgdXBkYXRlRWZmZWN0Q29uZmlnKGV2ZW50LCBpZCwge3BhcmFtZXRlcnM6IHtbcHJvcE5hbWVdOiB2YWx1ZVsxXX19KTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9LCBbaWQsIHBhcmFtZXRlcnMsIHVwZGF0ZUVmZmVjdENvbmZpZ10pO1xuXG4gICAgY29uc3Qgb25UaW1lUGFyYW1ldGVyc0NoYW5nZWQgPSB1c2VDYWxsYmFjayhcbiAgICAgIHBhcmFtZXRlcnMgPT4ge1xuICAgICAgICB1cGRhdGVFZmZlY3RDb25maWcobnVsbCwgaWQsIHtcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAuLi4ocGFyYW1ldGVycy50aW1lc3RhbXAgPyB7dGltZXN0YW1wOiBwYXJhbWV0ZXJzLnRpbWVzdGFtcH0gOiBudWxsKSxcbiAgICAgICAgICAgIC4uLihwYXJhbWV0ZXJzLnRpbWV6b25lID8ge3RpbWV6b25lOiBwYXJhbWV0ZXJzLnRpbWV6b25lfSA6IG51bGwpLFxuICAgICAgICAgICAgLi4uKHBhcmFtZXRlcnMudGltZU1vZGUgPyB7dGltZU1vZGU6IHBhcmFtZXRlcnMudGltZU1vZGV9IDogbnVsbClcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIFtpZCwgdXBkYXRlRWZmZWN0Q29uZmlnXVxuICAgICk7XG5cbiAgICBjb25zdCBjb2xvclBpY2tlclByb3BzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wTmFtZXMgPSBbJ2FtYmllbnRMaWdodENvbG9yJywgJ3N1bkxpZ2h0Q29sb3InLCAnc2hhZG93Q29sb3InXTtcbiAgICAgIHJldHVybiBwcm9wTmFtZXMubWFwKHByb3BOYW1lID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb2xvclNldHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvcjogcGFyYW1ldGVyc1twcm9wTmFtZV0sXG4gICAgICAgICAgICAgIHNldENvbG9yOiB2ID0+IHVwZGF0ZUVmZmVjdENvbmZpZyhudWxsLCBpZCwge3BhcmFtZXRlcnM6IHtbcHJvcE5hbWVdOiB2fX0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfSwgW2lkLCBwYXJhbWV0ZXJzLCB1cGRhdGVFZmZlY3RDb25maWddKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkRWZmZWN0Q29uZmlndXJhdG9yIGtleT17ZWZmZWN0LmlkfT5cbiAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgIDxTZWN0aW9uVGl0bGU+eydEYXRlICYgVGltZSd9PC9TZWN0aW9uVGl0bGU+XG4gICAgICAgIDwvUGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgIDxFZmZlY3RUaW1lQ29uZmlndXJhdG9yXG4gICAgICAgICAgdGltZXN0YW1wPXtwYXJhbWV0ZXJzLnRpbWVzdGFtcH1cbiAgICAgICAgICB0aW1lem9uZT17cGFyYW1ldGVycy50aW1lem9uZX1cbiAgICAgICAgICB0aW1lTW9kZT17cGFyYW1ldGVycy50aW1lTW9kZX1cbiAgICAgICAgICBvbkNoYW5nZT17b25UaW1lUGFyYW1ldGVyc0NoYW5nZWR9XG4gICAgICAgIC8+XG5cbiAgICAgICAgPFN0eWxlZFZlcnRpY2FsU2VwYXJhdG9yIC8+XG5cbiAgICAgICAgPFN0eWxlZFdyYXBwZXIgbWFyZ2luQm90dG9tPXswfT5cbiAgICAgICAgICA8U2VjdGlvblRpdGxlPnsnU2hhZG93J308L1NlY3Rpb25UaXRsZT5cbiAgICAgICAgPC9TdHlsZWRXcmFwcGVyPlxuICAgICAgICA8U3R5bGVkV3JhcHBlciBtYXJnaW5Cb3R0b209ezE2fT5cbiAgICAgICAgICA8Q29tcGFjdENvbG9yUGlja2VyXG4gICAgICAgICAgICBsYWJlbD17J0NvbG9yJ31cbiAgICAgICAgICAgIGNvbG9yPXtjb2xvclBpY2tlclByb3BzWzJdLmNvbG9yU2V0c1swXS5zZWxlY3RlZENvbG9yfVxuICAgICAgICAgICAgb25TZXRDb2xvcj17Y29sb3JQaWNrZXJQcm9wc1syXS5jb2xvclNldHNbMF0uc2V0Q29sb3J9XG4gICAgICAgICAgICBJY29uPXtBcnJvd0Rvd25TbWFsbH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxTdHlsZWRDb25maWdTZWN0aW9uPlxuICAgICAgICAgICAgPFNlY3Rpb25TdWJUaXRsZT5JbnRlbnNpdHk8L1NlY3Rpb25TdWJUaXRsZT5cbiAgICAgICAgICAgIDxTdHlsZVNsaWRlcldyYXBwZXI+XG4gICAgICAgICAgICAgIDxSYW5nZVNsaWRlciB7Li4uQ09NTU9OX1NMSURFUl9QUk9QU30gey4uLnNsaWRlclByb3BzWzBdfSAvPlxuICAgICAgICAgICAgPC9TdHlsZVNsaWRlcldyYXBwZXI+XG4gICAgICAgICAgPC9TdHlsZWRDb25maWdTZWN0aW9uPlxuICAgICAgICA8L1N0eWxlZFdyYXBwZXI+XG5cbiAgICAgICAgPFN0eWxlZFdyYXBwZXIgbWFyZ2luQm90dG9tPXswfT5cbiAgICAgICAgICA8U2VjdGlvblRpdGxlPnsnQW1iaWVudCBsaWdodCd9PC9TZWN0aW9uVGl0bGU+XG4gICAgICAgIDwvU3R5bGVkV3JhcHBlcj5cbiAgICAgICAgPFN0eWxlZFdyYXBwZXIgbWFyZ2luQm90dG9tPXsxNn0+XG4gICAgICAgICAgPENvbXBhY3RDb2xvclBpY2tlclxuICAgICAgICAgICAgbGFiZWw9eydDb2xvcid9XG4gICAgICAgICAgICBjb2xvcj17Y29sb3JQaWNrZXJQcm9wc1swXS5jb2xvclNldHNbMF0uc2VsZWN0ZWRDb2xvcn1cbiAgICAgICAgICAgIG9uU2V0Q29sb3I9e2NvbG9yUGlja2VyUHJvcHNbMF0uY29sb3JTZXRzWzBdLnNldENvbG9yfVxuICAgICAgICAgICAgSWNvbj17QXJyb3dEb3duU21hbGx9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8U3R5bGVkQ29uZmlnU2VjdGlvbj5cbiAgICAgICAgICAgIDxTZWN0aW9uU3ViVGl0bGU+SW50ZW5zaXR5PC9TZWN0aW9uU3ViVGl0bGU+XG4gICAgICAgICAgICA8U3R5bGVTbGlkZXJXcmFwcGVyPlxuICAgICAgICAgICAgICA8UmFuZ2VTbGlkZXIgey4uLkNPTU1PTl9TTElERVJfUFJPUFN9IHsuLi5zbGlkZXJQcm9wc1sxXX0gLz5cbiAgICAgICAgICAgIDwvU3R5bGVTbGlkZXJXcmFwcGVyPlxuICAgICAgICAgIDwvU3R5bGVkQ29uZmlnU2VjdGlvbj5cbiAgICAgICAgPC9TdHlsZWRXcmFwcGVyPlxuXG4gICAgICAgIDxTdHlsZWRXcmFwcGVyIG1hcmdpbkJvdHRvbT17MH0+XG4gICAgICAgICAgPFNlY3Rpb25UaXRsZT57J1N1biBsaWdodCd9PC9TZWN0aW9uVGl0bGU+XG4gICAgICAgIDwvU3R5bGVkV3JhcHBlcj5cbiAgICAgICAgPFN0eWxlZFdyYXBwZXIgbWFyZ2luQm90dG9tPXswfT5cbiAgICAgICAgICA8Q29tcGFjdENvbG9yUGlja2VyXG4gICAgICAgICAgICBsYWJlbD17J0NvbG9yJ31cbiAgICAgICAgICAgIGNvbG9yPXtjb2xvclBpY2tlclByb3BzWzFdLmNvbG9yU2V0c1swXS5zZWxlY3RlZENvbG9yfVxuICAgICAgICAgICAgb25TZXRDb2xvcj17Y29sb3JQaWNrZXJQcm9wc1sxXS5jb2xvclNldHNbMF0uc2V0Q29sb3J9XG4gICAgICAgICAgICBJY29uPXtBcnJvd0Rvd25TbWFsbH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxTdHlsZWRDb25maWdTZWN0aW9uPlxuICAgICAgICAgICAgPFNlY3Rpb25TdWJUaXRsZT5JbnRlbnNpdHk8L1NlY3Rpb25TdWJUaXRsZT5cbiAgICAgICAgICAgIDxTdHlsZVNsaWRlcldyYXBwZXI+XG4gICAgICAgICAgICAgIDxSYW5nZVNsaWRlciB7Li4uQ09NTU9OX1NMSURFUl9QUk9QU30gey4uLnNsaWRlclByb3BzWzJdfSAvPlxuICAgICAgICAgICAgPC9TdHlsZVNsaWRlcldyYXBwZXI+XG4gICAgICAgICAgPC9TdHlsZWRDb25maWdTZWN0aW9uPlxuICAgICAgICA8L1N0eWxlZFdyYXBwZXI+XG4gICAgICA8L1N0eWxlZEVmZmVjdENvbmZpZ3VyYXRvcj5cbiAgICApO1xuICB9O1xuICBjb25zdCBkZWZhdWx0VW5pZm9ybXMgPSB7fTtcblxuICBjb25zdCBQb3N0UHJvY2Vzc2luZ0VmZmVjdENvbmZpZ3VyYXRvcjogUmVhY3QuRkM8RWZmZWN0Q29uZmlndXJhdG9yUHJvcHM+ID0gKHtcbiAgICBlZmZlY3QsXG4gICAgdXBkYXRlRWZmZWN0Q29uZmlnXG4gIH0pID0+IHtcbiAgICBjb25zdCB1bmlmb3JtcyA9IGVmZmVjdC5kZWNrRWZmZWN0Py5tb2R1bGUucHJvcFR5cGVzIHx8IGRlZmF1bHRVbmlmb3JtcztcbiAgICBjb25zdCBwYXJhbWV0ZXJEZXNjcmlwdGlvbnMgPSBlZmZlY3QuZ2V0UGFyYW1ldGVyRGVzY3JpcHRpb25zKCk7XG4gICAgY29uc3Qge3BhcmFtZXRlcnMsIGlkfSA9IGVmZmVjdDtcbiAgICBjb25zdCBmbGF0UGFyYW1ldGVyRGVzY3JpcHRpb25zID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICByZXR1cm4gcGFyYW1ldGVyRGVzY3JpcHRpb25zLnJlZHVjZSgoYWNjLCBkZXNjcmlwdGlvbikgPT4ge1xuICAgICAgICBpZiAoZGVzY3JpcHRpb24udHlwZSA9PT0gJ2NvbG9yJykge1xuICAgICAgICAgIC8vIGNvbG9yIHBhcmFtZXRlcnMgYXJlIHJlbmRlcmVkIHNlcGFyYXRlbHkgdmlhIENvbXBhY3RDb2xvclBpY2tlclxuICAgICAgICAgIGFjYy5wdXNoKGRlc2NyaXB0aW9uKTtcbiAgICAgICAgfSBlbHNlIGlmIChkZXNjcmlwdGlvbi50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICAgICAgLy8gc3BsaXQgYXJyYXlzIG9mIGNvbnRyb2xzIGludG8gYSBzZXBhcmF0ZSBjb250cm9scyBmb3IgZWFjaCBjb21wb25lbnRcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkZXNjcmlwdGlvbi5kZWZhdWx0VmFsdWUpKSB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbi5kZWZhdWx0VmFsdWUuZm9yRWFjaCgoXywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgYWNjLnB1c2goe1xuICAgICAgICAgICAgICAgIC4uLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgICAgIGxhYmVsOiBkZXNjcmlwdGlvbi5sYWJlbD8uW2luZGV4XVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhY2MucHVzaChkZXNjcmlwdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwgW10gYXMgRWZmZWN0UGFyYW1ldGVyRGVzY3JpcHRpb25GbGF0dGVuZWRbXSk7XG4gICAgfSwgW3BhcmFtZXRlckRlc2NyaXB0aW9uc10pO1xuXG4gICAgY29uc3QgY29udHJvbHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIHJldHVybiBmbGF0UGFyYW1ldGVyRGVzY3JpcHRpb25zLm1hcChkZXNjID0+IHtcbiAgICAgICAgaWYgKGRlc2MudHlwZSA9PT0gJ2NvbG9yJykge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpc0NvbG9yOiB0cnVlIGFzIGNvbnN0LFxuICAgICAgICAgICAgbGFiZWw6IGRlc2MubGFiZWwgfHwgZGVzYy5uYW1lLFxuICAgICAgICAgICAgcGFyYW1OYW1lOiBkZXNjLm5hbWUsXG4gICAgICAgICAgICBjb2xvcjogcGFyYW1ldGVyc1tkZXNjLm5hbWVdIHx8IGRlc2MuZGVmYXVsdFZhbHVlIHx8IFsyNTUsIDI1NSwgMjU1XSxcbiAgICAgICAgICAgIG9uU2V0Q29sb3I6ICh2OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0pID0+XG4gICAgICAgICAgICAgIHVwZGF0ZUVmZmVjdENvbmZpZyhudWxsLCBpZCwge3BhcmFtZXRlcnM6IHtbZGVzYy5uYW1lXTogdn19KVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJhbU5hbWUgPSBkZXNjLm5hbWU7XG5cbiAgICAgICAgY29uc3QgcmF3VW5pZm9ybSA9IHVuaWZvcm1zW2Rlc2MubmFtZV07XG4gICAgICAgIGlmICgoIXJhd1VuaWZvcm0gJiYgcmF3VW5pZm9ybSAhPT0gMCkgfHwgcmF3VW5pZm9ybS5wcml2YXRlKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBsdW1hLmdsIDkgd3JhcHMgYXJyYXkgcHJvcFR5cGVzIGFzIHt2YWx1ZTogWy4uLl19XG4gICAgICAgIGNvbnN0IHVuaWZvcm0gPVxuICAgICAgICAgIHJhd1VuaWZvcm0gJiYgdHlwZW9mIHJhd1VuaWZvcm0gPT09ICdvYmplY3QnICYmIEFycmF5LmlzQXJyYXkocmF3VW5pZm9ybS52YWx1ZSlcbiAgICAgICAgICAgID8gcmF3VW5pZm9ybS52YWx1ZVxuICAgICAgICAgICAgOiByYXdVbmlmb3JtO1xuXG4gICAgICAgIGNvbnN0IHByZXZWYWx1ZSA9IHBhcmFtZXRlcnNbcGFyYW1OYW1lXTtcblxuICAgICAgICBjb25zdCBsYWJlbCA9IGRlc2MubGFiZWwgPT09IGZhbHNlID8gZmFsc2UgOiBkZXNjLmxhYmVsIHx8IGRlc2MubmFtZTtcblxuICAgICAgICAvLyB0aGUgdW5pZm9ybSBpcyBbbnVtYmVyLCBudW1iZXJdIGFycmF5XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHVuaWZvcm0pICYmIHVuaWZvcm0ubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxhYmVsLFxuICAgICAgICAgICAgdmFsdWUxOiBwcmV2VmFsdWVbZGVzYy5pbmRleCB8fCAwXSB8fCAwLFxuICAgICAgICAgICAgcmFuZ2U6IFswLCAxXSxcbiAgICAgICAgICAgIHZhbHVlMDogMCxcbiAgICAgICAgICAgIG9uQ2hhbmdlOiAobmV3VmFsdWU6IG51bWJlcltdLCBldmVudCkgPT4ge1xuICAgICAgICAgICAgICB1cGRhdGVFZmZlY3RDb25maWcoZXZlbnQsIGlkLCB7XG4gICAgICAgICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgICAgICAgW3BhcmFtTmFtZV06XG4gICAgICAgICAgICAgICAgICAgIGRlc2MuaW5kZXggPT09IDAgPyBbbmV3VmFsdWVbMV0sIHByZXZWYWx1ZVsxXV0gOiBbcHJldlZhbHVlWzBdLCBuZXdWYWx1ZVsxXV1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgLy8gdGhlIHVuaWZvcm0gaXMgYSBwbGFpbiBudW1iZXIgd2l0aG91dCBhbnkgZGVzY3JpcHRpb25cbiAgICAgICAgZWxzZSBpZiAoaXNOdW1iZXIodW5pZm9ybSkpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICB2YWx1ZTE6IHByZXZWYWx1ZSA/PyAwLFxuICAgICAgICAgICAgcmFuZ2U6IFtkZXNjLm1pbiA/PyAwLCBkZXNjLm1heCA/PyA1MDBdLFxuICAgICAgICAgICAgdmFsdWUwOiBkZXNjLm1pbiA/PyAwLFxuICAgICAgICAgICAgb25DaGFuZ2U6IChuZXdWYWx1ZTogbnVtYmVyW10sIGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIHVwZGF0ZUVmZmVjdENvbmZpZyhldmVudCwgaWQsIHtwYXJhbWV0ZXJzOiB7W3BhcmFtTmFtZV06IG5ld1ZhbHVlWzFdfX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgLy8gdGhlIHVuaWZvcm0gZGVzY3JpcHRpb24gaXMge3ZhbHVlOiAwLCBtaW46IDAsIG1heDogMSwgLi4ufVxuICAgICAgICBlbHNlIGlmIChpc051bWJlcih1bmlmb3JtLnZhbHVlKSkge1xuICAgICAgICAgIGNvbnN0IHJhbmdlTWluID0gZGVzYy5taW4gPz8gdW5pZm9ybS5taW4gPz8gdW5pZm9ybS5zb2Z0TWluID8/IDA7XG4gICAgICAgICAgY29uc3QgcmFuZ2VNYXggPSBkZXNjLm1heCA/PyB1bmlmb3JtLm1heCA/PyB1bmlmb3JtLnNvZnRNYXggPz8gMTtcbiAgICAgICAgICBjb25zdCByYW5nZVNwYW4gPSByYW5nZU1heCAtIHJhbmdlTWluO1xuICAgICAgICAgIGNvbnN0IHN0ZXAgPSByYW5nZVNwYW4gPiAxMCA/IDEgOiAwLjAwMTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICB2YWx1ZTE6IHByZXZWYWx1ZSB8fCAwLFxuICAgICAgICAgICAgcmFuZ2U6IFtyYW5nZU1pbiwgcmFuZ2VNYXhdLFxuICAgICAgICAgICAgdmFsdWUwOiByYW5nZU1pbixcbiAgICAgICAgICAgIHN0ZXAsXG4gICAgICAgICAgICBvbkNoYW5nZTogKG5ld1ZhbHVlOiBudW1iZXJbXSwgZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgdXBkYXRlRWZmZWN0Q29uZmlnKGV2ZW50LCBpZCwge3BhcmFtZXRlcnM6IHtbcGFyYW1OYW1lXTogbmV3VmFsdWVbMV19fSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlnbm9yZSBldmVyeXRoaW5nIGVsc2UgZm9yIG5vd1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0pO1xuICAgIH0sIFtmbGF0UGFyYW1ldGVyRGVzY3JpcHRpb25zLCBpZCwgcGFyYW1ldGVycywgdXBkYXRlRWZmZWN0Q29uZmlnLCB1bmlmb3Jtc10pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRFZmZlY3RDb25maWd1cmF0b3Iga2V5PXtlZmZlY3QuaWR9PlxuICAgICAgICB7ZmxhdFBhcmFtZXRlckRlc2NyaXB0aW9ucy5tYXAoKGRlc2MsIHBhcmFtZXRlckluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgY29udHJvbCA9IGNvbnRyb2xzW3BhcmFtZXRlckluZGV4XTtcbiAgICAgICAgICBpZiAoIWNvbnRyb2wpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICgnaXNDb2xvcicgaW4gY29udHJvbCkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPFJlZ3VsYXJPdXRlcldyYXBwZXIga2V5PXtgJHtlZmZlY3QuaWR9LSR7cGFyYW1ldGVySW5kZXh9YH0+XG4gICAgICAgICAgICAgICAgPENvbXBhY3RDb2xvclBpY2tlclxuICAgICAgICAgICAgICAgICAgbGFiZWw9e3R5cGVvZiBjb250cm9sLmxhYmVsID09PSAnc3RyaW5nJyA/IGNvbnRyb2wubGFiZWwgOiAnQ29sb3InfVxuICAgICAgICAgICAgICAgICAgY29sb3I9e2NvbnRyb2wuY29sb3J9XG4gICAgICAgICAgICAgICAgICBvblNldENvbG9yPXtcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbC5vblNldENvbG9yID8/XG4gICAgICAgICAgICAgICAgICAgICgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgLyogbm9vcCAqL1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgSWNvbj17QXJyb3dEb3duU21hbGx9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9SZWd1bGFyT3V0ZXJXcmFwcGVyPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFJlZ3VsYXJPdXRlcldyYXBwZXIga2V5PXtgJHtlZmZlY3QuaWR9LSR7cGFyYW1ldGVySW5kZXh9YH0+XG4gICAgICAgICAgICAgIHtjb250cm9sLmxhYmVsID8gKFxuICAgICAgICAgICAgICAgIDxSZWd1bGFyU2VjdGlvblRpdGxlV3JhcHBlcj57Y29udHJvbC5sYWJlbH08L1JlZ3VsYXJTZWN0aW9uVGl0bGVXcmFwcGVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPFJlZ3VsYXJTbGlkZXJXcmFwcGVyPlxuICAgICAgICAgICAgICAgIDxSYW5nZVNsaWRlciBrZXk9e3BhcmFtZXRlckluZGV4fSB7Li4uQ09NTU9OX1NMSURFUl9QUk9QU30gey4uLmNvbnRyb2x9IC8+XG4gICAgICAgICAgICAgIDwvUmVndWxhclNsaWRlcldyYXBwZXI+XG4gICAgICAgICAgICA8L1JlZ3VsYXJPdXRlcldyYXBwZXI+XG4gICAgICAgICAgKTtcbiAgICAgICAgfSl9XG4gICAgICA8L1N0eWxlZEVmZmVjdENvbmZpZ3VyYXRvcj5cbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IEVmZmVjdENvbmZpZ3VyYXRvciA9ICh7XG4gICAgZWZmZWN0LFxuICAgIHVwZGF0ZUVmZmVjdENvbmZpZ1xuICB9OiBFZmZlY3RDb25maWd1cmF0b3JQcm9wcyAmIHtpbnRsOiBJbnRsU2hhcGV9KSA9PiB7XG4gICAgcmV0dXJuIGVmZmVjdC50eXBlID09PSBMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVC50eXBlID8gKFxuICAgICAgPFNoYWRvd0VmZmVjdENvbmZpZ3VyYXRvciBlZmZlY3Q9e2VmZmVjdH0gdXBkYXRlRWZmZWN0Q29uZmlnPXt1cGRhdGVFZmZlY3RDb25maWd9IC8+XG4gICAgKSA6IChcbiAgICAgIDxQb3N0UHJvY2Vzc2luZ0VmZmVjdENvbmZpZ3VyYXRvciBlZmZlY3Q9e2VmZmVjdH0gdXBkYXRlRWZmZWN0Q29uZmlnPXt1cGRhdGVFZmZlY3RDb25maWd9IC8+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gaW5qZWN0SW50bChFZmZlY3RDb25maWd1cmF0b3IpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFVBQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLFVBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLE1BQUEsR0FBQUwsT0FBQTtBQUdBLElBQUFNLFlBQUEsR0FBQUosc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFPLE1BQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLHVCQUFBLEdBQUFOLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBUyxtQkFBQSxHQUFBUCxzQkFBQSxDQUFBRixPQUFBO0FBQXdELElBQUFVLGVBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsaUJBQUEsRUFBQUMsaUJBQUEsRUFBQUMsaUJBQUEsRUFkeEQ7QUFDQTtBQUFBLFNBQUFDLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBeEIsd0JBQUF3QixDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFB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
|
|
474
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVhY3RJbnRsIiwiX2NvbnN0YW50cyIsIl91dGlscyIsIl9yYW5nZVNsaWRlciIsIl9pY29ucyIsIl9zdHlsZWRDb21wb25lbnRzMiIsIl9lZmZlY3RUaW1lQ29uZmlndXJhdG9yIiwiX2NvbXBhY3RDb2xvclBpY2tlciIsIl9zdXJmYWNlRm9nU2VjdGlvbiIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfdGVtcGxhdGVPYmplY3QzIiwiX3RlbXBsYXRlT2JqZWN0NCIsIl90ZW1wbGF0ZU9iamVjdDUiLCJfdGVtcGxhdGVPYmplY3Q2IiwiX3RlbXBsYXRlT2JqZWN0NyIsIl90ZW1wbGF0ZU9iamVjdDgiLCJfdGVtcGxhdGVPYmplY3Q5IiwiX3RlbXBsYXRlT2JqZWN0MTAiLCJfdGVtcGxhdGVPYmplY3QxMSIsIl90ZW1wbGF0ZU9iamVjdDEyIiwiX3RlbXBsYXRlT2JqZWN0MTMiLCJfdGVtcGxhdGVPYmplY3QxNCIsIl90ZW1wbGF0ZU9iamVjdDE1IiwiX3RlbXBsYXRlT2JqZWN0MTYiLCJfdGVtcGxhdGVPYmplY3QxNyIsIl90ZW1wbGF0ZU9iamVjdDE4IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mMyIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIlN0eWxlZEVmZmVjdENvbmZpZ3VyYXRvciIsInN0eWxlZCIsImRpdiIsImF0dHJzIiwiY2xhc3NOYW1lIiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwiZWZmZWN0Q29uZmlndXJhdG9yTWFyZ2luIiwiZWZmZWN0Q29uZmlndXJhdG9yUGFkZGluZyIsIlBhbmVsTGFiZWxXcmFwcGVyIiwiZXhwb3J0cyIsIlN0eWxlZENvbG9yU2VsZWN0b3JXcmFwcGVyIiwiU3R5bGVkVmVydGljYWxTZXBhcmF0b3IiLCJpbnB1dEJnZCIsIlN0eWxlZFdyYXBwZXIiLCJfcHJvcHMkJG1hcmdpbkJvdHRvbSIsIiRtYXJnaW5Cb3R0b20iLCJTdHlsZWRDb25maWdTZWN0aW9uIiwiU2VjdGlvblRpdGxlIiwiaW5wdXRGb250U2l6ZSIsImVmZmVjdFBhbmVsVGV4dFNlY29uZGFyeTEiLCJTZWN0aW9uU3ViVGl0bGUiLCJlZmZlY3RQYW5lbFRleHRTZWNvbmRhcnkyIiwiU3R5bGVTbGlkZXJXcmFwcGVyIiwiUmVndWxhck91dGVyV3JhcHBlciIsIlJlZ3VsYXJTZWN0aW9uVGl0bGVXcmFwcGVyIiwiUmVndWxhclNsaWRlcldyYXBwZXIiLCJTdHlsZWRDaGVja2JveFdyYXBwZXIiLCJTdHlsZWRDaGVja2JveCIsImlucHV0IiwiYWN0aXZlQ29sb3IiLCJTdHlsZWRDaGVja2JveExhYmVsIiwibGFiZWwiLCJTdHlsZWRIaW50VG9vbHRpcCIsIlRvb2x0aXAiLCJTdHlsZWRIaW50SWNvbiIsInNwYW4iLCJsYWJlbENvbG9yIiwidGV4dENvbG9ySGwiLCJTdHlsZWRDb2xvckNoZWNrYm94Um93IiwiQ09NTU9OX1NMSURFUl9QUk9QUyIsInNob3dJbnB1dCIsImlzUmFuZ2VkIiwic3RlcCIsIkVmZmVjdENvbmZpZ3VyYXRvckZhY3RvcnkiLCJkZXBzIiwiUmFuZ2VTbGlkZXJGYWN0b3J5IiwiRWZmZWN0VGltZUNvbmZpZ3VyYXRvckZhY3RvcnkiLCJTdXJmYWNlRm9nRWxldmF0aW9uU2VjdGlvbkZhY3RvcnkiLCJSYW5nZVNsaWRlciIsIkVmZmVjdFRpbWVDb25maWd1cmF0b3IiLCJTdXJmYWNlRm9nRWxldmF0aW9uU2VjdGlvbiIsIlNoYWRvd0VmZmVjdENvbmZpZ3VyYXRvciIsIl9yZWYiLCJlZmZlY3QiLCJ1cGRhdGVFZmZlY3RDb25maWciLCJwYXJhbWV0ZXJzIiwiaWQiLCJzbGlkZXJQcm9wcyIsInVzZU1lbW8iLCJwcm9wTmFtZXMiLCJkZXNjcmlwdGlvbnMiLCJnZXRQYXJhbWV0ZXJEZXNjcmlwdGlvbnMiLCJtYXAiLCJwcm9wTmFtZSIsIl9kZXNjJG1pbiIsIl9kZXNjJG1heCIsImRlc2MiLCJmaW5kIiwiZCIsIm5hbWUiLCJtaW4iLCJtYXgiLCJ2YWx1ZTEiLCJyYW5nZSIsInZhbHVlMCIsIm9uQ2hhbmdlIiwidmFsdWUiLCJldmVudCIsIm9uVGltZVBhcmFtZXRlcnNDaGFuZ2VkIiwidXNlQ2FsbGJhY2siLCJ0aW1lc3RhbXAiLCJ0aW1lem9uZSIsInRpbWVNb2RlIiwiY29sb3JQaWNrZXJQcm9wcyIsImNvbG9yU2V0cyIsInNlbGVjdGVkQ29sb3IiLCJzZXRDb2xvciIsInYiLCJjcmVhdGVFbGVtZW50Iiwia2V5IiwiY29sb3IiLCJvblNldENvbG9yIiwiSWNvbiIsIkFycm93RG93blNtYWxsIiwiX2V4dGVuZHMyIiwiZGVmYXVsdFVuaWZvcm1zIiwiRUxFVkFUSU9OX0VYVFJBX1BBUkFNUyIsIlNldCIsIlBvc3RQcm9jZXNzaW5nRWZmZWN0Q29uZmlndXJhdG9yIiwiX3JlZjIiLCJfZWZmZWN0JGRlY2tFZmZlY3QiLCJ1bmlmb3JtcyIsImRlY2tFZmZlY3QiLCJtb2R1bGUiLCJwcm9wVHlwZXMiLCJwYXJhbWV0ZXJEZXNjcmlwdGlvbnMiLCJoYXNFbGV2YXRpb25TZWN0aW9uIiwic29tZSIsImZsYXRQYXJhbWV0ZXJEZXNjcmlwdGlvbnMiLCJyZWR1Y2UiLCJhY2MiLCJkZXNjcmlwdGlvbiIsInR5cGUiLCJFTEVWQVRJT05fU0VDVElPTl9UWVBFIiwiQXJyYXkiLCJpc0FycmF5IiwiZGVmYXVsdFZhbHVlIiwiXyIsImluZGV4IiwiX2Rlc2NyaXB0aW9uJGxhYmVsIiwiY29udHJvbHMiLCJpc0VsZXZhdGlvblNlY3Rpb24iLCJpc0NvbG9yIiwicGFyYW1OYW1lIiwiaXNDaGVja2JveCIsImNoZWNrZWQiLCJCb29sZWFuIiwidG9vbHRpcCIsInJhd1VuaWZvcm0iLCJ1bmlmb3JtIiwiX3R5cGVvZjIiLCJwcmV2VmFsdWUiLCJuZXdWYWx1ZSIsImlzTnVtYmVyIiwiX2Rlc2MkbWluMiIsIl9kZXNjJG1heDIiLCJfZGVzYyRtaW4zIiwiX3JlZjMiLCJfcmVmNCIsIl9kZXNjJG1pbjQiLCJfcmVmNSIsIl9yZWY2IiwiX2Rlc2MkbWF4MyIsInJhbmdlTWluIiwic29mdE1pbiIsInJhbmdlTWF4Iiwic29mdE1heCIsInJhbmdlU3BhbiIsInVuZGVmaW5lZCIsIl9yZWY3IiwiZWxlbWVudHMiLCJfbG9vcCIsImNvbnRyb2wiLCJfY29udHJvbCRvblNldENvbG9yMiIsIm5leHRDb250cm9sIiwiX2NvbnRyb2wkb25TZXRDb2xvciIsImNiVG9vbHRpcElkIiwiY29uY2F0Iiwib25DbGljayIsInN0b3BQcm9wYWdhdGlvbiIsIkZyYWdtZW50IiwiZGVsYXlTaG93IiwiX3JldCIsIkVmZmVjdENvbmZpZ3VyYXRvciIsIl9yZWY4IiwiTElHSFRfQU5EX1NIQURPV19FRkZFQ1QiLCJpbmplY3RJbnRsIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VmZmVjdHMvZWZmZWN0LWNvbmZpZ3VyYXRvci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZU1lbW99IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtpbmplY3RJbnRsLCBJbnRsU2hhcGV9IGZyb20gJ3JlYWN0LWludGwnO1xuXG5pbXBvcnQge0xJR0hUX0FORF9TSEFET1dfRUZGRUNUfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge2lzTnVtYmVyfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7RWZmZWN0LCBFZmZlY3RVcGRhdGVQcm9wc30gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmltcG9ydCBSYW5nZVNsaWRlckZhY3RvcnkgZnJvbSAnLi4vY29tbW9uL3JhbmdlLXNsaWRlcic7XG5pbXBvcnQge0Fycm93RG93blNtYWxsfSBmcm9tICcuLi9jb21tb24vaWNvbnMnO1xuaW1wb3J0IHtUb29sdGlwfSBmcm9tICcuLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IEVmZmVjdFRpbWVDb25maWd1cmF0b3JGYWN0b3J5IGZyb20gJy4vZWZmZWN0LXRpbWUtY29uZmlndXJhdG9yJztcbmltcG9ydCBDb21wYWN0Q29sb3JQaWNrZXIgZnJvbSAnLi9jb21wYWN0LWNvbG9yLXBpY2tlcic7XG5pbXBvcnQgU3VyZmFjZUZvZ0VsZXZhdGlvblNlY3Rpb25GYWN0b3J5LCB7RUxFVkFUSU9OX1NFQ1RJT05fVFlQRX0gZnJvbSAnLi9zdXJmYWNlLWZvZy1zZWN0aW9uJztcblxuZXhwb3J0IHR5cGUgRWZmZWN0Q29uZmlndXJhdG9yUHJvcHMgPSB7XG4gIGVmZmVjdDogRWZmZWN0O1xuICB1cGRhdGVFZmZlY3RDb25maWc6IChcbiAgICBlOiBFdmVudCB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBjb25maWc6IFBhcnRpYWw8RWZmZWN0VXBkYXRlUHJvcHM+XG4gICkgPT4gdm9pZDtcbn07XG5cbmNvbnN0IFN0eWxlZEVmZmVjdENvbmZpZ3VyYXRvciA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdlZmZlY3QtcGFuZWxfX2NvbmZpZydcbn0pYFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5lZmZlY3RDb25maWd1cmF0b3JNYXJnaW59O1xuICBwYWRkaW5nOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmVmZmVjdENvbmZpZ3VyYXRvclBhZGRpbmd9O1xuYDtcblxuZXhwb3J0IGNvbnN0IFBhbmVsTGFiZWxXcmFwcGVyID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ3NpZGUtcGFuZWwtcGFuZWxfX2xhYmVsLXdyYXBwZXInXG59KWBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IHNlbGYtc3RhcnQ7XG4gIG1hcmdpbi1ib3R0b206IDExcHg7XG5cbiAgLnNpZGUtcGFuZWwtcGFuZWxfX2xhYmVsIHtcbiAgICBtYXJnaW4tdG9wOiAycHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMHB4O1xuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkQ29sb3JTZWxlY3RvcldyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgbWFyZ2luLWJvdHRvbTogNnB4O1xuICBtYXJnaW4tdG9wOiAycHg7XG5gO1xuXG5jb25zdCBTdHlsZWRWZXJ0aWNhbFNlcGFyYXRvciA9IHN0eWxlZC5kaXZgXG4gIGhlaWdodDogMXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0QmdkfTtcbiAgbWFyZ2luLXRvcDogMjBweDtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgbWFyZ2luLWxlZnQ6IC0yMHB4O1xuYDtcblxudHlwZSBTdHlsZWRXcmFwcGVyUHJvcHMgPSB7XG4gICRtYXJnaW5Cb3R0b20/OiBudW1iZXI7XG59O1xuY29uc3QgU3R5bGVkV3JhcHBlciA9IHN0eWxlZC5kaXY8U3R5bGVkV3JhcHBlclByb3BzPmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW4tYm90dG9tOiAke3Byb3BzID0+IHByb3BzLiRtYXJnaW5Cb3R0b20gPz8gOX1weDtcbmA7XG5cbmNvbnN0IFN0eWxlZENvbmZpZ1NlY3Rpb24gPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuYDtcblxuY29uc3QgU2VjdGlvblRpdGxlID0gc3R5bGVkLmRpdmBcbiAgZm9udC1zaXplOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0Rm9udFNpemV9O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5lZmZlY3RQYW5lbFRleHRTZWNvbmRhcnkxfTtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbmA7XG5cbmNvbnN0IFNlY3Rpb25TdWJUaXRsZSA9IHN0eWxlZC5kaXZgXG4gIGZvbnQtc2l6ZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dEZvbnRTaXplfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZWZmZWN0UGFuZWxUZXh0U2Vjb25kYXJ5Mn07XG4gIG1hcmdpbi1ib3R0b206IDhweDtcbiAgbWFyZ2luLWxlZnQ6IDZweDtcbmA7XG5cbmNvbnN0IFN0eWxlU2xpZGVyV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG4gIHdpZHRoOiAxOTlweDtcbiAgaGVpZ2h0OiAzMnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAua2ctcmFuZ2Utc2xpZGVyX19pbnB1dCB7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAzcHggNnB4O1xuICB9XG4gIC5rZy1zbGlkZXIge1xuICAgIHBhZGRpbmctbGVmdDogNnB4O1xuICB9XG4gIC5rZy1yYW5nZS1zbGlkZXIge1xuICAgIHBhZGRpbmc6IDBweCAhaW1wb3J0YW50O1xuICB9XG5gO1xuXG5jb25zdCBSZWd1bGFyT3V0ZXJXcmFwcGVyID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2VmZmVjdC1jb25maWd1cmF0b3JfX3BwLXNlY3Rpb24nXG59KWBcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xuYDtcblxuY29uc3QgUmVndWxhclNlY3Rpb25UaXRsZVdyYXBwZXIgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnZWZmZWN0LWNvbmZpZ3VyYXRvcl9fcHAtc2VjdGlvbi10aXRsZSdcbn0pYFxuICBmb250LXNpemU6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaW5wdXRGb250U2l6ZX07XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmVmZmVjdFBhbmVsVGV4dFNlY29uZGFyeTF9O1xuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgbWFyZ2luLWJvdHRvbTogLTNweDtcbmA7XG5cbmNvbnN0IFJlZ3VsYXJTbGlkZXJXcmFwcGVyID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2VmZmVjdC1jb25maWd1cmF0b3JfX3BwLXNlY3Rpb24tY29udHJvbCdcbn0pYFxuICBoZWlnaHQ6IDMycHg7XG4gIC5rZy1yYW5nZS1zbGlkZXJfX2lucHV0IHtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBhZGRpbmc6IDNweCA2cHg7XG4gIH1cbiAgLmtnLXNsaWRlciB7XG4gICAgcGFkZGluZy1sZWZ0OiA2cHg7XG4gIH1cbiAgLmtnLXJhbmdlLXNsaWRlciB7XG4gICAgcGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZENoZWNrYm94V3JhcHBlciA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdlZmZlY3QtY29uZmlndXJhdG9yX19wcC1zZWN0aW9uLWNoZWNrYm94J1xufSlgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbmA7XG5cbmNvbnN0IFN0eWxlZENoZWNrYm94ID0gc3R5bGVkLmlucHV0YFxuICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBhY2NlbnQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuYWN0aXZlQ29sb3J9O1xuYDtcblxuY29uc3QgU3R5bGVkQ2hlY2tib3hMYWJlbCA9IHN0eWxlZC5sYWJlbGBcbiAgZm9udC1zaXplOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0Rm9udFNpemV9O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5lZmZlY3RQYW5lbFRleHRTZWNvbmRhcnkxfTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuYDtcblxuY29uc3QgU3R5bGVkSGludFRvb2x0aXAgPSBzdHlsZWQoVG9vbHRpcClgXG4gICYuX19yZWFjdF9jb21wb25lbnRfdG9vbHRpcCB7XG4gICAgbWF4LXdpZHRoOiAyMjBweDtcbiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkSGludEljb24gPSBzdHlsZWQuc3BhbmBcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB3aWR0aDogMTRweDtcbiAgaGVpZ2h0OiAxNHB4O1xuICBtYXJnaW4tbGVmdDogNnB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGZvbnQtc2l6ZTogOXB4O1xuICBmb250LXdlaWdodDogNjAwO1xuICBsaW5lLWhlaWdodDogMTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGFiZWxDb2xvcn07XG4gIGJvcmRlcjogMXB4IHNvbGlkICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGFiZWxDb2xvcn07XG4gIGN1cnNvcjogaGVscDtcbiAgJjpob3ZlciB7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9ySGx9O1xuICAgIGJvcmRlci1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZENvbG9yQ2hlY2tib3hSb3cgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG1hcmdpbi1ib3R0b206IDhweDtcbmA7XG5cbmNvbnN0IENPTU1PTl9TTElERVJfUFJPUFMgPSB7XG4gIHNob3dJbnB1dDogdHJ1ZSxcbiAgaXNSYW5nZWQ6IGZhbHNlLFxuICBzdGVwOiAwLjAwMSxcbiAgbGFiZWw6ICd2YWx1ZSdcbn07XG5cbnR5cGUgRWZmZWN0UGFyYW1ldGVyRGVzY3JpcHRpb25GbGF0dGVuZWQgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZT86ICdudW1iZXInIHwgJ2FycmF5JyB8ICdjb2xvcicgfCAnY2hlY2tib3gnO1xuICBsYWJlbD86IHN0cmluZyB8IGZhbHNlIHwgKHN0cmluZyB8IGZhbHNlKVtdO1xuICB0b29sdGlwPzogc3RyaW5nO1xuICBtaW46IG51bWJlcjtcbiAgbWF4OiBudW1iZXI7XG4gIGRlZmF1bHRWYWx1ZT86IG51bWJlciB8IG51bWJlcltdIHwgYm9vbGVhbjtcbiAgaW5kZXg/OiBudW1iZXI7XG59O1xuXG5FZmZlY3RDb25maWd1cmF0b3JGYWN0b3J5LmRlcHMgPSBbXG4gIFJhbmdlU2xpZGVyRmFjdG9yeSxcbiAgRWZmZWN0VGltZUNvbmZpZ3VyYXRvckZhY3RvcnksXG4gIFN1cmZhY2VGb2dFbGV2YXRpb25TZWN0aW9uRmFjdG9yeVxuXTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRWZmZWN0Q29uZmlndXJhdG9yRmFjdG9yeShcbiAgUmFuZ2VTbGlkZXI6IFJldHVyblR5cGU8dHlwZW9mIFJhbmdlU2xpZGVyRmFjdG9yeT4sXG4gIEVmZmVjdFRpbWVDb25maWd1cmF0b3I6IFJldHVyblR5cGU8dHlwZW9mIEVmZmVjdFRpbWVDb25maWd1cmF0b3JGYWN0b3J5PixcbiAgU3VyZmFjZUZvZ0VsZXZhdGlvblNlY3Rpb246IFJldHVyblR5cGU8dHlwZW9mIFN1cmZhY2VGb2dFbGV2YXRpb25TZWN0aW9uRmFjdG9yeT5cbik6IFJlYWN0LkZDPEVmZmVjdENvbmZpZ3VyYXRvclByb3BzPiB7XG4gIGNvbnN0IFNoYWRvd0VmZmVjdENvbmZpZ3VyYXRvcjogUmVhY3QuRkM8RWZmZWN0Q29uZmlndXJhdG9yUHJvcHM+ID0gKHtcbiAgICBlZmZlY3QsXG4gICAgdXBkYXRlRWZmZWN0Q29uZmlnXG4gIH0pID0+IHtcbiAgICBjb25zdCB7cGFyYW1ldGVycywgaWR9ID0gZWZmZWN0O1xuXG4gICAgY29uc3Qgc2xpZGVyUHJvcHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BOYW1lcyA9IFsnc2hhZG93SW50ZW5zaXR5JywgJ2FtYmllbnRMaWdodEludGVuc2l0eScsICdzdW5MaWdodEludGVuc2l0eSddO1xuICAgICAgY29uc3QgZGVzY3JpcHRpb25zID0gZWZmZWN0LmdldFBhcmFtZXRlckRlc2NyaXB0aW9ucygpO1xuICAgICAgcmV0dXJuIHByb3BOYW1lcy5tYXAocHJvcE5hbWUgPT4ge1xuICAgICAgICBjb25zdCBkZXNjID0gZGVzY3JpcHRpb25zLmZpbmQoZCA9PiBkLm5hbWUgPT09IHByb3BOYW1lKTtcbiAgICAgICAgY29uc3QgbWluID0gZGVzYz8ubWluID8/IDA7XG4gICAgICAgIGNvbnN0IG1heCA9IGRlc2M/Lm1heCA/PyAxO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHZhbHVlMTogcGFyYW1ldGVyc1twcm9wTmFtZV0sXG4gICAgICAgICAgcmFuZ2U6IFttaW4sIG1heF0sXG4gICAgICAgICAgdmFsdWUwOiBtaW4sXG4gICAgICAgICAgb25DaGFuZ2U6ICh2YWx1ZTogbnVtYmVyW10sIGV2ZW50PzogRXZlbnQgfCBudWxsKSA9PiB7XG4gICAgICAgICAgICB1cGRhdGVFZmZlY3RDb25maWcoZXZlbnQsIGlkLCB7cGFyYW1ldGVyczoge1twcm9wTmFtZV06IHZhbHVlWzFdfX0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH0sIFtpZCwgZWZmZWN0LCBwYXJhbWV0ZXJzLCB1cGRhdGVFZmZlY3RDb25maWddKTtcblxuICAgIGNvbnN0IG9uVGltZVBhcmFtZXRlcnNDaGFuZ2VkID0gdXNlQ2FsbGJhY2soXG4gICAgICBwYXJhbWV0ZXJzID0+IHtcbiAgICAgICAgdXBkYXRlRWZmZWN0Q29uZmlnKG51bGwsIGlkLCB7XG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgLi4uKHBhcmFtZXRlcnMudGltZXN0YW1wID8ge3RpbWVzdGFtcDogcGFyYW1ldGVycy50aW1lc3RhbXB9IDogbnVsbCksXG4gICAgICAgICAgICAuLi4ocGFyYW1ldGVycy50aW1lem9uZSA/IHt0aW1lem9uZTogcGFyYW1ldGVycy50aW1lem9uZX0gOiBudWxsKSxcbiAgICAgICAgICAgIC4uLihwYXJhbWV0ZXJzLnRpbWVNb2RlID8ge3RpbWVNb2RlOiBwYXJhbWV0ZXJzLnRpbWVNb2RlfSA6IG51bGwpXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBbaWQsIHVwZGF0ZUVmZmVjdENvbmZpZ11cbiAgICApO1xuXG4gICAgY29uc3QgY29sb3JQaWNrZXJQcm9wcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcE5hbWVzID0gWydhbWJpZW50TGlnaHRDb2xvcicsICdzdW5MaWdodENvbG9yJywgJ3NoYWRvd0NvbG9yJ107XG4gICAgICByZXR1cm4gcHJvcE5hbWVzLm1hcChwcm9wTmFtZSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29sb3JTZXRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHNlbGVjdGVkQ29sb3I6IHBhcmFtZXRlcnNbcHJvcE5hbWVdLFxuICAgICAgICAgICAgICBzZXRDb2xvcjogdiA9PiB1cGRhdGVFZmZlY3RDb25maWcobnVsbCwgaWQsIHtwYXJhbWV0ZXJzOiB7W3Byb3BOYW1lXTogdn19KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH0sIFtpZCwgcGFyYW1ldGVycywgdXBkYXRlRWZmZWN0Q29uZmlnXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZEVmZmVjdENvbmZpZ3VyYXRvciBrZXk9e2VmZmVjdC5pZH0+XG4gICAgICAgIDxQYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICA8U2VjdGlvblRpdGxlPnsnRGF0ZSAmIFRpbWUnfTwvU2VjdGlvblRpdGxlPlxuICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICA8RWZmZWN0VGltZUNvbmZpZ3VyYXRvclxuICAgICAgICAgIHRpbWVzdGFtcD17cGFyYW1ldGVycy50aW1lc3RhbXB9XG4gICAgICAgICAgdGltZXpvbmU9e3BhcmFtZXRlcnMudGltZXpvbmV9XG4gICAgICAgICAgdGltZU1vZGU9e3BhcmFtZXRlcnMudGltZU1vZGV9XG4gICAgICAgICAgb25DaGFuZ2U9e29uVGltZVBhcmFtZXRlcnNDaGFuZ2VkfVxuICAgICAgICAvPlxuXG4gICAgICAgIDxTdHlsZWRWZXJ0aWNhbFNlcGFyYXRvciAvPlxuXG4gICAgICAgIDxTdHlsZWRXcmFwcGVyICRtYXJnaW5Cb3R0b209ezB9PlxuICAgICAgICAgIDxTZWN0aW9uVGl0bGU+eydTaGFkb3cnfTwvU2VjdGlvblRpdGxlPlxuICAgICAgICA8L1N0eWxlZFdyYXBwZXI+XG4gICAgICAgIDxTdHlsZWRXcmFwcGVyICRtYXJnaW5Cb3R0b209ezE2fT5cbiAgICAgICAgICA8Q29tcGFjdENvbG9yUGlja2VyXG4gICAgICAgICAgICBsYWJlbD17J0NvbG9yJ31cbiAgICAgICAgICAgIGNvbG9yPXtjb2xvclBpY2tlclByb3BzWzJdLmNvbG9yU2V0c1swXS5zZWxlY3RlZENvbG9yfVxuICAgICAgICAgICAgb25TZXRDb2xvcj17Y29sb3JQaWNrZXJQcm9wc1syXS5jb2xvclNldHNbMF0uc2V0Q29sb3J9XG4gICAgICAgICAgICBJY29uPXtBcnJvd0Rvd25TbWFsbH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxTdHlsZWRDb25maWdTZWN0aW9uPlxuICAgICAgICAgICAgPFNlY3Rpb25TdWJUaXRsZT5JbnRlbnNpdHk8L1NlY3Rpb25TdWJUaXRsZT5cbiAgICAgICAgICAgIDxTdHlsZVNsaWRlcldyYXBwZXI+XG4gICAgICAgICAgICAgIDxSYW5nZVNsaWRlciB7Li4uQ09NTU9OX1NMSURFUl9QUk9QU30gey4uLnNsaWRlclByb3BzWzBdfSAvPlxuICAgICAgICAgICAgPC9TdHlsZVNsaWRlcldyYXBwZXI+XG4gICAgICAgICAgPC9TdHlsZWRDb25maWdTZWN0aW9uPlxuICAgICAgICA8L1N0eWxlZFdyYXBwZXI+XG5cbiAgICAgICAgPFN0eWxlZFdyYXBwZXIgJG1hcmdpbkJvdHRvbT17MH0+XG4gICAgICAgICAgPFNlY3Rpb25UaXRsZT57J0FtYmllbnQgbGlnaHQnfTwvU2VjdGlvblRpdGxlPlxuICAgICAgICA8L1N0eWxlZFdyYXBwZXI+XG4gICAgICAgIDxTdHlsZWRXcmFwcGVyICRtYXJnaW5Cb3R0b209ezE2fT5cbiAgICAgICAgICA8Q29tcGFjdENvbG9yUGlja2VyXG4gICAgICAgICAgICBsYWJlbD17J0NvbG9yJ31cbiAgICAgICAgICAgIGNvbG9yPXtjb2xvclBpY2tlclByb3BzWzBdLmNvbG9yU2V0c1swXS5zZWxlY3RlZENvbG9yfVxuICAgICAgICAgICAgb25TZXRDb2xvcj17Y29sb3JQaWNrZXJQcm9wc1swXS5jb2xvclNldHNbMF0uc2V0Q29sb3J9XG4gICAgICAgICAgICBJY29uPXtBcnJvd0Rvd25TbWFsbH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxTdHlsZWRDb25maWdTZWN0aW9uPlxuICAgICAgICAgICAgPFNlY3Rpb25TdWJUaXRsZT5JbnRlbnNpdHk8L1NlY3Rpb25TdWJUaXRsZT5cbiAgICAgICAgICAgIDxTdHlsZVNsaWRlcldyYXBwZXI+XG4gICAgICAgICAgICAgIDxSYW5nZVNsaWRlciB7Li4uQ09NTU9OX1NMSURFUl9QUk9QU30gey4uLnNsaWRlclByb3BzWzFdfSAvPlxuICAgICAgICAgICAgPC9TdHlsZVNsaWRlcldyYXBwZXI+XG4gICAgICAgICAgPC9TdHlsZWRDb25maWdTZWN0aW9uPlxuICAgICAgICA8L1N0eWxlZFdyYXBwZXI+XG5cbiAgICAgICAgPFN0eWxlZFdyYXBwZXIgJG1hcmdpbkJvdHRvbT17MH0+XG4gICAgICAgICAgPFNlY3Rpb25UaXRsZT57J1N1biBsaWdodCd9PC9TZWN0aW9uVGl0bGU+XG4gICAgICAgIDwvU3R5bGVkV3JhcHBlcj5cbiAgICAgICAgPFN0eWxlZFdyYXBwZXIgJG1hcmdpbkJvdHRvbT17MH0+XG4gICAgICAgICAgPENvbXBhY3RDb2xvclBpY2tlclxuICAgICAgICAgICAgbGFiZWw9eydDb2xvcid9XG4gICAgICAgICAgICBjb2xvcj17Y29sb3JQaWNrZXJQcm9wc1sxXS5jb2xvclNldHNbMF0uc2VsZWN0ZWRDb2xvcn1cbiAgICAgICAgICAgIG9uU2V0Q29sb3I9e2NvbG9yUGlja2VyUHJvcHNbMV0uY29sb3JTZXRzWzBdLnNldENvbG9yfVxuICAgICAgICAgICAgSWNvbj17QXJyb3dEb3duU21hbGx9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8U3R5bGVkQ29uZmlnU2VjdGlvbj5cbiAgICAgICAgICAgIDxTZWN0aW9uU3ViVGl0bGU+SW50ZW5zaXR5PC9TZWN0aW9uU3ViVGl0bGU+XG4gICAgICAgICAgICA8U3R5bGVTbGlkZXJXcmFwcGVyPlxuICAgICAgICAgICAgICA8UmFuZ2VTbGlkZXIgey4uLkNPTU1PTl9TTElERVJfUFJPUFN9IHsuLi5zbGlkZXJQcm9wc1syXX0gLz5cbiAgICAgICAgICAgIDwvU3R5bGVTbGlkZXJXcmFwcGVyPlxuICAgICAgICAgIDwvU3R5bGVkQ29uZmlnU2VjdGlvbj5cbiAgICAgICAgPC9TdHlsZWRXcmFwcGVyPlxuICAgICAgPC9TdHlsZWRFZmZlY3RDb25maWd1cmF0b3I+XG4gICAgKTtcbiAgfTtcbiAgY29uc3QgZGVmYXVsdFVuaWZvcm1zID0ge307XG5cbiAgY29uc3QgRUxFVkFUSU9OX0VYVFJBX1BBUkFNUyA9IG5ldyBTZXQoWydoZWlnaHRFbmQnLCAnYW5pbWF0ZUhlaWdodCcsICdsaW5lYXJFYXNpbmcnXSk7XG5cbiAgY29uc3QgUG9zdFByb2Nlc3NpbmdFZmZlY3RDb25maWd1cmF0b3I6IFJlYWN0LkZDPEVmZmVjdENvbmZpZ3VyYXRvclByb3BzPiA9ICh7XG4gICAgZWZmZWN0LFxuICAgIHVwZGF0ZUVmZmVjdENvbmZpZ1xuICB9KSA9PiB7XG4gICAgY29uc3QgdW5pZm9ybXMgPSBlZmZlY3QuZGVja0VmZmVjdD8ubW9kdWxlLnByb3BUeXBlcyB8fCBkZWZhdWx0VW5pZm9ybXM7XG4gICAgY29uc3QgcGFyYW1ldGVyRGVzY3JpcHRpb25zID0gZWZmZWN0LmdldFBhcmFtZXRlckRlc2NyaXB0aW9ucygpO1xuICAgIGNvbnN0IHtwYXJhbWV0ZXJzLCBpZH0gPSBlZmZlY3Q7XG5cbiAgICBjb25zdCBoYXNFbGV2YXRpb25TZWN0aW9uID0gcGFyYW1ldGVyRGVzY3JpcHRpb25zLnNvbWUoZCA9PiBkLm5hbWUgPT09ICdhbmltYXRlSGVpZ2h0Jyk7XG5cbiAgICBjb25zdCBmbGF0UGFyYW1ldGVyRGVzY3JpcHRpb25zID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICByZXR1cm4gcGFyYW1ldGVyRGVzY3JpcHRpb25zLnJlZHVjZSgoYWNjLCBkZXNjcmlwdGlvbikgPT4ge1xuICAgICAgICBpZiAoaGFzRWxldmF0aW9uU2VjdGlvbiAmJiBFTEVWQVRJT05fRVhUUkFfUEFSQU1TLmhhcyhkZXNjcmlwdGlvbi5uYW1lKSkgcmV0dXJuIGFjYztcblxuICAgICAgICBpZiAoaGFzRWxldmF0aW9uU2VjdGlvbiAmJiBkZXNjcmlwdGlvbi5uYW1lID09PSAnaGVpZ2h0Jykge1xuICAgICAgICAgIGFjYy5wdXNoKHsuLi5kZXNjcmlwdGlvbiwgdHlwZTogRUxFVkFUSU9OX1NFQ1RJT05fVFlQRSBhcyBhbnl9KTtcbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRlc2NyaXB0aW9uLnR5cGUgPT09ICdjb2xvcicpIHtcbiAgICAgICAgICBhY2MucHVzaChkZXNjcmlwdGlvbik7XG4gICAgICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRpb24udHlwZSA9PT0gJ2FycmF5Jykge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRlc2NyaXB0aW9uLmRlZmF1bHRWYWx1ZSkpIHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uLmRlZmF1bHRWYWx1ZS5mb3JFYWNoKChfLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBhY2MucHVzaCh7XG4gICAgICAgICAgICAgICAgLi4uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICAgICAgbGFiZWw6IGRlc2NyaXB0aW9uLmxhYmVsPy5baW5kZXhdXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFjYy5wdXNoKGRlc2NyaXB0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCBbXSBhcyBFZmZlY3RQYXJhbWV0ZXJEZXNjcmlwdGlvbkZsYXR0ZW5lZFtdKTtcbiAgICB9LCBbcGFyYW1ldGVyRGVzY3JpcHRpb25zLCBoYXNFbGV2YXRpb25TZWN0aW9uXSk7XG5cbiAgICBjb25zdCBjb250cm9scyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgcmV0dXJuIGZsYXRQYXJhbWV0ZXJEZXNjcmlwdGlvbnMubWFwKGRlc2MgPT4ge1xuICAgICAgICBpZiAoKGRlc2MudHlwZSBhcyBzdHJpbmcpID09PSBFTEVWQVRJT05fU0VDVElPTl9UWVBFKSB7XG4gICAgICAgICAgcmV0dXJuIHtpc0VsZXZhdGlvblNlY3Rpb246IHRydWUgYXMgY29uc3R9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRlc2MudHlwZSA9PT0gJ2NvbG9yJykge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpc0NvbG9yOiB0cnVlIGFzIGNvbnN0LFxuICAgICAgICAgICAgbGFiZWw6IGRlc2MubGFiZWwgfHwgZGVzYy5uYW1lLFxuICAgICAgICAgICAgcGFyYW1OYW1lOiBkZXNjLm5hbWUsXG4gICAgICAgICAgICBjb2xvcjogcGFyYW1ldGVyc1tkZXNjLm5hbWVdIHx8IGRlc2MuZGVmYXVsdFZhbHVlIHx8IFsyNTUsIDI1NSwgMjU1XSxcbiAgICAgICAgICAgIG9uU2V0Q29sb3I6ICh2OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0pID0+XG4gICAgICAgICAgICAgIHVwZGF0ZUVmZmVjdENvbmZpZyhudWxsLCBpZCwge3BhcmFtZXRlcnM6IHtbZGVzYy5uYW1lXTogdn19KVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGVzYy50eXBlID09PSAnY2hlY2tib3gnKSB7XG4gICAgICAgICAgY29uc3QgbGFiZWwgPSB0eXBlb2YgZGVzYy5sYWJlbCA9PT0gJ3N0cmluZycgPyBkZXNjLmxhYmVsIDogZGVzYy5uYW1lO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpc0NoZWNrYm94OiB0cnVlIGFzIGNvbnN0LFxuICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICBwYXJhbU5hbWU6IGRlc2MubmFtZSxcbiAgICAgICAgICAgIGNoZWNrZWQ6IEJvb2xlYW4ocGFyYW1ldGVyc1tkZXNjLm5hbWVdKSxcbiAgICAgICAgICAgIHRvb2x0aXA6IGRlc2MudG9vbHRpcCxcbiAgICAgICAgICAgIG9uQ2hhbmdlOiAoKSA9PlxuICAgICAgICAgICAgICB1cGRhdGVFZmZlY3RDb25maWcobnVsbCwgaWQsIHtwYXJhbWV0ZXJzOiB7W2Rlc2MubmFtZV06ICFwYXJhbWV0ZXJzW2Rlc2MubmFtZV19fSlcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFyYW1OYW1lID0gZGVzYy5uYW1lO1xuXG4gICAgICAgIGNvbnN0IHJhd1VuaWZvcm0gPSB1bmlmb3Jtc1tkZXNjLm5hbWVdO1xuICAgICAgICBpZiAocmF3VW5pZm9ybSAmJiByYXdVbmlmb3JtLnByaXZhdGUpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGx1bWEuZ2wgOSB3cmFwcyBhcnJheSBwcm9wVHlwZXMgYXMge3ZhbHVlOiBbLi4uXX1cbiAgICAgICAgY29uc3QgdW5pZm9ybSA9XG4gICAgICAgICAgcmF3VW5pZm9ybSAmJiB0eXBlb2YgcmF3VW5pZm9ybSA9PT0gJ29iamVjdCcgJiYgQXJyYXkuaXNBcnJheShyYXdVbmlmb3JtLnZhbHVlKVxuICAgICAgICAgICAgPyByYXdVbmlmb3JtLnZhbHVlXG4gICAgICAgICAgICA6IHJhd1VuaWZvcm07XG5cbiAgICAgICAgY29uc3QgcHJldlZhbHVlID0gcGFyYW1ldGVyc1twYXJhbU5hbWVdO1xuXG4gICAgICAgIGNvbnN0IGxhYmVsID0gZGVzYy5sYWJlbCA9PT0gZmFsc2UgPyBmYWxzZSA6IGRlc2MubGFiZWwgfHwgZGVzYy5uYW1lO1xuXG4gICAgICAgIC8vIHRoZSB1bmlmb3JtIGlzIFtudW1iZXIsIG51bWJlcl0gYXJyYXlcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodW5pZm9ybSkgJiYgdW5pZm9ybS5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICB2YWx1ZTE6IHByZXZWYWx1ZVtkZXNjLmluZGV4IHx8IDBdIHx8IDAsXG4gICAgICAgICAgICByYW5nZTogWzAsIDFdLFxuICAgICAgICAgICAgdmFsdWUwOiAwLFxuICAgICAgICAgICAgb25DaGFuZ2U6IChuZXdWYWx1ZTogbnVtYmVyW10sIGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIHVwZGF0ZUVmZmVjdENvbmZpZyhldmVudCwgaWQsIHtcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgICAgICBbcGFyYW1OYW1lXTpcbiAgICAgICAgICAgICAgICAgICAgZGVzYy5pbmRleCA9PT0gMCA/IFtuZXdWYWx1ZVsxXSwgcHJldlZhbHVlWzFdXSA6IFtwcmV2VmFsdWVbMF0sIG5ld1ZhbHVlWzFdXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICAvLyB0aGUgdW5pZm9ybSBpcyBhIHBsYWluIG51bWJlciB3aXRob3V0IGFueSBkZXNjcmlwdGlvblxuICAgICAgICBlbHNlIGlmIChpc051bWJlcih1bmlmb3JtKSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsYWJlbCxcbiAgICAgICAgICAgIHZhbHVlMTogcHJldlZhbHVlID8/IDAsXG4gICAgICAgICAgICByYW5nZTogW2Rlc2MubWluID8/IDAsIGRlc2MubWF4ID8/IDUwMF0sXG4gICAgICAgICAgICB2YWx1ZTA6IGRlc2MubWluID8/IDAsXG4gICAgICAgICAgICBvbkNoYW5nZTogKG5ld1ZhbHVlOiBudW1iZXJbXSwgZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgdXBkYXRlRWZmZWN0Q29uZmlnKGV2ZW50LCBpZCwge3BhcmFtZXRlcnM6IHtbcGFyYW1OYW1lXTogbmV3VmFsdWVbMV19fSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICAvLyB0aGUgdW5pZm9ybSBkZXNjcmlwdGlvbiBpcyB7dmFsdWU6IDAsIG1pbjogMCwgbWF4OiAxLCAuLi59XG4gICAgICAgIGVsc2UgaWYgKHVuaWZvcm0gJiYgaXNOdW1iZXIodW5pZm9ybS52YWx1ZSkpIHtcbiAgICAgICAgICBjb25zdCByYW5nZU1pbiA9IGRlc2MubWluID8/IHVuaWZvcm0ubWluID8/IHVuaWZvcm0uc29mdE1pbiA/PyAwO1xuICAgICAgICAgIGNvbnN0IHJhbmdlTWF4ID0gZGVzYy5tYXggPz8gdW5pZm9ybS5tYXggPz8gdW5pZm9ybS5zb2Z0TWF4ID8/IDE7XG4gICAgICAgICAgY29uc3QgcmFuZ2VTcGFuID0gcmFuZ2VNYXggLSByYW5nZU1pbjtcbiAgICAgICAgICBjb25zdCBzdGVwID0gcmFuZ2VTcGFuID4gMTAgPyAxIDogMC4wMDE7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxhYmVsLFxuICAgICAgICAgICAgdmFsdWUxOiBwcmV2VmFsdWUgfHwgMCxcbiAgICAgICAgICAgIHJhbmdlOiBbcmFuZ2VNaW4sIHJhbmdlTWF4XSxcbiAgICAgICAgICAgIHZhbHVlMDogcmFuZ2VNaW4sXG4gICAgICAgICAgICBzdGVwLFxuICAgICAgICAgICAgb25DaGFuZ2U6IChuZXdWYWx1ZTogbnVtYmVyW10sIGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIHVwZGF0ZUVmZmVjdENvbmZpZyhldmVudCwgaWQsIHtwYXJhbWV0ZXJzOiB7W3BhcmFtTmFtZV06IG5ld1ZhbHVlWzFdfX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgLy8gUGFyYW1ldGVyIGRlZmluZWQgaW4gZWZmZWN0IGRlc2NyaXB0aW9uIGJ1dCBub3QgaW4gc2hhZGVyIHByb3BUeXBlc1xuICAgICAgICBlbHNlIGlmIChkZXNjLm1pbiAhPT0gdW5kZWZpbmVkICYmIGRlc2MubWF4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb25zdCByYW5nZVNwYW4gPSBkZXNjLm1heCAtIGRlc2MubWluO1xuICAgICAgICAgIGNvbnN0IHN0ZXAgPSByYW5nZVNwYW4gPiAxMCA/IDEgOiAwLjAwMTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICB2YWx1ZTE6IHByZXZWYWx1ZSA/PyBkZXNjLmRlZmF1bHRWYWx1ZSA/PyAwLFxuICAgICAgICAgICAgcmFuZ2U6IFtkZXNjLm1pbiwgZGVzYy5tYXhdLFxuICAgICAgICAgICAgdmFsdWUwOiBkZXNjLm1pbixcbiAgICAgICAgICAgIHN0ZXAsXG4gICAgICAgICAgICBvbkNoYW5nZTogKG5ld1ZhbHVlOiBudW1iZXJbXSwgZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgdXBkYXRlRWZmZWN0Q29uZmlnKGV2ZW50LCBpZCwge3BhcmFtZXRlcnM6IHtbcGFyYW1OYW1lXTogbmV3VmFsdWVbMV19fSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlnbm9yZSBldmVyeXRoaW5nIGVsc2UgZm9yIG5vd1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0pO1xuICAgIH0sIFtmbGF0UGFyYW1ldGVyRGVzY3JpcHRpb25zLCBpZCwgcGFyYW1ldGVycywgdXBkYXRlRWZmZWN0Q29uZmlnLCB1bmlmb3Jtc10pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRFZmZlY3RDb25maWd1cmF0b3Iga2V5PXtlZmZlY3QuaWR9PlxuICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBlbGVtZW50czogUmVhY3QuUmVhY3ROb2RlW10gPSBbXTtcbiAgICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgICAgd2hpbGUgKGkgPCBmbGF0UGFyYW1ldGVyRGVzY3JpcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IGNvbnRyb2xzW2ldO1xuICAgICAgICAgICAgaWYgKCFjb250cm9sKSB7XG4gICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICgnaXNDb2xvcicgaW4gY29udHJvbCkge1xuICAgICAgICAgICAgICBjb25zdCBuZXh0Q29udHJvbCA9IGkgKyAxIDwgY29udHJvbHMubGVuZ3RoID8gY29udHJvbHNbaSArIDFdIDogbnVsbDtcbiAgICAgICAgICAgICAgaWYgKG5leHRDb250cm9sICYmICdpc0NoZWNrYm94JyBpbiBuZXh0Q29udHJvbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNiVG9vbHRpcElkID0gbmV4dENvbnRyb2wudG9vbHRpcFxuICAgICAgICAgICAgICAgICAgPyBgZWZmZWN0LWNiLWhpbnQtJHtlZmZlY3QuaWR9LSR7aX1gXG4gICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKFxuICAgICAgICAgICAgICAgICAgPFN0eWxlZENvbG9yQ2hlY2tib3hSb3cga2V5PXtgJHtlZmZlY3QuaWR9LSR7aX1gfT5cbiAgICAgICAgICAgICAgICAgICAgPENvbXBhY3RDb2xvclBpY2tlclxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXt0eXBlb2YgY29udHJvbC5sYWJlbCA9PT0gJ3N0cmluZycgPyBjb250cm9sLmxhYmVsIDogJ0NvbG9yJ31cbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17Y29udHJvbC5jb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICBvblNldENvbG9yPXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wub25TZXRDb2xvciA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbm9vcCAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgSWNvbj17QXJyb3dEb3duU21hbGx9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFdyYXBwZXJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiAobmV4dENvbnRyb2wgYXMge29uQ2hhbmdlOiAoKSA9PiB2b2lkfSkub25DaGFuZ2UoKX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e25leHRDb250cm9sLmNoZWNrZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gKG5leHRDb250cm9sIGFzIHtvbkNoYW5nZTogKCkgPT4gdm9pZH0pLm9uQ2hhbmdlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtlID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hMYWJlbD57bmV4dENvbnRyb2wubGFiZWx9PC9TdHlsZWRDaGVja2JveExhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIHtuZXh0Q29udHJvbC50b29sdGlwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZEhpbnRJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10aXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZvcj17Y2JUb29sdGlwSWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZEhpbnRJY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkSGludFRvb2x0aXAgaWQ9e2NiVG9vbHRpcElkfSBlZmZlY3Q9XCJzb2xpZFwiIGRlbGF5U2hvdz17MjAwfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bmV4dENvbnRyb2wudG9vbHRpcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRIaW50VG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94V3JhcHBlcj5cbiAgICAgICAgICAgICAgICAgIDwvU3R5bGVkQ29sb3JDaGVja2JveFJvdz5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGkgKz0gMjtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGVsZW1lbnRzLnB1c2goXG4gICAgICAgICAgICAgICAgPFJlZ3VsYXJPdXRlcldyYXBwZXIga2V5PXtgJHtlZmZlY3QuaWR9LSR7aX1gfT5cbiAgICAgICAgICAgICAgICAgIDxDb21wYWN0Q29sb3JQaWNrZXJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9e3R5cGVvZiBjb250cm9sLmxhYmVsID09PSAnc3RyaW5nJyA/IGNvbnRyb2wubGFiZWwgOiAnQ29sb3InfVxuICAgICAgICAgICAgICAgICAgICBjb2xvcj17Y29udHJvbC5jb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgb25TZXRDb2xvcj17XG4gICAgICAgICAgICAgICAgICAgICAgY29udHJvbC5vblNldENvbG9yID8/XG4gICAgICAgICAgICAgICAgICAgICAgKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5vb3AgKi9cbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEljb249e0Fycm93RG93blNtYWxsfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1JlZ3VsYXJPdXRlcldyYXBwZXI+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICgnaXNDaGVja2JveCcgaW4gY29udHJvbCkge1xuICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKFxuICAgICAgICAgICAgICAgIDxSZWd1bGFyT3V0ZXJXcmFwcGVyIGtleT17YCR7ZWZmZWN0LmlkfS0ke2l9YH0+XG4gICAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hXcmFwcGVyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IChjb250cm9sIGFzIHtvbkNoYW5nZTogKCkgPT4gdm9pZH0pLm9uQ2hhbmdlKCl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17Y29udHJvbC5jaGVja2VkfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiAoY29udHJvbCBhcyB7b25DaGFuZ2U6ICgpID0+IHZvaWR9KS5vbkNoYW5nZSgpfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2UgPT4gZS5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94TGFiZWw+e2NvbnRyb2wubGFiZWx9PC9TdHlsZWRDaGVja2JveExhYmVsPlxuICAgICAgICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveFdyYXBwZXI+XG4gICAgICAgICAgICAgICAgPC9SZWd1bGFyT3V0ZXJXcmFwcGVyPlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoJ2lzRWxldmF0aW9uU2VjdGlvbicgaW4gY29udHJvbCkge1xuICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKFxuICAgICAgICAgICAgICAgIDxTdXJmYWNlRm9nRWxldmF0aW9uU2VjdGlvblxuICAgICAgICAgICAgICAgICAga2V5PXtgJHtlZmZlY3QuaWR9LWVsZXZhdGlvbmB9XG4gICAgICAgICAgICAgICAgICBlZmZlY3Q9e2VmZmVjdH1cbiAgICAgICAgICAgICAgICAgIHVwZGF0ZUVmZmVjdENvbmZpZz17dXBkYXRlRWZmZWN0Q29uZmlnfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGVsZW1lbnRzLnB1c2goXG4gICAgICAgICAgICAgIDxSZWd1bGFyT3V0ZXJXcmFwcGVyIGtleT17YCR7ZWZmZWN0LmlkfS0ke2l9YH0+XG4gICAgICAgICAgICAgICAge2NvbnRyb2wubGFiZWwgPyAoXG4gICAgICAgICAgICAgICAgICA8UmVndWxhclNlY3Rpb25UaXRsZVdyYXBwZXI+e2NvbnRyb2wubGFiZWx9PC9SZWd1bGFyU2VjdGlvblRpdGxlV3JhcHBlcj5cbiAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8UmVndWxhclNsaWRlcldyYXBwZXI+XG4gICAgICAgICAgICAgICAgICA8UmFuZ2VTbGlkZXIga2V5PXtpfSB7Li4uQ09NTU9OX1NMSURFUl9QUk9QU30gey4uLmNvbnRyb2x9IC8+XG4gICAgICAgICAgICAgICAgPC9SZWd1bGFyU2xpZGVyV3JhcHBlcj5cbiAgICAgICAgICAgICAgPC9SZWd1bGFyT3V0ZXJXcmFwcGVyPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZWxlbWVudHM7XG4gICAgICAgIH0pKCl9XG4gICAgICA8L1N0eWxlZEVmZmVjdENvbmZpZ3VyYXRvcj5cbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IEVmZmVjdENvbmZpZ3VyYXRvciA9ICh7XG4gICAgZWZmZWN0LFxuICAgIHVwZGF0ZUVmZmVjdENvbmZpZ1xuICB9OiBFZmZlY3RDb25maWd1cmF0b3JQcm9wcyAmIHtpbnRsOiBJbnRsU2hhcGV9KSA9PiB7XG4gICAgcmV0dXJuIGVmZmVjdC50eXBlID09PSBMSUdIVF9BTkRfU0hBRE9XX0VGRkVDVC50eXBlID8gKFxuICAgICAgPFNoYWRvd0VmZmVjdENvbmZpZ3VyYXRvciBlZmZlY3Q9e2VmZmVjdH0gdXBkYXRlRWZmZWN0Q29uZmlnPXt1cGRhdGVFZmZlY3RDb25maWd9IC8+XG4gICAgKSA6IChcbiAgICAgIDxQb3N0UHJvY2Vzc2luZ0VmZmVjdENvbmZpZ3VyYXRvciBlZmZlY3Q9e2VmZmVjdH0gdXBkYXRlRWZmZWN0Q29uZmlnPXt1cGRhdGVFZmZlY3RDb25maWd9IC8+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gaW5qZWN0SW50bChFZmZlY3RDb25maWd1cmF0b3IpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FB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QUt4RyxNQUFNLENBQUNHLEVBQUUsZUFBYTtjQUM5QkgsTUFBTSxFQUFFQSxNQUFPO2NBQ2ZDLGtCQUFrQixFQUFFQTtZQUFtQixDQUN4QyxDQUNILENBQUM7WUFDRHpFLENBQUMsRUFBRTtZQUFDO1VBRU47VUFFQXlLLFFBQVEsQ0FBQ2pLLElBQUksZUFDWDFELE1BQUEsWUFBQTZKLGFBQUEsQ0FBQ2pFLG1CQUFtQjtZQUFDa0UsR0FBRyxLQUFBb0UsTUFBQSxDQUFLeEcsTUFBTSxDQUFDRyxFQUFFLE9BQUFxRyxNQUFBLENBQUloTCxDQUFDO1VBQUcsR0FDM0MySyxPQUFPLENBQUN6SCxLQUFLLGdCQUNacEcsTUFBQSxZQUFBNkosYUFBQSxDQUFDaEUsMEJBQTBCLFFBQUVnSSxPQUFPLENBQUN6SCxLQUFrQyxDQUFDLEdBQ3RFLElBQUksZUFDUnBHLE1BQUEsWUFBQTZKLGFBQUEsQ0FBQy9ELG9CQUFvQixxQkFDbkI5RixNQUFBLFlBQUE2SixhQUFBLENBQUN4QyxXQUFXLE1BQUE4QyxTQUFBO1lBQUNMLEdBQUcsRUFBRTVHO1VBQUUsR0FBSzBELG1CQUFtQixFQUFNaUgsT0FBTyxDQUFHLENBQ3hDLENBQ0gsQ0FDdkIsQ0FBQztVQUNEM0ssQ0FBQyxFQUFFO1FBQ0wsQ0FBQztRQUFBcUwsSUFBQTtNQXZIRCxPQUFPckwsQ0FBQyxHQUFHK0gseUJBQXlCLENBQUNuSCxNQUFNO1FBQUF5SyxJQUFBLEdBQUFYLEtBQUE7UUFBQSxJQUFBVyxJQUFBLFFBSXZDO01BQVM7TUFxSGIsT0FBT1osUUFBUTtJQUNqQixDQUFDLENBQUUsQ0FDcUIsQ0FBQztFQUUvQixDQUFDO0VBRUQsSUFBTWEsa0JBQWtCLEdBQUcsU0FBckJBLGtCQUFrQkEsQ0FBQUMsS0FBQSxFQUcyQjtJQUFBLElBRmpEL0csTUFBTSxHQUFBK0csS0FBQSxDQUFOL0csTUFBTTtNQUNOQyxrQkFBa0IsR0FBQThHLEtBQUEsQ0FBbEI5RyxrQkFBa0I7SUFFbEIsT0FBT0QsTUFBTSxDQUFDMkQsSUFBSSxLQUFLcUQsa0NBQXVCLENBQUNyRCxJQUFJLGdCQUNqRHJMLE1BQUEsWUFBQTZKLGFBQUEsQ0FBQ3JDLHdCQUF3QjtNQUFDRSxNQUFNLEVBQUVBLE1BQU87TUFBQ0Msa0JBQWtCLEVBQUVBO0lBQW1CLENBQUUsQ0FBQyxnQkFFcEYzSCxNQUFBLFlBQUE2SixhQUFBLENBQUNVLGdDQUFnQztNQUFDN0MsTUFBTSxFQUFFQSxNQUFPO01BQUNDLGtCQUFrQixFQUFFQTtJQUFtQixDQUFFLENBQzVGO0VBQ0gsQ0FBQztFQUVELE9BQU8sSUFBQWdILHFCQUFVLEVBQUNILGtCQUFrQixDQUFDO0FBQ3ZDIiwiaWdub3JlTGlzdCI6W119
|