@kepler.gl/components 3.1.3 → 3.1.5
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/common/animation-control/playback-controls.js +10 -6
- package/dist/common/checkbox.js +4 -4
- package/dist/common/data-table/grid.js +3 -3
- package/dist/common/data-table/index.js +6 -6
- package/dist/common/file-uploader/file-upload.js +10 -12
- package/dist/common/icons/arrow-down.d.ts +1 -0
- package/dist/common/icons/arrow-down.js +15 -5
- package/dist/common/icons/{map.d.ts → base-map.d.ts} +3 -2
- package/dist/common/icons/base-map.js +57 -0
- package/dist/common/icons/bug.d.ts +1 -0
- package/dist/common/icons/bug.js +33 -5
- package/dist/common/icons/{rocket.d.ts → cloud.d.ts} +2 -1
- package/dist/common/icons/{rocket.js → cloud.js} +21 -11
- package/dist/common/icons/copy.d.ts +5 -0
- package/dist/common/icons/copy.js +15 -9
- package/dist/common/icons/cube-3d.d.ts +1 -0
- package/dist/common/icons/cube-3d.js +17 -7
- package/dist/common/icons/data-table.d.ts +1 -0
- package/dist/common/icons/data-table.js +39 -4
- package/dist/common/icons/db.d.ts +1 -0
- package/dist/common/icons/db.js +21 -4
- package/dist/common/icons/delete.d.ts +1 -0
- package/dist/common/icons/delete.js +17 -7
- package/dist/common/icons/docs2.d.ts +10 -0
- package/dist/common/icons/docs2.js +51 -0
- package/dist/common/icons/eye-seen.d.ts +1 -0
- package/dist/common/icons/eye-seen.js +10 -3
- package/dist/common/icons/eye-unseen.d.ts +1 -0
- package/dist/common/icons/eye-unseen.js +8 -3
- package/dist/common/icons/filter-funnel.d.ts +1 -0
- package/dist/common/icons/filter-funnel.js +14 -4
- package/dist/common/icons/index.d.ts +8 -3
- package/dist/common/icons/index.js +49 -14
- package/dist/common/icons/layers.d.ts +1 -0
- package/dist/common/icons/layers.js +19 -5
- package/dist/common/icons/legend.d.ts +1 -0
- package/dist/common/icons/legend.js +31 -3
- package/dist/common/icons/map-pin.d.ts +10 -0
- package/dist/common/icons/map-pin.js +57 -0
- package/dist/common/icons/messages.d.ts +1 -0
- package/dist/common/icons/messages.js +17 -3
- package/dist/common/icons/pause.d.ts +1 -0
- package/dist/common/icons/pause.js +23 -3
- package/dist/common/icons/picture.d.ts +1 -0
- package/dist/common/icons/picture.js +24 -6
- package/dist/common/icons/pin.d.ts +2 -1
- package/dist/common/icons/pin.js +18 -10
- package/dist/common/icons/play.d.ts +1 -0
- package/dist/common/icons/play.js +13 -3
- package/dist/common/icons/pointer-click.d.ts +10 -0
- package/dist/common/icons/pointer-click.js +59 -0
- package/dist/common/icons/reset.d.ts +1 -0
- package/dist/common/icons/reset.js +19 -3
- package/dist/common/icons/save.d.ts +1 -0
- package/dist/common/icons/save.js +20 -5
- package/dist/common/icons/save2.d.ts +1 -0
- package/dist/common/icons/save2.js +15 -7
- package/dist/common/icons/settings.d.ts +1 -0
- package/dist/common/icons/settings.js +25 -7
- package/dist/common/icons/share.d.ts +1 -0
- package/dist/common/icons/share.js +33 -3
- package/dist/common/icons/speed.d.ts +10 -0
- package/dist/common/icons/speed.js +53 -0
- package/dist/common/icons/trash.js +18 -7
- package/dist/common/icons/zoom-in.d.ts +10 -0
- package/dist/common/icons/zoom-in.js +48 -0
- package/dist/common/item-selector/chickleted-input.js +2 -1
- package/dist/common/item-selector/dropdown-select.js +2 -2
- package/dist/common/item-selector/item-selector.js +3 -3
- package/dist/common/link-renderer.d.ts +3 -0
- package/dist/common/link-renderer.js +20 -0
- package/dist/common/modal.js +2 -2
- package/dist/common/portaled.js +6 -6
- package/dist/common/styled-components.js +4 -2
- package/dist/common/time-range-slider.js +3 -3
- package/dist/common/timeline-slider.js +3 -3
- package/dist/dnd-context.js +1 -4
- package/dist/editor/editor.js +4 -4
- package/dist/filters/filter-panels/polygon-filter-panel.js +4 -4
- package/dist/geocoder/geocoder.js +2 -2
- package/dist/hooks/use-fetch-raster-tile-metadata.d.ts +21 -0
- package/dist/hooks/use-fetch-raster-tile-metadata.js +120 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.js +38 -1
- package/dist/kepler-gl.d.ts +1 -0
- package/dist/kepler-gl.js +2 -2
- package/dist/loading-indicator.js +4 -2
- package/dist/map/layer-selector-panel.js +2 -2
- package/dist/map/map-draw-panel.js +2 -2
- package/dist/map/map-legend-panel.js +6 -2
- package/dist/map/toggle-3d-button.js +7 -2
- package/dist/map-container.js +6 -6
- package/dist/map-view-state-context.js +4 -4
- package/dist/modal-container.js +3 -3
- package/dist/modals/export-data-modal.js +5 -5
- package/dist/modals/image-modal-container.js +4 -4
- package/dist/modals/load-data-modal.js +3 -3
- package/dist/modals/tilesets-modals/common.d.ts +3 -2
- package/dist/modals/tilesets-modals/common.js +1 -1
- package/dist/modals/tilesets-modals/load-tileset.js +45 -26
- package/dist/modals/tilesets-modals/tileset-icon.js +12 -5
- package/dist/modals/tilesets-modals/tileset-raster-form.d.ts +13 -0
- package/dist/modals/tilesets-modals/tileset-raster-form.js +174 -0
- package/dist/modals/tilesets-modals/tileset-vector-form.js +18 -9
- package/dist/notification-panel/notification-item.js +10 -12
- package/dist/plot-container.js +4 -4
- package/dist/side-panel/common/dataset-info.js +2 -2
- package/dist/side-panel/common/dataset-tag.js +2 -2
- package/dist/side-panel/common/dataset-title.js +2 -2
- package/dist/side-panel/filter-panel/filter-panel.js +3 -3
- package/dist/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +2 -1
- package/dist/side-panel/layer-manager.js +14 -3
- package/dist/side-panel/layer-panel/color-breaks-panel.d.ts +1 -1
- package/dist/side-panel/layer-panel/custom-palette.js +3 -3
- package/dist/side-panel/layer-panel/dataset-layer-section.js +13 -2
- package/dist/side-panel/layer-panel/layer-configurator.d.ts +3 -2
- package/dist/side-panel/layer-panel/layer-configurator.js +9 -3
- package/dist/side-panel/layer-panel/layer-panel-header.js +31 -7
- package/dist/side-panel/layer-panel/layer-type-list-item.js +4 -2
- package/dist/side-panel/layer-panel/raster-tile-colormap-list-item.d.ts +15 -0
- package/dist/side-panel/layer-panel/raster-tile-colormap-list-item.js +61 -0
- package/dist/side-panel/layer-panel/raster-tile-layer-configurator.d.ts +17 -0
- package/dist/side-panel/layer-panel/raster-tile-layer-configurator.js +358 -0
- package/dist/side-panel/layer-panel/vector-tile-layer-configurator.d.ts +1 -1
- package/dist/side-panel/panel-header.js +3 -3
- package/dist/side-panel.js +22 -6
- package/package.json +18 -32
- package/dist/common/icons/map.js +0 -48
package/dist/map-container.js
CHANGED
|
@@ -22,7 +22,7 @@ var _reactMapGl = require("react-map-gl");
|
|
|
22
22
|
var _react2 = _interopRequireDefault(require("@deck.gl/react"));
|
|
23
23
|
var _reselect = require("reselect");
|
|
24
24
|
var _core = require("@dnd-kit/core");
|
|
25
|
-
var
|
|
25
|
+
var _debounce = _interopRequireDefault(require("lodash/debounce"));
|
|
26
26
|
var _mapPopover = _interopRequireDefault(require("./map/map-popover"));
|
|
27
27
|
var _mapControl = _interopRequireDefault(require("./map/map-control"));
|
|
28
28
|
var _styledComponents2 = require("./common/styled-components");
|
|
@@ -399,7 +399,7 @@ function MapContainerFactory(MapPopover, MapControl, Editor) {
|
|
|
399
399
|
}));
|
|
400
400
|
}
|
|
401
401
|
});
|
|
402
|
-
(0, _defineProperty2["default"])(_this, "_onViewportChangePropagateDebounced", (0,
|
|
402
|
+
(0, _defineProperty2["default"])(_this, "_onViewportChangePropagateDebounced", (0, _debounce["default"])(function () {
|
|
403
403
|
var _this$context;
|
|
404
404
|
var viewState = (_this$context = _this.context) === null || _this$context === void 0 ? void 0 : _this$context.getInternalViewState(_this.props.index);
|
|
405
405
|
(0, _utils.onViewPortChange)(viewState, _this.props.mapStateActions.updateMap, _this.props.onViewStateChange, _this.props.primary, _this.props.index);
|
|
@@ -415,10 +415,10 @@ function MapContainerFactory(MapPopover, MapControl, Editor) {
|
|
|
415
415
|
setInternalViewState(viewState, _this.props.index);
|
|
416
416
|
_this._onViewportChangePropagateDebounced();
|
|
417
417
|
});
|
|
418
|
-
(0, _defineProperty2["default"])(_this, "_onLayerHoverDebounced", (0,
|
|
418
|
+
(0, _defineProperty2["default"])(_this, "_onLayerHoverDebounced", (0, _debounce["default"])(function (data, index) {
|
|
419
419
|
_this.props.visStateActions.onLayerHover(data, index);
|
|
420
420
|
}, DEBOUNCE_MOUSE_MOVE_PROPAGATE));
|
|
421
|
-
(0, _defineProperty2["default"])(_this, "_onMouseMoveDebounced", (0,
|
|
421
|
+
(0, _defineProperty2["default"])(_this, "_onMouseMoveDebounced", (0, _debounce["default"])(function (event, viewport) {
|
|
422
422
|
_this.props.visStateActions.onMouseMove((0, _utils.normalizeEvent)(event, viewport));
|
|
423
423
|
}, DEBOUNCE_MOUSE_MOVE_PROPAGATE));
|
|
424
424
|
(0, _defineProperty2["default"])(_this, "_toggleMapControl", function (panelId) {
|
|
@@ -895,7 +895,7 @@ function MapContainerFactory(MapPopover, MapControl, Editor) {
|
|
|
895
895
|
primaryMap: false,
|
|
896
896
|
isInteractive: false
|
|
897
897
|
}) : null, this._renderMapPopover(), primary !== isSplit ? /*#__PURE__*/_react["default"].createElement(_loadingIndicator["default"], {
|
|
898
|
-
isVisible:
|
|
898
|
+
isVisible: isLoadingIndicatorVisible || (0, _layers.isRasterTilesBeingLoaded)(),
|
|
899
899
|
activeSidePanel: Boolean(activeSidePanel),
|
|
900
900
|
sidePanelWidth: sidePanelWidth
|
|
901
901
|
}, "Loading...") : null, this.props.primary ? /*#__PURE__*/_react["default"].createElement(Attribution, {
|
|
@@ -942,4 +942,4 @@ function MapContainerFactory(MapPopover, MapControl, Editor) {
|
|
|
942
942
|
});
|
|
943
943
|
return (0, _styledComponents.withTheme)(MapContainer);
|
|
944
944
|
}
|
|
945
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9yZWFjdE1hcEdsIiwiX3JlYWN0MiIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVzZWxlY3QiLCJfY29yZSIsIl9sb2Rhc2giLCJfbWFwUG9wb3ZlciIsIl9tYXBDb250cm9sIiwiX3N0eWxlZENvbXBvbmVudHMyIiwiX2VkaXRvciIsIl9sYXllcnMiLCJfdXRpbHMiLCJfc3R5bGVzIiwiX2NvbnN0YW50cyIsIl9kbmRMYXllckl0ZW1zIiwiX21hcFZpZXdTdGF0ZUNvbnRleHQiLCJfZXJyb3JCb3VuZGFyeSIsIl9sb2NhbGl6YXRpb24iLCJfY29yZTIiLCJfcmVkdWNlcnMiLCJfbG9hZGluZ0luZGljYXRvciIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsIkRFQk9VTkNFX1ZJRVdQT1JUX1BST1BBR0FURSIsIkRFQk9VTkNFX01PVVNFX01PVkVfUFJPUEFHQVRFIiwiTUFQX1NUWUxFIiwiY29udGFpbmVyIiwiZGlzcGxheSIsInBvc2l0aW9uIiwid2lkdGgiLCJoZWlnaHQiLCJ0b3AiLCJwb2ludGVyRXZlbnRzIiwiTE9DQUxFX0NPREVTX0FSUkFZIiwiTE9DQUxFX0NPREVTIiwiU3R5bGVkTWFwIiwic3R5bGVkIiwiU3R5bGVkTWFwQ29udGFpbmVyIiwiX3JlZiIsIl9yZWYkJG1peEJsZW5kTW9kZSIsIiRtaXhCbGVuZE1vZGUiLCIkbWFwTGliQ3NzQ2xhc3MiLCJjb25jYXQiLCJNQVBCT1hHTF9TVFlMRV9VUERBVEUiLCJNQVBCT1hHTF9SRU5ERVIiLCJub3AiLCJNYXBMaWJMb2dvIiwiX3JlZjIiLCJiYXNlTWFwTGlicmFyeUNvbmZpZyIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJzdHlsZSIsIm1hcmdpbkxlZnQiLCJtYXBMaWJDc3NDbGFzcyIsInRhcmdldCIsInJlbCIsImhyZWYiLCJtYXBMaWJVcmwiLCJtYXBMaWJOYW1lIiwiU3R5bGVkRHJvcHBhYmxlIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsImlzT3ZlciIsInRoZW1lIiwiZG5kT3ZlckJhY2tncm91bmRDb2xvciIsImlzU3BsaXRTZWxlY3RvciIsImV4cG9ydHMiLCJ2aXNTdGF0ZSIsInNwbGl0TWFwcyIsIkRyb3BwYWJsZSIsIl9yZWYzIiwiY29udGFpbmVySWQiLCJfdXNlRHJvcHBhYmxlIiwidXNlRHJvcHBhYmxlIiwiaWQiLCJkYXRhIiwidHlwZSIsIkRST1BQQUJMRV9NQVBfQ09OVEFJTkVSX1RZUEUiLCJpbmRleCIsImRpc2FibGVkIiwic2V0Tm9kZVJlZiIsInJlZiIsIlN0eWxlZERhdGFzZXRBdHRyaWJ1dGlvbnNDb250YWluZXIiLCJpc1BhbG0iLCJsYWJlbENvbG9yIiwiRGF0YXNldEF0dHJpYnV0aW9ucyIsIl9yZWY0IiwiZGF0YXNldEF0dHJpYnV0aW9ucyIsIkZyYWdtZW50IiwibWFwIiwiZHMiLCJpZHgiLCJfZXh0ZW5kczIiLCJ1cmwiLCJrZXkiLCJ0aXRsZSIsIkF0dHJpYnV0aW9uIiwiX3JlZjUiLCJfcmVmNSRzaG93QmFzZU1hcExpYkwiLCJzaG93QmFzZU1hcExpYkxvZ28iLCJfcmVmNSRzaG93T3NtQmFzZW1hcEEiLCJzaG93T3NtQmFzZW1hcEF0dHJpYnV0aW9uIiwiaGFzTW9iaWxlV2lkdGgiLCJicmVha1BvaW50VmFsdWVzIiwibWVtb2l6ZWRDb21wb25lbnRzIiwidXNlTWVtbyIsIlN0eWxlZEF0dHJpYnV0aW9uIiwibWFwTGliQXR0cmlidXRpb25Dc3NDbGFzcyIsIkVuZEhvcml6b250YWxGbGV4Ym94IiwiTWFwQ29udGFpbmVyRmFjdG9yeSIsImRlcHMiLCJNYXBQb3BvdmVyRmFjdG9yeSIsIk1hcENvbnRyb2xGYWN0b3J5IiwiRWRpdG9yRmFjdG9yeSIsIk1hcFBvcG92ZXIiLCJNYXBDb250cm9sIiwiRWRpdG9yIiwiTWFwQ29udGFpbmVyIiwiX0NvbXBvbmVudCIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsInNob3dCYXNlTWFwQXR0cmlidXRpb24iLCJjcmVhdGVSZWYiLCJkaW1lbnNpb25zIiwiX3RoaXMkcHJvcHMiLCJwcmltYXJ5IiwibWFwU3RhdGVBY3Rpb25zIiwidXBkYXRlTWFwIiwibGF5ZXJzIiwibGF5ZXJEYXRhIiwiY3JlYXRlU2VsZWN0b3IiLCJzcGxpdE1hcFNlbGVjdG9yIiwic3BsaXRNYXBJbmRleFNlbGVjdG9yIiwiZ2V0TWFwTGF5ZXJzRnJvbVNwbGl0TWFwcyIsImxheWVyT3JkZXIiLCJsYXllcnNTZWxlY3RvciIsImxheWVyRGF0YVNlbGVjdG9yIiwibWFwTGF5ZXJzU2VsZWN0b3IiLCJwcmVwYXJlTGF5ZXJzVG9SZW5kZXIiLCJwcmVwYXJlTGF5ZXJzRm9yRGVjayIsImZpbHRlcnMiLCJmaWx0ZXJzU2VsZWN0b3IiLCJmIiwiRklMVEVSX1RZUEVTIiwicG9seWdvbiIsImVuYWJsZWQiLCJlZGl0b3IiLCJmZWF0dXJlcyIsInNlbGVjdGVkRmVhdHVyZSIsInBvbHlnb25GaWx0ZXJzU2VsZWN0b3IiLCJmZWF0dXJlc1NlbGVjdG9yIiwicG9seWdvbkZpbHRlcnMiLCJ2YWx1ZSIsImZlYXR1cmVDb2xsZWN0aW9uU2VsZWN0b3IiLCJzZWxlY3RlZEZlYXR1cmVTZWxlY3RvciIsImNvbGxlY3Rpb24iLCJmaW5kSW5kZXgiLCJfcHJvcHMkZ2VuZXJhdGVNYXBib3giLCJnZW5lcmF0ZU1hcGJveExheWVycyIsImxheWVyT3JkZXJTZWxlY3RvciIsImxheWVyc1RvUmVuZGVyU2VsZWN0b3IiLCJnZW5lcmF0ZU1hcGJveExheWVyTWV0aG9kU2VsZWN0b3IiLCJsYXllciIsImxheWVyc1RvUmVuZGVyIiwiZ2VuZXJhdGVNYXBib3hMYXllck1ldGhvZCIsIm1hcFN0eWxlIiwic3R5bGVUeXBlIiwiYmFja2dyb3VuZENvbG9yIiwibWFwU3R5bGVUeXBlU2VsZWN0b3IiLCJtYXBTdHlsZUJhY2tncm91bmRDb2xvclNlbGVjdG9yIiwiTk9fTUFQX0lEIiwicmdiVG9IZXgiLCJ2aXNTdGF0ZUFjdGlvbnMiLCJvbkxheWVyQ2xpY2siLCJfaWR4IiwiaW5mbyIsIm9uTGF5ZXJIb3ZlciIsImxheWVyQ29uZmlnQ2hhbmdlIiwiY29sb3JEb21haW4iLCJkb21haW4iLCJhZ2dyZWdhdGVkQmlucyIsImV2ZW50IiwibGF5ZXJGaWx0ZXJlZEl0ZW1zQ2hhbmdlIiwibGF5ZXJJZCIsIl90aGlzJHByb3BzMiIsIl90aGlzJHByb3BzMiRpbmRleCIsIm1hcEluZGV4IiwidG9nZ2xlTGF5ZXJGb3JNYXAiLCJ1cGRhdGUiLCJwcmV2aW91c0xheWVycyIsIl91cGRhdGVNYXBib3hMYXllcnMiLCJzZXRTdGF0ZSIsImlzU3R5bGVVc2luZ01hcGJveFRpbGVzIiwiaXNTdHlsZVVzaW5nT3BlblN0cmVldE1hcFRpbGVzIiwib25NYXBTdHlsZUxvYWRlZCIsIl9tYXAiLCJtYXBSZWYiLCJnZXRNYXAiLCJfdGhpcyRfbWFwIiwiX3RoaXMkX21hcDIiLCJvZmYiLCJvbiIsIl9vbk1hcGJveFN0eWxlVXBkYXRlIiwib25NYXBSZW5kZXIiLCJnZXRNYXBib3hSZWYiLCJfcmVmNiIsImdsIiwic2V0TGF5ZXJCbGVuZGluZyIsImxheWVyQmxlbmRpbmciLCJlcnJvciIsImVycm9yTWVzc2FnZSIsIm1lc3NhZ2UiLCJsYXllck1lc3NhZ2UiLCJlcnJvck1lc3NhZ2VGdWxsIiwibGFzdFNob3duIiwiX2RlY2tHTEVycm9yc0VsYXBzZWQiLCJEYXRlIiwibm93IiwiVEhST1RUTEVfTk9USUZJQ0FUSU9OX1RJTUUiLCJleHRyYUxheWVyTWVzc2FnZSIsIl90b3BNb3N0TGF5ZXIkcHJvcHMiLCJ0b3BNb3N0TGF5ZXIiLCJwYXJlbnQiLCJsYXllclNldElzVmFsaWQiLCJ1aVN0YXRlQWN0aW9ucyIsImFkZE5vdGlmaWNhdGlvbiIsImVycm9yTm90aWZpY2F0aW9uIiwiZGVib3VuY2UiLCJfdGhpcyRjb250ZXh0Iiwidmlld1N0YXRlIiwiY29udGV4dCIsImdldEludGVybmFsVmlld1N0YXRlIiwib25WaWV3UG9ydENoYW5nZSIsIm9uVmlld1N0YXRlQ2hhbmdlIiwidmlld3BvcnQiLCJpc0V4cG9ydCIsInNldEludGVybmFsVmlld1N0YXRlIiwiX29uVmlld3BvcnRDaGFuZ2VQcm9wYWdhdGVEZWJvdW5jZWQiLCJvbk1vdXNlTW92ZSIsIm5vcm1hbGl6ZUV2ZW50IiwicGFuZWxJZCIsIl90aGlzJHByb3BzMyIsInRvZ2dsZU1hcENvbnRyb2wiLCJOdW1iZXIiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsImNvbXBvbmVudERpZE1vdW50IiwiY3VycmVudCIsIm9ic2VydmVEaW1lbnNpb25zIiwiX2hhbmRsZVJlc2l6ZSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwiX3RoaXMkX21hcDMiLCJfdGhpcyRfbWFwNCIsInVub2JzZXJ2ZURpbWVuc2lvbnMiLCJfb25EZWNrSW5pdGlhbGl6ZWQiLCJvbkRlY2tJbml0aWFsaXplZCIsIl9kZWNrIiwiX2lzT0tUb1JlbmRlckVmZmVjdHMiLCJ2aWV3SW5kZXgiLCJfdGhpcyRfZGVjayIsInZpZXdNYW5hZ2VyIiwiX3ZpZXdwb3J0cyIsIl9yZW5kZXJNYXBQb3BvdmVyIiwiX3RoaXMkcHJvcHMkdmlzU3RhdGUkIiwiaG92ZXJJbmZvIiwiX3RoaXMkcHJvcHM0IiwibWFwU3RhdGUiLCJfdGhpcyRwcm9wczQkdmlzU3RhdGUiLCJjbGlja2VkIiwiZGF0YXNldHMiLCJpbnRlcmFjdGlvbkNvbmZpZyIsImFuaW1hdGlvbkNvbmZpZyIsIl90aGlzJHByb3BzNCR2aXNTdGF0ZTIiLCJtb3VzZVBvcyIsIm1vdXNlUG9zaXRpb24iLCJjb29yZGluYXRlIiwicGlubmVkIiwidG9vbHRpcCIsImxheWVySG92ZXJQcm9wIiwiZ2V0TGF5ZXJIb3ZlclByb3AiLCJjb21wYXJlTW9kZSIsImNvbmZpZyIsInBpbm5lZFBvc2l0aW9uIiwieCIsInkiLCJsYXllclBpbm5lZFByb3AiLCJnZXRWaWV3cG9ydEZyb21NYXBTdGF0ZSIsImxuZ0xhdCIsIl9nZXRIb3ZlclhZIiwicHJpbWFyeURhdGEiLCJjb21wYXJlVHlwZSIsImNvbW1vblByb3AiLCJvbkNsb3NlIiwiX29uQ2xvc2VNYXBQb3BvdmVyIiwiem9vbSIsImNhbnZhcyIsInVuZGVmaW5lZCIsImZyb3plbiIsImlzQmFzZSIsIm9uU2V0RmVhdHVyZXMiLCJzZXRGZWF0dXJlcyIsInNldFNlbGVjdGVkRmVhdHVyZSIsImZlYXR1cmVDb2xsZWN0aW9uIiwic2NyZWVuQ29vcmQiLCJwcm9qZWN0IiwiX3JlbmRlckRlY2tPdmVybGF5IiwibGF5ZXJzRm9yRGVjayIsIl90aGlzJGNvbnRleHQyIiwiX3RoaXMyIiwib3B0aW9ucyIsInByaW1hcnlNYXAiLCJfdGhpcyRwcm9wczUiLCJtYXBib3hBcGlBY2Nlc3NUb2tlbiIsIm1hcGJveEFwaVVybCIsImRlY2tHbFByb3BzIiwibWFwQ29udHJvbHMiLCJkZWNrUmVuZGVyQ2FsbGJhY2tzIiwiZ2VuZXJhdGVEZWNrR0xMYXllcnMiLCJpc0ludGVyYWN0aXZlIiwiY2hpbGRyZW4iLCJtYXBEcmF3IiwiX3JlZjciLCJfcmVmNyRhY3RpdmUiLCJhY3RpdmUiLCJlZGl0b3JNZW51QWN0aXZlIiwiaXNFZGl0b3JEcmF3aW5nTW9kZSIsIkVkaXRvckxheWVyVXRpbHMiLCJpc0RyYXdpbmdBY3RpdmUiLCJtb2RlIiwiaW50ZXJuYWxWaWV3U3RhdGUiLCJpbnRlcm5hbE1hcFN0YXRlIiwiZWRpdG9yRmVhdHVyZVNlbGVjdGVkSW5kZXgiLCJzZWxlY3RlZFBvbHlnb25JbmRleFNlbGVjdG9yIiwiZ2VuZXJhdGVEZWNrR0xMYXllcnNNZXRob2QiLCJjb21wdXRlRGVja0xheWVycyIsImRlY2tHbExheWVycyIsImVkaXRvckluZm8iLCJzZWxlY3RlZEZlYXR1cmVJbmRleGVzIiwic2VsZWN0ZWRGZWF0dXJlSW5kZXhBcnJheVNlbGVjdG9yIiwiX29uTGF5ZXJIb3ZlciIsIm9uU2V0TGF5ZXJEb21haW4iLCJfb25MYXllclNldERvbWFpbiIsIm9uRmlsdGVyZWRJdGVtc0NoYW5nZSIsIl9vbkxheWVyRmlsdGVyZWRJdGVtc0NoYW5nZSIsImV4dHJhRGVja1BhcmFtcyIsImdldFRvb2x0aXAiLCJnZXRDdXJzb3IiLCJfcmVmOCIsImlzRHJhZ2dpbmciLCJlZGl0b3JDdXJzb3IiLCJlZmZlY3RzIiwiY29tcHV0ZURlY2tFZmZlY3RzIiwidmlld3MiLCJNYXBWaWV3IiwibGVnYWN5TWV0ZXJTaXplcyIsImFsbERlY2tHbFByb3BzIiwicGlja2luZ1JhZGl1cyIsIkRFRkFVTFRfUElDS0lOR19SQURJVVMiLCJvbkRlY2tSZW5kZXIiLCJfb25Nb3VzZU1vdmVEZWJvdW5jZWQiLCJvbkxvYWQiLCJvbkRlY2tMb2FkIiwiY29udHJvbGxlciIsImRvdWJsZUNsaWNrWm9vbSIsImRyYWdSb3RhdGUiLCJpbml0aWFsVmlld1N0YXRlIiwib25CZWZvcmVSZW5kZXIiLCJfb25CZWZvcmVSZW5kZXIiLCJfb25WaWV3cG9ydENoYW5nZSIsIm9uSG92ZXIiLCJyZXMiLCJfb25MYXllckhvdmVyRGVib3VuY2VkIiwib25DbGljayIsInNyY0V2ZW50Iiwib25FcnJvciIsIl9vbkRlY2tFcnJvciIsImNvbXAiLCJkZWNrIiwib25XZWJHTEluaXRpYWxpemVkIiwib25BZnRlclJlbmRlciIsIm9uRGVja0FmdGVyUmVuZGVyIiwibWFwYm94TGF5ZXJzIiwibWFwYm94TGF5ZXJzU2VsZWN0b3IiLCJ1cGRhdGVNYXBib3hMYXllcnMiLCJfcmVuZGVyTWFwYm94T3ZlcmxheXMiLCJpc1N0eWxlTG9hZGVkIiwiX3JlbmRlck1hcCIsIl9tYXBTdHlsZSRtYXBTdHlsZXMiLCJfZ2V0QXBwbGljYXRpb25Db25maWciLCJfdGhpcyRjb250ZXh0MyIsIl9tYXBTdHlsZSRib3R0b21NYXBTdCIsIl90aGlzJHByb3BzNiIsIl90aGlzJHByb3BzNiRNYXBDb21wbyIsIk1hcENvbXBvbmVudCIsIk1hcCIsImxvY2FsZSIsImJvdHRvbU1hcENvbnRhaW5lclByb3BzIiwidG9wTWFwQ29udGFpbmVyUHJvcHMiLCJfdGhpcyRwcm9wczYkZGF0YXNldEEiLCJfdGhpcyRwcm9wczYkY29udGFpbmUiLCJpc0xvYWRpbmdJbmRpY2F0b3JWaXNpYmxlIiwiYWN0aXZlU2lkZVBhbmVsIiwic2lkZVBhbmVsV2lkdGgiLCJsYXllcnNGb3JEZWNrU2VsZWN0b3IiLCJjdXJyZW50U3R5bGUiLCJtYXBTdHlsZXMiLCJiYXNlTWFwTGlicmFyeU5hbWUiLCJnZXRCYXNlTWFwTGlicmFyeSIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwibWFwUHJvcHMiLCJwcmVzZXJ2ZURyYXdpbmdCdWZmZXIiLCJtYXBib3hBY2Nlc3NUb2tlbiIsImFjY2Vzc1Rva2VuIiwibWFwTGliIiwiZ2V0TWFwTGliIiwidHJhbnNmb3JtUmVxdWVzdCIsImhhc0dlb2NvZGVyTGF5ZXIiLCJmaW5kIiwibCIsIkdFT0NPREVSX0xBWUVSX0lEIiwiaXNTcGxpdCIsImJvdHRvbU1hcFN0eWxlIiwiRU1QVFlfTUFQQk9YX1NUWUxFIiwiX3NldE1hcFJlZiIsImF2YWlsYWJsZUxvY2FsZXMiLCJyZWFkT25seSIsInNjYWxlIiwiZ2VvY29kZXIiLCJtYXBDb250cm9sVG9wIiwib25Ub2dnbGVQZXJzcGVjdGl2ZSIsInRvZ2dsZVBlcnNwZWN0aXZlIiwib25Ub2dnbGVTcGxpdE1hcCIsInRvZ2dsZVNwbGl0TWFwIiwib25NYXBUb2dnbGVMYXllciIsIl9oYW5kbGVNYXBUb2dnbGVMYXllciIsIm9uVG9nZ2xlTWFwQ29udHJvbCIsIl90b2dnbGVNYXBDb250cm9sIiwib25Ub2dnbGVTcGxpdE1hcFZpZXdwb3J0IiwidG9nZ2xlU3BsaXRNYXBWaWV3cG9ydCIsIm9uU2V0RWRpdG9yTW9kZSIsInNldEVkaXRvck1vZGUiLCJvblNldExvY2FsZSIsInNldExvY2FsZSIsIm9uVG9nZ2xlRWRpdG9yVmlzaWJpbGl0eSIsInRvZ2dsZUVkaXRvclZpc2liaWxpdHkiLCJvbkxheWVyVmlzQ29uZmlnQ2hhbmdlIiwibGF5ZXJWaXNDb25maWdDaGFuZ2UiLCJtYXBIZWlnaHQiLCJzZXRNYXBDb250cm9sU2V0dGluZ3MiLCJvbkRlbGV0ZUZlYXR1cmUiLCJkZWxldGVGZWF0dXJlIiwib25TZWxlY3QiLCJvblRvZ2dsZVBvbHlnb25GaWx0ZXIiLCJzZXRQb2x5Z29uRmlsdGVyTGF5ZXIiLCJ2aXNpYmxlIiwidG9wTWFwU3R5bGUiLCJpc1Zpc2libGUiLCJzdGF0ZSIsInJlbmRlciIsIl9tYXBTdHlsZSRtYXBTdHlsZXMyIiwiX2dldEFwcGxpY2F0aW9uQ29uZmlnMiIsIl90aGlzJHByb3BzNyIsIm1hcENvbnRlbnQiLCJzdHlsZVNlbGVjdG9yIiwib25Db250ZXh0TWVudSIsInByZXZlbnREZWZhdWx0Iiwib3ZlcmxheUJsZW5kaW5nIiwiQ29tcG9uZW50IiwiTWFwVmlld1N0YXRlQ29udGV4dCIsIndpdGhUaGVtZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXAtY29udGFpbmVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vLyBsaWJyYXJpZXNcbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgY3JlYXRlUmVmLCB1c2VNZW1vfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkLCB7d2l0aFRoZW1lfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge01hcCwgTWFwUmVmfSBmcm9tICdyZWFjdC1tYXAtZ2wnO1xuaW1wb3J0IHtQaWNrSW5mb30gZnJvbSAnQGRlY2suZ2wvY29yZS9saWIvZGVjayc7XG5pbXBvcnQgRGVja0dMIGZyb20gJ0BkZWNrLmdsL3JlYWN0JztcbmltcG9ydCB7Y3JlYXRlU2VsZWN0b3IsIFNlbGVjdG9yfSBmcm9tICdyZXNlbGVjdCc7XG5pbXBvcnQge3VzZURyb3BwYWJsZX0gZnJvbSAnQGRuZC1raXQvY29yZSc7XG5pbXBvcnQgZGVib3VuY2UgZnJvbSAnbG9kYXNoLmRlYm91bmNlJztcblxuaW1wb3J0IHtWaXNTdGF0ZUFjdGlvbnMsIE1hcFN0YXRlQWN0aW9ucywgVUlTdGF0ZUFjdGlvbnN9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5cbi8vIGNvbXBvbmVudHNcbmltcG9ydCBNYXBQb3BvdmVyRmFjdG9yeSBmcm9tICcuL21hcC9tYXAtcG9wb3Zlcic7XG5pbXBvcnQgTWFwQ29udHJvbEZhY3RvcnkgZnJvbSAnLi9tYXAvbWFwLWNvbnRyb2wnO1xuaW1wb3J0IHtcbiAgU3R5bGVkTWFwQ29udGFpbmVyLFxuICBTdHlsZWRBdHRyaWJ1dGlvbixcbiAgRW5kSG9yaXpvbnRhbEZsZXhib3hcbn0gZnJvbSAnLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgRWRpdG9yRmFjdG9yeSBmcm9tICcuL2VkaXRvci9lZGl0b3InO1xuXG4vLyB1dGlsc1xuaW1wb3J0IHtcbiAgZ2VuZXJhdGVNYXBib3hMYXllcnMsXG4gIHVwZGF0ZU1hcGJveExheWVycyxcbiAgTGF5ZXJCYXNlQ29uZmlnLFxuICBWaXN1YWxDaGFubmVsRG9tYWluLFxuICBFZGl0b3JMYXllclV0aWxzLFxuICBBZ2dyZWdhdGVkQmluXG59IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcbmltcG9ydCB7XG4gIERhdGFzZXRBdHRyaWJ1dGlvbixcbiAgTWFwU3RhdGUsXG4gIE1hcENvbnRyb2xzLFxuICBWaWV3cG9ydCxcbiAgU3BsaXRNYXAsXG4gIFNwbGl0TWFwTGF5ZXJzXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtcbiAgZXJyb3JOb3RpZmljYXRpb24sXG4gIHNldExheWVyQmxlbmRpbmcsXG4gIGlzU3R5bGVVc2luZ01hcGJveFRpbGVzLFxuICBpc1N0eWxlVXNpbmdPcGVuU3RyZWV0TWFwVGlsZXMsXG4gIGdldEJhc2VNYXBMaWJyYXJ5LFxuICBCYXNlTWFwTGlicmFyeUNvbmZpZyxcbiAgdHJhbnNmb3JtUmVxdWVzdCxcbiAgb2JzZXJ2ZURpbWVuc2lvbnMsXG4gIHVub2JzZXJ2ZURpbWVuc2lvbnMsXG4gIGhhc01vYmlsZVdpZHRoLFxuICBnZXRNYXBMYXllcnNGcm9tU3BsaXRNYXBzLFxuICBvblZpZXdQb3J0Q2hhbmdlLFxuICBnZXRWaWV3cG9ydEZyb21NYXBTdGF0ZSxcbiAgbm9ybWFsaXplRXZlbnQsXG4gIHJnYlRvSGV4LFxuICBjb21wdXRlRGVja0VmZmVjdHMsXG4gIGdldEFwcGxpY2F0aW9uQ29uZmlnLFxuICBHZXRNYXBSZWZcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge2JyZWFrUG9pbnRWYWx1ZXN9IGZyb20gJ0BrZXBsZXIuZ2wvc3R5bGVzJztcblxuLy8gZGVmYXVsdC1zZXR0aW5nc1xuaW1wb3J0IHtcbiAgRklMVEVSX1RZUEVTLFxuICBHRU9DT0RFUl9MQVlFUl9JRCxcbiAgVEhST1RUTEVfTk9USUZJQ0FUSU9OX1RJTUUsXG4gIERFRkFVTFRfUElDS0lOR19SQURJVVMsXG4gIE5PX01BUF9JRCxcbiAgRU1QVFlfTUFQQk9YX1NUWUxFXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuaW1wb3J0IHtEUk9QUEFCTEVfTUFQX0NPTlRBSU5FUl9UWVBFfSBmcm9tICcuL2NvbW1vbi9kbmQtbGF5ZXItaXRlbXMnO1xuLy8gQ29udGV4dHNcbmltcG9ydCB7TWFwVmlld1N0YXRlQ29udGV4dH0gZnJvbSAnLi9tYXAtdmlldy1zdGF0ZS1jb250ZXh0JztcblxuaW1wb3J0IEVycm9yQm91bmRhcnkgZnJvbSAnLi9jb21tb24vZXJyb3ItYm91bmRhcnknO1xuaW1wb3J0IHtMT0NBTEVfQ09ERVN9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcbmltcG9ydCB7TWFwVmlld30gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQge1xuICBNYXBTdHlsZSxcbiAgY29tcHV0ZURlY2tMYXllcnMsXG4gIGdldExheWVySG92ZXJQcm9wLFxuICBMYXllckhvdmVyUHJvcCxcbiAgcHJlcGFyZUxheWVyc0ZvckRlY2ssXG4gIHByZXBhcmVMYXllcnNUb1JlbmRlcixcbiAgTGF5ZXJzVG9SZW5kZXJcbn0gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG5pbXBvcnQge1Zpc1N0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3NjaGVtYXMnO1xuXG5pbXBvcnQgTG9hZGluZ0luZGljYXRvciBmcm9tICcuL2xvYWRpbmctaW5kaWNhdG9yJztcblxuLy8gRGVib3VuY2UgdGhlIHByb3BhZ2F0aW9uIG9mIHZpZXdwb3J0IGNoYW5nZSBhbmQgbW91c2UgbW92ZXMgdG8gcmVkdXggc3RvcmUuXG4vLyBUaGlzIGlzIHRvIGF2b2lkIHRvbyBtYW55IHJlbmRlcnMgb2Ygb3RoZXIgY29tcG9uZW50cyB3aGVuIHRoZSBtYXAgaXNcbi8vIGJlaW5nIHBhbm5lZC96b29tZWQgKGxlYWRpbmcgdG8gbGFnZ3kgYmFzZW1hcC9kZWNrIHN5bmNpbmcpLlxuY29uc3QgREVCT1VOQ0VfVklFV1BPUlRfUFJPUEFHQVRFID0gMTA7XG5jb25zdCBERUJPVU5DRV9NT1VTRV9NT1ZFX1BST1BBR0FURSA9IDEwO1xuXG5jb25zdCBNQVBfU1RZTEU6IHtba2V5OiBzdHJpbmddOiBSZWFjdC5DU1NQcm9wZXJ0aWVzfSA9IHtcbiAgY29udGFpbmVyOiB7XG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBoZWlnaHQ6ICcxMDAlJ1xuICB9LFxuICB0b3A6IHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB0b3A6IDAsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICBwb2ludGVyRXZlbnRzOiAnbm9uZSdcbiAgfVxufTtcblxuY29uc3QgTE9DQUxFX0NPREVTX0FSUkFZID0gT2JqZWN0LmtleXMoTE9DQUxFX0NPREVTKTtcblxuaW50ZXJmYWNlIFN0eWxlZE1hcENvbnRhaW5lclByb3BzIHtcbiAgJG1peEJsZW5kTW9kZT86IHN0cmluZztcbiAgJG1hcExpYkNzc0NsYXNzOiBzdHJpbmc7XG59XG5cbmNvbnN0IFN0eWxlZE1hcCA9IHN0eWxlZChTdHlsZWRNYXBDb250YWluZXIpPFN0eWxlZE1hcENvbnRhaW5lclByb3BzPihcbiAgKHskbWl4QmxlbmRNb2RlID0gJ25vcm1hbCcsICRtYXBMaWJDc3NDbGFzc30pID0+IGBcbiAgI2RlZmF1bHQtZGVja2dsLW92ZXJsYXkge1xuICAgIG1peC1ibGVuZC1tb2RlOiAkeyRtaXhCbGVuZE1vZGV9O1xuICB9O1xuICAqWyR7JG1hcExpYkNzc0NsYXNzfS1jaGlsZHJlbl0ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgfVxuYFxuKTtcblxuY29uc3QgTUFQQk9YR0xfU1RZTEVfVVBEQVRFID0gJ3N0eWxlLmxvYWQnO1xuY29uc3QgTUFQQk9YR0xfUkVOREVSID0gJ3JlbmRlcic7XG5jb25zdCBub3AgPSAoKSA9PiB7XG4gIHJldHVybjtcbn07XG5cbnR5cGUgTWFwTGliTG9nb1Byb3BzID0ge1xuICBiYXNlTWFwTGlicmFyeUNvbmZpZzogQmFzZU1hcExpYnJhcnlDb25maWc7XG59O1xuXG5jb25zdCBNYXBMaWJMb2dvID0gKHtiYXNlTWFwTGlicmFyeUNvbmZpZ306IE1hcExpYkxvZ29Qcm9wcykgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT1cImF0dHJpdGlvbi1sb2dvXCI+XG4gICAgQmFzZW1hcCBieTpcbiAgICA8YVxuICAgICAgc3R5bGU9e3ttYXJnaW5MZWZ0OiAnNXB4J319XG4gICAgICBjbGFzc05hbWU9e2Ake2Jhc2VNYXBMaWJyYXJ5Q29uZmlnLm1hcExpYkNzc0NsYXNzfS1jdHJsLWxvZ29gfVxuICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgaHJlZj17YmFzZU1hcExpYnJhcnlDb25maWcubWFwTGliVXJsfVxuICAgICAgYXJpYS1sYWJlbD17YCR7YmFzZU1hcExpYnJhcnlDb25maWcubWFwTGliTmFtZX0gbG9nb2B9XG4gICAgLz5cbiAgPC9kaXY+XG4pO1xuXG5pbnRlcmZhY2UgU3R5bGVkRHJvcHBhYmxlUHJvcHMge1xuICBpc092ZXI6IGJvb2xlYW47XG59XG5cbmNvbnN0IFN0eWxlZERyb3BwYWJsZSA9IHN0eWxlZC5kaXY8U3R5bGVkRHJvcHBhYmxlUHJvcHM+YFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IChwcm9wcy5pc092ZXIgPyBwcm9wcy50aGVtZS5kbmRPdmVyQmFja2dyb3VuZENvbG9yIDogJ25vbmUnKX07XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IDE7XG5gO1xuXG5leHBvcnQgY29uc3QgaXNTcGxpdFNlbGVjdG9yID0gcHJvcHMgPT5cbiAgcHJvcHMudmlzU3RhdGUuc3BsaXRNYXBzICYmIHByb3BzLnZpc1N0YXRlLnNwbGl0TWFwcy5sZW5ndGggPiAxO1xuXG5leHBvcnQgY29uc3QgRHJvcHBhYmxlID0gKHtjb250YWluZXJJZH0pID0+IHtcbiAgY29uc3Qge2lzT3Zlciwgc2V0Tm9kZVJlZn0gPSB1c2VEcm9wcGFibGUoe1xuICAgIGlkOiBjb250YWluZXJJZCxcbiAgICBkYXRhOiB7dHlwZTogRFJPUFBBQkxFX01BUF9DT05UQUlORVJfVFlQRSwgaW5kZXg6IGNvbnRhaW5lcklkfSxcbiAgICBkaXNhYmxlZDogIWNvbnRhaW5lcklkXG4gIH0pO1xuXG4gIHJldHVybiA8U3R5bGVkRHJvcHBhYmxlIHJlZj17c2V0Tm9kZVJlZn0gaXNPdmVyPXtpc092ZXJ9IC8+O1xufTtcblxuaW50ZXJmYWNlIFN0eWxlZERhdGFzZXRBdHRyaWJ1dGlvbnNDb250YWluZXJQcm9wcyB7XG4gIGlzUGFsbTogYm9vbGVhbjtcbn1cblxuY29uc3QgU3R5bGVkRGF0YXNldEF0dHJpYnV0aW9uc0NvbnRhaW5lciA9IHN0eWxlZC5kaXY8U3R5bGVkRGF0YXNldEF0dHJpYnV0aW9uc0NvbnRhaW5lclByb3BzPmBcbiAgbWF4LXdpZHRoOiAke3Byb3BzID0+IChwcm9wcy5pc1BhbG0gPyAnMjAwcHgnIDogJzMwMHB4Jyl9O1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGFiZWxDb2xvcn07XG4gIG1hcmdpbi1yaWdodDogMnB4O1xuICBtYXJnaW4tYm90dG9tOiAxcHg7XG4gIGxpbmUtaGVpZ2h0OiAke3Byb3BzID0+IChwcm9wcy5pc1BhbG0gPyAnMWVtJyA6ICcxLjRlbScpfTtcblxuICAmOmhvdmVyIHtcbiAgICB3aGl0ZS1zcGFjZTogaW5oZXJpdDtcbiAgfVxuYDtcblxuY29uc3QgRGF0YXNldEF0dHJpYnV0aW9ucyA9ICh7XG4gIGRhdGFzZXRBdHRyaWJ1dGlvbnMsXG4gIGlzUGFsbVxufToge1xuICBkYXRhc2V0QXR0cmlidXRpb25zOiBEYXRhc2V0QXR0cmlidXRpb25bXTtcbiAgaXNQYWxtOiBib29sZWFuO1xufSkgPT4gKFxuICA8PlxuICAgIHtkYXRhc2V0QXR0cmlidXRpb25zPy5sZW5ndGggPyAoXG4gICAgICA8U3R5bGVkRGF0YXNldEF0dHJpYnV0aW9uc0NvbnRhaW5lciBpc1BhbG09e2lzUGFsbX0+XG4gICAgICAgIHtkYXRhc2V0QXR0cmlidXRpb25zLm1hcCgoZHMsIGlkeCkgPT4gKFxuICAgICAgICAgIDxhXG4gICAgICAgICAgICB7Li4uKGRzLnVybCA/IHtocmVmOiBkcy51cmx9IDogbnVsbCl9XG4gICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICBrZXk9e2Ake2RzLnRpdGxlfV8ke2lkeH1gfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtkcy50aXRsZX1cbiAgICAgICAgICAgIHtpZHggIT09IGRhdGFzZXRBdHRyaWJ1dGlvbnMubGVuZ3RoIC0gMSA/ICcsICcgOiBudWxsfVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgKSl9XG4gICAgICA8L1N0eWxlZERhdGFzZXRBdHRyaWJ1dGlvbnNDb250YWluZXI+XG4gICAgKSA6IG51bGx9XG4gIDwvPlxuKTtcblxudHlwZSBBdHRyaWJ1dGlvblByb3BzID0ge1xuICBzaG93QmFzZU1hcExpYkxvZ286IGJvb2xlYW47XG4gIHNob3dPc21CYXNlbWFwQXR0cmlidXRpb246IGJvb2xlYW47XG4gIGRhdGFzZXRBdHRyaWJ1dGlvbnM6IERhdGFzZXRBdHRyaWJ1dGlvbltdO1xuICBiYXNlTWFwTGlicmFyeUNvbmZpZzogQmFzZU1hcExpYnJhcnlDb25maWc7XG59O1xuXG5leHBvcnQgY29uc3QgQXR0cmlidXRpb246IFJlYWN0LkZDPEF0dHJpYnV0aW9uUHJvcHM+ID0gKHtcbiAgc2hvd0Jhc2VNYXBMaWJMb2dvID0gdHJ1ZSxcbiAgc2hvd09zbUJhc2VtYXBBdHRyaWJ1dGlvbiA9IGZhbHNlLFxuICBkYXRhc2V0QXR0cmlidXRpb25zLFxuICBiYXNlTWFwTGlicmFyeUNvbmZpZ1xufTogQXR0cmlidXRpb25Qcm9wcykgPT4ge1xuICBjb25zdCBpc1BhbG0gPSBoYXNNb2JpbGVXaWR0aChicmVha1BvaW50VmFsdWVzKTtcblxuICBjb25zdCBtZW1vaXplZENvbXBvbmVudHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIXNob3dCYXNlTWFwTGliTG9nbykge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZEF0dHJpYnV0aW9uXG4gICAgICAgICAgbWFwTGliQ3NzQ2xhc3M9e2Jhc2VNYXBMaWJyYXJ5Q29uZmlnLm1hcExpYkNzc0NsYXNzfVxuICAgICAgICAgIG1hcExpYkF0dHJpYnV0aW9uQ3NzQ2xhc3M9e2Jhc2VNYXBMaWJyYXJ5Q29uZmlnLm1hcExpYkF0dHJpYnV0aW9uQ3NzQ2xhc3N9XG4gICAgICAgID5cbiAgICAgICAgICA8RW5kSG9yaXpvbnRhbEZsZXhib3g+XG4gICAgICAgICAgICA8RGF0YXNldEF0dHJpYnV0aW9ucyBkYXRhc2V0QXR0cmlidXRpb25zPXtkYXRhc2V0QXR0cmlidXRpb25zfSBpc1BhbG09e2lzUGFsbX0gLz5cbiAgICAgICAgICAgIHtzaG93T3NtQmFzZW1hcEF0dHJpYnV0aW9uID8gKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImF0dHJpdGlvbi1saW5rXCI+XG4gICAgICAgICAgICAgICAge2RhdGFzZXRBdHRyaWJ1dGlvbnM/Lmxlbmd0aCA/IDxzcGFuIGNsYXNzTmFtZT1cInBpcGUtc2VwYXJhdG9yXCI+fDwvc3Bhbj4gOiBudWxsfVxuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICBocmVmPVwiaHR0cDovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9jb3B5cmlnaHRcIlxuICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIMKpIE9wZW5TdHJlZXRNYXBcbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC9FbmRIb3Jpem9udGFsRmxleGJveD5cbiAgICAgICAgPC9TdHlsZWRBdHRyaWJ1dGlvbj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRBdHRyaWJ1dGlvblxuICAgICAgICBtYXBMaWJDc3NDbGFzcz17YmFzZU1hcExpYnJhcnlDb25maWcubWFwTGliQ3NzQ2xhc3N9XG4gICAgICAgIG1hcExpYkF0dHJpYnV0aW9uQ3NzQ2xhc3M9e2Jhc2VNYXBMaWJyYXJ5Q29uZmlnLm1hcExpYkF0dHJpYnV0aW9uQ3NzQ2xhc3N9XG4gICAgICA+XG4gICAgICAgIDxFbmRIb3Jpem9udGFsRmxleGJveD5cbiAgICAgICAgICA8RGF0YXNldEF0dHJpYnV0aW9ucyBkYXRhc2V0QXR0cmlidXRpb25zPXtkYXRhc2V0QXR0cmlidXRpb25zfSBpc1BhbG09e2lzUGFsbX0gLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImF0dHJpdGlvbi1saW5rXCI+XG4gICAgICAgICAgICB7ZGF0YXNldEF0dHJpYnV0aW9ucz8ubGVuZ3RoID8gPHNwYW4gY2xhc3NOYW1lPVwicGlwZS1zZXBhcmF0b3JcIj58PC9zcGFuPiA6IG51bGx9XG4gICAgICAgICAgICB7aXNQYWxtID8gPE1hcExpYkxvZ28gYmFzZU1hcExpYnJhcnlDb25maWc9e2Jhc2VNYXBMaWJyYXJ5Q29uZmlnfSAvPiA6IG51bGx9XG4gICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly9rZXBsZXIuZ2wvcG9saWN5L1wiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgICAgICAgwqkga2VwbGVyLmdsIHx7JyAnfVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgeyFpc1BhbG0gPyA8TWFwTGliTG9nbyBiYXNlTWFwTGlicmFyeUNvbmZpZz17YmFzZU1hcExpYnJhcnlDb25maWd9IC8+IDogbnVsbH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9FbmRIb3Jpem9udGFsRmxleGJveD5cbiAgICAgIDwvU3R5bGVkQXR0cmlidXRpb24+XG4gICAgKTtcbiAgfSwgW1xuICAgIHNob3dCYXNlTWFwTGliTG9nbyxcbiAgICBzaG93T3NtQmFzZW1hcEF0dHJpYnV0aW9uLFxuICAgIGRhdGFzZXRBdHRyaWJ1dGlvbnMsXG4gICAgaXNQYWxtLFxuICAgIGJhc2VNYXBMaWJyYXJ5Q29uZmlnXG4gIF0pO1xuXG4gIHJldHVybiBtZW1vaXplZENvbXBvbmVudHM7XG59O1xuXG5NYXBDb250YWluZXJGYWN0b3J5LmRlcHMgPSBbTWFwUG9wb3ZlckZhY3RvcnksIE1hcENvbnRyb2xGYWN0b3J5LCBFZGl0b3JGYWN0b3J5XTtcblxudHlwZSBNYXBib3hTdHlsZSA9IHN0cmluZyB8IG9iamVjdCB8IHVuZGVmaW5lZDtcbnR5cGUgUHJvcFNlbGVjdG9yPFI+ID0gU2VsZWN0b3I8TWFwQ29udGFpbmVyUHJvcHMsIFI+O1xuXG5leHBvcnQgaW50ZXJmYWNlIE1hcENvbnRhaW5lclByb3BzIHtcbiAgdmlzU3RhdGU6IFZpc1N0YXRlO1xuICBtYXBTdGF0ZTogTWFwU3RhdGU7XG4gIG1hcENvbnRyb2xzOiBNYXBDb250cm9scztcbiAgbWFwU3R5bGU6IHtib3R0b21NYXBTdHlsZT86IE1hcGJveFN0eWxlOyB0b3BNYXBTdHlsZT86IE1hcGJveFN0eWxlfSAmIE1hcFN0eWxlO1xuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogc3RyaW5nO1xuICBtYXBib3hBcGlVcmw6IHN0cmluZztcbiAgdmlzU3RhdGVBY3Rpb25zOiB0eXBlb2YgVmlzU3RhdGVBY3Rpb25zO1xuICBtYXBTdGF0ZUFjdGlvbnM6IHR5cGVvZiBNYXBTdGF0ZUFjdGlvbnM7XG4gIHVpU3RhdGVBY3Rpb25zOiB0eXBlb2YgVUlTdGF0ZUFjdGlvbnM7XG5cbiAgLy8gb3B0aW9uYWxcbiAgcHJpbWFyeT86IGJvb2xlYW47IC8vIHByaW1hcnkgb25lIHdpbGwgYmUgcmVwb3J0aW5nIGl0cyBzaXplIHRvIGFwcFN0YXRlXG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcbiAgaXNFeHBvcnQ/OiBib29sZWFuO1xuICAvLyBvbk1hcFN0eWxlTG9hZGVkPzogKG1hcDogbWFwbGlicmVnbC5NYXAgfCBSZXR1cm5UeXBlPE1hcFJlZlsnZ2V0TWFwJ10+IHwgbnVsbCkgPT4gdm9pZDtcbiAgb25NYXBTdHlsZUxvYWRlZD86IChtYXA6IEdldE1hcFJlZiB8IG51bGwpID0+IHZvaWQ7XG4gIG9uTWFwUmVuZGVyPzogKG1hcDogR2V0TWFwUmVmIHwgbnVsbCkgPT4gdm9pZDtcbiAgZ2V0TWFwYm94UmVmPzogKG1hcGJveD86IE1hcFJlZiB8IG51bGwsIGluZGV4PzogbnVtYmVyKSA9PiB2b2lkO1xuICBpbmRleD86IG51bWJlcjtcbiAgZGVsZXRlTWFwTGFiZWxzPzogKGNvbnRhaW5lcklkOiBzdHJpbmcsIGxheWVySWQ6IHN0cmluZykgPT4gdm9pZDtcbiAgY29udGFpbmVySWQ/OiBudW1iZXI7XG5cbiAgaXNMb2FkaW5nSW5kaWNhdG9yVmlzaWJsZT86IGJvb2xlYW47XG4gIGFjdGl2ZVNpZGVQYW5lbDogc3RyaW5nIHwgbnVsbDtcbiAgc2lkZVBhbmVsV2lkdGg/OiBudW1iZXI7XG5cbiAgbG9jYWxlPzogYW55O1xuICB0aGVtZT86IGFueTtcbiAgZWRpdG9yPzogYW55O1xuICBNYXBDb21wb25lbnQ/OiB0eXBlb2YgTWFwO1xuICBkZWNrR2xQcm9wcz86IGFueTtcbiAgb25EZWNrSW5pdGlhbGl6ZWQ/OiAoYTogYW55LCBiOiBhbnkpID0+IHZvaWQ7XG4gIG9uVmlld1N0YXRlQ2hhbmdlPzogKHZpZXdwb3J0OiBWaWV3cG9ydCkgPT4gdm9pZDtcblxuICB0b3BNYXBDb250YWluZXJQcm9wczogYW55O1xuICBib3R0b21NYXBDb250YWluZXJQcm9wczogYW55O1xuICB0cmFuc2Zvcm1SZXF1ZXN0PzogKHVybDogc3RyaW5nLCByZXNvdXJjZVR5cGU/OiBzdHJpbmcpID0+IHt1cmw6IHN0cmluZ307XG5cbiAgZGF0YXNldEF0dHJpYnV0aW9ucz86IERhdGFzZXRBdHRyaWJ1dGlvbltdO1xuXG4gIGdlbmVyYXRlTWFwYm94TGF5ZXJzPzogdHlwZW9mIGdlbmVyYXRlTWFwYm94TGF5ZXJzO1xuICBnZW5lcmF0ZURlY2tHTExheWVycz86IHR5cGVvZiBjb21wdXRlRGVja0xheWVycztcblxuICBvbk1vdXNlTW92ZT86IChldmVudDogUmVhY3QuTW91c2VFdmVudCAmIHtsbmdMYXQ/OiBbbnVtYmVyLCBudW1iZXJdfSkgPT4gdm9pZDtcblxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgZGVja1JlbmRlckNhbGxiYWNrcz86IHtcbiAgICBvbkRlY2tMb2FkPzogKCkgPT4gdm9pZDtcbiAgICBvbkRlY2tSZW5kZXI/OiAoZGVja1Byb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsO1xuICAgIG9uRGVja0FmdGVyUmVuZGVyPzogKGRlY2tQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IGFueTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTWFwQ29udGFpbmVyRmFjdG9yeShcbiAgTWFwUG9wb3ZlcjogUmV0dXJuVHlwZTx0eXBlb2YgTWFwUG9wb3ZlckZhY3Rvcnk+LFxuICBNYXBDb250cm9sOiBSZXR1cm5UeXBlPHR5cGVvZiBNYXBDb250cm9sRmFjdG9yeT4sXG4gIEVkaXRvcjogUmV0dXJuVHlwZTx0eXBlb2YgRWRpdG9yRmFjdG9yeT5cbik6IFJlYWN0LkNvbXBvbmVudFR5cGU8TWFwQ29udGFpbmVyUHJvcHM+IHtcbiAgY2xhc3MgTWFwQ29udGFpbmVyIGV4dGVuZHMgQ29tcG9uZW50PE1hcENvbnRhaW5lclByb3BzPiB7XG4gICAgZGlzcGxheU5hbWUgPSAnTWFwQ29udGFpbmVyJztcblxuICAgIHN0YXRpYyBjb250ZXh0VHlwZSA9IE1hcFZpZXdTdGF0ZUNvbnRleHQ7XG5cbiAgICBkZWNsYXJlIGNvbnRleHQ6IFJlYWN0LkNvbnRleHRUeXBlPHR5cGVvZiBNYXBWaWV3U3RhdGVDb250ZXh0PjtcblxuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICBNYXBDb21wb25lbnQ6IE1hcCxcbiAgICAgIGRlY2tHbFByb3BzOiB7fSxcbiAgICAgIGluZGV4OiAwLFxuICAgICAgcHJpbWFyeTogdHJ1ZVxuICAgIH07XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgc3VwZXIocHJvcHMpO1xuICAgIH1cblxuICAgIHN0YXRlID0ge1xuICAgICAgLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIGF0dHJpYnV0aW9uIHNob3VsZCBiZSB2aXNpYmxlIGJhc2VkIHRoZSByZXN1bHQgb2YgbG9hZGluZyB0aGUgbWFwIHN0eWxlXG4gICAgICBzaG93QmFzZU1hcEF0dHJpYnV0aW9uOiB0cnVlXG4gICAgfTtcblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgaWYgKCF0aGlzLl9yZWYuY3VycmVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBvYnNlcnZlRGltZW5zaW9ucyh0aGlzLl9yZWYuY3VycmVudCwgdGhpcy5faGFuZGxlUmVzaXplKTtcbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIC8vIHVuYmluZCBtYXBib3hnbCBldmVudCBsaXN0ZW5lclxuICAgICAgaWYgKHRoaXMuX21hcCkge1xuICAgICAgICB0aGlzLl9tYXA/Lm9mZihNQVBCT1hHTF9TVFlMRV9VUERBVEUsIG5vcCk7XG4gICAgICAgIHRoaXMuX21hcD8ub2ZmKE1BUEJPWEdMX1JFTkRFUiwgbm9wKTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5fcmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdW5vYnNlcnZlRGltZW5zaW9ucyh0aGlzLl9yZWYuY3VycmVudCk7XG4gICAgfVxuXG4gICAgX2RlY2s6IGFueSA9IG51bGw7XG4gICAgX21hcDogR2V0TWFwUmVmIHwgbnVsbCA9IG51bGw7XG4gICAgX3JlZiA9IGNyZWF0ZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcbiAgICBfZGVja0dMRXJyb3JzRWxhcHNlZDoge1tpZDogc3RyaW5nXTogbnVtYmVyfSA9IHt9O1xuXG4gICAgcHJldmlvdXNMYXllcnMgPSB7XG4gICAgICAvLyBbbGF5ZXJzLmlkXTogbWFwYm94TGF5ZXJDb25maWdcbiAgICB9O1xuXG4gICAgX2hhbmRsZVJlc2l6ZSA9IGRpbWVuc2lvbnMgPT4ge1xuICAgICAgY29uc3Qge3ByaW1hcnksIGluZGV4fSA9IHRoaXMucHJvcHM7XG4gICAgICBpZiAocHJpbWFyeSkge1xuICAgICAgICBjb25zdCB7bWFwU3RhdGVBY3Rpb25zfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGlmIChkaW1lbnNpb25zICYmIGRpbWVuc2lvbnMud2lkdGggPiAwICYmIGRpbWVuc2lvbnMuaGVpZ2h0ID4gMCkge1xuICAgICAgICAgIG1hcFN0YXRlQWN0aW9ucy51cGRhdGVNYXAoZGltZW5zaW9ucywgaW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIGxheWVyc1NlbGVjdG9yOiBQcm9wU2VsZWN0b3I8VmlzU3RhdGVbJ2xheWVycyddPiA9IHByb3BzID0+IHByb3BzLnZpc1N0YXRlLmxheWVycztcbiAgICBsYXllckRhdGFTZWxlY3RvcjogUHJvcFNlbGVjdG9yPFZpc1N0YXRlWydsYXllcnMnXT4gPSBwcm9wcyA9PiBwcm9wcy52aXNTdGF0ZS5sYXllckRhdGE7XG4gICAgc3BsaXRNYXBTZWxlY3RvcjogUHJvcFNlbGVjdG9yPFNwbGl0TWFwW10+ID0gcHJvcHMgPT4gcHJvcHMudmlzU3RhdGUuc3BsaXRNYXBzO1xuICAgIHNwbGl0TWFwSW5kZXhTZWxlY3RvcjogUHJvcFNlbGVjdG9yPG51bWJlciB8IHVuZGVmaW5lZD4gPSBwcm9wcyA9PiBwcm9wcy5pbmRleDtcbiAgICBtYXBMYXllcnNTZWxlY3RvcjogUHJvcFNlbGVjdG9yPFNwbGl0TWFwTGF5ZXJzIHwgbnVsbCB8IHVuZGVmaW5lZD4gPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMuc3BsaXRNYXBTZWxlY3RvcixcbiAgICAgIHRoaXMuc3BsaXRNYXBJbmRleFNlbGVjdG9yLFxuICAgICAgZ2V0TWFwTGF5ZXJzRnJvbVNwbGl0TWFwc1xuICAgICk7XG4gICAgbGF5ZXJPcmRlclNlbGVjdG9yOiBQcm9wU2VsZWN0b3I8VmlzU3RhdGVbJ2xheWVyT3JkZXInXT4gPSBwcm9wcyA9PiBwcm9wcy52aXNTdGF0ZS5sYXllck9yZGVyO1xuICAgIGxheWVyc1RvUmVuZGVyU2VsZWN0b3I6IFByb3BTZWxlY3RvcjxMYXllcnNUb1JlbmRlcj4gPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMubGF5ZXJzU2VsZWN0b3IsXG4gICAgICB0aGlzLmxheWVyRGF0YVNlbGVjdG9yLFxuICAgICAgdGhpcy5tYXBMYXllcnNTZWxlY3RvcixcbiAgICAgIHByZXBhcmVMYXllcnNUb1JlbmRlclxuICAgICk7XG4gICAgbGF5ZXJzRm9yRGVja1NlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmxheWVyc1NlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllckRhdGFTZWxlY3RvcixcbiAgICAgIHByZXBhcmVMYXllcnNGb3JEZWNrXG4gICAgKTtcbiAgICBmaWx0ZXJzU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy52aXNTdGF0ZS5maWx0ZXJzO1xuICAgIHBvbHlnb25GaWx0ZXJzU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3Rvcih0aGlzLmZpbHRlcnNTZWxlY3RvciwgZmlsdGVycyA9PlxuICAgICAgZmlsdGVycy5maWx0ZXIoZiA9PiBmLnR5cGUgPT09IEZJTFRFUl9UWVBFUy5wb2x5Z29uICYmIGYuZW5hYmxlZCAhPT0gZmFsc2UpXG4gICAgKTtcbiAgICBmZWF0dXJlc1NlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMudmlzU3RhdGUuZWRpdG9yLmZlYXR1cmVzO1xuICAgIHNlbGVjdGVkRmVhdHVyZVNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMudmlzU3RhdGUuZWRpdG9yLnNlbGVjdGVkRmVhdHVyZTtcbiAgICBmZWF0dXJlQ29sbGVjdGlvblNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLnBvbHlnb25GaWx0ZXJzU2VsZWN0b3IsXG4gICAgICB0aGlzLmZlYXR1cmVzU2VsZWN0b3IsXG4gICAgICAocG9seWdvbkZpbHRlcnMsIGZlYXR1cmVzKSA9PiAoe1xuICAgICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgICBmZWF0dXJlczogZmVhdHVyZXMuY29uY2F0KHBvbHlnb25GaWx0ZXJzLm1hcChmID0+IGYudmFsdWUpKVxuICAgICAgfSlcbiAgICApO1xuICAgIC8vIEB0cy1pZ25vcmUgLSBObyBvdmVybG9hZCBtYXRjaGVzIHRoaXMgY2FsbFxuICAgIHNlbGVjdGVkUG9seWdvbkluZGV4U2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMuZmVhdHVyZUNvbGxlY3Rpb25TZWxlY3RvcixcbiAgICAgIHRoaXMuc2VsZWN0ZWRGZWF0dXJlU2VsZWN0b3IsXG4gICAgICAoY29sbGVjdGlvbiwgc2VsZWN0ZWRGZWF0dXJlKSA9PlxuICAgICAgICBjb2xsZWN0aW9uLmZlYXR1cmVzLmZpbmRJbmRleChmID0+IGYuaWQgPT09IHNlbGVjdGVkRmVhdHVyZT8uaWQpXG4gICAgKTtcbiAgICBzZWxlY3RlZEZlYXR1cmVJbmRleEFycmF5U2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgICh2YWx1ZTogbnVtYmVyKSA9PiB2YWx1ZSxcbiAgICAgIHZhbHVlID0+IHtcbiAgICAgICAgcmV0dXJuIHZhbHVlIDwgMCA/IFtdIDogW3ZhbHVlXTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgZ2VuZXJhdGVNYXBib3hMYXllck1ldGhvZFNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMuZ2VuZXJhdGVNYXBib3hMYXllcnMgPz8gZ2VuZXJhdGVNYXBib3hMYXllcnM7XG5cbiAgICBtYXBib3hMYXllcnNTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy5sYXllcnNTZWxlY3RvcixcbiAgICAgIHRoaXMubGF5ZXJEYXRhU2VsZWN0b3IsXG4gICAgICB0aGlzLmxheWVyT3JkZXJTZWxlY3RvcixcbiAgICAgIHRoaXMubGF5ZXJzVG9SZW5kZXJTZWxlY3RvcixcbiAgICAgIHRoaXMuZ2VuZXJhdGVNYXBib3hMYXllck1ldGhvZFNlbGVjdG9yLFxuICAgICAgKGxheWVyLCBsYXllckRhdGEsIGxheWVyT3JkZXIsIGxheWVyc1RvUmVuZGVyLCBnZW5lcmF0ZU1hcGJveExheWVyTWV0aG9kKSA9PlxuICAgICAgICBnZW5lcmF0ZU1hcGJveExheWVyTWV0aG9kKGxheWVyLCBsYXllckRhdGEsIGxheWVyT3JkZXIsIGxheWVyc1RvUmVuZGVyKVxuICAgICk7XG5cbiAgICAvLyBtZXJnZSBpbiBhIGJhY2tncm91bmQtY29sb3Igc3R5bGUgaWYgdGhlIGJhc2VtYXAgY2hvaWNlIGlzIE5PX01BUF9JRFxuICAgIC8vIHVzZWQgYnkgPFN0eWxlZE1hcD4gaW5saW5lIHN0eWxlIHByb3BcbiAgICBtYXBTdHlsZVR5cGVTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLm1hcFN0eWxlLnN0eWxlVHlwZTtcbiAgICBtYXBTdHlsZUJhY2tncm91bmRDb2xvclNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMubWFwU3R5bGUuYmFja2dyb3VuZENvbG9yO1xuICAgIHN0eWxlU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMubWFwU3R5bGVUeXBlU2VsZWN0b3IsXG4gICAgICB0aGlzLm1hcFN0eWxlQmFja2dyb3VuZENvbG9yU2VsZWN0b3IsXG4gICAgICAoc3R5bGVUeXBlLCBiYWNrZ3JvdW5kQ29sb3IpID0+ICh7XG4gICAgICAgIC4uLk1BUF9TVFlMRS5jb250YWluZXIsXG4gICAgICAgIC4uLihzdHlsZVR5cGUgPT09IE5PX01BUF9JRCA/IHtiYWNrZ3JvdW5kQ29sb3I6IHJnYlRvSGV4KGJhY2tncm91bmRDb2xvcil9IDoge30pXG4gICAgICB9KVxuICAgICk7XG5cbiAgICAvKiBjb21wb25lbnQgcHJpdmF0ZSBmdW5jdGlvbnMgKi9cbiAgICBfb25DbG9zZU1hcFBvcG92ZXIgPSAoKSA9PiB7XG4gICAgICB0aGlzLnByb3BzLnZpc1N0YXRlQWN0aW9ucy5vbkxheWVyQ2xpY2sobnVsbCk7XG4gICAgfTtcblxuICAgIF9vbkxheWVySG92ZXIgPSAoX2lkeDogbnVtYmVyLCBpbmZvOiBQaWNrSW5mbzxhbnk+IHwgbnVsbCkgPT4ge1xuICAgICAgdGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMub25MYXllckhvdmVyKGluZm8sIHRoaXMucHJvcHMuaW5kZXgpO1xuICAgIH07XG5cbiAgICBfb25MYXllclNldERvbWFpbiA9IChcbiAgICAgIGlkeDogbnVtYmVyLFxuICAgICAgdmFsdWU6IHtkb21haW46IFZpc3VhbENoYW5uZWxEb21haW47IGFnZ3JlZ2F0ZWRCaW5zOiBBZ2dyZWdhdGVkQmluW119XG4gICAgKSA9PiB7XG4gICAgICB0aGlzLnByb3BzLnZpc1N0YXRlQWN0aW9ucy5sYXllckNvbmZpZ0NoYW5nZSh0aGlzLnByb3BzLnZpc1N0YXRlLmxheWVyc1tpZHhdLCB7XG4gICAgICAgIGNvbG9yRG9tYWluOiB2YWx1ZS5kb21haW4sXG4gICAgICAgIGFnZ3JlZ2F0ZWRCaW5zOiB2YWx1ZS5hZ2dyZWdhdGVkQmluc1xuICAgICAgfSBhcyBQYXJ0aWFsPExheWVyQmFzZUNvbmZpZz4pO1xuICAgIH07XG5cbiAgICBfb25MYXllckZpbHRlcmVkSXRlbXNDaGFuZ2UgPSAoaWR4LCBldmVudCkgPT4ge1xuICAgICAgdGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMubGF5ZXJGaWx0ZXJlZEl0ZW1zQ2hhbmdlKHRoaXMucHJvcHMudmlzU3RhdGUubGF5ZXJzW2lkeF0sIGV2ZW50KTtcbiAgICB9O1xuXG4gICAgX2hhbmRsZU1hcFRvZ2dsZUxheWVyID0gbGF5ZXJJZCA9PiB7XG4gICAgICBjb25zdCB7aW5kZXg6IG1hcEluZGV4ID0gMCwgdmlzU3RhdGVBY3Rpb25zfSA9IHRoaXMucHJvcHM7XG4gICAgICB2aXNTdGF0ZUFjdGlvbnMudG9nZ2xlTGF5ZXJGb3JNYXAobWFwSW5kZXgsIGxheWVySWQpO1xuICAgIH07XG5cbiAgICBfb25NYXBib3hTdHlsZVVwZGF0ZSA9IHVwZGF0ZSA9PiB7XG4gICAgICAvLyBmb3JjZSByZWZyZXNoIG1hcGJveGdsIGxheWVyc1xuICAgICAgdGhpcy5wcmV2aW91c0xheWVycyA9IHt9O1xuICAgICAgdGhpcy5fdXBkYXRlTWFwYm94TGF5ZXJzKCk7XG5cbiAgICAgIGlmICh1cGRhdGUgJiYgdXBkYXRlLnN0eWxlKSB7XG4gICAgICAgIC8vIE5vIGF0dHJpYnV0aW9ucyBhcmUgbmVlZGVkIGlmIHRoZSBzdHlsZSBkb2Vzbid0IHJlZmVyZW5jZSBNYXBib3ggc291cmNlc1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBzaG93QmFzZU1hcEF0dHJpYnV0aW9uOlxuICAgICAgICAgICAgaXNTdHlsZVVzaW5nTWFwYm94VGlsZXModXBkYXRlLnN0eWxlKSB8fCAhaXNTdHlsZVVzaW5nT3BlblN0cmVldE1hcFRpbGVzKHVwZGF0ZS5zdHlsZSlcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5vbk1hcFN0eWxlTG9hZGVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25NYXBTdHlsZUxvYWRlZCh0aGlzLl9tYXApO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfc2V0TWFwUmVmID0gbWFwUmVmID0+IHtcbiAgICAgIC8vIEhhbmRsZSBjaGFuZ2Ugb2YgdGhlIG1hcCBsaWJyYXJ5XG4gICAgICBpZiAodGhpcy5fbWFwICYmIG1hcFJlZikge1xuICAgICAgICBjb25zdCBtYXAgPSBtYXBSZWYuZ2V0TWFwKCk7XG4gICAgICAgIGlmIChtYXAgJiYgdGhpcy5fbWFwICE9PSBtYXApIHtcbiAgICAgICAgICB0aGlzLl9tYXA/Lm9mZihNQVBCT1hHTF9TVFlMRV9VUERBVEUsIG5vcCk7XG4gICAgICAgICAgdGhpcy5fbWFwPy5vZmYoTUFQQk9YR0xfUkVOREVSLCBub3ApO1xuICAgICAgICAgIHRoaXMuX21hcCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLl9tYXAgJiYgbWFwUmVmKSB7XG4gICAgICAgIHRoaXMuX21hcCA9IG1hcFJlZi5nZXRNYXAoKTtcbiAgICAgICAgLy8gaSBub3RpY2VkIGluIGNlcnRhaW4gY29udGV4dCB3ZSBkb24ndCBhY2Nlc3MgdGhlIGFjdHVhbCBtYXAgZWxlbWVudFxuICAgICAgICBpZiAoIXRoaXMuX21hcCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBiaW5kIG1hcGJveGdsIGV2ZW50IGxpc3RlbmVyXG4gICAgICAgIHRoaXMuX21hcC5vbihNQVBCT1hHTF9TVFlMRV9VUERBVEUsIHRoaXMuX29uTWFwYm94U3R5bGVVcGRhdGUpO1xuXG4gICAgICAgIHRoaXMuX21hcC5vbihNQVBCT1hHTF9SRU5ERVIsICgpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25NYXBSZW5kZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25NYXBSZW5kZXIodGhpcy5fbWFwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wcm9wcy5nZXRNYXBib3hSZWYpIHtcbiAgICAgICAgLy8gVGhlIHBhcmVudCBjb21wb25lbnQgY2FuIGdhaW4gYWNjZXNzIHRvIG91ciBNYXBib3hHbE1hcCBieVxuICAgICAgICAvLyBwcm92aWRpbmcgdGhpcyBjYWxsYmFjay4gTm90ZSB0aGF0ICdtYXBib3gnIHdpbGwgYmUgbnVsbCB3aGVuIHRoZVxuICAgICAgICAvLyByZWYgaXMgdW5zZXQgKGUuZy4gd2hlbiBhIHNwbGl0IG1hcCBpcyBjbG9zZWQpLlxuICAgICAgICB0aGlzLnByb3BzLmdldE1hcGJveFJlZihtYXBSZWYsIHRoaXMucHJvcHMuaW5kZXgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfb25EZWNrSW5pdGlhbGl6ZWQoZ2wpIHtcbiAgICAgIGlmICh0aGlzLnByb3BzLm9uRGVja0luaXRpYWxpemVkKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25EZWNrSW5pdGlhbGl6ZWQodGhpcy5fZGVjaywgZ2wpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIDEpIEFsbG93IGVmZmVjdHMgb25seSBmb3IgdGhlIGZpcnN0IHZpZXcuXG4gICAgICogMikgUHJldmVudCBlZmZlY3Q6cHJlUmVuZGVyIGNhbGwgd2l0aG91dCB2YWxpZCBnZW5lcmF0ZWQgdmlld3BvcnRzLlxuICAgICAqIEBwYXJhbSB2aWV3SW5kZXggVmlldyBpbmRleC5cbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIHRydWUgaWYgZWZmZWN0cyBjYW4gYmUgdXNlZC5cbiAgICAgKi9cbiAgICBfaXNPS1RvUmVuZGVyRWZmZWN0cyh2aWV3SW5kZXg/OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiAhdmlld0luZGV4ICYmIEJvb2xlYW4odGhpcy5fZGVjaz8udmlld01hbmFnZXI/Ll92aWV3cG9ydHM/Lmxlbmd0aCk7XG4gICAgfVxuXG4gICAgX29uQmVmb3JlUmVuZGVyID0gKHtnbH0pID0+IHtcbiAgICAgIHNldExheWVyQmxlbmRpbmcoZ2wsIHRoaXMucHJvcHMudmlzU3RhdGUubGF5ZXJCbGVuZGluZyk7XG4gICAgfTtcblxuICAgIF9vbkRlY2tFcnJvciA9IChlcnJvciwgbGF5ZXIpID0+IHtcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yPy5tZXNzYWdlIHx8ICd1bmtub3duLWVycm9yJztcbiAgICAgIGNvbnN0IGxheWVyTWVzc2FnZSA9IGxheWVyPy5pZCA/IGAgaW4gJHtsYXllci5pZH0gbGF5ZXJgIDogJyc7XG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2VGdWxsID1cbiAgICAgICAgZXJyb3JNZXNzYWdlID09PSAnV2ViR0wgY29udGV4dCBpcyBsb3N0J1xuICAgICAgICAgID8gJ1lvdXIgR1BVIHdhcyBkaXNjb25uZWN0ZWQuIFRoaXMgY2FuIGhhcHBlbiBpZiB5b3VyIGNvbXB1dGVyIGdvZXMgdG8gc2xlZXAuIEl0IGNhbiBhbHNvIG9jY3VyIGZvciBvdGhlciByZWFzb25zLCBzdWNoIGFzIGlmIHlvdSBhcmUgcnVubmluZyB0b28gbWFueSBHUFUgYXBwbGljYXRpb25zLidcbiAgICAgICAgICA6IGBBbiBlcnJvciBpbiBkZWNrLmdsOiAke2Vycm9yTWVzc2FnZX0ke2xheWVyTWVzc2FnZX0uYDtcblxuICAgICAgLy8gVGhyb3R0bGUgZXJyb3Igbm90aWZpY2F0aW9ucywgYXMgUmVhY3QgZG9lc24ndCBsaWtlIHRvbyBtYW55IHN0YXRlIGNoYW5nZXMgZnJvbSBoZXJlLlxuICAgICAgY29uc3QgbGFzdFNob3duID0gdGhpcy5fZGVja0dMRXJyb3JzRWxhcHNlZFtlcnJvck1lc3NhZ2VGdWxsXTtcbiAgICAgIGlmICghbGFzdFNob3duIHx8IGxhc3RTaG93biA8IERhdGUubm93KCkgLSBUSFJPVFRMRV9OT1RJRklDQVRJT05fVElNRSkge1xuICAgICAgICB0aGlzLl9kZWNrR0xFcnJvcnNFbGFwc2VkW2Vycm9yTWVzc2FnZUZ1bGxdID0gRGF0ZS5ub3coKTtcblxuICAgICAgICAvLyBNYXJrIGxheWVyIGFzIGludmFsaWRcbiAgICAgICAgbGV0IGV4dHJhTGF5ZXJNZXNzYWdlID0gJyc7XG4gICAgICAgIGNvbnN0IHt2aXNTdGF0ZUFjdGlvbnN9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgaWYgKGxheWVyKSB7XG4gICAgICAgICAgbGV0IHRvcE1vc3RMYXllciA9IGxheWVyO1xuICAgICAgICAgIHdoaWxlICh0b3BNb3N0TGF5ZXIucGFyZW50KSB7XG4gICAgICAgICAgICB0b3BNb3N0TGF5ZXIgPSB0b3BNb3N0TGF5ZXIucGFyZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodG9wTW9zdExheWVyLnByb3BzPy5pZCkge1xuICAgICAgICAgICAgdmlzU3RhdGVBY3Rpb25zLmxheWVyU2V0SXNWYWxpZCh0b3BNb3N0TGF5ZXIsIGZhbHNlKTtcbiAgICAgICAgICAgIGV4dHJhTGF5ZXJNZXNzYWdlID0gJ1RoZSBsYXllciBoYXMgYmVlbiBkaXNhYmxlZCBhbmQgaGlnaGxpZ2h0ZWQuJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDcmVhdGUgbmV3IGVycm9yIG5vdGlmaWNhdGlvbiBvciB1cGRhdGUgZXhpc3Rpbmcgb25lIHdpdGggc2FtZSBpZC5cbiAgICAgICAgLy8gVXBkYXRlIGlzIHJlcXVpcmVkIHRvIHByZXNlcnZlIHRoZSBvcmRlciBvZiBub3RpZmljYXRpb25zIGFzIHRoZXkgcHJvYmFibHkgYXJlIGdvaW5nIHRvIFwianVtcFwiIGJhc2VkIG9uIG9yZGVyIG9mIGVycm9ycy5cbiAgICAgICAgY29uc3Qge3VpU3RhdGVBY3Rpb25zfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIHVpU3RhdGVBY3Rpb25zLmFkZE5vdGlmaWNhdGlvbihcbiAgICAgICAgICBlcnJvck5vdGlmaWNhdGlvbih7XG4gICAgICAgICAgICBtZXNzYWdlOiBgJHtlcnJvck1lc3NhZ2VGdWxsfSAke2V4dHJhTGF5ZXJNZXNzYWdlfWAsXG4gICAgICAgICAgICBpZDogZXJyb3JNZXNzYWdlRnVsbCAvLyB0cmVhdCB0aGUgZXJyb3IgbWVzc2FnZSBhcyBpZFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8qIGNvbXBvbmVudCByZW5kZXIgZnVuY3Rpb25zICovXG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG4gICAgX3JlbmRlck1hcFBvcG92ZXIoKSB7XG4gICAgICAvLyB0aGlzIGNoZWNrIGlzIGZvciBsaW1pdGluZyB0aGUgZGlzcGxheSBvZiB0aGUgYDxNYXBQb3BvdmVyPmAgdG8gdGhlIGA8TWFwQ29udGFpbmVyPmAgdGhlIHVzZXIgaXMgaW50ZXJhY3Rpbmcgd2l0aFxuICAgICAgLy8gdGhlIERlY2tHTCBvbkhvdmVyIGV2ZW50IGhhbmRsZXIgYWRkcyBhIGBtYXBJbmRleGAgcHJvcGVydHkgd2hpY2ggaXMgYXZhaWxhYmxlIGluIHRoZSBgaG92ZXJJbmZvYCBvYmplY3Qgb2YgYHZpc1N0YXRlYFxuICAgICAgaWYgKHRoaXMucHJvcHMuaW5kZXggIT09IHRoaXMucHJvcHMudmlzU3RhdGUuaG92ZXJJbmZvPy5tYXBJbmRleCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gVE9ETzogbW92ZSB0aGlzIGludG8gcmVkdWNlciBzbyBpdCBjYW4gYmUgdGVzdGVkXG4gICAgICBjb25zdCB7XG4gICAgICAgIG1hcFN0YXRlLFxuICAgICAgICB2aXNTdGF0ZToge1xuICAgICAgICAgIGhvdmVySW5mbyxcbiAgICAgICAgICBjbGlja2VkLFxuICAgICAgICAgIGRhdGFzZXRzLFxuICAgICAgICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgICAgICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICAgICAgICBsYXllcnMsXG4gICAgICAgICAgbW91c2VQb3M6IHttb3VzZVBvc2l0aW9uLCBjb29yZGluYXRlLCBwaW5uZWR9XG4gICAgICAgIH1cbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3QgbGF5ZXJzVG9SZW5kZXIgPSB0aGlzLmxheWVyc1RvUmVuZGVyU2VsZWN0b3IodGhpcy5wcm9wcyk7XG5cbiAgICAgIGlmICghbW91c2VQb3NpdGlvbiB8fCAhaW50ZXJhY3Rpb25Db25maWcudG9vbHRpcCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbGF5ZXJIb3ZlclByb3AgPSBnZXRMYXllckhvdmVyUHJvcCh7XG4gICAgICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICAgICAgaW50ZXJhY3Rpb25Db25maWcsXG4gICAgICAgIGhvdmVySW5mbyxcbiAgICAgICAgbGF5ZXJzLFxuICAgICAgICBsYXllcnNUb1JlbmRlcixcbiAgICAgICAgZGF0YXNldHNcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjb21wYXJlTW9kZSA9IGludGVyYWN0aW9uQ29uZmlnLnRvb2x0aXAuY29uZmlnXG4gICAgICAgID8gaW50ZXJhY3Rpb25Db25maWcudG9vbHRpcC5jb25maWcuY29tcGFyZU1vZGVcbiAgICAgICAgOiBmYWxzZTtcblxuICAgICAgbGV0IHBpbm5lZFBvc2l0aW9uID0ge3g6IDAsIHk6IDB9O1xuICAgICAgbGV0IGxheWVyUGlubmVkUHJvcDogTGF5ZXJIb3ZlclByb3AgfCBudWxsID0gbnVsbDtcbiAgICAgIGlmIChwaW5uZWQgfHwgY2xpY2tlZCkge1xuICAgICAgICAvLyBwcm9qZWN0IGxuZ2xhdCB0byBzY3JlZW4gc28gdGhhdCB0b29sdGlwIGZvbGxvd3MgdGhlIG9iamVjdCBvbiB6b29tXG4gICAgICAgIGNvbnN0IHZpZXdwb3J0ID0gZ2V0Vmlld3BvcnRGcm9tTWFwU3RhdGUobWFwU3RhdGUpO1xuICAgICAgICBjb25zdCBsbmdMYXQgPSBjbGlja2VkID8gY2xpY2tlZC5jb29yZGluYXRlIDogcGlubmVkLmNvb3JkaW5hdGU7XG4gICAgICAgIHBpbm5lZFBvc2l0aW9uID0gdGhpcy5fZ2V0SG92ZXJYWSh2aWV3cG9ydCwgbG5nTGF0KTtcbiAgICAgICAgbGF5ZXJQaW5uZWRQcm9wID0gZ2V0TGF5ZXJIb3ZlclByb3Aoe1xuICAgICAgICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICAgICAgICBpbnRlcmFjdGlvbkNvbmZpZyxcbiAgICAgICAgICBob3ZlckluZm86IGNsaWNrZWQsXG4gICAgICAgICAgbGF5ZXJzLFxuICAgICAgICAgIGxheWVyc1RvUmVuZGVyLFxuICAgICAgICAgIGRhdGFzZXRzXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAobGF5ZXJIb3ZlclByb3AgJiYgbGF5ZXJQaW5uZWRQcm9wKSB7XG4gICAgICAgICAgbGF5ZXJIb3ZlclByb3AucHJpbWFyeURhdGEgPSBsYXllclBpbm5lZFByb3AuZGF0YTtcbiAgICAgICAgICBsYXllckhvdmVyUHJvcC5jb21wYXJlVHlwZSA9IGludGVyYWN0aW9uQ29uZmlnLnRvb2x0aXAuY29uZmlnLmNvbXBhcmVUeXBlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbW1vblByb3AgPSB7XG4gICAgICAgIG9uQ2xvc2U6IHRoaXMuX29uQ2xvc2VNYXBQb3BvdmVyLFxuICAgICAgICB6b29tOiBtYXBTdGF0ZS56b29tLFxuICAgICAgICBjb250YWluZXI6IHRoaXMuX2RlY2sgPyB0aGlzLl9kZWNrLmNhbnZhcyA6IHVuZGVmaW5lZFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEVycm9yQm91bmRhcnk+XG4gICAgICAgICAge2xheWVyUGlubmVkUHJvcCAmJiAoXG4gICAgICAgICAgICA8TWFwUG9wb3ZlclxuICAgICAgICAgICAgICB7Li4ucGlubmVkUG9zaXRpb259XG4gICAgICAgICAgICAgIHsuLi5jb21tb25Qcm9wfVxuICAgICAgICAgICAgICBsYXllckhvdmVyUHJvcD17bGF5ZXJQaW5uZWRQcm9wfVxuICAgICAgICAgICAgICBjb29yZGluYXRlPXtpbnRlcmFjdGlvbkNvbmZpZy5jb29yZGluYXRlLmVuYWJsZWQgJiYgKHBpbm5lZCB8fCB7fSkuY29vcmRpbmF0ZX1cbiAgICAgICAgICAgICAgZnJvemVuPXt0cnVlfVxuICAgICAgICAgICAgICBpc0Jhc2U9e2NvbXBhcmVNb2RlfVxuICAgICAgICAgICAgICBvblNldEZlYXR1cmVzPXt0aGlzLnByb3BzLnZpc1N0YXRlQWN0aW9ucy5zZXRGZWF0dXJlc31cbiAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRGZWF0dXJlPXt0aGlzLnByb3BzLnZpc1N0YXRlQWN0aW9ucy5zZXRTZWxlY3RlZEZlYXR1cmV9XG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgQXJndW1lbnQgb2YgdHlwZSAnUmVhZG9ubHk8TWFwQ29udGFpbmVyUHJvcHM+JyBpcyBub3QgYXNzaWduYWJsZSB0byBwYXJhbWV0ZXIgb2YgdHlwZSAnbmV2ZXInXG4gICAgICAgICAgICAgIGZlYXR1cmVDb2xsZWN0aW9uPXt0aGlzLmZlYXR1cmVDb2xsZWN0aW9uU2VsZWN0b3IodGhpcy5wcm9wcyl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2xheWVySG92ZXJQcm9wICYmICghbGF5ZXJQaW5uZWRQcm9wIHx8IGNvbXBhcmVNb2RlKSAmJiAoXG4gICAgICAgICAgICA8TWFwUG9wb3ZlclxuICAgICAgICAgICAgICB4PXttb3VzZVBvc2l0aW9uWzBdfVxuICAgICAgICAgICAgICB5PXttb3VzZVBvc2l0aW9uWzFdfVxuICAgICAgICAgICAgICB7Li4uY29tbW9uUHJvcH1cbiAgICAgICAgICAgICAgbGF5ZXJIb3ZlclByb3A9e2xheWVySG92ZXJQcm9wfVxuICAgICAgICAgICAgICBmcm96ZW49e2ZhbHNlfVxuICAgICAgICAgICAgICBjb29yZGluYXRlPXtpbnRlcmFjdGlvbkNvbmZpZy5jb29yZGluYXRlLmVuYWJsZWQgJiYgY29vcmRpbmF0ZX1cbiAgICAgICAgICAgICAgb25TZXRGZWF0dXJlcz17dGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMuc2V0RmVhdHVyZXN9XG4gICAgICAgICAgICAgIHNldFNlbGVjdGVkRmVhdHVyZT17dGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMuc2V0U2VsZWN0ZWRGZWF0dXJlfVxuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIEFyZ3VtZW50IG9mIHR5cGUgJ1JlYWRvbmx5PE1hcENvbnRhaW5lclByb3BzPicgaXMgbm90IGFzc2lnbmFibGUgdG8gcGFyYW1ldGVyIG9mIHR5cGUgJ25ldmVyJ1xuICAgICAgICAgICAgICBmZWF0dXJlQ29sbGVjdGlvbj17dGhpcy5mZWF0dXJlQ29sbGVjdGlvblNlbGVjdG9yKHRoaXMucHJvcHMpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L0Vycm9yQm91bmRhcnk+XG4gICAgICApO1xuICAgIH1cblxuICAgIC8qIGVzbGludC1lbmFibGUgY29tcGxleGl0eSAqL1xuXG4gICAgX2dldEhvdmVyWFkodmlld3BvcnQsIGxuZ0xhdCkge1xuICAgICAgY29uc3Qgc2NyZWVuQ29vcmQgPSAhdmlld3BvcnQgfHwgIWxuZ0xhdCA/IG51bGwgOiB2aWV3cG9ydC5wcm9qZWN0KGxuZ0xhdCk7XG4gICAgICByZXR1cm4gc2NyZWVuQ29vcmQgJiYge3g6IHNjcmVlbkNvb3JkWzBdLCB5OiBzY3JlZW5Db29yZFsxXX07XG4gICAgfVxuXG4gICAgX3JlbmRlckRlY2tPdmVybGF5KFxuICAgICAgbGF5ZXJzRm9yRGVjayxcbiAgICAgIG9wdGlvbnM6IHtwcmltYXJ5TWFwOiBib29sZWFuOyBpc0ludGVyYWN0aXZlPzogYm9vbGVhbjsgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGV9ID0ge1xuICAgICAgICBwcmltYXJ5TWFwOiBmYWxzZVxuICAgICAgfVxuICAgICkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYXBTdHlsZSxcbiAgICAgICAgdmlzU3RhdGUsXG4gICAgICAgIG1hcFN0YXRlLFxuICAgICAgICB2aXNTdGF0ZUFjdGlvbnMsXG4gICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgIGRlY2tHbFByb3BzLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgbWFwQ29udHJvbHMsXG4gICAgICAgIGRlY2tSZW5kZXJDYWxsYmFja3MsXG4gICAgICAgIHRoZW1lLFxuICAgICAgICBnZW5lcmF0ZURlY2tHTExheWVycyxcbiAgICAgICAgb25Nb3VzZU1vdmVcbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICBjb25zdCB7aG92ZXJJbmZvLCBlZGl0b3J9ID0gdmlzU3RhdGU7XG4gICAgICBjb25zdCB7cHJpbWFyeU1hcCwgaXNJbnRlcmFjdGl2ZSwgY2hpbGRyZW59ID0gb3B0aW9ucztcblxuICAgICAgLy8gZGlzYWJsZSBkb3VibGUgY2xpY2sgem9vbSB3aGVuIGVkaXRvciBpcyBpbiBhbnkgZHJhdyBtb2RlXG4gICAgICBjb25zdCB7bWFwRHJhd30gPSBtYXBDb250cm9scztcbiAgICAgIGNvbnN0IHthY3RpdmU6IGVkaXRvck1lbnVBY3RpdmUgPSBmYWxzZX0gPSBtYXBEcmF3IHx8IHt9O1xuICAgICAgY29uc3QgaXNFZGl0b3JEcmF3aW5nTW9kZSA9IEVkaXRvckxheWVyVXRpbHMuaXNEcmF3aW5nQWN0aXZlKGVkaXRvck1lbnVBY3RpdmUsIGVkaXRvci5tb2RlKTtcblxuICAgICAgY29uc3QgaW50ZXJuYWxWaWV3U3RhdGUgPSB0aGlzLmNvbnRleHQ/LmdldEludGVybmFsVmlld1N0YXRlKGluZGV4KTtcbiAgICAgIGNvbnN0IGludGVybmFsTWFwU3RhdGUgPSB7Li4ubWFwU3RhdGUsIC4uLmludGVybmFsVmlld1N0YXRlfTtcbiAgICAgIGNvbnN0IHZpZXdwb3J0ID0gZ2V0Vmlld3BvcnRGcm9tTWFwU3RhdGUoaW50ZXJuYWxNYXBTdGF0ZSk7XG5cbiAgICAgIGNvbnN0IGVkaXRvckZlYXR1cmVTZWxlY3RlZEluZGV4ID0gdGhpcy5zZWxlY3RlZFBvbHlnb25JbmRleFNlbGVjdG9yKHRoaXMucHJvcHMpO1xuXG4gICAgICBjb25zdCB7c2V0RmVhdHVyZXMsIG9uTGF5ZXJDbGljaywgc2V0U2VsZWN0ZWRGZWF0dXJlfSA9IHZpc1N0YXRlQWN0aW9ucztcblxuICAgICAgY29uc3QgZ2VuZXJhdGVEZWNrR0xMYXllcnNNZXRob2QgPSBnZW5lcmF0ZURlY2tHTExheWVycyA/PyBjb21wdXRlRGVja0xheWVycztcbiAgICAgIGNvbnN0IGRlY2tHbExheWVycyA9IGdlbmVyYXRlRGVja0dMTGF5ZXJzTWV0aG9kKFxuICAgICAgICB7XG4gICAgICAgICAgdmlzU3RhdGUsXG4gICAgICAgICAgbWFwU3RhdGU6IGludGVybmFsTWFwU3RhdGUsXG4gICAgICAgICAgbWFwU3R5bGVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG1hcEluZGV4OiBpbmRleCxcbiAgICAgICAgICBwcmltYXJ5TWFwLFxuICAgICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICAgIG1hcGJveEFwaVVybCxcbiAgICAgICAgICBsYXllcnNGb3JEZWNrLFxuICAgICAgICAgIGVkaXRvckluZm86IHByaW1hcnlNYXBcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgICAgICBlZGl0b3JNZW51QWN0aXZlLFxuICAgICAgICAgICAgICAgIG9uU2V0RmVhdHVyZXM6IHNldEZlYXR1cmVzLFxuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkRmVhdHVyZSxcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIEFyZ3VtZW50IG9mIHR5cGUgJ1JlYWRvbmx5PE1hcENvbnRhaW5lclByb3BzPicgaXMgbm90IGFzc2lnbmFibGUgdG8gcGFyYW1ldGVyIG9mIHR5cGUgJ25ldmVyJ1xuICAgICAgICAgICAgICAgIGZlYXR1cmVDb2xsZWN0aW9uOiB0aGlzLmZlYXR1cmVDb2xsZWN0aW9uU2VsZWN0b3IodGhpcy5wcm9wcyksXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRGZWF0dXJlSW5kZXhlczogdGhpcy5zZWxlY3RlZEZlYXR1cmVJbmRleEFycmF5U2VsZWN0b3IoXG4gICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIEFyZ3VtZW50IG9mIHR5cGUgJ3Vua25vd24nIGlzIG5vdCBhc3NpZ25hYmxlIHRvIHBhcmFtZXRlciBvZiB0eXBlICdudW1iZXInLlxuICAgICAgICAgICAgICAgICAgZWRpdG9yRmVhdHVyZVNlbGVjdGVkSW5kZXhcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHZpZXdwb3J0XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBvbkxheWVySG92ZXI6IHRoaXMuX29uTGF5ZXJIb3ZlcixcbiAgICAgICAgICBvblNldExheWVyRG9tYWluOiB0aGlzLl9vbkxheWVyU2V0RG9tYWluLFxuICAgICAgICAgIG9uRmlsdGVyZWRJdGVtc0NoYW5nZTogdGhpcy5fb25MYXllckZpbHRlcmVkSXRlbXNDaGFuZ2VcbiAgICAgICAgfSxcbiAgICAgICAgZGVja0dsUHJvcHNcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGV4dHJhRGVja1BhcmFtczoge1xuICAgICAgICBnZXRUb29sdGlwPzogKGluZm86IGFueSkgPT4gb2JqZWN0IHwgbnVsbDtcbiAgICAgICAgZ2V0Q3Vyc29yPzogKHtpc0RyYWdnaW5nfToge2lzRHJhZ2dpbmc6IGJvb2xlYW59KSA9PiBzdHJpbmc7XG4gICAgICB9ID0ge307XG4gICAgICBpZiAocHJpbWFyeU1hcCkge1xuICAgICAgICBleHRyYURlY2tQYXJhbXMuZ2V0VG9vbHRpcCA9IGluZm8gPT5cbiAgICAgICAgICBFZGl0b3JMYXllclV0aWxzLmdldFRvb2x0aXAoaW5mbywge1xuICAgICAgICAgICAgZWRpdG9yTWVudUFjdGl2ZSxcbiAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgIHRoZW1lXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgZXh0cmFEZWNrUGFyYW1zLmdldEN1cnNvciA9ICh7aXNEcmFnZ2luZ306IHtpc0RyYWdnaW5nOiBib29sZWFufSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGVkaXRvckN1cnNvciA9IEVkaXRvckxheWVyVXRpbHMuZ2V0Q3Vyc29yKHtcbiAgICAgICAgICAgIGVkaXRvck1lbnVBY3RpdmUsXG4gICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICBob3ZlckluZm9cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoZWRpdG9yQ3Vyc29yKSByZXR1cm4gZWRpdG9yQ3Vyc29yO1xuXG4gICAgICAgICAgaWYgKGlzRHJhZ2dpbmcpIHJldHVybiAnZ3JhYmJpbmcnO1xuICAgICAgICAgIGlmIChob3ZlckluZm8/LmxheWVyKSByZXR1cm4gJ3BvaW50ZXInO1xuICAgICAgICAgIHJldHVybiAnZ3JhYic7XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVmZmVjdHMgPSB0aGlzLl9pc09LVG9SZW5kZXJFZmZlY3RzKGluZGV4KVxuICAgICAgICA/IGNvbXB1dGVEZWNrRWZmZWN0cyh7dmlzU3RhdGUsIG1hcFN0YXRlfSlcbiAgICAgICAgOiBbXTtcblxuICAgICAgY29uc3Qgdmlld3MgPSBkZWNrR2xQcm9wcz8udmlld3NcbiAgICAgICAgPyBkZWNrR2xQcm9wcz8udmlld3MoKVxuICAgICAgICA6IG5ldyBNYXBWaWV3KHtsZWdhY3lNZXRlclNpemVzOiB0cnVlfSk7XG5cbiAgICAgIGxldCBhbGxEZWNrR2xQcm9wcyA9IHtcbiAgICAgICAgLi4uZGVja0dsUHJvcHMsXG4gICAgICAgIHBpY2tpbmdSYWRpdXM6IERFRkFVTFRfUElDS0lOR19SQURJVVMsXG4gICAgICAgIHZpZXdzLFxuICAgICAgICBsYXllcnM6IGRlY2tHbExheWVycyxcbiAgICAgICAgZWZmZWN0c1xuICAgICAgfTtcblxuICAgICAgaWYgKHR5cGVvZiBkZWNrUmVuZGVyQ2FsbGJhY2tzPy5vbkRlY2tSZW5kZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgYWxsRGVja0dsUHJvcHMgPSBkZWNrUmVuZGVyQ2FsbGJhY2tzLm9uRGVja1JlbmRlcihhbGxEZWNrR2xQcm9wcyk7XG4gICAgICAgIGlmICghYWxsRGVja0dsUHJvcHMpIHtcbiAgICAgICAgICAvLyBpZiBvbkRlY2tSZW5kZXIgcmV0dXJucyBudWxsLCBkbyBub3QgcmVuZGVyIGRlY2suZ2xcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2XG4gICAgICAgICAgey4uLihpc0ludGVyYWN0aXZlXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBvbk1vdXNlTW92ZTogcHJpbWFyeU1hcFxuICAgICAgICAgICAgICAgICAgPyBldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZU1vdmU/LihldmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb25Nb3VzZU1vdmVEZWJvdW5jZWQoZXZlbnQsIHZpZXdwb3J0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB7c3R5bGU6IHtwb2ludGVyRXZlbnRzOiAnbm9uZSd9fSl9XG4gICAgICAgID5cbiAgICAgICAgICA8RGVja0dMXG4gICAgICAgICAgICBpZD1cImRlZmF1bHQtZGVja2dsLW92ZXJsYXlcIlxuICAgICAgICAgICAgb25Mb2FkPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgZGVja1JlbmRlckNhbGxiYWNrcz8ub25EZWNrTG9hZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGRlY2tSZW5kZXJDYWxsYmFja3Mub25EZWNrTG9hZCgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgey4uLmFsbERlY2tHbFByb3BzfVxuICAgICAgICAgICAgY29udHJvbGxlcj17XG4gICAgICAgICAgICAgIGlzSW50ZXJhY3RpdmVcbiAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgZG91YmxlQ2xpY2tab29tOiAhaXNFZGl0b3JEcmF3aW5nTW9kZSxcbiAgICAgICAgICAgICAgICAgICAgZHJhZ1JvdGF0ZTogdGhpcy5wcm9wcy5tYXBTdGF0ZS5kcmFnUm90YXRlXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5pdGlhbFZpZXdTdGF0ZT17aW50ZXJuYWxWaWV3U3RhdGV9XG4gICAgICAgICAgICBvbkJlZm9yZVJlbmRlcj17dGhpcy5fb25CZWZvcmVSZW5kZXJ9XG4gICAgICAgICAgICBvblZpZXdTdGF0ZUNoYW5nZT17aXNJbnRlcmFjdGl2ZSA/IHRoaXMuX29uVmlld3BvcnRDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICB7Li4uZXh0cmFEZWNrUGFyYW1zfVxuICAgICAgICAgICAgb25Ib3Zlcj17XG4gICAgICAgICAgICAgIGlzSW50ZXJhY3RpdmVcbiAgICAgICAgICAgICAgICA/IGRhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBFZGl0b3JMYXllclV0aWxzLm9uSG92ZXIoZGF0YSwge1xuICAgICAgICAgICAgICAgICAgICAgIGVkaXRvck1lbnVBY3RpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgICAgICAgIGhvdmVySW5mb1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcykgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29uTGF5ZXJIb3ZlckRlYm91bmNlZChkYXRhLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbkNsaWNrPXsoZGF0YSwgZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBub3JtYWxpemVFdmVudChldmVudC5zcmNFdmVudCwgdmlld3BvcnQpO1xuICAgICAgICAgICAgICBjb25zdCByZXMgPSBFZGl0b3JMYXllclV0aWxzLm9uQ2xpY2soZGF0YSwgZXZlbnQsIHtcbiAgICAgICAgICAgICAgICBlZGl0b3JNZW51QWN0aXZlLFxuICAgICAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgICAgICBvbkxheWVyQ2xpY2ssXG4gICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRGZWF0dXJlLFxuICAgICAgICAgICAgICAgIG1hcEluZGV4OiBpbmRleFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgaWYgKHJlcykgcmV0dXJuO1xuXG4gICAgICAgICAgICAgIHZpc1N0YXRlQWN0aW9ucy5vbkxheWVyQ2xpY2soZGF0YSk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25FcnJvcj17dGhpcy5fb25EZWNrRXJyb3J9XG4gICAgICAgICAgICByZWY9e2NvbXAgPT4ge1xuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIGlmIChjb21wICYmIGNvbXAuZGVjayAmJiAhdGhpcy5fZGVjaykge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWNrID0gY29tcC5kZWNrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25XZWJHTEluaXRpYWxpemVkPXtnbCA9PiB0aGlzLl9vbkRlY2tJbml0aWFsaXplZChnbCl9XG4gICAgICAgICAgICBvbkFmdGVyUmVuZGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgZGVja1JlbmRlckNhbGxiYWNrcz8ub25EZWNrQWZ0ZXJSZW5kZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBkZWNrUmVuZGVyQ2FsbGJhY2tzLm9uRGVja0FmdGVyUmVuZGVyKGFsbERlY2tHbFByb3BzKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgPC9EZWNrR0w+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBfdXBkYXRlTWFwYm94TGF5ZXJzKCkge1xuICAgICAgY29uc3QgbWFwYm94TGF5ZXJzID0gdGhpcy5tYXBib3hMYXllcnNTZWxlY3Rvcih0aGlzLnByb3BzKTtcbiAgICAgIGlmICghT2JqZWN0LmtleXMobWFwYm94TGF5ZXJzKS5sZW5ndGggJiYgIU9iamVjdC5rZXlzKHRoaXMucHJldmlvdXNMYXllcnMpLmxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZU1hcGJveExheWVycyh0aGlzLl9tYXAsIG1hcGJveExheWVycywgdGhpcy5wcmV2aW91c0xheWVycyk7XG5cbiAgICAgIHRoaXMucHJldmlvdXNMYXllcnMgPSBtYXBib3hMYXllcnM7XG4gICAgfVxuXG4gICAgX3JlbmRlck1hcGJveE92ZXJsYXlzKCkge1xuICAgICAgaWYgKHRoaXMuX21hcCAmJiB0aGlzLl9tYXAuaXNTdHlsZUxvYWRlZCgpKSB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZU1hcGJveExheWVycygpO1xuICAgICAgfVxuICAgIH1cbiAgICBfb25WaWV3cG9ydENoYW5nZVByb3BhZ2F0ZURlYm91bmNlZCA9IGRlYm91bmNlKCgpID0+IHtcbiAgICAgIGNvbnN0IHZpZXdTdGF0ZSA9IHRoaXMuY29udGV4dD8uZ2V0SW50ZXJuYWxWaWV3U3RhdGUodGhpcy5wcm9wcy5pbmRleCk7XG4gICAgICBvblZpZXdQb3J0Q2hhbmdlKFxuICAgICAgICB2aWV3U3RhdGUsXG4gICAgICAgIHRoaXMucHJvcHMubWFwU3RhdGVBY3Rpb25zLnVwZGF0ZU1hcCxcbiAgICAgICAgdGhpcy5wcm9wcy5vblZpZXdTdGF0ZUNoYW5nZSxcbiAgICAgICAgdGhpcy5wcm9wcy5wcmltYXJ5LFxuICAgICAgICB0aGlzLnByb3BzLmluZGV4XG4gICAgICApO1xuICAgIH0sIERFQk9VTkNFX1ZJRVdQT1JUX1BST1BBR0FURSk7XG5cbiAgICBfb25WaWV3cG9ydENoYW5nZSA9IHZpZXdwb3J0ID0+IHtcbiAgICAgIGNvbnN0IHt2aWV3U3RhdGV9ID0gdmlld3BvcnQ7XG4gICAgICBpZiAodGhpcy5wcm9wcy5pc0V4cG9ydCkge1xuICAgICAgICAvLyBJbWFnZSBleHBvcnQgbWFwIHNob3VsZG4ndCBiZSBpbnRlcmFjdGl2ZSAob3RoZXJ3aXNlIHRoaXMgY2FsbGJhY2sgY2FuXG4gICAgICAgIC8vIGxlYWQgdG8gaW5hZHZlcnRlbnQgY2hhbmdlcyB0byB0aGUgc3RhdGUgb2YgdGhlIG1haW4gbWFwKVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCB7c2V0SW50ZXJuYWxWaWV3U3RhdGV9ID0gdGhpcy5jb250ZXh0O1xuICAgICAgc2V0SW50ZXJuYWxWaWV3U3RhdGUodmlld1N0YXRlLCB0aGlzLnByb3BzLmluZGV4KTtcbiAgICAgIHRoaXMuX29uVmlld3BvcnRDaGFuZ2VQcm9wYWdhdGVEZWJvdW5jZWQoKTtcbiAgICB9O1xuXG4gICAgX29uTGF5ZXJIb3ZlckRlYm91bmNlZCA9IGRlYm91bmNlKChkYXRhLCBpbmRleCkgPT4ge1xuICAgICAgdGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMub25MYXllckhvdmVyKGRhdGEsIGluZGV4KTtcbiAgICB9LCBERUJPVU5DRV9NT1VTRV9NT1ZFX1BST1BBR0FURSk7XG5cbiAgICBfb25Nb3VzZU1vdmVEZWJvdW5jZWQgPSBkZWJvdW5jZSgoZXZlbnQsIHZpZXdwb3J0KSA9PiB7XG4gICAgICB0aGlzLnByb3BzLnZpc1N0YXRlQWN0aW9ucy5vbk1vdXNlTW92ZShub3JtYWxpemVFdmVudChldmVudCwgdmlld3BvcnQpKTtcbiAgICB9LCBERUJPVU5DRV9NT1VTRV9NT1ZFX1BST1BBR0FURSk7XG5cbiAgICBfdG9nZ2xlTWFwQ29udHJvbCA9IHBhbmVsSWQgPT4ge1xuICAgICAgY29uc3Qge2luZGV4LCB1aVN0YXRlQWN0aW9uc30gPSB0aGlzLnByb3BzO1xuXG4gICAgICB1aVN0YXRlQWN0aW9ucy50b2dnbGVNYXBDb250cm9sKHBhbmVsSWQsIE51bWJlcihpbmRleCkpO1xuICAgIH07XG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG4gICAgX3JlbmRlck1hcCgpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgdmlzU3RhdGUsXG4gICAgICAgIG1hcFN0YXRlLFxuICAgICAgICBtYXBTdHlsZSxcbiAgICAgICAgbWFwU3RhdGVBY3Rpb25zLFxuICAgICAgICBNYXBDb21wb25lbnQgPSBNYXAsXG4gICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICAvLyBtYXBib3hBcGlVcmwsXG4gICAgICAgIG1hcENvbnRyb2xzLFxuICAgICAgICBpc0V4cG9ydCxcbiAgICAgICAgbG9jYWxlLFxuICAgICAgICB1aVN0YXRlQWN0aW9ucyxcbiAgICAgICAgdmlzU3RhdGVBY3Rpb25zLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgcHJpbWFyeSxcbiAgICAgICAgYm90dG9tTWFwQ29udGFpbmVyUHJvcHMsXG4gICAgICAgIHRvcE1hcENvbnRhaW5lclByb3BzLFxuICAgICAgICB0aGVtZSxcbiAgICAgICAgZGF0YXNldEF0dHJpYnV0aW9ucyA9IFtdLFxuICAgICAgICBjb250YWluZXJJZCA9IDAsXG4gICAgICAgIGlzTG9hZGluZ0luZGljYXRvclZpc2libGUsXG4gICAgICAgIGFjdGl2ZVNpZGVQYW5lbCxcbiAgICAgICAgc2lkZVBhbmVsV2lkdGhcbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICBjb25zdCB7bGF5ZXJzLCBkYXRhc2V0cywgZWRpdG9yLCBpbnRlcmFjdGlvbkNvbmZpZ30gPSB2aXNTdGF0ZTtcblxuICAgICAgY29uc3QgbGF5ZXJzVG9SZW5kZXIgPSB0aGlzLmxheWVyc1RvUmVuZGVyU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBsYXllcnNGb3JEZWNrID0gdGhpcy5sYXllcnNGb3JEZWNrU2VsZWN0b3IodGhpcy5wcm9wcyk7XG5cbiAgICAgIC8vIEN1cnJlbnQgc3R5bGUgY2FuIGJlIGEgY3VzdG9tIHN0eWxlLCBmcm9tIHdoaWNoIHdlIHB1bGwgdGhlIG1hcGJveCBBUEkgYWNjY2VzcyB0b2tlblxuICAgICAgY29uc3QgY3VycmVudFN0eWxlID0gbWFwU3R5bGUubWFwU3R5bGVzPy5bbWFwU3R5bGUuc3R5bGVUeXBlXTtcbiAgICAgIGNvbnN0IGJhc2VNYXBMaWJyYXJ5TmFtZSA9IGdldEJhc2VNYXBMaWJyYXJ5KGN1cnJlbnRTdHlsZSk7XG4gICAgICBjb25zdCBiYXNlTWFwTGlicmFyeUNvbmZpZyA9XG4gICAgICAgIGdldEFwcGxpY2F0aW9uQ29uZmlnKCkuYmFzZU1hcExpYnJhcnlDb25maWc/LltiYXNlTWFwTGlicmFyeU5hbWVdO1xuXG4gICAgICBjb25zdCBpbnRlcm5hbFZpZXdTdGF0ZSA9IHRoaXMuY29udGV4dD8uZ2V0SW50ZXJuYWxWaWV3U3RhdGUoaW5kZXgpO1xuICAgICAgY29uc3QgbWFwUHJvcHMgPSB7XG4gICAgICAgIC4uLmludGVybmFsVmlld1N0YXRlLFxuICAgICAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWUsXG4gICAgICAgIG1hcGJveEFjY2Vzc1Rva2VuOiBjdXJyZW50U3R5bGU/LmFjY2Vzc1Rva2VuIHx8IG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICAvLyBiYXNlQXBpVXJsOiBtYXBib3hBcGlVcmwsXG4gICAgICAgIG1hcExpYjogYmFzZU1hcExpYnJhcnlDb25maWcuZ2V0TWFwTGliKCksXG4gICAgICAgIHRyYW5zZm9ybVJlcXVlc3Q6XG4gICAgICAgICAgdGhpcy5wcm9wcy50cmFuc2Zvcm1SZXF1ZXN0IHx8XG4gICAgICAgICAgdHJhbnNmb3JtUmVxdWVzdChjdXJyZW50U3R5bGU/LmFjY2Vzc1Rva2VuIHx8IG1hcGJveEFwaUFjY2Vzc1Rva2VuKVxuICAgICAgfTtcblxuICAgICAgY29uc3QgaGFzR2VvY29kZXJMYXllciA9IEJvb2xlYW4obGF5ZXJzLmZpbmQobCA9PiBsLmlkID09PSBHRU9DT0RFUl9MQVlFUl9JRCkpO1xuICAgICAgY29uc3QgaXNTcGxpdCA9IEJvb2xlYW4obWFwU3RhdGUuaXNTcGxpdCk7XG5cbiAgICAgIGNvbnN0IGRlY2sgPSB0aGlzLl9yZW5kZXJEZWNrT3ZlcmxheShsYXllcnNGb3JEZWNrLCB7XG4gICAgICAgIHByaW1hcnlNYXA6IHRydWUsXG4gICAgICAgIGlzSW50ZXJhY3RpdmU6IHRydWUsXG4gICAgICAgIGNoaWxkcmVuOiAoXG4gICAgICAgICAgPE1hcENvbXBvbmVudFxuICAgICAgICAgICAga2V5PXtgYm90dG9tLSR7YmFzZU1hcExpYnJhcnlOYW1lfWB9XG4gICAgICAgICAgICB7Li4ubWFwUHJvcHN9XG4gICAgICAgICAgICBtYXBTdHlsZT17bWFwU3R5bGUuYm90dG9tTWFwU3R5bGUgPz8gRU1QVFlfTUFQQk9YX1NUWUxFfVxuICAgICAgICAgICAgey4uLmJvdHRvbU1hcENvbnRhaW5lclByb3BzfVxuICAgICAgICAgICAgcmVmPXt0aGlzLl9zZXRNYXBSZWZ9XG4gICAgICAgICAgLz5cbiAgICAgICAgKVxuICAgICAgfSk7XG4gICAgICBpZiAoIWRlY2spIHtcbiAgICAgICAgLy8gZGVja092ZXJsYXkgY2FuIGJlIG51bGwgaWYgb25EZWNrUmVuZGVyIHJldHVybnMgbnVsbFxuICAgICAgICAvLyBpbiB0aGlzIGNhc2Ugd2UgZG9uJ3Qgd2FudCB0byByZW5kZXIgdGhlIG1hcFxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPE1hcENvbnRyb2xcbiAgICAgICAgICAgIG1hcFN0YXRlPXttYXBTdGF0ZX1cbiAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgIGF2YWlsYWJsZUxvY2FsZXM9e0xPQ0FMRV9DT0RFU19BUlJBWX1cbiAgICAgICAgICAgIGRyYWdSb3RhdGU9e21hcFN0YXRlLmRyYWdSb3RhdGV9XG4gICAgICAgICAgICBpc1NwbGl0PXtpc1NwbGl0fVxuICAgICAgICAgICAgcHJpbWFyeT17Qm9vbGVhbihwcmltYXJ5KX1cbiAgICAgICAgICAgIGlzRXhwb3J0PXtpc0V4cG9ydH1cbiAgICAgICAgICAgIGxheWVycz17bGF5ZXJzfVxuICAgICAgICAgICAgbGF5ZXJzVG9SZW5kZXI9e2xheWVyc1RvUmVuZGVyfVxuICAgICAgICAgICAgbWFwSW5kZXg9e2luZGV4IHx8IDB9XG4gICAgICAgICAgICBtYXBDb250cm9scz17bWFwQ29udHJvbHN9XG4gICAgICAgICAgICByZWFkT25seT17dGhpcy5wcm9wcy5yZWFkT25seX1cbiAgICAgICAgICAgIHNjYWxlPXttYXBTdGF0ZS5zY2FsZSB8fCAxfVxuICAgICAgICAgICAgdG9wPXtcbiAgICAgICAgICAgICAgaW50ZXJhY3Rpb25Db25maWcuZ2VvY29kZXIgJiYgaW50ZXJhY3Rpb25Db25maWcuZ2VvY29kZXIuZW5hYmxlZFxuICAgICAgICAgICAgICAgID8gdGhlbWUubWFwQ29udHJvbFRvcFxuICAgICAgICAgICAgICAgIDogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAgICBsb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgICAgIG9uVG9nZ2xlUGVyc3BlY3RpdmU9e21hcFN0YXRlQWN0aW9ucy50b2dnbGVQZXJzcGVjdGl2ZX1cbiAgICAgICAgICAgIG9uVG9nZ2xlU3BsaXRNYXA9e21hcFN0YXRlQWN0aW9ucy50b2dnbGVTcGxpdE1hcH1cbiAgICAgICAgICAgIG9uTWFwVG9nZ2xlTGF5ZXI9e3RoaXMuX2hhbmRsZU1hcFRvZ2dsZUxheWVyfVxuICAgICAgICAgICAgb25Ub2dnbGVNYXBDb250cm9sPXt0aGlzLl90b2dnbGVNYXBDb250cm9sfVxuICAgICAgICAgICAgb25Ub2dnbGVTcGxpdE1hcFZpZXdwb3J0PXttYXBTdGF0ZUFjdGlvbnMudG9nZ2xlU3BsaXRNYXBWaWV3cG9ydH1cbiAgICAgICAgICAgIG9uU2V0RWRpdG9yTW9kZT17dmlzU3RhdGVBY3Rpb25zLnNldEVkaXRvck1vZGV9XG4gICAgICAgICAgICBvblNldExvY2FsZT17dWlTdGF0ZUFjdGlvbnMuc2V0TG9jYWxlfVxuICAgICAgICAgICAgb25Ub2dnbGVFZGl0b3JWaXNpYmlsaXR5PXt2aXNTdGF0ZUFjdGlvbnMudG9nZ2xlRWRpdG9yVmlzaWJpbGl0eX1cbiAgICAgICAgICAgIG9uTGF5ZXJWaXNDb25maWdDaGFuZ2U9e3Zpc1N0YXRlQWN0aW9ucy5sYXllclZpc0NvbmZpZ0NoYW5nZX1cbiAgICAgICAgICAgIG1hcEhlaWdodD17bWFwU3RhdGUuaGVpZ2h0fVxuICAgICAgICAgICAgc2V0TWFwQ29udHJvbFNldHRpbmdzPXt1aVN0YXRlQWN0aW9ucy5zZXRNYXBDb250cm9sU2V0dGluZ3N9XG4gICAgICAgICAgICBhY3RpdmVTaWRlUGFuZWw9e2FjdGl2ZVNpZGVQYW5lbH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtpc1NwbGl0U2VsZWN0b3IodGhpcy5wcm9wcykgJiYgPERyb3BwYWJsZSBjb250YWluZXJJZD17Y29udGFpbmVySWR9IC8+fVxuXG4gICAgICAgICAge2RlY2t9XG4gICAgICAgICAge3RoaXMuX3JlbmRlck1hcGJveE92ZXJsYXlzKCl9XG4gICAgICAgICAgPEVkaXRvclxuICAgICAgICAgICAgaW5kZXg9e2luZGV4IHx8IDB9XG4gICAgICAgICAgICBkYXRhc2V0cz17ZGF0YXNldHN9XG4gICAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICAgIGZpbHRlcnM9e3RoaXMucG9seWdvbkZpbHRlcnNTZWxlY3Rvcih0aGlzLnByb3BzKX1cbiAgICAgICAgICAgIGxheWVycz17bGF5ZXJzfVxuICAgICAgICAgICAgb25EZWxldGVGZWF0dXJlPXt2aXNTdGF0ZUFjdGlvbnMuZGVsZXRlRmVhdHVyZX1cbiAgICAgICAgICAgIG9uU2VsZWN0PXt2aXNTdGF0ZUFjdGlvbnMuc2V0U2VsZWN0ZWRGZWF0dXJlfVxuICAgICAgICAgICAgb25Ub2dnbGVQb2x5Z29uRmlsdGVyPXt2aXNTdGF0ZUFjdGlvbnMuc2V0UG9seWdvbkZpbHRlckxheWVyfVxuICAgICAgICAgICAgb25TZXRFZGl0b3JNb2RlPXt2aXNTdGF0ZUFjdGlvbnMuc2V0RWRpdG9yTW9kZX1cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6ICdhbGwnLFxuICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogZWRpdG9yLnZpc2libGUgPyAnYmxvY2snIDogJ25vbmUnXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICAge3RoaXMucHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAge21hcFN0eWxlLnRvcE1hcFN0eWxlID8gKFxuICAgICAgICAgICAgPE1hcENvbXBvbmVudFxuICAgICAgICAgICAgICBrZXk9e2B0b3AtJHtiYXNlTWFwTGlicmFyeU5hbWV9YH1cbiAgICAgICAgICAgICAgdmlld1N0YXRlPXtpbnRlcm5hbFZpZXdTdGF0ZX1cbiAgICAgICAgICAgICAgbWFwU3R5bGU9e21hcFN0eWxlLnRvcE1hcFN0eWxlfVxuICAgICAgICAgICAgICBzdHlsZT17TUFQX1NUWUxFLnRvcH1cbiAgICAgICAgICAgICAgbWFwYm94QWNjZXNzVG9rZW49e21hcFByb3BzLm1hcGJveEFjY2Vzc1Rva2VufVxuICAgICAgICAgICAgICB0cmFuc2Zvcm1SZXF1ZXN0PXttYXBQcm9wcy50cmFuc2Zvcm1SZXF1ZXN0fVxuICAgICAgICAgICAgICBtYXBMaWI9e2Jhc2VNYXBMaWJyYXJ5Q29uZmlnLmdldE1hcExpYigpfVxuICAgICAgICAgICAgICB7Li4udG9wTWFwQ29udGFpbmVyUHJvcHN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgICAge2hhc0dlb2NvZGVyTGF5ZXJcbiAgICAgICAgICAgID8gdGhpcy5fcmVuZGVyRGVja092ZXJsYXkoXG4gICAgICAgICAgICAgICAge1tHRU9DT0RFUl9MQVlFUl9JRF06IGhhc0dlb2NvZGVyTGF5ZXJ9LFxuICAgICAgICAgICAgICAgIHtwcmltYXJ5TWFwOiBmYWxzZSwgaXNJbnRlcmFjdGl2ZTogZmFsc2V9XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogbnVsbH1cbiAgICAgICAgICB7dGhpcy5fcmVuZGVyTWFwUG9wb3ZlcigpfVxuICAgICAgICAgIHtwcmltYXJ5ICE9PSBpc1NwbGl0ID8gKFxuICAgICAgICAgICAgPExvYWRpbmdJbmRpY2F0b3JcbiAgICAgICAgICAgICAgaXNWaXNpYmxlPXtCb29sZWFuKGlzTG9hZGluZ0luZGljYXRvclZpc2libGUpfVxuICAgICAgICAgICAgICBhY3RpdmVTaWRlUGFuZWw9e0Jvb2xlYW4oYWN0aXZlU2lkZVBhbmVsKX1cbiAgICAgICAgICAgICAgc2lkZVBhbmVsV2lkdGg9e3NpZGVQYW5lbFdpZHRofVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBMb2FkaW5nLi4uXG4gICAgICAgICAgICA8L0xvYWRpbmdJbmRpY2F0b3I+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAge3RoaXMucHJvcHMucHJpbWFyeSA/IChcbiAgICAgICAgICAgIDxBdHRyaWJ1dGlvblxuICAgICAgICAgICAgICBzaG93QmFzZU1hcExpYkxvZ289e3RoaXMuc3RhdGUuc2hvd0Jhc2VNYXBBdHRyaWJ1dGlvbn1cbiAgICAgICAgICAgICAgc2hvd09zbUJhc2VtYXBBdHRyaWJ1dGlvbj17dHJ1ZX1cbiAgICAgICAgICAgICAgZGF0YXNldEF0dHJpYnV0aW9ucz17ZGF0YXNldEF0dHJpYnV0aW9uc31cbiAgICAgICAgICAgICAgYmFzZU1hcExpYnJhcnlDb25maWc9e2Jhc2VNYXBMaWJyYXJ5Q29uZmlnfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC8+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHt2aXNTdGF0ZSwgbWFwU3R5bGV9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IG1hcENvbnRlbnQgPSB0aGlzLl9yZW5kZXJNYXAoKTtcbiAgICAgIGlmICghbWFwQ29udGVudCkge1xuICAgICAgICAvLyBtYXBDb250ZW50IGNhbiBiZSBudWxsIGlmIG9uRGVja1JlbmRlciByZXR1cm5zIG51bGxcbiAgICAgICAgLy8gaW4gdGhpcyBjYXNlIHdlIGRvbid0IHdhbnQgdG8gcmVuZGVyIHRoZSBtYXBcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRTdHlsZSA9IG1hcFN0eWxlLm1hcFN0eWxlcz8uW21hcFN0eWxlLnN0eWxlVHlwZV07XG4gICAgICBjb25zdCBiYXNlTWFwTGlicmFyeU5hbWUgPSBnZXRCYXNlTWFwTGlicmFyeShjdXJyZW50U3R5bGUpO1xuICAgICAgY29uc3QgYmFzZU1hcExpYnJhcnlDb25maWcgPVxuICAgICAgICBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmJhc2VNYXBMaWJyYXJ5Q29uZmlnPy5bYmFzZU1hcExpYnJhcnlOYW1lXTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZE1hcFxuICAgICAgICAgIHJlZj17dGhpcy5fcmVmfVxuICAgICAgICAgIHN0eWxlPXt0aGlzLnN0eWxlU2VsZWN0b3IodGhpcy5wcm9wcyl9XG4gICAgICAgICAgb25Db250ZXh0TWVudT17ZXZlbnQgPT4gZXZlbnQucHJldmVudERlZmF1bHQoKX1cbiAgICAgICAgICAkbWl4QmxlbmRNb2RlPXt2aXNTdGF0ZS5vdmVybGF5QmxlbmRpbmd9XG4gICAgICAgICAgJG1hcExpYkNzc0NsYXNzPXtiYXNlTWFwTGlicmFyeUNvbmZpZy5tYXBMaWJDc3NDbGFzc31cbiAgICAgICAgPlxuICAgICAgICAgIHttYXBDb250ZW50fVxuICAgICAgICA8L1N0eWxlZE1hcD5cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHdpdGhUaGVtZShNYXBDb250YWluZXIpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBRix1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsV0FBQSxHQUFBRixPQUFBO0FBRUEsSUFBQUcsT0FBQSxHQUFBQyxzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQUssU0FBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sS0FBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sT0FBQSxHQUFBSCxzQkFBQSxDQUFBSixPQUFBO0FBS0EsSUFBQVEsV0FBQSxHQUFBSixzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQVMsV0FBQSxHQUFBTCxzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQVUsa0JBQUEsR0FBQVYsT0FBQTtBQU1BLElBQUFXLE9BQUEsR0FBQVAsc0JBQUEsQ0FBQUosT0FBQTtBQUdBLElBQUFZLE9BQUEsR0FBQVosT0FBQTtBQWdCQSxJQUFBYSxNQUFBLEdBQUFiLE9BQUE7QUFvQkEsSUFBQWMsT0FBQSxHQUFBZCxPQUFBO0FBR0EsSUFBQWUsVUFBQSxHQUFBZixP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
|
|
945
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9yZWFjdE1hcEdsIiwiX3JlYWN0MiIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVzZWxlY3QiLCJfY29yZSIsIl9kZWJvdW5jZSIsIl9tYXBQb3BvdmVyIiwiX21hcENvbnRyb2wiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfZWRpdG9yIiwiX2xheWVycyIsIl91dGlscyIsIl9zdHlsZXMiLCJfY29uc3RhbnRzIiwiX2RuZExheWVySXRlbXMiLCJfbWFwVmlld1N0YXRlQ29udGV4dCIsIl9lcnJvckJvdW5kYXJ5IiwiX2xvY2FsaXphdGlvbiIsIl9jb3JlMiIsIl9yZWR1Y2VycyIsIl9sb2FkaW5nSW5kaWNhdG9yIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiREVCT1VOQ0VfVklFV1BPUlRfUFJPUEFHQVRFIiwiREVCT1VOQ0VfTU9VU0VfTU9WRV9QUk9QQUdBVEUiLCJNQVBfU1RZTEUiLCJjb250YWluZXIiLCJkaXNwbGF5IiwicG9zaXRpb24iLCJ3aWR0aCIsImhlaWdodCIsInRvcCIsInBvaW50ZXJFdmVudHMiLCJMT0NBTEVfQ09ERVNfQVJSQVkiLCJMT0NBTEVfQ09ERVMiLCJTdHlsZWRNYXAiLCJzdHlsZWQiLCJTdHlsZWRNYXBDb250YWluZXIiLCJfcmVmIiwiX3JlZiQkbWl4QmxlbmRNb2RlIiwiJG1peEJsZW5kTW9kZSIsIiRtYXBMaWJDc3NDbGFzcyIsImNvbmNhdCIsIk1BUEJPWEdMX1NUWUxFX1VQREFURSIsIk1BUEJPWEdMX1JFTkRFUiIsIm5vcCIsIk1hcExpYkxvZ28iLCJfcmVmMiIsImJhc2VNYXBMaWJyYXJ5Q29uZmlnIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInN0eWxlIiwibWFyZ2luTGVmdCIsIm1hcExpYkNzc0NsYXNzIiwidGFyZ2V0IiwicmVsIiwiaHJlZiIsIm1hcExpYlVybCIsIm1hcExpYk5hbWUiLCJTdHlsZWREcm9wcGFibGUiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwiaXNPdmVyIiwidGhlbWUiLCJkbmRPdmVyQmFja2dyb3VuZENvbG9yIiwiaXNTcGxpdFNlbGVjdG9yIiwiZXhwb3J0cyIsInZpc1N0YXRlIiwic3BsaXRNYXBzIiwiRHJvcHBhYmxlIiwiX3JlZjMiLCJjb250YWluZXJJZCIsIl91c2VEcm9wcGFibGUiLCJ1c2VEcm9wcGFibGUiLCJpZCIsImRhdGEiLCJ0eXBlIiwiRFJPUFBBQkxFX01BUF9DT05UQUlORVJfVFlQRSIsImluZGV4IiwiZGlzYWJsZWQiLCJzZXROb2RlUmVmIiwicmVmIiwiU3R5bGVkRGF0YXNldEF0dHJpYnV0aW9uc0NvbnRhaW5lciIsImlzUGFsbSIsImxhYmVsQ29sb3IiLCJEYXRhc2V0QXR0cmlidXRpb25zIiwiX3JlZjQiLCJkYXRhc2V0QXR0cmlidXRpb25zIiwiRnJhZ21lbnQiLCJtYXAiLCJkcyIsImlkeCIsIl9leHRlbmRzMiIsInVybCIsImtleSIsInRpdGxlIiwiQXR0cmlidXRpb24iLCJfcmVmNSIsIl9yZWY1JHNob3dCYXNlTWFwTGliTCIsInNob3dCYXNlTWFwTGliTG9nbyIsIl9yZWY1JHNob3dPc21CYXNlbWFwQSIsInNob3dPc21CYXNlbWFwQXR0cmlidXRpb24iLCJoYXNNb2JpbGVXaWR0aCIsImJyZWFrUG9pbnRWYWx1ZXMiLCJtZW1vaXplZENvbXBvbmVudHMiLCJ1c2VNZW1vIiwiU3R5bGVkQXR0cmlidXRpb24iLCJtYXBMaWJBdHRyaWJ1dGlvbkNzc0NsYXNzIiwiRW5kSG9yaXpvbnRhbEZsZXhib3giLCJNYXBDb250YWluZXJGYWN0b3J5IiwiZGVwcyIsIk1hcFBvcG92ZXJGYWN0b3J5IiwiTWFwQ29udHJvbEZhY3RvcnkiLCJFZGl0b3JGYWN0b3J5IiwiTWFwUG9wb3ZlciIsIk1hcENvbnRyb2wiLCJFZGl0b3IiLCJNYXBDb250YWluZXIiLCJfQ29tcG9uZW50IiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwic2hvd0Jhc2VNYXBBdHRyaWJ1dGlvbiIsImNyZWF0ZVJlZiIsImRpbWVuc2lvbnMiLCJfdGhpcyRwcm9wcyIsInByaW1hcnkiLCJtYXBTdGF0ZUFjdGlvbnMiLCJ1cGRhdGVNYXAiLCJsYXllcnMiLCJsYXllckRhdGEiLCJjcmVhdGVTZWxlY3RvciIsInNwbGl0TWFwU2VsZWN0b3IiLCJzcGxpdE1hcEluZGV4U2VsZWN0b3IiLCJnZXRNYXBMYXllcnNGcm9tU3BsaXRNYXBzIiwibGF5ZXJPcmRlciIsImxheWVyc1NlbGVjdG9yIiwibGF5ZXJEYXRhU2VsZWN0b3IiLCJtYXBMYXllcnNTZWxlY3RvciIsInByZXBhcmVMYXllcnNUb1JlbmRlciIsInByZXBhcmVMYXllcnNGb3JEZWNrIiwiZmlsdGVycyIsImZpbHRlcnNTZWxlY3RvciIsImYiLCJGSUxURVJfVFlQRVMiLCJwb2x5Z29uIiwiZW5hYmxlZCIsImVkaXRvciIsImZlYXR1cmVzIiwic2VsZWN0ZWRGZWF0dXJlIiwicG9seWdvbkZpbHRlcnNTZWxlY3RvciIsImZlYXR1cmVzU2VsZWN0b3IiLCJwb2x5Z29uRmlsdGVycyIsInZhbHVlIiwiZmVhdHVyZUNvbGxlY3Rpb25TZWxlY3RvciIsInNlbGVjdGVkRmVhdHVyZVNlbGVjdG9yIiwiY29sbGVjdGlvbiIsImZpbmRJbmRleCIsIl9wcm9wcyRnZW5lcmF0ZU1hcGJveCIsImdlbmVyYXRlTWFwYm94TGF5ZXJzIiwibGF5ZXJPcmRlclNlbGVjdG9yIiwibGF5ZXJzVG9SZW5kZXJTZWxlY3RvciIsImdlbmVyYXRlTWFwYm94TGF5ZXJNZXRob2RTZWxlY3RvciIsImxheWVyIiwibGF5ZXJzVG9SZW5kZXIiLCJnZW5lcmF0ZU1hcGJveExheWVyTWV0aG9kIiwibWFwU3R5bGUiLCJzdHlsZVR5cGUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJtYXBTdHlsZVR5cGVTZWxlY3RvciIsIm1hcFN0eWxlQmFja2dyb3VuZENvbG9yU2VsZWN0b3IiLCJOT19NQVBfSUQiLCJyZ2JUb0hleCIsInZpc1N0YXRlQWN0aW9ucyIsIm9uTGF5ZXJDbGljayIsIl9pZHgiLCJpbmZvIiwib25MYXllckhvdmVyIiwibGF5ZXJDb25maWdDaGFuZ2UiLCJjb2xvckRvbWFpbiIsImRvbWFpbiIsImFnZ3JlZ2F0ZWRCaW5zIiwiZXZlbnQiLCJsYXllckZpbHRlcmVkSXRlbXNDaGFuZ2UiLCJsYXllcklkIiwiX3RoaXMkcHJvcHMyIiwiX3RoaXMkcHJvcHMyJGluZGV4IiwibWFwSW5kZXgiLCJ0b2dnbGVMYXllckZvck1hcCIsInVwZGF0ZSIsInByZXZpb3VzTGF5ZXJzIiwiX3VwZGF0ZU1hcGJveExheWVycyIsInNldFN0YXRlIiwiaXNTdHlsZVVzaW5nTWFwYm94VGlsZXMiLCJpc1N0eWxlVXNpbmdPcGVuU3RyZWV0TWFwVGlsZXMiLCJvbk1hcFN0eWxlTG9hZGVkIiwiX21hcCIsIm1hcFJlZiIsImdldE1hcCIsIl90aGlzJF9tYXAiLCJfdGhpcyRfbWFwMiIsIm9mZiIsIm9uIiwiX29uTWFwYm94U3R5bGVVcGRhdGUiLCJvbk1hcFJlbmRlciIsImdldE1hcGJveFJlZiIsIl9yZWY2IiwiZ2wiLCJzZXRMYXllckJsZW5kaW5nIiwibGF5ZXJCbGVuZGluZyIsImVycm9yIiwiZXJyb3JNZXNzYWdlIiwibWVzc2FnZSIsImxheWVyTWVzc2FnZSIsImVycm9yTWVzc2FnZUZ1bGwiLCJsYXN0U2hvd24iLCJfZGVja0dMRXJyb3JzRWxhcHNlZCIsIkRhdGUiLCJub3ciLCJUSFJPVFRMRV9OT1RJRklDQVRJT05fVElNRSIsImV4dHJhTGF5ZXJNZXNzYWdlIiwiX3RvcE1vc3RMYXllciRwcm9wcyIsInRvcE1vc3RMYXllciIsInBhcmVudCIsImxheWVyU2V0SXNWYWxpZCIsInVpU3RhdGVBY3Rpb25zIiwiYWRkTm90aWZpY2F0aW9uIiwiZXJyb3JOb3RpZmljYXRpb24iLCJkZWJvdW5jZSIsIl90aGlzJGNvbnRleHQiLCJ2aWV3U3RhdGUiLCJjb250ZXh0IiwiZ2V0SW50ZXJuYWxWaWV3U3RhdGUiLCJvblZpZXdQb3J0Q2hhbmdlIiwib25WaWV3U3RhdGVDaGFuZ2UiLCJ2aWV3cG9ydCIsImlzRXhwb3J0Iiwic2V0SW50ZXJuYWxWaWV3U3RhdGUiLCJfb25WaWV3cG9ydENoYW5nZVByb3BhZ2F0ZURlYm91bmNlZCIsIm9uTW91c2VNb3ZlIiwibm9ybWFsaXplRXZlbnQiLCJwYW5lbElkIiwiX3RoaXMkcHJvcHMzIiwidG9nZ2xlTWFwQ29udHJvbCIsIk51bWJlciIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwiY29tcG9uZW50RGlkTW91bnQiLCJjdXJyZW50Iiwib2JzZXJ2ZURpbWVuc2lvbnMiLCJfaGFuZGxlUmVzaXplIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJfdGhpcyRfbWFwMyIsIl90aGlzJF9tYXA0IiwidW5vYnNlcnZlRGltZW5zaW9ucyIsIl9vbkRlY2tJbml0aWFsaXplZCIsIm9uRGVja0luaXRpYWxpemVkIiwiX2RlY2siLCJfaXNPS1RvUmVuZGVyRWZmZWN0cyIsInZpZXdJbmRleCIsIl90aGlzJF9kZWNrIiwidmlld01hbmFnZXIiLCJfdmlld3BvcnRzIiwiX3JlbmRlck1hcFBvcG92ZXIiLCJfdGhpcyRwcm9wcyR2aXNTdGF0ZSQiLCJob3ZlckluZm8iLCJfdGhpcyRwcm9wczQiLCJtYXBTdGF0ZSIsIl90aGlzJHByb3BzNCR2aXNTdGF0ZSIsImNsaWNrZWQiLCJkYXRhc2V0cyIsImludGVyYWN0aW9uQ29uZmlnIiwiYW5pbWF0aW9uQ29uZmlnIiwiX3RoaXMkcHJvcHM0JHZpc1N0YXRlMiIsIm1vdXNlUG9zIiwibW91c2VQb3NpdGlvbiIsImNvb3JkaW5hdGUiLCJwaW5uZWQiLCJ0b29sdGlwIiwibGF5ZXJIb3ZlclByb3AiLCJnZXRMYXllckhvdmVyUHJvcCIsImNvbXBhcmVNb2RlIiwiY29uZmlnIiwicGlubmVkUG9zaXRpb24iLCJ4IiwieSIsImxheWVyUGlubmVkUHJvcCIsImdldFZpZXdwb3J0RnJvbU1hcFN0YXRlIiwibG5nTGF0IiwiX2dldEhvdmVyWFkiLCJwcmltYXJ5RGF0YSIsImNvbXBhcmVUeXBlIiwiY29tbW9uUHJvcCIsIm9uQ2xvc2UiLCJfb25DbG9zZU1hcFBvcG92ZXIiLCJ6b29tIiwiY2FudmFzIiwidW5kZWZpbmVkIiwiZnJvemVuIiwiaXNCYXNlIiwib25TZXRGZWF0dXJlcyIsInNldEZlYXR1cmVzIiwic2V0U2VsZWN0ZWRGZWF0dXJlIiwiZmVhdHVyZUNvbGxlY3Rpb24iLCJzY3JlZW5Db29yZCIsInByb2plY3QiLCJfcmVuZGVyRGVja092ZXJsYXkiLCJsYXllcnNGb3JEZWNrIiwiX3RoaXMkY29udGV4dDIiLCJfdGhpczIiLCJvcHRpb25zIiwicHJpbWFyeU1hcCIsIl90aGlzJHByb3BzNSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwibWFwYm94QXBpVXJsIiwiZGVja0dsUHJvcHMiLCJtYXBDb250cm9scyIsImRlY2tSZW5kZXJDYWxsYmFja3MiLCJnZW5lcmF0ZURlY2tHTExheWVycyIsImlzSW50ZXJhY3RpdmUiLCJjaGlsZHJlbiIsIm1hcERyYXciLCJfcmVmNyIsIl9yZWY3JGFjdGl2ZSIsImFjdGl2ZSIsImVkaXRvck1lbnVBY3RpdmUiLCJpc0VkaXRvckRyYXdpbmdNb2RlIiwiRWRpdG9yTGF5ZXJVdGlscyIsImlzRHJhd2luZ0FjdGl2ZSIsIm1vZGUiLCJpbnRlcm5hbFZpZXdTdGF0ZSIsImludGVybmFsTWFwU3RhdGUiLCJlZGl0b3JGZWF0dXJlU2VsZWN0ZWRJbmRleCIsInNlbGVjdGVkUG9seWdvbkluZGV4U2VsZWN0b3IiLCJnZW5lcmF0ZURlY2tHTExheWVyc01ldGhvZCIsImNvbXB1dGVEZWNrTGF5ZXJzIiwiZGVja0dsTGF5ZXJzIiwiZWRpdG9ySW5mbyIsInNlbGVjdGVkRmVhdHVyZUluZGV4ZXMiLCJzZWxlY3RlZEZlYXR1cmVJbmRleEFycmF5U2VsZWN0b3IiLCJfb25MYXllckhvdmVyIiwib25TZXRMYXllckRvbWFpbiIsIl9vbkxheWVyU2V0RG9tYWluIiwib25GaWx0ZXJlZEl0ZW1zQ2hhbmdlIiwiX29uTGF5ZXJGaWx0ZXJlZEl0ZW1zQ2hhbmdlIiwiZXh0cmFEZWNrUGFyYW1zIiwiZ2V0VG9vbHRpcCIsImdldEN1cnNvciIsIl9yZWY4IiwiaXNEcmFnZ2luZyIsImVkaXRvckN1cnNvciIsImVmZmVjdHMiLCJjb21wdXRlRGVja0VmZmVjdHMiLCJ2aWV3cyIsIk1hcFZpZXciLCJsZWdhY3lNZXRlclNpemVzIiwiYWxsRGVja0dsUHJvcHMiLCJwaWNraW5nUmFkaXVzIiwiREVGQVVMVF9QSUNLSU5HX1JBRElVUyIsIm9uRGVja1JlbmRlciIsIl9vbk1vdXNlTW92ZURlYm91bmNlZCIsIm9uTG9hZCIsIm9uRGVja0xvYWQiLCJjb250cm9sbGVyIiwiZG91YmxlQ2xpY2tab29tIiwiZHJhZ1JvdGF0ZSIsImluaXRpYWxWaWV3U3RhdGUiLCJvbkJlZm9yZVJlbmRlciIsIl9vbkJlZm9yZVJlbmRlciIsIl9vblZpZXdwb3J0Q2hhbmdlIiwib25Ib3ZlciIsInJlcyIsIl9vbkxheWVySG92ZXJEZWJvdW5jZWQiLCJvbkNsaWNrIiwic3JjRXZlbnQiLCJvbkVycm9yIiwiX29uRGVja0Vycm9yIiwiY29tcCIsImRlY2siLCJvbldlYkdMSW5pdGlhbGl6ZWQiLCJvbkFmdGVyUmVuZGVyIiwib25EZWNrQWZ0ZXJSZW5kZXIiLCJtYXBib3hMYXllcnMiLCJtYXBib3hMYXllcnNTZWxlY3RvciIsInVwZGF0ZU1hcGJveExheWVycyIsIl9yZW5kZXJNYXBib3hPdmVybGF5cyIsImlzU3R5bGVMb2FkZWQiLCJfcmVuZGVyTWFwIiwiX21hcFN0eWxlJG1hcFN0eWxlcyIsIl9nZXRBcHBsaWNhdGlvbkNvbmZpZyIsIl90aGlzJGNvbnRleHQzIiwiX21hcFN0eWxlJGJvdHRvbU1hcFN0IiwiX3RoaXMkcHJvcHM2IiwiX3RoaXMkcHJvcHM2JE1hcENvbXBvIiwiTWFwQ29tcG9uZW50IiwiTWFwIiwibG9jYWxlIiwiYm90dG9tTWFwQ29udGFpbmVyUHJvcHMiLCJ0b3BNYXBDb250YWluZXJQcm9wcyIsIl90aGlzJHByb3BzNiRkYXRhc2V0QSIsIl90aGlzJHByb3BzNiRjb250YWluZSIsImlzTG9hZGluZ0luZGljYXRvclZpc2libGUiLCJhY3RpdmVTaWRlUGFuZWwiLCJzaWRlUGFuZWxXaWR0aCIsImxheWVyc0ZvckRlY2tTZWxlY3RvciIsImN1cnJlbnRTdHlsZSIsIm1hcFN0eWxlcyIsImJhc2VNYXBMaWJyYXJ5TmFtZSIsImdldEJhc2VNYXBMaWJyYXJ5IiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJtYXBQcm9wcyIsInByZXNlcnZlRHJhd2luZ0J1ZmZlciIsIm1hcGJveEFjY2Vzc1Rva2VuIiwiYWNjZXNzVG9rZW4iLCJtYXBMaWIiLCJnZXRNYXBMaWIiLCJ0cmFuc2Zvcm1SZXF1ZXN0IiwiaGFzR2VvY29kZXJMYXllciIsImZpbmQiLCJsIiwiR0VPQ09ERVJfTEFZRVJfSUQiLCJpc1NwbGl0IiwiYm90dG9tTWFwU3R5bGUiLCJFTVBUWV9NQVBCT1hfU1RZTEUiLCJfc2V0TWFwUmVmIiwiYXZhaWxhYmxlTG9jYWxlcyIsInJlYWRPbmx5Iiwic2NhbGUiLCJnZW9jb2RlciIsIm1hcENvbnRyb2xUb3AiLCJvblRvZ2dsZVBlcnNwZWN0aXZlIiwidG9nZ2xlUGVyc3BlY3RpdmUiLCJvblRvZ2dsZVNwbGl0TWFwIiwidG9nZ2xlU3BsaXRNYXAiLCJvbk1hcFRvZ2dsZUxheWVyIiwiX2hhbmRsZU1hcFRvZ2dsZUxheWVyIiwib25Ub2dnbGVNYXBDb250cm9sIiwiX3RvZ2dsZU1hcENvbnRyb2wiLCJvblRvZ2dsZVNwbGl0TWFwVmlld3BvcnQiLCJ0b2dnbGVTcGxpdE1hcFZpZXdwb3J0Iiwib25TZXRFZGl0b3JNb2RlIiwic2V0RWRpdG9yTW9kZSIsIm9uU2V0TG9jYWxlIiwic2V0TG9jYWxlIiwib25Ub2dnbGVFZGl0b3JWaXNpYmlsaXR5IiwidG9nZ2xlRWRpdG9yVmlzaWJpbGl0eSIsIm9uTGF5ZXJWaXNDb25maWdDaGFuZ2UiLCJsYXllclZpc0NvbmZpZ0NoYW5nZSIsIm1hcEhlaWdodCIsInNldE1hcENvbnRyb2xTZXR0aW5ncyIsIm9uRGVsZXRlRmVhdHVyZSIsImRlbGV0ZUZlYXR1cmUiLCJvblNlbGVjdCIsIm9uVG9nZ2xlUG9seWdvbkZpbHRlciIsInNldFBvbHlnb25GaWx0ZXJMYXllciIsInZpc2libGUiLCJ0b3BNYXBTdHlsZSIsImlzVmlzaWJsZSIsImlzUmFzdGVyVGlsZXNCZWluZ0xvYWRlZCIsInN0YXRlIiwicmVuZGVyIiwiX21hcFN0eWxlJG1hcFN0eWxlczIiLCJfZ2V0QXBwbGljYXRpb25Db25maWcyIiwiX3RoaXMkcHJvcHM3IiwibWFwQ29udGVudCIsInN0eWxlU2VsZWN0b3IiLCJvbkNvbnRleHRNZW51IiwicHJldmVudERlZmF1bHQiLCJvdmVybGF5QmxlbmRpbmciLCJDb21wb25lbnQiLCJNYXBWaWV3U3RhdGVDb250ZXh0Iiwid2l0aFRoZW1lIl0sInNvdXJjZXMiOlsiLi4vc3JjL21hcC1jb250YWluZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbi8vIGxpYnJhcmllc1xuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBjcmVhdGVSZWYsIHVzZU1lbW99IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQsIHt3aXRoVGhlbWV9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7TWFwLCBNYXBSZWZ9IGZyb20gJ3JlYWN0LW1hcC1nbCc7XG5pbXBvcnQge1BpY2tJbmZvfSBmcm9tICdAZGVjay5nbC9jb3JlL2xpYi9kZWNrJztcbmltcG9ydCBEZWNrR0wgZnJvbSAnQGRlY2suZ2wvcmVhY3QnO1xuaW1wb3J0IHtjcmVhdGVTZWxlY3RvciwgU2VsZWN0b3J9IGZyb20gJ3Jlc2VsZWN0JztcbmltcG9ydCB7dXNlRHJvcHBhYmxlfSBmcm9tICdAZG5kLWtpdC9jb3JlJztcbmltcG9ydCBkZWJvdW5jZSBmcm9tICdsb2Rhc2gvZGVib3VuY2UnO1xuXG5pbXBvcnQge1Zpc1N0YXRlQWN0aW9ucywgTWFwU3RhdGVBY3Rpb25zLCBVSVN0YXRlQWN0aW9uc30gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcblxuLy8gY29tcG9uZW50c1xuaW1wb3J0IE1hcFBvcG92ZXJGYWN0b3J5IGZyb20gJy4vbWFwL21hcC1wb3BvdmVyJztcbmltcG9ydCBNYXBDb250cm9sRmFjdG9yeSBmcm9tICcuL21hcC9tYXAtY29udHJvbCc7XG5pbXBvcnQge1xuICBTdHlsZWRNYXBDb250YWluZXIsXG4gIFN0eWxlZEF0dHJpYnV0aW9uLFxuICBFbmRIb3Jpem9udGFsRmxleGJveFxufSBmcm9tICcuL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCBFZGl0b3JGYWN0b3J5IGZyb20gJy4vZWRpdG9yL2VkaXRvcic7XG5cbi8vIHV0aWxzXG5pbXBvcnQge1xuICBnZW5lcmF0ZU1hcGJveExheWVycyxcbiAgdXBkYXRlTWFwYm94TGF5ZXJzLFxuICBMYXllckJhc2VDb25maWcsXG4gIFZpc3VhbENoYW5uZWxEb21haW4sXG4gIEVkaXRvckxheWVyVXRpbHMsXG4gIEFnZ3JlZ2F0ZWRCaW4sXG4gIGlzUmFzdGVyVGlsZXNCZWluZ0xvYWRlZFxufSBmcm9tICdAa2VwbGVyLmdsL2xheWVycyc7XG5pbXBvcnQge1xuICBEYXRhc2V0QXR0cmlidXRpb24sXG4gIE1hcFN0YXRlLFxuICBNYXBDb250cm9scyxcbiAgVmlld3BvcnQsXG4gIFNwbGl0TWFwLFxuICBTcGxpdE1hcExheWVyc1xufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7XG4gIGVycm9yTm90aWZpY2F0aW9uLFxuICBzZXRMYXllckJsZW5kaW5nLFxuICBpc1N0eWxlVXNpbmdNYXBib3hUaWxlcyxcbiAgaXNTdHlsZVVzaW5nT3BlblN0cmVldE1hcFRpbGVzLFxuICBnZXRCYXNlTWFwTGlicmFyeSxcbiAgQmFzZU1hcExpYnJhcnlDb25maWcsXG4gIHRyYW5zZm9ybVJlcXVlc3QsXG4gIG9ic2VydmVEaW1lbnNpb25zLFxuICB1bm9ic2VydmVEaW1lbnNpb25zLFxuICBoYXNNb2JpbGVXaWR0aCxcbiAgZ2V0TWFwTGF5ZXJzRnJvbVNwbGl0TWFwcyxcbiAgb25WaWV3UG9ydENoYW5nZSxcbiAgZ2V0Vmlld3BvcnRGcm9tTWFwU3RhdGUsXG4gIG5vcm1hbGl6ZUV2ZW50LFxuICByZ2JUb0hleCxcbiAgY29tcHV0ZURlY2tFZmZlY3RzLFxuICBnZXRBcHBsaWNhdGlvbkNvbmZpZyxcbiAgR2V0TWFwUmVmXG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHticmVha1BvaW50VmFsdWVzfSBmcm9tICdAa2VwbGVyLmdsL3N0eWxlcyc7XG5cbi8vIGRlZmF1bHQtc2V0dGluZ3NcbmltcG9ydCB7XG4gIEZJTFRFUl9UWVBFUyxcbiAgR0VPQ09ERVJfTEFZRVJfSUQsXG4gIFRIUk9UVExFX05PVElGSUNBVElPTl9USU1FLFxuICBERUZBVUxUX1BJQ0tJTkdfUkFESVVTLFxuICBOT19NQVBfSUQsXG4gIEVNUFRZX01BUEJPWF9TVFlMRVxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmltcG9ydCB7RFJPUFBBQkxFX01BUF9DT05UQUlORVJfVFlQRX0gZnJvbSAnLi9jb21tb24vZG5kLWxheWVyLWl0ZW1zJztcbi8vIENvbnRleHRzXG5pbXBvcnQge01hcFZpZXdTdGF0ZUNvbnRleHR9IGZyb20gJy4vbWFwLXZpZXctc3RhdGUtY29udGV4dCc7XG5cbmltcG9ydCBFcnJvckJvdW5kYXJ5IGZyb20gJy4vY29tbW9uL2Vycm9yLWJvdW5kYXJ5JztcbmltcG9ydCB7TE9DQUxFX0NPREVTfSBmcm9tICdAa2VwbGVyLmdsL2xvY2FsaXphdGlvbic7XG5pbXBvcnQge01hcFZpZXd9IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHtcbiAgTWFwU3R5bGUsXG4gIGNvbXB1dGVEZWNrTGF5ZXJzLFxuICBnZXRMYXllckhvdmVyUHJvcCxcbiAgTGF5ZXJIb3ZlclByb3AsXG4gIHByZXBhcmVMYXllcnNGb3JEZWNrLFxuICBwcmVwYXJlTGF5ZXJzVG9SZW5kZXIsXG4gIExheWVyc1RvUmVuZGVyXG59IGZyb20gJ0BrZXBsZXIuZ2wvcmVkdWNlcnMnO1xuaW1wb3J0IHtWaXNTdGF0ZX0gZnJvbSAnQGtlcGxlci5nbC9zY2hlbWFzJztcblxuaW1wb3J0IExvYWRpbmdJbmRpY2F0b3IgZnJvbSAnLi9sb2FkaW5nLWluZGljYXRvcic7XG5cbi8vIERlYm91bmNlIHRoZSBwcm9wYWdhdGlvbiBvZiB2aWV3cG9ydCBjaGFuZ2UgYW5kIG1vdXNlIG1vdmVzIHRvIHJlZHV4IHN0b3JlLlxuLy8gVGhpcyBpcyB0byBhdm9pZCB0b28gbWFueSByZW5kZXJzIG9mIG90aGVyIGNvbXBvbmVudHMgd2hlbiB0aGUgbWFwIGlzXG4vLyBiZWluZyBwYW5uZWQvem9vbWVkIChsZWFkaW5nIHRvIGxhZ2d5IGJhc2VtYXAvZGVjayBzeW5jaW5nKS5cbmNvbnN0IERFQk9VTkNFX1ZJRVdQT1JUX1BST1BBR0FURSA9IDEwO1xuY29uc3QgREVCT1VOQ0VfTU9VU0VfTU9WRV9QUk9QQUdBVEUgPSAxMDtcblxuY29uc3QgTUFQX1NUWUxFOiB7W2tleTogc3RyaW5nXTogUmVhY3QuQ1NTUHJvcGVydGllc30gPSB7XG4gIGNvbnRhaW5lcjoge1xuICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgaGVpZ2h0OiAnMTAwJSdcbiAgfSxcbiAgdG9wOiB7XG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgdG9wOiAwLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgcG9pbnRlckV2ZW50czogJ25vbmUnXG4gIH1cbn07XG5cbmNvbnN0IExPQ0FMRV9DT0RFU19BUlJBWSA9IE9iamVjdC5rZXlzKExPQ0FMRV9DT0RFUyk7XG5cbmludGVyZmFjZSBTdHlsZWRNYXBDb250YWluZXJQcm9wcyB7XG4gICRtaXhCbGVuZE1vZGU/OiBzdHJpbmc7XG4gICRtYXBMaWJDc3NDbGFzczogc3RyaW5nO1xufVxuXG5jb25zdCBTdHlsZWRNYXAgPSBzdHlsZWQoU3R5bGVkTWFwQ29udGFpbmVyKTxTdHlsZWRNYXBDb250YWluZXJQcm9wcz4oXG4gICh7JG1peEJsZW5kTW9kZSA9ICdub3JtYWwnLCAkbWFwTGliQ3NzQ2xhc3N9KSA9PiBgXG4gICNkZWZhdWx0LWRlY2tnbC1vdmVybGF5IHtcbiAgICBtaXgtYmxlbmQtbW9kZTogJHskbWl4QmxlbmRNb2RlfTtcbiAgfTtcbiAgKlskeyRtYXBMaWJDc3NDbGFzc30tY2hpbGRyZW5dIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cbmBcbik7XG5cbmNvbnN0IE1BUEJPWEdMX1NUWUxFX1VQREFURSA9ICdzdHlsZS5sb2FkJztcbmNvbnN0IE1BUEJPWEdMX1JFTkRFUiA9ICdyZW5kZXInO1xuY29uc3Qgbm9wID0gKCkgPT4ge1xuICByZXR1cm47XG59O1xuXG50eXBlIE1hcExpYkxvZ29Qcm9wcyA9IHtcbiAgYmFzZU1hcExpYnJhcnlDb25maWc6IEJhc2VNYXBMaWJyYXJ5Q29uZmlnO1xufTtcblxuY29uc3QgTWFwTGliTG9nbyA9ICh7YmFzZU1hcExpYnJhcnlDb25maWd9OiBNYXBMaWJMb2dvUHJvcHMpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9XCJhdHRyaXRpb24tbG9nb1wiPlxuICAgIEJhc2VtYXAgYnk6XG4gICAgPGFcbiAgICAgIHN0eWxlPXt7bWFyZ2luTGVmdDogJzVweCd9fVxuICAgICAgY2xhc3NOYW1lPXtgJHtiYXNlTWFwTGlicmFyeUNvbmZpZy5tYXBMaWJDc3NDbGFzc30tY3RybC1sb2dvYH1cbiAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgIGhyZWY9e2Jhc2VNYXBMaWJyYXJ5Q29uZmlnLm1hcExpYlVybH1cbiAgICAgIGFyaWEtbGFiZWw9e2Ake2Jhc2VNYXBMaWJyYXJ5Q29uZmlnLm1hcExpYk5hbWV9IGxvZ29gfVxuICAgIC8+XG4gIDwvZGl2PlxuKTtcblxuaW50ZXJmYWNlIFN0eWxlZERyb3BwYWJsZVByb3BzIHtcbiAgaXNPdmVyOiBib29sZWFuO1xufVxuXG5jb25zdCBTdHlsZWREcm9wcGFibGUgPSBzdHlsZWQuZGl2PFN0eWxlZERyb3BwYWJsZVByb3BzPmBcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiAocHJvcHMuaXNPdmVyID8gcHJvcHMudGhlbWUuZG5kT3ZlckJhY2tncm91bmRDb2xvciA6ICdub25lJyl9O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB6LWluZGV4OiAxO1xuYDtcblxuZXhwb3J0IGNvbnN0IGlzU3BsaXRTZWxlY3RvciA9IHByb3BzID0+XG4gIHByb3BzLnZpc1N0YXRlLnNwbGl0TWFwcyAmJiBwcm9wcy52aXNTdGF0ZS5zcGxpdE1hcHMubGVuZ3RoID4gMTtcblxuZXhwb3J0IGNvbnN0IERyb3BwYWJsZSA9ICh7Y29udGFpbmVySWR9KSA9PiB7XG4gIGNvbnN0IHtpc092ZXIsIHNldE5vZGVSZWZ9ID0gdXNlRHJvcHBhYmxlKHtcbiAgICBpZDogY29udGFpbmVySWQsXG4gICAgZGF0YToge3R5cGU6IERST1BQQUJMRV9NQVBfQ09OVEFJTkVSX1RZUEUsIGluZGV4OiBjb250YWluZXJJZH0sXG4gICAgZGlzYWJsZWQ6ICFjb250YWluZXJJZFxuICB9KTtcblxuICByZXR1cm4gPFN0eWxlZERyb3BwYWJsZSByZWY9e3NldE5vZGVSZWZ9IGlzT3Zlcj17aXNPdmVyfSAvPjtcbn07XG5cbmludGVyZmFjZSBTdHlsZWREYXRhc2V0QXR0cmlidXRpb25zQ29udGFpbmVyUHJvcHMge1xuICBpc1BhbG06IGJvb2xlYW47XG59XG5cbmNvbnN0IFN0eWxlZERhdGFzZXRBdHRyaWJ1dGlvbnNDb250YWluZXIgPSBzdHlsZWQuZGl2PFN0eWxlZERhdGFzZXRBdHRyaWJ1dGlvbnNDb250YWluZXJQcm9wcz5gXG4gIG1heC13aWR0aDogJHtwcm9wcyA9PiAocHJvcHMuaXNQYWxtID8gJzIwMHB4JyA6ICczMDBweCcpfTtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxhYmVsQ29sb3J9O1xuICBtYXJnaW4tcmlnaHQ6IDJweDtcbiAgbWFyZ2luLWJvdHRvbTogMXB4O1xuICBsaW5lLWhlaWdodDogJHtwcm9wcyA9PiAocHJvcHMuaXNQYWxtID8gJzFlbScgOiAnMS40ZW0nKX07XG5cbiAgJjpob3ZlciB7XG4gICAgd2hpdGUtc3BhY2U6IGluaGVyaXQ7XG4gIH1cbmA7XG5cbmNvbnN0IERhdGFzZXRBdHRyaWJ1dGlvbnMgPSAoe1xuICBkYXRhc2V0QXR0cmlidXRpb25zLFxuICBpc1BhbG1cbn06IHtcbiAgZGF0YXNldEF0dHJpYnV0aW9uczogRGF0YXNldEF0dHJpYnV0aW9uW107XG4gIGlzUGFsbTogYm9vbGVhbjtcbn0pID0+IChcbiAgPD5cbiAgICB7ZGF0YXNldEF0dHJpYnV0aW9ucz8ubGVuZ3RoID8gKFxuICAgICAgPFN0eWxlZERhdGFzZXRBdHRyaWJ1dGlvbnNDb250YWluZXIgaXNQYWxtPXtpc1BhbG19PlxuICAgICAgICB7ZGF0YXNldEF0dHJpYnV0aW9ucy5tYXAoKGRzLCBpZHgpID0+IChcbiAgICAgICAgICA8YVxuICAgICAgICAgICAgey4uLihkcy51cmwgPyB7aHJlZjogZHMudXJsfSA6IG51bGwpfVxuICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAga2V5PXtgJHtkcy50aXRsZX1fJHtpZHh9YH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7ZHMudGl0bGV9XG4gICAgICAgICAgICB7aWR4ICE9PSBkYXRhc2V0QXR0cmlidXRpb25zLmxlbmd0aCAtIDEgPyAnLCAnIDogbnVsbH1cbiAgICAgICAgICA8L2E+XG4gICAgICAgICkpfVxuICAgICAgPC9TdHlsZWREYXRhc2V0QXR0cmlidXRpb25zQ29udGFpbmVyPlxuICAgICkgOiBudWxsfVxuICA8Lz5cbik7XG5cbnR5cGUgQXR0cmlidXRpb25Qcm9wcyA9IHtcbiAgc2hvd0Jhc2VNYXBMaWJMb2dvOiBib29sZWFuO1xuICBzaG93T3NtQmFzZW1hcEF0dHJpYnV0aW9uOiBib29sZWFuO1xuICBkYXRhc2V0QXR0cmlidXRpb25zOiBEYXRhc2V0QXR0cmlidXRpb25bXTtcbiAgYmFzZU1hcExpYnJhcnlDb25maWc6IEJhc2VNYXBMaWJyYXJ5Q29uZmlnO1xufTtcblxuZXhwb3J0IGNvbnN0IEF0dHJpYnV0aW9uOiBSZWFjdC5GQzxBdHRyaWJ1dGlvblByb3BzPiA9ICh7XG4gIHNob3dCYXNlTWFwTGliTG9nbyA9IHRydWUsXG4gIHNob3dPc21CYXNlbWFwQXR0cmlidXRpb24gPSBmYWxzZSxcbiAgZGF0YXNldEF0dHJpYnV0aW9ucyxcbiAgYmFzZU1hcExpYnJhcnlDb25maWdcbn06IEF0dHJpYnV0aW9uUHJvcHMpID0+IHtcbiAgY29uc3QgaXNQYWxtID0gaGFzTW9iaWxlV2lkdGgoYnJlYWtQb2ludFZhbHVlcyk7XG5cbiAgY29uc3QgbWVtb2l6ZWRDb21wb25lbnRzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFzaG93QmFzZU1hcExpYkxvZ28pIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRBdHRyaWJ1dGlvblxuICAgICAgICAgIG1hcExpYkNzc0NsYXNzPXtiYXNlTWFwTGlicmFyeUNvbmZpZy5tYXBMaWJDc3NDbGFzc31cbiAgICAgICAgICBtYXBMaWJBdHRyaWJ1dGlvbkNzc0NsYXNzPXtiYXNlTWFwTGlicmFyeUNvbmZpZy5tYXBMaWJBdHRyaWJ1dGlvbkNzc0NsYXNzfVxuICAgICAgICA+XG4gICAgICAgICAgPEVuZEhvcml6b250YWxGbGV4Ym94PlxuICAgICAgICAgICAgPERhdGFzZXRBdHRyaWJ1dGlvbnMgZGF0YXNldEF0dHJpYnV0aW9ucz17ZGF0YXNldEF0dHJpYnV0aW9uc30gaXNQYWxtPXtpc1BhbG19IC8+XG4gICAgICAgICAgICB7c2hvd09zbUJhc2VtYXBBdHRyaWJ1dGlvbiA/IChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhdHRyaXRpb24tbGlua1wiPlxuICAgICAgICAgICAgICAgIHtkYXRhc2V0QXR0cmlidXRpb25zPy5sZW5ndGggPyA8c3BhbiBjbGFzc05hbWU9XCJwaXBlLXNlcGFyYXRvclwiPnw8L3NwYW4+IDogbnVsbH1cbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgaHJlZj1cImh0dHA6Ly93d3cub3BlbnN0cmVldG1hcC5vcmcvY29weXJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICDCqSBPcGVuU3RyZWV0TWFwXG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvRW5kSG9yaXpvbnRhbEZsZXhib3g+XG4gICAgICAgIDwvU3R5bGVkQXR0cmlidXRpb24+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkQXR0cmlidXRpb25cbiAgICAgICAgbWFwTGliQ3NzQ2xhc3M9e2Jhc2VNYXBMaWJyYXJ5Q29uZmlnLm1hcExpYkNzc0NsYXNzfVxuICAgICAgICBtYXBMaWJBdHRyaWJ1dGlvbkNzc0NsYXNzPXtiYXNlTWFwTGlicmFyeUNvbmZpZy5tYXBMaWJBdHRyaWJ1dGlvbkNzc0NsYXNzfVxuICAgICAgPlxuICAgICAgICA8RW5kSG9yaXpvbnRhbEZsZXhib3g+XG4gICAgICAgICAgPERhdGFzZXRBdHRyaWJ1dGlvbnMgZGF0YXNldEF0dHJpYnV0aW9ucz17ZGF0YXNldEF0dHJpYnV0aW9uc30gaXNQYWxtPXtpc1BhbG19IC8+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhdHRyaXRpb24tbGlua1wiPlxuICAgICAgICAgICAge2RhdGFzZXRBdHRyaWJ1dGlvbnM/Lmxlbmd0aCA/IDxzcGFuIGNsYXNzTmFtZT1cInBpcGUtc2VwYXJhdG9yXCI+fDwvc3Bhbj4gOiBudWxsfVxuICAgICAgICAgICAge2lzUGFsbSA/IDxNYXBMaWJMb2dvIGJhc2VNYXBMaWJyYXJ5Q29uZmlnPXtiYXNlTWFwTGlicmFyeUNvbmZpZ30gLz4gOiBudWxsfVxuICAgICAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8va2VwbGVyLmdsL3BvbGljeS9cIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgICAgICAgIMKpIGtlcGxlci5nbCB8eycgJ31cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIHshaXNQYWxtID8gPE1hcExpYkxvZ28gYmFzZU1hcExpYnJhcnlDb25maWc9e2Jhc2VNYXBMaWJyYXJ5Q29uZmlnfSAvPiA6IG51bGx9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvRW5kSG9yaXpvbnRhbEZsZXhib3g+XG4gICAgICA8L1N0eWxlZEF0dHJpYnV0aW9uPlxuICAgICk7XG4gIH0sIFtcbiAgICBzaG93QmFzZU1hcExpYkxvZ28sXG4gICAgc2hvd09zbUJhc2VtYXBBdHRyaWJ1dGlvbixcbiAgICBkYXRhc2V0QXR0cmlidXRpb25zLFxuICAgIGlzUGFsbSxcbiAgICBiYXNlTWFwTGlicmFyeUNvbmZpZ1xuICBdKTtcblxuICByZXR1cm4gbWVtb2l6ZWRDb21wb25lbnRzO1xufTtcblxuTWFwQ29udGFpbmVyRmFjdG9yeS5kZXBzID0gW01hcFBvcG92ZXJGYWN0b3J5LCBNYXBDb250cm9sRmFjdG9yeSwgRWRpdG9yRmFjdG9yeV07XG5cbnR5cGUgTWFwYm94U3R5bGUgPSBzdHJpbmcgfCBvYmplY3QgfCB1bmRlZmluZWQ7XG50eXBlIFByb3BTZWxlY3RvcjxSPiA9IFNlbGVjdG9yPE1hcENvbnRhaW5lclByb3BzLCBSPjtcblxuZXhwb3J0IGludGVyZmFjZSBNYXBDb250YWluZXJQcm9wcyB7XG4gIHZpc1N0YXRlOiBWaXNTdGF0ZTtcbiAgbWFwU3RhdGU6IE1hcFN0YXRlO1xuICBtYXBDb250cm9sczogTWFwQ29udHJvbHM7XG4gIG1hcFN0eWxlOiB7Ym90dG9tTWFwU3R5bGU/OiBNYXBib3hTdHlsZTsgdG9wTWFwU3R5bGU/OiBNYXBib3hTdHlsZX0gJiBNYXBTdHlsZTtcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW46IHN0cmluZztcbiAgbWFwYm94QXBpVXJsOiBzdHJpbmc7XG4gIHZpc1N0YXRlQWN0aW9uczogdHlwZW9mIFZpc1N0YXRlQWN0aW9ucztcbiAgbWFwU3RhdGVBY3Rpb25zOiB0eXBlb2YgTWFwU3RhdGVBY3Rpb25zO1xuICB1aVN0YXRlQWN0aW9uczogdHlwZW9mIFVJU3RhdGVBY3Rpb25zO1xuXG4gIC8vIG9wdGlvbmFsXG4gIHByaW1hcnk/OiBib29sZWFuOyAvLyBwcmltYXJ5IG9uZSB3aWxsIGJlIHJlcG9ydGluZyBpdHMgc2l6ZSB0byBhcHBTdGF0ZVxuICByZWFkT25seT86IGJvb2xlYW47XG4gIGlzRXhwb3J0PzogYm9vbGVhbjtcbiAgLy8gb25NYXBTdHlsZUxvYWRlZD86IChtYXA6IG1hcGxpYnJlZ2wuTWFwIHwgUmV0dXJuVHlwZTxNYXBSZWZbJ2dldE1hcCddPiB8IG51bGwpID0+IHZvaWQ7XG4gIG9uTWFwU3R5bGVMb2FkZWQ/OiAobWFwOiBHZXRNYXBSZWYgfCBudWxsKSA9PiB2b2lkO1xuICBvbk1hcFJlbmRlcj86IChtYXA6IEdldE1hcFJlZiB8IG51bGwpID0+IHZvaWQ7XG4gIGdldE1hcGJveFJlZj86IChtYXBib3g/OiBNYXBSZWYgfCBudWxsLCBpbmRleD86IG51bWJlcikgPT4gdm9pZDtcbiAgaW5kZXg/OiBudW1iZXI7XG4gIGRlbGV0ZU1hcExhYmVscz86IChjb250YWluZXJJZDogc3RyaW5nLCBsYXllcklkOiBzdHJpbmcpID0+IHZvaWQ7XG4gIGNvbnRhaW5lcklkPzogbnVtYmVyO1xuXG4gIGlzTG9hZGluZ0luZGljYXRvclZpc2libGU/OiBib29sZWFuO1xuICBhY3RpdmVTaWRlUGFuZWw6IHN0cmluZyB8IG51bGw7XG4gIHNpZGVQYW5lbFdpZHRoPzogbnVtYmVyO1xuXG4gIGxvY2FsZT86IGFueTtcbiAgdGhlbWU/OiBhbnk7XG4gIGVkaXRvcj86IGFueTtcbiAgTWFwQ29tcG9uZW50PzogdHlwZW9mIE1hcDtcbiAgZGVja0dsUHJvcHM/OiBhbnk7XG4gIG9uRGVja0luaXRpYWxpemVkPzogKGE6IGFueSwgYjogYW55KSA9PiB2b2lkO1xuICBvblZpZXdTdGF0ZUNoYW5nZT86ICh2aWV3cG9ydDogVmlld3BvcnQpID0+IHZvaWQ7XG5cbiAgdG9wTWFwQ29udGFpbmVyUHJvcHM6IGFueTtcbiAgYm90dG9tTWFwQ29udGFpbmVyUHJvcHM6IGFueTtcbiAgdHJhbnNmb3JtUmVxdWVzdD86ICh1cmw6IHN0cmluZywgcmVzb3VyY2VUeXBlPzogc3RyaW5nKSA9PiB7dXJsOiBzdHJpbmd9O1xuXG4gIGRhdGFzZXRBdHRyaWJ1dGlvbnM/OiBEYXRhc2V0QXR0cmlidXRpb25bXTtcblxuICBnZW5lcmF0ZU1hcGJveExheWVycz86IHR5cGVvZiBnZW5lcmF0ZU1hcGJveExheWVycztcbiAgZ2VuZXJhdGVEZWNrR0xMYXllcnM/OiB0eXBlb2YgY29tcHV0ZURlY2tMYXllcnM7XG5cbiAgb25Nb3VzZU1vdmU/OiAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQgJiB7bG5nTGF0PzogW251bWJlciwgbnVtYmVyXX0pID0+IHZvaWQ7XG5cbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIGRlY2tSZW5kZXJDYWxsYmFja3M/OiB7XG4gICAgb25EZWNrTG9hZD86ICgpID0+IHZvaWQ7XG4gICAgb25EZWNrUmVuZGVyPzogKGRlY2tQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbDtcbiAgICBvbkRlY2tBZnRlclJlbmRlcj86IChkZWNrUHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBhbnk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1hcENvbnRhaW5lckZhY3RvcnkoXG4gIE1hcFBvcG92ZXI6IFJldHVyblR5cGU8dHlwZW9mIE1hcFBvcG92ZXJGYWN0b3J5PixcbiAgTWFwQ29udHJvbDogUmV0dXJuVHlwZTx0eXBlb2YgTWFwQ29udHJvbEZhY3Rvcnk+LFxuICBFZGl0b3I6IFJldHVyblR5cGU8dHlwZW9mIEVkaXRvckZhY3Rvcnk+XG4pOiBSZWFjdC5Db21wb25lbnRUeXBlPE1hcENvbnRhaW5lclByb3BzPiB7XG4gIGNsYXNzIE1hcENvbnRhaW5lciBleHRlbmRzIENvbXBvbmVudDxNYXBDb250YWluZXJQcm9wcz4ge1xuICAgIGRpc3BsYXlOYW1lID0gJ01hcENvbnRhaW5lcic7XG5cbiAgICBzdGF0aWMgY29udGV4dFR5cGUgPSBNYXBWaWV3U3RhdGVDb250ZXh0O1xuXG4gICAgZGVjbGFyZSBjb250ZXh0OiBSZWFjdC5Db250ZXh0VHlwZTx0eXBlb2YgTWFwVmlld1N0YXRlQ29udGV4dD47XG5cbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgICAgTWFwQ29tcG9uZW50OiBNYXAsXG4gICAgICBkZWNrR2xQcm9wczoge30sXG4gICAgICBpbmRleDogMCxcbiAgICAgIHByaW1hcnk6IHRydWVcbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgIHN1cGVyKHByb3BzKTtcbiAgICB9XG5cbiAgICBzdGF0ZSA9IHtcbiAgICAgIC8vIERldGVybWluZXMgd2hldGhlciBhdHRyaWJ1dGlvbiBzaG91bGQgYmUgdmlzaWJsZSBiYXNlZCB0aGUgcmVzdWx0IG9mIGxvYWRpbmcgdGhlIG1hcCBzdHlsZVxuICAgICAgc2hvd0Jhc2VNYXBBdHRyaWJ1dGlvbjogdHJ1ZVxuICAgIH07XG5cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIGlmICghdGhpcy5fcmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgb2JzZXJ2ZURpbWVuc2lvbnModGhpcy5fcmVmLmN1cnJlbnQsIHRoaXMuX2hhbmRsZVJlc2l6ZSk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICAvLyB1bmJpbmQgbWFwYm94Z2wgZXZlbnQgbGlzdGVuZXJcbiAgICAgIGlmICh0aGlzLl9tYXApIHtcbiAgICAgICAgdGhpcy5fbWFwPy5vZmYoTUFQQk9YR0xfU1RZTEVfVVBEQVRFLCBub3ApO1xuICAgICAgICB0aGlzLl9tYXA/Lm9mZihNQVBCT1hHTF9SRU5ERVIsIG5vcCk7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuX3JlZi5jdXJyZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHVub2JzZXJ2ZURpbWVuc2lvbnModGhpcy5fcmVmLmN1cnJlbnQpO1xuICAgIH1cblxuICAgIF9kZWNrOiBhbnkgPSBudWxsO1xuICAgIF9tYXA6IEdldE1hcFJlZiB8IG51bGwgPSBudWxsO1xuICAgIF9yZWYgPSBjcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG4gICAgX2RlY2tHTEVycm9yc0VsYXBzZWQ6IHtbaWQ6IHN0cmluZ106IG51bWJlcn0gPSB7fTtcblxuICAgIHByZXZpb3VzTGF5ZXJzID0ge1xuICAgICAgLy8gW2xheWVycy5pZF06IG1hcGJveExheWVyQ29uZmlnXG4gICAgfTtcblxuICAgIF9oYW5kbGVSZXNpemUgPSBkaW1lbnNpb25zID0+IHtcbiAgICAgIGNvbnN0IHtwcmltYXJ5LCBpbmRleH0gPSB0aGlzLnByb3BzO1xuICAgICAgaWYgKHByaW1hcnkpIHtcbiAgICAgICAgY29uc3Qge21hcFN0YXRlQWN0aW9uc30gPSB0aGlzLnByb3BzO1xuICAgICAgICBpZiAoZGltZW5zaW9ucyAmJiBkaW1lbnNpb25zLndpZHRoID4gMCAmJiBkaW1lbnNpb25zLmhlaWdodCA+IDApIHtcbiAgICAgICAgICBtYXBTdGF0ZUFjdGlvbnMudXBkYXRlTWFwKGRpbWVuc2lvbnMsIGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBsYXllcnNTZWxlY3RvcjogUHJvcFNlbGVjdG9yPFZpc1N0YXRlWydsYXllcnMnXT4gPSBwcm9wcyA9PiBwcm9wcy52aXNTdGF0ZS5sYXllcnM7XG4gICAgbGF5ZXJEYXRhU2VsZWN0b3I6IFByb3BTZWxlY3RvcjxWaXNTdGF0ZVsnbGF5ZXJzJ10+ID0gcHJvcHMgPT4gcHJvcHMudmlzU3RhdGUubGF5ZXJEYXRhO1xuICAgIHNwbGl0TWFwU2VsZWN0b3I6IFByb3BTZWxlY3RvcjxTcGxpdE1hcFtdPiA9IHByb3BzID0+IHByb3BzLnZpc1N0YXRlLnNwbGl0TWFwcztcbiAgICBzcGxpdE1hcEluZGV4U2VsZWN0b3I6IFByb3BTZWxlY3RvcjxudW1iZXIgfCB1bmRlZmluZWQ+ID0gcHJvcHMgPT4gcHJvcHMuaW5kZXg7XG4gICAgbWFwTGF5ZXJzU2VsZWN0b3I6IFByb3BTZWxlY3RvcjxTcGxpdE1hcExheWVycyB8IG51bGwgfCB1bmRlZmluZWQ+ID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLnNwbGl0TWFwU2VsZWN0b3IsXG4gICAgICB0aGlzLnNwbGl0TWFwSW5kZXhTZWxlY3RvcixcbiAgICAgIGdldE1hcExheWVyc0Zyb21TcGxpdE1hcHNcbiAgICApO1xuICAgIGxheWVyT3JkZXJTZWxlY3RvcjogUHJvcFNlbGVjdG9yPFZpc1N0YXRlWydsYXllck9yZGVyJ10+ID0gcHJvcHMgPT4gcHJvcHMudmlzU3RhdGUubGF5ZXJPcmRlcjtcbiAgICBsYXllcnNUb1JlbmRlclNlbGVjdG9yOiBQcm9wU2VsZWN0b3I8TGF5ZXJzVG9SZW5kZXI+ID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmxheWVyc1NlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllckRhdGFTZWxlY3RvcixcbiAgICAgIHRoaXMubWFwTGF5ZXJzU2VsZWN0b3IsXG4gICAgICBwcmVwYXJlTGF5ZXJzVG9SZW5kZXJcbiAgICApO1xuICAgIGxheWVyc0ZvckRlY2tTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy5sYXllcnNTZWxlY3RvcixcbiAgICAgIHRoaXMubGF5ZXJEYXRhU2VsZWN0b3IsXG4gICAgICBwcmVwYXJlTGF5ZXJzRm9yRGVja1xuICAgICk7XG4gICAgZmlsdGVyc1NlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMudmlzU3RhdGUuZmlsdGVycztcbiAgICBwb2x5Z29uRmlsdGVyc1NlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IodGhpcy5maWx0ZXJzU2VsZWN0b3IsIGZpbHRlcnMgPT5cbiAgICAgIGZpbHRlcnMuZmlsdGVyKGYgPT4gZi50eXBlID09PSBGSUxURVJfVFlQRVMucG9seWdvbiAmJiBmLmVuYWJsZWQgIT09IGZhbHNlKVxuICAgICk7XG4gICAgZmVhdHVyZXNTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLnZpc1N0YXRlLmVkaXRvci5mZWF0dXJlcztcbiAgICBzZWxlY3RlZEZlYXR1cmVTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLnZpc1N0YXRlLmVkaXRvci5zZWxlY3RlZEZlYXR1cmU7XG4gICAgZmVhdHVyZUNvbGxlY3Rpb25TZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy5wb2x5Z29uRmlsdGVyc1NlbGVjdG9yLFxuICAgICAgdGhpcy5mZWF0dXJlc1NlbGVjdG9yLFxuICAgICAgKHBvbHlnb25GaWx0ZXJzLCBmZWF0dXJlcykgPT4gKHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgICAgZmVhdHVyZXM6IGZlYXR1cmVzLmNvbmNhdChwb2x5Z29uRmlsdGVycy5tYXAoZiA9PiBmLnZhbHVlKSlcbiAgICAgIH0pXG4gICAgKTtcbiAgICAvLyBAdHMtaWdub3JlIC0gTm8gb3ZlcmxvYWQgbWF0Y2hlcyB0aGlzIGNhbGxcbiAgICBzZWxlY3RlZFBvbHlnb25JbmRleFNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmZlYXR1cmVDb2xsZWN0aW9uU2VsZWN0b3IsXG4gICAgICB0aGlzLnNlbGVjdGVkRmVhdHVyZVNlbGVjdG9yLFxuICAgICAgKGNvbGxlY3Rpb24sIHNlbGVjdGVkRmVhdHVyZSkgPT5cbiAgICAgICAgY29sbGVjdGlvbi5mZWF0dXJlcy5maW5kSW5kZXgoZiA9PiBmLmlkID09PSBzZWxlY3RlZEZlYXR1cmU/LmlkKVxuICAgICk7XG4gICAgc2VsZWN0ZWRGZWF0dXJlSW5kZXhBcnJheVNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICAodmFsdWU6IG51bWJlcikgPT4gdmFsdWUsXG4gICAgICB2YWx1ZSA9PiB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA8IDAgPyBbXSA6IFt2YWx1ZV07XG4gICAgICB9XG4gICAgKTtcblxuICAgIGdlbmVyYXRlTWFwYm94TGF5ZXJNZXRob2RTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLmdlbmVyYXRlTWFwYm94TGF5ZXJzID8/IGdlbmVyYXRlTWFwYm94TGF5ZXJzO1xuXG4gICAgbWFwYm94TGF5ZXJzU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMubGF5ZXJzU2VsZWN0b3IsXG4gICAgICB0aGlzLmxheWVyRGF0YVNlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllck9yZGVyU2VsZWN0b3IsXG4gICAgICB0aGlzLmxheWVyc1RvUmVuZGVyU2VsZWN0b3IsXG4gICAgICB0aGlzLmdlbmVyYXRlTWFwYm94TGF5ZXJNZXRob2RTZWxlY3RvcixcbiAgICAgIChsYXllciwgbGF5ZXJEYXRhLCBsYXllck9yZGVyLCBsYXllcnNUb1JlbmRlciwgZ2VuZXJhdGVNYXBib3hMYXllck1ldGhvZCkgPT5cbiAgICAgICAgZ2VuZXJhdGVNYXBib3hMYXllck1ldGhvZChsYXllciwgbGF5ZXJEYXRhLCBsYXllck9yZGVyLCBsYXllcnNUb1JlbmRlcilcbiAgICApO1xuXG4gICAgLy8gbWVyZ2UgaW4gYSBiYWNrZ3JvdW5kLWNvbG9yIHN0eWxlIGlmIHRoZSBiYXNlbWFwIGNob2ljZSBpcyBOT19NQVBfSURcbiAgICAvLyB1c2VkIGJ5IDxTdHlsZWRNYXA+IGlubGluZSBzdHlsZSBwcm9wXG4gICAgbWFwU3R5bGVUeXBlU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5tYXBTdHlsZS5zdHlsZVR5cGU7XG4gICAgbWFwU3R5bGVCYWNrZ3JvdW5kQ29sb3JTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLm1hcFN0eWxlLmJhY2tncm91bmRDb2xvcjtcbiAgICBzdHlsZVNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLm1hcFN0eWxlVHlwZVNlbGVjdG9yLFxuICAgICAgdGhpcy5tYXBTdHlsZUJhY2tncm91bmRDb2xvclNlbGVjdG9yLFxuICAgICAgKHN0eWxlVHlwZSwgYmFja2dyb3VuZENvbG9yKSA9PiAoe1xuICAgICAgICAuLi5NQVBfU1RZTEUuY29udGFpbmVyLFxuICAgICAgICAuLi4oc3R5bGVUeXBlID09PSBOT19NQVBfSUQgPyB7YmFja2dyb3VuZENvbG9yOiByZ2JUb0hleChiYWNrZ3JvdW5kQ29sb3IpfSA6IHt9KVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgLyogY29tcG9uZW50IHByaXZhdGUgZnVuY3Rpb25zICovXG4gICAgX29uQ2xvc2VNYXBQb3BvdmVyID0gKCkgPT4ge1xuICAgICAgdGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMub25MYXllckNsaWNrKG51bGwpO1xuICAgIH07XG5cbiAgICBfb25MYXllckhvdmVyID0gKF9pZHg6IG51bWJlciwgaW5mbzogUGlja0luZm88YW55PiB8IG51bGwpID0+IHtcbiAgICAgIHRoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLm9uTGF5ZXJIb3ZlcihpbmZvLCB0aGlzLnByb3BzLmluZGV4KTtcbiAgICB9O1xuXG4gICAgX29uTGF5ZXJTZXREb21haW4gPSAoXG4gICAgICBpZHg6IG51bWJlcixcbiAgICAgIHZhbHVlOiB7ZG9tYWluOiBWaXN1YWxDaGFubmVsRG9tYWluOyBhZ2dyZWdhdGVkQmluczogQWdncmVnYXRlZEJpbltdfVxuICAgICkgPT4ge1xuICAgICAgdGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMubGF5ZXJDb25maWdDaGFuZ2UodGhpcy5wcm9wcy52aXNTdGF0ZS5sYXllcnNbaWR4XSwge1xuICAgICAgICBjb2xvckRvbWFpbjogdmFsdWUuZG9tYWluLFxuICAgICAgICBhZ2dyZWdhdGVkQmluczogdmFsdWUuYWdncmVnYXRlZEJpbnNcbiAgICAgIH0gYXMgUGFydGlhbDxMYXllckJhc2VDb25maWc+KTtcbiAgICB9O1xuXG4gICAgX29uTGF5ZXJGaWx0ZXJlZEl0ZW1zQ2hhbmdlID0gKGlkeCwgZXZlbnQpID0+IHtcbiAgICAgIHRoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLmxheWVyRmlsdGVyZWRJdGVtc0NoYW5nZSh0aGlzLnByb3BzLnZpc1N0YXRlLmxheWVyc1tpZHhdLCBldmVudCk7XG4gICAgfTtcblxuICAgIF9oYW5kbGVNYXBUb2dnbGVMYXllciA9IGxheWVySWQgPT4ge1xuICAgICAgY29uc3Qge2luZGV4OiBtYXBJbmRleCA9IDAsIHZpc1N0YXRlQWN0aW9uc30gPSB0aGlzLnByb3BzO1xuICAgICAgdmlzU3RhdGVBY3Rpb25zLnRvZ2dsZUxheWVyRm9yTWFwKG1hcEluZGV4LCBsYXllcklkKTtcbiAgICB9O1xuXG4gICAgX29uTWFwYm94U3R5bGVVcGRhdGUgPSB1cGRhdGUgPT4ge1xuICAgICAgLy8gZm9yY2UgcmVmcmVzaCBtYXBib3hnbCBsYXllcnNcbiAgICAgIHRoaXMucHJldmlvdXNMYXllcnMgPSB7fTtcbiAgICAgIHRoaXMuX3VwZGF0ZU1hcGJveExheWVycygpO1xuXG4gICAgICBpZiAodXBkYXRlICYmIHVwZGF0ZS5zdHlsZSkge1xuICAgICAgICAvLyBObyBhdHRyaWJ1dGlvbnMgYXJlIG5lZWRlZCBpZiB0aGUgc3R5bGUgZG9lc24ndCByZWZlcmVuY2UgTWFwYm94IHNvdXJjZXNcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgc2hvd0Jhc2VNYXBBdHRyaWJ1dGlvbjpcbiAgICAgICAgICAgIGlzU3R5bGVVc2luZ01hcGJveFRpbGVzKHVwZGF0ZS5zdHlsZSkgfHwgIWlzU3R5bGVVc2luZ09wZW5TdHJlZXRNYXBUaWxlcyh1cGRhdGUuc3R5bGUpXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25NYXBTdHlsZUxvYWRlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLnByb3BzLm9uTWFwU3R5bGVMb2FkZWQodGhpcy5fbWFwKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX3NldE1hcFJlZiA9IG1hcFJlZiA9PiB7XG4gICAgICAvLyBIYW5kbGUgY2hhbmdlIG9mIHRoZSBtYXAgbGlicmFyeVxuICAgICAgaWYgKHRoaXMuX21hcCAmJiBtYXBSZWYpIHtcbiAgICAgICAgY29uc3QgbWFwID0gbWFwUmVmLmdldE1hcCgpO1xuICAgICAgICBpZiAobWFwICYmIHRoaXMuX21hcCAhPT0gbWFwKSB7XG4gICAgICAgICAgdGhpcy5fbWFwPy5vZmYoTUFQQk9YR0xfU1RZTEVfVVBEQVRFLCBub3ApO1xuICAgICAgICAgIHRoaXMuX21hcD8ub2ZmKE1BUEJPWEdMX1JFTkRFUiwgbm9wKTtcbiAgICAgICAgICB0aGlzLl9tYXAgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5fbWFwICYmIG1hcFJlZikge1xuICAgICAgICB0aGlzLl9tYXAgPSBtYXBSZWYuZ2V0TWFwKCk7XG4gICAgICAgIC8vIGkgbm90aWNlZCBpbiBjZXJ0YWluIGNvbnRleHQgd2UgZG9uJ3QgYWNjZXNzIHRoZSBhY3R1YWwgbWFwIGVsZW1lbnRcbiAgICAgICAgaWYgKCF0aGlzLl9tYXApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gYmluZCBtYXBib3hnbCBldmVudCBsaXN0ZW5lclxuICAgICAgICB0aGlzLl9tYXAub24oTUFQQk9YR0xfU1RZTEVfVVBEQVRFLCB0aGlzLl9vbk1hcGJveFN0eWxlVXBkYXRlKTtcblxuICAgICAgICB0aGlzLl9tYXAub24oTUFQQk9YR0xfUkVOREVSLCAoKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLm9uTWFwUmVuZGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uTWFwUmVuZGVyKHRoaXMuX21hcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucHJvcHMuZ2V0TWFwYm94UmVmKSB7XG4gICAgICAgIC8vIFRoZSBwYXJlbnQgY29tcG9uZW50IGNhbiBnYWluIGFjY2VzcyB0byBvdXIgTWFwYm94R2xNYXAgYnlcbiAgICAgICAgLy8gcHJvdmlkaW5nIHRoaXMgY2FsbGJhY2suIE5vdGUgdGhhdCAnbWFwYm94JyB3aWxsIGJlIG51bGwgd2hlbiB0aGVcbiAgICAgICAgLy8gcmVmIGlzIHVuc2V0IChlLmcuIHdoZW4gYSBzcGxpdCBtYXAgaXMgY2xvc2VkKS5cbiAgICAgICAgdGhpcy5wcm9wcy5nZXRNYXBib3hSZWYobWFwUmVmLCB0aGlzLnByb3BzLmluZGV4KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX29uRGVja0luaXRpYWxpemVkKGdsKSB7XG4gICAgICBpZiAodGhpcy5wcm9wcy5vbkRlY2tJbml0aWFsaXplZCkge1xuICAgICAgICB0aGlzLnByb3BzLm9uRGVja0luaXRpYWxpemVkKHRoaXMuX2RlY2ssIGdsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAxKSBBbGxvdyBlZmZlY3RzIG9ubHkgZm9yIHRoZSBmaXJzdCB2aWV3LlxuICAgICAqIDIpIFByZXZlbnQgZWZmZWN0OnByZVJlbmRlciBjYWxsIHdpdGhvdXQgdmFsaWQgZ2VuZXJhdGVkIHZpZXdwb3J0cy5cbiAgICAgKiBAcGFyYW0gdmlld0luZGV4IFZpZXcgaW5kZXguXG4gICAgICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIGVmZmVjdHMgY2FuIGJlIHVzZWQuXG4gICAgICovXG4gICAgX2lzT0tUb1JlbmRlckVmZmVjdHModmlld0luZGV4PzogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gIXZpZXdJbmRleCAmJiBCb29sZWFuKHRoaXMuX2RlY2s/LnZpZXdNYW5hZ2VyPy5fdmlld3BvcnRzPy5sZW5ndGgpO1xuICAgIH1cblxuICAgIF9vbkJlZm9yZVJlbmRlciA9ICh7Z2x9KSA9PiB7XG4gICAgICBzZXRMYXllckJsZW5kaW5nKGdsLCB0aGlzLnByb3BzLnZpc1N0YXRlLmxheWVyQmxlbmRpbmcpO1xuICAgIH07XG5cbiAgICBfb25EZWNrRXJyb3IgPSAoZXJyb3IsIGxheWVyKSA9PiB7XG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvcj8ubWVzc2FnZSB8fCAndW5rbm93bi1lcnJvcic7XG4gICAgICBjb25zdCBsYXllck1lc3NhZ2UgPSBsYXllcj8uaWQgPyBgIGluICR7bGF5ZXIuaWR9IGxheWVyYCA6ICcnO1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlRnVsbCA9XG4gICAgICAgIGVycm9yTWVzc2FnZSA9PT0gJ1dlYkdMIGNvbnRleHQgaXMgbG9zdCdcbiAgICAgICAgICA/ICdZb3VyIEdQVSB3YXMgZGlzY29ubmVjdGVkLiBUaGlzIGNhbiBoYXBwZW4gaWYgeW91ciBjb21wdXRlciBnb2VzIHRvIHNsZWVwLiBJdCBjYW4gYWxzbyBvY2N1ciBmb3Igb3RoZXIgcmVhc29ucywgc3VjaCBhcyBpZiB5b3UgYXJlIHJ1bm5pbmcgdG9vIG1hbnkgR1BVIGFwcGxpY2F0aW9ucy4nXG4gICAgICAgICAgOiBgQW4gZXJyb3IgaW4gZGVjay5nbDogJHtlcnJvck1lc3NhZ2V9JHtsYXllck1lc3NhZ2V9LmA7XG5cbiAgICAgIC8vIFRocm90dGxlIGVycm9yIG5vdGlmaWNhdGlvbnMsIGFzIFJlYWN0IGRvZXNuJ3QgbGlrZSB0b28gbWFueSBzdGF0ZSBjaGFuZ2VzIGZyb20gaGVyZS5cbiAgICAgIGNvbnN0IGxhc3RTaG93biA9IHRoaXMuX2RlY2tHTEVycm9yc0VsYXBzZWRbZXJyb3JNZXNzYWdlRnVsbF07XG4gICAgICBpZiAoIWxhc3RTaG93biB8fCBsYXN0U2hvd24gPCBEYXRlLm5vdygpIC0gVEhST1RUTEVfTk9USUZJQ0FUSU9OX1RJTUUpIHtcbiAgICAgICAgdGhpcy5fZGVja0dMRXJyb3JzRWxhcHNlZFtlcnJvck1lc3NhZ2VGdWxsXSA9IERhdGUubm93KCk7XG5cbiAgICAgICAgLy8gTWFyayBsYXllciBhcyBpbnZhbGlkXG4gICAgICAgIGxldCBleHRyYUxheWVyTWVzc2FnZSA9ICcnO1xuICAgICAgICBjb25zdCB7dmlzU3RhdGVBY3Rpb25zfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGlmIChsYXllcikge1xuICAgICAgICAgIGxldCB0b3BNb3N0TGF5ZXIgPSBsYXllcjtcbiAgICAgICAgICB3aGlsZSAodG9wTW9zdExheWVyLnBhcmVudCkge1xuICAgICAgICAgICAgdG9wTW9zdExheWVyID0gdG9wTW9zdExheWVyLnBhcmVudDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRvcE1vc3RMYXllci5wcm9wcz8uaWQpIHtcbiAgICAgICAgICAgIHZpc1N0YXRlQWN0aW9ucy5sYXllclNldElzVmFsaWQodG9wTW9zdExheWVyLCBmYWxzZSk7XG4gICAgICAgICAgICBleHRyYUxheWVyTWVzc2FnZSA9ICdUaGUgbGF5ZXIgaGFzIGJlZW4gZGlzYWJsZWQgYW5kIGhpZ2hsaWdodGVkLic7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIG5ldyBlcnJvciBub3RpZmljYXRpb24gb3IgdXBkYXRlIGV4aXN0aW5nIG9uZSB3aXRoIHNhbWUgaWQuXG4gICAgICAgIC8vIFVwZGF0ZSBpcyByZXF1aXJlZCB0byBwcmVzZXJ2ZSB0aGUgb3JkZXIgb2Ygbm90aWZpY2F0aW9ucyBhcyB0aGV5IHByb2JhYmx5IGFyZSBnb2luZyB0byBcImp1bXBcIiBiYXNlZCBvbiBvcmRlciBvZiBlcnJvcnMuXG4gICAgICAgIGNvbnN0IHt1aVN0YXRlQWN0aW9uc30gPSB0aGlzLnByb3BzO1xuICAgICAgICB1aVN0YXRlQWN0aW9ucy5hZGROb3RpZmljYXRpb24oXG4gICAgICAgICAgZXJyb3JOb3RpZmljYXRpb24oe1xuICAgICAgICAgICAgbWVzc2FnZTogYCR7ZXJyb3JNZXNzYWdlRnVsbH0gJHtleHRyYUxheWVyTWVzc2FnZX1gLFxuICAgICAgICAgICAgaWQ6IGVycm9yTWVzc2FnZUZ1bGwgLy8gdHJlYXQgdGhlIGVycm9yIG1lc3NhZ2UgYXMgaWRcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvKiBjb21wb25lbnQgcmVuZGVyIGZ1bmN0aW9ucyAqL1xuXG4gICAgLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuICAgIF9yZW5kZXJNYXBQb3BvdmVyKCkge1xuICAgICAgLy8gdGhpcyBjaGVjayBpcyBmb3IgbGltaXRpbmcgdGhlIGRpc3BsYXkgb2YgdGhlIGA8TWFwUG9wb3Zlcj5gIHRvIHRoZSBgPE1hcENvbnRhaW5lcj5gIHRoZSB1c2VyIGlzIGludGVyYWN0aW5nIHdpdGhcbiAgICAgIC8vIHRoZSBEZWNrR0wgb25Ib3ZlciBldmVudCBoYW5kbGVyIGFkZHMgYSBgbWFwSW5kZXhgIHByb3BlcnR5IHdoaWNoIGlzIGF2YWlsYWJsZSBpbiB0aGUgYGhvdmVySW5mb2Agb2JqZWN0IG9mIGB2aXNTdGF0ZWBcbiAgICAgIGlmICh0aGlzLnByb3BzLmluZGV4ICE9PSB0aGlzLnByb3BzLnZpc1N0YXRlLmhvdmVySW5mbz8ubWFwSW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIFRPRE86IG1vdmUgdGhpcyBpbnRvIHJlZHVjZXIgc28gaXQgY2FuIGJlIHRlc3RlZFxuICAgICAgY29uc3Qge1xuICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgdmlzU3RhdGU6IHtcbiAgICAgICAgICBob3ZlckluZm8sXG4gICAgICAgICAgY2xpY2tlZCxcbiAgICAgICAgICBkYXRhc2V0cyxcbiAgICAgICAgICBpbnRlcmFjdGlvbkNvbmZpZyxcbiAgICAgICAgICBhbmltYXRpb25Db25maWcsXG4gICAgICAgICAgbGF5ZXJzLFxuICAgICAgICAgIG1vdXNlUG9zOiB7bW91c2VQb3NpdGlvbiwgY29vcmRpbmF0ZSwgcGlubmVkfVxuICAgICAgICB9XG4gICAgICB9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IGxheWVyc1RvUmVuZGVyID0gdGhpcy5sYXllcnNUb1JlbmRlclNlbGVjdG9yKHRoaXMucHJvcHMpO1xuXG4gICAgICBpZiAoIW1vdXNlUG9zaXRpb24gfHwgIWludGVyYWN0aW9uQ29uZmlnLnRvb2x0aXApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxheWVySG92ZXJQcm9wID0gZ2V0TGF5ZXJIb3ZlclByb3Aoe1xuICAgICAgICBhbmltYXRpb25Db25maWcsXG4gICAgICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgICAgICBob3ZlckluZm8sXG4gICAgICAgIGxheWVycyxcbiAgICAgICAgbGF5ZXJzVG9SZW5kZXIsXG4gICAgICAgIGRhdGFzZXRzXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgY29tcGFyZU1vZGUgPSBpbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwLmNvbmZpZ1xuICAgICAgICA/IGludGVyYWN0aW9uQ29uZmlnLnRvb2x0aXAuY29uZmlnLmNvbXBhcmVNb2RlXG4gICAgICAgIDogZmFsc2U7XG5cbiAgICAgIGxldCBwaW5uZWRQb3NpdGlvbiA9IHt4OiAwLCB5OiAwfTtcbiAgICAgIGxldCBsYXllclBpbm5lZFByb3A6IExheWVySG92ZXJQcm9wIHwgbnVsbCA9IG51bGw7XG4gICAgICBpZiAocGlubmVkIHx8IGNsaWNrZWQpIHtcbiAgICAgICAgLy8gcHJvamVjdCBsbmdsYXQgdG8gc2NyZWVuIHNvIHRoYXQgdG9vbHRpcCBmb2xsb3dzIHRoZSBvYmplY3Qgb24gem9vbVxuICAgICAgICBjb25zdCB2aWV3cG9ydCA9IGdldFZpZXdwb3J0RnJvbU1hcFN0YXRlKG1hcFN0YXRlKTtcbiAgICAgICAgY29uc3QgbG5nTGF0ID0gY2xpY2tlZCA/IGNsaWNrZWQuY29vcmRpbmF0ZSA6IHBpbm5lZC5jb29yZGluYXRlO1xuICAgICAgICBwaW5uZWRQb3NpdGlvbiA9IHRoaXMuX2dldEhvdmVyWFkodmlld3BvcnQsIGxuZ0xhdCk7XG4gICAgICAgIGxheWVyUGlubmVkUHJvcCA9IGdldExheWVySG92ZXJQcm9wKHtcbiAgICAgICAgICBhbmltYXRpb25Db25maWcsXG4gICAgICAgICAgaW50ZXJhY3Rpb25Db25maWcsXG4gICAgICAgICAgaG92ZXJJbmZvOiBjbGlja2VkLFxuICAgICAgICAgIGxheWVycyxcbiAgICAgICAgICBsYXllcnNUb1JlbmRlcixcbiAgICAgICAgICBkYXRhc2V0c1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGxheWVySG92ZXJQcm9wICYmIGxheWVyUGlubmVkUHJvcCkge1xuICAgICAgICAgIGxheWVySG92ZXJQcm9wLnByaW1hcnlEYXRhID0gbGF5ZXJQaW5uZWRQcm9wLmRhdGE7XG4gICAgICAgICAgbGF5ZXJIb3ZlclByb3AuY29tcGFyZVR5cGUgPSBpbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwLmNvbmZpZy5jb21wYXJlVHlwZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBjb21tb25Qcm9wID0ge1xuICAgICAgICBvbkNsb3NlOiB0aGlzLl9vbkNsb3NlTWFwUG9wb3ZlcixcbiAgICAgICAgem9vbTogbWFwU3RhdGUuem9vbSxcbiAgICAgICAgY29udGFpbmVyOiB0aGlzLl9kZWNrID8gdGhpcy5fZGVjay5jYW52YXMgOiB1bmRlZmluZWRcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxFcnJvckJvdW5kYXJ5PlxuICAgICAgICAgIHtsYXllclBpbm5lZFByb3AgJiYgKFxuICAgICAgICAgICAgPE1hcFBvcG92ZXJcbiAgICAgICAgICAgICAgey4uLnBpbm5lZFBvc2l0aW9ufVxuICAgICAgICAgICAgICB7Li4uY29tbW9uUHJvcH1cbiAgICAgICAgICAgICAgbGF5ZXJIb3ZlclByb3A9e2xheWVyUGlubmVkUHJvcH1cbiAgICAgICAgICAgICAgY29vcmRpbmF0ZT17aW50ZXJhY3Rpb25Db25maWcuY29vcmRpbmF0ZS5lbmFibGVkICYmIChwaW5uZWQgfHwge30pLmNvb3JkaW5hdGV9XG4gICAgICAgICAgICAgIGZyb3plbj17dHJ1ZX1cbiAgICAgICAgICAgICAgaXNCYXNlPXtjb21wYXJlTW9kZX1cbiAgICAgICAgICAgICAgb25TZXRGZWF0dXJlcz17dGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMuc2V0RmVhdHVyZXN9XG4gICAgICAgICAgICAgIHNldFNlbGVjdGVkRmVhdHVyZT17dGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMuc2V0U2VsZWN0ZWRGZWF0dXJlfVxuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIEFyZ3VtZW50IG9mIHR5cGUgJ1JlYWRvbmx5PE1hcENvbnRhaW5lclByb3BzPicgaXMgbm90IGFzc2lnbmFibGUgdG8gcGFyYW1ldGVyIG9mIHR5cGUgJ25ldmVyJ1xuICAgICAgICAgICAgICBmZWF0dXJlQ29sbGVjdGlvbj17dGhpcy5mZWF0dXJlQ29sbGVjdGlvblNlbGVjdG9yKHRoaXMucHJvcHMpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtsYXllckhvdmVyUHJvcCAmJiAoIWxheWVyUGlubmVkUHJvcCB8fCBjb21wYXJlTW9kZSkgJiYgKFxuICAgICAgICAgICAgPE1hcFBvcG92ZXJcbiAgICAgICAgICAgICAgeD17bW91c2VQb3NpdGlvblswXX1cbiAgICAgICAgICAgICAgeT17bW91c2VQb3NpdGlvblsxXX1cbiAgICAgICAgICAgICAgey4uLmNvbW1vblByb3B9XG4gICAgICAgICAgICAgIGxheWVySG92ZXJQcm9wPXtsYXllckhvdmVyUHJvcH1cbiAgICAgICAgICAgICAgZnJvemVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgY29vcmRpbmF0ZT17aW50ZXJhY3Rpb25Db25maWcuY29vcmRpbmF0ZS5lbmFibGVkICYmIGNvb3JkaW5hdGV9XG4gICAgICAgICAgICAgIG9uU2V0RmVhdHVyZXM9e3RoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLnNldEZlYXR1cmVzfVxuICAgICAgICAgICAgICBzZXRTZWxlY3RlZEZlYXR1cmU9e3RoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLnNldFNlbGVjdGVkRmVhdHVyZX1cbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBBcmd1bWVudCBvZiB0eXBlICdSZWFkb25seTxNYXBDb250YWluZXJQcm9wcz4nIGlzIG5vdCBhc3NpZ25hYmxlIHRvIHBhcmFtZXRlciBvZiB0eXBlICduZXZlcidcbiAgICAgICAgICAgICAgZmVhdHVyZUNvbGxlY3Rpb249e3RoaXMuZmVhdHVyZUNvbGxlY3Rpb25TZWxlY3Rvcih0aGlzLnByb3BzKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9FcnJvckJvdW5kYXJ5PlxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiBlc2xpbnQtZW5hYmxlIGNvbXBsZXhpdHkgKi9cblxuICAgIF9nZXRIb3ZlclhZKHZpZXdwb3J0LCBsbmdMYXQpIHtcbiAgICAgIGNvbnN0IHNjcmVlbkNvb3JkID0gIXZpZXdwb3J0IHx8ICFsbmdMYXQgPyBudWxsIDogdmlld3BvcnQucHJvamVjdChsbmdMYXQpO1xuICAgICAgcmV0dXJuIHNjcmVlbkNvb3JkICYmIHt4OiBzY3JlZW5Db29yZFswXSwgeTogc2NyZWVuQ29vcmRbMV19O1xuICAgIH1cblxuICAgIF9yZW5kZXJEZWNrT3ZlcmxheShcbiAgICAgIGxheWVyc0ZvckRlY2ssXG4gICAgICBvcHRpb25zOiB7cHJpbWFyeU1hcDogYm9vbGVhbjsgaXNJbnRlcmFjdGl2ZT86IGJvb2xlYW47IGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlfSA9IHtcbiAgICAgICAgcHJpbWFyeU1hcDogZmFsc2VcbiAgICAgIH1cbiAgICApIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWFwU3R5bGUsXG4gICAgICAgIHZpc1N0YXRlLFxuICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgdmlzU3RhdGVBY3Rpb25zLFxuICAgICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICAgICAgbWFwYm94QXBpVXJsLFxuICAgICAgICBkZWNrR2xQcm9wcyxcbiAgICAgICAgaW5kZXgsXG4gICAgICAgIG1hcENvbnRyb2xzLFxuICAgICAgICBkZWNrUmVuZGVyQ2FsbGJhY2tzLFxuICAgICAgICB0aGVtZSxcbiAgICAgICAgZ2VuZXJhdGVEZWNrR0xMYXllcnMsXG4gICAgICAgIG9uTW91c2VNb3ZlXG4gICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgY29uc3Qge2hvdmVySW5mbywgZWRpdG9yfSA9IHZpc1N0YXRlO1xuICAgICAgY29uc3Qge3ByaW1hcnlNYXAsIGlzSW50ZXJhY3RpdmUsIGNoaWxkcmVufSA9IG9wdGlvbnM7XG5cbiAgICAgIC8vIGRpc2FibGUgZG91YmxlIGNsaWNrIHpvb20gd2hlbiBlZGl0b3IgaXMgaW4gYW55IGRyYXcgbW9kZVxuICAgICAgY29uc3Qge21hcERyYXd9ID0gbWFwQ29udHJvbHM7XG4gICAgICBjb25zdCB7YWN0aXZlOiBlZGl0b3JNZW51QWN0aXZlID0gZmFsc2V9ID0gbWFwRHJhdyB8fCB7fTtcbiAgICAgIGNvbnN0IGlzRWRpdG9yRHJhd2luZ01vZGUgPSBFZGl0b3JMYXllclV0aWxzLmlzRHJhd2luZ0FjdGl2ZShlZGl0b3JNZW51QWN0aXZlLCBlZGl0b3IubW9kZSk7XG5cbiAgICAgIGNvbnN0IGludGVybmFsVmlld1N0YXRlID0gdGhpcy5jb250ZXh0Py5nZXRJbnRlcm5hbFZpZXdTdGF0ZShpbmRleCk7XG4gICAgICBjb25zdCBpbnRlcm5hbE1hcFN0YXRlID0gey4uLm1hcFN0YXRlLCAuLi5pbnRlcm5hbFZpZXdTdGF0ZX07XG4gICAgICBjb25zdCB2aWV3cG9ydCA9IGdldFZpZXdwb3J0RnJvbU1hcFN0YXRlKGludGVybmFsTWFwU3RhdGUpO1xuXG4gICAgICBjb25zdCBlZGl0b3JGZWF0dXJlU2VsZWN0ZWRJbmRleCA9IHRoaXMuc2VsZWN0ZWRQb2x5Z29uSW5kZXhTZWxlY3Rvcih0aGlzLnByb3BzKTtcblxuICAgICAgY29uc3Qge3NldEZlYXR1cmVzLCBvbkxheWVyQ2xpY2ssIHNldFNlbGVjdGVkRmVhdHVyZX0gPSB2aXNTdGF0ZUFjdGlvbnM7XG5cbiAgICAgIGNvbnN0IGdlbmVyYXRlRGVja0dMTGF5ZXJzTWV0aG9kID0gZ2VuZXJhdGVEZWNrR0xMYXllcnMgPz8gY29tcHV0ZURlY2tMYXllcnM7XG4gICAgICBjb25zdCBkZWNrR2xMYXllcnMgPSBnZW5lcmF0ZURlY2tHTExheWVyc01ldGhvZChcbiAgICAgICAge1xuICAgICAgICAgIHZpc1N0YXRlLFxuICAgICAgICAgIG1hcFN0YXRlOiBpbnRlcm5hbE1hcFN0YXRlLFxuICAgICAgICAgIG1hcFN0eWxlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBtYXBJbmRleDogaW5kZXgsXG4gICAgICAgICAgcHJpbWFyeU1hcCxcbiAgICAgICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgICAgbGF5ZXJzRm9yRGVjayxcbiAgICAgICAgICBlZGl0b3JJbmZvOiBwcmltYXJ5TWFwXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICAgICAgZWRpdG9yTWVudUFjdGl2ZSxcbiAgICAgICAgICAgICAgICBvblNldEZlYXR1cmVzOiBzZXRGZWF0dXJlcyxcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZEZlYXR1cmUsXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBBcmd1bWVudCBvZiB0eXBlICdSZWFkb25seTxNYXBDb250YWluZXJQcm9wcz4nIGlzIG5vdCBhc3NpZ25hYmxlIHRvIHBhcmFtZXRlciBvZiB0eXBlICduZXZlcidcbiAgICAgICAgICAgICAgICBmZWF0dXJlQ29sbGVjdGlvbjogdGhpcy5mZWF0dXJlQ29sbGVjdGlvblNlbGVjdG9yKHRoaXMucHJvcHMpLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkRmVhdHVyZUluZGV4ZXM6IHRoaXMuc2VsZWN0ZWRGZWF0dXJlSW5kZXhBcnJheVNlbGVjdG9yKFxuICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBBcmd1bWVudCBvZiB0eXBlICd1bmtub3duJyBpcyBub3QgYXNzaWduYWJsZSB0byBwYXJhbWV0ZXIgb2YgdHlwZSAnbnVtYmVyJy5cbiAgICAgICAgICAgICAgICAgIGVkaXRvckZlYXR1cmVTZWxlY3RlZEluZGV4XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB2aWV3cG9ydFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgb25MYXllckhvdmVyOiB0aGlzLl9vbkxheWVySG92ZXIsXG4gICAgICAgICAgb25TZXRMYXllckRvbWFpbjogdGhpcy5fb25MYXllclNldERvbWFpbixcbiAgICAgICAgICBvbkZpbHRlcmVkSXRlbXNDaGFuZ2U6IHRoaXMuX29uTGF5ZXJGaWx0ZXJlZEl0ZW1zQ2hhbmdlXG4gICAgICAgIH0sXG4gICAgICAgIGRlY2tHbFByb3BzXG4gICAgICApO1xuXG4gICAgICBjb25zdCBleHRyYURlY2tQYXJhbXM6IHtcbiAgICAgICAgZ2V0VG9vbHRpcD86IChpbmZvOiBhbnkpID0+IG9iamVjdCB8IG51bGw7XG4gICAgICAgIGdldEN1cnNvcj86ICh7aXNEcmFnZ2luZ306IHtpc0RyYWdnaW5nOiBib29sZWFufSkgPT4gc3RyaW5nO1xuICAgICAgfSA9IHt9O1xuICAgICAgaWYgKHByaW1hcnlNYXApIHtcbiAgICAgICAgZXh0cmFEZWNrUGFyYW1zLmdldFRvb2x0aXAgPSBpbmZvID0+XG4gICAgICAgICAgRWRpdG9yTGF5ZXJVdGlscy5nZXRUb29sdGlwKGluZm8sIHtcbiAgICAgICAgICAgIGVkaXRvck1lbnVBY3RpdmUsXG4gICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICB0aGVtZVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgIGV4dHJhRGVja1BhcmFtcy5nZXRDdXJzb3IgPSAoe2lzRHJhZ2dpbmd9OiB7aXNEcmFnZ2luZzogYm9vbGVhbn0pID0+IHtcbiAgICAgICAgICBjb25zdCBlZGl0b3JDdXJzb3IgPSBFZGl0b3JMYXllclV0aWxzLmdldEN1cnNvcih7XG4gICAgICAgICAgICBlZGl0b3JNZW51QWN0aXZlLFxuICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgaG92ZXJJbmZvXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKGVkaXRvckN1cnNvcikgcmV0dXJuIGVkaXRvckN1cnNvcjtcblxuICAgICAgICAgIGlmIChpc0RyYWdnaW5nKSByZXR1cm4gJ2dyYWJiaW5nJztcbiAgICAgICAgICBpZiAoaG92ZXJJbmZvPy5sYXllcikgcmV0dXJuICdwb2ludGVyJztcbiAgICAgICAgICByZXR1cm4gJ2dyYWInO1xuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlZmZlY3RzID0gdGhpcy5faXNPS1RvUmVuZGVyRWZmZWN0cyhpbmRleClcbiAgICAgICAgPyBjb21wdXRlRGVja0VmZmVjdHMoe3Zpc1N0YXRlLCBtYXBTdGF0ZX0pXG4gICAgICAgIDogW107XG5cbiAgICAgIGNvbnN0IHZpZXdzID0gZGVja0dsUHJvcHM/LnZpZXdzXG4gICAgICAgID8gZGVja0dsUHJvcHM/LnZpZXdzKClcbiAgICAgICAgOiBuZXcgTWFwVmlldyh7bGVnYWN5TWV0ZXJTaXplczogdHJ1ZX0pO1xuXG4gICAgICBsZXQgYWxsRGVja0dsUHJvcHMgPSB7XG4gICAgICAgIC4uLmRlY2tHbFByb3BzLFxuICAgICAgICBwaWNraW5nUmFkaXVzOiBERUZBVUxUX1BJQ0tJTkdfUkFESVVTLFxuICAgICAgICB2aWV3cyxcbiAgICAgICAgbGF5ZXJzOiBkZWNrR2xMYXllcnMsXG4gICAgICAgIGVmZmVjdHNcbiAgICAgIH07XG5cbiAgICAgIGlmICh0eXBlb2YgZGVja1JlbmRlckNhbGxiYWNrcz8ub25EZWNrUmVuZGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGFsbERlY2tHbFByb3BzID0gZGVja1JlbmRlckNhbGxiYWNrcy5vbkRlY2tSZW5kZXIoYWxsRGVja0dsUHJvcHMpO1xuICAgICAgICBpZiAoIWFsbERlY2tHbFByb3BzKSB7XG4gICAgICAgICAgLy8gaWYgb25EZWNrUmVuZGVyIHJldHVybnMgbnVsbCwgZG8gbm90IHJlbmRlciBkZWNrLmdsXG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIHsuLi4oaXNJbnRlcmFjdGl2ZVxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgb25Nb3VzZU1vdmU6IHByaW1hcnlNYXBcbiAgICAgICAgICAgICAgICAgID8gZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VNb3ZlPy4oZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29uTW91c2VNb3ZlRGVib3VuY2VkKGV2ZW50LCB2aWV3cG9ydCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDoge3N0eWxlOiB7cG9pbnRlckV2ZW50czogJ25vbmUnfX0pfVxuICAgICAgICA+XG4gICAgICAgICAgPERlY2tHTFxuICAgICAgICAgICAgaWQ9XCJkZWZhdWx0LWRlY2tnbC1vdmVybGF5XCJcbiAgICAgICAgICAgIG9uTG9hZD17KCkgPT4ge1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIGRlY2tSZW5kZXJDYWxsYmFja3M/Lm9uRGVja0xvYWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBkZWNrUmVuZGVyQ2FsbGJhY2tzLm9uRGVja0xvYWQoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHsuLi5hbGxEZWNrR2xQcm9wc31cbiAgICAgICAgICAgIGNvbnRyb2xsZXI9e1xuICAgICAgICAgICAgICBpc0ludGVyYWN0aXZlXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgIGRvdWJsZUNsaWNrWm9vbTogIWlzRWRpdG9yRHJhd2luZ01vZGUsXG4gICAgICAgICAgICAgICAgICAgIGRyYWdSb3RhdGU6IHRoaXMucHJvcHMubWFwU3RhdGUuZHJhZ1JvdGF0ZVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGluaXRpYWxWaWV3U3RhdGU9e2ludGVybmFsVmlld1N0YXRlfVxuICAgICAgICAgICAgb25CZWZvcmVSZW5kZXI9e3RoaXMuX29uQmVmb3JlUmVuZGVyfVxuICAgICAgICAgICAgb25WaWV3U3RhdGVDaGFuZ2U9e2lzSW50ZXJhY3RpdmUgPyB0aGlzLl9vblZpZXdwb3J0Q2hhbmdlIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgey4uLmV4dHJhRGVja1BhcmFtc31cbiAgICAgICAgICAgIG9uSG92ZXI9e1xuICAgICAgICAgICAgICBpc0ludGVyYWN0aXZlXG4gICAgICAgICAgICAgICAgPyBkYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzID0gRWRpdG9yTGF5ZXJVdGlscy5vbkhvdmVyKGRhdGEsIHtcbiAgICAgICAgICAgICAgICAgICAgICBlZGl0b3JNZW51QWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgICAgICAgICAgICBob3ZlckluZm9cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMpIHJldHVybjtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbkxheWVySG92ZXJEZWJvdW5jZWQoZGF0YSwgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb25DbGljaz17KGRhdGEsIGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgbm9ybWFsaXplRXZlbnQoZXZlbnQuc3JjRXZlbnQsIHZpZXdwb3J0KTtcbiAgICAgICAgICAgICAgY29uc3QgcmVzID0gRWRpdG9yTGF5ZXJVdGlscy5vbkNsaWNrKGRhdGEsIGV2ZW50LCB7XG4gICAgICAgICAgICAgICAgZWRpdG9yTWVudUFjdGl2ZSxcbiAgICAgICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICAgICAgb25MYXllckNsaWNrLFxuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkRmVhdHVyZSxcbiAgICAgICAgICAgICAgICBtYXBJbmRleDogaW5kZXhcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGlmIChyZXMpIHJldHVybjtcblxuICAgICAgICAgICAgICB2aXNTdGF0ZUFjdGlvbnMub25MYXllckNsaWNrKGRhdGEpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uRXJyb3I9e3RoaXMuX29uRGVja0Vycm9yfVxuICAgICAgICAgICAgcmVmPXtjb21wID0+IHtcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBpZiAoY29tcCAmJiBjb21wLmRlY2sgJiYgIXRoaXMuX2RlY2spIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgdGhpcy5fZGVjayA9IGNvbXAuZGVjaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uV2ViR0xJbml0aWFsaXplZD17Z2wgPT4gdGhpcy5fb25EZWNrSW5pdGlhbGl6ZWQoZ2wpfVxuICAgICAgICAgICAgb25BZnRlclJlbmRlcj17KCkgPT4ge1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIGRlY2tSZW5kZXJDYWxsYmFja3M/Lm9uRGVja0FmdGVyUmVuZGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgZGVja1JlbmRlckNhbGxiYWNrcy5vbkRlY2tBZnRlclJlbmRlcihhbGxEZWNrR2xQcm9wcyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgIDwvRGVja0dMPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgX3VwZGF0ZU1hcGJveExheWVycygpIHtcbiAgICAgIGNvbnN0IG1hcGJveExheWVycyA9IHRoaXMubWFwYm94TGF5ZXJzU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBpZiAoIU9iamVjdC5rZXlzKG1hcGJveExheWVycykubGVuZ3RoICYmICFPYmplY3Qua2V5cyh0aGlzLnByZXZpb3VzTGF5ZXJzKS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB1cGRhdGVNYXBib3hMYXllcnModGhpcy5fbWFwLCBtYXBib3hMYXllcnMsIHRoaXMucHJldmlvdXNMYXllcnMpO1xuXG4gICAgICB0aGlzLnByZXZpb3VzTGF5ZXJzID0gbWFwYm94TGF5ZXJzO1xuICAgIH1cblxuICAgIF9yZW5kZXJNYXBib3hPdmVybGF5cygpIHtcbiAgICAgIGlmICh0aGlzLl9tYXAgJiYgdGhpcy5fbWFwLmlzU3R5bGVMb2FkZWQoKSkge1xuICAgICAgICB0aGlzLl91cGRhdGVNYXBib3hMYXllcnMoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgX29uVmlld3BvcnRDaGFuZ2VQcm9wYWdhdGVEZWJvdW5jZWQgPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICBjb25zdCB2aWV3U3RhdGUgPSB0aGlzLmNvbnRleHQ/LmdldEludGVybmFsVmlld1N0YXRlKHRoaXMucHJvcHMuaW5kZXgpO1xuICAgICAgb25WaWV3UG9ydENoYW5nZShcbiAgICAgICAgdmlld1N0YXRlLFxuICAgICAgICB0aGlzLnByb3BzLm1hcFN0YXRlQWN0aW9ucy51cGRhdGVNYXAsXG4gICAgICAgIHRoaXMucHJvcHMub25WaWV3U3RhdGVDaGFuZ2UsXG4gICAgICAgIHRoaXMucHJvcHMucHJpbWFyeSxcbiAgICAgICAgdGhpcy5wcm9wcy5pbmRleFxuICAgICAgKTtcbiAgICB9LCBERUJPVU5DRV9WSUVXUE9SVF9QUk9QQUdBVEUpO1xuXG4gICAgX29uVmlld3BvcnRDaGFuZ2UgPSB2aWV3cG9ydCA9PiB7XG4gICAgICBjb25zdCB7dmlld1N0YXRlfSA9IHZpZXdwb3J0O1xuICAgICAgaWYgKHRoaXMucHJvcHMuaXNFeHBvcnQpIHtcbiAgICAgICAgLy8gSW1hZ2UgZXhwb3J0IG1hcCBzaG91bGRuJ3QgYmUgaW50ZXJhY3RpdmUgKG90aGVyd2lzZSB0aGlzIGNhbGxiYWNrIGNhblxuICAgICAgICAvLyBsZWFkIHRvIGluYWR2ZXJ0ZW50IGNoYW5nZXMgdG8gdGhlIHN0YXRlIG9mIHRoZSBtYWluIG1hcClcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3Qge3NldEludGVybmFsVmlld1N0YXRlfSA9IHRoaXMuY29udGV4dDtcbiAgICAgIHNldEludGVybmFsVmlld1N0YXRlKHZpZXdTdGF0ZSwgdGhpcy5wcm9wcy5pbmRleCk7XG4gICAgICB0aGlzLl9vblZpZXdwb3J0Q2hhbmdlUHJvcGFnYXRlRGVib3VuY2VkKCk7XG4gICAgfTtcblxuICAgIF9vbkxheWVySG92ZXJEZWJvdW5jZWQgPSBkZWJvdW5jZSgoZGF0YSwgaW5kZXgpID0+IHtcbiAgICAgIHRoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLm9uTGF5ZXJIb3ZlcihkYXRhLCBpbmRleCk7XG4gICAgfSwgREVCT1VOQ0VfTU9VU0VfTU9WRV9QUk9QQUdBVEUpO1xuXG4gICAgX29uTW91c2VNb3ZlRGVib3VuY2VkID0gZGVib3VuY2UoKGV2ZW50LCB2aWV3cG9ydCkgPT4ge1xuICAgICAgdGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMub25Nb3VzZU1vdmUobm9ybWFsaXplRXZlbnQoZXZlbnQsIHZpZXdwb3J0KSk7XG4gICAgfSwgREVCT1VOQ0VfTU9VU0VfTU9WRV9QUk9QQUdBVEUpO1xuXG4gICAgX3RvZ2dsZU1hcENvbnRyb2wgPSBwYW5lbElkID0+IHtcbiAgICAgIGNvbnN0IHtpbmRleCwgdWlTdGF0ZUFjdGlvbnN9ID0gdGhpcy5wcm9wcztcblxuICAgICAgdWlTdGF0ZUFjdGlvbnMudG9nZ2xlTWFwQ29udHJvbChwYW5lbElkLCBOdW1iZXIoaW5kZXgpKTtcbiAgICB9O1xuXG4gICAgLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuICAgIF9yZW5kZXJNYXAoKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHZpc1N0YXRlLFxuICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgbWFwU3R5bGUsXG4gICAgICAgIG1hcFN0YXRlQWN0aW9ucyxcbiAgICAgICAgTWFwQ29tcG9uZW50ID0gTWFwLFxuICAgICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICAgICAgLy8gbWFwYm94QXBpVXJsLFxuICAgICAgICBtYXBDb250cm9scyxcbiAgICAgICAgaXNFeHBvcnQsXG4gICAgICAgIGxvY2FsZSxcbiAgICAgICAgdWlTdGF0ZUFjdGlvbnMsXG4gICAgICAgIHZpc1N0YXRlQWN0aW9ucyxcbiAgICAgICAgaW5kZXgsXG4gICAgICAgIHByaW1hcnksXG4gICAgICAgIGJvdHRvbU1hcENvbnRhaW5lclByb3BzLFxuICAgICAgICB0b3BNYXBDb250YWluZXJQcm9wcyxcbiAgICAgICAgdGhlbWUsXG4gICAgICAgIGRhdGFzZXRBdHRyaWJ1dGlvbnMgPSBbXSxcbiAgICAgICAgY29udGFpbmVySWQgPSAwLFxuICAgICAgICBpc0xvYWRpbmdJbmRpY2F0b3JWaXNpYmxlLFxuICAgICAgICBhY3RpdmVTaWRlUGFuZWwsXG4gICAgICAgIHNpZGVQYW5lbFdpZHRoXG4gICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgY29uc3Qge2xheWVycywgZGF0YXNldHMsIGVkaXRvciwgaW50ZXJhY3Rpb25Db25maWd9ID0gdmlzU3RhdGU7XG5cbiAgICAgIGNvbnN0IGxheWVyc1RvUmVuZGVyID0gdGhpcy5sYXllcnNUb1JlbmRlclNlbGVjdG9yKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3QgbGF5ZXJzRm9yRGVjayA9IHRoaXMubGF5ZXJzRm9yRGVja1NlbGVjdG9yKHRoaXMucHJvcHMpO1xuXG4gICAgICAvLyBDdXJyZW50IHN0eWxlIGNhbiBiZSBhIGN1c3RvbSBzdHlsZSwgZnJvbSB3aGljaCB3ZSBwdWxsIHRoZSBtYXBib3ggQVBJIGFjY2Nlc3MgdG9rZW5cbiAgICAgIGNvbnN0IGN1cnJlbnRTdHlsZSA9IG1hcFN0eWxlLm1hcFN0eWxlcz8uW21hcFN0eWxlLnN0eWxlVHlwZV07XG4gICAgICBjb25zdCBiYXNlTWFwTGlicmFyeU5hbWUgPSBnZXRCYXNlTWFwTGlicmFyeShjdXJyZW50U3R5bGUpO1xuICAgICAgY29uc3QgYmFzZU1hcExpYnJhcnlDb25maWcgPVxuICAgICAgICBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmJhc2VNYXBMaWJyYXJ5Q29uZmlnPy5bYmFzZU1hcExpYnJhcnlOYW1lXTtcblxuICAgICAgY29uc3QgaW50ZXJuYWxWaWV3U3RhdGUgPSB0aGlzLmNvbnRleHQ/LmdldEludGVybmFsVmlld1N0YXRlKGluZGV4KTtcbiAgICAgIGNvbnN0IG1hcFByb3BzID0ge1xuICAgICAgICAuLi5pbnRlcm5hbFZpZXdTdGF0ZSxcbiAgICAgICAgcHJlc2VydmVEcmF3aW5nQnVmZmVyOiB0cnVlLFxuICAgICAgICBtYXBib3hBY2Nlc3NUb2tlbjogY3VycmVudFN0eWxlPy5hY2Nlc3NUb2tlbiB8fCBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICAgICAgLy8gYmFzZUFwaVVybDogbWFwYm94QXBpVXJsLFxuICAgICAgICBtYXBMaWI6IGJhc2VNYXBMaWJyYXJ5Q29uZmlnLmdldE1hcExpYigpLFxuICAgICAgICB0cmFuc2Zvcm1SZXF1ZXN0OlxuICAgICAgICAgIHRoaXMucHJvcHMudHJhbnNmb3JtUmVxdWVzdCB8fFxuICAgICAgICAgIHRyYW5zZm9ybVJlcXVlc3QoY3VycmVudFN0eWxlPy5hY2Nlc3NUb2tlbiB8fCBtYXBib3hBcGlBY2Nlc3NUb2tlbilcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGhhc0dlb2NvZGVyTGF5ZXIgPSBCb29sZWFuKGxheWVycy5maW5kKGwgPT4gbC5pZCA9PT0gR0VPQ09ERVJfTEFZRVJfSUQpKTtcbiAgICAgIGNvbnN0IGlzU3BsaXQgPSBCb29sZWFuKG1hcFN0YXRlLmlzU3BsaXQpO1xuXG4gICAgICBjb25zdCBkZWNrID0gdGhpcy5fcmVuZGVyRGVja092ZXJsYXkobGF5ZXJzRm9yRGVjaywge1xuICAgICAgICBwcmltYXJ5TWFwOiB0cnVlLFxuICAgICAgICBpc0ludGVyYWN0aXZlOiB0cnVlLFxuICAgICAgICBjaGlsZHJlbjogKFxuICAgICAgICAgIDxNYXBDb21wb25lbnRcbiAgICAgICAgICAgIGtleT17YGJvdHRvbS0ke2Jhc2VNYXBMaWJyYXJ5TmFtZX1gfVxuICAgICAgICAgICAgey4uLm1hcFByb3BzfVxuICAgICAgICAgICAgbWFwU3R5bGU9e21hcFN0eWxlLmJvdHRvbU1hcFN0eWxlID8/IEVNUFRZX01BUEJPWF9TVFlMRX1cbiAgICAgICAgICAgIHsuLi5ib3R0b21NYXBDb250YWluZXJQcm9wc31cbiAgICAgICAgICAgIHJlZj17dGhpcy5fc2V0TWFwUmVmfVxuICAgICAgICAgIC8+XG4gICAgICAgIClcbiAgICAgIH0pO1xuICAgICAgaWYgKCFkZWNrKSB7XG4gICAgICAgIC8vIGRlY2tPdmVybGF5IGNhbiBiZSBudWxsIGlmIG9uRGVja1JlbmRlciByZXR1cm5zIG51bGxcbiAgICAgICAgLy8gaW4gdGhpcyBjYXNlIHdlIGRvbid0IHdhbnQgdG8gcmVuZGVyIHRoZSBtYXBcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxNYXBDb250cm9sXG4gICAgICAgICAgICBtYXBTdGF0ZT17bWFwU3RhdGV9XG4gICAgICAgICAgICBkYXRhc2V0cz17ZGF0YXNldHN9XG4gICAgICAgICAgICBhdmFpbGFibGVMb2NhbGVzPXtMT0NBTEVfQ09ERVNfQVJSQVl9XG4gICAgICAgICAgICBkcmFnUm90YXRlPXttYXBTdGF0ZS5kcmFnUm90YXRlfVxuICAgICAgICAgICAgaXNTcGxpdD17aXNTcGxpdH1cbiAgICAgICAgICAgIHByaW1hcnk9e0Jvb2xlYW4ocHJpbWFyeSl9XG4gICAgICAgICAgICBpc0V4cG9ydD17aXNFeHBvcnR9XG4gICAgICAgICAgICBsYXllcnM9e2xheWVyc31cbiAgICAgICAgICAgIGxheWVyc1RvUmVuZGVyPXtsYXllcnNUb1JlbmRlcn1cbiAgICAgICAgICAgIG1hcEluZGV4PXtpbmRleCB8fCAwfVxuICAgICAgICAgICAgbWFwQ29udHJvbHM9e21hcENvbnRyb2xzfVxuICAgICAgICAgICAgcmVhZE9ubHk9e3RoaXMucHJvcHMucmVhZE9ubHl9XG4gICAgICAgICAgICBzY2FsZT17bWFwU3RhdGUuc2NhbGUgfHwgMX1cbiAgICAgICAgICAgIHRvcD17XG4gICAgICAgICAgICAgIGludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyICYmIGludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyLmVuYWJsZWRcbiAgICAgICAgICAgICAgICA/IHRoZW1lLm1hcENvbnRyb2xUb3BcbiAgICAgICAgICAgICAgICA6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVkaXRvcj17ZWRpdG9yfVxuICAgICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICBvblRvZ2dsZVBlcnNwZWN0aXZlPXttYXBTdGF0ZUFjdGlvbnMudG9nZ2xlUGVyc3BlY3RpdmV9XG4gICAgICAgICAgICBvblRvZ2dsZVNwbGl0TWFwPXttYXBTdGF0ZUFjdGlvbnMudG9nZ2xlU3BsaXRNYXB9XG4gICAgICAgICAgICBvbk1hcFRvZ2dsZUxheWVyPXt0aGlzLl9oYW5kbGVNYXBUb2dnbGVMYXllcn1cbiAgICAgICAgICAgIG9uVG9nZ2xlTWFwQ29udHJvbD17dGhpcy5fdG9nZ2xlTWFwQ29udHJvbH1cbiAgICAgICAgICAgIG9uVG9nZ2xlU3BsaXRNYXBWaWV3cG9ydD17bWFwU3RhdGVBY3Rpb25zLnRvZ2dsZVNwbGl0TWFwVmlld3BvcnR9XG4gICAgICAgICAgICBvblNldEVkaXRvck1vZGU9e3Zpc1N0YXRlQWN0aW9ucy5zZXRFZGl0b3JNb2RlfVxuICAgICAgICAgICAgb25TZXRMb2NhbGU9e3VpU3RhdGVBY3Rpb25zLnNldExvY2FsZX1cbiAgICAgICAgICAgIG9uVG9nZ2xlRWRpdG9yVmlzaWJpbGl0eT17dmlzU3RhdGVBY3Rpb25zLnRvZ2dsZUVkaXRvclZpc2liaWxpdHl9XG4gICAgICAgICAgICBvbkxheWVyVmlzQ29uZmlnQ2hhbmdlPXt2aXNTdGF0ZUFjdGlvbnMubGF5ZXJWaXNDb25maWdDaGFuZ2V9XG4gICAgICAgICAgICBtYXBIZWlnaHQ9e21hcFN0YXRlLmhlaWdodH1cbiAgICAgICAgICAgIHNldE1hcENvbnRyb2xTZXR0aW5ncz17dWlTdGF0ZUFjdGlvbnMuc2V0TWFwQ29udHJvbFNldHRpbmdzfVxuICAgICAgICAgICAgYWN0aXZlU2lkZVBhbmVsPXthY3RpdmVTaWRlUGFuZWx9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7aXNTcGxpdFNlbGVjdG9yKHRoaXMucHJvcHMpICYmIDxEcm9wcGFibGUgY29udGFpbmVySWQ9e2NvbnRhaW5lcklkfSAvPn1cblxuICAgICAgICAgIHtkZWNrfVxuICAgICAgICAgIHt0aGlzLl9yZW5kZXJNYXBib3hPdmVybGF5cygpfVxuICAgICAgICAgIDxFZGl0b3JcbiAgICAgICAgICAgIGluZGV4PXtpbmRleCB8fCAwfVxuICAgICAgICAgICAgZGF0YXNldHM9e2RhdGFzZXRzfVxuICAgICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAgICBmaWx0ZXJzPXt0aGlzLnBvbHlnb25GaWx0ZXJzU2VsZWN0b3IodGhpcy5wcm9wcyl9XG4gICAgICAgICAgICBsYXllcnM9e2xheWVyc31cbiAgICAgICAgICAgIG9uRGVsZXRlRmVhdHVyZT17dmlzU3RhdGVBY3Rpb25zLmRlbGV0ZUZlYXR1cmV9XG4gICAgICAgICAgICBvblNlbGVjdD17dmlzU3RhdGVBY3Rpb25zLnNldFNlbGVjdGVkRmVhdHVyZX1cbiAgICAgICAgICAgIG9uVG9nZ2xlUG9seWdvbkZpbHRlcj17dmlzU3RhdGVBY3Rpb25zLnNldFBvbHlnb25GaWx0ZXJMYXllcn1cbiAgICAgICAgICAgIG9uU2V0RWRpdG9yTW9kZT17dmlzU3RhdGVBY3Rpb25zLnNldEVkaXRvck1vZGV9XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnYWxsJyxcbiAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgIGRpc3BsYXk6IGVkaXRvci52aXNpYmxlID8gJ2Jsb2NrJyA6ICdub25lJ1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHt0aGlzLnByb3BzLmNoaWxkcmVufVxuICAgICAgICAgIHttYXBTdHlsZS50b3BNYXBTdHlsZSA/IChcbiAgICAgICAgICAgIDxNYXBDb21wb25lbnRcbiAgICAgICAgICAgICAga2V5PXtgdG9wLSR7YmFzZU1hcExpYnJhcnlOYW1lfWB9XG4gICAgICAgICAgICAgIHZpZXdTdGF0ZT17aW50ZXJuYWxWaWV3U3RhdGV9XG4gICAgICAgICAgICAgIG1hcFN0eWxlPXttYXBTdHlsZS50b3BNYXBTdHlsZX1cbiAgICAgICAgICAgICAgc3R5bGU9e01BUF9TVFlMRS50b3B9XG4gICAgICAgICAgICAgIG1hcGJveEFjY2Vzc1Rva2VuPXttYXBQcm9wcy5tYXBib3hBY2Nlc3NUb2tlbn1cbiAgICAgICAgICAgICAgdHJhbnNmb3JtUmVxdWVzdD17bWFwUHJvcHMudHJhbnNmb3JtUmVxdWVzdH1cbiAgICAgICAgICAgICAgbWFwTGliPXtiYXNlTWFwTGlicmFyeUNvbmZpZy5nZXRNYXBMaWIoKX1cbiAgICAgICAgICAgICAgey4uLnRvcE1hcENvbnRhaW5lclByb3BzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogbnVsbH1cblxuICAgICAgICAgIHtoYXNHZW9jb2RlckxheWVyXG4gICAgICAgICAgICA/IHRoaXMuX3JlbmRlckRlY2tPdmVybGF5KFxuICAgICAgICAgICAgICAgIHtbR0VPQ09ERVJfTEFZRVJfSURdOiBoYXNHZW9jb2RlckxheWVyfSxcbiAgICAgICAgICAgICAgICB7cHJpbWFyeU1hcDogZmFsc2UsIGlzSW50ZXJhY3RpdmU6IGZhbHNlfVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IG51bGx9XG4gICAgICAgICAge3RoaXMuX3JlbmRlck1hcFBvcG92ZXIoKX1cbiAgICAgICAgICB7cHJpbWFyeSAhPT0gaXNTcGxpdCA/IChcbiAgICAgICAgICAgIDxMb2FkaW5nSW5kaWNhdG9yXG4gICAgICAgICAgICAgIGlzVmlzaWJsZT17aXNMb2FkaW5nSW5kaWNhdG9yVmlzaWJsZSB8fCBpc1Jhc3RlclRpbGVzQmVpbmdMb2FkZWQoKX1cbiAgICAgICAgICAgICAgYWN0aXZlU2lkZVBhbmVsPXtCb29sZWFuKGFjdGl2ZVNpZGVQYW5lbCl9XG4gICAgICAgICAgICAgIHNpZGVQYW5lbFdpZHRoPXtzaWRlUGFuZWxXaWR0aH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgTG9hZGluZy4uLlxuICAgICAgICAgICAgPC9Mb2FkaW5nSW5kaWNhdG9yPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIHt0aGlzLnByb3BzLnByaW1hcnkgPyAoXG4gICAgICAgICAgICA8QXR0cmlidXRpb25cbiAgICAgICAgICAgICAgc2hvd0Jhc2VNYXBMaWJMb2dvPXt0aGlzLnN0YXRlLnNob3dCYXNlTWFwQXR0cmlidXRpb259XG4gICAgICAgICAgICAgIHNob3dPc21CYXNlbWFwQXR0cmlidXRpb249e3RydWV9XG4gICAgICAgICAgICAgIGRhdGFzZXRBdHRyaWJ1dGlvbnM9e2RhdGFzZXRBdHRyaWJ1dGlvbnN9XG4gICAgICAgICAgICAgIGJhc2VNYXBMaWJyYXJ5Q29uZmlnPXtiYXNlTWFwTGlicmFyeUNvbmZpZ31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7dmlzU3RhdGUsIG1hcFN0eWxlfSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCBtYXBDb250ZW50ID0gdGhpcy5fcmVuZGVyTWFwKCk7XG4gICAgICBpZiAoIW1hcENvbnRlbnQpIHtcbiAgICAgICAgLy8gbWFwQ29udGVudCBjYW4gYmUgbnVsbCBpZiBvbkRlY2tSZW5kZXIgcmV0dXJucyBudWxsXG4gICAgICAgIC8vIGluIHRoaXMgY2FzZSB3ZSBkb24ndCB3YW50IHRvIHJlbmRlciB0aGUgbWFwXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjdXJyZW50U3R5bGUgPSBtYXBTdHlsZS5tYXBTdHlsZXM/LlttYXBTdHlsZS5zdHlsZVR5cGVdO1xuICAgICAgY29uc3QgYmFzZU1hcExpYnJhcnlOYW1lID0gZ2V0QmFzZU1hcExpYnJhcnkoY3VycmVudFN0eWxlKTtcbiAgICAgIGNvbnN0IGJhc2VNYXBMaWJyYXJ5Q29uZmlnID1cbiAgICAgICAgZ2V0QXBwbGljYXRpb25Db25maWcoKS5iYXNlTWFwTGlicmFyeUNvbmZpZz8uW2Jhc2VNYXBMaWJyYXJ5TmFtZV07XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRNYXBcbiAgICAgICAgICByZWY9e3RoaXMuX3JlZn1cbiAgICAgICAgICBzdHlsZT17dGhpcy5zdHlsZVNlbGVjdG9yKHRoaXMucHJvcHMpfVxuICAgICAgICAgIG9uQ29udGV4dE1lbnU9e2V2ZW50ID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCl9XG4gICAgICAgICAgJG1peEJsZW5kTW9kZT17dmlzU3RhdGUub3ZlcmxheUJsZW5kaW5nfVxuICAgICAgICAgICRtYXBMaWJDc3NDbGFzcz17YmFzZU1hcExpYnJhcnlDb25maWcubWFwTGliQ3NzQ2xhc3N9XG4gICAgICAgID5cbiAgICAgICAgICB7bWFwQ29udGVudH1cbiAgICAgICAgPC9TdHlsZWRNYXA+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB3aXRoVGhlbWUoTWFwQ29udGFpbmVyKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBSUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUYsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFdBQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFHLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLFNBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLEtBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFNBQUEsR0FBQUgsc0JBQUEsQ0FBQUosT0FBQTtBQUtBLElBQUFRLFdBQUEsR0FBQUosc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFTLFdBQUEsR0FBQUwsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFVLGtCQUFBLEdBQUFWLE9BQUE7QUFNQSxJQUFBVyxPQUFBLEdBQUFQLHNCQUFBLENBQUFKLE9BQUE7QUFHQSxJQUFBWSxPQUFBLEdBQUFaLE9BQUE7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
|