@carto/kepler.gl 0.0.75-alpha.deckv9.1 → 0.0.75-alpha.deckv9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/action-wrapper.js +3 -3
- package/dist/components/common/checkbox.js +4 -4
- package/dist/components/common/data-table/grid.js +3 -3
- package/dist/components/common/data-table/index.js +6 -6
- package/dist/components/common/item-selector/item-selector.js +3 -3
- package/dist/components/common/portaled.js +6 -6
- package/dist/components/common/time-range-slider.js +3 -3
- package/dist/components/container.js +4 -4
- package/dist/components/editor/editor.js +6 -6
- package/dist/components/editor/feature-styles.js +3 -3
- package/dist/components/editor/handle-style.js +3 -3
- package/dist/components/filters/filter-panels/polygon-filter-panel.js +4 -4
- package/dist/components/modal-container.js +3 -3
- package/dist/components/modals/image-modal-container.js +4 -4
- package/dist/components/modals/load-data-modal.js +3 -3
- package/dist/components/notification-panel/notification-item.js +5 -5
- package/dist/components/notification-panel.js +5 -5
- package/dist/components/plot-container.js +3 -3
- package/dist/components/side-panel/filter-panel/filter-panel.js +7 -7
- package/dist/components/side-panel/interaction-panel/interaction-panel.js +5 -5
- package/dist/components/side-panel/layer-panel/color-range-selector.js +4 -4
- package/dist/components/side-panel/panel-header.js +6 -6
- package/dist/components/side-panel/side-bar.js +6 -6
- package/dist/components/side-panel.js +3 -3
- package/dist/constants/default-settings.js +1 -1
- package/dist/deckgl-layers/layer-utils/cluster-utils.js +3 -3
- package/dist/layers/aggregation-layer.js +4 -4
- package/dist/layers/base-layer.js +2 -2
- package/dist/layers/geojson-layer/geojson-layer.js +3 -3
- package/dist/layers/heatmap-layer/heatmap-layer.js +3 -3
- package/dist/layers/layer-text-label.js +2 -2
- package/dist/layers/trip-layer/trip-layer.js +5 -5
- package/dist/reducers/map-style-updaters.js +3 -3
- package/dist/reducers/vis-state-merger.js +6 -6
- package/dist/reducers/vis-state-updaters.js +13 -13
- package/dist/schemas/dataset-schema.js +4 -4
- package/dist/schemas/vis-state-schema.js +7 -7
- package/dist/utils/dataset-utils.js +3 -3
- package/dist/utils/export-utils.js +3 -3
- package/dist/utils/filter-utils.js +7 -7
- package/dist/utils/map-style-utils/mapbox-gl-style-editor.js +6 -6
- package/dist/utils/observe-dimensions.js +3 -3
- package/dist/utils/split-map-utils.js +3 -3
- package/package.json +2 -13
- package/src/actions/action-wrapper.js +1 -1
- package/src/components/common/checkbox.js +1 -1
- package/src/components/common/data-table/grid.js +1 -1
- package/src/components/common/data-table/index.js +2 -2
- package/src/components/common/item-selector/item-selector.js +1 -1
- package/src/components/common/portaled.js +2 -2
- package/src/components/common/time-range-slider.js +1 -1
- package/src/components/container.js +1 -1
- package/src/components/editor/editor.js +1 -1
- package/src/components/editor/feature-styles.js +1 -1
- package/src/components/editor/handle-style.js +1 -1
- package/src/components/filters/filter-panels/polygon-filter-panel.js +1 -1
- package/src/components/modal-container.js +1 -1
- package/src/components/modals/image-modal-container.js +1 -1
- package/src/components/modals/load-data-modal.js +1 -1
- package/src/components/plot-container.js +1 -1
- package/src/components/side-panel/filter-panel/filter-panel.js +1 -1
- package/src/components/side-panel/layer-panel/color-range-selector.js +1 -1
- package/src/components/side-panel.js +1 -1
- package/src/deckgl-layers/layer-utils/cluster-utils.js +1 -1
- package/src/layers/aggregation-layer.js +1 -1
- package/src/layers/base-layer.js +1 -1
- package/src/layers/geojson-layer/geojson-layer.js +1 -1
- package/src/layers/heatmap-layer/heatmap-layer.js +1 -1
- package/src/layers/layer-text-label.js +1 -1
- package/src/layers/trip-layer/trip-layer.js +2 -2
- package/src/reducers/map-style-updaters.js +1 -1
- package/src/reducers/vis-state-merger.js +3 -3
- package/src/reducers/vis-state-updaters.js +4 -4
- package/src/schemas/dataset-schema.js +1 -1
- package/src/schemas/vis-state-schema.js +2 -2
- package/src/utils/dataset-utils.js +1 -1
- package/src/utils/export-utils.js +1 -1
- package/src/utils/filter-utils.js +2 -2
- package/src/utils/map-style-utils/mapbox-gl-style-editor.js +3 -3
- package/src/utils/observe-dimensions.js +1 -1
- package/src/utils/split-map-utils.js +1 -1
|
@@ -11,7 +11,7 @@ exports.getMapStyles = getMapStyles;
|
|
|
11
11
|
exports.set3dBuildingColorUpdater = exports.resetMapConfigMapStyleUpdater = exports.requestMapStylesUpdater = exports.receiveMapConfigUpdater = exports.mapStyleChangeUpdater = exports.mapConfigChangeUpdater = exports.loadMapStylesUpdater = exports.loadMapStyleErrUpdater = exports.loadCustomMapStyleUpdater = exports.inputMapStyleUpdater = exports.initMapStyleUpdater = void 0;
|
|
12
12
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
13
|
var _tasks = _interopRequireWildcard(require("react-palm/tasks"));
|
|
14
|
-
var
|
|
14
|
+
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
15
15
|
var _mapboxGlStyleEditor = require("../utils/map-style-utils/mapbox-gl-style-editor");
|
|
16
16
|
var _defaultSettings = require("../constants/default-settings");
|
|
17
17
|
var _utils = require("../utils/utils");
|
|
@@ -397,7 +397,7 @@ var loadCustomMapStyleUpdater = exports.loadCustomMapStyleUpdater = function loa
|
|
|
397
397
|
inputStyle: _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, state.inputStyle), style ? {
|
|
398
398
|
id: style.id || (0, _utils.generateHashId)(),
|
|
399
399
|
// make a copy of the style object
|
|
400
|
-
style: (0,
|
|
400
|
+
style: (0, _cloneDeep["default"])(style),
|
|
401
401
|
label: style.name,
|
|
402
402
|
// gathering layer group info from style json
|
|
403
403
|
layerGroups: getLayerGroupsFromStyle(style)
|
|
@@ -484,4 +484,4 @@ function getInitialInputStyle() {
|
|
|
484
484
|
custom: true
|
|
485
485
|
};
|
|
486
486
|
}
|
|
487
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGFza3MiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9tYXBib3hHbFN0eWxlRWRpdG9yIiwiX2RlZmF1bHRTZXR0aW5ncyIsIl91dGlscyIsIl90YXNrczIiLCJfbWFwU3R5bGVBY3Rpb25zIiwiX2QzQ29sb3IiLCJfY29sb3JVdGlscyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIkRFRkFVTFRfQkxER19DT0xPUiIsImdldERlZmF1bHRTdGF0ZSIsInZpc2libGVMYXllckdyb3VwcyIsInN0eWxlVHlwZSIsInRvcExheWVyR3JvdXBzIiwibWFwU3R5bGVzIiwiREVGQVVMVF9NQVBfU1RZTEVTIiwicmVkdWNlIiwiYWNjdSIsImN1cnIiLCJpZCIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwibWFwYm94QXBpVXJsIiwiREVGQVVMVF9NQVBCT1hfQVBJX1VSTCIsIm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0IiwiaW5wdXRTdHlsZSIsImdldEluaXRpYWxJbnB1dFN0eWxlIiwidGhyZWVEQnVpbGRpbmdDb2xvciIsImhleFRvUmdiIiwiY3VzdG9tM0RCdWlsZGluZ0NvbG9yIiwibWFwU3R5bGVVcGRhdGVycyIsIklOSVRJQUxfTUFQX1NUWUxFIiwiZXhwb3J0cyIsImdldE1hcFN0eWxlcyIsIl9yZWYiLCJtYXBTdHlsZSIsInN0eWxlIiwiZWRpdGFibGUiLCJib3R0b21NYXBTdHlsZSIsImVkaXRCb3R0b21NYXBTdHlsZSIsImhhc1RvcExheWVyIiwidmFsdWVzIiwic29tZSIsInYiLCJ0b3BMYXllcnMiLCJrZXkiLCJ0b3BNYXBTdHlsZSIsImVkaXRUb3BNYXBTdHlsZSIsImZpbmRMYXllckZpbGxDb2xvciIsImxheWVyIiwicGFpbnQiLCJnZXQzREJ1aWxkaW5nQ29sb3IiLCJiYWNrZ3JvdW5kTGF5ZXIiLCJsYXllcnMiLCJmaW5kIiwiX3JlZjIiLCJidWlsZGluZ0xheWVyIiwiX3JlZjMiLCJtYXRjaCIsImJ1aWxkaW5nQ29sb3IiLCJvcGVyYXRpb24iLCJhbHBoYSIsInJnYk9iaiIsInJnYiIsImciLCJiIiwiZ2V0TGF5ZXJHcm91cHNGcm9tU3R5bGUiLCJBcnJheSIsImlzQXJyYXkiLCJERUZBVUxUX0xBWUVSX0dST1VQUyIsImxnIiwiaW5pdE1hcFN0eWxlVXBkYXRlciIsInN0YXRlIiwiX3JlZjQiLCJfcmVmNCRwYXlsb2FkIiwicGF5bG9hZCIsIm1hcENvbmZpZ0NoYW5nZVVwZGF0ZXIiLCJhY3Rpb24iLCJtYXBTdHlsZUNoYW5nZVVwZGF0ZXIiLCJfcmVmNSIsImRlZmF1bHRMR1Zpc2liaWxpdHkiLCJnZXREZWZhdWx0TGF5ZXJHcm91cFZpc2liaWxpdHkiLCJtZXJnZUxheWVyR3JvdXBWaXNpYmlsaXR5IiwibG9hZE1hcFN0eWxlc1VwZGF0ZXIiLCJuZXdTdHlsZXMiLCJhZGRMYXllckdyb3VwcyIsImxheWVyR3JvdXBzIiwibmV3U3RhdGUiLCJsb2FkTWFwU3R5bGVFcnJVcGRhdGVyIiwicmVxdWVzdE1hcFN0eWxlc1VwZGF0ZXIiLCJfcmVmNiIsImxvYWRNYXBTdHlsZVRhc2tzIiwiZ2V0TG9hZE1hcFN0eWxlVGFza3MiLCJ3aXRoVGFzayIsInJlY2VpdmVNYXBDb25maWdVcGRhdGVyIiwiX3JlZjciLCJfcmVmNyRwYXlsb2FkJGNvbmZpZyIsImNvbmZpZyIsIl9yZWY4IiwibWVyZ2VkIiwiQm9vbGVhbiIsIlRhc2siLCJhbGwiLCJtYXAiLCJfcmVmOSIsInVybCIsImFjY2Vzc1Rva2VuIiwiaXNWYWxpZFN0eWxlVXJsIiwiZ2V0U3R5bGVEb3dubG9hZFVybCIsIkxPQURfTUFQX1NUWUxFX1RBU0siLCJiaW1hcCIsInJlc3VsdHMiLCJsb2FkTWFwU3R5bGVzIiwiX3JlZjEwIiwibG9hZE1hcFN0eWxlRXJyIiwicmVzZXRNYXBDb25maWdNYXBTdHlsZVVwZGF0ZXIiLCJlbXB0eUNvbmZpZyIsImluaXRpYWxTdGF0ZSIsImxvYWRDdXN0b21NYXBTdHlsZVVwZGF0ZXIiLCJfcmVmMTEiLCJfcmVmMTEkcGF5bG9hZCIsImljb24iLCJlcnJvciIsImdlbmVyYXRlSGFzaElkIiwiY2xvbmVEZWVwIiwibGFiZWwiLCJuYW1lIiwidW5kZWZpbmVkIiwiaW5wdXRNYXBTdHlsZVVwZGF0ZXIiLCJfcmVmMTIiLCJfcmVmMTIkcGF5bG9hZCIsIm1hcFN0YXRlIiwidXBkYXRlZCIsImlzVmFsaWQiLCJnZXRTdHlsZUltYWdlSWNvbiIsInN0eWxlVXJsIiwiYWRkQ3VzdG9tTWFwU3R5bGVVcGRhdGVyIiwic3R5bGVJZCIsInNldDNkQnVpbGRpbmdDb2xvclVwZGF0ZXIiLCJfcmVmMTMiLCJjb2xvciIsImN1c3RvbSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWR1Y2Vycy9tYXAtc3R5bGUtdXBkYXRlcnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuLy8gQHRzLW5vY2hlY2tcbmltcG9ydCBUYXNrLCB7d2l0aFRhc2t9IGZyb20gJ3JlYWN0LXBhbG0vdGFza3MnO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2guY2xvbmVkZWVwJztcblxuLy8gVXRpbHNcbmltcG9ydCB7XG4gIGdldERlZmF1bHRMYXllckdyb3VwVmlzaWJpbGl0eSxcbiAgaXNWYWxpZFN0eWxlVXJsLFxuICBnZXRTdHlsZURvd25sb2FkVXJsLFxuICBtZXJnZUxheWVyR3JvdXBWaXNpYmlsaXR5LFxuICBlZGl0VG9wTWFwU3R5bGUsXG4gIGVkaXRCb3R0b21NYXBTdHlsZSxcbiAgZ2V0U3R5bGVJbWFnZUljb25cbn0gZnJvbSAndXRpbHMvbWFwLXN0eWxlLXV0aWxzL21hcGJveC1nbC1zdHlsZS1lZGl0b3InO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9NQVBfU1RZTEVTLFxuICBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgREVGQVVMVF9NQVBCT1hfQVBJX1VSTFxufSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5pbXBvcnQge2dlbmVyYXRlSGFzaElkfSBmcm9tICd1dGlscy91dGlscyc7XG5pbXBvcnQge0xPQURfTUFQX1NUWUxFX1RBU0t9IGZyb20gJ3Rhc2tzL3Rhc2tzJztcbmltcG9ydCB7bG9hZE1hcFN0eWxlcywgbG9hZE1hcFN0eWxlRXJyfSBmcm9tICdhY3Rpb25zL21hcC1zdHlsZS1hY3Rpb25zJztcbmltcG9ydCB7cmdifSBmcm9tICdkMy1jb2xvcic7XG5pbXBvcnQge2hleFRvUmdifSBmcm9tICd1dGlscy9jb2xvci11dGlscyc7XG5cbmNvbnN0IERFRkFVTFRfQkxER19DT0xPUiA9ICcjRDFDRUM3JztcblxuLyoqXG4gKiBAcmV0dXJuIHtpbXBvcnQoJy4vbWFwLXN0eWxlLXVwZGF0ZXJzJykuTWFwU3R5bGV9XG4gKi9cbmNvbnN0IGdldERlZmF1bHRTdGF0ZSA9ICgpID0+IHtcbiAgY29uc3QgdmlzaWJsZUxheWVyR3JvdXBzID0ge307XG4gIGNvbnN0IHN0eWxlVHlwZSA9ICdkYXJrJztcbiAgY29uc3QgdG9wTGF5ZXJHcm91cHMgPSB7fTtcblxuICByZXR1cm4ge1xuICAgIHN0eWxlVHlwZSxcbiAgICB2aXNpYmxlTGF5ZXJHcm91cHMsXG4gICAgdG9wTGF5ZXJHcm91cHMsXG4gICAgbWFwU3R5bGVzOiBERUZBVUxUX01BUF9TVFlMRVMucmVkdWNlKFxuICAgICAgKGFjY3UsIGN1cnIpID0+ICh7XG4gICAgICAgIC4uLmFjY3UsXG4gICAgICAgIFtjdXJyLmlkXTogY3VyclxuICAgICAgfSksXG4gICAgICB7fVxuICAgICksXG4gICAgLy8gc2F2ZSBtYXBib3ggYWNjZXNzIHRva2VuXG4gICAgbWFwYm94QXBpQWNjZXNzVG9rZW46IG51bGwsXG4gICAgbWFwYm94QXBpVXJsOiBERUZBVUxUX01BUEJPWF9BUElfVVJMLFxuICAgIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0OiBmYWxzZSxcbiAgICBpbnB1dFN0eWxlOiBnZXRJbml0aWFsSW5wdXRTdHlsZSgpLFxuICAgIHRocmVlREJ1aWxkaW5nQ29sb3I6IGhleFRvUmdiKERFRkFVTFRfQkxER19DT0xPUiksXG4gICAgY3VzdG9tM0RCdWlsZGluZ0NvbG9yOiBmYWxzZVxuICB9O1xufTtcblxuLyoqXG4gKiBVcGRhdGVycyBmb3IgYG1hcFN0eWxlYC4gQ2FuIGJlIHVzZWQgaW4geW91ciByb290IHJlZHVjZXIgdG8gZGlyZWN0bHkgbW9kaWZ5IGtlcGxlci5nbCdzIHN0YXRlLlxuICogUmVhZCBtb3JlIGFib3V0IFtVc2luZyB1cGRhdGVyc10oLi4vYWR2YW5jZWQtdXNhZ2UvdXNpbmctdXBkYXRlcnMubWQpXG4gKiBAcHVibGljXG4gKiBAZXhhbXBsZVxuICpcbiAqIGltcG9ydCBrZXBsZXJHbFJlZHVjZXIsIHttYXBTdHlsZVVwZGF0ZXJzfSBmcm9tICdrZXBsZXIuZ2wvcmVkdWNlcnMnO1xuICogLy8gUm9vdCBSZWR1Y2VyXG4gKiBjb25zdCByZWR1Y2VycyA9IGNvbWJpbmVSZWR1Y2Vycyh7XG4gKiAga2VwbGVyR2w6IGtlcGxlckdsUmVkdWNlcixcbiAqICBhcHA6IGFwcFJlZHVjZXJcbiAqIH0pO1xuICpcbiAqIGNvbnN0IGNvbXBvc2VkUmVkdWNlciA9IChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gKiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICogICAgLy8gY2xpY2sgYnV0dG9uIHRvIGhpZGUgbGFiZWwgZnJvbSBiYWNrZ3JvdW5kIG1hcFxuICogICAgY2FzZSAnQ0xJQ0tfQlVUVE9OJzpcbiAqICAgICAgcmV0dXJuIHtcbiAqICAgICAgICAuLi5zdGF0ZSxcbiAqICAgICAgICBrZXBsZXJHbDoge1xuICogICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wsXG4gKiAgICAgICAgICBmb286IHtcbiAqICAgICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLmZvbyxcbiAqICAgICAgICAgICAgIG1hcFN0eWxlOiBtYXBTdHlsZVVwZGF0ZXJzLm1hcENvbmZpZ0NoYW5nZVVwZGF0ZXIoXG4gKiAgICAgICAgICAgICAgIG1hcFN0eWxlLFxuICogICAgICAgICAgICAgICB7cGF5bG9hZDoge3Zpc2libGVMYXllckdyb3Vwczoge2xhYmVsOiBmYWxzZSwgcm9hZDogdHJ1ZSwgYmFja2dyb3VuZDogdHJ1ZX19fVxuICogICAgICAgICAgICAgKVxuICogICAgICAgICAgfVxuICogICAgICAgIH1cbiAqICAgICAgfTtcbiAqICB9XG4gKiAgcmV0dXJuIHJlZHVjZXJzKHN0YXRlLCBhY3Rpb24pO1xuICogfTtcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBjb21wb3NlZFJlZHVjZXI7XG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG5jb25zdCBtYXBTdHlsZVVwZGF0ZXJzID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGBtYXBTdHlsZWBcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSBzdHlsZVR5cGUgLSBEZWZhdWx0OiBgJ2RhcmsnYFxuICogQHByb3BlcnR5IHZpc2libGVMYXllckdyb3VwcyAtIERlZmF1bHQ6IGB7fWBcbiAqIEBwcm9wZXJ0eSB0b3BMYXllckdyb3VwcyAtIERlZmF1bHQ6IGB7fWBcbiAqIEBwcm9wZXJ0eSBtYXBTdHlsZXMgLSBtYXBwaW5nIGZyb20gc3R5bGUga2V5IHRvIHN0eWxlIG9iamVjdFxuICogQHByb3BlcnR5IG1hcGJveEFwaUFjY2Vzc1Rva2VuIC0gRGVmYXVsdDogYG51bGxgXG4gKiBAUHJvcGVydHkgbWFwYm94QXBpVXJsIC0gRGVmYXVsdCBudWxsXG4gKiBAUHJvcGVydHkgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQgLSBEZWZhdWx0OiBgZmFsc2VgXG4gKiBAcHJvcGVydHkgaW5wdXRTdHlsZSAtIERlZmF1bHQ6IGB7fWBcbiAqIEBwcm9wZXJ0eSB0aHJlZURCdWlsZGluZ0NvbG9yIC0gRGVmYXVsdDogYFtyLCBnLCBiXWBcbiAqIEB0eXBlIHtpbXBvcnQoJy4vbWFwLXN0eWxlLXVwZGF0ZXJzJykuTWFwU3R5bGV9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBJTklUSUFMX01BUF9TVFlMRSA9IGdldERlZmF1bHRTdGF0ZSgpO1xuXG4vKipcbiAqIENyZWF0ZSB0d28gbWFwIHN0eWxlcyBmcm9tIHByZXNldCBtYXAgc3R5bGUsIG9uZSBmb3IgdG9wIG1hcCBvbmUgZm9yIGJvdHRvbVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHlsZVR5cGUgLSBjdXJyZW50IG1hcCBzdHlsZVxuICogQHBhcmFtIHtPYmplY3R9IHZpc2libGVMYXllckdyb3VwcyAtIHZpc2libGUgbGF5ZXJzIG9mIGJvdHRvbSBtYXBcbiAqIEBwYXJhbSB7T2JqZWN0fSB0b3BMYXllckdyb3VwcyAtIHZpc2libGUgbGF5ZXJzIG9mIHRvcCBtYXBcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXBTdHlsZXMgLSBhIGRpY3Rpb25hcnkgb2YgYWxsIG1hcCBzdHlsZXNcbiAqIEByZXR1cm5zIHtPYmplY3R9IGJvdHRvbU1hcFN0eWxlIHwgdG9wTWFwU3R5bGUgfCBpc1Jhc3RlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFwU3R5bGVzKHtzdHlsZVR5cGUsIHZpc2libGVMYXllckdyb3VwcywgdG9wTGF5ZXJHcm91cHMsIG1hcFN0eWxlc30pIHtcbiAgY29uc3QgbWFwU3R5bGUgPSBtYXBTdHlsZXNbc3R5bGVUeXBlXTtcblxuICAvLyBzdHlsZSBtaWdodCBub3QgYmUgbG9hZGVkIHlldFxuICBpZiAoIW1hcFN0eWxlIHx8ICFtYXBTdHlsZS5zdHlsZSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IGVkaXRhYmxlID0gT2JqZWN0LmtleXModmlzaWJsZUxheWVyR3JvdXBzKS5sZW5ndGg7XG5cbiAgY29uc3QgYm90dG9tTWFwU3R5bGUgPSAhZWRpdGFibGVcbiAgICA/IG1hcFN0eWxlLnN0eWxlXG4gICAgOiBlZGl0Qm90dG9tTWFwU3R5bGUoe1xuICAgICAgICBpZDogc3R5bGVUeXBlLFxuICAgICAgICBtYXBTdHlsZSxcbiAgICAgICAgdmlzaWJsZUxheWVyR3JvdXBzXG4gICAgICB9KTtcblxuICBjb25zdCBoYXNUb3BMYXllciA9IGVkaXRhYmxlICYmIE9iamVjdC52YWx1ZXModG9wTGF5ZXJHcm91cHMpLnNvbWUodiA9PiB2KTtcblxuICAvLyBtdXRlIHRvcCBsYXllciBpZiBub3QgdmlzaWJsZSBpbiBib3R0b20gbGF5ZXJcbiAgY29uc3QgdG9wTGF5ZXJzID1cbiAgICBoYXNUb3BMYXllciAmJlxuICAgIE9iamVjdC5rZXlzKHRvcExheWVyR3JvdXBzKS5yZWR1Y2UoXG4gICAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgICAuLi5hY2N1LFxuICAgICAgICBba2V5XTogdG9wTGF5ZXJHcm91cHNba2V5XSAmJiB2aXNpYmxlTGF5ZXJHcm91cHNba2V5XVxuICAgICAgfSksXG4gICAgICB7fVxuICAgICk7XG5cbiAgY29uc3QgdG9wTWFwU3R5bGUgPSBoYXNUb3BMYXllclxuICAgID8gZWRpdFRvcE1hcFN0eWxlKHtcbiAgICAgICAgaWQ6IHN0eWxlVHlwZSxcbiAgICAgICAgbWFwU3R5bGUsXG4gICAgICAgIHZpc2libGVMYXllckdyb3VwczogdG9wTGF5ZXJzXG4gICAgICB9KVxuICAgIDogbnVsbDtcblxuICByZXR1cm4ge2JvdHRvbU1hcFN0eWxlLCB0b3BNYXBTdHlsZSwgZWRpdGFibGV9O1xufVxuXG5mdW5jdGlvbiBmaW5kTGF5ZXJGaWxsQ29sb3IobGF5ZXIpIHtcbiAgcmV0dXJuIGxheWVyICYmIGxheWVyLnBhaW50ICYmIGxheWVyLnBhaW50WydiYWNrZ3JvdW5kLWNvbG9yJ107XG59XG5cbmZ1bmN0aW9uIGdldDNEQnVpbGRpbmdDb2xvcihzdHlsZSkge1xuICAvLyBzZXQgYnVpbGRpbmcgY29sb3IgdG8gYmUgdGhlIHNhbWUgYXMgdGhlIGJhY2tncm91bmQgY29sb3IuXG4gIGlmICghc3R5bGUuc3R5bGUpIHtcbiAgICByZXR1cm4gaGV4VG9SZ2IoREVGQVVMVF9CTERHX0NPTE9SKTtcbiAgfVxuXG4gIGNvbnN0IGJhY2tncm91bmRMYXllciA9IChzdHlsZS5zdHlsZS5sYXllcnMgfHwgW10pLmZpbmQoKHtpZH0pID0+IGlkID09PSAnYmFja2dyb3VuZCcpO1xuXG4gIGNvbnN0IGJ1aWxkaW5nTGF5ZXIgPSAoc3R5bGUuc3R5bGUubGF5ZXJzIHx8IFtdKS5maW5kKCh7aWR9KSA9PiBpZC5tYXRjaCgvYnVpbGRpbmcvKSk7XG5cbiAgY29uc3QgYnVpbGRpbmdDb2xvciA9XG4gICAgZmluZExheWVyRmlsbENvbG9yKGJ1aWxkaW5nTGF5ZXIpIHx8IGZpbmRMYXllckZpbGxDb2xvcihiYWNrZ3JvdW5kTGF5ZXIpIHx8IERFRkFVTFRfQkxER19DT0xPUjtcblxuICAvLyBicmlnaHRlbiBvciBkYXJrZW4gYnVpbGRpbmcgYmFzZWQgb24gc3R5bGVcbiAgY29uc3Qgb3BlcmF0aW9uID0gc3R5bGUuaWQubWF0Y2goLyg/PShkYXJrfG5pZ2h0KSkvKSA/ICdicmlnaHRlcicgOiAnZGFya2VyJztcblxuICBjb25zdCBhbHBoYSA9IDAuMjtcbiAgY29uc3QgcmdiT2JqID0gcmdiKGJ1aWxkaW5nQ29sb3IpW29wZXJhdGlvbl0oW2FscGhhXSk7XG4gIHJldHVybiBbcmdiT2JqLnIsIHJnYk9iai5nLCByZ2JPYmouYl07XG59XG5cbmZ1bmN0aW9uIGdldExheWVyR3JvdXBzRnJvbVN0eWxlKHN0eWxlKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHN0eWxlLmxheWVycylcbiAgICA/IERFRkFVTFRfTEFZRVJfR1JPVVBTLmZpbHRlcihsZyA9PiBzdHlsZS5sYXllcnMuZmlsdGVyKGxnLmZpbHRlcikubGVuZ3RoKVxuICAgIDogW107XG59XG5cbi8vIFVwZGF0ZXJzXG4vKipcbiAqIFByb3BhZ2F0ZSBgbWFwU3R5bGVgIHJlZHVjZXIgd2l0aCBgbWFwYm94QXBpQWNjZXNzVG9rZW5gIGFuZCBgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHRgLlxuICogaWYgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQgaXMgdHJ1ZSBtYXBTdHlsZXMgaXMgZW1wdGllZDsgbG9hZE1hcFN0eWxlc1VwZGF0ZXIoKSB3aWxsXG4gKiBwb3B1bGF0ZSBtYXBTdHlsZXMuXG4gKlxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS11cGRhdGVycycpLmluaXRNYXBTdHlsZVVwZGF0ZXJ9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBpbml0TWFwU3R5bGVVcGRhdGVyID0gKHN0YXRlLCB7cGF5bG9hZCA9IHt9fSkgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIC8vIHNhdmUgbWFwYm94IGFjY2VzcyB0b2tlbiB0byBtYXAgc3R5bGUgc3RhdGVcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW46IHBheWxvYWQubWFwYm94QXBpQWNjZXNzVG9rZW4gfHwgc3RhdGUubWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gIG1hcGJveEFwaVVybDogcGF5bG9hZC5tYXBib3hBcGlVcmwgfHwgc3RhdGUubWFwYm94QXBpVXJsLFxuICBtYXBTdHlsZXM6ICFwYXlsb2FkLm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0ID8gc3RhdGUubWFwU3R5bGVzIDoge30sXG4gIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0OiBwYXlsb2FkLm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0IHx8IGZhbHNlXG59KTtcbi8vIH0pO1xuXG4vKipcbiAqIFVwZGF0ZSBgdmlzaWJsZUxheWVyR3JvdXBzYHRvIGNoYW5nZSBsYXllciBncm91cCB2aXNpYmlsaXR5XG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbWFwLXN0eWxlLXVwZGF0ZXJzJykubWFwQ29uZmlnQ2hhbmdlVXBkYXRlcn1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IG1hcENvbmZpZ0NoYW5nZVVwZGF0ZXIgPSAoc3RhdGUsIGFjdGlvbikgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIC4uLmFjdGlvbi5wYXlsb2FkLFxuICAuLi5nZXRNYXBTdHlsZXMoe1xuICAgIC4uLnN0YXRlLFxuICAgIC4uLmFjdGlvbi5wYXlsb2FkXG4gIH0pXG59KTtcblxuLyoqXG4gKiBDaGFuZ2UgdG8gYW5vdGhlciBtYXAgc3R5bGUuIFRoZSBzZWxlY3RlZCBzdHlsZSBzaG91bGQgYWxyZWFkeSBiZWVuIGxvYWRlZCBpbnRvIGBtYXBTdHlsZS5tYXBTdHlsZXNgXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbWFwLXN0eWxlLXVwZGF0ZXJzJykubWFwU3R5bGVDaGFuZ2VVcGRhdGVyfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbWFwU3R5bGVDaGFuZ2VVcGRhdGVyID0gKHN0YXRlLCB7cGF5bG9hZDogc3R5bGVUeXBlfSkgPT4ge1xuICBpZiAoIXN0YXRlLm1hcFN0eWxlc1tzdHlsZVR5cGVdKSB7XG4gICAgLy8gd2UgbWlnaHQgbm90IGhhdmUgcmVjZWl2ZWQgdGhlIHN0eWxlIHlldFxuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICBjb25zdCBkZWZhdWx0TEdWaXNpYmlsaXR5ID0gZ2V0RGVmYXVsdExheWVyR3JvdXBWaXNpYmlsaXR5KHN0YXRlLm1hcFN0eWxlc1tzdHlsZVR5cGVdKTtcblxuICBjb25zdCB2aXNpYmxlTGF5ZXJHcm91cHMgPSBtZXJnZUxheWVyR3JvdXBWaXNpYmlsaXR5KFxuICAgIGRlZmF1bHRMR1Zpc2liaWxpdHksXG4gICAgc3RhdGUudmlzaWJsZUxheWVyR3JvdXBzXG4gICk7XG5cbiAgY29uc3QgdGhyZWVEQnVpbGRpbmdDb2xvciA9IHN0YXRlLmN1c3RvbTNEQnVpbGRpbmdDb2xvclxuICAgID8gc3RhdGUudGhyZWVEQnVpbGRpbmdDb2xvclxuICAgIDogZ2V0M0RCdWlsZGluZ0NvbG9yKHN0YXRlLm1hcFN0eWxlc1tzdHlsZVR5cGVdKTtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIHN0eWxlVHlwZSxcbiAgICB2aXNpYmxlTGF5ZXJHcm91cHMsXG4gICAgdGhyZWVEQnVpbGRpbmdDb2xvcixcbiAgICAuLi5nZXRNYXBTdHlsZXMoe1xuICAgICAgLi4uc3RhdGUsXG4gICAgICB2aXNpYmxlTGF5ZXJHcm91cHMsXG4gICAgICBzdHlsZVR5cGVcbiAgICB9KVxuICB9O1xufTtcblxuLyoqXG4gKiBDYWxsYmFjayB3aGVuIGxvYWQgbWFwIHN0eWxlIHN1Y2Nlc3NcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtdXBkYXRlcnMnKS5sb2FkTWFwU3R5bGVzVXBkYXRlcn1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRNYXBTdHlsZXNVcGRhdGVyID0gKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAgY29uc3QgbmV3U3R5bGVzID0gYWN0aW9uLnBheWxvYWQgfHwge307XG4gIGNvbnN0IGFkZExheWVyR3JvdXBzID0gT2JqZWN0LmtleXMobmV3U3R5bGVzKS5yZWR1Y2UoXG4gICAgKGFjY3UsIGlkKSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIFtpZF06IHtcbiAgICAgICAgLi4ubmV3U3R5bGVzW2lkXSxcbiAgICAgICAgbGF5ZXJHcm91cHM6IG5ld1N0eWxlc1tpZF0ubGF5ZXJHcm91cHMgfHwgZ2V0TGF5ZXJHcm91cHNGcm9tU3R5bGUobmV3U3R5bGVzW2lkXS5zdHlsZSlcbiAgICAgIH1cbiAgICB9KSxcbiAgICB7fVxuICApO1xuXG4gIC8vIGFkZCBuZXcgc3R5bGVzIHRvIHN0YXRlXG4gIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1hcFN0eWxlczoge1xuICAgICAgLi4uc3RhdGUubWFwU3R5bGVzLFxuICAgICAgLi4uYWRkTGF5ZXJHcm91cHNcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIG5ld1N0eWxlc1tzdGF0ZS5zdHlsZVR5cGVdXG4gICAgPyBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIobmV3U3RhdGUsIHtwYXlsb2FkOiBzdGF0ZS5zdHlsZVR5cGV9KVxuICAgIDogbmV3U3RhdGU7XG59O1xuXG4vKipcbiAqIENhbGxiYWNrIHdoZW4gbG9hZCBtYXAgc3R5bGUgZXJyb3JcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtdXBkYXRlcnMnKS5sb2FkTWFwU3R5bGVFcnJVcGRhdGVyfVxuICogQHB1YmxpY1xuICovXG4vLyBkbyBub3RoaW5nIGZvciBub3csIGlmIGRpZG4ndCBsb2FkLCBza2lwIGl0XG5leHBvcnQgY29uc3QgbG9hZE1hcFN0eWxlRXJyVXBkYXRlciA9IHN0YXRlID0+IHN0YXRlO1xuXG4vKipcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtdXBkYXRlcnMnKS5yZXF1ZXN0TWFwU3R5bGVzVXBkYXRlcn1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlcXVlc3RNYXBTdHlsZXNVcGRhdGVyID0gKHN0YXRlLCB7cGF5bG9hZDogbWFwU3R5bGVzfSkgPT4ge1xuICBjb25zdCBsb2FkTWFwU3R5bGVUYXNrcyA9IGdldExvYWRNYXBTdHlsZVRhc2tzKFxuICAgIG1hcFN0eWxlcyxcbiAgICBzdGF0ZS5tYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICBzdGF0ZS5tYXBib3hBcGlVcmxcbiAgKTtcbiAgcmV0dXJuIHdpdGhUYXNrKHN0YXRlLCBsb2FkTWFwU3R5bGVUYXNrcyk7XG59O1xuXG4vKipcbiAqIExvYWQgbWFwIHN0eWxlIG9iamVjdCB3aGVuIHBhc3MgaW4gc2F2ZWQgbWFwIGNvbmZpZ1xuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgbWFwU3R5bGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgc2F2ZWQgbWFwIGNvbmZpZyBge21hcFN0eWxlLCB2aXNTdGF0ZSwgbWFwU3RhdGV9YFxuICogQHJldHVybnMgbmV4dFN0YXRlIG9yIGByZWFjdC1wYW1gIHRhc2tzIHRvIGxvYWQgbWFwIHN0eWxlIG9iamVjdFxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbWFwLXN0eWxlLXVwZGF0ZXJzJykucmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXJ9XG4gKi9cbmV4cG9ydCBjb25zdCByZWNlaXZlTWFwQ29uZmlnVXBkYXRlciA9IChzdGF0ZSwge3BheWxvYWQ6IHtjb25maWcgPSB7fX19KSA9PiB7XG4gIGNvbnN0IHttYXBTdHlsZX0gPSBjb25maWcgfHwge307XG5cbiAgaWYgKCFtYXBTdHlsZSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIC8vIGlmIHNhdmVkIGN1c3RvbSBtYXBTdHlsZXMgbG9hZCB0aGUgc3R5bGUgb2JqZWN0XG4gIGNvbnN0IGxvYWRNYXBTdHlsZVRhc2tzID0gbWFwU3R5bGUubWFwU3R5bGVzXG4gICAgPyBnZXRMb2FkTWFwU3R5bGVUYXNrcyhtYXBTdHlsZS5tYXBTdHlsZXMsIHN0YXRlLm1hcGJveEFwaUFjY2Vzc1Rva2VuLCBzdGF0ZS5tYXBib3hBcGlVcmwpXG4gICAgOiBudWxsO1xuXG4gIC8vIG1lcmdlIGRlZmF1bHQgbWFwU3R5bGVzXG4gIGNvbnN0IG1lcmdlZCA9IG1hcFN0eWxlLm1hcFN0eWxlc1xuICAgID8ge1xuICAgICAgICAuLi5tYXBTdHlsZSxcbiAgICAgICAgbWFwU3R5bGVzOiB7XG4gICAgICAgICAgLi4ubWFwU3R5bGUubWFwU3R5bGVzLFxuICAgICAgICAgIC4uLnN0YXRlLm1hcFN0eWxlc1xuICAgICAgICB9XG4gICAgICB9XG4gICAgOiBtYXBTdHlsZTtcblxuICAvLyBzZXQgY3VzdG9tM0RCdWlsZGluZ0NvbG9yOiB0cnVlIGlmIG1hcFN0eWxlIGNvbnRhaW5zIHRocmVlREJ1aWxkaW5nQ29sb3JcbiAgbWVyZ2VkLmN1c3RvbTNEQnVpbGRpbmdDb2xvciA9XG4gICAgQm9vbGVhbihtYXBTdHlsZS50aHJlZURCdWlsZGluZ0NvbG9yKSB8fCBtZXJnZWQuY3VzdG9tM0RCdWlsZGluZ0NvbG9yO1xuICBjb25zdCBuZXdTdGF0ZSA9IG1hcENvbmZpZ0NoYW5nZVVwZGF0ZXIoc3RhdGUsIHtwYXlsb2FkOiBtZXJnZWR9KTtcblxuICByZXR1cm4gbG9hZE1hcFN0eWxlVGFza3MgPyB3aXRoVGFzayhuZXdTdGF0ZSwgbG9hZE1hcFN0eWxlVGFza3MpIDogbmV3U3RhdGU7XG59O1xuXG5mdW5jdGlvbiBnZXRMb2FkTWFwU3R5bGVUYXNrcyhtYXBTdHlsZXMsIG1hcGJveEFwaUFjY2Vzc1Rva2VuLCBtYXBib3hBcGlVcmwpIHtcbiAgcmV0dXJuIFtcbiAgICBUYXNrLmFsbChcbiAgICAgIE9iamVjdC52YWx1ZXMobWFwU3R5bGVzKVxuICAgICAgICAubWFwKCh7aWQsIHVybCwgYWNjZXNzVG9rZW59KSA9PiAoe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIHVybDogaXNWYWxpZFN0eWxlVXJsKHVybClcbiAgICAgICAgICAgID8gZ2V0U3R5bGVEb3dubG9hZFVybCh1cmwsIGFjY2Vzc1Rva2VuIHx8IG1hcGJveEFwaUFjY2Vzc1Rva2VuLCBtYXBib3hBcGlVcmwpXG4gICAgICAgICAgICA6IHVybFxuICAgICAgICB9KSlcbiAgICAgICAgLm1hcChMT0FEX01BUF9TVFlMRV9UQVNLKVxuICAgICkuYmltYXAoXG4gICAgICAvLyBzdWNjZXNzXG4gICAgICByZXN1bHRzID0+XG4gICAgICAgIGxvYWRNYXBTdHlsZXMoXG4gICAgICAgICAgcmVzdWx0cy5yZWR1Y2UoXG4gICAgICAgICAgICAoYWNjdSwge2lkLCBzdHlsZX0pID0+ICh7XG4gICAgICAgICAgICAgIC4uLmFjY3UsXG4gICAgICAgICAgICAgIFtpZF06IHtcbiAgICAgICAgICAgICAgICAuLi5tYXBTdHlsZXNbaWRdLFxuICAgICAgICAgICAgICAgIHN0eWxlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAge31cbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAvLyBlcnJvclxuICAgICAgbG9hZE1hcFN0eWxlRXJyXG4gICAgKVxuICBdO1xufVxuLyoqXG4gKiBSZXNldCBtYXAgc3R5bGUgY29uZmlnIHRvIGluaXRpYWwgc3RhdGVcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYG1hcFN0eWxlYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtdXBkYXRlcnMnKS5yZXNldE1hcENvbmZpZ01hcFN0eWxlVXBkYXRlcn1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlc2V0TWFwQ29uZmlnTWFwU3R5bGVVcGRhdGVyID0gc3RhdGUgPT4ge1xuICBjb25zdCBlbXB0eUNvbmZpZyA9IHtcbiAgICAuLi5JTklUSUFMX01BUF9TVFlMRSxcbiAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogc3RhdGUubWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgbWFwYm94QXBpVXJsOiBzdGF0ZS5tYXBib3hBcGlVcmwsXG4gICAgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQ6IHN0YXRlLm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0LFxuICAgIC4uLnN0YXRlLmluaXRpYWxTdGF0ZSxcbiAgICBtYXBTdHlsZXM6IHN0YXRlLm1hcFN0eWxlcyxcbiAgICBpbml0aWFsU3RhdGU6IHN0YXRlLmluaXRpYWxTdGF0ZVxuICB9O1xuXG4gIHJldHVybiBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIoZW1wdHlDb25maWcsIHtwYXlsb2FkOiBlbXB0eUNvbmZpZy5zdHlsZVR5cGV9KTtcbn07XG5cbi8qKlxuICogQ2FsbGJhY2sgd2hlbiBhIGN1c3RvbSBtYXAgc3R5bGUgb2JqZWN0IGlzIHJlY2VpdmVkXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbWFwLXN0eWxlLXVwZGF0ZXJzJykubG9hZEN1c3RvbU1hcFN0eWxlVXBkYXRlcn1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRDdXN0b21NYXBTdHlsZVVwZGF0ZXIgPSAoc3RhdGUsIHtwYXlsb2FkOiB7aWNvbiwgc3R5bGUsIGVycm9yfX0pID0+ICh7XG4gIC4uLnN0YXRlLFxuICBpbnB1dFN0eWxlOiB7XG4gICAgLi4uc3RhdGUuaW5wdXRTdHlsZSxcbiAgICAvLyBzdHlsZSBqc29uIGFuZCBpY29uIHdpbGwgbG9hZCBhc3luY2hyb25vdXNseVxuICAgIC4uLihzdHlsZVxuICAgICAgPyB7XG4gICAgICAgICAgaWQ6IHN0eWxlLmlkIHx8IGdlbmVyYXRlSGFzaElkKCksXG4gICAgICAgICAgLy8gbWFrZSBhIGNvcHkgb2YgdGhlIHN0eWxlIG9iamVjdFxuICAgICAgICAgIHN0eWxlOiBjbG9uZURlZXAoc3R5bGUpLFxuICAgICAgICAgIGxhYmVsOiBzdHlsZS5uYW1lLFxuICAgICAgICAgIC8vIGdhdGhlcmluZyBsYXllciBncm91cCBpbmZvIGZyb20gc3R5bGUganNvblxuICAgICAgICAgIGxheWVyR3JvdXBzOiBnZXRMYXllckdyb3Vwc0Zyb21TdHlsZShzdHlsZSlcbiAgICAgICAgfVxuICAgICAgOiB7fSksXG4gICAgLi4uKGljb24gPyB7aWNvbn0gOiB7fSksXG4gICAgLi4uKGVycm9yICE9PSB1bmRlZmluZWQgPyB7ZXJyb3J9IDoge30pXG4gIH1cbn0pO1xuXG4vKipcbiAqIElucHV0IGEgY3VzdG9tIG1hcCBzdHlsZSBvYmplY3RcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtdXBkYXRlcnMnKS5pbnB1dE1hcFN0eWxlVXBkYXRlcn1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGlucHV0TWFwU3R5bGVVcGRhdGVyID0gKHN0YXRlLCB7cGF5bG9hZDoge2lucHV0U3R5bGUsIG1hcFN0YXRlfX0pID0+IHtcbiAgY29uc3QgdXBkYXRlZCA9IHtcbiAgICAuLi5zdGF0ZS5pbnB1dFN0eWxlLFxuICAgIC4uLmlucHV0U3R5bGVcbiAgfTtcblxuICBjb25zdCBpc1ZhbGlkID0gaXNWYWxpZFN0eWxlVXJsKHVwZGF0ZWQudXJsKTtcbiAgY29uc3QgaWNvbiA9IGlzVmFsaWRcbiAgICA/IGdldFN0eWxlSW1hZ2VJY29uKHtcbiAgICAgICAgbWFwU3RhdGUsXG4gICAgICAgIHN0eWxlVXJsOiB1cGRhdGVkLnVybCxcbiAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW46IHVwZGF0ZWQuYWNjZXNzVG9rZW4gfHwgc3RhdGUubWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgIG1hcGJveEFwaVVybDogc3RhdGUubWFwYm94QXBpVXJsIHx8IERFRkFVTFRfTUFQQk9YX0FQSV9VUkxcbiAgICAgIH0pXG4gICAgOiBzdGF0ZS5pbnB1dFN0eWxlLmljb247XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBpbnB1dFN0eWxlOiB7XG4gICAgICAuLi51cGRhdGVkLFxuICAgICAgaXNWYWxpZCxcbiAgICAgIGljb25cbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIEFkZCBtYXAgc3R5bGUgZnJvbSB1c2VyIGlucHV0IHRvIHJlZHVjZXIgYW5kIHNldCBpdCB0byBjdXJyZW50IHN0eWxlXG4gKiBUaGlzIGFjdGlvbiBpcyBjYWxsZWQgd2hlbiB1c2VyIGNsaWNrIGNvbmZpcm0gYWZ0ZXIgcHV0dGluZyBpbiBhIHZhbGlkIHN0eWxlIHVybCBpbiB0aGUgY3VzdG9tIG1hcCBzdHlsZSBkaWFsb2cuXG4gKiBJdCBzaG91bGQgbm90IGJlIGNhbGxlZCBmcm9tIG91dHNpZGUga2VwbGVyLmdsIHdpdGhvdXQgYSB2YWxpZCBgaW5wdXRTdHlsZWAgaW4gdGhlIGBtYXBTdHlsZWAgcmVkdWNlci5cbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtdXBkYXRlcnMnKS5hZGRDdXN0b21NYXBTdHlsZVVwZGF0ZXJ9XG4gKi9cbmV4cG9ydCBjb25zdCBhZGRDdXN0b21NYXBTdHlsZVVwZGF0ZXIgPSBzdGF0ZSA9PiB7XG4gIGNvbnN0IHN0eWxlSWQgPSBzdGF0ZS5pbnB1dFN0eWxlLmlkO1xuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtYXBTdHlsZXM6IHtcbiAgICAgIC4uLnN0YXRlLm1hcFN0eWxlcyxcbiAgICAgIFtzdHlsZUlkXTogc3RhdGUuaW5wdXRTdHlsZVxuICAgIH0sXG4gICAgLy8gc2V0IHRvIGRlZmF1bHRcbiAgICBpbnB1dFN0eWxlOiBnZXRJbml0aWFsSW5wdXRTdHlsZSgpXG4gIH07XG4gIC8vIHNldCBuZXcgc3R5bGVcbiAgcmV0dXJuIG1hcFN0eWxlQ2hhbmdlVXBkYXRlcihuZXdTdGF0ZSwge3BheWxvYWQ6IHN0eWxlSWR9KTtcbn07XG5cbi8qKlxuICogVXBkYXRlcyAzZCBidWlsZGluZyBjb2xvclxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS11cGRhdGVycycpLnNldDNkQnVpbGRpbmdDb2xvclVwZGF0ZXJ9XG4gKi9cbmV4cG9ydCBjb25zdCBzZXQzZEJ1aWxkaW5nQ29sb3JVcGRhdGVyID0gKHN0YXRlLCB7cGF5bG9hZDogY29sb3J9KSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgdGhyZWVEQnVpbGRpbmdDb2xvcjogY29sb3IsXG4gIGN1c3RvbTNEQnVpbGRpbmdDb2xvcjogdHJ1ZVxufSk7XG5cbi8qKlxuICogUmV0dXJuIHRoZSBpbml0aWFsIGlucHV0IHN0eWxlXG4gKiBAcmV0dXJuIE9iamVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5pdGlhbElucHV0U3R5bGUoKSB7XG4gIHJldHVybiB7XG4gICAgYWNjZXNzVG9rZW46IG51bGwsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGlzVmFsaWQ6IGZhbHNlLFxuICAgIGxhYmVsOiBudWxsLFxuICAgIHN0eWxlOiBudWxsLFxuICAgIHVybDogbnVsbCxcbiAgICBpY29uOiBudWxsLFxuICAgIGN1c3RvbTogdHJ1ZVxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFxQkEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBR0EsSUFBQUcsb0JBQUEsR0FBQUgsT0FBQTtBQVNBLElBQUFJLGdCQUFBLEdBQUFK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
|
|
487
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGFza3MiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY2xvbmVEZWVwIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9tYXBib3hHbFN0eWxlRWRpdG9yIiwiX2RlZmF1bHRTZXR0aW5ncyIsIl91dGlscyIsIl90YXNrczIiLCJfbWFwU3R5bGVBY3Rpb25zIiwiX2QzQ29sb3IiLCJfY29sb3JVdGlscyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIkRFRkFVTFRfQkxER19DT0xPUiIsImdldERlZmF1bHRTdGF0ZSIsInZpc2libGVMYXllckdyb3VwcyIsInN0eWxlVHlwZSIsInRvcExheWVyR3JvdXBzIiwibWFwU3R5bGVzIiwiREVGQVVMVF9NQVBfU1RZTEVTIiwicmVkdWNlIiwiYWNjdSIsImN1cnIiLCJpZCIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwibWFwYm94QXBpVXJsIiwiREVGQVVMVF9NQVBCT1hfQVBJX1VSTCIsIm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0IiwiaW5wdXRTdHlsZSIsImdldEluaXRpYWxJbnB1dFN0eWxlIiwidGhyZWVEQnVpbGRpbmdDb2xvciIsImhleFRvUmdiIiwiY3VzdG9tM0RCdWlsZGluZ0NvbG9yIiwibWFwU3R5bGVVcGRhdGVycyIsIklOSVRJQUxfTUFQX1NUWUxFIiwiZXhwb3J0cyIsImdldE1hcFN0eWxlcyIsIl9yZWYiLCJtYXBTdHlsZSIsInN0eWxlIiwiZWRpdGFibGUiLCJib3R0b21NYXBTdHlsZSIsImVkaXRCb3R0b21NYXBTdHlsZSIsImhhc1RvcExheWVyIiwidmFsdWVzIiwic29tZSIsInYiLCJ0b3BMYXllcnMiLCJrZXkiLCJ0b3BNYXBTdHlsZSIsImVkaXRUb3BNYXBTdHlsZSIsImZpbmRMYXllckZpbGxDb2xvciIsImxheWVyIiwicGFpbnQiLCJnZXQzREJ1aWxkaW5nQ29sb3IiLCJiYWNrZ3JvdW5kTGF5ZXIiLCJsYXllcnMiLCJmaW5kIiwiX3JlZjIiLCJidWlsZGluZ0xheWVyIiwiX3JlZjMiLCJtYXRjaCIsImJ1aWxkaW5nQ29sb3IiLCJvcGVyYXRpb24iLCJhbHBoYSIsInJnYk9iaiIsInJnYiIsImciLCJiIiwiZ2V0TGF5ZXJHcm91cHNGcm9tU3R5bGUiLCJBcnJheSIsImlzQXJyYXkiLCJERUZBVUxUX0xBWUVSX0dST1VQUyIsImxnIiwiaW5pdE1hcFN0eWxlVXBkYXRlciIsInN0YXRlIiwiX3JlZjQiLCJfcmVmNCRwYXlsb2FkIiwicGF5bG9hZCIsIm1hcENvbmZpZ0NoYW5nZVVwZGF0ZXIiLCJhY3Rpb24iLCJtYXBTdHlsZUNoYW5nZVVwZGF0ZXIiLCJfcmVmNSIsImRlZmF1bHRMR1Zpc2liaWxpdHkiLCJnZXREZWZhdWx0TGF5ZXJHcm91cFZpc2liaWxpdHkiLCJtZXJnZUxheWVyR3JvdXBWaXNpYmlsaXR5IiwibG9hZE1hcFN0eWxlc1VwZGF0ZXIiLCJuZXdTdHlsZXMiLCJhZGRMYXllckdyb3VwcyIsImxheWVyR3JvdXBzIiwibmV3U3RhdGUiLCJsb2FkTWFwU3R5bGVFcnJVcGRhdGVyIiwicmVxdWVzdE1hcFN0eWxlc1VwZGF0ZXIiLCJfcmVmNiIsImxvYWRNYXBTdHlsZVRhc2tzIiwiZ2V0TG9hZE1hcFN0eWxlVGFza3MiLCJ3aXRoVGFzayIsInJlY2VpdmVNYXBDb25maWdVcGRhdGVyIiwiX3JlZjciLCJfcmVmNyRwYXlsb2FkJGNvbmZpZyIsImNvbmZpZyIsIl9yZWY4IiwibWVyZ2VkIiwiQm9vbGVhbiIsIlRhc2siLCJhbGwiLCJtYXAiLCJfcmVmOSIsInVybCIsImFjY2Vzc1Rva2VuIiwiaXNWYWxpZFN0eWxlVXJsIiwiZ2V0U3R5bGVEb3dubG9hZFVybCIsIkxPQURfTUFQX1NUWUxFX1RBU0siLCJiaW1hcCIsInJlc3VsdHMiLCJsb2FkTWFwU3R5bGVzIiwiX3JlZjEwIiwibG9hZE1hcFN0eWxlRXJyIiwicmVzZXRNYXBDb25maWdNYXBTdHlsZVVwZGF0ZXIiLCJlbXB0eUNvbmZpZyIsImluaXRpYWxTdGF0ZSIsImxvYWRDdXN0b21NYXBTdHlsZVVwZGF0ZXIiLCJfcmVmMTEiLCJfcmVmMTEkcGF5bG9hZCIsImljb24iLCJlcnJvciIsImdlbmVyYXRlSGFzaElkIiwiY2xvbmVEZWVwIiwibGFiZWwiLCJuYW1lIiwidW5kZWZpbmVkIiwiaW5wdXRNYXBTdHlsZVVwZGF0ZXIiLCJfcmVmMTIiLCJfcmVmMTIkcGF5bG9hZCIsIm1hcFN0YXRlIiwidXBkYXRlZCIsImlzVmFsaWQiLCJnZXRTdHlsZUltYWdlSWNvbiIsInN0eWxlVXJsIiwiYWRkQ3VzdG9tTWFwU3R5bGVVcGRhdGVyIiwic3R5bGVJZCIsInNldDNkQnVpbGRpbmdDb2xvclVwZGF0ZXIiLCJfcmVmMTMiLCJjb2xvciIsImN1c3RvbSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWR1Y2Vycy9tYXAtc3R5bGUtdXBkYXRlcnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuLy8gQHRzLW5vY2hlY2tcbmltcG9ydCBUYXNrLCB7d2l0aFRhc2t9IGZyb20gJ3JlYWN0LXBhbG0vdGFza3MnO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2gvY2xvbmVEZWVwJztcblxuLy8gVXRpbHNcbmltcG9ydCB7XG4gIGdldERlZmF1bHRMYXllckdyb3VwVmlzaWJpbGl0eSxcbiAgaXNWYWxpZFN0eWxlVXJsLFxuICBnZXRTdHlsZURvd25sb2FkVXJsLFxuICBtZXJnZUxheWVyR3JvdXBWaXNpYmlsaXR5LFxuICBlZGl0VG9wTWFwU3R5bGUsXG4gIGVkaXRCb3R0b21NYXBTdHlsZSxcbiAgZ2V0U3R5bGVJbWFnZUljb25cbn0gZnJvbSAndXRpbHMvbWFwLXN0eWxlLXV0aWxzL21hcGJveC1nbC1zdHlsZS1lZGl0b3InO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9NQVBfU1RZTEVTLFxuICBERUZBVUxUX0xBWUVSX0dST1VQUyxcbiAgREVGQVVMVF9NQVBCT1hfQVBJX1VSTFxufSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5pbXBvcnQge2dlbmVyYXRlSGFzaElkfSBmcm9tICd1dGlscy91dGlscyc7XG5pbXBvcnQge0xPQURfTUFQX1NUWUxFX1RBU0t9IGZyb20gJ3Rhc2tzL3Rhc2tzJztcbmltcG9ydCB7bG9hZE1hcFN0eWxlcywgbG9hZE1hcFN0eWxlRXJyfSBmcm9tICdhY3Rpb25zL21hcC1zdHlsZS1hY3Rpb25zJztcbmltcG9ydCB7cmdifSBmcm9tICdkMy1jb2xvcic7XG5pbXBvcnQge2hleFRvUmdifSBmcm9tICd1dGlscy9jb2xvci11dGlscyc7XG5cbmNvbnN0IERFRkFVTFRfQkxER19DT0xPUiA9ICcjRDFDRUM3JztcblxuLyoqXG4gKiBAcmV0dXJuIHtpbXBvcnQoJy4vbWFwLXN0eWxlLXVwZGF0ZXJzJykuTWFwU3R5bGV9XG4gKi9cbmNvbnN0IGdldERlZmF1bHRTdGF0ZSA9ICgpID0+IHtcbiAgY29uc3QgdmlzaWJsZUxheWVyR3JvdXBzID0ge307XG4gIGNvbnN0IHN0eWxlVHlwZSA9ICdkYXJrJztcbiAgY29uc3QgdG9wTGF5ZXJHcm91cHMgPSB7fTtcblxuICByZXR1cm4ge1xuICAgIHN0eWxlVHlwZSxcbiAgICB2aXNpYmxlTGF5ZXJHcm91cHMsXG4gICAgdG9wTGF5ZXJHcm91cHMsXG4gICAgbWFwU3R5bGVzOiBERUZBVUxUX01BUF9TVFlMRVMucmVkdWNlKFxuICAgICAgKGFjY3UsIGN1cnIpID0+ICh7XG4gICAgICAgIC4uLmFjY3UsXG4gICAgICAgIFtjdXJyLmlkXTogY3VyclxuICAgICAgfSksXG4gICAgICB7fVxuICAgICksXG4gICAgLy8gc2F2ZSBtYXBib3ggYWNjZXNzIHRva2VuXG4gICAgbWFwYm94QXBpQWNjZXNzVG9rZW46IG51bGwsXG4gICAgbWFwYm94QXBpVXJsOiBERUZBVUxUX01BUEJPWF9BUElfVVJMLFxuICAgIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0OiBmYWxzZSxcbiAgICBpbnB1dFN0eWxlOiBnZXRJbml0aWFsSW5wdXRTdHlsZSgpLFxuICAgIHRocmVlREJ1aWxkaW5nQ29sb3I6IGhleFRvUmdiKERFRkFVTFRfQkxER19DT0xPUiksXG4gICAgY3VzdG9tM0RCdWlsZGluZ0NvbG9yOiBmYWxzZVxuICB9O1xufTtcblxuLyoqXG4gKiBVcGRhdGVycyBmb3IgYG1hcFN0eWxlYC4gQ2FuIGJlIHVzZWQgaW4geW91ciByb290IHJlZHVjZXIgdG8gZGlyZWN0bHkgbW9kaWZ5IGtlcGxlci5nbCdzIHN0YXRlLlxuICogUmVhZCBtb3JlIGFib3V0IFtVc2luZyB1cGRhdGVyc10oLi4vYWR2YW5jZWQtdXNhZ2UvdXNpbmctdXBkYXRlcnMubWQpXG4gKiBAcHVibGljXG4gKiBAZXhhbXBsZVxuICpcbiAqIGltcG9ydCBrZXBsZXJHbFJlZHVjZXIsIHttYXBTdHlsZVVwZGF0ZXJzfSBmcm9tICdrZXBsZXIuZ2wvcmVkdWNlcnMnO1xuICogLy8gUm9vdCBSZWR1Y2VyXG4gKiBjb25zdCByZWR1Y2VycyA9IGNvbWJpbmVSZWR1Y2Vycyh7XG4gKiAga2VwbGVyR2w6IGtlcGxlckdsUmVkdWNlcixcbiAqICBhcHA6IGFwcFJlZHVjZXJcbiAqIH0pO1xuICpcbiAqIGNvbnN0IGNvbXBvc2VkUmVkdWNlciA9IChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gKiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICogICAgLy8gY2xpY2sgYnV0dG9uIHRvIGhpZGUgbGFiZWwgZnJvbSBiYWNrZ3JvdW5kIG1hcFxuICogICAgY2FzZSAnQ0xJQ0tfQlVUVE9OJzpcbiAqICAgICAgcmV0dXJuIHtcbiAqICAgICAgICAuLi5zdGF0ZSxcbiAqICAgICAgICBrZXBsZXJHbDoge1xuICogICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wsXG4gKiAgICAgICAgICBmb286IHtcbiAqICAgICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLmZvbyxcbiAqICAgICAgICAgICAgIG1hcFN0eWxlOiBtYXBTdHlsZVVwZGF0ZXJzLm1hcENvbmZpZ0NoYW5nZVVwZGF0ZXIoXG4gKiAgICAgICAgICAgICAgIG1hcFN0eWxlLFxuICogICAgICAgICAgICAgICB7cGF5bG9hZDoge3Zpc2libGVMYXllckdyb3Vwczoge2xhYmVsOiBmYWxzZSwgcm9hZDogdHJ1ZSwgYmFja2dyb3VuZDogdHJ1ZX19fVxuICogICAgICAgICAgICAgKVxuICogICAgICAgICAgfVxuICogICAgICAgIH1cbiAqICAgICAgfTtcbiAqICB9XG4gKiAgcmV0dXJuIHJlZHVjZXJzKHN0YXRlLCBhY3Rpb24pO1xuICogfTtcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBjb21wb3NlZFJlZHVjZXI7XG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG5jb25zdCBtYXBTdHlsZVVwZGF0ZXJzID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGBtYXBTdHlsZWBcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSBzdHlsZVR5cGUgLSBEZWZhdWx0OiBgJ2RhcmsnYFxuICogQHByb3BlcnR5IHZpc2libGVMYXllckdyb3VwcyAtIERlZmF1bHQ6IGB7fWBcbiAqIEBwcm9wZXJ0eSB0b3BMYXllckdyb3VwcyAtIERlZmF1bHQ6IGB7fWBcbiAqIEBwcm9wZXJ0eSBtYXBTdHlsZXMgLSBtYXBwaW5nIGZyb20gc3R5bGUga2V5IHRvIHN0eWxlIG9iamVjdFxuICogQHByb3BlcnR5IG1hcGJveEFwaUFjY2Vzc1Rva2VuIC0gRGVmYXVsdDogYG51bGxgXG4gKiBAUHJvcGVydHkgbWFwYm94QXBpVXJsIC0gRGVmYXVsdCBudWxsXG4gKiBAUHJvcGVydHkgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQgLSBEZWZhdWx0OiBgZmFsc2VgXG4gKiBAcHJvcGVydHkgaW5wdXRTdHlsZSAtIERlZmF1bHQ6IGB7fWBcbiAqIEBwcm9wZXJ0eSB0aHJlZURCdWlsZGluZ0NvbG9yIC0gRGVmYXVsdDogYFtyLCBnLCBiXWBcbiAqIEB0eXBlIHtpbXBvcnQoJy4vbWFwLXN0eWxlLXVwZGF0ZXJzJykuTWFwU3R5bGV9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBJTklUSUFMX01BUF9TVFlMRSA9IGdldERlZmF1bHRTdGF0ZSgpO1xuXG4vKipcbiAqIENyZWF0ZSB0d28gbWFwIHN0eWxlcyBmcm9tIHByZXNldCBtYXAgc3R5bGUsIG9uZSBmb3IgdG9wIG1hcCBvbmUgZm9yIGJvdHRvbVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHlsZVR5cGUgLSBjdXJyZW50IG1hcCBzdHlsZVxuICogQHBhcmFtIHtPYmplY3R9IHZpc2libGVMYXllckdyb3VwcyAtIHZpc2libGUgbGF5ZXJzIG9mIGJvdHRvbSBtYXBcbiAqIEBwYXJhbSB7T2JqZWN0fSB0b3BMYXllckdyb3VwcyAtIHZpc2libGUgbGF5ZXJzIG9mIHRvcCBtYXBcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXBTdHlsZXMgLSBhIGRpY3Rpb25hcnkgb2YgYWxsIG1hcCBzdHlsZXNcbiAqIEByZXR1cm5zIHtPYmplY3R9IGJvdHRvbU1hcFN0eWxlIHwgdG9wTWFwU3R5bGUgfCBpc1Jhc3RlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFwU3R5bGVzKHtzdHlsZVR5cGUsIHZpc2libGVMYXllckdyb3VwcywgdG9wTGF5ZXJHcm91cHMsIG1hcFN0eWxlc30pIHtcbiAgY29uc3QgbWFwU3R5bGUgPSBtYXBTdHlsZXNbc3R5bGVUeXBlXTtcblxuICAvLyBzdHlsZSBtaWdodCBub3QgYmUgbG9hZGVkIHlldFxuICBpZiAoIW1hcFN0eWxlIHx8ICFtYXBTdHlsZS5zdHlsZSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IGVkaXRhYmxlID0gT2JqZWN0LmtleXModmlzaWJsZUxheWVyR3JvdXBzKS5sZW5ndGg7XG5cbiAgY29uc3QgYm90dG9tTWFwU3R5bGUgPSAhZWRpdGFibGVcbiAgICA/IG1hcFN0eWxlLnN0eWxlXG4gICAgOiBlZGl0Qm90dG9tTWFwU3R5bGUoe1xuICAgICAgICBpZDogc3R5bGVUeXBlLFxuICAgICAgICBtYXBTdHlsZSxcbiAgICAgICAgdmlzaWJsZUxheWVyR3JvdXBzXG4gICAgICB9KTtcblxuICBjb25zdCBoYXNUb3BMYXllciA9IGVkaXRhYmxlICYmIE9iamVjdC52YWx1ZXModG9wTGF5ZXJHcm91cHMpLnNvbWUodiA9PiB2KTtcblxuICAvLyBtdXRlIHRvcCBsYXllciBpZiBub3QgdmlzaWJsZSBpbiBib3R0b20gbGF5ZXJcbiAgY29uc3QgdG9wTGF5ZXJzID1cbiAgICBoYXNUb3BMYXllciAmJlxuICAgIE9iamVjdC5rZXlzKHRvcExheWVyR3JvdXBzKS5yZWR1Y2UoXG4gICAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgICAuLi5hY2N1LFxuICAgICAgICBba2V5XTogdG9wTGF5ZXJHcm91cHNba2V5XSAmJiB2aXNpYmxlTGF5ZXJHcm91cHNba2V5XVxuICAgICAgfSksXG4gICAgICB7fVxuICAgICk7XG5cbiAgY29uc3QgdG9wTWFwU3R5bGUgPSBoYXNUb3BMYXllclxuICAgID8gZWRpdFRvcE1hcFN0eWxlKHtcbiAgICAgICAgaWQ6IHN0eWxlVHlwZSxcbiAgICAgICAgbWFwU3R5bGUsXG4gICAgICAgIHZpc2libGVMYXllckdyb3VwczogdG9wTGF5ZXJzXG4gICAgICB9KVxuICAgIDogbnVsbDtcblxuICByZXR1cm4ge2JvdHRvbU1hcFN0eWxlLCB0b3BNYXBTdHlsZSwgZWRpdGFibGV9O1xufVxuXG5mdW5jdGlvbiBmaW5kTGF5ZXJGaWxsQ29sb3IobGF5ZXIpIHtcbiAgcmV0dXJuIGxheWVyICYmIGxheWVyLnBhaW50ICYmIGxheWVyLnBhaW50WydiYWNrZ3JvdW5kLWNvbG9yJ107XG59XG5cbmZ1bmN0aW9uIGdldDNEQnVpbGRpbmdDb2xvcihzdHlsZSkge1xuICAvLyBzZXQgYnVpbGRpbmcgY29sb3IgdG8gYmUgdGhlIHNhbWUgYXMgdGhlIGJhY2tncm91bmQgY29sb3IuXG4gIGlmICghc3R5bGUuc3R5bGUpIHtcbiAgICByZXR1cm4gaGV4VG9SZ2IoREVGQVVMVF9CTERHX0NPTE9SKTtcbiAgfVxuXG4gIGNvbnN0IGJhY2tncm91bmRMYXllciA9IChzdHlsZS5zdHlsZS5sYXllcnMgfHwgW10pLmZpbmQoKHtpZH0pID0+IGlkID09PSAnYmFja2dyb3VuZCcpO1xuXG4gIGNvbnN0IGJ1aWxkaW5nTGF5ZXIgPSAoc3R5bGUuc3R5bGUubGF5ZXJzIHx8IFtdKS5maW5kKCh7aWR9KSA9PiBpZC5tYXRjaCgvYnVpbGRpbmcvKSk7XG5cbiAgY29uc3QgYnVpbGRpbmdDb2xvciA9XG4gICAgZmluZExheWVyRmlsbENvbG9yKGJ1aWxkaW5nTGF5ZXIpIHx8IGZpbmRMYXllckZpbGxDb2xvcihiYWNrZ3JvdW5kTGF5ZXIpIHx8IERFRkFVTFRfQkxER19DT0xPUjtcblxuICAvLyBicmlnaHRlbiBvciBkYXJrZW4gYnVpbGRpbmcgYmFzZWQgb24gc3R5bGVcbiAgY29uc3Qgb3BlcmF0aW9uID0gc3R5bGUuaWQubWF0Y2goLyg/PShkYXJrfG5pZ2h0KSkvKSA/ICdicmlnaHRlcicgOiAnZGFya2VyJztcblxuICBjb25zdCBhbHBoYSA9IDAuMjtcbiAgY29uc3QgcmdiT2JqID0gcmdiKGJ1aWxkaW5nQ29sb3IpW29wZXJhdGlvbl0oW2FscGhhXSk7XG4gIHJldHVybiBbcmdiT2JqLnIsIHJnYk9iai5nLCByZ2JPYmouYl07XG59XG5cbmZ1bmN0aW9uIGdldExheWVyR3JvdXBzRnJvbVN0eWxlKHN0eWxlKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHN0eWxlLmxheWVycylcbiAgICA/IERFRkFVTFRfTEFZRVJfR1JPVVBTLmZpbHRlcihsZyA9PiBzdHlsZS5sYXllcnMuZmlsdGVyKGxnLmZpbHRlcikubGVuZ3RoKVxuICAgIDogW107XG59XG5cbi8vIFVwZGF0ZXJzXG4vKipcbiAqIFByb3BhZ2F0ZSBgbWFwU3R5bGVgIHJlZHVjZXIgd2l0aCBgbWFwYm94QXBpQWNjZXNzVG9rZW5gIGFuZCBgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHRgLlxuICogaWYgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQgaXMgdHJ1ZSBtYXBTdHlsZXMgaXMgZW1wdGllZDsgbG9hZE1hcFN0eWxlc1VwZGF0ZXIoKSB3aWxsXG4gKiBwb3B1bGF0ZSBtYXBTdHlsZXMuXG4gKlxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS11cGRhdGVycycpLmluaXRNYXBTdHlsZVVwZGF0ZXJ9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBpbml0TWFwU3R5bGVVcGRhdGVyID0gKHN0YXRlLCB7cGF5bG9hZCA9IHt9fSkgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIC8vIHNhdmUgbWFwYm94IGFjY2VzcyB0b2tlbiB0byBtYXAgc3R5bGUgc3RhdGVcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW46IHBheWxvYWQubWFwYm94QXBpQWNjZXNzVG9rZW4gfHwgc3RhdGUubWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gIG1hcGJveEFwaVVybDogcGF5bG9hZC5tYXBib3hBcGlVcmwgfHwgc3RhdGUubWFwYm94QXBpVXJsLFxuICBtYXBTdHlsZXM6ICFwYXlsb2FkLm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0ID8gc3RhdGUubWFwU3R5bGVzIDoge30sXG4gIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0OiBwYXlsb2FkLm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0IHx8IGZhbHNlXG59KTtcbi8vIH0pO1xuXG4vKipcbiAqIFVwZGF0ZSBgdmlzaWJsZUxheWVyR3JvdXBzYHRvIGNoYW5nZSBsYXllciBncm91cCB2aXNpYmlsaXR5XG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbWFwLXN0eWxlLXVwZGF0ZXJzJykubWFwQ29uZmlnQ2hhbmdlVXBkYXRlcn1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IG1hcENvbmZpZ0NoYW5nZVVwZGF0ZXIgPSAoc3RhdGUsIGFjdGlvbikgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIC4uLmFjdGlvbi5wYXlsb2FkLFxuICAuLi5nZXRNYXBTdHlsZXMoe1xuICAgIC4uLnN0YXRlLFxuICAgIC4uLmFjdGlvbi5wYXlsb2FkXG4gIH0pXG59KTtcblxuLyoqXG4gKiBDaGFuZ2UgdG8gYW5vdGhlciBtYXAgc3R5bGUuIFRoZSBzZWxlY3RlZCBzdHlsZSBzaG91bGQgYWxyZWFkeSBiZWVuIGxvYWRlZCBpbnRvIGBtYXBTdHlsZS5tYXBTdHlsZXNgXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbWFwLXN0eWxlLXVwZGF0ZXJzJykubWFwU3R5bGVDaGFuZ2VVcGRhdGVyfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbWFwU3R5bGVDaGFuZ2VVcGRhdGVyID0gKHN0YXRlLCB7cGF5bG9hZDogc3R5bGVUeXBlfSkgPT4ge1xuICBpZiAoIXN0YXRlLm1hcFN0eWxlc1tzdHlsZVR5cGVdKSB7XG4gICAgLy8gd2UgbWlnaHQgbm90IGhhdmUgcmVjZWl2ZWQgdGhlIHN0eWxlIHlldFxuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICBjb25zdCBkZWZhdWx0TEdWaXNpYmlsaXR5ID0gZ2V0RGVmYXVsdExheWVyR3JvdXBWaXNpYmlsaXR5KHN0YXRlLm1hcFN0eWxlc1tzdHlsZVR5cGVdKTtcblxuICBjb25zdCB2aXNpYmxlTGF5ZXJHcm91cHMgPSBtZXJnZUxheWVyR3JvdXBWaXNpYmlsaXR5KFxuICAgIGRlZmF1bHRMR1Zpc2liaWxpdHksXG4gICAgc3RhdGUudmlzaWJsZUxheWVyR3JvdXBzXG4gICk7XG5cbiAgY29uc3QgdGhyZWVEQnVpbGRpbmdDb2xvciA9IHN0YXRlLmN1c3RvbTNEQnVpbGRpbmdDb2xvclxuICAgID8gc3RhdGUudGhyZWVEQnVpbGRpbmdDb2xvclxuICAgIDogZ2V0M0RCdWlsZGluZ0NvbG9yKHN0YXRlLm1hcFN0eWxlc1tzdHlsZVR5cGVdKTtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIHN0eWxlVHlwZSxcbiAgICB2aXNpYmxlTGF5ZXJHcm91cHMsXG4gICAgdGhyZWVEQnVpbGRpbmdDb2xvcixcbiAgICAuLi5nZXRNYXBTdHlsZXMoe1xuICAgICAgLi4uc3RhdGUsXG4gICAgICB2aXNpYmxlTGF5ZXJHcm91cHMsXG4gICAgICBzdHlsZVR5cGVcbiAgICB9KVxuICB9O1xufTtcblxuLyoqXG4gKiBDYWxsYmFjayB3aGVuIGxvYWQgbWFwIHN0eWxlIHN1Y2Nlc3NcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtdXBkYXRlcnMnKS5sb2FkTWFwU3R5bGVzVXBkYXRlcn1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRNYXBTdHlsZXNVcGRhdGVyID0gKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAgY29uc3QgbmV3U3R5bGVzID0gYWN0aW9uLnBheWxvYWQgfHwge307XG4gIGNvbnN0IGFkZExheWVyR3JvdXBzID0gT2JqZWN0LmtleXMobmV3U3R5bGVzKS5yZWR1Y2UoXG4gICAgKGFjY3UsIGlkKSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIFtpZF06IHtcbiAgICAgICAgLi4ubmV3U3R5bGVzW2lkXSxcbiAgICAgICAgbGF5ZXJHcm91cHM6IG5ld1N0eWxlc1tpZF0ubGF5ZXJHcm91cHMgfHwgZ2V0TGF5ZXJHcm91cHNGcm9tU3R5bGUobmV3U3R5bGVzW2lkXS5zdHlsZSlcbiAgICAgIH1cbiAgICB9KSxcbiAgICB7fVxuICApO1xuXG4gIC8vIGFkZCBuZXcgc3R5bGVzIHRvIHN0YXRlXG4gIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1hcFN0eWxlczoge1xuICAgICAgLi4uc3RhdGUubWFwU3R5bGVzLFxuICAgICAgLi4uYWRkTGF5ZXJHcm91cHNcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIG5ld1N0eWxlc1tzdGF0ZS5zdHlsZVR5cGVdXG4gICAgPyBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIobmV3U3RhdGUsIHtwYXlsb2FkOiBzdGF0ZS5zdHlsZVR5cGV9KVxuICAgIDogbmV3U3RhdGU7XG59O1xuXG4vKipcbiAqIENhbGxiYWNrIHdoZW4gbG9hZCBtYXAgc3R5bGUgZXJyb3JcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtdXBkYXRlcnMnKS5sb2FkTWFwU3R5bGVFcnJVcGRhdGVyfVxuICogQHB1YmxpY1xuICovXG4vLyBkbyBub3RoaW5nIGZvciBub3csIGlmIGRpZG4ndCBsb2FkLCBza2lwIGl0XG5leHBvcnQgY29uc3QgbG9hZE1hcFN0eWxlRXJyVXBkYXRlciA9IHN0YXRlID0+IHN0YXRlO1xuXG4vKipcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtdXBkYXRlcnMnKS5yZXF1ZXN0TWFwU3R5bGVzVXBkYXRlcn1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlcXVlc3RNYXBTdHlsZXNVcGRhdGVyID0gKHN0YXRlLCB7cGF5bG9hZDogbWFwU3R5bGVzfSkgPT4ge1xuICBjb25zdCBsb2FkTWFwU3R5bGVUYXNrcyA9IGdldExvYWRNYXBTdHlsZVRhc2tzKFxuICAgIG1hcFN0eWxlcyxcbiAgICBzdGF0ZS5tYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICBzdGF0ZS5tYXBib3hBcGlVcmxcbiAgKTtcbiAgcmV0dXJuIHdpdGhUYXNrKHN0YXRlLCBsb2FkTWFwU3R5bGVUYXNrcyk7XG59O1xuXG4vKipcbiAqIExvYWQgbWFwIHN0eWxlIG9iamVjdCB3aGVuIHBhc3MgaW4gc2F2ZWQgbWFwIGNvbmZpZ1xuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgbWFwU3R5bGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgc2F2ZWQgbWFwIGNvbmZpZyBge21hcFN0eWxlLCB2aXNTdGF0ZSwgbWFwU3RhdGV9YFxuICogQHJldHVybnMgbmV4dFN0YXRlIG9yIGByZWFjdC1wYW1gIHRhc2tzIHRvIGxvYWQgbWFwIHN0eWxlIG9iamVjdFxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbWFwLXN0eWxlLXVwZGF0ZXJzJykucmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXJ9XG4gKi9cbmV4cG9ydCBjb25zdCByZWNlaXZlTWFwQ29uZmlnVXBkYXRlciA9IChzdGF0ZSwge3BheWxvYWQ6IHtjb25maWcgPSB7fX19KSA9PiB7XG4gIGNvbnN0IHttYXBTdHlsZX0gPSBjb25maWcgfHwge307XG5cbiAgaWYgKCFtYXBTdHlsZSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIC8vIGlmIHNhdmVkIGN1c3RvbSBtYXBTdHlsZXMgbG9hZCB0aGUgc3R5bGUgb2JqZWN0XG4gIGNvbnN0IGxvYWRNYXBTdHlsZVRhc2tzID0gbWFwU3R5bGUubWFwU3R5bGVzXG4gICAgPyBnZXRMb2FkTWFwU3R5bGVUYXNrcyhtYXBTdHlsZS5tYXBTdHlsZXMsIHN0YXRlLm1hcGJveEFwaUFjY2Vzc1Rva2VuLCBzdGF0ZS5tYXBib3hBcGlVcmwpXG4gICAgOiBudWxsO1xuXG4gIC8vIG1lcmdlIGRlZmF1bHQgbWFwU3R5bGVzXG4gIGNvbnN0IG1lcmdlZCA9IG1hcFN0eWxlLm1hcFN0eWxlc1xuICAgID8ge1xuICAgICAgICAuLi5tYXBTdHlsZSxcbiAgICAgICAgbWFwU3R5bGVzOiB7XG4gICAgICAgICAgLi4ubWFwU3R5bGUubWFwU3R5bGVzLFxuICAgICAgICAgIC4uLnN0YXRlLm1hcFN0eWxlc1xuICAgICAgICB9XG4gICAgICB9XG4gICAgOiBtYXBTdHlsZTtcblxuICAvLyBzZXQgY3VzdG9tM0RCdWlsZGluZ0NvbG9yOiB0cnVlIGlmIG1hcFN0eWxlIGNvbnRhaW5zIHRocmVlREJ1aWxkaW5nQ29sb3JcbiAgbWVyZ2VkLmN1c3RvbTNEQnVpbGRpbmdDb2xvciA9XG4gICAgQm9vbGVhbihtYXBTdHlsZS50aHJlZURCdWlsZGluZ0NvbG9yKSB8fCBtZXJnZWQuY3VzdG9tM0RCdWlsZGluZ0NvbG9yO1xuICBjb25zdCBuZXdTdGF0ZSA9IG1hcENvbmZpZ0NoYW5nZVVwZGF0ZXIoc3RhdGUsIHtwYXlsb2FkOiBtZXJnZWR9KTtcblxuICByZXR1cm4gbG9hZE1hcFN0eWxlVGFza3MgPyB3aXRoVGFzayhuZXdTdGF0ZSwgbG9hZE1hcFN0eWxlVGFza3MpIDogbmV3U3RhdGU7XG59O1xuXG5mdW5jdGlvbiBnZXRMb2FkTWFwU3R5bGVUYXNrcyhtYXBTdHlsZXMsIG1hcGJveEFwaUFjY2Vzc1Rva2VuLCBtYXBib3hBcGlVcmwpIHtcbiAgcmV0dXJuIFtcbiAgICBUYXNrLmFsbChcbiAgICAgIE9iamVjdC52YWx1ZXMobWFwU3R5bGVzKVxuICAgICAgICAubWFwKCh7aWQsIHVybCwgYWNjZXNzVG9rZW59KSA9PiAoe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIHVybDogaXNWYWxpZFN0eWxlVXJsKHVybClcbiAgICAgICAgICAgID8gZ2V0U3R5bGVEb3dubG9hZFVybCh1cmwsIGFjY2Vzc1Rva2VuIHx8IG1hcGJveEFwaUFjY2Vzc1Rva2VuLCBtYXBib3hBcGlVcmwpXG4gICAgICAgICAgICA6IHVybFxuICAgICAgICB9KSlcbiAgICAgICAgLm1hcChMT0FEX01BUF9TVFlMRV9UQVNLKVxuICAgICkuYmltYXAoXG4gICAgICAvLyBzdWNjZXNzXG4gICAgICByZXN1bHRzID0+XG4gICAgICAgIGxvYWRNYXBTdHlsZXMoXG4gICAgICAgICAgcmVzdWx0cy5yZWR1Y2UoXG4gICAgICAgICAgICAoYWNjdSwge2lkLCBzdHlsZX0pID0+ICh7XG4gICAgICAgICAgICAgIC4uLmFjY3UsXG4gICAgICAgICAgICAgIFtpZF06IHtcbiAgICAgICAgICAgICAgICAuLi5tYXBTdHlsZXNbaWRdLFxuICAgICAgICAgICAgICAgIHN0eWxlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAge31cbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAvLyBlcnJvclxuICAgICAgbG9hZE1hcFN0eWxlRXJyXG4gICAgKVxuICBdO1xufVxuLyoqXG4gKiBSZXNldCBtYXAgc3R5bGUgY29uZmlnIHRvIGluaXRpYWwgc3RhdGVcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYG1hcFN0eWxlYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtdXBkYXRlcnMnKS5yZXNldE1hcENvbmZpZ01hcFN0eWxlVXBkYXRlcn1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlc2V0TWFwQ29uZmlnTWFwU3R5bGVVcGRhdGVyID0gc3RhdGUgPT4ge1xuICBjb25zdCBlbXB0eUNvbmZpZyA9IHtcbiAgICAuLi5JTklUSUFMX01BUF9TVFlMRSxcbiAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogc3RhdGUubWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgbWFwYm94QXBpVXJsOiBzdGF0ZS5tYXBib3hBcGlVcmwsXG4gICAgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQ6IHN0YXRlLm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0LFxuICAgIC4uLnN0YXRlLmluaXRpYWxTdGF0ZSxcbiAgICBtYXBTdHlsZXM6IHN0YXRlLm1hcFN0eWxlcyxcbiAgICBpbml0aWFsU3RhdGU6IHN0YXRlLmluaXRpYWxTdGF0ZVxuICB9O1xuXG4gIHJldHVybiBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIoZW1wdHlDb25maWcsIHtwYXlsb2FkOiBlbXB0eUNvbmZpZy5zdHlsZVR5cGV9KTtcbn07XG5cbi8qKlxuICogQ2FsbGJhY2sgd2hlbiBhIGN1c3RvbSBtYXAgc3R5bGUgb2JqZWN0IGlzIHJlY2VpdmVkXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbWFwLXN0eWxlLXVwZGF0ZXJzJykubG9hZEN1c3RvbU1hcFN0eWxlVXBkYXRlcn1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRDdXN0b21NYXBTdHlsZVVwZGF0ZXIgPSAoc3RhdGUsIHtwYXlsb2FkOiB7aWNvbiwgc3R5bGUsIGVycm9yfX0pID0+ICh7XG4gIC4uLnN0YXRlLFxuICBpbnB1dFN0eWxlOiB7XG4gICAgLi4uc3RhdGUuaW5wdXRTdHlsZSxcbiAgICAvLyBzdHlsZSBqc29uIGFuZCBpY29uIHdpbGwgbG9hZCBhc3luY2hyb25vdXNseVxuICAgIC4uLihzdHlsZVxuICAgICAgPyB7XG4gICAgICAgICAgaWQ6IHN0eWxlLmlkIHx8IGdlbmVyYXRlSGFzaElkKCksXG4gICAgICAgICAgLy8gbWFrZSBhIGNvcHkgb2YgdGhlIHN0eWxlIG9iamVjdFxuICAgICAgICAgIHN0eWxlOiBjbG9uZURlZXAoc3R5bGUpLFxuICAgICAgICAgIGxhYmVsOiBzdHlsZS5uYW1lLFxuICAgICAgICAgIC8vIGdhdGhlcmluZyBsYXllciBncm91cCBpbmZvIGZyb20gc3R5bGUganNvblxuICAgICAgICAgIGxheWVyR3JvdXBzOiBnZXRMYXllckdyb3Vwc0Zyb21TdHlsZShzdHlsZSlcbiAgICAgICAgfVxuICAgICAgOiB7fSksXG4gICAgLi4uKGljb24gPyB7aWNvbn0gOiB7fSksXG4gICAgLi4uKGVycm9yICE9PSB1bmRlZmluZWQgPyB7ZXJyb3J9IDoge30pXG4gIH1cbn0pO1xuXG4vKipcbiAqIElucHV0IGEgY3VzdG9tIG1hcCBzdHlsZSBvYmplY3RcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtdXBkYXRlcnMnKS5pbnB1dE1hcFN0eWxlVXBkYXRlcn1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGlucHV0TWFwU3R5bGVVcGRhdGVyID0gKHN0YXRlLCB7cGF5bG9hZDoge2lucHV0U3R5bGUsIG1hcFN0YXRlfX0pID0+IHtcbiAgY29uc3QgdXBkYXRlZCA9IHtcbiAgICAuLi5zdGF0ZS5pbnB1dFN0eWxlLFxuICAgIC4uLmlucHV0U3R5bGVcbiAgfTtcblxuICBjb25zdCBpc1ZhbGlkID0gaXNWYWxpZFN0eWxlVXJsKHVwZGF0ZWQudXJsKTtcbiAgY29uc3QgaWNvbiA9IGlzVmFsaWRcbiAgICA/IGdldFN0eWxlSW1hZ2VJY29uKHtcbiAgICAgICAgbWFwU3RhdGUsXG4gICAgICAgIHN0eWxlVXJsOiB1cGRhdGVkLnVybCxcbiAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW46IHVwZGF0ZWQuYWNjZXNzVG9rZW4gfHwgc3RhdGUubWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgIG1hcGJveEFwaVVybDogc3RhdGUubWFwYm94QXBpVXJsIHx8IERFRkFVTFRfTUFQQk9YX0FQSV9VUkxcbiAgICAgIH0pXG4gICAgOiBzdGF0ZS5pbnB1dFN0eWxlLmljb247XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBpbnB1dFN0eWxlOiB7XG4gICAgICAuLi51cGRhdGVkLFxuICAgICAgaXNWYWxpZCxcbiAgICAgIGljb25cbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIEFkZCBtYXAgc3R5bGUgZnJvbSB1c2VyIGlucHV0IHRvIHJlZHVjZXIgYW5kIHNldCBpdCB0byBjdXJyZW50IHN0eWxlXG4gKiBUaGlzIGFjdGlvbiBpcyBjYWxsZWQgd2hlbiB1c2VyIGNsaWNrIGNvbmZpcm0gYWZ0ZXIgcHV0dGluZyBpbiBhIHZhbGlkIHN0eWxlIHVybCBpbiB0aGUgY3VzdG9tIG1hcCBzdHlsZSBkaWFsb2cuXG4gKiBJdCBzaG91bGQgbm90IGJlIGNhbGxlZCBmcm9tIG91dHNpZGUga2VwbGVyLmdsIHdpdGhvdXQgYSB2YWxpZCBgaW5wdXRTdHlsZWAgaW4gdGhlIGBtYXBTdHlsZWAgcmVkdWNlci5cbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtdXBkYXRlcnMnKS5hZGRDdXN0b21NYXBTdHlsZVVwZGF0ZXJ9XG4gKi9cbmV4cG9ydCBjb25zdCBhZGRDdXN0b21NYXBTdHlsZVVwZGF0ZXIgPSBzdGF0ZSA9PiB7XG4gIGNvbnN0IHN0eWxlSWQgPSBzdGF0ZS5pbnB1dFN0eWxlLmlkO1xuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtYXBTdHlsZXM6IHtcbiAgICAgIC4uLnN0YXRlLm1hcFN0eWxlcyxcbiAgICAgIFtzdHlsZUlkXTogc3RhdGUuaW5wdXRTdHlsZVxuICAgIH0sXG4gICAgLy8gc2V0IHRvIGRlZmF1bHRcbiAgICBpbnB1dFN0eWxlOiBnZXRJbml0aWFsSW5wdXRTdHlsZSgpXG4gIH07XG4gIC8vIHNldCBuZXcgc3R5bGVcbiAgcmV0dXJuIG1hcFN0eWxlQ2hhbmdlVXBkYXRlcihuZXdTdGF0ZSwge3BheWxvYWQ6IHN0eWxlSWR9KTtcbn07XG5cbi8qKlxuICogVXBkYXRlcyAzZCBidWlsZGluZyBjb2xvclxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS11cGRhdGVycycpLnNldDNkQnVpbGRpbmdDb2xvclVwZGF0ZXJ9XG4gKi9cbmV4cG9ydCBjb25zdCBzZXQzZEJ1aWxkaW5nQ29sb3JVcGRhdGVyID0gKHN0YXRlLCB7cGF5bG9hZDogY29sb3J9KSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgdGhyZWVEQnVpbGRpbmdDb2xvcjogY29sb3IsXG4gIGN1c3RvbTNEQnVpbGRpbmdDb2xvcjogdHJ1ZVxufSk7XG5cbi8qKlxuICogUmV0dXJuIHRoZSBpbml0aWFsIGlucHV0IHN0eWxlXG4gKiBAcmV0dXJuIE9iamVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5pdGlhbElucHV0U3R5bGUoKSB7XG4gIHJldHVybiB7XG4gICAgYWNjZXNzVG9rZW46IG51bGwsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGlzVmFsaWQ6IGZhbHNlLFxuICAgIGxhYmVsOiBudWxsLFxuICAgIHN0eWxlOiBudWxsLFxuICAgIHVybDogbnVsbCxcbiAgICBpY29uOiBudWxsLFxuICAgIGN1c3RvbTogdHJ1ZVxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFxQkEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBR0EsSUFBQUcsb0JBQUEsR0FBQUgsT0FBQTtBQVNBLElBQUFJLGdCQUFBLEdB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
|
|
@@ -26,9 +26,9 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
|
26
26
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
27
27
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
28
28
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
29
|
-
var
|
|
30
|
-
var
|
|
31
|
-
var
|
|
29
|
+
var _uniq = _interopRequireDefault(require("lodash/uniq"));
|
|
30
|
+
var _pick = _interopRequireDefault(require("lodash/pick"));
|
|
31
|
+
var _flattenDeep = _interopRequireDefault(require("lodash/flattenDeep"));
|
|
32
32
|
var _utils = require("../utils/utils");
|
|
33
33
|
var _filterUtils = require("../utils/filter-utils");
|
|
34
34
|
var _splitMapUtils = require("../utils/split-map-utils");
|
|
@@ -79,7 +79,7 @@ function mergeFilters(state, filtersToMerge) {
|
|
|
79
79
|
updatedFilters = (0, _gpuFilterUtils.resetFilterGpuMode)(updatedFilters);
|
|
80
80
|
updatedFilters = (0, _gpuFilterUtils.assignGpuChannels)(updatedFilters);
|
|
81
81
|
// filter data
|
|
82
|
-
var datasetsToFilter = (0,
|
|
82
|
+
var datasetsToFilter = (0, _uniq["default"])((0, _flattenDeep["default"])(validated.map(function (f) {
|
|
83
83
|
return f.dataId;
|
|
84
84
|
})));
|
|
85
85
|
var filtered = (0, _filterUtils.applyFiltersToDatasets)(datasetsToFilter, updatedDatasets, updatedFilters, state.layers);
|
|
@@ -227,7 +227,7 @@ function mergeInteractions(state, interactionToBeMerged) {
|
|
|
227
227
|
merged[key] = _objectSpread(_objectSpread({}, state.interactionConfig[key]), {}, {
|
|
228
228
|
enabled: enabled
|
|
229
229
|
}, currentConfig ? {
|
|
230
|
-
config: (0,
|
|
230
|
+
config: (0, _pick["default"])(_objectSpread(_objectSpread({}, currentConfig), configToMerge), Object.keys(currentConfig))
|
|
231
231
|
} : {});
|
|
232
232
|
});
|
|
233
233
|
}
|
|
@@ -562,4 +562,4 @@ var VIS_STATE_MERGERS = exports.VIS_STATE_MERGERS = [{
|
|
|
562
562
|
merge: mergeAnimationConfig,
|
|
563
563
|
prop: 'animationConfig'
|
|
564
564
|
}];
|
|
565
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbG9kYXNoMiIsIl9sb2Rhc2gzIiwiX3V0aWxzIiwiX2ZpbHRlclV0aWxzIiwiX3NwbGl0TWFwVXRpbHMiLCJfZ3B1RmlsdGVyVXRpbHMiLCJfZGVmYXVsdFNldHRpbmdzIiwiX3NjaGVtYXMiLCJfZXhjbHVkZWQiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIm8iLCJhbGxvd0FycmF5TGlrZSIsIml0IiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJBcnJheSIsImlzQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJsZW5ndGgiLCJpIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZSIsIl9lIiwiZiIsIlR5cGVFcnJvciIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJlcnIiLCJjYWxsIiwic3RlcCIsIm5leHQiLCJfZTIiLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsIk9iamVjdCIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsImFyciIsImxlbiIsImFycjIiLCJvd25LZXlzIiwiciIsInQiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJtZXJnZUZpbHRlcnMiLCJzdGF0ZSIsImZpbHRlcnNUb01lcmdlIiwiX3ZhbGlkYXRlRmlsdGVyc1VwZGF0IiwidmFsaWRhdGVGaWx0ZXJzVXBkYXRlRGF0YXNldHMiLCJ2YWxpZGF0ZWQiLCJmYWlsZWQiLCJ1cGRhdGVkRGF0YXNldHMiLCJ1cGRhdGVkRmlsdGVycyIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJmaWx0ZXJzIiwicmVzZXRGaWx0ZXJHcHVNb2RlIiwiYXNzaWduR3B1Q2hhbm5lbHMiLCJkYXRhc2V0c1RvRmlsdGVyIiwidW5pcSIsImZsYXR0ZW5EZWVwIiwibWFwIiwiZGF0YUlkIiwiZmlsdGVyZWQiLCJhcHBseUZpbHRlcnNUb0RhdGFzZXRzIiwibGF5ZXJzIiwiZGF0YXNldHMiLCJmaWx0ZXJUb0JlTWVyZ2VkIiwiY3JlYXRlTGF5ZXJGcm9tQ29uZmlnIiwibGF5ZXJDb25maWciLCJfdmFsaWRhdGVMYXllcnNCeURhdGEiLCJ2YWxpZGF0ZUxheWVyc0J5RGF0YXNldHMiLCJsYXllckNsYXNzZXMiLCJuZXdMYXllciIsInVwZGF0ZUxheWVyRG9tYWluIiwic2VyaWFsaXplTGF5ZXIiLCJzYXZlZFZpc1N0YXRlIiwidmlzU3RhdGVTY2hlbWEiLCJDVVJSRU5UX1ZFUlNJT04iLCJzYXZlIiwibGF5ZXJPcmRlciIsInZpc1N0YXRlIiwibG9hZGVkTGF5ZXIiLCJsb2FkIiwibWVyZ2VMYXllcnMiLCJsYXllcnNUb01lcmdlIiwiZnJvbUNvbmZpZyIsInByZXNlcnZlTGF5ZXJPcmRlciIsImwiLCJpZCIsIl92YWxpZGF0ZUxheWVyc0J5RGF0YTIiLCJtZXJnZWRMYXllciIsInVubWVyZ2VkIiwiX2luc2VydExheWVyQXRSaWdodE9yIiwiaW5zZXJ0TGF5ZXJBdFJpZ2h0T3JkZXIiLCJuZXdMYXllck9yZGVyIiwibmV3TGF5ZXJzIiwibGF5ZXJUb0JlTWVyZ2VkIiwiY3VycmVudExheWVycyIsImxheWVyc1RvSW5zZXJ0IiwiY3VycmVudE9yZGVyIiwicHJlc2VydmVkT3JkZXIiLCJ1bmRlZmluZWQiLCJsYXllck9yZGVyUXVldWUiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImV4cGVjdGVkSWR4IiwiaW5kZXhPZiIsImluc2VydEF0IiwicHJlY2VlZElkeCIsInByZWNlZWRMYXllciIsImFycmF5SW5zZXJ0IiwiZmluZEluZGV4IiwibWVyZ2VJbnRlcmFjdGlvbnMiLCJpbnRlcmFjdGlvblRvQmVNZXJnZWQiLCJtZXJnZWQiLCJrZXkiLCJpbnRlcmFjdGlvbkNvbmZpZyIsImN1cnJlbnRDb25maWciLCJjb25maWciLCJfcmVmIiwiZW5hYmxlZCIsImNvbmZpZ1NhdmVkIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsImNvbmZpZ1RvTWVyZ2UiLCJfbWVyZ2VJbnRlcmFjdGlvblRvb2wiLCJtZXJnZUludGVyYWN0aW9uVG9vbHRpcENvbmZpZyIsIm1lcmdlZFRvb2x0aXAiLCJ1bm1lcmdlZFRvb2x0aXAiLCJmaWVsZHNUb1Nob3ciLCJ0b29sdGlwIiwicGljayIsIm1lcmdlU3BsaXRNYXBzIiwic3BsaXRNYXBzIiwic20iLCJlbnRyaWVzIiwiX3JlZjIiLCJfcmVmMyIsIl9zbGljZWRUb0FycmF5MiIsInB1c2hUbyIsImZpbmQiLCJnZXRJbml0aWFsTWFwTGF5ZXJzRm9yU3BsaXRNYXAiLCJzcGxpdE1hcHNUb0JlTWVyZ2VkIiwidG9vbHRpcENvbmZpZyIsIl9sb29wIiwiYWxsRmllbGRzIiwiZmllbGRzIiwiZCIsImZvdW5kRmllbGRzVG9TaG93IiwibWV0YWRhdGEiLCJpc0R5bmFtaWNTcGF0aWFsSW5kZXgiLCJmaWVsZCIsImluY2x1ZGVzIiwibWVyZ2VMYXllckJsZW5kaW5nIiwibGF5ZXJCbGVuZGluZyIsIkxBWUVSX0JMRU5ESU5HUyIsIm1lcmdlQW5pbWF0aW9uQ29uZmlnIiwiYW5pbWF0aW9uIiwiY3VycmVudFRpbWUiLCJhbmltYXRpb25Db25maWciLCJkb21haW4iLCJ2YWxpZGF0ZVNhdmVkTGF5ZXJDb2x1bW5zIiwic2F2ZWRDb2xzIiwiZW1wdHlDb2xzIiwiY29sdW1ucyIsIl9sb29wMiIsIl9PYmplY3Qka2V5cyIsIl9pIiwic2F2ZWQiLCJmaWVsZElkeCIsIl9yZWY0IiwiYWxsQ29sRm91bmQiLCJldmVyeSIsInZhbGlkYXRlQ29sdW1uIiwiY29sdW1uIiwib3B0aW9uYWwiLCJ2YWxpZGF0b3IiLCJ2YWxpZGF0ZVNhdmVkVGV4dExhYmVsIiwiX3JlZjUiLCJzYXZlZFRleHRMYWJlbCIsIl9yZWY2IiwibGF5ZXJUZXh0TGFiZWwiLCJzYXZlZFRleHRMYWJlbHMiLCJ0ZXh0TGFiZWwiLCJmZCIsInJlZHVjZSIsImFjY3UiLCJ2YWxpZGF0ZVNhdmVkVmlzdWFsQ2hhbm5lbHMiLCJzYXZlZExheWVyIiwidmFsdWVzIiwidmlzdWFsQ2hhbm5lbHMiLCJfcmVmNyIsInNjYWxlIiwiZm91bmRGaWVsZCIsImNvbG9yRmllbGRQcm9wcyIsIl9zYXZlZExheWVyJGNvbmZpZyRmaSIsImNvbG9yQ29sdW1uIiwiY29sb3JDb2x1bW5GaWVsZCIsImNvbG9yQ29sdW1uSWR4IiwiZm91bmRDaGFubmVsIiwidXBkYXRlTGF5ZXJDb25maWciLCJ2YWxpZGF0ZVZpc3VhbENoYW5uZWwiLCJsYXllciIsInZhbGlkYXRlTGF5ZXIiLCJ2YWxpZGF0ZUxheWVyV2l0aERhdGEiLCJfcmVmMTAiLCJvcHRpb25zIiwidHlwZSIsImhhc093blByb3BlcnR5IiwibGFiZWwiLCJjb2xvciIsImlzVmlzaWJsZSIsImhpZGRlbiIsImhpZ2hsaWdodENvbG9yIiwidmlzaWJpbGl0eUJ5Wm9vbSIsImNvbHVtbkNvbmZpZyIsImdldExheWVyQ29sdW1ucyIsImFsbG93RW1wdHlDb2x1bW4iLCJ2aXNDb25maWciLCJjb3B5TGF5ZXJDb25maWciLCJzaGFsbG93Q29weSIsImlzVmFsaWRNZXJnZXIiLCJtZXJnZXIiLCJpc09iamVjdCIsIm1lcmdlIiwicHJvcCIsIlZJU19TVEFURV9NRVJHRVJTIiwiZXhwb3J0cyIsInRvTWVyZ2VQcm9wIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlZHVjZXJzL3Zpcy1zdGF0ZS1tZXJnZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoLnVuaXEnO1xuaW1wb3J0IHBpY2sgZnJvbSAnbG9kYXNoLnBpY2snO1xuaW1wb3J0IGZsYXR0ZW5EZWVwIGZyb20gJ2xvZGFzaC5mbGF0dGVuZGVlcCc7XG5pbXBvcnQge2lzT2JqZWN0LCBhcnJheUluc2VydH0gZnJvbSAndXRpbHMvdXRpbHMnO1xuaW1wb3J0IHthcHBseUZpbHRlcnNUb0RhdGFzZXRzLCB2YWxpZGF0ZUZpbHRlcnNVcGRhdGVEYXRhc2V0c30gZnJvbSAndXRpbHMvZmlsdGVyLXV0aWxzJztcblxuaW1wb3J0IHtnZXRJbml0aWFsTWFwTGF5ZXJzRm9yU3BsaXRNYXB9IGZyb20gJ3V0aWxzL3NwbGl0LW1hcC11dGlscyc7XG5pbXBvcnQge3Jlc2V0RmlsdGVyR3B1TW9kZSwgYXNzaWduR3B1Q2hhbm5lbHN9IGZyb20gJ3V0aWxzL2dwdS1maWx0ZXItdXRpbHMnO1xuaW1wb3J0IHtMQVlFUl9CTEVORElOR1N9IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcbmltcG9ydCB7Q1VSUkVOVF9WRVJTSU9OLCB2aXNTdGF0ZVNjaGVtYX0gZnJvbSAnc2NoZW1hcyc7XG5cbi8qKlxuICogTWVyZ2UgbG9hZGVkIGZpbHRlcnMgd2l0aCBjdXJyZW50IHN0YXRlLCBpZiBubyBmaWVsZHMgb3IgZGF0YSBhcmUgbG9hZGVkXG4gKiBzYXZlIGl0IGZvciBsYXRlclxuICpcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL3Zpcy1zdGF0ZS1tZXJnZXInKS5tZXJnZUZpbHRlcnN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUZpbHRlcnMoc3RhdGUsIGZpbHRlcnNUb01lcmdlKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShmaWx0ZXJzVG9NZXJnZSkgfHwgIWZpbHRlcnNUb01lcmdlLmxlbmd0aCkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGNvbnN0IHt2YWxpZGF0ZWQsIGZhaWxlZCwgdXBkYXRlZERhdGFzZXRzfSA9IHZhbGlkYXRlRmlsdGVyc1VwZGF0ZURhdGFzZXRzKHN0YXRlLCBmaWx0ZXJzVG9NZXJnZSk7XG5cbiAgLy8gbWVyZ2UgZmlsdGVyIHdpdGggZXhpc3RpbmdcbiAgbGV0IHVwZGF0ZWRGaWx0ZXJzID0gWy4uLihzdGF0ZS5maWx0ZXJzIHx8IFtdKSwgLi4udmFsaWRhdGVkXTtcbiAgdXBkYXRlZEZpbHRlcnMgPSByZXNldEZpbHRlckdwdU1vZGUodXBkYXRlZEZpbHRlcnMpO1xuICB1cGRhdGVkRmlsdGVycyA9IGFzc2lnbkdwdUNoYW5uZWxzKHVwZGF0ZWRGaWx0ZXJzKTtcbiAgLy8gZmlsdGVyIGRhdGFcbiAgY29uc3QgZGF0YXNldHNUb0ZpbHRlciA9IHVuaXEoZmxhdHRlbkRlZXAodmFsaWRhdGVkLm1hcChmID0+IGYuZGF0YUlkKSkpO1xuXG4gIGNvbnN0IGZpbHRlcmVkID0gYXBwbHlGaWx0ZXJzVG9EYXRhc2V0cyhcbiAgICBkYXRhc2V0c1RvRmlsdGVyLFxuICAgIHVwZGF0ZWREYXRhc2V0cyxcbiAgICB1cGRhdGVkRmlsdGVycyxcbiAgICBzdGF0ZS5sYXllcnNcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGZpbHRlcnM6IHVwZGF0ZWRGaWx0ZXJzLFxuICAgIGRhdGFzZXRzOiBmaWx0ZXJlZCxcbiAgICBmaWx0ZXJUb0JlTWVyZ2VkOiBbLi4uc3RhdGUuZmlsdGVyVG9CZU1lcmdlZCwgLi4uZmFpbGVkXVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGF5ZXJGcm9tQ29uZmlnKHN0YXRlLCBsYXllckNvbmZpZykge1xuICAvLyBmaXJzdCB2YWxpZGF0ZSBjb25maWcgYWdhaW5zdCBkYXRhc2V0XG4gIGNvbnN0IHt2YWxpZGF0ZWQsIGZhaWxlZH0gPSB2YWxpZGF0ZUxheWVyc0J5RGF0YXNldHMoc3RhdGUuZGF0YXNldHMsIHN0YXRlLmxheWVyQ2xhc3NlcywgW1xuICAgIGxheWVyQ29uZmlnXG4gIF0pO1xuXG4gIGlmIChmYWlsZWQubGVuZ3RoIHx8ICF2YWxpZGF0ZWQubGVuZ3RoKSB7XG4gICAgLy8gZmFpbGVkXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBuZXdMYXllciA9IHZhbGlkYXRlZFswXTtcbiAgbmV3TGF5ZXIudXBkYXRlTGF5ZXJEb21haW4oc3RhdGUuZGF0YXNldHMpO1xuICByZXR1cm4gbmV3TGF5ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVMYXllcihuZXdMYXllcikge1xuICBjb25zdCBzYXZlZFZpc1N0YXRlID0gdmlzU3RhdGVTY2hlbWFbQ1VSUkVOVF9WRVJTSU9OXS5zYXZlKHtcbiAgICBsYXllcnM6IFtuZXdMYXllcl0sXG4gICAgbGF5ZXJPcmRlcjogWzBdXG4gIH0pLnZpc1N0YXRlO1xuICBjb25zdCBsb2FkZWRMYXllciA9IHZpc1N0YXRlU2NoZW1hW0NVUlJFTlRfVkVSU0lPTl0ubG9hZChzYXZlZFZpc1N0YXRlKS52aXNTdGF0ZS5sYXllcnNbMF07XG4gIHJldHVybiBsb2FkZWRMYXllcjtcbn1cblxuLyoqXG4gKiBNZXJnZSBsYXllcnMgZnJvbSBkZS1zZXJpYWxpemVkIHN0YXRlLCBpZiBubyBmaWVsZHMgb3IgZGF0YSBhcmUgbG9hZGVkXG4gKiBzYXZlIGl0IGZvciBsYXRlclxuICpcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL3Zpcy1zdGF0ZS1tZXJnZXInKS5tZXJnZUxheWVyc31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlTGF5ZXJzKHN0YXRlLCBsYXllcnNUb01lcmdlLCBmcm9tQ29uZmlnKSB7XG4gIGNvbnN0IHByZXNlcnZlTGF5ZXJPcmRlciA9IGZyb21Db25maWcgPyBsYXllcnNUb01lcmdlLm1hcChsID0+IGwuaWQpIDogc3RhdGUucHJlc2VydmVMYXllck9yZGVyO1xuXG4gIGlmICghQXJyYXkuaXNBcnJheShsYXllcnNUb01lcmdlKSB8fCAhbGF5ZXJzVG9NZXJnZS5sZW5ndGgpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBjb25zdCB7dmFsaWRhdGVkOiBtZXJnZWRMYXllciwgZmFpbGVkOiB1bm1lcmdlZH0gPSB2YWxpZGF0ZUxheWVyc0J5RGF0YXNldHMoXG4gICAgc3RhdGUuZGF0YXNldHMsXG4gICAgc3RhdGUubGF5ZXJDbGFzc2VzLFxuICAgIGxheWVyc1RvTWVyZ2VcbiAgKTtcblxuICAvLyBwdXQgbmV3IGxheWVycyBpbiBmcm9udCBvZiBjdXJyZW50IGxheWVyc1xuICBjb25zdCB7bmV3TGF5ZXJPcmRlciwgbmV3TGF5ZXJzfSA9IGluc2VydExheWVyQXRSaWdodE9yZGVyKFxuICAgIHN0YXRlLmxheWVycyxcbiAgICBtZXJnZWRMYXllcixcbiAgICBzdGF0ZS5sYXllck9yZGVyLFxuICAgIHByZXNlcnZlTGF5ZXJPcmRlclxuICApO1xuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgbGF5ZXJzOiBuZXdMYXllcnMsXG4gICAgbGF5ZXJPcmRlcjogbmV3TGF5ZXJPcmRlcixcbiAgICBwcmVzZXJ2ZUxheWVyT3JkZXIsXG4gICAgbGF5ZXJUb0JlTWVyZ2VkOiBbLi4uc3RhdGUubGF5ZXJUb0JlTWVyZ2VkLCAuLi51bm1lcmdlZF1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydExheWVyQXRSaWdodE9yZGVyKFxuICBjdXJyZW50TGF5ZXJzLFxuICBsYXllcnNUb0luc2VydCxcbiAgY3VycmVudE9yZGVyLFxuICBwcmVzZXJ2ZWRPcmRlciA9IFtdXG4pIHtcbiAgLy8gcGVyc2VydmVkT3JkZXIgWydhJywgJ2InLCAnYyddO1xuICAvLyBsYXllck9yZGVyIFsxLCAwLCAzXVxuICAvLyBsYXllck9yZGVyTWFwIFsnYScsICdjJ11cbiAgbGV0IGxheWVyT3JkZXJRdWV1ZSA9IGN1cnJlbnRPcmRlci5tYXAoaSA9PiBjdXJyZW50TGF5ZXJzW2ldLmlkKTtcbiAgbGV0IG5ld0xheWVycyA9IGN1cnJlbnRMYXllcnM7XG5cbiAgZm9yIChjb25zdCBuZXdMYXllciBvZiBsYXllcnNUb0luc2VydCkge1xuICAgIC8vIGZpbmQgd2hlcmUgdG8gaW5zZXJ0IGl0XG4gICAgY29uc3QgZXhwZWN0ZWRJZHggPSBwcmVzZXJ2ZWRPcmRlci5pbmRleE9mKG5ld0xheWVyLmlkKTtcbiAgICAvLyBpZiBjYW50IGZpbmQgcGxhY2UgdG8gaW5zZXJ0LCBpbnNlcnQgYXQgdGhlIGZvbnRcbiAgICBsZXQgaW5zZXJ0QXQgPSAwO1xuXG4gICAgaWYgKGV4cGVjdGVkSWR4ID4gMCkge1xuICAgICAgLy8gbG9vayBmb3IgbGF5ZXIgdG8gaW5zZXJ0IGFmdGVyXG4gICAgICBsZXQgaSA9IGV4cGVjdGVkSWR4ICsgMTtcbiAgICAgIGxldCBwcmVjZWVkSWR4ID0gLTE7XG4gICAgICB3aGlsZSAoaS0tID4gMCAmJiBwcmVjZWVkSWR4ID09PSAtMSkge1xuICAgICAgICBjb25zdCBwcmVjZWVkTGF5ZXIgPSBwcmVzZXJ2ZWRPcmRlcltpXTtcbiAgICAgICAgcHJlY2VlZElkeCA9IGxheWVyT3JkZXJRdWV1ZS5pbmRleE9mKHByZWNlZWRMYXllcik7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcmVjZWVkSWR4ID4gLTEpIHtcbiAgICAgICAgaW5zZXJ0QXQgPSBwcmVjZWVkSWR4ICsgMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsYXllck9yZGVyUXVldWUgPSBhcnJheUluc2VydChsYXllck9yZGVyUXVldWUsIGluc2VydEF0LCBuZXdMYXllci5pZCk7XG4gICAgbmV3TGF5ZXJzID0gbmV3TGF5ZXJzLmNvbmNhdChuZXdMYXllcik7XG4gIH1cblxuICAvLyByZWNvbnN0cnVjdCBsYXllck9yZGVyIGFmdGVyIGluc2VydFxuICBjb25zdCBuZXdMYXllck9yZGVyID0gbGF5ZXJPcmRlclF1ZXVlLm1hcChpZCA9PiBuZXdMYXllcnMuZmluZEluZGV4KGwgPT4gbC5pZCA9PT0gaWQpKTtcblxuICByZXR1cm4ge1xuICAgIG5ld0xheWVyT3JkZXIsXG4gICAgbmV3TGF5ZXJzXG4gIH07XG59XG5cbi8qKlxuICogTWVyZ2UgaW50ZXJhY3Rpb25zIHdpdGggc2F2ZWQgY29uZmlnXG4gKlxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vdmlzLXN0YXRlLW1lcmdlcicpLm1lcmdlSW50ZXJhY3Rpb25zfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VJbnRlcmFjdGlvbnMoc3RhdGUsIGludGVyYWN0aW9uVG9CZU1lcmdlZCkge1xuICBjb25zdCBtZXJnZWQgPSB7fTtcbiAgY29uc3QgdW5tZXJnZWQgPSB7fTtcblxuICBpZiAoaW50ZXJhY3Rpb25Ub0JlTWVyZ2VkKSB7XG4gICAgT2JqZWN0LmtleXMoaW50ZXJhY3Rpb25Ub0JlTWVyZ2VkKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAoIXN0YXRlLmludGVyYWN0aW9uQ29uZmlnW2tleV0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjdXJyZW50Q29uZmlnID0gc3RhdGUuaW50ZXJhY3Rpb25Db25maWdba2V5XS5jb25maWc7XG5cbiAgICAgIGNvbnN0IHtlbmFibGVkLCAuLi5jb25maWdTYXZlZH0gPSBpbnRlcmFjdGlvblRvQmVNZXJnZWRba2V5XSB8fCB7fTtcbiAgICAgIGxldCBjb25maWdUb01lcmdlID0gY29uZmlnU2F2ZWQ7XG5cbiAgICAgIGlmIChrZXkgPT09ICd0b29sdGlwJykge1xuICAgICAgICBjb25zdCB7bWVyZ2VkVG9vbHRpcCwgdW5tZXJnZWRUb29sdGlwfSA9IG1lcmdlSW50ZXJhY3Rpb25Ub29sdGlwQ29uZmlnKHN0YXRlLCBjb25maWdTYXZlZCk7XG5cbiAgICAgICAgLy8gbWVyZ2UgbmV3IGRhdGFzZXQgdG9vbHRpcHMgd2l0aCBvcmlnaW5hbCBkYXRhc2V0IHRvb2x0aXBzXG4gICAgICAgIGNvbmZpZ1RvTWVyZ2UgPSB7XG4gICAgICAgICAgZmllbGRzVG9TaG93OiB7XG4gICAgICAgICAgICAuLi5jdXJyZW50Q29uZmlnLmZpZWxkc1RvU2hvdyxcbiAgICAgICAgICAgIC4uLm1lcmdlZFRvb2x0aXBcbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHVubWVyZ2VkVG9vbHRpcCkubGVuZ3RoKSB7XG4gICAgICAgICAgdW5tZXJnZWQudG9vbHRpcCA9IHtmaWVsZHNUb1Nob3c6IHVubWVyZ2VkVG9vbHRpcCwgZW5hYmxlZH07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbWVyZ2VkW2tleV0gPSB7XG4gICAgICAgIC4uLnN0YXRlLmludGVyYWN0aW9uQ29uZmlnW2tleV0sXG4gICAgICAgIGVuYWJsZWQsXG4gICAgICAgIC4uLihjdXJyZW50Q29uZmlnXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIGNvbmZpZzogcGljayhcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAuLi5jdXJyZW50Q29uZmlnLFxuICAgICAgICAgICAgICAgICAgLi4uY29uZmlnVG9NZXJnZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoY3VycmVudENvbmZpZylcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge30pXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBpbnRlcmFjdGlvbkNvbmZpZzoge1xuICAgICAgLi4uc3RhdGUuaW50ZXJhY3Rpb25Db25maWcsXG4gICAgICAuLi5tZXJnZWRcbiAgICB9LFxuICAgIGludGVyYWN0aW9uVG9CZU1lcmdlZDogdW5tZXJnZWRcbiAgfTtcbn1cblxuLyoqXG4gKiBNZXJnZSBzcGxpdE1hcHMgY29uZmlnIHdpdGggY3VycmVudCB2aXNTdGV0ZS5cbiAqIDEuIGlmIGN1cnJlbnQgbWFwIGlzIHNwbGl0LCBidXQgc3BsaXRNYXAgRE9FU05PVCBjb250YWluIG1hcHNcbiAqICAgIDogZG9uJ3QgbWVyZ2UgYW55dGhpbmdcbiAqIDIuIGlmIGN1cnJlbnQgbWFwIGlzIE5PVCBzcGxpdCwgYnV0IHNwbGl0TWFwcyBjb250YWluIG1hcHNcbiAqICAgIDogYWRkIHRvIHNwbGl0TWFwcywgYW5kIGFkZCBjdXJyZW50IGxheWVycyB0byBzcGxpdE1hcHNcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL3Zpcy1zdGF0ZS1tZXJnZXInKS5tZXJnZUludGVyYWN0aW9uc31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlU3BsaXRNYXBzKHN0YXRlLCBzcGxpdE1hcHMgPSBbXSkge1xuICBjb25zdCBtZXJnZWQgPSBbLi4uc3RhdGUuc3BsaXRNYXBzXTtcbiAgY29uc3QgdW5tZXJnZWQgPSBbXTtcbiAgc3BsaXRNYXBzLmZvckVhY2goKHNtLCBpKSA9PiB7XG4gICAgT2JqZWN0LmVudHJpZXMoc20ubGF5ZXJzKS5mb3JFYWNoKChbaWQsIHZhbHVlXSkgPT4ge1xuICAgICAgLy8gY2hlY2sgaWYgbGF5ZXIgZXhpc3RzXG4gICAgICBjb25zdCBwdXNoVG8gPSBzdGF0ZS5sYXllcnMuZmluZChsID0+IGwuaWQgPT09IGlkKSA/IG1lcmdlZCA6IHVubWVyZ2VkO1xuXG4gICAgICAvLyBjcmVhdGUgbWFwIHBhbmVsIGlmIGN1cnJlbnQgbWFwIGlzIG5vdCBzcGxpdFxuICAgICAgcHVzaFRvW2ldID0gcHVzaFRvW2ldIHx8IHtcbiAgICAgICAgbGF5ZXJzOiBwdXNoVG8gPT09IG1lcmdlZCA/IGdldEluaXRpYWxNYXBMYXllcnNGb3JTcGxpdE1hcChzdGF0ZS5sYXllcnMpIDogW11cbiAgICAgIH07XG4gICAgICBwdXNoVG9baV0ubGF5ZXJzID0ge1xuICAgICAgICAuLi5wdXNoVG9baV0ubGF5ZXJzLFxuICAgICAgICBbaWRdOiB2YWx1ZVxuICAgICAgfTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBzcGxpdE1hcHM6IG1lcmdlZCxcbiAgICBzcGxpdE1hcHNUb0JlTWVyZ2VkOiBbLi4uc3RhdGUuc3BsaXRNYXBzVG9CZU1lcmdlZCwgLi4udW5tZXJnZWRdXG4gIH07XG59XG5cbi8qKlxuICogTWVyZ2UgaW50ZXJhY3Rpb25Db25maWcudG9vbHRpcCB3aXRoIHNhdmVkIGNvbmZpZyxcbiAqIHZhbGlkYXRlIGZpZWxkc1RvU2hvd1xuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBzdGF0ZVxuICogQHBhcmFtIHtvYmplY3R9IHRvb2x0aXBDb25maWdcbiAqIEByZXR1cm4ge29iamVjdH0gLSB7bWVyZ2VkVG9vbHRpcDoge30sIHVubWVyZ2VkVG9vbHRpcDoge319XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUludGVyYWN0aW9uVG9vbHRpcENvbmZpZyhzdGF0ZSwgdG9vbHRpcENvbmZpZyA9IHt9KSB7XG4gIGNvbnN0IHVubWVyZ2VkVG9vbHRpcCA9IHt9O1xuICBjb25zdCBtZXJnZWRUb29sdGlwID0ge307XG5cbiAgaWYgKCF0b29sdGlwQ29uZmlnLmZpZWxkc1RvU2hvdyB8fCAhT2JqZWN0LmtleXModG9vbHRpcENvbmZpZy5maWVsZHNUb1Nob3cpLmxlbmd0aCkge1xuICAgIHJldHVybiB7bWVyZ2VkVG9vbHRpcCwgdW5tZXJnZWRUb29sdGlwfTtcbiAgfVxuXG4gIGZvciAoY29uc3QgZGF0YUlkIGluIHRvb2x0aXBDb25maWcuZmllbGRzVG9TaG93KSB7XG4gICAgaWYgKCFzdGF0ZS5kYXRhc2V0c1tkYXRhSWRdKSB7XG4gICAgICAvLyBpcyBub3QgeWV0IGxvYWRlZFxuICAgICAgdW5tZXJnZWRUb29sdGlwW2RhdGFJZF0gPSB0b29sdGlwQ29uZmlnLmZpZWxkc1RvU2hvd1tkYXRhSWRdO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpZiBkYXRhc2V0IGlzIGxvYWRlZFxuICAgICAgY29uc3QgYWxsRmllbGRzID0gc3RhdGUuZGF0YXNldHNbZGF0YUlkXS5maWVsZHMubWFwKGQgPT4gZC5uYW1lKTtcbiAgICAgIGNvbnN0IGZvdW5kRmllbGRzVG9TaG93ID0gc3RhdGUuZGF0YXNldHNbZGF0YUlkXS5tZXRhZGF0YS5pc0R5bmFtaWNTcGF0aWFsSW5kZXhcbiAgICAgICAgPyB0b29sdGlwQ29uZmlnLmZpZWxkc1RvU2hvd1tkYXRhSWRdXG4gICAgICAgIDogdG9vbHRpcENvbmZpZy5maWVsZHNUb1Nob3dbZGF0YUlkXS5maWx0ZXIoZmllbGQgPT4gYWxsRmllbGRzLmluY2x1ZGVzKGZpZWxkLm5hbWUpKTtcblxuICAgICAgbWVyZ2VkVG9vbHRpcFtkYXRhSWRdID0gZm91bmRGaWVsZHNUb1Nob3c7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHttZXJnZWRUb29sdGlwLCB1bm1lcmdlZFRvb2x0aXB9O1xufVxuLyoqXG4gKiBNZXJnZSBsYXllckJsZW5kaW5nIHdpdGggc2F2ZWRcbiAqXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi92aXMtc3RhdGUtbWVyZ2VyJykubWVyZ2VMYXllckJsZW5kaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VMYXllckJsZW5kaW5nKHN0YXRlLCBsYXllckJsZW5kaW5nKSB7XG4gIGlmIChsYXllckJsZW5kaW5nICYmIExBWUVSX0JMRU5ESU5HU1tsYXllckJsZW5kaW5nXSkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGxheWVyQmxlbmRpbmdcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlO1xufVxuXG4vKipcbiAqIE1lcmdlIGFuaW1hdGlvbiBjb25maWdcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL3Zpcy1zdGF0ZS1tZXJnZXInKS5tZXJnZUFuaW1hdGlvbkNvbmZpZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlQW5pbWF0aW9uQ29uZmlnKHN0YXRlLCBhbmltYXRpb24pIHtcbiAgaWYgKGFuaW1hdGlvbiAmJiBhbmltYXRpb24uY3VycmVudFRpbWUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBhbmltYXRpb25Db25maWc6IHtcbiAgICAgICAgLi4uc3RhdGUuYW5pbWF0aW9uQ29uZmlnLFxuICAgICAgICAuLi5hbmltYXRpb24sXG4gICAgICAgIGRvbWFpbjogbnVsbFxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gc3RhdGU7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgc2F2ZWQgbGF5ZXIgY29sdW1ucyB3aXRoIG5ldyBkYXRhLFxuICogdXBkYXRlIGZpZWxkSWR4IGJhc2VkIG9uIG5ldyBmaWVsZHNcbiAqXG4gKiBAcGFyYW0ge0FycmF5PE9iamVjdD59IGZpZWxkc1xuICogQHBhcmFtIHtPYmplY3R9IHNhdmVkQ29sc1xuICogQHBhcmFtIHtPYmplY3R9IGVtcHR5Q29sc1xuICogQHJldHVybiB7bnVsbCB8IE9iamVjdH0gLSB2YWxpZGF0ZWQgY29sdW1ucyBvciBudWxsXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU2F2ZWRMYXllckNvbHVtbnMoZmllbGRzLCBzYXZlZENvbHMgPSB7fSwgZW1wdHlDb2xzKSB7XG4gIC8vIFByZXBhcmUgY29sdW1ucyBmb3IgdGhlIHZhbGlkYXRvclxuICBjb25zdCBjb2x1bW5zID0ge307XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGVtcHR5Q29scykpIHtcbiAgICBjb2x1bW5zW2tleV0gPSB7Li4uZW1wdHlDb2xzW2tleV19O1xuXG4gICAgY29uc3Qgc2F2ZWQgPSBzYXZlZENvbHNba2V5XTtcbiAgICBpZiAoc2F2ZWQpIHtcbiAgICAgIGNvbnN0IGZpZWxkSWR4ID0gZmllbGRzLmZpbmRJbmRleCgoe25hbWV9KSA9PiBuYW1lID09PSBzYXZlZCk7XG5cbiAgICAgIGlmIChmaWVsZElkeCA+IC0xKSB7XG4gICAgICAgIC8vIHVwZGF0ZSBmb3VuZCBjb2x1bW5zXG4gICAgICAgIGNvbHVtbnNba2V5XS5maWVsZElkeCA9IGZpZWxkSWR4O1xuICAgICAgICBjb2x1bW5zW2tleV0udmFsdWUgPSBzYXZlZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBmaW5kIGFjdHVhbCBjb2x1bW4gZmllbGRJZHgsIGluIGNhc2UgaXQgaGFzIGNoYW5nZWRcbiAgY29uc3QgYWxsQ29sRm91bmQgPSBPYmplY3Qua2V5cyhjb2x1bW5zKS5ldmVyeShrZXkgPT5cbiAgICB2YWxpZGF0ZUNvbHVtbihjb2x1bW5zW2tleV0sIGNvbHVtbnMsIGZpZWxkcylcbiAgKTtcblxuICBpZiAoYWxsQ29sRm91bmQpIHtcbiAgICByZXR1cm4gY29sdW1ucztcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVDb2x1bW4oY29sdW1uLCBjb2x1bW5zLCBhbGxGaWVsZHMpIHtcbiAgaWYgKGNvbHVtbi5vcHRpb25hbCB8fCBjb2x1bW4udmFsdWUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoY29sdW1uLnZhbGlkYXRvcikge1xuICAgIHJldHVybiBjb2x1bW4udmFsaWRhdG9yKGNvbHVtbiwgY29sdW1ucywgYWxsRmllbGRzKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgc2F2ZWQgdGV4dCBsYWJlbCBjb25maWcgd2l0aCBuZXcgZGF0YVxuICogcmVmZXIgdG8gdmlzLXN0YXRlLXNjaGVtYS5qcyBUZXh0TGFiZWxTY2hlbWFWMVxuICpcbiAqIEBwYXJhbSB7QXJyYXk8T2JqZWN0Pn0gZmllbGRzXG4gKiBAcGFyYW0ge09iamVjdH0gc2F2ZWRUZXh0TGFiZWxcbiAqIEByZXR1cm4ge09iamVjdH0gLSB2YWxpZGF0ZWQgdGV4dGxhYmVsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVNhdmVkVGV4dExhYmVsKGZpZWxkcywgW2xheWVyVGV4dExhYmVsXSwgc2F2ZWRUZXh0TGFiZWwpIHtcbiAgY29uc3Qgc2F2ZWRUZXh0TGFiZWxzID0gQXJyYXkuaXNBcnJheShzYXZlZFRleHRMYWJlbCkgPyBzYXZlZFRleHRMYWJlbCA6IFtzYXZlZFRleHRMYWJlbF07XG5cbiAgLy8gdmFsaWRhdGUgZmllbGRcbiAgcmV0dXJuIHNhdmVkVGV4dExhYmVscy5tYXAodGV4dExhYmVsID0+IHtcbiAgICBjb25zdCBmaWVsZCA9IHRleHRMYWJlbC5maWVsZFxuICAgICAgPyBmaWVsZHMuZmluZChmZCA9PlxuICAgICAgICAgIE9iamVjdC5rZXlzKHRleHRMYWJlbC5maWVsZCkuZXZlcnkoa2V5ID0+IHRleHRMYWJlbC5maWVsZFtrZXldID09PSBmZFtrZXldKVxuICAgICAgICApXG4gICAgICA6IG51bGw7XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMobGF5ZXJUZXh0TGFiZWwpLnJlZHVjZShcbiAgICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAgIC4uLmFjY3UsXG4gICAgICAgIFtrZXldOiBrZXkgPT09ICdmaWVsZCcgPyBmaWVsZCA6IHRleHRMYWJlbFtrZXldIHx8IGxheWVyVGV4dExhYmVsW2tleV1cbiAgICAgIH0pLFxuICAgICAge31cbiAgICApO1xuICB9KTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBzYXZlZCB2aXN1YWwgY2hhbm5lbHMgY29uZmlnIHdpdGggbmV3IGRhdGEsXG4gKiByZWZlciB0byB2aXMtc3RhdGUtc2NoZW1hLmpzIFZpc3VhbENoYW5uZWxTY2hlbWFWMVxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vdmlzLXN0YXRlLW1lcmdlcicpLnZhbGlkYXRlU2F2ZWRWaXN1YWxDaGFubmVsc31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU2F2ZWRWaXN1YWxDaGFubmVscyhmaWVsZHMsIG5ld0xheWVyLCBzYXZlZExheWVyKSB7XG4gIE9iamVjdC52YWx1ZXMobmV3TGF5ZXIudmlzdWFsQ2hhbm5lbHMpLmZvckVhY2goKHtmaWVsZCwgc2NhbGUsIGtleX0pID0+IHtcbiAgICBsZXQgZm91bmRGaWVsZDtcbiAgICBjb25zdCBjb2xvckZpZWxkUHJvcHMgPSB7fTtcbiAgICBpZiAoc2F2ZWRMYXllci5jb25maWcpIHtcbiAgICAgIGlmIChzYXZlZExheWVyLmNvbmZpZ1tmaWVsZF0pIHtcbiAgICAgICAgZm91bmRGaWVsZCA9IGZpZWxkcy5maW5kKFxuICAgICAgICAgIGZkID0+IHNhdmVkTGF5ZXIuY29uZmlnICYmIGZkLm5hbWUgPT09IHNhdmVkTGF5ZXIuY29uZmlnW2ZpZWxkXS5uYW1lXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzYXZlZExheWVyLmNvbmZpZ1tmaWVsZF0/LmNvbG9yQ29sdW1uKSB7XG4gICAgICAgIGNvbnN0IGNvbG9yQ29sdW1uRmllbGQgPSBmaWVsZHMuZmluZChcbiAgICAgICAgICBmZCA9PiBzYXZlZExheWVyLmNvbmZpZyAmJiBmZC5uYW1lID09PSBzYXZlZExheWVyLmNvbmZpZ1tmaWVsZF0uY29sb3JDb2x1bW5cbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoY29sb3JDb2x1bW5GaWVsZCkge1xuICAgICAgICAgIGNvbG9yRmllbGRQcm9wcy5jb2xvckNvbHVtbiA9IGNvbG9yQ29sdW1uRmllbGQubmFtZTtcbiAgICAgICAgICBjb2xvckZpZWxkUHJvcHMuY29sb3JDb2x1bW5JZHggPSBjb2xvckNvbHVtbkZpZWxkLmZpZWxkSWR4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZvdW5kQ2hhbm5lbCA9IHtcbiAgICAgICAgLi4uKGZvdW5kRmllbGQgPyB7W2ZpZWxkXTogey4uLmZvdW5kRmllbGQsIC4uLmNvbG9yRmllbGRQcm9wc319IDoge30pLFxuICAgICAgICAuLi4oc2F2ZWRMYXllci5jb25maWdbc2NhbGVdID8ge1tzY2FsZV06IHNhdmVkTGF5ZXIuY29uZmlnW3NjYWxlXX0gOiB7fSlcbiAgICAgIH07XG4gICAgICBpZiAoT2JqZWN0LmtleXMoZm91bmRDaGFubmVsKS5sZW5ndGgpIHtcbiAgICAgICAgbmV3TGF5ZXIudXBkYXRlTGF5ZXJDb25maWcoZm91bmRDaGFubmVsKTtcbiAgICAgIH1cblxuICAgICAgbmV3TGF5ZXIudmFsaWRhdGVWaXN1YWxDaGFubmVsKGtleSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIG5ld0xheWVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVMYXllcnNCeURhdGFzZXRzKGRhdGFzZXRzLCBsYXllckNsYXNzZXMsIGxheWVycykge1xuICBjb25zdCB2YWxpZGF0ZWQgPSBbXTtcbiAgY29uc3QgZmFpbGVkID0gW107XG5cbiAgbGF5ZXJzLmZvckVhY2gobGF5ZXIgPT4ge1xuICAgIGxldCB2YWxpZGF0ZUxheWVyO1xuICAgIGlmICghbGF5ZXIgfHwgIWxheWVyLmNvbmZpZykge1xuICAgICAgdmFsaWRhdGVMYXllciA9IG51bGw7XG4gICAgfSBlbHNlIGlmIChkYXRhc2V0c1tsYXllci5jb25maWcuZGF0YUlkXSkge1xuICAgICAgLy8gZGF0YXNldHMgYXJlIGFscmVhZHkgbG9hZGVkXG4gICAgICB2YWxpZGF0ZUxheWVyID0gdmFsaWRhdGVMYXllcldpdGhEYXRhKGRhdGFzZXRzW2xheWVyLmNvbmZpZy5kYXRhSWRdLCBsYXllciwgbGF5ZXJDbGFzc2VzKTtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGVMYXllcikge1xuICAgICAgdmFsaWRhdGVkLnB1c2godmFsaWRhdGVMYXllcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGRhdGFzZXRzIG5vdCB5ZXQgbG9hZGVkXG4gICAgICBmYWlsZWQucHVzaChsYXllcik7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4ge3ZhbGlkYXRlZCwgZmFpbGVkfTtcbn1cbi8qKlxuICogVmFsaWRhdGUgc2F2ZWQgbGF5ZXIgY29uZmlnIHdpdGggbmV3IGRhdGEsXG4gKiB1cGRhdGUgZmllbGRJZHggYmFzZWQgb24gbmV3IGZpZWxkc1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vdmlzLXN0YXRlLW1lcmdlcicpLnZhbGlkYXRlTGF5ZXJXaXRoRGF0YX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTGF5ZXJXaXRoRGF0YShcbiAge2ZpZWxkcywgaWQ6IGRhdGFJZH0sXG4gIHNhdmVkTGF5ZXIsXG4gIGxheWVyQ2xhc3NlcyxcbiAgb3B0aW9ucyA9IHt9XG4pIHtcbiAgY29uc3Qge3R5cGV9ID0gc2F2ZWRMYXllcjtcbiAgLy8gbGF5ZXIgZG9lc250IGhhdmUgYSB2YWxpZCB0eXBlXG4gIGlmICghdHlwZSB8fCAhbGF5ZXJDbGFzc2VzLmhhc093blByb3BlcnR5KHR5cGUpIHx8ICFzYXZlZExheWVyLmNvbmZpZykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgbGV0IG5ld0xheWVyID0gbmV3IGxheWVyQ2xhc3Nlc1t0eXBlXSh7XG4gICAgaWQ6IHNhdmVkTGF5ZXIuaWQsXG4gICAgZGF0YUlkLFxuICAgIGxhYmVsOiBzYXZlZExheWVyLmNvbmZpZy5sYWJlbCxcbiAgICBjb2xvcjogc2F2ZWRMYXllci5jb25maWcuY29sb3IsXG4gICAgaXNWaXNpYmxlOiBzYXZlZExheWVyLmNvbmZpZy5pc1Zpc2libGUsXG4gICAgaGlkZGVuOiBzYXZlZExheWVyLmNvbmZpZy5oaWRkZW4sXG4gICAgaGlnaGxpZ2h0Q29sb3I6IHNhdmVkTGF5ZXIuY29uZmlnLmhpZ2hsaWdodENvbG9yLFxuICAgIHZpc2liaWxpdHlCeVpvb206IHNhdmVkTGF5ZXIuY29uZmlnLnZpc2liaWxpdHlCeVpvb21cbiAgfSk7XG5cbiAgLy8gZmluZCBjb2x1bW4gZmllbGRJZHhcbiAgY29uc3QgY29sdW1uQ29uZmlnID0gbmV3TGF5ZXIuZ2V0TGF5ZXJDb2x1bW5zKCk7XG4gIGlmIChPYmplY3Qua2V5cyhjb2x1bW5Db25maWcpLmxlbmd0aCkge1xuICAgIGNvbnN0IGNvbHVtbnMgPSB2YWxpZGF0ZVNhdmVkTGF5ZXJDb2x1bW5zKGZpZWxkcywgc2F2ZWRMYXllci5jb25maWcuY29sdW1ucywgY29sdW1uQ29uZmlnKTtcbiAgICBpZiAoY29sdW1ucykge1xuICAgICAgbmV3TGF5ZXIudXBkYXRlTGF5ZXJDb25maWcoe2NvbHVtbnN9KTtcbiAgICB9IGVsc2UgaWYgKCFvcHRpb25zLmFsbG93RW1wdHlDb2x1bW4pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8vIHZpc3VhbCBjaGFubmVsIGZpZWxkIGlzIHNhdmVkIHRvIGJlIHtuYW1lLCB0eXBlfVxuICAvLyBmaW5kIHZpc3VhbCBjaGFubmVsIGZpZWxkIGJ5IG1hdGNoaW5nIGJvdGggbmFtZSBhbmQgdHlwZVxuICAvLyByZWZlciB0byB2aXMtc3RhdGUtc2NoZW1hLmpzIFZpc3VhbENoYW5uZWxTY2hlbWFWMVxuICBuZXdMYXllciA9IHZhbGlkYXRlU2F2ZWRWaXN1YWxDaGFubmVscyhmaWVsZHMsIG5ld0xheWVyLCBzYXZlZExheWVyKTtcblxuICBjb25zdCB0ZXh0TGFiZWwgPVxuICAgIHNhdmVkTGF5ZXIuY29uZmlnLnRleHRMYWJlbCAmJiBuZXdMYXllci5jb25maWcudGV4dExhYmVsXG4gICAgICA/IHZhbGlkYXRlU2F2ZWRUZXh0TGFiZWwoZmllbGRzLCBuZXdMYXllci5jb25maWcudGV4dExhYmVsLCBzYXZlZExheWVyLmNvbmZpZy50ZXh0TGFiZWwpXG4gICAgICA6IG5ld0xheWVyLmNvbmZpZy50ZXh0TGFiZWw7XG5cbiAgLy8gY29weSB2aXNDb25maWcgb3ZlciB0byBlbXB0eUxheWVyIHRvIG1ha2Ugc3VyZSBpdCBoYXMgYWxsIHRoZSBwcm9wc1xuICBjb25zdCB2aXNDb25maWcgPSBuZXdMYXllci5jb3B5TGF5ZXJDb25maWcoXG4gICAgbmV3TGF5ZXIuY29uZmlnLnZpc0NvbmZpZyxcbiAgICBzYXZlZExheWVyLmNvbmZpZy52aXNDb25maWcgfHwge30sXG4gICAge3NoYWxsb3dDb3B5OiBbJ2NvbG9yUmFuZ2UnLCAnc3Ryb2tlQ29sb3JSYW5nZSddfVxuICApO1xuXG4gIG5ld0xheWVyLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICB2aXNDb25maWcsXG4gICAgdGV4dExhYmVsXG4gIH0pO1xuXG4gIHJldHVybiBuZXdMYXllcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRNZXJnZXIobWVyZ2VyKSB7XG4gIHJldHVybiBpc09iamVjdChtZXJnZXIpICYmIHR5cGVvZiBtZXJnZXIubWVyZ2UgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG1lcmdlci5wcm9wID09PSAnc3RyaW5nJztcbn1cblxuZXhwb3J0IGNvbnN0IFZJU19TVEFURV9NRVJHRVJTID0gW1xuICB7bWVyZ2U6IG1lcmdlTGF5ZXJzLCBwcm9wOiAnbGF5ZXJzJywgdG9NZXJnZVByb3A6ICdsYXllclRvQmVNZXJnZWQnfSxcbiAge21lcmdlOiBtZXJnZUZpbHRlcnMsIHByb3A6ICdmaWx0ZXJzJywgdG9NZXJnZVByb3A6ICdmaWx0ZXJUb0JlTWVyZ2VkJ30sXG4gIHttZXJnZTogbWVyZ2VJbnRlcmFjdGlvbnMsIHByb3A6ICdpbnRlcmFjdGlvbkNvbmZpZycsIHRvTWVyZ2VQcm9wOiAnaW50ZXJhY3Rpb25Ub0JlTWVyZ2VkJ30sXG4gIHttZXJnZTogbWVyZ2VMYXllckJsZW5kaW5nLCBwcm9wOiAnbGF5ZXJCbGVuZGluZyd9LFxuICB7bWVyZ2U6IG1lcmdlU3BsaXRNYXBzLCBwcm9wOiAnc3BsaXRNYXBzJywgdG9NZXJnZVByb3A6ICdzcGxpdE1hcHNUb0JlTWVyZ2VkJ30sXG4gIHttZXJnZTogbWVyZ2VBbmltYXRpb25Db25maWcsIHByb3A6ICdhbmltYXRpb25Db25maWcnfVxuXTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxRQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFI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
|
|
565
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdW5pcSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3BpY2siLCJfZmxhdHRlbkRlZXAiLCJfdXRpbHMiLCJfZmlsdGVyVXRpbHMiLCJfc3BsaXRNYXBVdGlscyIsIl9ncHVGaWx0ZXJVdGlscyIsIl9kZWZhdWx0U2V0dGluZ3MiLCJfc2NoZW1hcyIsIl9leGNsdWRlZCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwibyIsImFsbG93QXJyYXlMaWtlIiwiaXQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsImkiLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJlIiwiX2UiLCJmIiwiVHlwZUVycm9yIiwibm9ybWFsQ29tcGxldGlvbiIsImRpZEVyciIsImVyciIsImNhbGwiLCJzdGVwIiwibmV4dCIsIl9lMiIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsImZyb20iLCJ0ZXN0IiwiYXJyIiwibGVuIiwiYXJyMiIsIm93bktleXMiLCJyIiwidCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm1lcmdlRmlsdGVycyIsInN0YXRlIiwiZmlsdGVyc1RvTWVyZ2UiLCJfdmFsaWRhdGVGaWx0ZXJzVXBkYXQiLCJ2YWxpZGF0ZUZpbHRlcnNVcGRhdGVEYXRhc2V0cyIsInZhbGlkYXRlZCIsImZhaWxlZCIsInVwZGF0ZWREYXRhc2V0cyIsInVwZGF0ZWRGaWx0ZXJzIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImZpbHRlcnMiLCJyZXNldEZpbHRlckdwdU1vZGUiLCJhc3NpZ25HcHVDaGFubmVscyIsImRhdGFzZXRzVG9GaWx0ZXIiLCJ1bmlxIiwiZmxhdHRlbkRlZXAiLCJtYXAiLCJkYXRhSWQiLCJmaWx0ZXJlZCIsImFwcGx5RmlsdGVyc1RvRGF0YXNldHMiLCJsYXllcnMiLCJkYXRhc2V0cyIsImZpbHRlclRvQmVNZXJnZWQiLCJjcmVhdGVMYXllckZyb21Db25maWciLCJsYXllckNvbmZpZyIsIl92YWxpZGF0ZUxheWVyc0J5RGF0YSIsInZhbGlkYXRlTGF5ZXJzQnlEYXRhc2V0cyIsImxheWVyQ2xhc3NlcyIsIm5ld0xheWVyIiwidXBkYXRlTGF5ZXJEb21haW4iLCJzZXJpYWxpemVMYXllciIsInNhdmVkVmlzU3RhdGUiLCJ2aXNTdGF0ZVNjaGVtYSIsIkNVUlJFTlRfVkVSU0lPTiIsInNhdmUiLCJsYXllck9yZGVyIiwidmlzU3RhdGUiLCJsb2FkZWRMYXllciIsImxvYWQiLCJtZXJnZUxheWVycyIsImxheWVyc1RvTWVyZ2UiLCJmcm9tQ29uZmlnIiwicHJlc2VydmVMYXllck9yZGVyIiwibCIsImlkIiwiX3ZhbGlkYXRlTGF5ZXJzQnlEYXRhMiIsIm1lcmdlZExheWVyIiwidW5tZXJnZWQiLCJfaW5zZXJ0TGF5ZXJBdFJpZ2h0T3IiLCJpbnNlcnRMYXllckF0UmlnaHRPcmRlciIsIm5ld0xheWVyT3JkZXIiLCJuZXdMYXllcnMiLCJsYXllclRvQmVNZXJnZWQiLCJjdXJyZW50TGF5ZXJzIiwibGF5ZXJzVG9JbnNlcnQiLCJjdXJyZW50T3JkZXIiLCJwcmVzZXJ2ZWRPcmRlciIsInVuZGVmaW5lZCIsImxheWVyT3JkZXJRdWV1ZSIsIl9pdGVyYXRvciIsIl9zdGVwIiwiZXhwZWN0ZWRJZHgiLCJpbmRleE9mIiwiaW5zZXJ0QXQiLCJwcmVjZWVkSWR4IiwicHJlY2VlZExheWVyIiwiYXJyYXlJbnNlcnQiLCJmaW5kSW5kZXgiLCJtZXJnZUludGVyYWN0aW9ucyIsImludGVyYWN0aW9uVG9CZU1lcmdlZCIsIm1lcmdlZCIsImtleSIsImludGVyYWN0aW9uQ29uZmlnIiwiY3VycmVudENvbmZpZyIsImNvbmZpZyIsIl9yZWYiLCJlbmFibGVkIiwiY29uZmlnU2F2ZWQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwiY29uZmlnVG9NZXJnZSIsIl9tZXJnZUludGVyYWN0aW9uVG9vbCIsIm1lcmdlSW50ZXJhY3Rpb25Ub29sdGlwQ29uZmlnIiwibWVyZ2VkVG9vbHRpcCIsInVubWVyZ2VkVG9vbHRpcCIsImZpZWxkc1RvU2hvdyIsInRvb2x0aXAiLCJwaWNrIiwibWVyZ2VTcGxpdE1hcHMiLCJzcGxpdE1hcHMiLCJzbSIsImVudHJpZXMiLCJfcmVmMiIsIl9yZWYzIiwiX3NsaWNlZFRvQXJyYXkyIiwicHVzaFRvIiwiZmluZCIsImdldEluaXRpYWxNYXBMYXllcnNGb3JTcGxpdE1hcCIsInNwbGl0TWFwc1RvQmVNZXJnZWQiLCJ0b29sdGlwQ29uZmlnIiwiX2xvb3AiLCJhbGxGaWVsZHMiLCJmaWVsZHMiLCJkIiwiZm91bmRGaWVsZHNUb1Nob3ciLCJtZXRhZGF0YSIsImlzRHluYW1pY1NwYXRpYWxJbmRleCIsImZpZWxkIiwiaW5jbHVkZXMiLCJtZXJnZUxheWVyQmxlbmRpbmciLCJsYXllckJsZW5kaW5nIiwiTEFZRVJfQkxFTkRJTkdTIiwibWVyZ2VBbmltYXRpb25Db25maWciLCJhbmltYXRpb24iLCJjdXJyZW50VGltZSIsImFuaW1hdGlvbkNvbmZpZyIsImRvbWFpbiIsInZhbGlkYXRlU2F2ZWRMYXllckNvbHVtbnMiLCJzYXZlZENvbHMiLCJlbXB0eUNvbHMiLCJjb2x1bW5zIiwiX2xvb3AyIiwiX09iamVjdCRrZXlzIiwiX2kiLCJzYXZlZCIsImZpZWxkSWR4IiwiX3JlZjQiLCJhbGxDb2xGb3VuZCIsImV2ZXJ5IiwidmFsaWRhdGVDb2x1bW4iLCJjb2x1bW4iLCJvcHRpb25hbCIsInZhbGlkYXRvciIsInZhbGlkYXRlU2F2ZWRUZXh0TGFiZWwiLCJfcmVmNSIsInNhdmVkVGV4dExhYmVsIiwiX3JlZjYiLCJsYXllclRleHRMYWJlbCIsInNhdmVkVGV4dExhYmVscyIsInRleHRMYWJlbCIsImZkIiwicmVkdWNlIiwiYWNjdSIsInZhbGlkYXRlU2F2ZWRWaXN1YWxDaGFubmVscyIsInNhdmVkTGF5ZXIiLCJ2YWx1ZXMiLCJ2aXN1YWxDaGFubmVscyIsIl9yZWY3Iiwic2NhbGUiLCJmb3VuZEZpZWxkIiwiY29sb3JGaWVsZFByb3BzIiwiX3NhdmVkTGF5ZXIkY29uZmlnJGZpIiwiY29sb3JDb2x1bW4iLCJjb2xvckNvbHVtbkZpZWxkIiwiY29sb3JDb2x1bW5JZHgiLCJmb3VuZENoYW5uZWwiLCJ1cGRhdGVMYXllckNvbmZpZyIsInZhbGlkYXRlVmlzdWFsQ2hhbm5lbCIsImxheWVyIiwidmFsaWRhdGVMYXllciIsInZhbGlkYXRlTGF5ZXJXaXRoRGF0YSIsIl9yZWYxMCIsIm9wdGlvbnMiLCJ0eXBlIiwiaGFzT3duUHJvcGVydHkiLCJsYWJlbCIsImNvbG9yIiwiaXNWaXNpYmxlIiwiaGlkZGVuIiwiaGlnaGxpZ2h0Q29sb3IiLCJ2aXNpYmlsaXR5Qnlab29tIiwiY29sdW1uQ29uZmlnIiwiZ2V0TGF5ZXJDb2x1bW5zIiwiYWxsb3dFbXB0eUNvbHVtbiIsInZpc0NvbmZpZyIsImNvcHlMYXllckNvbmZpZyIsInNoYWxsb3dDb3B5IiwiaXNWYWxpZE1lcmdlciIsIm1lcmdlciIsImlzT2JqZWN0IiwibWVyZ2UiLCJwcm9wIiwiVklTX1NUQVRFX01FUkdFUlMiLCJleHBvcnRzIiwidG9NZXJnZVByb3AiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVkdWNlcnMvdmlzLXN0YXRlLW1lcmdlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgdW5pcSBmcm9tICdsb2Rhc2gvdW5pcSc7XG5pbXBvcnQgcGljayBmcm9tICdsb2Rhc2gvcGljayc7XG5pbXBvcnQgZmxhdHRlbkRlZXAgZnJvbSAnbG9kYXNoL2ZsYXR0ZW5EZWVwJztcbmltcG9ydCB7aXNPYmplY3QsIGFycmF5SW5zZXJ0fSBmcm9tICd1dGlscy91dGlscyc7XG5pbXBvcnQge2FwcGx5RmlsdGVyc1RvRGF0YXNldHMsIHZhbGlkYXRlRmlsdGVyc1VwZGF0ZURhdGFzZXRzfSBmcm9tICd1dGlscy9maWx0ZXItdXRpbHMnO1xuXG5pbXBvcnQge2dldEluaXRpYWxNYXBMYXllcnNGb3JTcGxpdE1hcH0gZnJvbSAndXRpbHMvc3BsaXQtbWFwLXV0aWxzJztcbmltcG9ydCB7cmVzZXRGaWx0ZXJHcHVNb2RlLCBhc3NpZ25HcHVDaGFubmVsc30gZnJvbSAndXRpbHMvZ3B1LWZpbHRlci11dGlscyc7XG5pbXBvcnQge0xBWUVSX0JMRU5ESU5HU30gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuaW1wb3J0IHtDVVJSRU5UX1ZFUlNJT04sIHZpc1N0YXRlU2NoZW1hfSBmcm9tICdzY2hlbWFzJztcblxuLyoqXG4gKiBNZXJnZSBsb2FkZWQgZmlsdGVycyB3aXRoIGN1cnJlbnQgc3RhdGUsIGlmIG5vIGZpZWxkcyBvciBkYXRhIGFyZSBsb2FkZWRcbiAqIHNhdmUgaXQgZm9yIGxhdGVyXG4gKlxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vdmlzLXN0YXRlLW1lcmdlcicpLm1lcmdlRmlsdGVyc31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlRmlsdGVycyhzdGF0ZSwgZmlsdGVyc1RvTWVyZ2UpIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGZpbHRlcnNUb01lcmdlKSB8fCAhZmlsdGVyc1RvTWVyZ2UubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgY29uc3Qge3ZhbGlkYXRlZCwgZmFpbGVkLCB1cGRhdGVkRGF0YXNldHN9ID0gdmFsaWRhdGVGaWx0ZXJzVXBkYXRlRGF0YXNldHMoc3RhdGUsIGZpbHRlcnNUb01lcmdlKTtcblxuICAvLyBtZXJnZSBmaWx0ZXIgd2l0aCBleGlzdGluZ1xuICBsZXQgdXBkYXRlZEZpbHRlcnMgPSBbLi4uKHN0YXRlLmZpbHRlcnMgfHwgW10pLCAuLi52YWxpZGF0ZWRdO1xuICB1cGRhdGVkRmlsdGVycyA9IHJlc2V0RmlsdGVyR3B1TW9kZSh1cGRhdGVkRmlsdGVycyk7XG4gIHVwZGF0ZWRGaWx0ZXJzID0gYXNzaWduR3B1Q2hhbm5lbHModXBkYXRlZEZpbHRlcnMpO1xuICAvLyBmaWx0ZXIgZGF0YVxuICBjb25zdCBkYXRhc2V0c1RvRmlsdGVyID0gdW5pcShmbGF0dGVuRGVlcCh2YWxpZGF0ZWQubWFwKGYgPT4gZi5kYXRhSWQpKSk7XG5cbiAgY29uc3QgZmlsdGVyZWQgPSBhcHBseUZpbHRlcnNUb0RhdGFzZXRzKFxuICAgIGRhdGFzZXRzVG9GaWx0ZXIsXG4gICAgdXBkYXRlZERhdGFzZXRzLFxuICAgIHVwZGF0ZWRGaWx0ZXJzLFxuICAgIHN0YXRlLmxheWVyc1xuICApO1xuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgZmlsdGVyczogdXBkYXRlZEZpbHRlcnMsXG4gICAgZGF0YXNldHM6IGZpbHRlcmVkLFxuICAgIGZpbHRlclRvQmVNZXJnZWQ6IFsuLi5zdGF0ZS5maWx0ZXJUb0JlTWVyZ2VkLCAuLi5mYWlsZWRdXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMYXllckZyb21Db25maWcoc3RhdGUsIGxheWVyQ29uZmlnKSB7XG4gIC8vIGZpcnN0IHZhbGlkYXRlIGNvbmZpZyBhZ2FpbnN0IGRhdGFzZXRcbiAgY29uc3Qge3ZhbGlkYXRlZCwgZmFpbGVkfSA9IHZhbGlkYXRlTGF5ZXJzQnlEYXRhc2V0cyhzdGF0ZS5kYXRhc2V0cywgc3RhdGUubGF5ZXJDbGFzc2VzLCBbXG4gICAgbGF5ZXJDb25maWdcbiAgXSk7XG5cbiAgaWYgKGZhaWxlZC5sZW5ndGggfHwgIXZhbGlkYXRlZC5sZW5ndGgpIHtcbiAgICAvLyBmYWlsZWRcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IG5ld0xheWVyID0gdmFsaWRhdGVkWzBdO1xuICBuZXdMYXllci51cGRhdGVMYXllckRvbWFpbihzdGF0ZS5kYXRhc2V0cyk7XG4gIHJldHVybiBuZXdMYXllcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZUxheWVyKG5ld0xheWVyKSB7XG4gIGNvbnN0IHNhdmVkVmlzU3RhdGUgPSB2aXNTdGF0ZVNjaGVtYVtDVVJSRU5UX1ZFUlNJT05dLnNhdmUoe1xuICAgIGxheWVyczogW25ld0xheWVyXSxcbiAgICBsYXllck9yZGVyOiBbMF1cbiAgfSkudmlzU3RhdGU7XG4gIGNvbnN0IGxvYWRlZExheWVyID0gdmlzU3RhdGVTY2hlbWFbQ1VSUkVOVF9WRVJTSU9OXS5sb2FkKHNhdmVkVmlzU3RhdGUpLnZpc1N0YXRlLmxheWVyc1swXTtcbiAgcmV0dXJuIGxvYWRlZExheWVyO1xufVxuXG4vKipcbiAqIE1lcmdlIGxheWVycyBmcm9tIGRlLXNlcmlhbGl6ZWQgc3RhdGUsIGlmIG5vIGZpZWxkcyBvciBkYXRhIGFyZSBsb2FkZWRcbiAqIHNhdmUgaXQgZm9yIGxhdGVyXG4gKlxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vdmlzLXN0YXRlLW1lcmdlcicpLm1lcmdlTGF5ZXJzfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VMYXllcnMoc3RhdGUsIGxheWVyc1RvTWVyZ2UsIGZyb21Db25maWcpIHtcbiAgY29uc3QgcHJlc2VydmVMYXllck9yZGVyID0gZnJvbUNvbmZpZyA/IGxheWVyc1RvTWVyZ2UubWFwKGwgPT4gbC5pZCkgOiBzdGF0ZS5wcmVzZXJ2ZUxheWVyT3JkZXI7XG5cbiAgaWYgKCFBcnJheS5pc0FycmF5KGxheWVyc1RvTWVyZ2UpIHx8ICFsYXllcnNUb01lcmdlLmxlbmd0aCkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGNvbnN0IHt2YWxpZGF0ZWQ6IG1lcmdlZExheWVyLCBmYWlsZWQ6IHVubWVyZ2VkfSA9IHZhbGlkYXRlTGF5ZXJzQnlEYXRhc2V0cyhcbiAgICBzdGF0ZS5kYXRhc2V0cyxcbiAgICBzdGF0ZS5sYXllckNsYXNzZXMsXG4gICAgbGF5ZXJzVG9NZXJnZVxuICApO1xuXG4gIC8vIHB1dCBuZXcgbGF5ZXJzIGluIGZyb250IG9mIGN1cnJlbnQgbGF5ZXJzXG4gIGNvbnN0IHtuZXdMYXllck9yZGVyLCBuZXdMYXllcnN9ID0gaW5zZXJ0TGF5ZXJBdFJpZ2h0T3JkZXIoXG4gICAgc3RhdGUubGF5ZXJzLFxuICAgIG1lcmdlZExheWVyLFxuICAgIHN0YXRlLmxheWVyT3JkZXIsXG4gICAgcHJlc2VydmVMYXllck9yZGVyXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBsYXllcnM6IG5ld0xheWVycyxcbiAgICBsYXllck9yZGVyOiBuZXdMYXllck9yZGVyLFxuICAgIHByZXNlcnZlTGF5ZXJPcmRlcixcbiAgICBsYXllclRvQmVNZXJnZWQ6IFsuLi5zdGF0ZS5sYXllclRvQmVNZXJnZWQsIC4uLnVubWVyZ2VkXVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0TGF5ZXJBdFJpZ2h0T3JkZXIoXG4gIGN1cnJlbnRMYXllcnMsXG4gIGxheWVyc1RvSW5zZXJ0LFxuICBjdXJyZW50T3JkZXIsXG4gIHByZXNlcnZlZE9yZGVyID0gW11cbikge1xuICAvLyBwZXJzZXJ2ZWRPcmRlciBbJ2EnLCAnYicsICdjJ107XG4gIC8vIGxheWVyT3JkZXIgWzEsIDAsIDNdXG4gIC8vIGxheWVyT3JkZXJNYXAgWydhJywgJ2MnXVxuICBsZXQgbGF5ZXJPcmRlclF1ZXVlID0gY3VycmVudE9yZGVyLm1hcChpID0+IGN1cnJlbnRMYXllcnNbaV0uaWQpO1xuICBsZXQgbmV3TGF5ZXJzID0gY3VycmVudExheWVycztcblxuICBmb3IgKGNvbnN0IG5ld0xheWVyIG9mIGxheWVyc1RvSW5zZXJ0KSB7XG4gICAgLy8gZmluZCB3aGVyZSB0byBpbnNlcnQgaXRcbiAgICBjb25zdCBleHBlY3RlZElkeCA9IHByZXNlcnZlZE9yZGVyLmluZGV4T2YobmV3TGF5ZXIuaWQpO1xuICAgIC8vIGlmIGNhbnQgZmluZCBwbGFjZSB0byBpbnNlcnQsIGluc2VydCBhdCB0aGUgZm9udFxuICAgIGxldCBpbnNlcnRBdCA9IDA7XG5cbiAgICBpZiAoZXhwZWN0ZWRJZHggPiAwKSB7XG4gICAgICAvLyBsb29rIGZvciBsYXllciB0byBpbnNlcnQgYWZ0ZXJcbiAgICAgIGxldCBpID0gZXhwZWN0ZWRJZHggKyAxO1xuICAgICAgbGV0IHByZWNlZWRJZHggPSAtMTtcbiAgICAgIHdoaWxlIChpLS0gPiAwICYmIHByZWNlZWRJZHggPT09IC0xKSB7XG4gICAgICAgIGNvbnN0IHByZWNlZWRMYXllciA9IHByZXNlcnZlZE9yZGVyW2ldO1xuICAgICAgICBwcmVjZWVkSWR4ID0gbGF5ZXJPcmRlclF1ZXVlLmluZGV4T2YocHJlY2VlZExheWVyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByZWNlZWRJZHggPiAtMSkge1xuICAgICAgICBpbnNlcnRBdCA9IHByZWNlZWRJZHggKyAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxheWVyT3JkZXJRdWV1ZSA9IGFycmF5SW5zZXJ0KGxheWVyT3JkZXJRdWV1ZSwgaW5zZXJ0QXQsIG5ld0xheWVyLmlkKTtcbiAgICBuZXdMYXllcnMgPSBuZXdMYXllcnMuY29uY2F0KG5ld0xheWVyKTtcbiAgfVxuXG4gIC8vIHJlY29uc3RydWN0IGxheWVyT3JkZXIgYWZ0ZXIgaW5zZXJ0XG4gIGNvbnN0IG5ld0xheWVyT3JkZXIgPSBsYXllck9yZGVyUXVldWUubWFwKGlkID0+IG5ld0xheWVycy5maW5kSW5kZXgobCA9PiBsLmlkID09PSBpZCkpO1xuXG4gIHJldHVybiB7XG4gICAgbmV3TGF5ZXJPcmRlcixcbiAgICBuZXdMYXllcnNcbiAgfTtcbn1cblxuLyoqXG4gKiBNZXJnZSBpbnRlcmFjdGlvbnMgd2l0aCBzYXZlZCBjb25maWdcbiAqXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi92aXMtc3RhdGUtbWVyZ2VyJykubWVyZ2VJbnRlcmFjdGlvbnN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUludGVyYWN0aW9ucyhzdGF0ZSwgaW50ZXJhY3Rpb25Ub0JlTWVyZ2VkKSB7XG4gIGNvbnN0IG1lcmdlZCA9IHt9O1xuICBjb25zdCB1bm1lcmdlZCA9IHt9O1xuXG4gIGlmIChpbnRlcmFjdGlvblRvQmVNZXJnZWQpIHtcbiAgICBPYmplY3Qua2V5cyhpbnRlcmFjdGlvblRvQmVNZXJnZWQpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmICghc3RhdGUuaW50ZXJhY3Rpb25Db25maWdba2V5XSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRDb25maWcgPSBzdGF0ZS5pbnRlcmFjdGlvbkNvbmZpZ1trZXldLmNvbmZpZztcblxuICAgICAgY29uc3Qge2VuYWJsZWQsIC4uLmNvbmZpZ1NhdmVkfSA9IGludGVyYWN0aW9uVG9CZU1lcmdlZFtrZXldIHx8IHt9O1xuICAgICAgbGV0IGNvbmZpZ1RvTWVyZ2UgPSBjb25maWdTYXZlZDtcblxuICAgICAgaWYgKGtleSA9PT0gJ3Rvb2x0aXAnKSB7XG4gICAgICAgIGNvbnN0IHttZXJnZWRUb29sdGlwLCB1bm1lcmdlZFRvb2x0aXB9ID0gbWVyZ2VJbnRlcmFjdGlvblRvb2x0aXBDb25maWcoc3RhdGUsIGNvbmZpZ1NhdmVkKTtcblxuICAgICAgICAvLyBtZXJnZSBuZXcgZGF0YXNldCB0b29sdGlwcyB3aXRoIG9yaWdpbmFsIGRhdGFzZXQgdG9vbHRpcHNcbiAgICAgICAgY29uZmlnVG9NZXJnZSA9IHtcbiAgICAgICAgICBmaWVsZHNUb1Nob3c6IHtcbiAgICAgICAgICAgIC4uLmN1cnJlbnRDb25maWcuZmllbGRzVG9TaG93LFxuICAgICAgICAgICAgLi4ubWVyZ2VkVG9vbHRpcFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoT2JqZWN0LmtleXModW5tZXJnZWRUb29sdGlwKS5sZW5ndGgpIHtcbiAgICAgICAgICB1bm1lcmdlZC50b29sdGlwID0ge2ZpZWxkc1RvU2hvdzogdW5tZXJnZWRUb29sdGlwLCBlbmFibGVkfTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBtZXJnZWRba2V5XSA9IHtcbiAgICAgICAgLi4uc3RhdGUuaW50ZXJhY3Rpb25Db25maWdba2V5XSxcbiAgICAgICAgZW5hYmxlZCxcbiAgICAgICAgLi4uKGN1cnJlbnRDb25maWdcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgY29uZmlnOiBwaWNrKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIC4uLmN1cnJlbnRDb25maWcsXG4gICAgICAgICAgICAgICAgICAuLi5jb25maWdUb01lcmdlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhjdXJyZW50Q29uZmlnKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB7fSlcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGludGVyYWN0aW9uQ29uZmlnOiB7XG4gICAgICAuLi5zdGF0ZS5pbnRlcmFjdGlvbkNvbmZpZyxcbiAgICAgIC4uLm1lcmdlZFxuICAgIH0sXG4gICAgaW50ZXJhY3Rpb25Ub0JlTWVyZ2VkOiB1bm1lcmdlZFxuICB9O1xufVxuXG4vKipcbiAqIE1lcmdlIHNwbGl0TWFwcyBjb25maWcgd2l0aCBjdXJyZW50IHZpc1N0ZXRlLlxuICogMS4gaWYgY3VycmVudCBtYXAgaXMgc3BsaXQsIGJ1dCBzcGxpdE1hcCBET0VTTk9UIGNvbnRhaW4gbWFwc1xuICogICAgOiBkb24ndCBtZXJnZSBhbnl0aGluZ1xuICogMi4gaWYgY3VycmVudCBtYXAgaXMgTk9UIHNwbGl0LCBidXQgc3BsaXRNYXBzIGNvbnRhaW4gbWFwc1xuICogICAgOiBhZGQgdG8gc3BsaXRNYXBzLCBhbmQgYWRkIGN1cnJlbnQgbGF5ZXJzIHRvIHNwbGl0TWFwc1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vdmlzLXN0YXRlLW1lcmdlcicpLm1lcmdlSW50ZXJhY3Rpb25zfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VTcGxpdE1hcHMoc3RhdGUsIHNwbGl0TWFwcyA9IFtdKSB7XG4gIGNvbnN0IG1lcmdlZCA9IFsuLi5zdGF0ZS5zcGxpdE1hcHNdO1xuICBjb25zdCB1bm1lcmdlZCA9IFtdO1xuICBzcGxpdE1hcHMuZm9yRWFjaCgoc20sIGkpID0+IHtcbiAgICBPYmplY3QuZW50cmllcyhzbS5sYXllcnMpLmZvckVhY2goKFtpZCwgdmFsdWVdKSA9PiB7XG4gICAgICAvLyBjaGVjayBpZiBsYXllciBleGlzdHNcbiAgICAgIGNvbnN0IHB1c2hUbyA9IHN0YXRlLmxheWVycy5maW5kKGwgPT4gbC5pZCA9PT0gaWQpID8gbWVyZ2VkIDogdW5tZXJnZWQ7XG5cbiAgICAgIC8vIGNyZWF0ZSBtYXAgcGFuZWwgaWYgY3VycmVudCBtYXAgaXMgbm90IHNwbGl0XG4gICAgICBwdXNoVG9baV0gPSBwdXNoVG9baV0gfHwge1xuICAgICAgICBsYXllcnM6IHB1c2hUbyA9PT0gbWVyZ2VkID8gZ2V0SW5pdGlhbE1hcExheWVyc0ZvclNwbGl0TWFwKHN0YXRlLmxheWVycykgOiBbXVxuICAgICAgfTtcbiAgICAgIHB1c2hUb1tpXS5sYXllcnMgPSB7XG4gICAgICAgIC4uLnB1c2hUb1tpXS5sYXllcnMsXG4gICAgICAgIFtpZF06IHZhbHVlXG4gICAgICB9O1xuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIHNwbGl0TWFwczogbWVyZ2VkLFxuICAgIHNwbGl0TWFwc1RvQmVNZXJnZWQ6IFsuLi5zdGF0ZS5zcGxpdE1hcHNUb0JlTWVyZ2VkLCAuLi51bm1lcmdlZF1cbiAgfTtcbn1cblxuLyoqXG4gKiBNZXJnZSBpbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwIHdpdGggc2F2ZWQgY29uZmlnLFxuICogdmFsaWRhdGUgZmllbGRzVG9TaG93XG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHN0YXRlXG4gKiBAcGFyYW0ge29iamVjdH0gdG9vbHRpcENvbmZpZ1xuICogQHJldHVybiB7b2JqZWN0fSAtIHttZXJnZWRUb29sdGlwOiB7fSwgdW5tZXJnZWRUb29sdGlwOiB7fX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlSW50ZXJhY3Rpb25Ub29sdGlwQ29uZmlnKHN0YXRlLCB0b29sdGlwQ29uZmlnID0ge30pIHtcbiAgY29uc3QgdW5tZXJnZWRUb29sdGlwID0ge307XG4gIGNvbnN0IG1lcmdlZFRvb2x0aXAgPSB7fTtcblxuICBpZiAoIXRvb2x0aXBDb25maWcuZmllbGRzVG9TaG93IHx8ICFPYmplY3Qua2V5cyh0b29sdGlwQ29uZmlnLmZpZWxkc1RvU2hvdykubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHttZXJnZWRUb29sdGlwLCB1bm1lcmdlZFRvb2x0aXB9O1xuICB9XG5cbiAgZm9yIChjb25zdCBkYXRhSWQgaW4gdG9vbHRpcENvbmZpZy5maWVsZHNUb1Nob3cpIHtcbiAgICBpZiAoIXN0YXRlLmRhdGFzZXRzW2RhdGFJZF0pIHtcbiAgICAgIC8vIGlzIG5vdCB5ZXQgbG9hZGVkXG4gICAgICB1bm1lcmdlZFRvb2x0aXBbZGF0YUlkXSA9IHRvb2x0aXBDb25maWcuZmllbGRzVG9TaG93W2RhdGFJZF07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGlmIGRhdGFzZXQgaXMgbG9hZGVkXG4gICAgICBjb25zdCBhbGxGaWVsZHMgPSBzdGF0ZS5kYXRhc2V0c1tkYXRhSWRdLmZpZWxkcy5tYXAoZCA9PiBkLm5hbWUpO1xuICAgICAgY29uc3QgZm91bmRGaWVsZHNUb1Nob3cgPSBzdGF0ZS5kYXRhc2V0c1tkYXRhSWRdLm1ldGFkYXRhLmlzRHluYW1pY1NwYXRpYWxJbmRleFxuICAgICAgICA/IHRvb2x0aXBDb25maWcuZmllbGRzVG9TaG93W2RhdGFJZF1cbiAgICAgICAgOiB0b29sdGlwQ29uZmlnLmZpZWxkc1RvU2hvd1tkYXRhSWRdLmZpbHRlcihmaWVsZCA9PiBhbGxGaWVsZHMuaW5jbHVkZXMoZmllbGQubmFtZSkpO1xuXG4gICAgICBtZXJnZWRUb29sdGlwW2RhdGFJZF0gPSBmb3VuZEZpZWxkc1RvU2hvdztcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge21lcmdlZFRvb2x0aXAsIHVubWVyZ2VkVG9vbHRpcH07XG59XG4vKipcbiAqIE1lcmdlIGxheWVyQmxlbmRpbmcgd2l0aCBzYXZlZFxuICpcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL3Zpcy1zdGF0ZS1tZXJnZXInKS5tZXJnZUxheWVyQmxlbmRpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUxheWVyQmxlbmRpbmcoc3RhdGUsIGxheWVyQmxlbmRpbmcpIHtcbiAgaWYgKGxheWVyQmxlbmRpbmcgJiYgTEFZRVJfQkxFTkRJTkdTW2xheWVyQmxlbmRpbmddKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgbGF5ZXJCbGVuZGluZ1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gc3RhdGU7XG59XG5cbi8qKlxuICogTWVyZ2UgYW5pbWF0aW9uIGNvbmZpZ1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vdmlzLXN0YXRlLW1lcmdlcicpLm1lcmdlQW5pbWF0aW9uQ29uZmlnfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VBbmltYXRpb25Db25maWcoc3RhdGUsIGFuaW1hdGlvbikge1xuICBpZiAoYW5pbWF0aW9uICYmIGFuaW1hdGlvbi5jdXJyZW50VGltZSkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGFuaW1hdGlvbkNvbmZpZzoge1xuICAgICAgICAuLi5zdGF0ZS5hbmltYXRpb25Db25maWcsXG4gICAgICAgIC4uLmFuaW1hdGlvbixcbiAgICAgICAgZG9tYWluOiBudWxsXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBzYXZlZCBsYXllciBjb2x1bW5zIHdpdGggbmV3IGRhdGEsXG4gKiB1cGRhdGUgZmllbGRJZHggYmFzZWQgb24gbmV3IGZpZWxkc1xuICpcbiAqIEBwYXJhbSB7QXJyYXk8T2JqZWN0Pn0gZmllbGRzXG4gKiBAcGFyYW0ge09iamVjdH0gc2F2ZWRDb2xzXG4gKiBAcGFyYW0ge09iamVjdH0gZW1wdHlDb2xzXG4gKiBAcmV0dXJuIHtudWxsIHwgT2JqZWN0fSAtIHZhbGlkYXRlZCBjb2x1bW5zIG9yIG51bGxcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTYXZlZExheWVyQ29sdW1ucyhmaWVsZHMsIHNhdmVkQ29scyA9IHt9LCBlbXB0eUNvbHMpIHtcbiAgLy8gUHJlcGFyZSBjb2x1bW5zIGZvciB0aGUgdmFsaWRhdG9yXG4gIGNvbnN0IGNvbHVtbnMgPSB7fTtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZW1wdHlDb2xzKSkge1xuICAgIGNvbHVtbnNba2V5XSA9IHsuLi5lbXB0eUNvbHNba2V5XX07XG5cbiAgICBjb25zdCBzYXZlZCA9IHNhdmVkQ29sc1trZXldO1xuICAgIGlmIChzYXZlZCkge1xuICAgICAgY29uc3QgZmllbGRJZHggPSBmaWVsZHMuZmluZEluZGV4KCh7bmFtZX0pID0+IG5hbWUgPT09IHNhdmVkKTtcblxuICAgICAgaWYgKGZpZWxkSWR4ID4gLTEpIHtcbiAgICAgICAgLy8gdXBkYXRlIGZvdW5kIGNvbHVtbnNcbiAgICAgICAgY29sdW1uc1trZXldLmZpZWxkSWR4ID0gZmllbGRJZHg7XG4gICAgICAgIGNvbHVtbnNba2V5XS52YWx1ZSA9IHNhdmVkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIGZpbmQgYWN0dWFsIGNvbHVtbiBmaWVsZElkeCwgaW4gY2FzZSBpdCBoYXMgY2hhbmdlZFxuICBjb25zdCBhbGxDb2xGb3VuZCA9IE9iamVjdC5rZXlzKGNvbHVtbnMpLmV2ZXJ5KGtleSA9PlxuICAgIHZhbGlkYXRlQ29sdW1uKGNvbHVtbnNba2V5XSwgY29sdW1ucywgZmllbGRzKVxuICApO1xuXG4gIGlmIChhbGxDb2xGb3VuZCkge1xuICAgIHJldHVybiBjb2x1bW5zO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUNvbHVtbihjb2x1bW4sIGNvbHVtbnMsIGFsbEZpZWxkcykge1xuICBpZiAoY29sdW1uLm9wdGlvbmFsIHx8IGNvbHVtbi52YWx1ZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChjb2x1bW4udmFsaWRhdG9yKSB7XG4gICAgcmV0dXJuIGNvbHVtbi52YWxpZGF0b3IoY29sdW1uLCBjb2x1bW5zLCBhbGxGaWVsZHMpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBzYXZlZCB0ZXh0IGxhYmVsIGNvbmZpZyB3aXRoIG5ldyBkYXRhXG4gKiByZWZlciB0byB2aXMtc3RhdGUtc2NoZW1hLmpzIFRleHRMYWJlbFNjaGVtYVYxXG4gKlxuICogQHBhcmFtIHtBcnJheTxPYmplY3Q+fSBmaWVsZHNcbiAqIEBwYXJhbSB7T2JqZWN0fSBzYXZlZFRleHRMYWJlbFxuICogQHJldHVybiB7T2JqZWN0fSAtIHZhbGlkYXRlZCB0ZXh0bGFiZWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU2F2ZWRUZXh0TGFiZWwoZmllbGRzLCBbbGF5ZXJUZXh0TGFiZWxdLCBzYXZlZFRleHRMYWJlbCkge1xuICBjb25zdCBzYXZlZFRleHRMYWJlbHMgPSBBcnJheS5pc0FycmF5KHNhdmVkVGV4dExhYmVsKSA/IHNhdmVkVGV4dExhYmVsIDogW3NhdmVkVGV4dExhYmVsXTtcblxuICAvLyB2YWxpZGF0ZSBmaWVsZFxuICByZXR1cm4gc2F2ZWRUZXh0TGFiZWxzLm1hcCh0ZXh0TGFiZWwgPT4ge1xuICAgIGNvbnN0IGZpZWxkID0gdGV4dExhYmVsLmZpZWxkXG4gICAgICA/IGZpZWxkcy5maW5kKGZkID0+XG4gICAgICAgICAgT2JqZWN0LmtleXModGV4dExhYmVsLmZpZWxkKS5ldmVyeShrZXkgPT4gdGV4dExhYmVsLmZpZWxkW2tleV0gPT09IGZkW2tleV0pXG4gICAgICAgIClcbiAgICAgIDogbnVsbDtcblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhsYXllclRleHRMYWJlbCkucmVkdWNlKFxuICAgICAgKGFjY3UsIGtleSkgPT4gKHtcbiAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgW2tleV06IGtleSA9PT0gJ2ZpZWxkJyA/IGZpZWxkIDogdGV4dExhYmVsW2tleV0gfHwgbGF5ZXJUZXh0TGFiZWxba2V5XVxuICAgICAgfSksXG4gICAgICB7fVxuICAgICk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHNhdmVkIHZpc3VhbCBjaGFubmVscyBjb25maWcgd2l0aCBuZXcgZGF0YSxcbiAqIHJlZmVyIHRvIHZpcy1zdGF0ZS1zY2hlbWEuanMgVmlzdWFsQ2hhbm5lbFNjaGVtYVYxXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi92aXMtc3RhdGUtbWVyZ2VyJykudmFsaWRhdGVTYXZlZFZpc3VhbENoYW5uZWxzfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTYXZlZFZpc3VhbENoYW5uZWxzKGZpZWxkcywgbmV3TGF5ZXIsIHNhdmVkTGF5ZXIpIHtcbiAgT2JqZWN0LnZhbHVlcyhuZXdMYXllci52aXN1YWxDaGFubmVscykuZm9yRWFjaCgoe2ZpZWxkLCBzY2FsZSwga2V5fSkgPT4ge1xuICAgIGxldCBmb3VuZEZpZWxkO1xuICAgIGNvbnN0IGNvbG9yRmllbGRQcm9wcyA9IHt9O1xuICAgIGlmIChzYXZlZExheWVyLmNvbmZpZykge1xuICAgICAgaWYgKHNhdmVkTGF5ZXIuY29uZmlnW2ZpZWxkXSkge1xuICAgICAgICBmb3VuZEZpZWxkID0gZmllbGRzLmZpbmQoXG4gICAgICAgICAgZmQgPT4gc2F2ZWRMYXllci5jb25maWcgJiYgZmQubmFtZSA9PT0gc2F2ZWRMYXllci5jb25maWdbZmllbGRdLm5hbWVcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNhdmVkTGF5ZXIuY29uZmlnW2ZpZWxkXT8uY29sb3JDb2x1bW4pIHtcbiAgICAgICAgY29uc3QgY29sb3JDb2x1bW5GaWVsZCA9IGZpZWxkcy5maW5kKFxuICAgICAgICAgIGZkID0+IHNhdmVkTGF5ZXIuY29uZmlnICYmIGZkLm5hbWUgPT09IHNhdmVkTGF5ZXIuY29uZmlnW2ZpZWxkXS5jb2xvckNvbHVtblxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChjb2xvckNvbHVtbkZpZWxkKSB7XG4gICAgICAgICAgY29sb3JGaWVsZFByb3BzLmNvbG9yQ29sdW1uID0gY29sb3JDb2x1bW5GaWVsZC5uYW1lO1xuICAgICAgICAgIGNvbG9yRmllbGRQcm9wcy5jb2xvckNvbHVtbklkeCA9IGNvbG9yQ29sdW1uRmllbGQuZmllbGRJZHg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgZm91bmRDaGFubmVsID0ge1xuICAgICAgICAuLi4oZm91bmRGaWVsZCA/IHtbZmllbGRdOiB7Li4uZm91bmRGaWVsZCwgLi4uY29sb3JGaWVsZFByb3BzfX0gOiB7fSksXG4gICAgICAgIC4uLihzYXZlZExheWVyLmNvbmZpZ1tzY2FsZV0gPyB7W3NjYWxlXTogc2F2ZWRMYXllci5jb25maWdbc2NhbGVdfSA6IHt9KVxuICAgICAgfTtcbiAgICAgIGlmIChPYmplY3Qua2V5cyhmb3VuZENoYW5uZWwpLmxlbmd0aCkge1xuICAgICAgICBuZXdMYXllci51cGRhdGVMYXllckNvbmZpZyhmb3VuZENoYW5uZWwpO1xuICAgICAgfVxuXG4gICAgICBuZXdMYXllci52YWxpZGF0ZVZpc3VhbENoYW5uZWwoa2V5KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbmV3TGF5ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUxheWVyc0J5RGF0YXNldHMoZGF0YXNldHMsIGxheWVyQ2xhc3NlcywgbGF5ZXJzKSB7XG4gIGNvbnN0IHZhbGlkYXRlZCA9IFtdO1xuICBjb25zdCBmYWlsZWQgPSBbXTtcblxuICBsYXllcnMuZm9yRWFjaChsYXllciA9PiB7XG4gICAgbGV0IHZhbGlkYXRlTGF5ZXI7XG4gICAgaWYgKCFsYXllciB8fCAhbGF5ZXIuY29uZmlnKSB7XG4gICAgICB2YWxpZGF0ZUxheWVyID0gbnVsbDtcbiAgICB9IGVsc2UgaWYgKGRhdGFzZXRzW2xheWVyLmNvbmZpZy5kYXRhSWRdKSB7XG4gICAgICAvLyBkYXRhc2V0cyBhcmUgYWxyZWFkeSBsb2FkZWRcbiAgICAgIHZhbGlkYXRlTGF5ZXIgPSB2YWxpZGF0ZUxheWVyV2l0aERhdGEoZGF0YXNldHNbbGF5ZXIuY29uZmlnLmRhdGFJZF0sIGxheWVyLCBsYXllckNsYXNzZXMpO1xuICAgIH1cblxuICAgIGlmICh2YWxpZGF0ZUxheWVyKSB7XG4gICAgICB2YWxpZGF0ZWQucHVzaCh2YWxpZGF0ZUxheWVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZGF0YXNldHMgbm90IHlldCBsb2FkZWRcbiAgICAgIGZhaWxlZC5wdXNoKGxheWVyKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB7dmFsaWRhdGVkLCBmYWlsZWR9O1xufVxuLyoqXG4gKiBWYWxpZGF0ZSBzYXZlZCBsYXllciBjb25maWcgd2l0aCBuZXcgZGF0YSxcbiAqIHVwZGF0ZSBmaWVsZElkeCBiYXNlZCBvbiBuZXcgZmllbGRzXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi92aXMtc3RhdGUtbWVyZ2VyJykudmFsaWRhdGVMYXllcldpdGhEYXRhfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVMYXllcldpdGhEYXRhKFxuICB7ZmllbGRzLCBpZDogZGF0YUlkfSxcbiAgc2F2ZWRMYXllcixcbiAgbGF5ZXJDbGFzc2VzLFxuICBvcHRpb25zID0ge31cbikge1xuICBjb25zdCB7dHlwZX0gPSBzYXZlZExheWVyO1xuICAvLyBsYXllciBkb2VzbnQgaGF2ZSBhIHZhbGlkIHR5cGVcbiAgaWYgKCF0eXBlIHx8ICFsYXllckNsYXNzZXMuaGFzT3duUHJvcGVydHkodHlwZSkgfHwgIXNhdmVkTGF5ZXIuY29uZmlnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBsZXQgbmV3TGF5ZXIgPSBuZXcgbGF5ZXJDbGFzc2VzW3R5cGVdKHtcbiAgICBpZDogc2F2ZWRMYXllci5pZCxcbiAgICBkYXRhSWQsXG4gICAgbGFiZWw6IHNhdmVkTGF5ZXIuY29uZmlnLmxhYmVsLFxuICAgIGNvbG9yOiBzYXZlZExheWVyLmNvbmZpZy5jb2xvcixcbiAgICBpc1Zpc2libGU6IHNhdmVkTGF5ZXIuY29uZmlnLmlzVmlzaWJsZSxcbiAgICBoaWRkZW46IHNhdmVkTGF5ZXIuY29uZmlnLmhpZGRlbixcbiAgICBoaWdobGlnaHRDb2xvcjogc2F2ZWRMYXllci5jb25maWcuaGlnaGxpZ2h0Q29sb3IsXG4gICAgdmlzaWJpbGl0eUJ5Wm9vbTogc2F2ZWRMYXllci5jb25maWcudmlzaWJpbGl0eUJ5Wm9vbVxuICB9KTtcblxuICAvLyBmaW5kIGNvbHVtbiBmaWVsZElkeFxuICBjb25zdCBjb2x1bW5Db25maWcgPSBuZXdMYXllci5nZXRMYXllckNvbHVtbnMoKTtcbiAgaWYgKE9iamVjdC5rZXlzKGNvbHVtbkNvbmZpZykubGVuZ3RoKSB7XG4gICAgY29uc3QgY29sdW1ucyA9IHZhbGlkYXRlU2F2ZWRMYXllckNvbHVtbnMoZmllbGRzLCBzYXZlZExheWVyLmNvbmZpZy5jb2x1bW5zLCBjb2x1bW5Db25maWcpO1xuICAgIGlmIChjb2x1bW5zKSB7XG4gICAgICBuZXdMYXllci51cGRhdGVMYXllckNvbmZpZyh7Y29sdW1uc30pO1xuICAgIH0gZWxzZSBpZiAoIW9wdGlvbnMuYWxsb3dFbXB0eUNvbHVtbikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLy8gdmlzdWFsIGNoYW5uZWwgZmllbGQgaXMgc2F2ZWQgdG8gYmUge25hbWUsIHR5cGV9XG4gIC8vIGZpbmQgdmlzdWFsIGNoYW5uZWwgZmllbGQgYnkgbWF0Y2hpbmcgYm90aCBuYW1lIGFuZCB0eXBlXG4gIC8vIHJlZmVyIHRvIHZpcy1zdGF0ZS1zY2hlbWEuanMgVmlzdWFsQ2hhbm5lbFNjaGVtYVYxXG4gIG5ld0xheWVyID0gdmFsaWRhdGVTYXZlZFZpc3VhbENoYW5uZWxzKGZpZWxkcywgbmV3TGF5ZXIsIHNhdmVkTGF5ZXIpO1xuXG4gIGNvbnN0IHRleHRMYWJlbCA9XG4gICAgc2F2ZWRMYXllci5jb25maWcudGV4dExhYmVsICYmIG5ld0xheWVyLmNvbmZpZy50ZXh0TGFiZWxcbiAgICAgID8gdmFsaWRhdGVTYXZlZFRleHRMYWJlbChmaWVsZHMsIG5ld0xheWVyLmNvbmZpZy50ZXh0TGFiZWwsIHNhdmVkTGF5ZXIuY29uZmlnLnRleHRMYWJlbClcbiAgICAgIDogbmV3TGF5ZXIuY29uZmlnLnRleHRMYWJlbDtcblxuICAvLyBjb3B5IHZpc0NvbmZpZyBvdmVyIHRvIGVtcHR5TGF5ZXIgdG8gbWFrZSBzdXJlIGl0IGhhcyBhbGwgdGhlIHByb3BzXG4gIGNvbnN0IHZpc0NvbmZpZyA9IG5ld0xheWVyLmNvcHlMYXllckNvbmZpZyhcbiAgICBuZXdMYXllci5jb25maWcudmlzQ29uZmlnLFxuICAgIHNhdmVkTGF5ZXIuY29uZmlnLnZpc0NvbmZpZyB8fCB7fSxcbiAgICB7c2hhbGxvd0NvcHk6IFsnY29sb3JSYW5nZScsICdzdHJva2VDb2xvclJhbmdlJ119XG4gICk7XG5cbiAgbmV3TGF5ZXIudXBkYXRlTGF5ZXJDb25maWcoe1xuICAgIHZpc0NvbmZpZyxcbiAgICB0ZXh0TGFiZWxcbiAgfSk7XG5cbiAgcmV0dXJuIG5ld0xheWVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZE1lcmdlcihtZXJnZXIpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KG1lcmdlcikgJiYgdHlwZW9mIG1lcmdlci5tZXJnZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgbWVyZ2VyLnByb3AgPT09ICdzdHJpbmcnO1xufVxuXG5leHBvcnQgY29uc3QgVklTX1NUQVRFX01FUkdFUlMgPSBbXG4gIHttZXJnZTogbWVyZ2VMYXllcnMsIHByb3A6ICdsYXllcnMnLCB0b01lcmdlUHJvcDogJ2xheWVyVG9CZU1lcmdlZCd9LFxuICB7bWVyZ2U6IG1lcmdlRmlsdGVycywgcHJvcDogJ2ZpbHRlcnMnLCB0b01lcmdlUHJvcDogJ2ZpbHRlclRvQmVNZXJnZWQnfSxcbiAge21lcmdlOiBtZXJnZUludGVyYWN0aW9ucywgcHJvcDogJ2ludGVyYWN0aW9uQ29uZmlnJywgdG9NZXJnZVByb3A6ICdpbnRlcmFjdGlvblRvQmVNZXJnZWQnfSxcbiAge21lcmdlOiBtZXJnZUxheWVyQmxlbmRpbmcsIHByb3A6ICdsYXllckJsZW5kaW5nJ30sXG4gIHttZXJnZTogbWVyZ2VTcGxpdE1hcHMsIHByb3A6ICdzcGxpdE1hcHMnLCB0b01lcmdlUHJvcDogJ3NwbGl0TWFwc1RvQmVNZXJnZWQnfSxcbiAge21lcmdlOiBtZXJnZUFuaW1hdGlvbkNvbmZpZywgcHJvcDogJ2FuaW1hdGlvbkNvbmZpZyd9XG5dO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFlBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUgs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
|