@kepler.gl/components 3.3.0-alpha.6 → 3.3.0-alpha.8
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/cjs/common/data-table/cell-size.js +40 -23
- package/dist/cjs/common/data-table/column-statistics-categoric.js +40 -0
- package/dist/cjs/common/data-table/column-statistics-components.js +65 -0
- package/dist/cjs/common/data-table/column-statistics-numeric.js +87 -0
- package/dist/cjs/common/data-table/column-statistics-time.js +69 -0
- package/dist/cjs/common/data-table/grid.js +2 -2
- package/dist/cjs/common/data-table/header-cell.js +123 -44
- package/dist/cjs/common/data-table/index.js +104 -31
- package/dist/cjs/common/file-uploader/file-upload.js +250 -40
- package/dist/cjs/common/histogram-plot.js +1 -1
- package/dist/cjs/common/icons/circle.js +54 -0
- package/dist/cjs/common/icons/{arrow-down-solid.js → draw-point.js} +21 -11
- package/dist/cjs/common/icons/index.js +22 -1
- package/dist/cjs/common/icons/line-string.js +60 -0
- package/dist/cjs/common/item-selector/item-selector.js +2 -2
- package/dist/cjs/common/portaled.js +3 -3
- package/dist/cjs/common/time-range-slider.js +2 -2
- package/dist/cjs/common/timeline-slider.js +2 -2
- package/dist/cjs/common/toolbar-item.js +24 -3
- package/dist/cjs/editor/editor.js +27 -9
- package/dist/cjs/editor/feature-action-panel.js +34 -12
- package/dist/cjs/editor/feature-properties-editor.js +215 -0
- package/dist/cjs/editor/filter-feature-badges.js +92 -0
- package/dist/cjs/filters/filter-panels/polygon-filter-panel.js +2 -2
- package/dist/cjs/filters/time-widget.js +2 -2
- package/dist/cjs/index.js +33 -1
- package/dist/cjs/kepler-gl.js +20 -3
- package/dist/cjs/map/layer-hover-info.js +2 -2
- package/dist/cjs/map/map-control-toolbar.js +2 -2
- package/dist/cjs/map/map-control.js +14 -8
- package/dist/cjs/map/map-draw-panel.js +74 -15
- package/dist/cjs/map/theme-toggle-button.js +64 -0
- package/dist/cjs/map-container.js +17 -6
- package/dist/cjs/map-view-state-context.js +3 -3
- package/dist/cjs/modal-container.js +3 -2
- package/dist/cjs/modals/cloud-components/cloud-item.js +55 -7
- package/dist/cjs/modals/cloud-components/cloud-item.spec.js +75 -3
- package/dist/cjs/modals/cloud-components/cloud-maps.js +2 -1
- package/dist/cjs/modals/cloud-components/cloud-storage-disclaimer.js +24 -0
- package/dist/cjs/modals/cloud-tile.js +82 -39
- package/dist/cjs/modals/data-table-modal.js +37 -25
- package/dist/cjs/modals/export-video-modal.js +28 -1
- package/dist/cjs/modals/export-video-modal.spec.js +56 -10
- package/dist/cjs/modals/globe-export-video-container.js +19 -3
- package/dist/cjs/modals/globe-export-video-preview.js +25 -7
- package/dist/cjs/modals/hubble-utils.js +8 -3
- package/dist/cjs/modals/image-modal-container.js +2 -2
- package/dist/cjs/modals/load-data-modal.js +3 -3
- package/dist/cjs/modals/load-storage-map.js +9 -6
- package/dist/cjs/modals/save-map-modal.js +4 -3
- package/dist/cjs/modals/share-map-modal.js +5 -4
- package/dist/cjs/modals/swipe-composite-utils.js +9 -1
- package/dist/cjs/modals/swipe-composite-utils.spec.js +69 -0
- package/dist/cjs/modals/swipe-export-video-preview.js +9 -5
- package/dist/cjs/plot-container.js +12 -5
- package/dist/cjs/side-panel/common/dataset-info.js +2 -2
- package/dist/cjs/side-panel/filter-panel/filter-panel.js +2 -2
- package/dist/cjs/side-panel/layer-manager.js +11 -3
- package/dist/cjs/side-panel/layer-panel/custom-palette.js +2 -2
- package/dist/cjs/side-panel/layer-panel/dataset-layer-section.js +11 -3
- package/dist/cjs/side-panel/layer-panel/layer-configurator.js +74 -31
- package/dist/cjs/side-panel/map-style-panel/globe-config-panel.js +90 -25
- package/dist/common/data-table/column-statistics-categoric.d.ts +9 -0
- package/dist/common/data-table/column-statistics-components.d.ts +31 -0
- package/dist/common/data-table/column-statistics-numeric.d.ts +18 -0
- package/dist/common/data-table/column-statistics-time.d.ts +19 -0
- package/dist/common/data-table/header-cell.d.ts +7 -5
- package/dist/common/data-table/index.d.ts +7 -24
- package/dist/common/histogram-plot.d.ts +24 -1
- package/dist/common/icons/{arrow-down-solid.d.ts → circle.d.ts} +2 -1
- package/dist/common/icons/draw-point.d.ts +10 -0
- package/dist/common/icons/index.d.ts +3 -0
- package/dist/common/icons/line-string.d.ts +10 -0
- package/dist/common/toolbar-item.d.ts +2 -0
- package/dist/editor/editor.d.ts +1 -0
- package/dist/editor/feature-action-panel.d.ts +1 -0
- package/dist/editor/feature-properties-editor.d.ts +8 -0
- package/dist/editor/filter-feature-badges.d.ts +12 -0
- package/dist/esm/common/data-table/cell-size.js +40 -23
- package/dist/esm/common/data-table/column-statistics-categoric.js +33 -0
- package/dist/esm/common/data-table/column-statistics-components.js +59 -0
- package/dist/esm/common/data-table/column-statistics-numeric.js +78 -0
- package/dist/esm/common/data-table/column-statistics-time.js +60 -0
- package/dist/esm/common/data-table/grid.js +2 -2
- package/dist/esm/common/data-table/header-cell.js +125 -46
- package/dist/esm/common/data-table/index.js +104 -31
- package/dist/esm/common/file-uploader/file-upload.js +251 -41
- package/dist/esm/common/histogram-plot.js +1 -1
- package/dist/esm/common/icons/circle.js +48 -0
- package/dist/esm/common/icons/draw-point.js +44 -0
- package/dist/esm/common/icons/index.js +4 -1
- package/dist/esm/common/icons/line-string.js +54 -0
- package/dist/esm/common/item-selector/item-selector.js +2 -2
- package/dist/esm/common/portaled.js +3 -3
- package/dist/esm/common/time-range-slider.js +2 -2
- package/dist/esm/common/timeline-slider.js +2 -2
- package/dist/esm/common/toolbar-item.js +24 -3
- package/dist/esm/editor/editor.js +27 -9
- package/dist/esm/editor/feature-action-panel.js +37 -15
- package/dist/esm/editor/feature-properties-editor.js +208 -0
- package/dist/esm/editor/filter-feature-badges.js +85 -0
- package/dist/esm/filters/filter-panels/polygon-filter-panel.js +2 -2
- package/dist/esm/filters/time-widget.js +2 -2
- package/dist/esm/index.js +5 -1
- package/dist/esm/kepler-gl.js +20 -3
- package/dist/esm/map/layer-hover-info.js +2 -2
- package/dist/esm/map/map-control-toolbar.js +2 -2
- package/dist/esm/map/map-control.js +14 -8
- package/dist/esm/map/map-draw-panel.js +72 -11
- package/dist/esm/map/theme-toggle-button.js +55 -0
- package/dist/esm/map-container.js +17 -6
- package/dist/esm/map-view-state-context.js +3 -3
- package/dist/esm/modal-container.js +3 -2
- package/dist/esm/modals/cloud-components/cloud-item.js +53 -7
- package/dist/esm/modals/cloud-components/cloud-item.spec.js +76 -4
- package/dist/esm/modals/cloud-components/cloud-maps.js +2 -1
- package/dist/esm/modals/cloud-components/cloud-storage-disclaimer.js +19 -0
- package/dist/esm/modals/cloud-tile.js +82 -39
- package/dist/esm/modals/data-table-modal.js +38 -26
- package/dist/esm/modals/export-video-modal.js +29 -2
- package/dist/esm/modals/export-video-modal.spec.js +56 -10
- package/dist/esm/modals/globe-export-video-container.js +20 -4
- package/dist/esm/modals/globe-export-video-preview.js +26 -8
- package/dist/esm/modals/hubble-utils.js +8 -3
- package/dist/esm/modals/image-modal-container.js +2 -2
- package/dist/esm/modals/load-data-modal.js +3 -3
- package/dist/esm/modals/load-storage-map.js +8 -3
- package/dist/esm/modals/save-map-modal.js +4 -3
- package/dist/esm/modals/share-map-modal.js +5 -4
- package/dist/esm/modals/swipe-composite-utils.js +9 -1
- package/dist/esm/modals/swipe-composite-utils.spec.js +67 -0
- package/dist/esm/modals/swipe-export-video-preview.js +8 -4
- package/dist/esm/plot-container.js +12 -5
- package/dist/esm/side-panel/common/dataset-info.js +2 -2
- package/dist/esm/side-panel/filter-panel/filter-panel.js +2 -2
- package/dist/esm/side-panel/layer-manager.js +11 -3
- package/dist/esm/side-panel/layer-panel/custom-palette.js +2 -2
- package/dist/esm/side-panel/layer-panel/dataset-layer-section.js +11 -3
- package/dist/esm/side-panel/layer-panel/layer-configurator.js +74 -31
- package/dist/esm/side-panel/map-style-panel/globe-config-panel.js +90 -25
- package/dist/index.d.ts +8 -0
- package/dist/kepler-gl.d.ts +3 -0
- package/dist/map/map-control.d.ts +6 -2
- package/dist/map/map-draw-panel.d.ts +1 -0
- package/dist/map/theme-toggle-button.d.ts +18 -0
- package/dist/map-container.d.ts +1 -0
- package/dist/modals/cloud-components/cloud-item.d.ts +2 -1
- package/dist/modals/cloud-components/cloud-storage-disclaimer.d.ts +2 -0
- package/dist/modals/data-table-modal.d.ts +1 -0
- package/dist/modals/globe-export-video-container.d.ts +2 -0
- package/dist/modals/globe-export-video-preview.d.ts +3 -0
- package/dist/modals/hubble-utils.d.ts +2 -1
- package/dist/modals/swipe-composite-utils.d.ts +1 -1
- package/dist/modals/swipe-composite-utils.spec.d.ts +1 -0
- package/package.json +20 -21
- package/dist/cjs/modals/cloud-components/provider-loading.js +0 -20
- package/dist/cjs/modals/storage-map-viewer.js +0 -98
- package/dist/cjs/side-panel/cloud-storage-dropdown.js +0 -40
- package/dist/esm/common/icons/arrow-down-solid.js +0 -34
- package/dist/esm/modals/cloud-components/provider-loading.js +0 -15
- package/dist/esm/modals/storage-map-viewer.js +0 -93
- package/dist/esm/side-panel/cloud-storage-dropdown.js +0 -33
- package/dist/modals/cloud-components/provider-loading.d.ts +0 -2
- package/dist/modals/storage-map-viewer.d.ts +0 -21
- package/dist/side-panel/cloud-storage-dropdown.d.ts +0 -6
package/dist/cjs/kepler-gl.js
CHANGED
|
@@ -122,6 +122,7 @@ var mapFieldsSelector = exports.mapFieldsSelector = function mapFieldsSelector(p
|
|
|
122
122
|
mapControls: props.uiState.mapControls,
|
|
123
123
|
readOnly: props.uiState.readOnly,
|
|
124
124
|
locale: props.uiState.locale,
|
|
125
|
+
uiTheme: props.uiState.theme,
|
|
125
126
|
isLoadingIndicatorVisible: Number(props.visState.loadingIndicatorValue) > 0,
|
|
126
127
|
sidePanelWidth: props.sidePanelWidth ? props.sidePanelWidth : DEFAULT_KEPLER_GL_PROPS.width,
|
|
127
128
|
// mapStyle
|
|
@@ -411,8 +412,24 @@ function KeplerGlFactory(BottomWidget, GeoCoderPanel, MapContainer, MapsLayout,
|
|
|
411
412
|
(0, _defineProperty2["default"])(_this, "themeSelector", function (props) {
|
|
412
413
|
return props.theme;
|
|
413
414
|
});
|
|
414
|
-
(0, _defineProperty2["default"])(_this, "
|
|
415
|
-
|
|
415
|
+
(0, _defineProperty2["default"])(_this, "uiThemeSelector", function (props) {
|
|
416
|
+
var _props$uiState;
|
|
417
|
+
return (_props$uiState = props.uiState) === null || _props$uiState === void 0 ? void 0 : _props$uiState.theme;
|
|
418
|
+
});
|
|
419
|
+
(0, _defineProperty2["default"])(_this, "availableThemeSelector", (0, _reselect.createSelector)(_this.themeSelector, _this.uiThemeSelector, function (theme, uiTheme) {
|
|
420
|
+
// When theme toggle is enabled, uiState.theme drives light/dark switching.
|
|
421
|
+
var themeInput = (0, _utils.getApplicationConfig)().enableThemeToggle ? uiTheme || _constants.THEME.dark : theme;
|
|
422
|
+
if ((0, _typeof2["default"])(themeInput) === 'object' && themeInput !== null) {
|
|
423
|
+
return _objectSpread(_objectSpread({}, _styles.theme), themeInput);
|
|
424
|
+
}
|
|
425
|
+
if (themeInput === _constants.THEME.light) {
|
|
426
|
+
return _styles.themeLT;
|
|
427
|
+
}
|
|
428
|
+
if (themeInput === _constants.THEME.base) {
|
|
429
|
+
return _styles.themeBS;
|
|
430
|
+
}
|
|
431
|
+
// THEME.dark and unknown values fall back to the default dark theme
|
|
432
|
+
return _styles.theme;
|
|
416
433
|
}));
|
|
417
434
|
(0, _defineProperty2["default"])(_this, "datasetsSelector", function (props) {
|
|
418
435
|
return props.visState.datasets;
|
|
@@ -661,4 +678,4 @@ function mergeActions(actions, userActions) {
|
|
|
661
678
|
return _objectSpread(_objectSpread({}, actions), overrides);
|
|
662
679
|
}
|
|
663
680
|
var _default = exports["default"] = KeplerGlFactory;
|
|
664
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY29uc29sZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVkdXgiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9yZXNlbGVjdCIsIl9rZXBsZXJnbENvbm5lY3QiLCJfcmVhY3RJbnRsIiwiX2xvY2FsaXphdGlvbiIsIl9jb250ZXh0IiwiX2FjdGlvbnMiLCJfY29tbW9uVXRpbHMiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfY29uc3RhbnRzIiwiX3NpZGVQYW5lbCIsIl9tYXBDb250YWluZXIyIiwiX21hcHNMYXlvdXQiLCJfYm90dG9tV2lkZ2V0IiwiX21vZGFsQ29udGFpbmVyIiwiX3Bsb3RDb250YWluZXIiLCJfbm90aWZpY2F0aW9uUGFuZWwiLCJfZ2VvY29kZXJQYW5lbCIsIl9lZmZlY3RNYW5hZ2VyIiwiX2RuZENvbnRleHQiLCJfdXNlQ2xvdWRMaXN0UHJvdmlkZXIiLCJfdXRpbHMiLCJfc3R5bGVzIiwiX3RlbXBsYXRlT2JqZWN0IiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiX3R5cGVvZjMiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiYXBwbHkiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJBcnJheSIsImlzQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJsZW5ndGgiLCJfbiIsIkYiLCJzIiwiZG9uZSIsInZhbHVlIiwiVHlwZUVycm9yIiwiYSIsInUiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwibmFtZSIsImZyb20iLCJ0ZXN0Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiR2xvYmFsU3R5bGUiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJmb250RmFtaWx5IiwiZm9udFdlaWdodCIsImZvbnRTaXplIiwibGluZUhlaWdodCIsImxhYmVsQ29sb3IiLCJCb3R0b21XaWRnZXRPdXRlciIsIl9yZWYiLCJhYnNvbHV0ZSIsImNvbmNhdCIsImlzVmlld3BvcnREaXNqb2ludGVkIiwiZXhwb3J0cyIsIm1hcFN0YXRlIiwiaXNTcGxpdCIsImlzVmlld3BvcnRTeW5jZWQiLCJzcGxpdE1hcFZpZXdwb3J0cyIsIm1hcFN0YXRlU2VsZWN0b3IiLCJjcmVhdGVTZWxlY3RvciIsIl8iLCJpbmRleCIsIk51bWJlciIsImlzRmluaXRlIiwibWFwRmllbGRzU2VsZWN0b3IiLCJ1bmRlZmluZWQiLCJhdHRyaWJ1dGlvbiIsImF0dHJpYnV0aW9uU2VsZWN0b3IiLCJnZXRNYXBib3hSZWYiLCJtYXBib3hBcGlBY2Nlc3NUb2tlbiIsIm1hcGJveEFwaVVybCIsIkRFRkFVTFRfS0VQTEVSX0dMX1BST1BTIiwiZGF0YXNldEF0dHJpYnV0aW9ucyIsInNvdXJjZXMiLCJhdHRyaWJ1dGlvbkxvZ29zIiwibG9nb3MiLCJtYXBTdHlsZSIsIm9uRGVja0luaXRpYWxpemVkIiwib25WaWV3U3RhdGVDaGFuZ2UiLCJvbk1vdXNlTW92ZSIsImRlY2tHbFByb3BzIiwidWlTdGF0ZUFjdGlvbnMiLCJ2aXNTdGF0ZUFjdGlvbnMiLCJtYXBTdGF0ZUFjdGlvbnMiLCJ2aXNTdGF0ZSIsImFjdGl2ZVNpZGVQYW5lbCIsInVpU3RhdGUiLCJtYXBDb250cm9scyIsInJlYWRPbmx5IiwibG9jYWxlIiwiaXNMb2FkaW5nSW5kaWNhdG9yVmlzaWJsZSIsImxvYWRpbmdJbmRpY2F0b3JWYWx1ZSIsInNpZGVQYW5lbFdpZHRoIiwid2lkdGgiLCJ0b3BNYXBDb250YWluZXJQcm9wcyIsImJvdHRvbU1hcENvbnRhaW5lclByb3BzIiwidHJhbnNmb3JtUmVxdWVzdCIsIlJUTFRleHRQbHVnaW4iLCJnZXRWaXNpYmxlRGF0YXNldHMiLCJkYXRhc2V0cyIsImZpbHRlck9iamVjdEJ5UHJlZGljYXRlIiwia2V5IiwiR0VPQ09ERVJfREFUQVNFVF9OQU1FIiwic2lkZVBhbmVsU2VsZWN0b3IiLCJhdmFpbGFibGVQcm92aWRlcnMiLCJmaWx0ZXJlZERhdGFzZXRzIiwiYXBwTmFtZSIsInZlcnNpb24iLCJhcHBXZWJzaXRlIiwib25TYXZlTWFwIiwibWFwU3R5bGVBY3Rpb25zIiwiZmlsdGVycyIsImxheWVycyIsImxheWVyT3JkZXIiLCJsYXllckNsYXNzZXMiLCJpbnRlcmFjdGlvbkNvbmZpZyIsIm1hcEluZm8iLCJsYXllckJsZW5kaW5nIiwib3ZlcmxheUJsZW5kaW5nIiwibWFwU2F2ZWQiLCJwcm92aWRlclN0YXRlIiwicGxvdENvbnRhaW5lclNlbGVjdG9yIiwiaGVpZ2h0IiwicmF0aW8iLCJleHBvcnRJbWFnZSIsInJlc29sdXRpb24iLCJsZWdlbmQiLCJjZW50ZXIiLCJpbWFnZVNpemUiLCJlc2NhcGVYaHRtbEZvcldlYnBhY2siLCJtYXBGaWVsZHMiLCJhZGROb3RpZmljYXRpb24iLCJzZXRFeHBvcnRJbWFnZVNldHRpbmciLCJzZXRFeHBvcnRJbWFnZURhdGFVcmkiLCJzZXRFeHBvcnRJbWFnZUVycm9yIiwic3BsaXRNYXBzIiwiaXNTcGxpdFNlbGVjdG9yIiwiYm90dG9tV2lkZ2V0U2VsZWN0b3IiLCJhbmltYXRpb25Db25maWciLCJ0b2dnbGVNb2RhbCIsInNpZGVQYW5lbCIsIm1hcmdpbiIsImxlZnQiLCJtb2RhbENvbnRhaW5lclNlbGVjdG9yIiwicm9vdE5vZGUiLCJwcm92aWRlckFjdGlvbnMiLCJjbG91ZFByb3ZpZGVycyIsIm9uRXhwb3J0VG9DbG91ZFN1Y2Nlc3MiLCJvbkxvYWRDbG91ZE1hcFN1Y2Nlc3MiLCJvbkxvYWRDbG91ZE1hcEVycm9yIiwib25FeHBvcnRUb0Nsb3VkRXJyb3IiLCJnZW9Db2RlclBhbmVsU2VsZWN0b3IiLCJkaW1lbnNpb25zIiwiX3Byb3BzJHZpc1N0YXRlJGludGVyIiwiX3Byb3BzJHZpc1N0YXRlJGludGVyMiIsImlzR2VvY29kZXJFbmFibGVkIiwiZ2VvY29kZXIiLCJlbmFibGVkIiwidXBkYXRlVmlzRGF0YSIsInJlbW92ZURhdGFzZXQiLCJ1cGRhdGVNYXAiLCJhcHBXaWR0aCIsImxpbWl0U2VhcmNoIiwiY29uZmlnIiwiZGF0YXNldEF0dHJpYnV0aW9uU2VsZWN0b3IiLCJzdGF0ZSIsInVuaXF1ZUF0dHJpYnV0aW9ucyIsIl9kcyRtZXRhZGF0YSIsImRzIiwiYXR0cmlidXRpb25zIiwibWV0YWRhdGEiLCJsaW5rcyIsIm1hdGNoIiwibGluayIsIl9saW5rJG1hdGNoIiwiX2xpbmskbWF0Y2gyIiwiaHJlZiIsInRpdGxlIiwiaW5kZXhPZiIsInVybCIsImVycm9yIiwibGF5ZXJBdHRyaWJ1dGlvbktleVNlbGVjdG9yIiwiX3N0YXRlJHZpc1N0YXRlIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJfbGF5ZXIkY29uZmlnIiwiX2xheWVyJG1ldGEiLCJsYXllciIsImlzVmlzaWJsZSIsIm1ldGEiLCJfYSRsb2dvVXJsIiwibG9nb1VybCIsImVyciIsImxheWVyQXR0cmlidXRpb25TZWxlY3RvciIsIl9zdGF0ZSR2aXNTdGF0ZTIiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiX2xvb3AiLCJfbGF5ZXIkY29uZmlnMiIsIl9sYXllciRtZXRhMiIsImF0dHIiLCJmaW5kIiwibGF5ZXJBdHRyaWJ1dGlvbnMiLCJ1bmlxdWVUZXh0QXR0cmlidXRpb25zIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImxheWVyQXR0cmlidXRpb24iLCJub3RpZmljYXRpb25QYW5lbFNlbGVjdG9yIiwicmVtb3ZlTm90aWZpY2F0aW9uIiwibm90aWZpY2F0aW9ucyIsIm1hcFN0eWxlcyIsIm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0IiwiREVGQVVMVF9NQVBCT1hfQVBJX1VSTCIsIktFUExFUl9HTF9OQU1FIiwiS0VQTEVSX0dMX1ZFUlNJT04iLCJESU1FTlNJT05TIiwiZmVhdHVyZUZsYWdzIiwiS2VwbGVyR2xGYWN0b3J5IiwiZGVwcyIsIkJvdHRvbVdpZGdldEZhY3RvcnkiLCJHZW9Db2RlclBhbmVsRmFjdG9yeSIsIk1hcENvbnRhaW5lckZhY3RvcnkiLCJNYXBzTGF5b3V0RmFjdG9yeSIsIk1vZGFsQ29udGFpbmVyRmFjdG9yeSIsIlNpZGVQYW5lbEZhY3RvcnkiLCJQbG90Q29udGFpbmVyRmFjdG9yeSIsIk5vdGlmaWNhdGlvblBhbmVsRmFjdG9yeSIsIkRuZENvbnRleHRGYWN0b3J5IiwiRWZmZWN0TWFuYWdlckZhY3RvcnkiLCJCb3R0b21XaWRnZXQiLCJHZW9Db2RlclBhbmVsIiwiTWFwQ29udGFpbmVyIiwiTWFwc0xheW91dCIsIk1vZGFsQ29udGFpbmVyIiwiU2lkZVBhbmVsIiwiUGxvdENvbnRhaW5lciIsIk5vdGlmaWNhdGlvblBhbmVsIiwiRG5kQ29udGV4dCIsIktlcGxlckdMIiwiX0NvbXBvbmVudCIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9sZW4iLCJhcmdzIiwiX2tleSIsInNldFN0YXRlIiwiY3JlYXRlUmVmIiwidGhlbWVTZWxlY3RvciIsIl90eXBlb2YyIiwiYmFzaWNUaGVtZSIsIlRIRU1FIiwibGlnaHQiLCJ0aGVtZUxUIiwiYmFzZSIsInRoZW1lQlMiLCJkYXRhc2V0c1NlbGVjdG9yIiwicHJvdmlkZXJzIiwiaGFzU3RvcmFnZSIsInNvbWUiLCJwIiwiaGFzUHJpdmF0ZVN0b3JhZ2UiLCJoYXNTaGFyZSIsImhhc1NoYXJpbmdVcmwiLCJsb2NhbGVNZXNzYWdlcyIsImN1c3RvbU1lc3NhZ2VzIiwibWVyZ2VNZXNzYWdlcyIsIm1lc3NhZ2VzIiwiZGVmYXVsdFN0eWxlcyIsInZhbHVlcyIsImN1c3RvbVN0eWxlcyIsIm1hcCIsIm1zIiwiaWQiLCJnZW5lcmF0ZUhhc2hJZCIsImFsbFN0eWxlcyIsInJlZHVjZSIsImFjY3UiLCJzdHlsZSIsImxvYWRNYXBTdHlsZXMiLCJjb250YWluZXJJZCIsImxheWVySWQiLCJ0b2dnbGVMYXllckZvck1hcCIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwiY29tcG9uZW50RGlkTW91bnQiLCJfZ2V0QXBwbGljYXRpb25Db25maWciLCJnZXRBcHBsaWNhdGlvbkNvbmZpZyIsImJhc2VNYXBMaWJyYXJ5Q29uZmlnIiwibWFwTGliTmFtZSIsIl92YWxpZGF0ZU1hcGJveFRva2VuIiwiX2xvYWRNYXBTdHlsZSIsIm9uS2VwbGVyR2xJbml0aWFsaXplZCIsInJvb3QiLCJjdXJyZW50IiwiSFRNTEVsZW1lbnQiLCJvYnNlcnZlRGltZW5zaW9ucyIsIl9oYW5kbGVSZXNpemUiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInVub2JzZXJ2ZURpbWVuc2lvbnMiLCJ2YWxpZGF0ZVRva2VuIiwiQ29uc29sZSIsIndhcm4iLCJNSVNTSU5HX01BUEJPWF9UT0tFTiIsInJlbmRlciIsIl90aGlzMiIsIl90aGlzJHByb3BzIiwiX3RoaXMkcHJvcHMkaWQiLCJfdGhpcyRwcm9wcyR3aWR0aCIsIl90aGlzJHByb3BzJGhlaWdodCIsIl90aGlzJHByb3BzJGNsb3VkUHJvdiIsImF2YWlsYWJsZVRoZW1lU2VsZWN0b3IiLCJsb2NhbGVNZXNzYWdlc1NlbGVjdG9yIiwiaXNFeHBvcnRpbmdJbWFnZSIsImV4cG9ydGluZyIsImZpbHRlcmVkRGF0YXNldHNTZWxlY3RvciIsInNpZGVGaWVsZHMiLCJwbG90Q29udGFpbmVyRmllbGRzIiwiYm90dG9tV2lkZ2V0RmllbGRzIiwibW9kYWxDb250YWluZXJGaWVsZHMiLCJnZW9Db2RlclBhbmVsRmllbGRzIiwibm90aWZpY2F0aW9uUGFuZWxGaWVsZHMiLCJtYXBDb250YWluZXJzIiwiY3JlYXRlRWxlbWVudCIsIl9leHRlbmRzMiIsInByaW1hcnkiLCJkZWxldGVNYXBMYWJlbHMiLCJfZGVsZXRlTWFwTGFiZWxzIiwic2V0dGluZ3MiLCJSb290Q29udGV4dCIsIlByb3ZpZGVyIiwiRmVhdHVyZUZsYWdzQ29udGV4dFByb3ZpZGVyIiwiSW50bFByb3ZpZGVyIiwiU3R5bGVTaGVldE1hbmFnZXIiLCJzaG91bGRGb3J3YXJkUHJvcCIsIlRoZW1lUHJvdmlkZXIiLCJDbG91ZExpc3RQcm92aWRlciIsImNsYXNzTmFtZSIsImRpc3BsYXkiLCJmbGV4RGlyZWN0aW9uIiwicG9zaXRpb24iLCJyZWYiLCJvblNldFN3aXBlQ29tcGFyZVBlcmNlbnRhZ2UiLCJzZXRTd2lwZUNvbXBhcmVQZXJjZW50YWdlIiwidW5zeW5jZWRWaWV3cG9ydHMiLCJfbWFwQ29udGFpbmVyIiwiaGFzUG9ydGFibGVXaWR0aCIsImJyZWFrUG9pbnRWYWx1ZXMiLCJyb290UmVmIiwiYm90dG9tV2lkZ2V0UmVmIiwiY29udGFpbmVyVyIsImNvbnRhaW5lckgiLCJDb21wb25lbnQiLCJrZXBsZXJHbENvbm5lY3QiLCJtYXBTdGF0ZVRvUHJvcHMiLCJtYWtlTWFwRGlzcGF0Y2hUb1Byb3BzIiwid2l0aFRoZW1lIiwiZGVmYXVsdFVzZXJBY3Rpb25zIiwiZ2V0RGlzcGF0Y2giLCJkaXNwYXRjaCIsImdldFVzZXJBY3Rpb25zIiwiYWN0aW9ucyIsIm1ha2VHZXRBY3Rpb25DcmVhdG9ycyIsInVzZXJBY3Rpb25zIiwiX21hcCIsIlZpc1N0YXRlQWN0aW9ucyIsIk1hcFN0YXRlQWN0aW9ucyIsIk1hcFN0eWxlQWN0aW9ucyIsIlVJU3RhdGVBY3Rpb25zIiwiUHJvdmlkZXJBY3Rpb25zIiwiYmluZEFjdGlvbkNyZWF0b3JzIiwibWVyZ2VBY3Rpb25zIiwiX21hcDIiLCJfc2xpY2VkVG9BcnJheTIiLCJnZXRBY3Rpb25DcmVhdG9ycyIsIm1hcERpc3BhdGNoVG9Qcm9wcyIsIm93blByb3BzIiwiZ3JvdXBlZEFjdGlvbkNyZWF0b3JzIiwib3ZlcnJpZGVzIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMva2VwbGVyLWdsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIGNyZWF0ZVJlZiwgRGlzcGF0Y2h9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBDb25zb2xlIGZyb20gJ2dsb2JhbC9jb25zb2xlJztcbmltcG9ydCB7YmluZEFjdGlvbkNyZWF0b3JzfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgc3R5bGVkLCB7d2l0aFRoZW1lLCBTdHlsZVNoZWV0TWFuYWdlciwgVGhlbWVQcm92aWRlcn0gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtjcmVhdGVTZWxlY3Rvcn0gZnJvbSAncmVzZWxlY3QnO1xuaW1wb3J0IHtjb25uZWN0IGFzIGtlcGxlckdsQ29ubmVjdH0gZnJvbSAnLi9jb25uZWN0L2tlcGxlcmdsLWNvbm5lY3QnO1xuaW1wb3J0IHtJbnRsUHJvdmlkZXJ9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHttZXNzYWdlc30gZnJvbSAnQGtlcGxlci5nbC9sb2NhbGl6YXRpb24nO1xuaW1wb3J0IHtSb290Q29udGV4dCwgRmVhdHVyZUZsYWdzQ29udGV4dFByb3ZpZGVyLCBGZWF0dXJlRmxhZ3N9IGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQge1xuICBBdHRyaWJ1dGlvbldpdGhTdHlsZSxcbiAgRGF0YXNldEF0dHJpYnV0aW9uLFxuICBPbkVycm9yQ2FsbEJhY2ssXG4gIE9uU3VjY2Vzc0NhbGxCYWNrLFxuICBWaWV3cG9ydCxcbiAgTWFwU3RhdGVcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmltcG9ydCB7XG4gIE1hcFN0YXRlQWN0aW9ucyxcbiAgTWFwU3R5bGVBY3Rpb25zLFxuICBQcm92aWRlckFjdGlvbnMsXG4gIFVJU3RhdGVBY3Rpb25zLFxuICBWaXNTdGF0ZUFjdGlvbnNcbn0gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcblxuaW1wb3J0IHtnZW5lcmF0ZUhhc2hJZH0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuXG5pbXBvcnQge3Nob3VsZEZvcndhcmRQcm9wfSBmcm9tICcuL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5cbnR5cGUgS2VwbGVyR2xBY3Rpb25zID0ge1xuICB2aXNTdGF0ZUFjdGlvbnM6IHR5cGVvZiBWaXNTdGF0ZUFjdGlvbnM7XG4gIG1hcFN0YXRlQWN0aW9uczogdHlwZW9mIE1hcFN0YXRlQWN0aW9ucztcbiAgbWFwU3R5bGVBY3Rpb25zOiB0eXBlb2YgTWFwU3R5bGVBY3Rpb25zO1xuICB1aVN0YXRlQWN0aW9uczogdHlwZW9mIFVJU3RhdGVBY3Rpb25zO1xuICBwcm92aWRlckFjdGlvbnM6IHR5cGVvZiBQcm92aWRlckFjdGlvbnM7XG59O1xuXG5pbXBvcnQge1xuICBESU1FTlNJT05TLFxuICBLRVBMRVJfR0xfTkFNRSxcbiAgS0VQTEVSX0dMX1ZFUlNJT04sXG4gIFRIRU1FLFxuICBERUZBVUxUX01BUEJPWF9BUElfVVJMLFxuICBHRU9DT0RFUl9EQVRBU0VUX05BTUUsXG4gIE1JU1NJTkdfTUFQQk9YX1RPS0VOXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuaW1wb3J0IFNpZGVQYW5lbEZhY3RvcnkgZnJvbSAnLi9zaWRlLXBhbmVsJztcbmltcG9ydCBNYXBDb250YWluZXJGYWN0b3J5IGZyb20gJy4vbWFwLWNvbnRhaW5lcic7XG5pbXBvcnQgTWFwc0xheW91dEZhY3RvcnkgZnJvbSAnLi9tYXBzLWxheW91dCc7XG5pbXBvcnQgQm90dG9tV2lkZ2V0RmFjdG9yeSBmcm9tICcuL2JvdHRvbS13aWRnZXQnO1xuaW1wb3J0IE1vZGFsQ29udGFpbmVyRmFjdG9yeSBmcm9tICcuL21vZGFsLWNvbnRhaW5lcic7XG5pbXBvcnQgUGxvdENvbnRhaW5lckZhY3RvcnkgZnJvbSAnLi9wbG90LWNvbnRhaW5lcic7XG5pbXBvcnQgTm90aWZpY2F0aW9uUGFuZWxGYWN0b3J5IGZyb20gJy4vbm90aWZpY2F0aW9uLXBhbmVsJztcbmltcG9ydCBHZW9Db2RlclBhbmVsRmFjdG9yeSBmcm9tICcuL2dlb2NvZGVyLXBhbmVsJztcbmltcG9ydCBFZmZlY3RNYW5hZ2VyRmFjdG9yeSBmcm9tICcuL2VmZmVjdHMvZWZmZWN0LW1hbmFnZXInO1xuaW1wb3J0IERuZENvbnRleHRGYWN0b3J5IGZyb20gJy4vZG5kLWNvbnRleHQnO1xuaW1wb3J0IHtDbG91ZExpc3RQcm92aWRlcn0gZnJvbSAnLi9ob29rcy91c2UtY2xvdWQtbGlzdC1wcm92aWRlcic7XG5cbmltcG9ydCB7XG4gIGZpbHRlck9iamVjdEJ5UHJlZGljYXRlLFxuICB2YWxpZGF0ZVRva2VuLFxuICBtZXJnZU1lc3NhZ2VzLFxuICBvYnNlcnZlRGltZW5zaW9ucyxcbiAgdW5vYnNlcnZlRGltZW5zaW9ucyxcbiAgaGFzUG9ydGFibGVXaWR0aCxcbiAgZ2V0QXBwbGljYXRpb25Db25maWdcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmltcG9ydCB7dGhlbWUgYXMgYmFzaWNUaGVtZSwgdGhlbWVMVCwgdGhlbWVCUywgYnJlYWtQb2ludFZhbHVlc30gZnJvbSAnQGtlcGxlci5nbC9zdHlsZXMnO1xuaW1wb3J0IHtLZXBsZXJHbFN0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3JlZHVjZXJzJztcbmltcG9ydCB7UHJvdmlkZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvY2xvdWQtcHJvdmlkZXJzJztcblxuLy8gTWF5YmUgd2Ugc2hvdWxkIHRoaW5rIGFib3V0IGV4cG9ydGluZyB0aGlzIG9yIGNyZWF0aW5nIGEgdmFyaWFibGVcbi8vIGFzIHBhcnQgb2YgdGhlIGJhc2UuanMgdGhlbWVcbmNvbnN0IEdsb2JhbFN0eWxlID0gc3R5bGVkLmRpdmBcbiAgZm9udC1mYW1pbHk6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZm9udEZhbWlseX07XG4gIGZvbnQtd2VpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmZvbnRXZWlnaHR9O1xuICBmb250LXNpemU6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZm9udFNpemV9O1xuICBsaW5lLWhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5saW5lSGVpZ2h0fTtcblxuICAqLFxuICAqOmJlZm9yZSxcbiAgKjphZnRlciB7XG4gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG5cbiAgdWwge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgbGkge1xuICAgIG1hcmdpbjogMDtcbiAgfVxuXG4gIGEge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYWJlbENvbG9yfTtcbiAgfVxuXG4gIDpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC5tYXBsaWJyZWdsLWN0cmwgLm1hcGxpYnJlZ2wtY3RybC1sb2dvIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLm1hcGJveGdsLWN0cmwgLm1hcGJveGdsLWN0cmwtbG9nbyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuYDtcblxudHlwZSBCb3R0b21XaWRnZXRPdXRlclByb3BzID0ge1xuICBhYnNvbHV0ZT86IGJvb2xlYW47XG59O1xuXG5jb25zdCBCb3R0b21XaWRnZXRPdXRlciA9IHN0eWxlZC5kaXY8Qm90dG9tV2lkZ2V0T3V0ZXJQcm9wcz4oXG4gICh7YWJzb2x1dGV9KSA9PiBgXG4gICR7YWJzb2x1dGUgPyAncG9zaXRpb246IGFic29sdXRlOyBib3R0b206IDA7IHJpZ2h0OiAwOycgOiAnJ31cbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7IC8qIHByZXZlbnQgcGFkZGluZyBmcm9tIGJsb2NraW5nIGlucHV0ICovXG4gICYgPiAqIHtcbiAgICAvKiBhbGwgY2hpbGRyZW4gc2hvdWxkIGFsbG93IGlucHV0ICovXG4gICAgcG9pbnRlci1ldmVudHM6IGFsbDtcbiAgfWBcbik7XG5cbmV4cG9ydCBjb25zdCBpc1ZpZXdwb3J0RGlzam9pbnRlZCA9IHByb3BzID0+IHtcbiAgcmV0dXJuIChcbiAgICBwcm9wcy5tYXBTdGF0ZS5pc1NwbGl0ICYmXG4gICAgIXByb3BzLm1hcFN0YXRlLmlzVmlld3BvcnRTeW5jZWQgJiZcbiAgICBwcm9wcy5tYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5sZW5ndGggPiAxXG4gICk7XG59O1xuXG50eXBlIE1hcFN0YXRlUHJvcHMgPSB7XG4gIG1hcFN0YXRlOiBNYXBTdGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBtYXBTdGF0ZVNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gIFsocHJvcHM6IE1hcFN0YXRlUHJvcHMpID0+IHByb3BzLm1hcFN0YXRlLCAoXzogTWFwU3RhdGVQcm9wcywgaW5kZXg/OiBudW1iZXIpID0+IGluZGV4XSxcbiAgKG1hcFN0YXRlOiBNYXBTdGF0ZSwgaW5kZXg/OiBudW1iZXIpOiBNYXBTdGF0ZSA9PiB7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoaW5kZXgpKSB7XG4gICAgICAvLyBlaXRoZXIgbm8gaW5kZXggYXJnIG9yIGFuIGludmFsaWQgaW5kZXggd2FzIHByb3ZpZGVkXG4gICAgICAvLyBpdCBpcyBleHBlY3RlZCB0byBiZSBlaXRoZXIgMCBvciAxIHdoZW4gaW4gc3BsaXQgbW9kZVxuICAgICAgLy8gb25seSB1c2UgdGhlIG1hcFN0YXRlXG4gICAgICByZXR1cm4gbWFwU3RhdGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzVmlld3BvcnREaXNqb2ludGVkKHttYXBTdGF0ZX0pXG4gICAgICA/IC8vIG1peCB0b2dldGhlciB0aGUgdmlld3BvcnQgcHJvcGVydGllcyBpbnRlbmRlZCBmb3IgdGhpcyBkaXNqb2ludGVkIDxNYXBDb250YWluZXI+IHdpdGggdGhlIG90aGVyIG5lY2Vzc2FyeSBtYXBTdGF0ZSBwcm9wZXJ0aWVzXG4gICAgICAgIHsuLi5tYXBTdGF0ZSwgLi4ubWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHNbaW5kZXggfHwgMF19XG4gICAgICA6IC8vIG90aGVyd2lzZSBvbmx5IHVzZSB0aGUgbWFwU3RhdGVcbiAgICAgICAgbWFwU3RhdGU7XG4gIH1cbik7XG5cbmV4cG9ydCBjb25zdCBtYXBGaWVsZHNTZWxlY3RvciA9IChwcm9wczogS2VwbGVyR0xQcm9wcywgaW5kZXggPSAwKSA9PiB7XG4gIGNvbnN0IGF0dHJpYnV0aW9uID0gYXR0cmlidXRpb25TZWxlY3Rvcihwcm9wcyk7XG4gIHJldHVybiB7XG4gICAgZ2V0TWFwYm94UmVmOiBwcm9wcy5nZXRNYXBib3hSZWYsXG4gICAgbWFwYm94QXBpQWNjZXNzVG9rZW46IHByb3BzLm1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgIG1hcGJveEFwaVVybDogcHJvcHMubWFwYm94QXBpVXJsID8gcHJvcHMubWFwYm94QXBpVXJsIDogREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMubWFwYm94QXBpVXJsLFxuICAgIG1hcFN0YXRlOiBtYXBTdGF0ZVNlbGVjdG9yKHByb3BzLCBpbmRleCksXG4gICAgZGF0YXNldEF0dHJpYnV0aW9uczogYXR0cmlidXRpb24uc291cmNlcyxcbiAgICBhdHRyaWJ1dGlvbkxvZ29zOiBhdHRyaWJ1dGlvbi5sb2dvcyxcbiAgICBtYXBTdHlsZTogcHJvcHMubWFwU3R5bGUsXG4gICAgb25EZWNrSW5pdGlhbGl6ZWQ6IHByb3BzLm9uRGVja0luaXRpYWxpemVkLFxuICAgIG9uVmlld1N0YXRlQ2hhbmdlOiBwcm9wcy5vblZpZXdTdGF0ZUNoYW5nZSxcbiAgICBvbk1vdXNlTW92ZTogcHJvcHMub25Nb3VzZU1vdmUsXG4gICAgZGVja0dsUHJvcHM6IHByb3BzLmRlY2tHbFByb3BzLFxuICAgIHVpU3RhdGVBY3Rpb25zOiBwcm9wcy51aVN0YXRlQWN0aW9ucyxcbiAgICB2aXNTdGF0ZUFjdGlvbnM6IHByb3BzLnZpc1N0YXRlQWN0aW9ucyxcbiAgICBtYXBTdGF0ZUFjdGlvbnM6IHByb3BzLm1hcFN0YXRlQWN0aW9ucyxcblxuICAgIC8vIHZpc1N0YXRlXG4gICAgdmlzU3RhdGU6IHByb3BzLnZpc1N0YXRlLFxuXG4gICAgLy8gdWlTdGF0ZVxuICAgIGFjdGl2ZVNpZGVQYW5lbDogcHJvcHMudWlTdGF0ZS5hY3RpdmVTaWRlUGFuZWwsXG4gICAgbWFwQ29udHJvbHM6IHByb3BzLnVpU3RhdGUubWFwQ29udHJvbHMsXG4gICAgcmVhZE9ubHk6IHByb3BzLnVpU3RhdGUucmVhZE9ubHksXG4gICAgbG9jYWxlOiBwcm9wcy51aVN0YXRlLmxvY2FsZSxcbiAgICBpc0xvYWRpbmdJbmRpY2F0b3JWaXNpYmxlOiBOdW1iZXIocHJvcHMudmlzU3RhdGUubG9hZGluZ0luZGljYXRvclZhbHVlKSA+IDAsXG4gICAgc2lkZVBhbmVsV2lkdGg6IHByb3BzLnNpZGVQYW5lbFdpZHRoID8gcHJvcHMuc2lkZVBhbmVsV2lkdGggOiBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy53aWR0aCxcblxuICAgIC8vIG1hcFN0eWxlXG4gICAgdG9wTWFwQ29udGFpbmVyUHJvcHM6IHByb3BzLnRvcE1hcENvbnRhaW5lclByb3BzLFxuICAgIGJvdHRvbU1hcENvbnRhaW5lclByb3BzOiBwcm9wcy5ib3R0b21NYXBDb250YWluZXJQcm9wcyxcblxuICAgIC8vIHRyYW5zZm9ybVJlcXVlc3QgZm9yIE1hcGJveCBiYXNlbWFwc1xuICAgIHRyYW5zZm9ybVJlcXVlc3Q6IHByb3BzLnRyYW5zZm9ybVJlcXVlc3QsXG5cbiAgICBSVExUZXh0UGx1Z2luOiBwcm9wcy5SVExUZXh0UGx1Z2luXG4gIH07XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmlzaWJsZURhdGFzZXRzKGRhdGFzZXRzKSB7XG4gIC8vIFdlIGRvbid0IHdhbnQgR2VvY29kZXIgZGF0YXNldCB0byBiZSBwcmVzZW50IGluIFNpZGVQYW5lbCBkYXRhc2V0IGxpc3RcbiAgcmV0dXJuIGZpbHRlck9iamVjdEJ5UHJlZGljYXRlKGRhdGFzZXRzLCBrZXkgPT4ga2V5ICE9PSBHRU9DT0RFUl9EQVRBU0VUX05BTUUpO1xufVxuXG5leHBvcnQgY29uc3Qgc2lkZVBhbmVsU2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMsIGF2YWlsYWJsZVByb3ZpZGVycywgZmlsdGVyZWREYXRhc2V0cykgPT4gKHtcbiAgYXBwTmFtZTogcHJvcHMuYXBwTmFtZSA/IHByb3BzLmFwcE5hbWUgOiBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy5hcHBOYW1lLFxuICB2ZXJzaW9uOiBwcm9wcy52ZXJzaW9uID8gcHJvcHMudmVyc2lvbiA6IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTLnZlcnNpb24sXG4gIGFwcFdlYnNpdGU6IHByb3BzLmFwcFdlYnNpdGUsXG4gIG1hcFN0eWxlOiBwcm9wcy5tYXBTdHlsZSxcbiAgbWFwU3RhdGU6IHByb3BzLm1hcFN0YXRlLFxuICBvblNhdmVNYXA6IHByb3BzLm9uU2F2ZU1hcCxcbiAgdWlTdGF0ZTogcHJvcHMudWlTdGF0ZSxcbiAgbWFwU3R5bGVBY3Rpb25zOiBwcm9wcy5tYXBTdHlsZUFjdGlvbnMsXG4gIHZpc1N0YXRlQWN0aW9uczogcHJvcHMudmlzU3RhdGVBY3Rpb25zLFxuICB1aVN0YXRlQWN0aW9uczogcHJvcHMudWlTdGF0ZUFjdGlvbnMsXG4gIG1hcFN0YXRlQWN0aW9uczogcHJvcHMubWFwU3RhdGVBY3Rpb25zLFxuXG4gIGRhdGFzZXRzOiBmaWx0ZXJlZERhdGFzZXRzLFxuICBmaWx0ZXJzOiBwcm9wcy52aXNTdGF0ZS5maWx0ZXJzLFxuICBsYXllcnM6IHByb3BzLnZpc1N0YXRlLmxheWVycyxcbiAgbGF5ZXJPcmRlcjogcHJvcHMudmlzU3RhdGUubGF5ZXJPcmRlcixcbiAgbGF5ZXJDbGFzc2VzOiBwcm9wcy52aXNTdGF0ZS5sYXllckNsYXNzZXMsXG4gIGludGVyYWN0aW9uQ29uZmlnOiBwcm9wcy52aXNTdGF0ZS5pbnRlcmFjdGlvbkNvbmZpZyxcbiAgbWFwSW5mbzogcHJvcHMudmlzU3RhdGUubWFwSW5mbyxcbiAgbGF5ZXJCbGVuZGluZzogcHJvcHMudmlzU3RhdGUubGF5ZXJCbGVuZGluZyxcbiAgb3ZlcmxheUJsZW5kaW5nOiBwcm9wcy52aXNTdGF0ZS5vdmVybGF5QmxlbmRpbmcsXG5cbiAgd2lkdGg6IHByb3BzLnNpZGVQYW5lbFdpZHRoID8gcHJvcHMuc2lkZVBhbmVsV2lkdGggOiBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy53aWR0aCxcbiAgYXZhaWxhYmxlUHJvdmlkZXJzLFxuICBtYXBTYXZlZDogcHJvcHMucHJvdmlkZXJTdGF0ZS5tYXBTYXZlZFxufSk7XG5cbmV4cG9ydCBjb25zdCBwbG90Q29udGFpbmVyU2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMpID0+ICh7XG4gIHdpZHRoOiBwcm9wcy53aWR0aCxcbiAgaGVpZ2h0OiBwcm9wcy5oZWlnaHQsXG4gIHJhdGlvOiBwcm9wcy51aVN0YXRlLmV4cG9ydEltYWdlLnJhdGlvLFxuICByZXNvbHV0aW9uOiBwcm9wcy51aVN0YXRlLmV4cG9ydEltYWdlLnJlc29sdXRpb24sXG4gIGxlZ2VuZDogcHJvcHMudWlTdGF0ZS5leHBvcnRJbWFnZS5sZWdlbmQsXG4gIGNlbnRlcjogcHJvcHMudWlTdGF0ZS5leHBvcnRJbWFnZS5jZW50ZXIsXG4gIGltYWdlU2l6ZTogcHJvcHMudWlTdGF0ZS5leHBvcnRJbWFnZS5pbWFnZVNpemUsXG4gIGVzY2FwZVhodG1sRm9yV2VicGFjazogcHJvcHMudWlTdGF0ZS5leHBvcnRJbWFnZS5lc2NhcGVYaHRtbEZvcldlYnBhY2ssXG5cbiAgbWFwRmllbGRzOiBtYXBGaWVsZHNTZWxlY3Rvcihwcm9wcyksXG4gIGFkZE5vdGlmaWNhdGlvbjogcHJvcHMudWlTdGF0ZUFjdGlvbnMuYWRkTm90aWZpY2F0aW9uLFxuICBzZXRFeHBvcnRJbWFnZVNldHRpbmc6IHByb3BzLnVpU3RhdGVBY3Rpb25zLnNldEV4cG9ydEltYWdlU2V0dGluZyxcbiAgc2V0RXhwb3J0SW1hZ2VEYXRhVXJpOiBwcm9wcy51aVN0YXRlQWN0aW9ucy5zZXRFeHBvcnRJbWFnZURhdGFVcmksXG4gIHNldEV4cG9ydEltYWdlRXJyb3I6IHByb3BzLnVpU3RhdGVBY3Rpb25zLnNldEV4cG9ydEltYWdlRXJyb3IsXG4gIHNwbGl0TWFwczogcHJvcHMudmlzU3RhdGUuc3BsaXRNYXBzXG59KTtcblxuZXhwb3J0IGNvbnN0IGlzU3BsaXRTZWxlY3RvciA9IChwcm9wczogS2VwbGVyR0xQcm9wcykgPT5cbiAgcHJvcHMudmlzU3RhdGUuc3BsaXRNYXBzICYmIHByb3BzLnZpc1N0YXRlLnNwbGl0TWFwcy5sZW5ndGggPiAxO1xuXG5leHBvcnQgY29uc3QgYm90dG9tV2lkZ2V0U2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMsIHRoZW1lKSA9PiAoe1xuICBmaWx0ZXJzOiBwcm9wcy52aXNTdGF0ZS5maWx0ZXJzLFxuICBkYXRhc2V0czogcHJvcHMudmlzU3RhdGUuZGF0YXNldHMsXG4gIHVpU3RhdGU6IHByb3BzLnVpU3RhdGUsXG4gIGxheWVyczogcHJvcHMudmlzU3RhdGUubGF5ZXJzLFxuICBhbmltYXRpb25Db25maWc6IHByb3BzLnZpc1N0YXRlLmFuaW1hdGlvbkNvbmZpZyxcbiAgdmlzU3RhdGVBY3Rpb25zOiBwcm9wcy52aXNTdGF0ZUFjdGlvbnMsXG4gIHRvZ2dsZU1vZGFsOiBwcm9wcy51aVN0YXRlQWN0aW9ucy50b2dnbGVNb2RhbCxcbiAgc2lkZVBhbmVsV2lkdGg6IHByb3BzLnVpU3RhdGUucmVhZE9ubHkgPyAwIDogcHJvcHMuc2lkZVBhbmVsV2lkdGggKyB0aGVtZS5zaWRlUGFuZWwubWFyZ2luLmxlZnRcbn0pO1xuXG5leHBvcnQgY29uc3QgbW9kYWxDb250YWluZXJTZWxlY3RvciA9IChwcm9wczogS2VwbGVyR0xQcm9wcywgcm9vdE5vZGUpID0+ICh7XG4gIGFwcE5hbWU6IHByb3BzLmFwcE5hbWUgPyBwcm9wcy5hcHBOYW1lIDogREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMuYXBwTmFtZSxcbiAgbWFwU3R5bGU6IHByb3BzLm1hcFN0eWxlLFxuICB2aXNTdGF0ZTogcHJvcHMudmlzU3RhdGUsXG4gIG1hcFN0YXRlOiBwcm9wcy5tYXBTdGF0ZSxcbiAgdWlTdGF0ZTogcHJvcHMudWlTdGF0ZSxcbiAgcHJvdmlkZXJTdGF0ZTogcHJvcHMucHJvdmlkZXJTdGF0ZSxcblxuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogcHJvcHMubWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gIG1hcGJveEFwaVVybDogcHJvcHMubWFwYm94QXBpVXJsLFxuICB2aXNTdGF0ZUFjdGlvbnM6IHByb3BzLnZpc1N0YXRlQWN0aW9ucyxcbiAgdWlTdGF0ZUFjdGlvbnM6IHByb3BzLnVpU3RhdGVBY3Rpb25zLFxuICBtYXBTdHlsZUFjdGlvbnM6IHByb3BzLm1hcFN0eWxlQWN0aW9ucyxcbiAgcHJvdmlkZXJBY3Rpb25zOiBwcm9wcy5wcm92aWRlckFjdGlvbnMsXG5cbiAgcm9vdE5vZGUsXG4gIC8vIFVzZXIgZGVmaW5lZCBjbG91ZCBwcm92aWRlciBwcm9wc1xuICBjbG91ZFByb3ZpZGVyczogcHJvcHMuY2xvdWRQcm92aWRlcnNcbiAgICA/IHByb3BzLmNsb3VkUHJvdmlkZXJzXG4gICAgOiBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy5jbG91ZFByb3ZpZGVycyxcbiAgb25FeHBvcnRUb0Nsb3VkU3VjY2VzczogcHJvcHMub25FeHBvcnRUb0Nsb3VkU3VjY2VzcyxcbiAgb25Mb2FkQ2xvdWRNYXBTdWNjZXNzOiBwcm9wcy5vbkxvYWRDbG91ZE1hcFN1Y2Nlc3MsXG4gIG9uTG9hZENsb3VkTWFwRXJyb3I6IHByb3BzLm9uTG9hZENsb3VkTWFwRXJyb3IsXG4gIG9uRXhwb3J0VG9DbG91ZEVycm9yOiBwcm9wcy5vbkV4cG9ydFRvQ2xvdWRFcnJvclxufSk7XG5cbmV4cG9ydCBjb25zdCBnZW9Db2RlclBhbmVsU2VsZWN0b3IgPSAoXG4gIHByb3BzOiBLZXBsZXJHTFByb3BzLFxuICBkaW1lbnNpb25zOiB7d2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXJ9XG4pID0+ICh7XG4gIGlzR2VvY29kZXJFbmFibGVkOiBwcm9wcy52aXNTdGF0ZS5pbnRlcmFjdGlvbkNvbmZpZy5nZW9jb2Rlci5lbmFibGVkLFxuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogcHJvcHMubWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gIG1hcFN0YXRlOiBwcm9wcy5tYXBTdGF0ZSxcbiAgdWlTdGF0ZTogcHJvcHMudWlTdGF0ZSxcbiAgbGF5ZXJPcmRlcjogcHJvcHMudmlzU3RhdGUubGF5ZXJPcmRlcixcbiAgdXBkYXRlVmlzRGF0YTogcHJvcHMudmlzU3RhdGVBY3Rpb25zLnVwZGF0ZVZpc0RhdGEsXG4gIHJlbW92ZURhdGFzZXQ6IHByb3BzLnZpc1N0YXRlQWN0aW9ucy5yZW1vdmVEYXRhc2V0LFxuICB1cGRhdGVNYXA6IHByb3BzLm1hcFN0YXRlQWN0aW9ucy51cGRhdGVNYXAsXG4gIGFwcFdpZHRoOiBkaW1lbnNpb25zLndpZHRoLFxuICBsaW1pdFNlYXJjaDogcHJvcHMudmlzU3RhdGUuaW50ZXJhY3Rpb25Db25maWcuZ2VvY29kZXIuY29uZmlnPy5saW1pdFNlYXJjaCA/PyBmYWxzZVxufSk7XG5cbi8qKlxuICogUmV0dXJucyBhcnJheSBvZiB1bmlxdWUgZGF0YXNldCBhdHRyaWJ1dGlvbnMsIGVhY2ggd2l0aCB0aXRsZSBhbmQgdXJsIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBkYXRhc2V0QXR0cmlidXRpb25TZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICBbc3RhdGUgPT4gc3RhdGUudmlzU3RhdGUuZGF0YXNldHNdLFxuICBkYXRhc2V0cyA9PiB7XG4gICAgY29uc3QgdW5pcXVlQXR0cmlidXRpb25zOiBEYXRhc2V0QXR0cmlidXRpb25bXSA9IFtdO1xuICAgIE9iamVjdC5rZXlzKGRhdGFzZXRzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBjb25zdCBkcyA9IGRhdGFzZXRzW2tleV07XG4gICAgICBjb25zdCBhdHRyaWJ1dGlvbnMgPSBkcz8ubWV0YWRhdGE/LmF0dHJpYnV0aW9ucztcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGF0dHJpYnV0aW9ucykpIHtcbiAgICAgICAgYXR0cmlidXRpb25zLmZvckVhY2goYXR0cmlidXRpb24gPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgYXR0cmlidXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAvLyBhdHRyaWJ1dGlvbiBjYW4gYmUgYSByYXcgc3RyaW5nIG9yIGEgc3RyaW5nIHdpdGggbGluayB0YWdzXG4gICAgICAgICAgICBjb25zdCBsaW5rcyA9IGF0dHJpYnV0aW9uLm1hdGNoKC88YVteXSs/YT4vZyk7XG4gICAgICAgICAgICBpZiAobGlua3MpIHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsaW5rcz8uZm9yRWFjaChsaW5rID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGhyZWYgPSBsaW5rLm1hdGNoKC9ocmVmPVwiKFteXCJdKikvKT8uWzFdO1xuICAgICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSBsaW5rLm1hdGNoKC90aXRsZT1cIihbXlwiXSopLyk/LlsxXTtcbiAgICAgICAgICAgICAgICAgIGlmIChocmVmICYmIHRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHVuaXF1ZUF0dHJpYnV0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYCR7bGluay5pbmRleE9mKCcmY29weTsnKSA+PSAwID8gJ8KpICcgOiAnJ30ke3RpdGxlfWAsXG4gICAgICAgICAgICAgICAgICAgICAgdXJsOiBocmVmXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIC8vIGp1c3QgaWdub3JlIGZvciBub3dcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdW5pcXVlQXR0cmlidXRpb25zLnB1c2goe3RpdGxlOiBhdHRyaWJ1dGlvbiwgdXJsOiBudWxsfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdW5pcXVlQXR0cmlidXRpb25zO1xuICB9XG4pO1xuXG4vKipcbiAqIENvbGxlY3QgdW5pcXVlIGxheWVyLWxldmVsIGF0dHJpYnV0aW9ucyBmcm9tIHZpc2libGUgbGF5ZXJzLlxuICogQnVpbGRzIGEgc2VyaWFsaXplZCBjYWNoZSBrZXkgZnJvbSBhdHRyaWJ1dGlvbiB2YWx1ZXMgc28gY3JlYXRlU2VsZWN0b3JcbiAqIGNhbiBkZXRlY3QgaW4tcGxhY2UgbXV0YXRpb25zIHRvIGxheWVyLm1ldGEuXG4gKi9cbmNvbnN0IGxheWVyQXR0cmlidXRpb25LZXlTZWxlY3RvciA9IChzdGF0ZTogYW55KTogc3RyaW5nID0+IHtcbiAgY29uc3QgbGF5ZXJzOiBhbnlbXSA9IHN0YXRlLnZpc1N0YXRlPy5sYXllcnM7XG4gIGlmICghbGF5ZXJzKSByZXR1cm4gJyc7XG4gIGxldCBrZXkgPSAnJztcbiAgZm9yIChjb25zdCBsYXllciBvZiBsYXllcnMpIHtcbiAgICBpZiAobGF5ZXIuY29uZmlnPy5pc1Zpc2libGUgJiYgbGF5ZXIubWV0YT8uYXR0cmlidXRpb24pIHtcbiAgICAgIGNvbnN0IGEgPSBsYXllci5tZXRhLmF0dHJpYnV0aW9uO1xuICAgICAga2V5ICs9IGAke2EudGl0bGV9XFwwJHthLnVybH1cXDAke2EubG9nb1VybCA/PyAnJ31cXDBgO1xuICAgIH1cbiAgfVxuICByZXR1cm4ga2V5O1xufTtcblxuZXhwb3J0IGNvbnN0IGxheWVyQXR0cmlidXRpb25TZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICBbKHN0YXRlOiBhbnkpID0+IHN0YXRlLnZpc1N0YXRlPy5sYXllcnMsIGxheWVyQXR0cmlidXRpb25LZXlTZWxlY3Rvcl0sXG4gIChsYXllcnM6IGFueVtdKTogQXR0cmlidXRpb25XaXRoU3R5bGVbXSA9PiB7XG4gICAgY29uc3QgYXR0cmlidXRpb25zOiBBdHRyaWJ1dGlvbldpdGhTdHlsZVtdID0gW107XG4gICAgaWYgKCFsYXllcnMpIHJldHVybiBhdHRyaWJ1dGlvbnM7XG4gICAgZm9yIChjb25zdCBsYXllciBvZiBsYXllcnMpIHtcbiAgICAgIGlmIChsYXllci5jb25maWc/LmlzVmlzaWJsZSAmJiBsYXllci5tZXRhPy5hdHRyaWJ1dGlvbikge1xuICAgICAgICBjb25zdCBhdHRyID0gbGF5ZXIubWV0YS5hdHRyaWJ1dGlvbjtcbiAgICAgICAgaWYgKGF0dHIudGl0bGUgJiYgIWF0dHJpYnV0aW9ucy5maW5kKGEgPT4gYS50aXRsZSA9PT0gYXR0ci50aXRsZSAmJiBhLnVybCA9PT0gYXR0ci51cmwpKSB7XG4gICAgICAgICAgYXR0cmlidXRpb25zLnB1c2goYXR0cik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGF0dHJpYnV0aW9ucztcbiAgfVxuKTtcblxuZXhwb3J0IGNvbnN0IGF0dHJpYnV0aW9uU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgW2RhdGFzZXRBdHRyaWJ1dGlvblNlbGVjdG9yLCBsYXllckF0dHJpYnV0aW9uU2VsZWN0b3JdLFxuICAoXG4gICAgZGF0YXNldEF0dHJpYnV0aW9uczogRGF0YXNldEF0dHJpYnV0aW9uW10sXG4gICAgbGF5ZXJBdHRyaWJ1dGlvbnM6IEF0dHJpYnV0aW9uV2l0aFN0eWxlW11cbiAgKToge1xuICAgIHNvdXJjZXM6IERhdGFzZXRBdHRyaWJ1dGlvbltdO1xuICAgIGxvZ29zOiBBdHRyaWJ1dGlvbldpdGhTdHlsZVtdO1xuICB9ID0+IHtcbiAgICBjb25zdCB1bmlxdWVUZXh0QXR0cmlidXRpb25zOiBEYXRhc2V0QXR0cmlidXRpb25bXSA9IFsuLi5kYXRhc2V0QXR0cmlidXRpb25zXTtcbiAgICBjb25zdCBsb2dvczogQXR0cmlidXRpb25XaXRoU3R5bGVbXSA9IFtdO1xuXG4gICAgbGF5ZXJBdHRyaWJ1dGlvbnMuZm9yRWFjaChsYXllckF0dHJpYnV0aW9uID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIXVuaXF1ZVRleHRBdHRyaWJ1dGlvbnMuZmluZChcbiAgICAgICAgICBhID0+IGEudGl0bGUgPT09IGxheWVyQXR0cmlidXRpb24udGl0bGUgJiYgYS51cmwgPT09IGxheWVyQXR0cmlidXRpb24udXJsXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgICB1bmlxdWVUZXh0QXR0cmlidXRpb25zLnB1c2goe3RpdGxlOiBsYXllckF0dHJpYnV0aW9uLnRpdGxlLCB1cmw6IGxheWVyQXR0cmlidXRpb24udXJsfSk7XG4gICAgICB9XG4gICAgICBpZiAobGF5ZXJBdHRyaWJ1dGlvbi5sb2dvVXJsICYmICFsb2dvcy5maW5kKGEgPT4gYS5sb2dvVXJsID09PSBsYXllckF0dHJpYnV0aW9uLmxvZ29VcmwpKSB7XG4gICAgICAgIGxvZ29zLnB1c2gobGF5ZXJBdHRyaWJ1dGlvbik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge3NvdXJjZXM6IHVuaXF1ZVRleHRBdHRyaWJ1dGlvbnMsIGxvZ29zfTtcbiAgfVxuKTtcblxuZXhwb3J0IGNvbnN0IG5vdGlmaWNhdGlvblBhbmVsU2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMpID0+ICh7XG4gIHJlbW92ZU5vdGlmaWNhdGlvbjogcHJvcHMudWlTdGF0ZUFjdGlvbnMucmVtb3ZlTm90aWZpY2F0aW9uLFxuICBub3RpZmljYXRpb25zOiBwcm9wcy51aVN0YXRlLm5vdGlmaWNhdGlvbnNcbn0pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMgPSB7XG4gIG1hcFN0eWxlczogW10sXG4gIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0OiBmYWxzZSxcbiAgbWFwYm94QXBpVXJsOiBERUZBVUxUX01BUEJPWF9BUElfVVJMLFxuICB3aWR0aDogODAwLFxuICBoZWlnaHQ6IDgwMCxcbiAgYXBwTmFtZTogS0VQTEVSX0dMX05BTUUsXG4gIHZlcnNpb246IEtFUExFUl9HTF9WRVJTSU9OLFxuICBzaWRlUGFuZWxXaWR0aDogRElNRU5TSU9OUy5zaWRlUGFuZWwud2lkdGgsXG4gIHRoZW1lOiB7fSxcbiAgY2xvdWRQcm92aWRlcnM6IFtdLFxuICByZWFkT25seTogZmFsc2UsXG4gIGZlYXR1cmVGbGFnczoge31cbn07XG5cbnR5cGUgS2VwbGVyR0xCYXNpY1Byb3BzID0ge1xuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogc3RyaW5nO1xuICBtYXBib3hBcGlVcmw/OiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG4gIHdpZHRoPzogbnVtYmVyO1xuICBoZWlnaHQ/OiBudW1iZXI7XG5cbiAgYXBwV2Vic2l0ZT86IGFueTtcbiAgb25TYXZlTWFwPzogKCkgPT4gdm9pZDtcbiAgb25WaWV3U3RhdGVDaGFuZ2U/OiAodmlld1N0YXRlOiBWaWV3cG9ydCkgPT4gdm9pZDtcbiAgb25EZWNrSW5pdGlhbGl6ZWQ/OiAoKSA9PiB2b2lkO1xuICBvbktlcGxlckdsSW5pdGlhbGl6ZWQ/OiAoKSA9PiB2b2lkO1xuICBnZXRNYXBib3hSZWY/OiAoKSA9PiBSZWFjdC5SZWZPYmplY3Q8YW55PjtcbiAgbWFwU3R5bGVzPzoge2lkOiBzdHJpbmc7IHN0eWxlPzogb2JqZWN0fVtdO1xuICBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdD86IGJvb2xlYW47XG4gIGFwcE5hbWU/OiBzdHJpbmc7XG4gIHZlcnNpb24/OiBzdHJpbmc7XG4gIHNpZGVQYW5lbFdpZHRoPzogbnVtYmVyO1xuICB0aGVtZT86IG9iamVjdDtcbiAgY2xvdWRQcm92aWRlcnM/OiBQcm92aWRlcltdO1xuICBkZWNrR2xQcm9wcz86IG9iamVjdDtcbiAgb25Mb2FkQ2xvdWRNYXBTdWNjZXNzPzogT25TdWNjZXNzQ2FsbEJhY2s7XG4gIG9uTG9hZENsb3VkTWFwRXJyb3I/OiBPbkVycm9yQ2FsbEJhY2s7XG4gIG9uTW91c2VNb3ZlPzogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50ICYge2xuZ0xhdD86IFtudW1iZXIsIG51bWJlcl19KSA9PiB2b2lkO1xuICBvbkV4cG9ydFRvQ2xvdWRTdWNjZXNzPzogT25TdWNjZXNzQ2FsbEJhY2s7XG4gIG9uRXhwb3J0VG9DbG91ZEVycm9yPzogT25FcnJvckNhbGxCYWNrO1xuICByZWFkT25seT86IGJvb2xlYW47XG4gIGZlYXR1cmVGbGFncz86IEZlYXR1cmVGbGFncztcblxuICBsb2NhbGVNZXNzYWdlcz86IHtba2V5OiBzdHJpbmddOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfX07XG4gIGRpc3BhdGNoOiBEaXNwYXRjaDxhbnk+O1xuXG4gIHRvcE1hcENvbnRhaW5lclByb3BzPzogb2JqZWN0O1xuICBib3R0b21NYXBDb250YWluZXJQcm9wcz86IG9iamVjdDtcblxuICB0cmFuc2Zvcm1SZXF1ZXN0PzogKHVybDogc3RyaW5nKSA9PiB7dXJsOiBzdHJpbmd9O1xuXG4gIC8qKiBQYXNzIGBmYWxzZWAgdG8gZGlzYWJsZSB0aGUgcmVtb3RlIFJUTCB0ZXh0IHBsdWdpbiwgb3IgYSBVUkwgc3RyaW5nIHRvIHNlbGYtaG9zdCBpdC4gKi9cbiAgUlRMVGV4dFBsdWdpbj86IHN0cmluZyB8IGZhbHNlO1xufTtcblxudHlwZSBLZXBsZXJHTFByb3BzID0gS2VwbGVyR2xTdGF0ZSAmIEtlcGxlckdsQWN0aW9ucyAmIEtlcGxlckdMQmFzaWNQcm9wcztcbnR5cGUgS2VwbGVyR0xDb21wU3RhdGUgPSB7XG4gIGRpbWVuc2lvbnM6IHt3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlcn0gfCBudWxsO1xufTtcblxuS2VwbGVyR2xGYWN0b3J5LmRlcHMgPSBbXG4gIEJvdHRvbVdpZGdldEZhY3RvcnksXG4gIEdlb0NvZGVyUGFuZWxGYWN0b3J5LFxuICBNYXBDb250YWluZXJGYWN0b3J5LFxuICBNYXBzTGF5b3V0RmFjdG9yeSxcbiAgTW9kYWxDb250YWluZXJGYWN0b3J5LFxuICBTaWRlUGFuZWxGYWN0b3J5LFxuICBQbG90Q29udGFpbmVyRmFjdG9yeSxcbiAgTm90aWZpY2F0aW9uUGFuZWxGYWN0b3J5LFxuICBEbmRDb250ZXh0RmFjdG9yeSxcbiAgRWZmZWN0TWFuYWdlckZhY3Rvcnlcbl07XG5cbmZ1bmN0aW9uIEtlcGxlckdsRmFjdG9yeShcbiAgQm90dG9tV2lkZ2V0OiBSZXR1cm5UeXBlPHR5cGVvZiBCb3R0b21XaWRnZXRGYWN0b3J5PixcbiAgR2VvQ29kZXJQYW5lbDogUmV0dXJuVHlwZTx0eXBlb2YgR2VvQ29kZXJQYW5lbEZhY3Rvcnk+LFxuICBNYXBDb250YWluZXI6IFJldHVyblR5cGU8dHlwZW9mIE1hcENvbnRhaW5lckZhY3Rvcnk+LFxuICBNYXBzTGF5b3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBNYXBzTGF5b3V0RmFjdG9yeT4sXG4gIE1vZGFsQ29udGFpbmVyOiBSZXR1cm5UeXBlPHR5cGVvZiBNb2RhbENvbnRhaW5lckZhY3Rvcnk+LFxuICBTaWRlUGFuZWw6IFJldHVyblR5cGU8dHlwZW9mIFNpZGVQYW5lbEZhY3Rvcnk+LFxuICBQbG90Q29udGFpbmVyOiBSZXR1cm5UeXBlPHR5cGVvZiBQbG90Q29udGFpbmVyRmFjdG9yeT4sXG4gIE5vdGlmaWNhdGlvblBhbmVsOiBSZXR1cm5UeXBlPHR5cGVvZiBOb3RpZmljYXRpb25QYW5lbEZhY3Rvcnk+LFxuICBEbmRDb250ZXh0OiBSZXR1cm5UeXBlPHR5cGVvZiBEbmRDb250ZXh0RmFjdG9yeT5cbik6IFJlYWN0LkNvbXBvbmVudFR5cGU8S2VwbGVyR0xCYXNpY1Byb3BzICYge3NlbGVjdG9yOiAoLi4uYXJnczogYW55W10pID0+IEtlcGxlckdsU3RhdGV9PiB7XG4gIC8qKiBAdHlwZWRlZiB7aW1wb3J0KCcuL2tlcGxlci1nbCcpLlVuY29ubmVjdGVkS2VwbGVyR2xQcm9wc30gS2VwbGVyR2xQcm9wcyAqL1xuICAvKiogQGF1Z21lbnRzIFJlYWN0LkNvbXBvbmVudDxLZXBsZXJHbFByb3BzPiAqL1xuICBjbGFzcyBLZXBsZXJHTCBleHRlbmRzIENvbXBvbmVudDxcbiAgICBLZXBsZXJHTFByb3BzICYge3NlbGVjdG9yOiAoLi4uYXJnczogYW55W10pID0+IEtlcGxlckdsU3RhdGV9LFxuICAgIEtlcGxlckdMQ29tcFN0YXRlXG4gID4ge1xuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSBERUZBVUxUX0tFUExFUl9HTF9QUk9QUztcblxuICAgIHN0YXRlOiBLZXBsZXJHTENvbXBTdGF0ZSA9IHtcbiAgICAgIGRpbWVuc2lvbnM6IG51bGxcbiAgICB9O1xuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICBpZiAoZ2V0QXBwbGljYXRpb25Db25maWcoKS5iYXNlTWFwTGlicmFyeUNvbmZpZz8uWydtYXBib3gnXT8ubWFwTGliTmFtZSA9PT0gJ01hcGJveCcpIHtcbiAgICAgICAgdGhpcy5fdmFsaWRhdGVNYXBib3hUb2tlbigpO1xuICAgICAgfVxuICAgICAgdGhpcy5fbG9hZE1hcFN0eWxlKCk7XG4gICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25LZXBsZXJHbEluaXRpYWxpemVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25LZXBsZXJHbEluaXRpYWxpemVkKCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5yb290LmN1cnJlbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICBvYnNlcnZlRGltZW5zaW9ucyh0aGlzLnJvb3QuY3VycmVudCwgdGhpcy5faGFuZGxlUmVzaXplKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIGlmICh0aGlzLnJvb3QuY3VycmVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHVub2JzZXJ2ZURpbWVuc2lvbnModGhpcy5yb290LmN1cnJlbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIF9oYW5kbGVSZXNpemUgPSBkaW1lbnNpb25zID0+IHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe2RpbWVuc2lvbnN9KTtcbiAgICB9O1xuXG4gICAgc3RhdGljIGNvbnRleHRUeXBlID0gUm9vdENvbnRleHQ7XG5cbiAgICByb290ID0gY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4oKTtcbiAgICBib3R0b21XaWRnZXRSZWYgPSBjcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG5cbiAgICAvKiBzZWxlY3RvcnMgKi9cbiAgICB0aGVtZVNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMudGhlbWU7XG4gICAgYXZhaWxhYmxlVGhlbWVTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKHRoaXMudGhlbWVTZWxlY3RvciwgdGhlbWUgPT5cbiAgICAgIHR5cGVvZiB0aGVtZSA9PT0gJ29iamVjdCdcbiAgICAgICAgPyB7XG4gICAgICAgICAgICAuLi5iYXNpY1RoZW1lLFxuICAgICAgICAgICAgLi4udGhlbWVcbiAgICAgICAgICB9XG4gICAgICAgIDogdGhlbWUgPT09IFRIRU1FLmxpZ2h0XG4gICAgICAgID8gdGhlbWVMVFxuICAgICAgICA6IHRoZW1lID09PSBUSEVNRS5iYXNlXG4gICAgICAgID8gdGhlbWVCU1xuICAgICAgICA6IHRoZW1lXG4gICAgKTtcblxuICAgIGRhdGFzZXRzU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy52aXNTdGF0ZS5kYXRhc2V0cztcbiAgICBmaWx0ZXJlZERhdGFzZXRzU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3Rvcih0aGlzLmRhdGFzZXRzU2VsZWN0b3IsIGdldFZpc2libGVEYXRhc2V0cyk7XG5cbiAgICBhdmFpbGFibGVQcm92aWRlcnMgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIChwcm9wczogS2VwbGVyR0xQcm9wcykgPT4gcHJvcHMuY2xvdWRQcm92aWRlcnMsXG4gICAgICBwcm92aWRlcnMgPT5cbiAgICAgICAgQXJyYXkuaXNBcnJheShwcm92aWRlcnMpICYmIHByb3ZpZGVycy5sZW5ndGhcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgaGFzU3RvcmFnZTogcHJvdmlkZXJzLnNvbWUocCA9PiBwLmhhc1ByaXZhdGVTdG9yYWdlKCkpLFxuICAgICAgICAgICAgICBoYXNTaGFyZTogcHJvdmlkZXJzLnNvbWUocCA9PiBwLmhhc1NoYXJpbmdVcmwoKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHt9XG4gICAgKTtcblxuICAgIGxvY2FsZU1lc3NhZ2VzU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIChwcm9wczogS2VwbGVyR0xQcm9wcykgPT4gcHJvcHMubG9jYWxlTWVzc2FnZXMsXG4gICAgICBjdXN0b21NZXNzYWdlcyA9PiAoY3VzdG9tTWVzc2FnZXMgPyBtZXJnZU1lc3NhZ2VzKG1lc3NhZ2VzLCBjdXN0b21NZXNzYWdlcykgOiBtZXNzYWdlcylcbiAgICApO1xuXG4gICAgLyogcHJpdmF0ZSBtZXRob2RzICovXG4gICAgX3ZhbGlkYXRlTWFwYm94VG9rZW4oKSB7XG4gICAgICBjb25zdCB7bWFwYm94QXBpQWNjZXNzVG9rZW59ID0gdGhpcy5wcm9wcztcbiAgICAgIGlmICghdmFsaWRhdGVUb2tlbihtYXBib3hBcGlBY2Nlc3NUb2tlbikpIHtcbiAgICAgICAgQ29uc29sZS53YXJuKE1JU1NJTkdfTUFQQk9YX1RPS0VOKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfbG9hZE1hcFN0eWxlID0gKCkgPT4ge1xuICAgICAgY29uc3QgZGVmYXVsdFN0eWxlcyA9IE9iamVjdC52YWx1ZXModGhpcy5wcm9wcy5tYXBTdHlsZS5tYXBTdHlsZXMpO1xuICAgICAgLy8gYWRkIGlkIHRvIGN1c3RvbSBtYXAgc3R5bGVzIGlmIG5vdCBnaXZlblxuICAgICAgY29uc3QgY3VzdG9tU3R5bGVzID0gKHRoaXMucHJvcHMubWFwU3R5bGVzIHx8IFtdKS5tYXAobXMgPT4gKHtcbiAgICAgICAgLi4ubXMsXG4gICAgICAgIGlkOiBtcy5pZCB8fCBnZW5lcmF0ZUhhc2hJZCgpXG4gICAgICB9KSk7XG5cbiAgICAgIGNvbnN0IGFsbFN0eWxlcyA9IFsuLi5jdXN0b21TdHlsZXMsIC4uLmRlZmF1bHRTdHlsZXNdLnJlZHVjZSgoYWNjdSwgc3R5bGUpID0+IHtcbiAgICAgICAgYWNjdVtzdHlsZS5pZF0gPSBzdHlsZTtcbiAgICAgICAgcmV0dXJuIGFjY3U7XG4gICAgICB9LCB7fSk7XG5cbiAgICAgIHRoaXMucHJvcHMubWFwU3R5bGVBY3Rpb25zLmxvYWRNYXBTdHlsZXMoYWxsU3R5bGVzKTtcbiAgICB9O1xuXG4gICAgX2RlbGV0ZU1hcExhYmVscyA9IChjb250YWluZXJJZCwgbGF5ZXJJZCkgPT4ge1xuICAgICAgdGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMudG9nZ2xlTGF5ZXJGb3JNYXAoY29udGFpbmVySWQsIGxheWVySWQpO1xuICAgIH07XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgaWQgPSAnbWFwJyxcbiAgICAgICAgd2lkdGggPSBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMuaGVpZ2h0LFxuICAgICAgICB1aVN0YXRlLFxuICAgICAgICB2aXNTdGF0ZSxcbiAgICAgICAgLy8gcmVhZE9ubHkgb3ZlcnJpZGVcbiAgICAgICAgcmVhZE9ubHksXG5cbiAgICAgICAgLy8gZmVhdHVyZXNcbiAgICAgICAgZmVhdHVyZUZsYWdzLFxuXG4gICAgICAgIC8vIGNsb3VkIHByb3ZpZGVyc1xuICAgICAgICBjbG91ZFByb3ZpZGVycyA9IFtdXG4gICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgY29uc3QgZGltZW5zaW9ucyA9IHRoaXMuc3RhdGUuZGltZW5zaW9ucyB8fCB7d2lkdGgsIGhlaWdodH07XG4gICAgICBjb25zdCB7XG4gICAgICAgIHNwbGl0TWFwcywgLy8gdGhpcyB3aWxsIHN0b3JlIHN1cHBvcnQgZm9yIHNwbGl0IG1hcCB2aWV3IGlzIG5lY2Vzc2FyeVxuICAgICAgICBpbnRlcmFjdGlvbkNvbmZpZ1xuICAgICAgfSA9IHZpc1N0YXRlO1xuXG4gICAgICBjb25zdCBpc1NwbGl0ID0gaXNTcGxpdFNlbGVjdG9yKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3QgdGhlbWUgPSB0aGlzLmF2YWlsYWJsZVRoZW1lU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBsb2NhbGVNZXNzYWdlcyA9IHRoaXMubG9jYWxlTWVzc2FnZXNTZWxlY3Rvcih0aGlzLnByb3BzKTtcbiAgICAgIGNvbnN0IGlzRXhwb3J0aW5nSW1hZ2UgPSB1aVN0YXRlLmV4cG9ydEltYWdlLmV4cG9ydGluZztcbiAgICAgIGNvbnN0IGF2YWlsYWJsZVByb3ZpZGVycyA9IHRoaXMuYXZhaWxhYmxlUHJvdmlkZXJzKHRoaXMucHJvcHMpO1xuXG4gICAgICBjb25zdCBmaWx0ZXJlZERhdGFzZXRzID0gdGhpcy5maWx0ZXJlZERhdGFzZXRzU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBzaWRlRmllbGRzID0gc2lkZVBhbmVsU2VsZWN0b3IodGhpcy5wcm9wcywgYXZhaWxhYmxlUHJvdmlkZXJzLCBmaWx0ZXJlZERhdGFzZXRzKTtcbiAgICAgIGNvbnN0IHBsb3RDb250YWluZXJGaWVsZHMgPSBwbG90Q29udGFpbmVyU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBib3R0b21XaWRnZXRGaWVsZHMgPSBib3R0b21XaWRnZXRTZWxlY3Rvcih0aGlzLnByb3BzLCB0aGVtZSk7XG4gICAgICBjb25zdCBtb2RhbENvbnRhaW5lckZpZWxkcyA9IG1vZGFsQ29udGFpbmVyU2VsZWN0b3IodGhpcy5wcm9wcywgdGhpcy5yb290LmN1cnJlbnQpO1xuICAgICAgY29uc3QgZ2VvQ29kZXJQYW5lbEZpZWxkcyA9IGdlb0NvZGVyUGFuZWxTZWxlY3Rvcih0aGlzLnByb3BzLCBkaW1lbnNpb25zKTtcbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvblBhbmVsRmllbGRzID0gbm90aWZpY2F0aW9uUGFuZWxTZWxlY3Rvcih0aGlzLnByb3BzKTtcblxuICAgICAgY29uc3QgbWFwQ29udGFpbmVycyA9ICFpc1NwbGl0XG4gICAgICAgID8gW1xuICAgICAgICAgICAgPE1hcENvbnRhaW5lclxuICAgICAgICAgICAgICBwcmltYXJ5PXt0cnVlfVxuICAgICAgICAgICAgICBrZXk9ezB9XG4gICAgICAgICAgICAgIGluZGV4PXswfVxuICAgICAgICAgICAgICB7Li4ubWFwRmllbGRzU2VsZWN0b3IodGhpcy5wcm9wcyl9XG4gICAgICAgICAgICAgIGNvbnRhaW5lcklkPXswfVxuICAgICAgICAgICAgICBkZWxldGVNYXBMYWJlbHM9e3RoaXMuX2RlbGV0ZU1hcExhYmVsc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgXVxuICAgICAgICA6IHNwbGl0TWFwcy5tYXAoKHNldHRpbmdzLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPE1hcENvbnRhaW5lclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgIHByaW1hcnk9e2luZGV4ID09PSAxfVxuICAgICAgICAgICAgICB7Li4ubWFwRmllbGRzU2VsZWN0b3IodGhpcy5wcm9wcywgaW5kZXgpfVxuICAgICAgICAgICAgICBjb250YWluZXJJZD17aW5kZXh9XG4gICAgICAgICAgICAgIGRlbGV0ZU1hcExhYmVscz17dGhpcy5fZGVsZXRlTWFwTGFiZWxzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFJvb3RDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt0aGlzLnJvb3R9PlxuICAgICAgICAgIDxGZWF0dXJlRmxhZ3NDb250ZXh0UHJvdmlkZXIgZmVhdHVyZUZsYWdzPXtmZWF0dXJlRmxhZ3N9PlxuICAgICAgICAgICAgPEludGxQcm92aWRlciBsb2NhbGU9e3VpU3RhdGUubG9jYWxlfSBtZXNzYWdlcz17bG9jYWxlTWVzc2FnZXNbdWlTdGF0ZS5sb2NhbGVdfT5cbiAgICAgICAgICAgICAgPFN0eWxlU2hlZXRNYW5hZ2VyIHNob3VsZEZvcndhcmRQcm9wPXtzaG91bGRGb3J3YXJkUHJvcH0+XG4gICAgICAgICAgICAgICAgPFRoZW1lUHJvdmlkZXIgdGhlbWU9e3RoZW1lfT5cbiAgICAgICAgICAgICAgICAgIDxDbG91ZExpc3RQcm92aWRlciBwcm92aWRlcnM9e2Nsb3VkUHJvdmlkZXJzfT5cbiAgICAgICAgICAgICAgICAgICAgPEdsb2JhbFN0eWxlXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwia2VwbGVyLWdsXCJcbiAgICAgICAgICAgICAgICAgICAgICBpZD17YGtlcGxlci1nbF9fJHtpZH1gfVxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGAke3dpZHRofXB4YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogYCR7aGVpZ2h0fXB4YFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnJvb3R9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uUGFuZWwgey4uLm5vdGlmaWNhdGlvblBhbmVsRmllbGRzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxEbmRDb250ZXh0IHZpc1N0YXRlPXt2aXNTdGF0ZX0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7IXVpU3RhdGUucmVhZE9ubHkgJiYgIXJlYWRPbmx5ICYmIDxTaWRlUGFuZWwgey4uLnNpZGVGaWVsZHN9IC8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgPE1hcHNMYXlvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibWFwc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hcFN0YXRlPXt0aGlzLnByb3BzLm1hcFN0YXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvblNldFN3aXBlQ29tcGFyZVBlcmNlbnRhZ2U9e3RoaXMucHJvcHMubWFwU3RhdGVBY3Rpb25zLnNldFN3aXBlQ29tcGFyZVBlcmNlbnRhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHttYXBDb250YWluZXJzfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9NYXBzTGF5b3V0PlxuICAgICAgICAgICAgICAgICAgICAgIDwvRG5kQ29udGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICB7aXNFeHBvcnRpbmdJbWFnZSAmJiA8UGxvdENvbnRhaW5lciB7Li4ucGxvdENvbnRhaW5lckZpZWxkc30gLz59XG4gICAgICAgICAgICAgICAgICAgICAgey8qIDEgZ2VvY29kZXI6IHNpbmdsZSBtb2RlIE9SIHNwbGl0IG1vZGUgYW5kIHN5bmNlZCB2aWV3cG9ydHMgKi99XG4gICAgICAgICAgICAgICAgICAgICAgeyFpc1ZpZXdwb3J0RGlzam9pbnRlZCh0aGlzLnByb3BzKSAmJiBpbnRlcmFjdGlvbkNvbmZpZy5nZW9jb2Rlci5lbmFibGVkICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxHZW9Db2RlclBhbmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZW9Db2RlclBhbmVsRmllbGRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zeW5jZWRWaWV3cG9ydHM9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIHsvKiAyIGdlb2NvZGVyczogc3BsaXQgbW9kZSBhbmQgdW5zeW5jZWQgdmlld3BvcnRzICovfVxuICAgICAgICAgICAgICAgICAgICAgIHtpc1ZpZXdwb3J0RGlzam9pbnRlZCh0aGlzLnByb3BzKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJhY3Rpb25Db25maWcuZ2VvY29kZXIuZW5hYmxlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwQ29udGFpbmVycy5tYXAoKF9tYXBDb250YWluZXIsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxHZW9Db2RlclBhbmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2VvQ29kZXJQYW5lbEZpZWxkc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zeW5jZWRWaWV3cG9ydHM9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICA8Qm90dG9tV2lkZ2V0T3V0ZXIgYWJzb2x1dGU9eyFoYXNQb3J0YWJsZVdpZHRoKGJyZWFrUG9pbnRWYWx1ZXMpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxCb3R0b21XaWRnZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdFJlZj17dGhpcy5ib3R0b21XaWRnZXRSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5ib3R0b21XaWRnZXRGaWVsZHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lclc9e2RpbWVuc2lvbnMud2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW1lPXt0aGVtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9Cb3R0b21XaWRnZXRPdXRlcj5cbiAgICAgICAgICAgICAgICAgICAgICA8TW9kYWxDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5tb2RhbENvbnRhaW5lckZpZWxkc31cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lclc9e2RpbWVuc2lvbnMud2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJIPXtkaW1lbnNpb25zLmhlaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L0dsb2JhbFN0eWxlPlxuICAgICAgICAgICAgICAgICAgPC9DbG91ZExpc3RQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L1RoZW1lUHJvdmlkZXI+XG4gICAgICAgICAgICAgIDwvU3R5bGVTaGVldE1hbmFnZXI+XG4gICAgICAgICAgICA8L0ludGxQcm92aWRlcj5cbiAgICAgICAgICA8L0ZlYXR1cmVGbGFnc0NvbnRleHRQcm92aWRlcj5cbiAgICAgICAgPC9Sb290Q29udGV4dC5Qcm92aWRlcj5cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGtlcGxlckdsQ29ubmVjdChcbiAgICBtYXBTdGF0ZVRvUHJvcHMsXG4gICAgbWFrZU1hcERpc3BhdGNoVG9Qcm9wc1xuICApKHdpdGhUaGVtZShLZXBsZXJHTCkpIGFzIFJldHVyblR5cGU8dHlwZW9mIEtlcGxlckdsRmFjdG9yeT47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBTdGF0ZVRvUHJvcHMoc3RhdGU6IEtlcGxlckdsU3RhdGUsIHByb3BzOiBLZXBsZXJHTFByb3BzKSB7XG4gIHJldHVybiB7XG4gICAgLi4ucHJvcHMsXG4gICAgdmlzU3RhdGU6IHN0YXRlLnZpc1N0YXRlLFxuICAgIG1hcFN0eWxlOiBzdGF0ZS5tYXBTdHlsZSxcbiAgICBtYXBTdGF0ZTogc3RhdGUubWFwU3RhdGUsXG4gICAgdWlTdGF0ZTogc3RhdGUudWlTdGF0ZSxcbiAgICBwcm92aWRlclN0YXRlOiBzdGF0ZS5wcm92aWRlclN0YXRlXG4gIH07XG59XG5cbmNvbnN0IGRlZmF1bHRVc2VyQWN0aW9ucyA9IHt9O1xuXG5jb25zdCBnZXREaXNwYXRjaCA9IGRpc3BhdGNoID0+IGRpc3BhdGNoO1xuY29uc3QgZ2V0VXNlckFjdGlvbnMgPSAoZGlzcGF0Y2gsIHByb3BzKSA9PiBwcm9wcy5hY3Rpb25zIHx8IGRlZmF1bHRVc2VyQWN0aW9ucztcblxuLyoqIEB0eXBlIHsoKSA9PiBpbXBvcnQoJ3Jlc2VsZWN0JykuT3V0cHV0UGFyYW1ldHJpY1NlbGVjdG9yPGFueSwgYW55LCBhbnksIGFueT59ICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZUdldEFjdGlvbkNyZWF0b3JzKCkge1xuICByZXR1cm4gY3JlYXRlU2VsZWN0b3IoW2dldERpc3BhdGNoLCBnZXRVc2VyQWN0aW9uc10sIChkaXNwYXRjaCwgdXNlckFjdGlvbnMpID0+IHtcbiAgICBjb25zdCBbdmlzU3RhdGVBY3Rpb25zLCBtYXBTdGF0ZUFjdGlvbnMsIG1hcFN0eWxlQWN0aW9ucywgdWlTdGF0ZUFjdGlvbnMsIHByb3ZpZGVyQWN0aW9uc10gPSBbXG4gICAgICBWaXNTdGF0ZUFjdGlvbnMsXG4gICAgICBNYXBTdGF0ZUFjdGlvbnMsXG4gICAgICBNYXBTdHlsZUFjdGlvbnMsXG4gICAgICBVSVN0YXRlQWN0aW9ucyxcbiAgICAgIFByb3ZpZGVyQWN0aW9uc1xuICAgIF0ubWFwKGFjdGlvbnMgPT4gYmluZEFjdGlvbkNyZWF0b3JzKG1lcmdlQWN0aW9ucyhhY3Rpb25zLCB1c2VyQWN0aW9ucyksIGRpc3BhdGNoKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmlzU3RhdGVBY3Rpb25zLFxuICAgICAgbWFwU3RhdGVBY3Rpb25zLFxuICAgICAgbWFwU3R5bGVBY3Rpb25zLFxuICAgICAgdWlTdGF0ZUFjdGlvbnMsXG4gICAgICBwcm92aWRlckFjdGlvbnMsXG4gICAgICBkaXNwYXRjaFxuICAgIH07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBtYWtlTWFwRGlzcGF0Y2hUb1Byb3BzKCkge1xuICBjb25zdCBnZXRBY3Rpb25DcmVhdG9ycyA9IG1ha2VHZXRBY3Rpb25DcmVhdG9ycygpO1xuICBjb25zdCBtYXBEaXNwYXRjaFRvUHJvcHMgPSAoZGlzcGF0Y2gsIG93blByb3BzKSA9PiB7XG4gICAgY29uc3QgZ3JvdXBlZEFjdGlvbkNyZWF0b3JzID0gZ2V0QWN0aW9uQ3JlYXRvcnMoZGlzcGF0Y2gsIG93blByb3BzKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5ncm91cGVkQWN0aW9uQ3JlYXRvcnMsXG4gICAgICBkaXNwYXRjaFxuICAgIH07XG4gIH07XG5cbiAgcmV0dXJuIG1hcERpc3BhdGNoVG9Qcm9wcztcbn1cblxuLyoqXG4gKiBPdmVycmlkZSBkZWZhdWx0IGtlcGxlci5nbCBhY3Rpb25zIHdpdGggdXNlciBkZWZpbmVkIGFjdGlvbnMgdXNpbmcgdGhlIHNhbWUga2V5XG4gKi9cbmZ1bmN0aW9uIG1lcmdlQWN0aW9ucyhhY3Rpb25zLCB1c2VyQWN0aW9ucykge1xuICBjb25zdCBvdmVycmlkZXMgPSB7fTtcbiAgZm9yIChjb25zdCBrZXkgaW4gdXNlckFjdGlvbnMpIHtcbiAgICBpZiAoXG4gICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodXNlckFjdGlvbnMsIGtleSkgJiZcbiAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhY3Rpb25zLCBrZXkpXG4gICAgKSB7XG4gICAgICBvdmVycmlkZXNba2V5XSA9IHVzZXJBY3Rpb25zW2tleV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHsuLi5hY3Rpb25zLCAuLi5vdmVycmlkZXN9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBLZXBsZXJHbEZhY3Rvcnk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxpQkFBQSxHQUFBTCx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssU0FBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sZ0JBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFVBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLGFBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLFFBQUEsR0FBQVQsT0FBQTtBQVVBLElBQUFVLFFBQUEsR0FBQVYsT0FBQTtBQVFBLElBQUFXLFlBQUEsR0FBQVgsT0FBQTtBQUVBLElBQUFZLGtCQUFBLEdBQUFaLE9BQUE7QUFVQSxJQUFBYSxVQUFBLEdBQUFiLE9BQUE7QUFVQSxJQUFBYyxVQUFBLEdBQUFaLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBZSxjQUFBLEdBQUFiLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBZ0IsV0FBQSxHQUFBZCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQWlCLGFBQUEsR0FBQWYsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFrQixlQUFBLEdBQUFoQixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQW1CLGNBQUEsR0FBQWpCLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBb0Isa0JBQUEsR0FBQWxCLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBcUIsY0FBQSxHQUFBbkIsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFzQixjQUFBLEdBQUFwQixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQXVCLFdBQUEsR0FBQXJCLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBd0IscUJBQUEsR0FBQXhCLE9BQUE7QUFFQSxJQUFBeUIsTUFBQSxHQUFBekIsT0FBQTtBQVVBLElBQUEwQixPQUFBLEdBQUExQixPQUFBO0FBQTBGLElBQUEyQixlQUFBLEVBekUxRjtBQUNBO0FBQUEsU0FBQTVCLHdCQUFBNkIsQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQS9CLHVCQUFBLFlBQUFBLHdCQUFBNkIsQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxNQUFBTSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLG1CQUFBVCxDQUFBLGlCQUFBQSxDQUFBLGdCQUFBVSxRQUFBLENBQUFWLENBQUEsMEJBQUFBLENBQUEsU0FBQVEsQ0FBQSxNQUFBRixDQUFBLEdBQUFMLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLFFBQUFHLENBQUEsQ0FBQUssR0FBQSxDQUFBWCxDQUFBLFVBQUFNLENBQUEsQ0FBQU0sR0FBQSxDQUFBWixDQUFBLEdBQUFNLENBQUEsQ0FBQU8sR0FBQSxDQUFBYixDQUFBLEVBQUFRLENBQUEsY0FBQU0sRUFBQSxJQUFBZCxDQUFBLGdCQUFBYyxFQUFBLE9BQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBaEIsQ0FBQSxFQUFBYyxFQUFBLE9BQUFQLENBQUEsSUFBQUQsQ0FBQSxHQUFBVyxNQUFBLENBQUFDLGNBQUEsS0FBQUQsTUFBQSxDQUFBRSx3QkFBQSxDQUFBbkIsQ0FBQSxFQUFBYyxFQUFBLE9BQUFQLENBQUEsQ0FBQUssR0FBQSxJQUFBTCxDQUFBLENBQUFNLEdBQUEsSUFBQVAsQ0FBQSxDQUFBRSxDQUFBLEVBQUFNLEVBQUEsRUFBQVAsQ0FBQSxJQUFBQyxDQUFBLENBQUFNLEVBQUEsSUFBQWQsQ0FBQSxDQUFBYyxFQUFBLFdBQUFOLENBQUEsS0FBQVIsQ0FBQSxFQUFBQyxDQUFBO0FBQUEsU0FBQW1CLFdBQUFuQixDQUFBLEVBQUFLLENBQUEsRUFBQU4sQ0FBQSxXQUFBTSxDQUFBLE9BQUFlLGdCQUFBLGFBQUFmLENBQUEsT0FBQWdCLDJCQUFBLGFBQUFyQixDQUFBLEVBQUFzQix5QkFBQSxLQUFBQyxPQUFBLENBQUFDLFNBQUEsQ0FBQW5CLENBQUEsRUFBQU4sQ0FBQSxZQUFBcUIsZ0JBQUEsYUFBQXBCLENBQUEsRUFBQXlCLFdBQUEsSUFBQXBCLENBQUEsQ0FBQXFCLEtBQUEsQ0FBQTFCLENBQUEsRUFBQUQsQ0FBQTtBQUFBLFNBQUF1QiwwQkFBQSxjQUFBdEIsQ0FBQSxJQUFBMkIsT0FBQSxDQUFBQyxTQUFBLENBQUFDLE9BQUEsQ0FBQWQsSUFBQSxDQUFBUSxPQUFBLENBQUFDLFNBQUEsQ0FBQUcsT0FBQSxpQ0FBQTNCLENBQUEsYUFBQXNCLHlCQUFBLFlBQUFBLDBCQUFBLGFBQUF0QixDQUFBO0FBQUEsU0FBQThCLDJCQUFBNUIsQ0FBQSxFQUFBSCxDQUFBLFFBQUFDLENBQUEseUJBQUErQixNQUFBLElBQUE3QixDQUFBLENBQUE2QixNQUFBLENBQUFDLFFBQUEsS0FBQTlCLENBQUEscUJBQUFGLENBQUEsUUFBQWlDLEtBQUEsQ0FBQUMsT0FBQSxDQUFBaEMsQ0FBQSxNQUFBRixDQUFBLEdBQUFtQywyQkFBQSxDQUFBakMsQ0FBQSxNQUFBSCxDQUFBLElBQUFHLENBQUEsdUJBQUFBLENBQUEsQ0FBQWtDLE1BQUEsSUFBQXBDLENBQUEsS0FBQUUsQ0FBQSxHQUFBRixDQUFBLE9BQUFxQyxFQUFBLE1BQUFDLENBQUEsWUFBQUEsRUFBQSxlQUFBQyxDQUFBLEVBQUFELENBQUEsRUFBQW5DLENBQUEsV0FBQUEsRUFBQSxXQUFBa0MsRUFBQSxJQUFBbkMsQ0FBQSxDQUFBa0MsTUFBQSxLQUFBSSxJQUFBLFdBQUFBLElBQUEsTUFBQUMsS0FBQSxFQUFBdkMsQ0FBQSxDQUFBbUMsRUFBQSxVQUFBdEMsQ0FBQSxXQUFBQSxFQUFBRyxDQUFBLFVBQUFBLENBQUEsS0FBQUssQ0FBQSxFQUFBK0IsQ0FBQSxnQkFBQUksU0FBQSxpSkFBQXJDLENBQUEsRUFBQXNDLENBQUEsT0FBQUMsQ0FBQSxnQkFBQUwsQ0FBQSxXQUFBQSxFQUFBLElBQUF2QyxDQUFBLEdBQUFBLENBQUEsQ0FBQWUsSUFBQSxDQUFBYixDQUFBLE1BQUFDLENBQUEsV0FBQUEsRUFBQSxRQUFBRCxDQUFBLEdBQUFGLENBQUEsQ0FBQTZDLElBQUEsV0FBQUYsQ0FBQSxHQUFBekMsQ0FBQSxDQUFBc0MsSUFBQSxFQUFBdEMsQ0FBQSxLQUFBSCxDQUFBLFdBQUFBLEVBQUFHLENBQUEsSUFBQTBDLENBQUEsT0FBQXZDLENBQUEsR0FBQUgsQ0FBQSxLQUFBSyxDQUFBLFdBQUFBLEVBQUEsVUFBQW9DLENBQUEsWUFBQTNDLENBQUEsY0FBQUEsQ0FBQSw4QkFBQTRDLENBQUEsUUFBQXZDLENBQUE7QUFBQSxTQUFBOEIsNEJBQUFqQyxDQUFBLEVBQUF5QyxDQUFBLFFBQUF6QyxDQUFBLDJCQUFBQSxDQUFBLFNBQUE0QyxpQkFBQSxDQUFBNUMsQ0FBQSxFQUFBeUMsQ0FBQSxPQUFBM0MsQ0FBQSxNQUFBK0MsUUFBQSxDQUFBaEMsSUFBQSxDQUFBYixDQUFBLEVBQUE4QyxLQUFBLDZCQUFBaEQsQ0FBQSxJQUFBRSxDQUFBLENBQUF1QixXQUFBLEtBQUF6QixDQUFBLEdBQUFFLENBQUEsQ0FBQXVCLFdBQUEsQ0FBQXdCLElBQUEsYUFBQWpELENBQUEsY0FBQUEsQ0FBQSxHQUFBaUMsS0FBQSxDQUFBaUIsSUFBQSxDQUFBaEQsQ0FBQSxvQkFBQUYsQ0FBQSwrQ0FBQW1ELElBQUEsQ0FBQW5ELENBQUEsSUFBQThDLGlCQUFBLENBQUE1QyxDQUFBLEVBQUF5QyxDQUFBO0FBQUEsU0FBQUcsa0JBQUE1QyxDQUFBLEVBQUF5QyxDQUFBLGFBQUFBLENBQUEsSUFBQUEsQ0FBQSxHQUFBekMsQ0FBQSxDQUFBa0MsTUFBQSxNQUFBTyxDQUFBLEdBQUF6QyxDQUFBLENBQUFrQyxNQUFBLFlBQUFyQyxDQUFBLE1BQUFJLENBQUEsR0FBQThCLEtBQUEsQ0FBQVUsQ0FBQSxHQUFBNUMsQ0FBQSxHQUFBNEMsQ0FBQSxFQUFBNUMsQ0FBQSxJQUFBSSxDQUFBLENBQUFKLENBQUEsSUFBQUcsQ0FBQSxDQUFBSCxDQUFBLFVBQUFJLENBQUE7QUFBQSxTQUFBaUQsUUFBQXJELENBQUEsRUFBQUcsQ0FBQSxRQUFBRixDQUFBLEdBQUFnQixNQUFBLENBQUFxQyxJQUFBLENBQUF0RCxDQUFBLE9BQUFpQixNQUFBLENBQUFzQyxxQkFBQSxRQUFBakQsQ0FBQSxHQUFBVyxNQUFBLENBQUFzQyxxQkFBQSxDQUFBdkQsQ0FBQSxHQUFBRyxDQUFBLEtBQUFHLENBQUEsR0FBQUEsQ0FBQSxDQUFBa0QsTUFBQSxXQUFBckQsQ0FBQSxXQUFBYyxNQUFBLENBQUFFLHdCQUFBLENBQUFuQixDQUFBLEVBQUFHLENBQUEsRUFBQXNELFVBQUEsT0FBQXhELENBQUEsQ0FBQXlELElBQUEsQ0FBQS9CLEtBQUEsQ0FBQTFCLENBQUEsRUFBQUssQ0FBQSxZQUFBTCxDQUFBO0FBQUEsU0FBQTBELGNBQUEzRCxDQUFBLGFBQUFHLENBQUEsTUFBQUEsQ0FBQSxHQUFBeUQsU0FBQSxDQUFBdkIsTUFBQSxFQUFBbEMsQ0FBQSxVQUFBRixDQUFBLFdBQUEyRCxTQUFBLENBQUF6RCxDQUFBLElBQUF5RCxTQUFBLENBQUF6RCxDQUFBLFFBQUFBLENBQUEsT0FBQWtELE9BQUEsQ0FBQXBDLE1BQUEsQ0FBQWhCLENBQUEsT0FBQTRELE9BQUEsV0FBQTFELENBQUEsUUFBQTJELGdCQUFBLGFBQUE5RCxDQUFBLEVBQUFHLENBQUEsRUFBQUYsQ0FBQSxDQUFBRSxDQUFBLFNBQUFjLE1BQUEsQ0FBQThDLHlCQUFBLEdBQUE5QyxNQUFBLENBQUErQyxnQkFBQSxDQUFBaEUsQ0FBQSxFQUFBaUIsTUFBQSxDQUFBOEMseUJBQUEsQ0FBQTlELENBQUEsS0FBQW9ELE9BQUEsQ0FBQXBDLE1BQUEsQ0FBQWhCLENBQUEsR0FBQTRELE9BQUEsV0FBQTFELENBQUEsSUFBQWMsTUFBQSxDQUFBQyxjQUFBLENBQUFsQixDQUFBLEVBQUFHLENBQUEsRUFBQWMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBbEIsQ0FBQSxFQUFBRSxDQUFBLGlCQUFBSCxDQUFBO0FBNEVBO0FBQ0E7QUFDQSxJQUFNaUUsV0FBVyxHQUFHQyw0QkFBTSxDQUFDQyxHQUFHLENBQUFwRSxlQUFBLEtBQUFBLGVBQUEsT0FBQXFFLHVCQUFBLG9qQkFDYixVQUFBQyxLQUFLO0VBQUEsT0FBSUEsS0FBSyxDQUFDQyxLQUFLLENBQUNDLFVBQVU7QUFBQSxHQUMvQixVQUFBRixLQUFLO0VBQUEsT0FBSUEsS0FBSyxDQUFDQyxLQUFLLENBQUNFLFVBQVU7QUFBQSxHQUNqQyxVQUFBSCxLQUFLO0VBQUEsT0FBSUEsS0FBSyxDQUFDQyxLQUFLLENBQUNHLFFBQVE7QUFBQSxHQUMzQixVQUFBSixLQUFLO0VBQUEsT0FBSUEsS0FBSyxDQUFDQyxLQUFLLENBQUNJLFVBQVU7QUFBQSxHQXFCbkMsVUFBQUwsS0FBSztFQUFBLE9BQUlBLEtBQUssQ0FBQ0MsS0FBSyxDQUFDSyxVQUFVO0FBQUEsRUFjM0M7QUFNRCxJQUFNQyxpQkFBaUIsR0FBR1YsNEJBQU0sQ0FBQ0MsR0FBRyxDQUNsQyxVQUFBVSxJQUFBO0VBQUEsSUFBRUMsUUFBUSxHQUFBRCxJQUFBLENBQVJDLFFBQVE7RUFBQSxjQUFBQyxNQUFBLENBQ1JELFFBQVEsR0FBRywwQ0FBMEMsR0FBRyxFQUFFO0FBQUEsQ0FNOUQsQ0FBQztBQUVNLElBQU1FLG9CQUFvQixHQUFBQyxPQUFBLENBQUFELG9CQUFBLEdBQUcsU0FBdkJBLG9CQUFvQkEsQ0FBR1gsS0FBSyxFQUFJO0VBQzNDLE9BQ0VBLEtBQUssQ0FBQ2EsUUFBUSxDQUFDQyxPQUFPLElBQ3RCLENBQUNkLEtBQUssQ0FBQ2EsUUFBUSxDQUFDRSxnQkFBZ0IsSUFDaENmLEtBQUssQ0FBQ2EsUUFBUSxDQUFDRyxpQkFBaUIsQ0FBQ2hELE1BQU0sR0FBRyxDQUFDO0FBRS9DLENBQUM7QUFNTSxJQUFNaUQsZ0JBQWdCLEdBQUFMLE9BQUEsQ0FBQUssZ0JBQUEsR0FBRyxJQUFBQyx3QkFBYyxFQUM1QyxDQUFDLFVBQUNsQixLQUFvQjtFQUFBLE9BQUtBLEtBQUssQ0FBQ2EsUUFBUTtBQUFBLEdBQUUsVUFBQ00sQ0FBZ0IsRUFBRUMsS0FBYztFQUFBLE9BQUtBLEtBQUs7QUFBQSxFQUFDLEVBQ3ZGLFVBQUNQLFFBQWtCLEVBQUVPLEtBQWMsRUFBZTtFQUNoRCxJQUFJLENBQUNDLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDRixLQUFLLENBQUMsRUFBRTtJQUMzQjtJQUNBO0lBQ0E7SUFDQSxPQUFPUCxRQUFRO0VBQ2pCO0VBRUEsT0FBT0Ysb0JBQW9CLENBQUM7SUFBQ0UsUUFBUSxFQUFSQTtFQUFRLENBQUMsQ0FBQyxHQUNuQztFQUFBdkIsYUFBQSxDQUFBQSxhQUFBLEtBQ0l1QixRQUFRLEdBQUtBLFFBQVEsQ0FBQ0csaUJBQWlCLENBQUNJLEtBQUssSUFBSSxDQUFDLENBQUM7RUFDdkQ7RUFDQVAsUUFBUTtBQUNkLENBQ0YsQ0FBQztBQUVNLElBQU1VLGlCQUFpQixHQUFBWCxPQUFBLENBQUFXLGlCQUFBLEdBQUcsU0FBcEJBLGlCQUFpQkEsQ0FBSXZCLEtBQW9CLEVBQWdCO0VBQUEsSUFBZG9CLEtBQUssR0FBQTdCLFNBQUEsQ0FBQXZCLE1BQUEsUUFBQXVCLFNBQUEsUUFBQWlDLFNBQUEsR0FBQWpDLFNBQUEsTUFBRyxDQUFDO0VBQy9ELElBQU1rQyxXQUFXLEdBQUdDLG1CQUFtQixDQUFDMUIsS0FBSyxDQUFDO0VBQzlDLE9BQU87SUFDTDJCLFlBQVksRUFBRTNCLEtBQUssQ0FBQzJCLFlBQVk7SUFDaENDLG9CQUFvQixFQUFFNUIsS0FBSyxDQUFDNEIsb0JBQW9CO0lBQ2hEQyxZQUFZLEVBQUU3QixLQUFLLENBQUM2QixZQUFZLEdBQUc3QixLQUFLLENBQUM2QixZQUFZLEdBQUdDLHVCQUF1QixDQUFDRCxZQUFZO0lBQzVGaEIsUUFBUSxFQUFFSSxnQkFBZ0IsQ0FBQ2pCLEtBQUssRUFBRW9CLEtBQUssQ0FBQztJQUN4Q1csbUJBQW1CLEVBQUVOLFdBQVcsQ0FBQ08sT0FBTztJQUN4Q0MsZ0JBQWdCLEVBQUVSLFdBQVcsQ0FBQ1MsS0FBSztJQUNuQ0MsUUFBUSxFQUFFbkMsS0FBSyxDQUFDbUMsUUFBUTtJQUN4QkMsaUJBQWlCLEVBQUVwQyxLQUFLLENBQUNvQyxpQkFBaUI7SUFDMUNDLGlCQUFpQixFQUFFckMsS0FBSyxDQUFDcUMsaUJBQWlCO0lBQzFDQyxXQUFXLEVBQUV0QyxLQUFLLENBQUNzQyxXQUFXO0lBQzlCQyxXQUFXLEVBQUV2QyxLQUFLLENBQUN1QyxXQUFXO0lBQzlCQyxjQUFjLEVBQUV4QyxLQUFLLENBQUN3QyxjQUFjO0lBQ3BDQyxlQUFlLEVBQUV6QyxLQUFLLENBQUN5QyxlQUFlO0lBQ3RDQyxlQUFlLEVBQUUxQyxLQUFLLENBQUMwQyxlQUFlO0lBRXRDO0lBQ0FDLFFBQVEsRUFBRTNDLEtBQUssQ0FBQzJDLFFBQVE7SUFFeEI7SUFDQUMsZUFBZSxFQUFFNUMsS0FBSyxDQUFDNkMsT0FBTyxDQUFDRCxlQUFlO0lBQzlDRSxXQUFXLEVBQUU5QyxLQUFLLENBQUM2QyxPQUFPLENBQUNDLFdBQVc7SUFDdENDLFFBQVEsRUFBRS9DLEtBQUssQ0FBQzZDLE9BQU8sQ0FBQ0UsUUFBUTtJQUNoQ0MsTUFBTSxFQUFFaEQsS0FBSyxDQUFDNkMsT0FBTyxDQUFDRyxNQUFNO0lBQzVCQyx5QkFBeUIsRUFBRTVCLE1BQU0sQ0FBQ3JCLEtBQUssQ0FBQzJDLFFBQVEsQ0FBQ08scUJBQXFCLENBQUMsR0FBRyxDQUFDO0lBQzNFQyxjQUFjLEVBQUVuRCxLQUFLLENBQUNtRCxjQUFjLEdBQUduRCxLQUFLLENBQUNtRCxjQUFjLEdBQUdyQix1QkFBdUIsQ0FBQ3NCLEtBQUs7SUFFM0Y7SUFDQUMsb0JBQW9CLEVBQUVyRCxLQUFLLENBQUNxRCxvQkFBb0I7SUFDaERDLHVCQUF1QixFQUFFdEQsS0FBSyxDQUFDc0QsdUJBQXVCO0lBRXREO0lBQ0FDLGdCQUFnQixFQUFFdkQsS0FBSyxDQUFDdUQsZ0JBQWdCO0lBRXhDQyxhQUFhLEVBQUV4RCxLQUFLLENBQUN3RDtFQUN2QixDQUFDO0FBQ0gsQ0FBQztBQUVNLFNBQVNDLGtCQUFrQkEsQ0FBQ0MsUUFBUSxFQUFFO0VBQzNDO0VBQ0EsT0FBTyxJQUFBQyw4QkFBdUIsRUFBQ0QsUUFBUSxFQUFFLFVBQUFFLEdBQUc7SUFBQSxPQUFJQSxHQUFHLEtBQUtDLGdDQUFxQjtFQUFBLEVBQUM7QUFDaEY7QUFFTyxJQUFNQyxpQkFBaUIsR0FBQWxELE9BQUEsQ0FBQWtELGlCQUFBLEdBQUcsU0FBcEJBLGlCQUFpQkEsQ0FBSTlELEtBQW9CLEVBQUUrRCxrQkFBa0IsRUFBRUMsZ0JBQWdCO0VBQUEsT0FBTTtJQUNoR0MsT0FBTyxFQUFFakUsS0FBSyxDQUFDaUUsT0FBTyxHQUFHakUsS0FBSyxDQUFDaUUsT0FBTyxHQUFHbkMsdUJBQXVCLENBQUNtQyxPQUFPO0lBQ3hFQyxPQUFPLEVBQUVsRSxLQUFLLENBQUNrRSxPQUFPLEdBQUdsRSxLQUFLLENBQUNrRSxPQUFPLEdBQUdwQyx1QkFBdUIsQ0FBQ29DLE9BQU87SUFDeEVDLFVBQVUsRUFBRW5FLEtBQUssQ0FBQ21FLFVBQVU7SUFDNUJoQyxRQUFRLEVBQUVuQyxLQUFLLENBQUNtQyxRQUFRO0lBQ3hCdEIsUUFBUSxFQUFFYixLQUFLLENBQUNhLFFBQVE7SUFDeEJ1RCxTQUFTLEVBQUVwRSxLQUFLLENBQUNvRSxTQUFTO0lBQzFCdkIsT0FBTyxFQUFFN0MsS0FBSyxDQUFDNkMsT0FBTztJQUN0QndCLGVBQWUsRUFBRXJFLEtBQUssQ0FBQ3FFLGVBQWU7SUFDdEM1QixlQUFlLEVBQUV6QyxLQUFLLENBQUN5QyxlQUFlO0lBQ3RDRCxjQUFjLEVBQUV4QyxLQUFLLENBQUN3QyxjQUFjO0lBQ3BDRSxlQUFlLEVBQUUxQyxLQUFLLENBQUMwQyxlQUFlO0lBRXRDZ0IsUUFBUSxFQUFFTSxnQkFBZ0I7SUFDMUJNLE9BQU8sRUFBRXRFLEtBQUssQ0FBQzJDLFFBQVEsQ0FBQzJCLE9BQU87SUFDL0JDLE1BQU0sRUFBRXZFLEtBQUssQ0FBQzJDLFFBQVEsQ0FBQzRCLE1BQU07SUFDN0JDLFVBQVUsRUFBRXhFLEtBQUssQ0FBQzJDLFFBQVEsQ0FBQzZCLFVBQVU7SUFDckNDLFlBQVksRUFBRXpFLEtBQUssQ0FBQzJDLFFBQVEsQ0FBQzhCLFlBQVk7SUFDekNDLGlCQUFpQixFQUFFMUUsS0FBSyxDQUFDMkMsUUFBUSxDQUFDK0IsaUJBQWlCO0lBQ25EQyxPQUFPLEVBQUUzRSxLQUFLLENBQUMyQyxRQUFRLENBQUNnQyxPQUFPO0lBQy9CQyxhQUFhLEVBQUU1RSxLQUFLLENBQUMyQyxRQUFRLENBQUNpQyxhQUFhO0lBQzNDQyxlQUFlLEVBQUU3RSxLQUFLLENBQUMyQyxRQUFRLENBQUNrQyxlQUFlO0lBRS9DekIsS0FBSyxFQUFFcEQsS0FBSyxDQUFDbUQsY0FBYyxHQUFHbkQsS0FBSyxDQUFDbUQsY0FBYyxHQUFHckIsdUJBQXVCLENBQUNzQixLQUFLO0lBQ2xGVyxrQkFBa0IsRUFBbEJBLGtCQUFrQjtJQUNsQmUsUUFBUSxFQUFFOUUsS0FBSyxDQUFDK0UsYUFBYSxDQUFDRDtFQUNoQyxDQUFDO0FBQUEsQ0FBQztBQUVLLElBQU1FLHFCQUFxQixHQUFBcEUsT0FBQSxDQUFBb0UscUJBQUEsR0FBRyxTQUF4QkEscUJBQXFCQSxDQUFJaEYsS0FBb0I7RUFBQSxPQUFNO0lBQzlEb0QsS0FBSyxFQUFFcEQsS0FBSyxDQUFDb0QsS0FBSztJQUNsQjZCLE1BQU0sRUFBRWpGLEtBQUssQ0FBQ2lGLE1BQU07SUFDcEJDLEtBQUssRUFBRWxGLEtBQUssQ0FBQzZDLE9BQU8sQ0FBQ3NDLFdBQVcsQ0FBQ0QsS0FBSztJQUN0Q0UsVUFBVSxFQUFFcEYsS0FBSyxDQUFDNkMsT0FBTyxDQUFDc0MsV0FBVyxDQUFDQyxVQUFVO0lBQ2hEQyxNQUFNLEVBQUVyRixLQUFLLENBQUM2QyxPQUFPLENBQUNzQyxXQUFXLENBQUNFLE1BQU07SUFDeENDLE1BQU0sRUFBRXRGLEtBQUssQ0FBQzZDLE9BQU8sQ0FBQ3NDLFdBQVcsQ0FBQ0csTUFBTTtJQUN4Q0MsU0FBUyxFQUFFdkYsS0FBSyxDQUFDNkMsT0FBTyxDQUFDc0MsV0FBVyxDQUFDSSxTQUFTO0lBQzlDQyxxQkFBcUIsRUFBRXhGLEtBQUssQ0FBQzZDLE9BQU8sQ0FBQ3NDLFdBQVcsQ0FBQ0sscUJBQXFCO0lBRXRFQyxTQUFTLEVBQUVsRSxpQkFBaUIsQ0FBQ3ZCLEtBQUssQ0FBQztJQUNuQzBGLGVBQWUsRUFBRTFGLEtBQUssQ0FBQ3dDLGNBQWMsQ0FBQ2tELGVBQWU7SUFDckRDLHFCQUFxQixFQUFFM0YsS0FBSyxDQUFDd0MsY0FBYyxDQUFDbUQscUJBQXFCO0lBQ2pFQyxxQkFBcUIsRUFBRTVGLEtBQUssQ0FBQ3dDLGNBQWMsQ0FBQ29ELHFCQUFxQjtJQUNqRUMsbUJBQW1CLEVBQUU3RixLQUFLLENBQUN3QyxjQUFjLENBQUNxRCxtQkFBbUI7SUFDN0RDLFNBQVMsRUFBRTlGLEtBQUssQ0FBQzJDLFFBQVEsQ0FBQ21EO0VBQzVCLENBQUM7QUFBQSxDQUFDO0FBRUssSUFBTUMsZUFBZSxHQUFBbkYsT0FBQSxDQUFBbUYsZUFBQSxHQUFHLFNBQWxCQSxlQUFlQSxDQUFJL0YsS0FBb0I7RUFBQSxPQUNsREEsS0FBSyxDQUFDMkMsUUFBUSxDQUFDbUQsU0FBUyxJQUFJOUYsS0FBSyxDQUFDMkMsUUFBUSxDQUFDbUQsU0FBUyxDQUFDOUgsTUFBTSxHQUFHLENBQUM7QUFBQTtBQUUxRCxJQUFNZ0ksb0JBQW9CLEdBQUFwRixPQUFBLENBQUFvRixvQkFBQSxHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUloRyxLQUFvQixFQUFFQyxLQUFLO0VBQUEsT0FBTTtJQUNwRXFFLE9BQU8sRUFBRXRFLEtBQUssQ0FBQzJDLFFBQVEsQ0FBQzJCLE9BQU87SUFDL0JaLFFBQVEsRUFBRTFELEtBQUssQ0FBQzJDLFFBQVEsQ0FBQ2UsUUFBUTtJQUNqQ2IsT0FBTyxFQUFFN0MsS0FBSyxDQUFDNkMsT0FBTztJQUN0QjBCLE1BQU0sRUFBRXZFLEtBQUssQ0FBQzJDLFFBQVEsQ0FBQzRCLE1BQU07SUFDN0IwQixlQUFlLEVBQUVqRyxLQUFLLENBQUMyQyxRQUFRLENBQUNzRCxlQUFlO0lBQy9DeEQsZUFBZSxFQUFFekMsS0FBSyxDQUFDeUMsZUFBZTtJQUN0Q3lELFdBQVcsRUFBRWxHLEtBQUssQ0FBQ3dDLGNBQWMsQ0FBQzBELFdBQVc7SUFDN0MvQyxjQUFjLEVBQUVuRCxLQUFLLENBQUM2QyxPQUFPLENBQUNFLFFBQVEsR0FBRyxDQUFDLEdBQUcvQyxLQUFLLENBQUNtRCxjQUFjLEdBQUdsRCxLQUFLLENBQUNrRyxTQUFTLENBQUNDLE1BQU0sQ0FBQ0M7RUFDN0YsQ0FBQztBQUFBLENBQUM7QUFFSyxJQUFNQyxzQkFBc0IsR0FBQTFGLE9BQUEsQ0FBQTBGLHNCQUFBLEdBQUcsU0FBekJBLHNCQUFzQkEsQ0FBSXRHLEtBQW9CLEVBQUV1RyxRQUFRO0VBQUEsT0FBTTtJQUN6RXRDLE9BQU8sRUFBRWpFLEtBQUssQ0FBQ2lFLE9BQU8sR0FBR2pFLEtBQUssQ0FBQ2lFLE9BQU8sR0FBR25DLHVCQUF1QixDQUFDbUMsT0FBTztJQUN4RTlCLFFBQVEsRUFBRW5DLEtBQUssQ0FBQ21DLFFBQVE7SUFDeEJRLFFBQVEsRUFBRTNDLEtBQUssQ0FBQzJDLFFBQVE7SUFDeEI5QixRQUFRLEVBQUViLEtBQUssQ0FBQ2EsUUFBUTtJQUN4QmdDLE9BQU8sRUFBRTdDLEtBQUssQ0FBQzZDLE9BQU87SUFDdEJrQyxhQUFhLEVBQUUvRSxLQUFLLENBQUMrRSxhQUFhO0lBRWxDbkQsb0JBQW9CLEVBQUU1QixLQUFLLENBQUM0QixvQkFBb0I7SUFDaERDLFlBQVksRUFBRTdCLEtBQUssQ0FBQzZCLFlBQVk7SUFDaENZLGVBQWUsRUFBRXpDLEtBQUssQ0FBQ3lDLGVBQWU7SUFDdENELGNBQWMsRUFBRXhDLEtBQUssQ0FBQ3dDLGNBQWM7SUFDcEM2QixlQUFlLEVBQUVyRSxLQUFLLENBQUNxRSxlQUFlO0lBQ3RDbUMsZUFBZSxFQUFFeEcsS0FBSyxDQUFDd0csZUFBZTtJQUV0Q0QsUUFBUSxFQUFSQSxRQUFRO0lBQ1I7SUFDQUUsY0FBYyxFQUFFekcsS0FBSyxDQUFDeUcsY0FBYyxHQUNoQ3pHLEtBQUssQ0FBQ3lHLGNBQWMsR0FDcEIzRSx1QkFBdUIsQ0FBQzJFLGNBQWM7SUFDMUNDLHNCQUFzQixFQUFFMUcsS0FBSyxDQUFDMEcsc0JBQXNCO0lBQ3BEQyxxQkFBcUIsRUFBRTNHLEtBQUssQ0FBQzJHLHFCQUFxQjtJQUNsREMsbUJBQW1CLEVBQUU1RyxLQUFLLENBQUM0RyxtQkFBbUI7SUFDOUNDLG9CQUFvQixFQUFFN0csS0FBSyxDQUFDNkc7RUFDOUIsQ0FBQztBQUFBLENBQUM7QUFFSyxJQUFNQyxxQkFBcUIsR0FBQWxHLE9BQUEsQ0FBQWtHLHFCQUFBLEdBQUcsU0FBeEJBLHFCQUFxQkEsQ0FDaEM5RyxLQUFvQixFQUNwQitHLFVBQTJDO0VBQUEsSUFBQUMscUJBQUEsRUFBQUMsc0JBQUE7RUFBQSxPQUN2QztJQUNKQyxpQkFBaUIsRUFBRWxILEtBQUssQ0FBQzJDLFFBQVEsQ0FBQytCLGlCQUFpQixDQUFDeUMsUUFBUSxDQUFDQyxPQUFPO0lBQ3BFeEYsb0JBQW9CLEVBQUU1QixLQUFLLENBQUM0QixvQkFBb0I7SUFDaERmLFFBQVEsRUFBRWIsS0FBSyxDQUFDYSxRQUFRO0lBQ3hCZ0MsT0FBTyxFQUFFN0MsS0FBSyxDQUFDNkMsT0FBTztJQUN0QjJCLFVBQVUsRUFBRXhFLEtBQUssQ0FBQzJDLFFBQVEsQ0FBQzZCLFVBQVU7SUFDckM2QyxhQUFhLEVBQUVySCxLQUFLLENBQUN5QyxlQUFlLENBQUM0RSxhQUFhO0lBQ2xEQyxhQUFhLEVBQUV0SCxLQUFLLENBQUN5QyxlQUFlLENBQUM2RSxhQUFhO0lBQ2xEQyxTQUFTLEVBQUV2SCxLQUFLLENBQUMwQyxlQUFlLENBQUM2RSxTQUFTO0lBQzFDQyxRQUFRLEVBQUVULFVBQVUsQ0FBQzNELEtBQUs7SUFDMUJxRSxXQUFXLEdBQUFULHFCQUFBLElBQUFDLHNCQUFBLEdBQUVqSCxLQUFLLENBQUMyQyxRQUFRLENBQUMrQixpQkFBaUIsQ0FBQ3lDLFFBQVEsQ0FBQ08sTUFBTSxjQUFBVCxzQkFBQSx1QkFBaERBLHNCQUFBLENBQWtEUSxXQUFXLGNBQUFULHFCQUFBLGNBQUFBLHFCQUFBLEdBQUk7RUFDaEYsQ0FBQztBQUFBLENBQUM7O0FBRUY7QUFDQTtBQUNBO0FBQ08sSUFBTVcsMEJBQTBCLEdBQUEvRyxPQUFBLENBQUErRywwQkFBQSxHQUFHLElBQUF6Ryx3QkFBYyxFQUN0RCxDQUFDLFVBQUEwRyxLQUFLO0VBQUEsT0FBSUEsS0FBSyxDQUFDakYsUUFBUSxDQUFDZSxRQUFRO0FBQUEsRUFBQyxFQUNsQyxVQUFBQSxRQUFRLEVBQUk7RUFDVixJQUFNbUUsa0JBQXdDLEdBQUcsRUFBRTtFQUNuRGpMLE1BQU0sQ0FBQ3FDLElBQUksQ0FBQ3lFLFFBQVEsQ0FBQyxDQUFDbEUsT0FBTyxDQUFDLFVBQUFvRSxHQUFHLEVBQUk7SUFBQSxJQUFBa0UsWUFBQTtJQUNuQyxJQUFNQyxFQUFFLEdBQUdyRSxRQUFRLENBQUNFLEdBQUcsQ0FBQztJQUN4QixJQUFNb0UsWUFBWSxHQUFHRCxFQUFFLGFBQUZBLEVBQUUsZ0JBQUFELFlBQUEsR0FBRkMsRUFBRSxDQUFFRSxRQUFRLGNBQUFILFlBQUEsdUJBQVpBLFlBQUEsQ0FBY0UsWUFBWTtJQUMvQyxJQUFJbkssS0FBSyxDQUFDQyxPQUFPLENBQUNrSyxZQUFZLENBQUMsRUFBRTtNQUMvQkEsWUFBWSxDQUFDeEksT0FBTyxDQUFDLFVBQUFpQyxXQUFXLEVBQUk7UUFDbEMsSUFBSSxPQUFPQSxXQUFXLEtBQUssUUFBUSxFQUFFO1VBQ25DO1VBQ0EsSUFBTXlHLEtBQUssR0FBR3pHLFdBQVcsQ0FBQzBHLEtBQUssQ0FBQyxZQUFZLENBQUM7VUFDN0MsSUFBSUQsS0FBSyxFQUFFO1lBQ1QsSUFBSTtjQUNGQSxLQUFLLGFBQUxBLEtBQUssZUFBTEEsS0FBSyxDQUFFMUksT0FBTyxDQUFDLFVBQUE0SSxJQUFJLEVBQUk7Z0JBQUEsSUFBQUMsV0FBQSxFQUFBQyxZQUFBO2dCQUNyQixJQUFNQyxJQUFJLElBQUFGLFdBQUEsR0FBR0QsSUFBSSxDQUFDRCxLQUFLLENBQUMsZUFBZSxDQUFDLGNBQUFFLFdBQUEsdUJBQTNCQSxXQUFBLENBQThCLENBQUMsQ0FBQztnQkFDN0MsSUFBTUcsS0FBSyxJQUFBRixZQUFBLEdBQUdGLElBQUksQ0FBQ0QsS0FBSyxDQUFDLGdCQUFnQixDQUFDLGNBQUFHLFlBQUEsdUJBQTVCQSxZQUFBLENBQStCLENBQUMsQ0FBQztnQkFDL0MsSUFBSUMsSUFBSSxJQUFJQyxLQUFLLEVBQUU7a0JBQ2pCWCxrQkFBa0IsQ0FBQ3hJLElBQUksQ0FBQztvQkFDdEJtSixLQUFLLEtBQUE5SCxNQUFBLENBQUswSCxJQUFJLENBQUNLLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQUUsRUFBQS9ILE1BQUEsQ0FBRzhILEtBQUssQ0FBRTtvQkFDM0RFLEdBQUcsRUFBRUg7a0JBQ1AsQ0FBQyxDQUFDO2dCQUNKO2NBQ0YsQ0FBQyxDQUFDO1lBQ0osQ0FBQyxDQUFDLE9BQU9JLEtBQUssRUFBRTtjQUNkO1lBQUE7VUFFSixDQUFDLE1BQU07WUFDTGQsa0JBQWtCLENBQUN4SSxJQUFJLENBQUM7Y0FBQ21KLEtBQUssRUFBRS9HLFdBQVc7Y0FBRWlILEdBQUcsRUFBRTtZQUFJLENBQUMsQ0FBQztVQUMxRDtRQUNGO01BQ0YsQ0FBQyxDQUFDO0lBQ0o7RUFDRixDQUFDLENBQUM7RUFDRixPQUFPYixrQkFBa0I7QUFDM0IsQ0FDRixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFNZSwyQkFBMkIsR0FBRyxTQUE5QkEsMkJBQTJCQSxDQUFJaEIsS0FBVSxFQUFhO0VBQUEsSUFBQWlCLGVBQUE7RUFDMUQsSUFBTXRFLE1BQWEsSUFBQXNFLGVBQUEsR0FBR2pCLEtBQUssQ0FBQ2pGLFFBQVEsY0FBQWtHLGVBQUEsdUJBQWRBLGVBQUEsQ0FBZ0J0RSxNQUFNO0VBQzVDLElBQUksQ0FBQ0EsTUFBTSxFQUFFLE9BQU8sRUFBRTtFQUN0QixJQUFJWCxHQUFHLEdBQUcsRUFBRTtFQUFDLElBQUFrRixTQUFBLEdBQUFwTCwwQkFBQSxDQUNPNkcsTUFBTTtJQUFBd0UsS0FBQTtFQUFBO0lBQTFCLEtBQUFELFNBQUEsQ0FBQTNLLENBQUEsTUFBQTRLLEtBQUEsR0FBQUQsU0FBQSxDQUFBL00sQ0FBQSxJQUFBcUMsSUFBQSxHQUE0QjtNQUFBLElBQUE0SyxhQUFBLEVBQUFDLFdBQUE7TUFBQSxJQUFqQkMsS0FBSyxHQUFBSCxLQUFBLENBQUExSyxLQUFBO01BQ2QsSUFBSSxDQUFBMkssYUFBQSxHQUFBRSxLQUFLLENBQUN4QixNQUFNLGNBQUFzQixhQUFBLGVBQVpBLGFBQUEsQ0FBY0csU0FBUyxLQUFBRixXQUFBLEdBQUlDLEtBQUssQ0FBQ0UsSUFBSSxjQUFBSCxXQUFBLGVBQVZBLFdBQUEsQ0FBWXhILFdBQVcsRUFBRTtRQUFBLElBQUE0SCxVQUFBO1FBQ3RELElBQU05SyxDQUFDLEdBQUcySyxLQUFLLENBQUNFLElBQUksQ0FBQzNILFdBQVc7UUFDaENtQyxHQUFHLE9BQUFsRCxNQUFBLENBQU9uQyxDQUFDLENBQUNpSyxLQUFLLFFBQUE5SCxNQUFBLENBQUtuQyxDQUFDLENBQUNtSyxHQUFHLFFBQUFoSSxNQUFBLEVBQUEySSxVQUFBLEdBQUs5SyxDQUFDLENBQUMrSyxPQUFPLGNBQUFELFVBQUEsY0FBQUEsVUFBQSxHQUFJLEVBQUUsT0FBSTtNQUNyRDtJQUNGO0VBQUMsU0FBQUUsR0FBQTtJQUFBVCxTQUFBLENBQUFuTixDQUFBLENBQUE0TixHQUFBO0VBQUE7SUFBQVQsU0FBQSxDQUFBM00sQ0FBQTtFQUFBO0VBQ0QsT0FBT3lILEdBQUc7QUFDWixDQUFDO0FBRU0sSUFBTTRGLHdCQUF3QixHQUFBNUksT0FBQSxDQUFBNEksd0JBQUEsR0FBRyxJQUFBdEksd0JBQWMsRUFDcEQsQ0FBQyxVQUFDMEcsS0FBVTtFQUFBLElBQUE2QixnQkFBQTtFQUFBLFFBQUFBLGdCQUFBLEdBQUs3QixLQUFLLENBQUNqRixRQUFRLGNBQUE4RyxnQkFBQSx1QkFBZEEsZ0JBQUEsQ0FBZ0JsRixNQUFNO0FBQUEsR0FBRXFFLDJCQUEyQixDQUFDLEVBQ3JFLFVBQUNyRSxNQUFhLEVBQTZCO0VBQ3pDLElBQU15RCxZQUFvQyxHQUFHLEVBQUU7RUFDL0MsSUFBSSxDQUFDekQsTUFBTSxFQUFFLE9BQU95RCxZQUFZO0VBQUMsSUFBQTBCLFVBQUEsR0FBQWhNLDBCQUFBLENBQ2I2RyxNQUFNO0lBQUFvRixNQUFBO0VBQUE7SUFBQSxJQUFBQyxLQUFBLFlBQUFBLE1BQUEsRUFBRTtNQUFBLElBQUFDLGNBQUEsRUFBQUMsWUFBQTtNQUFBLElBQWpCWixLQUFLLEdBQUFTLE1BQUEsQ0FBQXRMLEtBQUE7TUFDZCxJQUFJLENBQUF3TCxjQUFBLEdBQUFYLEtBQUssQ0FBQ3hCLE1BQU0sY0FBQW1DLGNBQUEsZUFBWkEsY0FBQSxDQUFjVixTQUFTLEtBQUFXLFlBQUEsR0FBSVosS0FBSyxDQUFDRSxJQUFJLGNBQUFVLFlBQUEsZUFBVkEsWUFBQSxDQUFZckksV0FBVyxFQUFFO1FBQ3RELElBQU1zSSxJQUFJLEdBQUdiLEtBQUssQ0FBQ0UsSUFBSSxDQUFDM0gsV0FBVztRQUNuQyxJQUFJc0ksSUFBSSxDQUFDdkIsS0FBSyxJQUFJLENBQUNSLFlBQVksQ0FBQ2dDLElBQUksQ0FBQyxVQUFBekwsQ0FBQztVQUFBLE9BQUlBLENBQUMsQ0FBQ2lLLEtBQUssS0FBS3VCLElBQUksQ0FBQ3ZCLEtBQUssSUFBSWpLLENBQUMsQ0FBQ21LLEdBQUcsS0FBS3FCLElBQUksQ0FBQ3JCLEdBQUc7UUFBQSxFQUFDLEVBQUU7VUFDdkZWLFlBQVksQ0FBQzNJLElBQUksQ0FBQzBLLElBQUksQ0FBQztRQUN6QjtNQUNGO0lBQ0YsQ0FBQztJQVBELEtBQUFMLFVBQUEsQ0FBQXZMLENBQUEsTUFBQXdMLE1BQUEsR0FBQUQsVUFBQSxDQUFBM04sQ0FBQSxJQUFBcUMsSUFBQTtNQUFBd0wsS0FBQTtJQUFBO0VBT0MsU0FBQUwsR0FBQTtJQUFBRyxVQUFBLENBQUEvTixDQUFBLENBQUE0TixHQUFBO0VBQUE7SUFBQUcsVUFBQSxDQUFBdk4sQ0FBQTtFQUFBO0VBQ0QsT0FBTzZMLFlBQVk7QUFDckIsQ0FDRixDQUFDO0FBRU0sSUFBTXRHLG1CQUFtQixHQUFBZCxPQUFBLENBQUFjLG1CQUFBLEdBQUcsSUFBQVIsd0JBQWMsRUFDL0MsQ0FBQ3lHLDBCQUEwQixFQUFFNkIsd0JBQXdCLENBQUMsRUFDdEQsVUFDRXpILG1CQUF5QyxFQUN6Q2tJLGlCQUF5QyxFQUl0QztFQUNILElBQU1DLHNCQUE0QyxPQUFBQyxtQkFBQSxhQUFPcEksbUJBQW1CLENBQUM7RUFDN0UsSUFBTUcsS0FBNkIsR0FBRyxFQUFFO0VBRXhDK0gsaUJBQWlCLENBQUN6SyxPQUFPLENBQUMsVUFBQTRLLGdCQUFnQixFQUFJO0lBQzVDLElBQ0UsQ0FBQ0Ysc0JBQXNCLENBQUNGLElBQUksQ0FDMUIsVUFBQXpMLENBQUM7TUFBQSxPQUFJQSxDQUFDLENBQUNpSyxLQUFLLEtBQUs0QixnQkFBZ0IsQ0FBQzVCLEtBQUssSUFBSWpLLENBQUMsQ0FBQ21LLEdBQUcsS0FBSzBCLGdCQUFnQixDQUFDMUIsR0FBRztJQUFBLENBQzNFLENBQUMsRUFDRDtNQUNBd0Isc0JBQXNCLENBQUM3SyxJQUFJLENBQUM7UUFBQ21KLEtBQUssRUFBRTRCLGdCQUFnQixDQUFDNUIsS0FBSztRQUFFRSxHQUFHLEVBQUUwQixnQkFBZ0IsQ0FBQzFCO01BQUcsQ0FBQyxDQUFDO0lBQ3pGO0lBQ0EsSUFBSTBCLGdCQUFnQixDQUFDZCxPQUFPLElBQUksQ0FBQ3BILEtBQUssQ0FBQzhILElBQUksQ0FBQyxVQUFBekwsQ0FBQztNQUFBLE9BQUlBLENBQUMsQ0FBQytLLE9BQU8sS0FBS2MsZ0JBQWdCLENBQUNkLE9BQU87SUFBQSxFQUFDLEVBQUU7TUFDeEZwSCxLQUFLLENBQUM3QyxJQUFJLENBQUMrSyxnQkFBZ0IsQ0FBQztJQUM5QjtFQUNGLENBQUMsQ0FBQztFQUVGLE9BQU87SUFBQ3BJLE9BQU8sRUFBRWtJLHNCQUFzQjtJQUFFaEksS0FBSyxFQUFMQTtFQUFLLENBQUM7QUFDakQsQ0FDRixDQUFDO0FBRU0sSUFBTW1JLHlCQUF5QixHQUFBekosT0FBQSxDQUFBeUoseUJBQUEsR0FBRyxTQUE1QkEseUJBQXlCQSxDQUFJckssS0FBb0I7RUFBQSxPQUFNO0lBQ2xFc0ssa0JBQWtCLEVBQUV0SyxLQUFLLENBQUN3QyxjQUFjLENBQUM4SCxrQkFBa0I7SUFDM0RDLGFBQWEsRUFBRXZLLEtBQUssQ0FBQzZDLE9BQU8sQ0FBQzBIO0VBQy9CLENBQUM7QUFBQSxDQUFDO0FBRUssSUFBTXpJLHVCQUF1QixHQUFBbEIsT0FBQSxDQUFBa0IsdUJBQUEsR0FBRztFQUNyQzBJLFNBQVMsRUFBRSxFQUFFO0VBQ2JDLHVCQUF1QixFQUFFLEtBQUs7RUFDOUI1SSxZQUFZLEVBQUU2SSxpQ0FBc0I7RUFDcEN0SCxLQUFLLEVBQUUsR0FBRztFQUNWNkIsTUFBTSxFQUFFLEdBQUc7RUFDWGhCLE9BQU8sRUFBRTBHLHlCQUFjO0VBQ3ZCekcsT0FBTyxFQUFFMEcsNEJBQWlCO0VBQzFCekgsY0FBYyxFQUFFMEgscUJBQVUsQ0FBQzFFLFNBQVMsQ0FBQy9DLEtBQUs7RUFDMUNuRCxLQUFLLEVBQUUsQ0FBQyxDQUFDO0VBQ1R3RyxjQUFjLEVBQUUsRUFBRTtFQUNsQjFELFFBQVEsRUFBRSxLQUFLO0VBQ2YrSCxZQUFZLEVBQUUsQ0FBQztBQUNqQixDQUFDO0FBZ0REQyxlQUFlLENBQUNDLElBQUksR0FBRyxDQUNyQkMsd0JBQW1CLEVBQ25CQyx5QkFBb0IsRUFDcEJDLHlCQUFtQixFQUNuQkMsc0JBQWlCLEVBQ2pCQywwQkFBcUIsRUFDckJDLHFCQUFnQixFQUNoQkMseUJBQW9CLEVBQ3BCQyw2QkFBd0IsRUFDeEJDLHNCQUFpQixFQUNqQkMseUJBQW9CLENBQ3JCO0FBRUQsU0FBU1gsZUFBZUEsQ0FDdEJZLFlBQW9ELEVBQ3BEQyxhQUFzRCxFQUN0REMsWUFBb0QsRUFDcERDLFVBQWdELEVBQ2hEQyxjQUF3RCxFQUN4REMsU0FBOEMsRUFDOUNDLGFBQXNELEVBQ3REQyxpQkFBOEQsRUFDOURDLFVBQWdELEVBQ3lDO0VBQ3pGO0VBQ0E7RUFBQSxJQUNNQyxRQUFRLDBCQUFBQyxVQUFBO0lBQUEsU0FBQUQsU0FBQTtNQUFBLElBQUFFLEtBQUE7TUFBQSxJQUFBQyxnQkFBQSxtQkFBQUgsUUFBQTtNQUFBLFNBQUFJLElBQUEsR0FBQWpOLFNBQUEsQ0FBQXZCLE1BQUEsRUFBQXlPLElBQUEsT0FBQTVPLEtBQUEsQ0FBQTJPLElBQUEsR0FBQUUsSUFBQSxNQUFBQSxJQUFBLEdBQUFGLElBQUEsRUFBQUUsSUFBQTtRQUFBRCxJQUFBLENBQUFDLElBQUEsSUFBQW5OLFNBQUEsQ0FBQW1OLElBQUE7TUFBQTtNQUFBSixLQUFBLEdBQUF2UCxVQUFBLE9BQUFxUCxRQUFBLEtBQUExTCxNQUFBLENBQUErTCxJQUFBO01BQUEsSUFBQWhOLGdCQUFBLGFBQUE2TSxLQUFBLFdBTWU7UUFDekJ2RixVQUFVLEVBQUU7TUFDZCxDQUFDO01BQUEsSUFBQXRILGdCQUFBLGFBQUE2TSxLQUFBLG1CQXFCZSxVQUFBdkYsVUFBVSxFQUFJO1FBQzVCdUYsS0FBQSxDQUFLSyxRQUFRLENBQUM7VUFBQzVGLFVBQVUsRUFBVkE7UUFBVSxDQUFDLENBQUM7TUFDN0IsQ0FBQztNQUFBLElBQUF0SCxnQkFBQSxhQUFBNk0sS0FBQSx1QkFJTSxJQUFBTSxnQkFBUyxFQUF3QixDQUFDO01BQUEsSUFBQW5OLGdCQUFBLGFBQUE2TSxLQUFBLGtDQUN2QixJQUFBTSxnQkFBUyxFQUFpQixDQUFDO01BRTdDO01BQUEsSUFBQW5OLGdCQUFBLGFBQUE2TSxLQUFBLG1CQUNnQixVQUFBdE0sS0FBSztRQUFBLE9BQUlBLEtBQUssQ0FBQ0MsS0FBSztNQUFBO01BQUEsSUFBQVIsZ0JBQUEsYUFBQTZNLEtBQUEsNEJBQ1gsSUFBQXBMLHdCQUFjLEVBQUNvTCxLQUFBLENBQUtPLGFBQWEsRUFBRSxVQUFBNU0sS0FBSztRQUFBLE9BQy9ELElBQUE2TSxRQUFBLGFBQU83TSxLQUFLLE1BQUssUUFBUSxHQUFBWCxhQUFBLENBQUFBLGFBQUEsS0FFaEJ5TixhQUFVLEdBQ1Y5TSxLQUFLLElBRVZBLEtBQUssS0FBSytNLGdCQUFLLENBQUNDLEtBQUssR0FDckJDLGVBQU8sR0FDUGpOLEtBQUssS0FBSytNLGdCQUFLLENBQUNHLElBQUksR0FDcEJDLGVBQU8sR0FDUG5OLEtBQUs7TUFBQSxDQUNYLENBQUM7TUFBQSxJQUFBUixnQkFBQSxhQUFBNk0sS0FBQSxzQkFFa0IsVUFBQXRNLEtBQUs7UUFBQSxPQUFJQSxLQUFLLENBQUMyQyxRQUFRLENBQUNlLFFBQVE7TUFBQTtNQUFBLElBQUFqRSxnQkFBQSxhQUFBNk0sS0FBQSw4QkFDeEIsSUFBQXBMLHdCQUFjLEVBQUNvTCxLQUFBLENBQUtlLGdCQUFnQixFQUFFNUosa0JBQWtCLENBQUM7TUFBQSxJQUFBaEUsZ0JBQUEsYUFBQTZNLEtBQUEsd0JBRS9ELElBQUFwTCx3QkFBYyxFQUNqQyxVQUFDbEIsS0FBb0I7UUFBQSxPQUFLQSxLQUFLLENBQUN5RyxjQUFjO01BQUEsR0FDOUMsVUFBQTZHLFNBQVM7UUFBQSxPQUNQelAsS0FBSyxDQUFDQyxPQUFPLENBQUN3UCxTQUFTLENBQUMsSUFBSUEsU0FBUyxDQUFDdFAsTUFBTSxHQUN4QztVQUNFdVAsVUFBVSxFQUFFRCxTQUFTLENBQUNFLElBQUksQ0FBQyxVQUFBQyxDQUFDO1lBQUEsT0FBSUEsQ0FBQyxDQUFDQyxpQkFBaUIsQ0FBQyxDQUFDO1VBQUEsRUFBQztVQUN0REMsUUFBUSxFQUFFTCxTQUFTLENBQUNFLElBQUksQ0FBQyxVQUFBQyxDQUFDO1lBQUEsT0FBSUEsQ0FBQyxDQUFDRyxhQUFhLENBQUMsQ0FBQztVQUFBO1FBQ2pELENBQUMsR0FDRCxDQUFDLENBQUM7TUFBQSxDQUNWLENBQUM7TUFBQSxJQUFBbk8sZ0JBQUEsYUFBQTZNLEtBQUEsNEJBRXdCLElBQUFwTCx3QkFBYyxFQUNyQyxVQUFDbEIsS0FBb0I7UUFBQSxPQUFLQSxLQUFLLENBQUM2TixjQUFjO01BQUEsR0FDOUMsVUFBQUMsY0FBYztRQUFBLE9BQUtBLGNBQWMsR0FBRyxJQUFBQyxvQkFBYSxFQUFDQyxzQkFBUSxFQUFFRixjQUFjLENBQUMsR0FBR0Usc0JBQVE7TUFBQSxDQUN4RixDQUFDO01BQUEsSUFBQXZPLGdCQUFBLGFBQUE2TSxLQUFBLG1CQVVlLFlBQU07UUFDcEIsSUFBTTJCLGFBQWEsR0FBR3JSLE1BQU0sQ0FBQ3NSLE1BQU0sQ0FBQzVCLEtBQUEsQ0FBS3RNLEtBQUssQ0FBQ21DLFFBQVEsQ0FBQ3FJLFNBQVMsQ0FBQztRQUNsRTtRQUNBLElBQU0yRCxZQUFZLEdBQUcsQ0FBQzdCLEtBQUEsQ0FBS3RNLEtBQUssQ0FBQ3dLLFNBQVMsSUFBSSxFQUFFLEVBQUU0RCxHQUFHLENBQUMsVUFBQUMsRUFBRTtVQUFBLE9BQUEvTyxhQUFBLENBQUFBLGFBQUEsS0FDbkQrTyxFQUFFO1lBQ0xDLEVBQUUsRUFBRUQsRUFBRSxDQUFDQyxFQUFFLElBQUksSUFBQUMsMkJBQWMsRUFBQztVQUFDO1FBQUEsQ0FDN0IsQ0FBQztRQUVILElBQU1DLFNBQVMsR0FBRyxHQUFBOU4sTUFBQSxLQUFBeUosbUJBQUEsYUFBSWdFLFlBQVksR0FBS0YsYUFBYSxFQUFFUSxNQUFNLENBQUMsVUFBQ0MsSUFBSSxFQUFFQyxLQUFLLEVBQUs7VUFDNUVELElBQUksQ0FBQ0MsS0FBSyxDQUFDTCxFQUFFLENBQUMsR0FBR0ssS0FBSztVQUN0QixPQUFPRCxJQUFJO1FBQ2IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRU5wQyxLQUFBLENBQUt0TSxLQUFLLENBQUNxRSxlQUFlLENBQUN1SyxhQUFhLENBQUNKLFNBQVMsQ0FBQztNQUNyRCxDQUFDO01BQUEsSUFBQS9PLGdCQUFBLGFBQUE2TSxLQUFBLHNCQUVrQixVQUFDdUMsV0FBVyxFQUFFQyxPQUFPLEVBQUs7UUFDM0N4QyxLQUFBLENBQUt0TSxLQUFLLENBQUN5QyxlQUFlLENBQUNzTSxpQkFBaUIsQ0FBQ0YsV0FBVyxFQUFFQyxPQUFPLENBQUM7TUFDcEUsQ0FBQztNQUFBLE9BQUF4QyxLQUFBO0lBQUE7SUFBQSxJQUFBMEMsVUFBQSxhQUFBNUMsUUFBQSxFQUFBQyxVQUFBO0lBQUEsV0FBQTRDLGFBQUEsYUFBQTdDLFFBQUE7TUFBQXhJLEdBQUE7TUFBQXZGLEtBQUEsRUF4RkQsU0FBQTZRLGlCQUFpQkEsQ0FBQSxFQUFHO1FBQUEsSUFBQUMscUJBQUE7UUFDbEIsSUFBSSxFQUFBQSxxQkFBQSxPQUFBQywyQkFBb0IsRUFBQyxDQUFDLENBQUNDLG9CQUFvQixjQUFBRixxQkFBQSxnQkFBQUEscUJBQUEsR0FBM0NBLHFCQUFBLENBQThDLFFBQVEsQ0FBQyxjQUFBQSxxQkFBQSx1QkFBdkRBLHFCQUFBLENBQXlERyxVQUFVLE1BQUssUUFBUSxFQUFFO1VBQ3BGLElBQUksQ0FBQ0Msb0JBQW9CLENBQUMsQ0FBQztRQUM3QjtRQUNBLElBQUksQ0FBQ0MsYUFBYSxDQUFDLENBQUM7UUFDcEIsSUFBSSxPQUFPLElBQUksQ0FBQ3hQLEtBQUssQ0FBQ3lQLHFCQUFxQixLQUFLLFVBQVUsRUFBRTtVQUMxRCxJQUFJLENBQUN6UCxLQUFLLENBQUN5UCxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3BDO1FBQ0EsSUFBSSxJQUFJLENBQUNDLElBQUksQ0FBQ0MsT0FBTyxZQUFZQyxXQUFXLEVBQUU7VUFDNUMsSUFBQUMsd0JBQWlCLEVBQUMsSUFBSSxDQUFDSCxJQUFJLENBQUNDLE9BQU8sRUFBRSxJQUFJLENBQUNHLGFBQWEsQ0FBQztRQUMxRDtNQUNGO0lBQUM7TUFBQWxNLEdBQUE7TUFBQXZGLEtBQUEsRUFFRCxTQUFBMFIsb0JBQW9CQSxDQUFBLEVBQUc7UUFDckIsSUFBSSxJQUFJLENBQUNMLElBQUksQ0FBQ0MsT0FBTyxZQUFZQyxXQUFXLEVBQUU7VUFDNUMsSUFBQUksMEJBQW1CLEVBQUMsSUFBSSxDQUFDTixJQUFJLENBQUNDLE9BQU8sQ0FBQztRQUN4QztNQUNGO0lBQUM7TUFBQS9MLEdBQUE7TUFBQXZGLEtBQUEsRUE2Q0Q7TUFDQSxTQUFBa1Isb0JBQW9CQSxDQUFBLEVBQUc7UUFDckIsSUFBTzNOLG9CQUFvQixHQUFJLElBQUksQ0FBQzVCLEtBQUssQ0FBbEM0QixvQkFBb0I7UUFDM0IsSUFBSSxDQUFDLElBQUFxTyxvQkFBYSxFQUFDck8sb0JBQW9CLENBQUMsRUFBRTtVQUN4Q3NPLG1CQUFPLENBQUNDLElBQUksQ0FBQ0MsK0JBQW9CLENBQUM7UUFDcEM7TUFDRjtJQUFDO01BQUF4TSxHQUFBO01BQUF2RixLQUFBO01Bc0JEO01BQ0EsU0FBQWdTLE1BQU1BLENBQUEsRUFBRztRQUFBLElBQUFDLE1BQUE7UUFDUCxJQUFBQyxXQUFBLEdBY0ksSUFBSSxDQUFDdlEsS0FBSztVQUFBd1EsY0FBQSxHQUFBRCxXQUFBLENBYlpqQyxFQUFFO1VBQUZBLEVBQUUsR0FBQWtDLGNBQUEsY0FBRyxLQUFLLEdBQUFBLGNBQUE7VUFBQUMsaUJBQUEsR0FBQUYsV0FBQSxDQUNWbk4sS0FBSztVQUFMQSxLQUFLLEdBQUFxTixpQkFBQSxjQUFHM08sdUJBQXVCLENBQUNzQixLQUFLLEdBQUFxTixpQkFBQTtVQUFBQyxrQkFBQSxHQUFBSCxXQUFBLENBQ3JDdEwsTUFBTTtVQUFOQSxNQUFNLEdBQUF5TCxrQkFBQSxjQUFHNU8sdUJBQXVCLENBQUNtRCxNQUFNLEdBQUF5TCxrQkFBQTtVQUN2QzdOLE9BQU8sR0FBQTBOLFdBQUEsQ0FBUDFOLE9BQU87VUFDUEYsUUFBUSxHQUFBNE4sV0FBQSxDQUFSNU4sUUFBUTtVQUVSSSxRQUFRLEdBQUF3TixXQUFBLENBQVJ4TixRQUFRO1VBR1IrSCxZQUFZLEdBQUF5RixXQUFBLENBQVp6RixZQUFZO1VBQUE2RixxQkFBQSxHQUFBSixXQUFBLENBR1o5SixjQUFjO1VBQWRBLGNBQWMsR0FBQWtLLHFCQUFBLGNBQUcsRUFBRSxHQUFBQSxxQkFBQTtRQUdyQixJQUFNNUosVUFBVSxHQUFHLElBQUksQ0FBQ2EsS0FBSyxDQUFDYixVQUFVLElBQUk7VUFBQzNELEtBQUssRUFBTEEsS0FBSztVQUFFNkIsTUFBTSxFQUFOQTtRQUFNLENBQUM7UUFDM0QsSUFDRWEsU0FBUyxHQUVQbkQsUUFBUSxDQUZWbUQsU0FBUztVQUNUcEIsaUJBQWlCLEdBQ2YvQixRQUFRLENBRFYrQixpQkFBaUI7UUFHbkIsSUFBTTVELE9BQU8sR0FBR2lGLGVBQWUsQ0FBQyxJQUFJLENBQUMvRixLQUFLLENBQUM7UUFDM0MsSUFBTUMsS0FBSyxHQUFHLElBQUksQ0FBQzJRLHNCQUFzQixDQUFDLElBQUksQ0FBQzVRLEtBQUssQ0FBQztRQUNyRCxJQUFNNk4sY0FBYyxHQUFHLElBQUksQ0FBQ2dELHNCQUFzQixDQUFDLElBQUksQ0FBQzdRLEtBQUssQ0FBQztRQUM5RCxJQUFNOFEsZ0JBQWdCLEdBQUdqTyxPQUFPLENBQUNzQyxXQUFXLENBQUM0TCxTQUFTO1FBQ3RELElBQU1oTixrQkFBa0IsR0FBRyxJQUFJLENBQUNBLGtCQUFrQixDQUFDLElBQUksQ0FBQy9ELEtBQUssQ0FBQztRQUU5RCxJQUFNZ0UsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDZ04sd0JBQXdCLENBQUMsSUFBSSxDQUFDaFIsS0FBSyxDQUFDO1FBQ2xFLElBQU1pUixVQUFVLEdBQUduTixpQkFBaUIsQ0FBQyxJQUFJLENBQUM5RCxLQUFLLEVBQUUrRCxrQkFBa0IsRUFBRUMsZ0JBQWdCLENBQUM7UUFDdEYsSUFBTWtOLG1CQUFtQixHQUFHbE0scUJBQXFCLENBQUMsSUFBSSxDQUFDaEYsS0FBSyxDQUFDO1FBQzdELElBQU1tUixrQkFBa0IsR0FBR25MLG9CQUFvQixDQUFDLElBQUksQ0FBQ2hHLEtBQUssRUFBRUMsS0FBSyxDQUFDO1FBQ2xFLElBQU1tUixvQkFBb0IsR0FBRzlLLHNCQUFzQixDQUFDLElBQUksQ0FBQ3RHLEtBQUssRUFBRSxJQUFJLENBQUMwUCxJQUFJLENBQUNDLE9BQU8sQ0FBQztRQUNsRixJQUFNMEIsbUJBQW1CLEdBQUd2SyxxQkFBcUIsQ0FBQyxJQUFJLENBQUM5RyxLQUFLLEVBQUUrRyxVQUFVLENBQUM7UUFDekUsSUFBTXVLLHVCQUF1QixHQUFHakgseUJBQXlCLENBQUMsSUFBSSxDQUFDckssS0FBSyxDQUFDO1FBRXJFLElBQU11UixhQUFhLEdBQUcsQ0FBQ3pRLE9BQU8sR0FDMUIsY0FDRWpILE1BQUEsWUFBQTJYLGFBQUEsQ0FBQzNGLFlBQVksTUFBQTRGLFNBQUE7VUFDWEMsT0FBTyxFQUFFLElBQUs7VUFDZDlOLEdBQUcsRUFBRSxDQUFFO1VBQ1B4QyxLQUFLLEVBQUU7UUFBRSxHQUNMRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUN2QixLQUFLLENBQUM7VUFDakM2TyxXQUFXLEVBQUUsQ0FBRTtVQUNmOEMsZUFBZSxFQUFFLElBQUksQ0FBQ0M7UUFBaUIsRUFDeEMsQ0FBQyxDQUNILEdBQ0Q5TCxTQUFTLENBQUNzSSxHQUFHLENBQUMsVUFBQ3lELFFBQVEsRUFBRXpRLEtBQUs7VUFBQSxvQkFDNUJ2SCxNQUFBLFlBQUEyWCxhQUFBLENBQUMzRixZQUFZLE1BQUE0RixTQUFBO1lBQ1g3TixHQUFHLEVBQUV4QyxLQUFNO1lBQ1hBLEtBQUssRUFBRUEsS0FBTTtZQUNic1EsT0FBTyxFQUFFdFEsS0FBSyxLQUFLO1VBQUUsR0FDakJHLGlCQUFpQixDQUFDK08sTUFBSSxDQUFDdFEsS0FBSyxFQUFFb0IsS0FBSyxDQUFDO1lBQ3hDeU4sV0FBVyxFQUFFek4sS0FBTTtZQUNuQnVRLGVBQWUsRUFBRXJCLE1BQUksQ0FBQ3NCO1VBQWlCLEVBQ3hDLENBQUM7UUFBQSxDQUNILENBQUM7UUFFTixvQkFDRS9YLE1BQUEsWUFBQTJYLGFBQUEsQ0FBQ2hYLFFBQUEsQ0FBQXNYLFdBQVcsQ0FBQ0MsUUFBUTtVQUFDMVQsS0FBSyxFQUFFLElBQUksQ0FBQ3FSO1FBQUssZ0JBQ3JDN1YsTUFBQSxZQUFBMlgsYUFBQSxDQUFDaFgsUUFBQSxDQUFBd1gsMkJBQTJCO1VBQUNsSCxZQUFZLEVBQUVBO1FBQWEsZ0JBQ3REalIsTUFBQSxZQUFBMlgsYUFBQSxDQUFDbFgsVUFBQSxDQUFBMlgsWUFBWTtVQUFDalAsTUFBTSxFQUFFSCxPQUFPLENBQUNHLE1BQU87VUFBQ2dMLFFBQVEsRUFBRUgsY0FBYyxDQUFDaEwsT0FBTyxDQUFDRyxNQUFNO1FBQUUsZ0JBQzdFbkosTUFBQSxZQUFBMlgsYUFBQSxDQUFDclgsaUJBQUEsQ0FBQStYLGlCQUFpQjtVQUFDQyxpQkFBaUIsRUFBRUE7UUFBa0IsZ0JBQ3REdFksTUFBQSxZQUFBMlgsYUFBQSxDQUFDclgsaUJBQUEsQ0FBQWlZLGFBQWE7VUFBQ25TLEtBQUssRUFBRUE7UUFBTSxnQkFDMUJwRyxNQUFBLFlBQUEyWCxhQUFBLENBQUNqVyxxQkFBQSxDQUFBOFcsaUJBQWlCO1VBQUMvRSxTQUFTLEVBQUU3RztRQUFlLGdCQUMzQzVNLE1BQUEsWUFBQTJYLGFBQUEsQ0FBQzVSLFdBQVc7VUFDVjBTLFNBQVMsRUFBQyxXQUFXO1VBQ3JCaEUsRUFBRSxnQkFBQTVOLE1BQUEsQ0FBZ0I0TixFQUFFLENBQUc7VUFDdkJLLEtBQUssRUFBRTtZQUNMNEQsT0FBTyxFQUFFLE1BQU07WUFDZkMsYUFBYSxFQUFFLFFBQVE7WUFDdkJDLFFBQVEsRUFBRSxVQUFVO1lBQ3BCclAsS0FBSyxLQUFBMUMsTUFBQSxDQUFLMEMsS0FBSyxPQUFJO1lBQ25CNkIsTUFBTSxLQUFBdkUsTUFBQSxDQUFLdUUsTUFBTTtVQUNuQixDQUFFO1VBQ0Z5TixHQUFHLEVBQUUsSUFBSSxDQUFDaEQ7UUFBSyxnQkFFZjdWLE1BQUEsWUFBQTJYLGFBQUEsQ0FBQ3RGLGlCQUFpQixFQUFLb0YsdUJBQTBCLENBQUMsZUFDbER6WCxNQUFBLFlBQUEyWCxhQUFBLENBQUNyRixVQUFVO1VBQUN4SixRQUFRLEVBQUVBO1FBQVMsR0FDNUIsQ0FBQ0UsT0FBTyxDQUFDRSxRQUFRLElBQUksQ0FBQ0EsUUFBUSxpQkFBSWxKLE1BQUEsWUFBQTJYLGFBQUEsQ0FBQ3hGLFNBQVMsRUFBS2lGLFVBQWEsQ0FBQyxlQUNoRXBYLE1BQUEsWUFBQTJYLGFBQUEsQ0FBQzFGLFVBQVU7VUFDVHdHLFNBQVMsRUFBQyxNQUFNO1VBQ2hCelIsUUFBUSxFQUFFLElBQUksQ0FBQ2IsS0FBSyxDQUFDYSxRQUFTO1VBQzlCOFIsMkJBQTJCLEVBQUUsSUFBSSxDQUFDM1MsS0FBSyxDQUFDMEMsZUFBZSxDQUFDa1E7UUFBMEIsR0FFakZyQixhQUNTLENBQ0YsQ0FBQyxFQUNaVCxnQkFBZ0IsaUJBQUlqWCxNQUFBLFlBQUEyWCxhQUFBLENBQUN2RixhQUFhLEVBQUtpRixtQkFBc0IsQ0FBQyxFQUU5RCxDQUFDdlEsb0JBQW9CLENBQUMsSUFBSSxDQUFDWCxLQUFLLENBQUMsSUFBSTBFLGlCQUFpQixDQUFDeUMsUUFBUSxDQUFDQyxPQUFPLGlCQUN0RXZOLE1BQUEsWUFBQTJYLGFBQUEsQ0FBQzVGLGFBQWEsTUFBQTZGLFNBQUEsaUJBQ1JKLG1CQUFtQjtVQUN2QmpRLEtBQUssRUFBRSxDQUFFO1VBQ1R5UixpQkFBaUIsRUFBRTtRQUFNLEVBQzFCLENBQ0YsRUFFQWxTLG9CQUFvQixDQUFDLElBQUksQ0FBQ1gsS0FBSyxDQUFDLElBQy9CMEUsaUJBQWlCLENBQUN5QyxRQUFRLENBQUNDLE9BQU8sSUFDbENtSyxhQUFhLENBQUNuRCxHQUFHLENBQUMsVUFBQzBFLGFBQWEsRUFBRTFSLEtBQUs7VUFBQSxvQkFDckN2SCxNQUFBLFlBQUEyWCxhQUFBLENBQUM1RixhQUFhLE1BQUE2RixTQUFBO1lBQ1o3TixHQUFHLEVBQUV4QztVQUFNLEdBQ1BpUSxtQkFBbUI7WUFDdkJqUSxLQUFLLEVBQUVBLEtBQU07WUFDYnlSLGlCQUFpQixFQUFFO1VBQUssRUFDekIsQ0FBQztRQUFBLENBQ0gsQ0FBQyxlQUNKaFosTUFBQSxZQUFBMlgsYUFBQSxDQUFDalIsaUJBQWlCO1VBQUNFLFFBQVEsRUFBRSxDQUFDLElBQUFzUyx1QkFBZ0IsRUFBQ0Msd0JBQWdCO1FBQUUsZ0JBQy9EblosTUFBQSxZQUFBMlgsYUFBQSxDQUFDN0YsWUFBWSxNQUFBOEYsU0FBQTtVQUNYd0IsT0FBTyxFQUFFLElBQUksQ0FBQ0M7UUFBZ0IsR0FDMUIvQixrQkFBa0I7VUFDdEJnQyxVQUFVLEVBQUVwTSxVQUFVLENBQUMzRCxLQUFNO1VBQzdCbkQsS0FBSyxFQUFFQTtRQUFNLEVBQ2QsQ0FDZ0IsQ0FBQyxlQUNwQnBHLE1BQUEsWUFBQTJYLGFBQUEsQ0FBQ3pGLGNBQWMsTUFBQTBGLFNBQUEsaUJBQ1RMLG9CQUFvQjtVQUN4QitCLFVBQVUsRUFBRXBNLFVBQVUsQ0FBQzNELEtBQU07VUFDN0JnUSxVQUFVLEVBQUVyTSxVQUFVLENBQUM5QjtRQUFPLEVBQy9CLENBQ1UsQ0FDSSxDQUNOLENBQ0UsQ0FDUCxDQUNhLENBQ1QsQ0FBQztNQUUzQjtJQUFDO0VBQUEsRUF2T29Cb08sZ0JBQVM7RUFBQSxJQUFBNVQsZ0JBQUEsYUFBMUIyTSxRQUFRLGtCQUlVdEssdUJBQXVCO0VBQUEsSUFBQXJDLGdCQUFBLGFBSnpDMk0sUUFBUSxpQkFpQ1MwRixvQkFBVztFQXlNbEMsT0FBTyxJQUFBd0Isd0JBQWUsRUFDcEJDLGVBQWUsRUFDZkMsc0JBQ0YsQ0FBQyxDQUFDLElBQUFDLDJCQUFTLEVBQUNySCxRQUFRLENBQUMsQ0FBQztBQUN4QjtBQUVPLFNBQVNtSCxlQUFlQSxDQUFDM0wsS0FBb0IsRUFBRTVILEtBQW9CLEVBQUU7RUFDMUUsT0FBQVYsYUFBQSxDQUFBQSxhQUFBLEtBQ0tVLEtBQUs7SUFDUjJDLFFBQVEsRUFBRWlGLEtBQUssQ0FBQ2pGLFFBQVE7SUFDeEJSLFFBQVEsRUFBRXlGLEtBQUssQ0FBQ3pGLFFBQVE7SUFDeEJ0QixRQUFRLEVBQUUrRyxLQUFLLENBQUMvRyxRQUFRO0lBQ3hCZ0MsT0FBTyxFQUFFK0UsS0FBSyxDQUFDL0UsT0FBTztJQUN0QmtDLGFBQWEsRUFBRTZDLEtBQUssQ0FBQzdDO0VBQWE7QUFFdEM7QUFFQSxJQUFNMk8sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0FBRTdCLElBQU1DLFdBQVcsR0FBRyxTQUFkQSxXQUFXQSxDQUFHQyxRQUFRO0VBQUEsT0FBSUEsUUFBUTtBQUFBO0FBQ3hDLElBQU1DLGNBQWMsR0FBRyxTQUFqQkEsY0FBY0EsQ0FBSUQsUUFBUSxFQUFFNVQsS0FBSztFQUFBLE9BQUtBLEtBQUssQ0FBQzhULE9BQU8sSUFBSUosa0JBQWtCO0FBQUE7O0FBRS9FO0FBQ08sU0FBU0sscUJBQXFCQSxDQUFBLEVBQUc7RUFDdEMsT0FBTyxJQUFBN1Msd0JBQWMsRUFBQyxDQUFDeVMsV0FBVyxFQUFFRSxjQUFjLENBQUMsRUFBRSxVQUFDRCxRQUFRLEVBQUVJLFdBQVcsRUFBSztJQUM5RSxJQUFBQyxJQUFBLEdBQTZGLENBQzNGQyx3QkFBZSxFQUNmQyx3QkFBZSxFQUNmQyx3QkFBZSxFQUNmQyx1QkFBYyxFQUNkQyx3QkFBZSxDQUNoQixDQUFDbEcsR0FBRyxDQUFDLFVBQUEwRixPQUFPO1FBQUEsT0FBSSxJQUFBUyx5QkFBa0IsRUFBQ0MsWUFBWSxDQUFDVixPQUFPLEVBQUVFLFdBQVcsQ0FBQyxFQUFFSixRQUFRLENBQUM7TUFBQSxFQUFDO01BQUFhLEtBQUEsT0FBQUMsZUFBQSxhQUFBVCxJQUFBO01BTjNFeFIsZUFBZSxHQUFBZ1MsS0FBQTtNQUFFL1IsZUFBZSxHQUFBK1IsS0FBQTtNQUFFcFEsZUFBZSxHQUFBb1EsS0FBQTtNQUFFalMsY0FBYyxHQUFBaVMsS0FBQTtNQUFFak8sZUFBZSxHQUFBaU8sS0FBQTtJQVF6RixPQUFPO01BQ0xoUyxlQUFlLEVBQWZBLGVBQWU7TUFDZkMsZUFBZSxFQUFmQSxlQUFlO01BQ2YyQixlQUFlLEVBQWZBLGVBQWU7TUFDZjdCLGNBQWMsRUFBZEEsY0FBYztNQUNkZ0UsZUFBZSxFQUFmQSxlQUFlO01BQ2ZvTixRQUFRLEVBQVJBO0lBQ0YsQ0FBQztFQUNILENBQUMsQ0FBQztBQUNKO0FBRUEsU0FBU0osc0JBQXNCQSxDQUFBLEVBQUc7RUFDaEMsSUFBTW1CLGlCQUFpQixHQUFHWixxQkFBcUIsQ0FBQyxDQUFDO0VBQ2pELElBQU1hLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBa0JBLENBQUloQixRQUFRLEVBQUVpQixRQUFRLEVBQUs7SUFDakQsSUFBTUMscUJBQXFCLEdBQUdILGlCQUFpQixDQUFDZixRQUFRLEVBQUVpQixRQUFRLENBQUM7SUFFbkUsT0FBQXZWLGFBQUEsQ0FBQUEsYUFBQSxLQUNLd1YscUJBQXFCO01BQ3hCbEIsUUFBUSxFQUFSQTtJQUFRO0VBRVosQ0FBQztFQUVELE9BQU9nQixrQkFBa0I7QUFDM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBU0osWUFBWUEsQ0FBQ1YsT0FBTyxFQUFFRSxXQUFXLEVBQUU7RUFDMUMsSUFBTWUsU0FBUyxHQUFHLENBQUMsQ0FBQztFQUNwQixLQUFLLElBQU1uUixHQUFHLElBQUlvUSxXQUFXLEVBQUU7SUFDN0IsSUFDRXBYLE1BQU0sQ0FBQ1ksU0FBUyxDQUFDZCxjQUFjLENBQUNDLElBQUksQ0FBQ3FYLFdBQVcsRUFBRXBRLEdBQUcsQ0FBQyxJQUN0RGhILE1BQU0sQ0FBQ1ksU0FBUyxDQUFDZCxjQUFjLENBQUNDLElBQUksQ0FBQ21YLE9BQU8sRUFBRWxRLEdBQUcsQ0FBQyxFQUNsRDtNQUNBbVIsU0FBUyxDQUFDblIsR0FBRyxDQUFDLEdBQUdvUSxXQUFXLENBQUNwUSxHQUFHLENBQUM7SUFDbkM7RUFDRjtFQUVBLE9BQUF0RSxhQUFBLENBQUFBLGFBQUEsS0FBV3dVLE9BQU8sR0FBS2lCLFNBQVM7QUFDbEM7QUFBQyxJQUFBQyxRQUFBLEdBQUFwVSxPQUFBLGNBRWNtSyxlQUFlIiwiaWdub3JlTGlzdCI6W119
|
|
681
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY29uc29sZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVkdXgiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9yZXNlbGVjdCIsIl9rZXBsZXJnbENvbm5lY3QiLCJfcmVhY3RJbnRsIiwiX2xvY2FsaXphdGlvbiIsIl9jb250ZXh0IiwiX2FjdGlvbnMiLCJfY29tbW9uVXRpbHMiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfY29uc3RhbnRzIiwiX3NpZGVQYW5lbCIsIl9tYXBDb250YWluZXIyIiwiX21hcHNMYXlvdXQiLCJfYm90dG9tV2lkZ2V0IiwiX21vZGFsQ29udGFpbmVyIiwiX3Bsb3RDb250YWluZXIiLCJfbm90aWZpY2F0aW9uUGFuZWwiLCJfZ2VvY29kZXJQYW5lbCIsIl9lZmZlY3RNYW5hZ2VyIiwiX2RuZENvbnRleHQiLCJfdXNlQ2xvdWRMaXN0UHJvdmlkZXIiLCJfdXRpbHMiLCJfc3R5bGVzIiwiX3RlbXBsYXRlT2JqZWN0IiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiX3R5cGVvZjMiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiYXBwbHkiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJBcnJheSIsImlzQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJsZW5ndGgiLCJfbiIsIkYiLCJzIiwiZG9uZSIsInZhbHVlIiwiVHlwZUVycm9yIiwiYSIsInUiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwibmFtZSIsImZyb20iLCJ0ZXN0Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiR2xvYmFsU3R5bGUiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJmb250RmFtaWx5IiwiZm9udFdlaWdodCIsImZvbnRTaXplIiwibGluZUhlaWdodCIsImxhYmVsQ29sb3IiLCJCb3R0b21XaWRnZXRPdXRlciIsIl9yZWYiLCJhYnNvbHV0ZSIsImNvbmNhdCIsImlzVmlld3BvcnREaXNqb2ludGVkIiwiZXhwb3J0cyIsIm1hcFN0YXRlIiwiaXNTcGxpdCIsImlzVmlld3BvcnRTeW5jZWQiLCJzcGxpdE1hcFZpZXdwb3J0cyIsIm1hcFN0YXRlU2VsZWN0b3IiLCJjcmVhdGVTZWxlY3RvciIsIl8iLCJpbmRleCIsIk51bWJlciIsImlzRmluaXRlIiwibWFwRmllbGRzU2VsZWN0b3IiLCJ1bmRlZmluZWQiLCJhdHRyaWJ1dGlvbiIsImF0dHJpYnV0aW9uU2VsZWN0b3IiLCJnZXRNYXBib3hSZWYiLCJtYXBib3hBcGlBY2Nlc3NUb2tlbiIsIm1hcGJveEFwaVVybCIsIkRFRkFVTFRfS0VQTEVSX0dMX1BST1BTIiwiZGF0YXNldEF0dHJpYnV0aW9ucyIsInNvdXJjZXMiLCJhdHRyaWJ1dGlvbkxvZ29zIiwibG9nb3MiLCJtYXBTdHlsZSIsIm9uRGVja0luaXRpYWxpemVkIiwib25WaWV3U3RhdGVDaGFuZ2UiLCJvbk1vdXNlTW92ZSIsImRlY2tHbFByb3BzIiwidWlTdGF0ZUFjdGlvbnMiLCJ2aXNTdGF0ZUFjdGlvbnMiLCJtYXBTdGF0ZUFjdGlvbnMiLCJ2aXNTdGF0ZSIsImFjdGl2ZVNpZGVQYW5lbCIsInVpU3RhdGUiLCJtYXBDb250cm9scyIsInJlYWRPbmx5IiwibG9jYWxlIiwidWlUaGVtZSIsImlzTG9hZGluZ0luZGljYXRvclZpc2libGUiLCJsb2FkaW5nSW5kaWNhdG9yVmFsdWUiLCJzaWRlUGFuZWxXaWR0aCIsIndpZHRoIiwidG9wTWFwQ29udGFpbmVyUHJvcHMiLCJib3R0b21NYXBDb250YWluZXJQcm9wcyIsInRyYW5zZm9ybVJlcXVlc3QiLCJSVExUZXh0UGx1Z2luIiwiZ2V0VmlzaWJsZURhdGFzZXRzIiwiZGF0YXNldHMiLCJmaWx0ZXJPYmplY3RCeVByZWRpY2F0ZSIsImtleSIsIkdFT0NPREVSX0RBVEFTRVRfTkFNRSIsInNpZGVQYW5lbFNlbGVjdG9yIiwiYXZhaWxhYmxlUHJvdmlkZXJzIiwiZmlsdGVyZWREYXRhc2V0cyIsImFwcE5hbWUiLCJ2ZXJzaW9uIiwiYXBwV2Vic2l0ZSIsIm9uU2F2ZU1hcCIsIm1hcFN0eWxlQWN0aW9ucyIsImZpbHRlcnMiLCJsYXllcnMiLCJsYXllck9yZGVyIiwibGF5ZXJDbGFzc2VzIiwiaW50ZXJhY3Rpb25Db25maWciLCJtYXBJbmZvIiwibGF5ZXJCbGVuZGluZyIsIm92ZXJsYXlCbGVuZGluZyIsIm1hcFNhdmVkIiwicHJvdmlkZXJTdGF0ZSIsInBsb3RDb250YWluZXJTZWxlY3RvciIsImhlaWdodCIsInJhdGlvIiwiZXhwb3J0SW1hZ2UiLCJyZXNvbHV0aW9uIiwibGVnZW5kIiwiY2VudGVyIiwiaW1hZ2VTaXplIiwiZXNjYXBlWGh0bWxGb3JXZWJwYWNrIiwibWFwRmllbGRzIiwiYWRkTm90aWZpY2F0aW9uIiwic2V0RXhwb3J0SW1hZ2VTZXR0aW5nIiwic2V0RXhwb3J0SW1hZ2VEYXRhVXJpIiwic2V0RXhwb3J0SW1hZ2VFcnJvciIsInNwbGl0TWFwcyIsImlzU3BsaXRTZWxlY3RvciIsImJvdHRvbVdpZGdldFNlbGVjdG9yIiwiYW5pbWF0aW9uQ29uZmlnIiwidG9nZ2xlTW9kYWwiLCJzaWRlUGFuZWwiLCJtYXJnaW4iLCJsZWZ0IiwibW9kYWxDb250YWluZXJTZWxlY3RvciIsInJvb3ROb2RlIiwicHJvdmlkZXJBY3Rpb25zIiwiY2xvdWRQcm92aWRlcnMiLCJvbkV4cG9ydFRvQ2xvdWRTdWNjZXNzIiwib25Mb2FkQ2xvdWRNYXBTdWNjZXNzIiwib25Mb2FkQ2xvdWRNYXBFcnJvciIsIm9uRXhwb3J0VG9DbG91ZEVycm9yIiwiZ2VvQ29kZXJQYW5lbFNlbGVjdG9yIiwiZGltZW5zaW9ucyIsIl9wcm9wcyR2aXNTdGF0ZSRpbnRlciIsIl9wcm9wcyR2aXNTdGF0ZSRpbnRlcjIiLCJpc0dlb2NvZGVyRW5hYmxlZCIsImdlb2NvZGVyIiwiZW5hYmxlZCIsInVwZGF0ZVZpc0RhdGEiLCJyZW1vdmVEYXRhc2V0IiwidXBkYXRlTWFwIiwiYXBwV2lkdGgiLCJsaW1pdFNlYXJjaCIsImNvbmZpZyIsImRhdGFzZXRBdHRyaWJ1dGlvblNlbGVjdG9yIiwic3RhdGUiLCJ1bmlxdWVBdHRyaWJ1dGlvbnMiLCJfZHMkbWV0YWRhdGEiLCJkcyIsImF0dHJpYnV0aW9ucyIsIm1ldGFkYXRhIiwibGlua3MiLCJtYXRjaCIsImxpbmsiLCJfbGluayRtYXRjaCIsIl9saW5rJG1hdGNoMiIsImhyZWYiLCJ0aXRsZSIsImluZGV4T2YiLCJ1cmwiLCJlcnJvciIsImxheWVyQXR0cmlidXRpb25LZXlTZWxlY3RvciIsIl9zdGF0ZSR2aXNTdGF0ZSIsIl9pdGVyYXRvciIsIl9zdGVwIiwiX2xheWVyJGNvbmZpZyIsIl9sYXllciRtZXRhIiwibGF5ZXIiLCJpc1Zpc2libGUiLCJtZXRhIiwiX2EkbG9nb1VybCIsImxvZ29VcmwiLCJlcnIiLCJsYXllckF0dHJpYnV0aW9uU2VsZWN0b3IiLCJfc3RhdGUkdmlzU3RhdGUyIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsIl9sb29wIiwiX2xheWVyJGNvbmZpZzIiLCJfbGF5ZXIkbWV0YTIiLCJhdHRyIiwiZmluZCIsImxheWVyQXR0cmlidXRpb25zIiwidW5pcXVlVGV4dEF0dHJpYnV0aW9ucyIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJsYXllckF0dHJpYnV0aW9uIiwibm90aWZpY2F0aW9uUGFuZWxTZWxlY3RvciIsInJlbW92ZU5vdGlmaWNhdGlvbiIsIm5vdGlmaWNhdGlvbnMiLCJtYXBTdHlsZXMiLCJtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCIsIkRFRkFVTFRfTUFQQk9YX0FQSV9VUkwiLCJLRVBMRVJfR0xfTkFNRSIsIktFUExFUl9HTF9WRVJTSU9OIiwiRElNRU5TSU9OUyIsImZlYXR1cmVGbGFncyIsIktlcGxlckdsRmFjdG9yeSIsImRlcHMiLCJCb3R0b21XaWRnZXRGYWN0b3J5IiwiR2VvQ29kZXJQYW5lbEZhY3RvcnkiLCJNYXBDb250YWluZXJGYWN0b3J5IiwiTWFwc0xheW91dEZhY3RvcnkiLCJNb2RhbENvbnRhaW5lckZhY3RvcnkiLCJTaWRlUGFuZWxGYWN0b3J5IiwiUGxvdENvbnRhaW5lckZhY3RvcnkiLCJOb3RpZmljYXRpb25QYW5lbEZhY3RvcnkiLCJEbmRDb250ZXh0RmFjdG9yeSIsIkVmZmVjdE1hbmFnZXJGYWN0b3J5IiwiQm90dG9tV2lkZ2V0IiwiR2VvQ29kZXJQYW5lbCIsIk1hcENvbnRhaW5lciIsIk1hcHNMYXlvdXQiLCJNb2RhbENvbnRhaW5lciIsIlNpZGVQYW5lbCIsIlBsb3RDb250YWluZXIiLCJOb3RpZmljYXRpb25QYW5lbCIsIkRuZENvbnRleHQiLCJLZXBsZXJHTCIsIl9Db21wb25lbnQiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjazIiLCJfbGVuIiwiYXJncyIsIl9rZXkiLCJzZXRTdGF0ZSIsImNyZWF0ZVJlZiIsIl9wcm9wcyR1aVN0YXRlIiwidGhlbWVTZWxlY3RvciIsInVpVGhlbWVTZWxlY3RvciIsInRoZW1lSW5wdXQiLCJnZXRBcHBsaWNhdGlvbkNvbmZpZyIsImVuYWJsZVRoZW1lVG9nZ2xlIiwiVEhFTUUiLCJkYXJrIiwiX3R5cGVvZjIiLCJiYXNpY1RoZW1lIiwibGlnaHQiLCJ0aGVtZUxUIiwiYmFzZSIsInRoZW1lQlMiLCJkYXRhc2V0c1NlbGVjdG9yIiwicHJvdmlkZXJzIiwiaGFzU3RvcmFnZSIsInNvbWUiLCJwIiwiaGFzUHJpdmF0ZVN0b3JhZ2UiLCJoYXNTaGFyZSIsImhhc1NoYXJpbmdVcmwiLCJsb2NhbGVNZXNzYWdlcyIsImN1c3RvbU1lc3NhZ2VzIiwibWVyZ2VNZXNzYWdlcyIsIm1lc3NhZ2VzIiwiZGVmYXVsdFN0eWxlcyIsInZhbHVlcyIsImN1c3RvbVN0eWxlcyIsIm1hcCIsIm1zIiwiaWQiLCJnZW5lcmF0ZUhhc2hJZCIsImFsbFN0eWxlcyIsInJlZHVjZSIsImFjY3UiLCJzdHlsZSIsImxvYWRNYXBTdHlsZXMiLCJjb250YWluZXJJZCIsImxheWVySWQiLCJ0b2dnbGVMYXllckZvck1hcCIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwiY29tcG9uZW50RGlkTW91bnQiLCJfZ2V0QXBwbGljYXRpb25Db25maWciLCJiYXNlTWFwTGlicmFyeUNvbmZpZyIsIm1hcExpYk5hbWUiLCJfdmFsaWRhdGVNYXBib3hUb2tlbiIsIl9sb2FkTWFwU3R5bGUiLCJvbktlcGxlckdsSW5pdGlhbGl6ZWQiLCJyb290IiwiY3VycmVudCIsIkhUTUxFbGVtZW50Iiwib2JzZXJ2ZURpbWVuc2lvbnMiLCJfaGFuZGxlUmVzaXplIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJ1bm9ic2VydmVEaW1lbnNpb25zIiwidmFsaWRhdGVUb2tlbiIsIkNvbnNvbGUiLCJ3YXJuIiwiTUlTU0lOR19NQVBCT1hfVE9LRU4iLCJyZW5kZXIiLCJfdGhpczIiLCJfdGhpcyRwcm9wcyIsIl90aGlzJHByb3BzJGlkIiwiX3RoaXMkcHJvcHMkd2lkdGgiLCJfdGhpcyRwcm9wcyRoZWlnaHQiLCJfdGhpcyRwcm9wcyRjbG91ZFByb3YiLCJhdmFpbGFibGVUaGVtZVNlbGVjdG9yIiwibG9jYWxlTWVzc2FnZXNTZWxlY3RvciIsImlzRXhwb3J0aW5nSW1hZ2UiLCJleHBvcnRpbmciLCJmaWx0ZXJlZERhdGFzZXRzU2VsZWN0b3IiLCJzaWRlRmllbGRzIiwicGxvdENvbnRhaW5lckZpZWxkcyIsImJvdHRvbVdpZGdldEZpZWxkcyIsIm1vZGFsQ29udGFpbmVyRmllbGRzIiwiZ2VvQ29kZXJQYW5lbEZpZWxkcyIsIm5vdGlmaWNhdGlvblBhbmVsRmllbGRzIiwibWFwQ29udGFpbmVycyIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kczIiLCJwcmltYXJ5IiwiZGVsZXRlTWFwTGFiZWxzIiwiX2RlbGV0ZU1hcExhYmVscyIsInNldHRpbmdzIiwiUm9vdENvbnRleHQiLCJQcm92aWRlciIsIkZlYXR1cmVGbGFnc0NvbnRleHRQcm92aWRlciIsIkludGxQcm92aWRlciIsIlN0eWxlU2hlZXRNYW5hZ2VyIiwic2hvdWxkRm9yd2FyZFByb3AiLCJUaGVtZVByb3ZpZGVyIiwiQ2xvdWRMaXN0UHJvdmlkZXIiLCJjbGFzc05hbWUiLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsInBvc2l0aW9uIiwicmVmIiwib25TZXRTd2lwZUNvbXBhcmVQZXJjZW50YWdlIiwic2V0U3dpcGVDb21wYXJlUGVyY2VudGFnZSIsInVuc3luY2VkVmlld3BvcnRzIiwiX21hcENvbnRhaW5lciIsImhhc1BvcnRhYmxlV2lkdGgiLCJicmVha1BvaW50VmFsdWVzIiwicm9vdFJlZiIsImJvdHRvbVdpZGdldFJlZiIsImNvbnRhaW5lclciLCJjb250YWluZXJIIiwiQ29tcG9uZW50Iiwia2VwbGVyR2xDb25uZWN0IiwibWFwU3RhdGVUb1Byb3BzIiwibWFrZU1hcERpc3BhdGNoVG9Qcm9wcyIsIndpdGhUaGVtZSIsImRlZmF1bHRVc2VyQWN0aW9ucyIsImdldERpc3BhdGNoIiwiZGlzcGF0Y2giLCJnZXRVc2VyQWN0aW9ucyIsImFjdGlvbnMiLCJtYWtlR2V0QWN0aW9uQ3JlYXRvcnMiLCJ1c2VyQWN0aW9ucyIsIl9tYXAiLCJWaXNTdGF0ZUFjdGlvbnMiLCJNYXBTdGF0ZUFjdGlvbnMiLCJNYXBTdHlsZUFjdGlvbnMiLCJVSVN0YXRlQWN0aW9ucyIsIlByb3ZpZGVyQWN0aW9ucyIsImJpbmRBY3Rpb25DcmVhdG9ycyIsIm1lcmdlQWN0aW9ucyIsIl9tYXAyIiwiX3NsaWNlZFRvQXJyYXkyIiwiZ2V0QWN0aW9uQ3JlYXRvcnMiLCJtYXBEaXNwYXRjaFRvUHJvcHMiLCJvd25Qcm9wcyIsImdyb3VwZWRBY3Rpb25DcmVhdG9ycyIsIm92ZXJyaWRlcyIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2tlcGxlci1nbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBjcmVhdGVSZWYsIERpc3BhdGNofSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQ29uc29sZSBmcm9tICdnbG9iYWwvY29uc29sZSc7XG5pbXBvcnQge2JpbmRBY3Rpb25DcmVhdG9yc30gZnJvbSAncmVkdXgnO1xuaW1wb3J0IHN0eWxlZCwge3dpdGhUaGVtZSwgU3R5bGVTaGVldE1hbmFnZXIsIFRoZW1lUHJvdmlkZXJ9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7Y3JlYXRlU2VsZWN0b3J9IGZyb20gJ3Jlc2VsZWN0JztcbmltcG9ydCB7Y29ubmVjdCBhcyBrZXBsZXJHbENvbm5lY3R9IGZyb20gJy4vY29ubmVjdC9rZXBsZXJnbC1jb25uZWN0JztcbmltcG9ydCB7SW50bFByb3ZpZGVyfSBmcm9tICdyZWFjdC1pbnRsJztcbmltcG9ydCB7bWVzc2FnZXN9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcbmltcG9ydCB7Um9vdENvbnRleHQsIEZlYXR1cmVGbGFnc0NvbnRleHRQcm92aWRlciwgRmVhdHVyZUZsYWdzfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHtcbiAgQXR0cmlidXRpb25XaXRoU3R5bGUsXG4gIERhdGFzZXRBdHRyaWJ1dGlvbixcbiAgT25FcnJvckNhbGxCYWNrLFxuICBPblN1Y2Nlc3NDYWxsQmFjayxcbiAgVmlld3BvcnQsXG4gIE1hcFN0YXRlXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5pbXBvcnQge1xuICBNYXBTdGF0ZUFjdGlvbnMsXG4gIE1hcFN0eWxlQWN0aW9ucyxcbiAgUHJvdmlkZXJBY3Rpb25zLFxuICBVSVN0YXRlQWN0aW9ucyxcbiAgVmlzU3RhdGVBY3Rpb25zXG59IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5cbmltcG9ydCB7Z2VuZXJhdGVIYXNoSWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcblxuaW1wb3J0IHtzaG91bGRGb3J3YXJkUHJvcH0gZnJvbSAnLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuXG50eXBlIEtlcGxlckdsQWN0aW9ucyA9IHtcbiAgdmlzU3RhdGVBY3Rpb25zOiB0eXBlb2YgVmlzU3RhdGVBY3Rpb25zO1xuICBtYXBTdGF0ZUFjdGlvbnM6IHR5cGVvZiBNYXBTdGF0ZUFjdGlvbnM7XG4gIG1hcFN0eWxlQWN0aW9uczogdHlwZW9mIE1hcFN0eWxlQWN0aW9ucztcbiAgdWlTdGF0ZUFjdGlvbnM6IHR5cGVvZiBVSVN0YXRlQWN0aW9ucztcbiAgcHJvdmlkZXJBY3Rpb25zOiB0eXBlb2YgUHJvdmlkZXJBY3Rpb25zO1xufTtcblxuaW1wb3J0IHtcbiAgRElNRU5TSU9OUyxcbiAgS0VQTEVSX0dMX05BTUUsXG4gIEtFUExFUl9HTF9WRVJTSU9OLFxuICBUSEVNRSxcbiAgREVGQVVMVF9NQVBCT1hfQVBJX1VSTCxcbiAgR0VPQ09ERVJfREFUQVNFVF9OQU1FLFxuICBNSVNTSU5HX01BUEJPWF9UT0tFTlxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmltcG9ydCBTaWRlUGFuZWxGYWN0b3J5IGZyb20gJy4vc2lkZS1wYW5lbCc7XG5pbXBvcnQgTWFwQ29udGFpbmVyRmFjdG9yeSBmcm9tICcuL21hcC1jb250YWluZXInO1xuaW1wb3J0IE1hcHNMYXlvdXRGYWN0b3J5IGZyb20gJy4vbWFwcy1sYXlvdXQnO1xuaW1wb3J0IEJvdHRvbVdpZGdldEZhY3RvcnkgZnJvbSAnLi9ib3R0b20td2lkZ2V0JztcbmltcG9ydCBNb2RhbENvbnRhaW5lckZhY3RvcnkgZnJvbSAnLi9tb2RhbC1jb250YWluZXInO1xuaW1wb3J0IFBsb3RDb250YWluZXJGYWN0b3J5IGZyb20gJy4vcGxvdC1jb250YWluZXInO1xuaW1wb3J0IE5vdGlmaWNhdGlvblBhbmVsRmFjdG9yeSBmcm9tICcuL25vdGlmaWNhdGlvbi1wYW5lbCc7XG5pbXBvcnQgR2VvQ29kZXJQYW5lbEZhY3RvcnkgZnJvbSAnLi9nZW9jb2Rlci1wYW5lbCc7XG5pbXBvcnQgRWZmZWN0TWFuYWdlckZhY3RvcnkgZnJvbSAnLi9lZmZlY3RzL2VmZmVjdC1tYW5hZ2VyJztcbmltcG9ydCBEbmRDb250ZXh0RmFjdG9yeSBmcm9tICcuL2RuZC1jb250ZXh0JztcbmltcG9ydCB7Q2xvdWRMaXN0UHJvdmlkZXJ9IGZyb20gJy4vaG9va3MvdXNlLWNsb3VkLWxpc3QtcHJvdmlkZXInO1xuXG5pbXBvcnQge1xuICBmaWx0ZXJPYmplY3RCeVByZWRpY2F0ZSxcbiAgdmFsaWRhdGVUb2tlbixcbiAgbWVyZ2VNZXNzYWdlcyxcbiAgb2JzZXJ2ZURpbWVuc2lvbnMsXG4gIHVub2JzZXJ2ZURpbWVuc2lvbnMsXG4gIGhhc1BvcnRhYmxlV2lkdGgsXG4gIGdldEFwcGxpY2F0aW9uQ29uZmlnXG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuXG5pbXBvcnQge3RoZW1lIGFzIGJhc2ljVGhlbWUsIHRoZW1lTFQsIHRoZW1lQlMsIGJyZWFrUG9pbnRWYWx1ZXN9IGZyb20gJ0BrZXBsZXIuZ2wvc3R5bGVzJztcbmltcG9ydCB7S2VwbGVyR2xTdGF0ZX0gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG5pbXBvcnQge1Byb3ZpZGVyfSBmcm9tICdAa2VwbGVyLmdsL2Nsb3VkLXByb3ZpZGVycyc7XG5cbi8vIE1heWJlIHdlIHNob3VsZCB0aGluayBhYm91dCBleHBvcnRpbmcgdGhpcyBvciBjcmVhdGluZyBhIHZhcmlhYmxlXG4vLyBhcyBwYXJ0IG9mIHRoZSBiYXNlLmpzIHRoZW1lXG5jb25zdCBHbG9iYWxTdHlsZSA9IHN0eWxlZC5kaXZgXG4gIGZvbnQtZmFtaWx5OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmZvbnRGYW1pbHl9O1xuICBmb250LXdlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5mb250V2VpZ2h0fTtcbiAgZm9udC1zaXplOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmZvbnRTaXplfTtcbiAgbGluZS1oZWlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGluZUhlaWdodH07XG5cbiAgKixcbiAgKjpiZWZvcmUsXG4gICo6YWZ0ZXIge1xuICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuXG4gIHVsIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gIGxpIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cblxuICBhIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGFiZWxDb2xvcn07XG4gIH1cblxuICA6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAubWFwbGlicmVnbC1jdHJsIC5tYXBsaWJyZWdsLWN0cmwtbG9nbyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC5tYXBib3hnbC1jdHJsIC5tYXBib3hnbC1jdHJsLWxvZ28ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbmA7XG5cbnR5cGUgQm90dG9tV2lkZ2V0T3V0ZXJQcm9wcyA9IHtcbiAgYWJzb2x1dGU/OiBib29sZWFuO1xufTtcblxuY29uc3QgQm90dG9tV2lkZ2V0T3V0ZXIgPSBzdHlsZWQuZGl2PEJvdHRvbVdpZGdldE91dGVyUHJvcHM+KFxuICAoe2Fic29sdXRlfSkgPT4gYFxuICAke2Fic29sdXRlID8gJ3Bvc2l0aW9uOiBhYnNvbHV0ZTsgYm90dG9tOiAwOyByaWdodDogMDsnIDogJyd9XG4gIHBvaW50ZXItZXZlbnRzOiBub25lOyAvKiBwcmV2ZW50IHBhZGRpbmcgZnJvbSBibG9ja2luZyBpbnB1dCAqL1xuICAmID4gKiB7XG4gICAgLyogYWxsIGNoaWxkcmVuIHNob3VsZCBhbGxvdyBpbnB1dCAqL1xuICAgIHBvaW50ZXItZXZlbnRzOiBhbGw7XG4gIH1gXG4pO1xuXG5leHBvcnQgY29uc3QgaXNWaWV3cG9ydERpc2pvaW50ZWQgPSBwcm9wcyA9PiB7XG4gIHJldHVybiAoXG4gICAgcHJvcHMubWFwU3RhdGUuaXNTcGxpdCAmJlxuICAgICFwcm9wcy5tYXBTdGF0ZS5pc1ZpZXdwb3J0U3luY2VkICYmXG4gICAgcHJvcHMubWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubGVuZ3RoID4gMVxuICApO1xufTtcblxudHlwZSBNYXBTdGF0ZVByb3BzID0ge1xuICBtYXBTdGF0ZTogTWFwU3RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgbWFwU3RhdGVTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICBbKHByb3BzOiBNYXBTdGF0ZVByb3BzKSA9PiBwcm9wcy5tYXBTdGF0ZSwgKF86IE1hcFN0YXRlUHJvcHMsIGluZGV4PzogbnVtYmVyKSA9PiBpbmRleF0sXG4gIChtYXBTdGF0ZTogTWFwU3RhdGUsIGluZGV4PzogbnVtYmVyKTogTWFwU3RhdGUgPT4ge1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKGluZGV4KSkge1xuICAgICAgLy8gZWl0aGVyIG5vIGluZGV4IGFyZyBvciBhbiBpbnZhbGlkIGluZGV4IHdhcyBwcm92aWRlZFxuICAgICAgLy8gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZWl0aGVyIDAgb3IgMSB3aGVuIGluIHNwbGl0IG1vZGVcbiAgICAgIC8vIG9ubHkgdXNlIHRoZSBtYXBTdGF0ZVxuICAgICAgcmV0dXJuIG1hcFN0YXRlO1xuICAgIH1cblxuICAgIHJldHVybiBpc1ZpZXdwb3J0RGlzam9pbnRlZCh7bWFwU3RhdGV9KVxuICAgICAgPyAvLyBtaXggdG9nZXRoZXIgdGhlIHZpZXdwb3J0IHByb3BlcnRpZXMgaW50ZW5kZWQgZm9yIHRoaXMgZGlzam9pbnRlZCA8TWFwQ29udGFpbmVyPiB3aXRoIHRoZSBvdGhlciBuZWNlc3NhcnkgbWFwU3RhdGUgcHJvcGVydGllc1xuICAgICAgICB7Li4ubWFwU3RhdGUsIC4uLm1hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzW2luZGV4IHx8IDBdfVxuICAgICAgOiAvLyBvdGhlcndpc2Ugb25seSB1c2UgdGhlIG1hcFN0YXRlXG4gICAgICAgIG1hcFN0YXRlO1xuICB9XG4pO1xuXG5leHBvcnQgY29uc3QgbWFwRmllbGRzU2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMsIGluZGV4ID0gMCkgPT4ge1xuICBjb25zdCBhdHRyaWJ1dGlvbiA9IGF0dHJpYnV0aW9uU2VsZWN0b3IocHJvcHMpO1xuICByZXR1cm4ge1xuICAgIGdldE1hcGJveFJlZjogcHJvcHMuZ2V0TWFwYm94UmVmLFxuICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBwcm9wcy5tYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICBtYXBib3hBcGlVcmw6IHByb3BzLm1hcGJveEFwaVVybCA/IHByb3BzLm1hcGJveEFwaVVybCA6IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTLm1hcGJveEFwaVVybCxcbiAgICBtYXBTdGF0ZTogbWFwU3RhdGVTZWxlY3Rvcihwcm9wcywgaW5kZXgpLFxuICAgIGRhdGFzZXRBdHRyaWJ1dGlvbnM6IGF0dHJpYnV0aW9uLnNvdXJjZXMsXG4gICAgYXR0cmlidXRpb25Mb2dvczogYXR0cmlidXRpb24ubG9nb3MsXG4gICAgbWFwU3R5bGU6IHByb3BzLm1hcFN0eWxlLFxuICAgIG9uRGVja0luaXRpYWxpemVkOiBwcm9wcy5vbkRlY2tJbml0aWFsaXplZCxcbiAgICBvblZpZXdTdGF0ZUNoYW5nZTogcHJvcHMub25WaWV3U3RhdGVDaGFuZ2UsXG4gICAgb25Nb3VzZU1vdmU6IHByb3BzLm9uTW91c2VNb3ZlLFxuICAgIGRlY2tHbFByb3BzOiBwcm9wcy5kZWNrR2xQcm9wcyxcbiAgICB1aVN0YXRlQWN0aW9uczogcHJvcHMudWlTdGF0ZUFjdGlvbnMsXG4gICAgdmlzU3RhdGVBY3Rpb25zOiBwcm9wcy52aXNTdGF0ZUFjdGlvbnMsXG4gICAgbWFwU3RhdGVBY3Rpb25zOiBwcm9wcy5tYXBTdGF0ZUFjdGlvbnMsXG5cbiAgICAvLyB2aXNTdGF0ZVxuICAgIHZpc1N0YXRlOiBwcm9wcy52aXNTdGF0ZSxcblxuICAgIC8vIHVpU3RhdGVcbiAgICBhY3RpdmVTaWRlUGFuZWw6IHByb3BzLnVpU3RhdGUuYWN0aXZlU2lkZVBhbmVsLFxuICAgIG1hcENvbnRyb2xzOiBwcm9wcy51aVN0YXRlLm1hcENvbnRyb2xzLFxuICAgIHJlYWRPbmx5OiBwcm9wcy51aVN0YXRlLnJlYWRPbmx5LFxuICAgIGxvY2FsZTogcHJvcHMudWlTdGF0ZS5sb2NhbGUsXG4gICAgdWlUaGVtZTogcHJvcHMudWlTdGF0ZS50aGVtZSxcbiAgICBpc0xvYWRpbmdJbmRpY2F0b3JWaXNpYmxlOiBOdW1iZXIocHJvcHMudmlzU3RhdGUubG9hZGluZ0luZGljYXRvclZhbHVlKSA+IDAsXG4gICAgc2lkZVBhbmVsV2lkdGg6IHByb3BzLnNpZGVQYW5lbFdpZHRoID8gcHJvcHMuc2lkZVBhbmVsV2lkdGggOiBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy53aWR0aCxcblxuICAgIC8vIG1hcFN0eWxlXG4gICAgdG9wTWFwQ29udGFpbmVyUHJvcHM6IHByb3BzLnRvcE1hcENvbnRhaW5lclByb3BzLFxuICAgIGJvdHRvbU1hcENvbnRhaW5lclByb3BzOiBwcm9wcy5ib3R0b21NYXBDb250YWluZXJQcm9wcyxcblxuICAgIC8vIHRyYW5zZm9ybVJlcXVlc3QgZm9yIE1hcGJveCBiYXNlbWFwc1xuICAgIHRyYW5zZm9ybVJlcXVlc3Q6IHByb3BzLnRyYW5zZm9ybVJlcXVlc3QsXG5cbiAgICBSVExUZXh0UGx1Z2luOiBwcm9wcy5SVExUZXh0UGx1Z2luXG4gIH07XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmlzaWJsZURhdGFzZXRzKGRhdGFzZXRzKSB7XG4gIC8vIFdlIGRvbid0IHdhbnQgR2VvY29kZXIgZGF0YXNldCB0byBiZSBwcmVzZW50IGluIFNpZGVQYW5lbCBkYXRhc2V0IGxpc3RcbiAgcmV0dXJuIGZpbHRlck9iamVjdEJ5UHJlZGljYXRlKGRhdGFzZXRzLCBrZXkgPT4ga2V5ICE9PSBHRU9DT0RFUl9EQVRBU0VUX05BTUUpO1xufVxuXG5leHBvcnQgY29uc3Qgc2lkZVBhbmVsU2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMsIGF2YWlsYWJsZVByb3ZpZGVycywgZmlsdGVyZWREYXRhc2V0cykgPT4gKHtcbiAgYXBwTmFtZTogcHJvcHMuYXBwTmFtZSA/IHByb3BzLmFwcE5hbWUgOiBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy5hcHBOYW1lLFxuICB2ZXJzaW9uOiBwcm9wcy52ZXJzaW9uID8gcHJvcHMudmVyc2lvbiA6IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTLnZlcnNpb24sXG4gIGFwcFdlYnNpdGU6IHByb3BzLmFwcFdlYnNpdGUsXG4gIG1hcFN0eWxlOiBwcm9wcy5tYXBTdHlsZSxcbiAgbWFwU3RhdGU6IHByb3BzLm1hcFN0YXRlLFxuICBvblNhdmVNYXA6IHByb3BzLm9uU2F2ZU1hcCxcbiAgdWlTdGF0ZTogcHJvcHMudWlTdGF0ZSxcbiAgbWFwU3R5bGVBY3Rpb25zOiBwcm9wcy5tYXBTdHlsZUFjdGlvbnMsXG4gIHZpc1N0YXRlQWN0aW9uczogcHJvcHMudmlzU3RhdGVBY3Rpb25zLFxuICB1aVN0YXRlQWN0aW9uczogcHJvcHMudWlTdGF0ZUFjdGlvbnMsXG4gIG1hcFN0YXRlQWN0aW9uczogcHJvcHMubWFwU3RhdGVBY3Rpb25zLFxuXG4gIGRhdGFzZXRzOiBmaWx0ZXJlZERhdGFzZXRzLFxuICBmaWx0ZXJzOiBwcm9wcy52aXNTdGF0ZS5maWx0ZXJzLFxuICBsYXllcnM6IHByb3BzLnZpc1N0YXRlLmxheWVycyxcbiAgbGF5ZXJPcmRlcjogcHJvcHMudmlzU3RhdGUubGF5ZXJPcmRlcixcbiAgbGF5ZXJDbGFzc2VzOiBwcm9wcy52aXNTdGF0ZS5sYXllckNsYXNzZXMsXG4gIGludGVyYWN0aW9uQ29uZmlnOiBwcm9wcy52aXNTdGF0ZS5pbnRlcmFjdGlvbkNvbmZpZyxcbiAgbWFwSW5mbzogcHJvcHMudmlzU3RhdGUubWFwSW5mbyxcbiAgbGF5ZXJCbGVuZGluZzogcHJvcHMudmlzU3RhdGUubGF5ZXJCbGVuZGluZyxcbiAgb3ZlcmxheUJsZW5kaW5nOiBwcm9wcy52aXNTdGF0ZS5vdmVybGF5QmxlbmRpbmcsXG5cbiAgd2lkdGg6IHByb3BzLnNpZGVQYW5lbFdpZHRoID8gcHJvcHMuc2lkZVBhbmVsV2lkdGggOiBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy53aWR0aCxcbiAgYXZhaWxhYmxlUHJvdmlkZXJzLFxuICBtYXBTYXZlZDogcHJvcHMucHJvdmlkZXJTdGF0ZS5tYXBTYXZlZFxufSk7XG5cbmV4cG9ydCBjb25zdCBwbG90Q29udGFpbmVyU2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMpID0+ICh7XG4gIHdpZHRoOiBwcm9wcy53aWR0aCxcbiAgaGVpZ2h0OiBwcm9wcy5oZWlnaHQsXG4gIHJhdGlvOiBwcm9wcy51aVN0YXRlLmV4cG9ydEltYWdlLnJhdGlvLFxuICByZXNvbHV0aW9uOiBwcm9wcy51aVN0YXRlLmV4cG9ydEltYWdlLnJlc29sdXRpb24sXG4gIGxlZ2VuZDogcHJvcHMudWlTdGF0ZS5leHBvcnRJbWFnZS5sZWdlbmQsXG4gIGNlbnRlcjogcHJvcHMudWlTdGF0ZS5leHBvcnRJbWFnZS5jZW50ZXIsXG4gIGltYWdlU2l6ZTogcHJvcHMudWlTdGF0ZS5leHBvcnRJbWFnZS5pbWFnZVNpemUsXG4gIGVzY2FwZVhodG1sRm9yV2VicGFjazogcHJvcHMudWlTdGF0ZS5leHBvcnRJbWFnZS5lc2NhcGVYaHRtbEZvcldlYnBhY2ssXG5cbiAgbWFwRmllbGRzOiBtYXBGaWVsZHNTZWxlY3Rvcihwcm9wcyksXG4gIGFkZE5vdGlmaWNhdGlvbjogcHJvcHMudWlTdGF0ZUFjdGlvbnMuYWRkTm90aWZpY2F0aW9uLFxuICBzZXRFeHBvcnRJbWFnZVNldHRpbmc6IHByb3BzLnVpU3RhdGVBY3Rpb25zLnNldEV4cG9ydEltYWdlU2V0dGluZyxcbiAgc2V0RXhwb3J0SW1hZ2VEYXRhVXJpOiBwcm9wcy51aVN0YXRlQWN0aW9ucy5zZXRFeHBvcnRJbWFnZURhdGFVcmksXG4gIHNldEV4cG9ydEltYWdlRXJyb3I6IHByb3BzLnVpU3RhdGVBY3Rpb25zLnNldEV4cG9ydEltYWdlRXJyb3IsXG4gIHNwbGl0TWFwczogcHJvcHMudmlzU3RhdGUuc3BsaXRNYXBzXG59KTtcblxuZXhwb3J0IGNvbnN0IGlzU3BsaXRTZWxlY3RvciA9IChwcm9wczogS2VwbGVyR0xQcm9wcykgPT5cbiAgcHJvcHMudmlzU3RhdGUuc3BsaXRNYXBzICYmIHByb3BzLnZpc1N0YXRlLnNwbGl0TWFwcy5sZW5ndGggPiAxO1xuXG5leHBvcnQgY29uc3QgYm90dG9tV2lkZ2V0U2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMsIHRoZW1lKSA9PiAoe1xuICBmaWx0ZXJzOiBwcm9wcy52aXNTdGF0ZS5maWx0ZXJzLFxuICBkYXRhc2V0czogcHJvcHMudmlzU3RhdGUuZGF0YXNldHMsXG4gIHVpU3RhdGU6IHByb3BzLnVpU3RhdGUsXG4gIGxheWVyczogcHJvcHMudmlzU3RhdGUubGF5ZXJzLFxuICBhbmltYXRpb25Db25maWc6IHByb3BzLnZpc1N0YXRlLmFuaW1hdGlvbkNvbmZpZyxcbiAgdmlzU3RhdGVBY3Rpb25zOiBwcm9wcy52aXNTdGF0ZUFjdGlvbnMsXG4gIHRvZ2dsZU1vZGFsOiBwcm9wcy51aVN0YXRlQWN0aW9ucy50b2dnbGVNb2RhbCxcbiAgc2lkZVBhbmVsV2lkdGg6IHByb3BzLnVpU3RhdGUucmVhZE9ubHkgPyAwIDogcHJvcHMuc2lkZVBhbmVsV2lkdGggKyB0aGVtZS5zaWRlUGFuZWwubWFyZ2luLmxlZnRcbn0pO1xuXG5leHBvcnQgY29uc3QgbW9kYWxDb250YWluZXJTZWxlY3RvciA9IChwcm9wczogS2VwbGVyR0xQcm9wcywgcm9vdE5vZGUpID0+ICh7XG4gIGFwcE5hbWU6IHByb3BzLmFwcE5hbWUgPyBwcm9wcy5hcHBOYW1lIDogREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMuYXBwTmFtZSxcbiAgbWFwU3R5bGU6IHByb3BzLm1hcFN0eWxlLFxuICB2aXNTdGF0ZTogcHJvcHMudmlzU3RhdGUsXG4gIG1hcFN0YXRlOiBwcm9wcy5tYXBTdGF0ZSxcbiAgdWlTdGF0ZTogcHJvcHMudWlTdGF0ZSxcbiAgcHJvdmlkZXJTdGF0ZTogcHJvcHMucHJvdmlkZXJTdGF0ZSxcblxuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogcHJvcHMubWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gIG1hcGJveEFwaVVybDogcHJvcHMubWFwYm94QXBpVXJsLFxuICB2aXNTdGF0ZUFjdGlvbnM6IHByb3BzLnZpc1N0YXRlQWN0aW9ucyxcbiAgdWlTdGF0ZUFjdGlvbnM6IHByb3BzLnVpU3RhdGVBY3Rpb25zLFxuICBtYXBTdHlsZUFjdGlvbnM6IHByb3BzLm1hcFN0eWxlQWN0aW9ucyxcbiAgcHJvdmlkZXJBY3Rpb25zOiBwcm9wcy5wcm92aWRlckFjdGlvbnMsXG5cbiAgcm9vdE5vZGUsXG4gIC8vIFVzZXIgZGVmaW5lZCBjbG91ZCBwcm92aWRlciBwcm9wc1xuICBjbG91ZFByb3ZpZGVyczogcHJvcHMuY2xvdWRQcm92aWRlcnNcbiAgICA/IHByb3BzLmNsb3VkUHJvdmlkZXJzXG4gICAgOiBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy5jbG91ZFByb3ZpZGVycyxcbiAgb25FeHBvcnRUb0Nsb3VkU3VjY2VzczogcHJvcHMub25FeHBvcnRUb0Nsb3VkU3VjY2VzcyxcbiAgb25Mb2FkQ2xvdWRNYXBTdWNjZXNzOiBwcm9wcy5vbkxvYWRDbG91ZE1hcFN1Y2Nlc3MsXG4gIG9uTG9hZENsb3VkTWFwRXJyb3I6IHByb3BzLm9uTG9hZENsb3VkTWFwRXJyb3IsXG4gIG9uRXhwb3J0VG9DbG91ZEVycm9yOiBwcm9wcy5vbkV4cG9ydFRvQ2xvdWRFcnJvclxufSk7XG5cbmV4cG9ydCBjb25zdCBnZW9Db2RlclBhbmVsU2VsZWN0b3IgPSAoXG4gIHByb3BzOiBLZXBsZXJHTFByb3BzLFxuICBkaW1lbnNpb25zOiB7d2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXJ9XG4pID0+ICh7XG4gIGlzR2VvY29kZXJFbmFibGVkOiBwcm9wcy52aXNTdGF0ZS5pbnRlcmFjdGlvbkNvbmZpZy5nZW9jb2Rlci5lbmFibGVkLFxuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogcHJvcHMubWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gIG1hcFN0YXRlOiBwcm9wcy5tYXBTdGF0ZSxcbiAgdWlTdGF0ZTogcHJvcHMudWlTdGF0ZSxcbiAgbGF5ZXJPcmRlcjogcHJvcHMudmlzU3RhdGUubGF5ZXJPcmRlcixcbiAgdXBkYXRlVmlzRGF0YTogcHJvcHMudmlzU3RhdGVBY3Rpb25zLnVwZGF0ZVZpc0RhdGEsXG4gIHJlbW92ZURhdGFzZXQ6IHByb3BzLnZpc1N0YXRlQWN0aW9ucy5yZW1vdmVEYXRhc2V0LFxuICB1cGRhdGVNYXA6IHByb3BzLm1hcFN0YXRlQWN0aW9ucy51cGRhdGVNYXAsXG4gIGFwcFdpZHRoOiBkaW1lbnNpb25zLndpZHRoLFxuICBsaW1pdFNlYXJjaDogcHJvcHMudmlzU3RhdGUuaW50ZXJhY3Rpb25Db25maWcuZ2VvY29kZXIuY29uZmlnPy5saW1pdFNlYXJjaCA/PyBmYWxzZVxufSk7XG5cbi8qKlxuICogUmV0dXJucyBhcnJheSBvZiB1bmlxdWUgZGF0YXNldCBhdHRyaWJ1dGlvbnMsIGVhY2ggd2l0aCB0aXRsZSBhbmQgdXJsIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBkYXRhc2V0QXR0cmlidXRpb25TZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICBbc3RhdGUgPT4gc3RhdGUudmlzU3RhdGUuZGF0YXNldHNdLFxuICBkYXRhc2V0cyA9PiB7XG4gICAgY29uc3QgdW5pcXVlQXR0cmlidXRpb25zOiBEYXRhc2V0QXR0cmlidXRpb25bXSA9IFtdO1xuICAgIE9iamVjdC5rZXlzKGRhdGFzZXRzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBjb25zdCBkcyA9IGRhdGFzZXRzW2tleV07XG4gICAgICBjb25zdCBhdHRyaWJ1dGlvbnMgPSBkcz8ubWV0YWRhdGE/LmF0dHJpYnV0aW9ucztcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGF0dHJpYnV0aW9ucykpIHtcbiAgICAgICAgYXR0cmlidXRpb25zLmZvckVhY2goYXR0cmlidXRpb24gPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgYXR0cmlidXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAvLyBhdHRyaWJ1dGlvbiBjYW4gYmUgYSByYXcgc3RyaW5nIG9yIGEgc3RyaW5nIHdpdGggbGluayB0YWdzXG4gICAgICAgICAgICBjb25zdCBsaW5rcyA9IGF0dHJpYnV0aW9uLm1hdGNoKC88YVteXSs/YT4vZyk7XG4gICAgICAgICAgICBpZiAobGlua3MpIHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsaW5rcz8uZm9yRWFjaChsaW5rID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGhyZWYgPSBsaW5rLm1hdGNoKC9ocmVmPVwiKFteXCJdKikvKT8uWzFdO1xuICAgICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSBsaW5rLm1hdGNoKC90aXRsZT1cIihbXlwiXSopLyk/LlsxXTtcbiAgICAgICAgICAgICAgICAgIGlmIChocmVmICYmIHRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHVuaXF1ZUF0dHJpYnV0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYCR7bGluay5pbmRleE9mKCcmY29weTsnKSA+PSAwID8gJ8KpICcgOiAnJ30ke3RpdGxlfWAsXG4gICAgICAgICAgICAgICAgICAgICAgdXJsOiBocmVmXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIC8vIGp1c3QgaWdub3JlIGZvciBub3dcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdW5pcXVlQXR0cmlidXRpb25zLnB1c2goe3RpdGxlOiBhdHRyaWJ1dGlvbiwgdXJsOiBudWxsfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdW5pcXVlQXR0cmlidXRpb25zO1xuICB9XG4pO1xuXG4vKipcbiAqIENvbGxlY3QgdW5pcXVlIGxheWVyLWxldmVsIGF0dHJpYnV0aW9ucyBmcm9tIHZpc2libGUgbGF5ZXJzLlxuICogQnVpbGRzIGEgc2VyaWFsaXplZCBjYWNoZSBrZXkgZnJvbSBhdHRyaWJ1dGlvbiB2YWx1ZXMgc28gY3JlYXRlU2VsZWN0b3JcbiAqIGNhbiBkZXRlY3QgaW4tcGxhY2UgbXV0YXRpb25zIHRvIGxheWVyLm1ldGEuXG4gKi9cbmNvbnN0IGxheWVyQXR0cmlidXRpb25LZXlTZWxlY3RvciA9IChzdGF0ZTogYW55KTogc3RyaW5nID0+IHtcbiAgY29uc3QgbGF5ZXJzOiBhbnlbXSA9IHN0YXRlLnZpc1N0YXRlPy5sYXllcnM7XG4gIGlmICghbGF5ZXJzKSByZXR1cm4gJyc7XG4gIGxldCBrZXkgPSAnJztcbiAgZm9yIChjb25zdCBsYXllciBvZiBsYXllcnMpIHtcbiAgICBpZiAobGF5ZXIuY29uZmlnPy5pc1Zpc2libGUgJiYgbGF5ZXIubWV0YT8uYXR0cmlidXRpb24pIHtcbiAgICAgIGNvbnN0IGEgPSBsYXllci5tZXRhLmF0dHJpYnV0aW9uO1xuICAgICAga2V5ICs9IGAke2EudGl0bGV9XFwwJHthLnVybH1cXDAke2EubG9nb1VybCA/PyAnJ31cXDBgO1xuICAgIH1cbiAgfVxuICByZXR1cm4ga2V5O1xufTtcblxuZXhwb3J0IGNvbnN0IGxheWVyQXR0cmlidXRpb25TZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICBbKHN0YXRlOiBhbnkpID0+IHN0YXRlLnZpc1N0YXRlPy5sYXllcnMsIGxheWVyQXR0cmlidXRpb25LZXlTZWxlY3Rvcl0sXG4gIChsYXllcnM6IGFueVtdKTogQXR0cmlidXRpb25XaXRoU3R5bGVbXSA9PiB7XG4gICAgY29uc3QgYXR0cmlidXRpb25zOiBBdHRyaWJ1dGlvbldpdGhTdHlsZVtdID0gW107XG4gICAgaWYgKCFsYXllcnMpIHJldHVybiBhdHRyaWJ1dGlvbnM7XG4gICAgZm9yIChjb25zdCBsYXllciBvZiBsYXllcnMpIHtcbiAgICAgIGlmIChsYXllci5jb25maWc/LmlzVmlzaWJsZSAmJiBsYXllci5tZXRhPy5hdHRyaWJ1dGlvbikge1xuICAgICAgICBjb25zdCBhdHRyID0gbGF5ZXIubWV0YS5hdHRyaWJ1dGlvbjtcbiAgICAgICAgaWYgKGF0dHIudGl0bGUgJiYgIWF0dHJpYnV0aW9ucy5maW5kKGEgPT4gYS50aXRsZSA9PT0gYXR0ci50aXRsZSAmJiBhLnVybCA9PT0gYXR0ci51cmwpKSB7XG4gICAgICAgICAgYXR0cmlidXRpb25zLnB1c2goYXR0cik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGF0dHJpYnV0aW9ucztcbiAgfVxuKTtcblxuZXhwb3J0IGNvbnN0IGF0dHJpYnV0aW9uU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgW2RhdGFzZXRBdHRyaWJ1dGlvblNlbGVjdG9yLCBsYXllckF0dHJpYnV0aW9uU2VsZWN0b3JdLFxuICAoXG4gICAgZGF0YXNldEF0dHJpYnV0aW9uczogRGF0YXNldEF0dHJpYnV0aW9uW10sXG4gICAgbGF5ZXJBdHRyaWJ1dGlvbnM6IEF0dHJpYnV0aW9uV2l0aFN0eWxlW11cbiAgKToge1xuICAgIHNvdXJjZXM6IERhdGFzZXRBdHRyaWJ1dGlvbltdO1xuICAgIGxvZ29zOiBBdHRyaWJ1dGlvbldpdGhTdHlsZVtdO1xuICB9ID0+IHtcbiAgICBjb25zdCB1bmlxdWVUZXh0QXR0cmlidXRpb25zOiBEYXRhc2V0QXR0cmlidXRpb25bXSA9IFsuLi5kYXRhc2V0QXR0cmlidXRpb25zXTtcbiAgICBjb25zdCBsb2dvczogQXR0cmlidXRpb25XaXRoU3R5bGVbXSA9IFtdO1xuXG4gICAgbGF5ZXJBdHRyaWJ1dGlvbnMuZm9yRWFjaChsYXllckF0dHJpYnV0aW9uID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIXVuaXF1ZVRleHRBdHRyaWJ1dGlvbnMuZmluZChcbiAgICAgICAgICBhID0+IGEudGl0bGUgPT09IGxheWVyQXR0cmlidXRpb24udGl0bGUgJiYgYS51cmwgPT09IGxheWVyQXR0cmlidXRpb24udXJsXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgICB1bmlxdWVUZXh0QXR0cmlidXRpb25zLnB1c2goe3RpdGxlOiBsYXllckF0dHJpYnV0aW9uLnRpdGxlLCB1cmw6IGxheWVyQXR0cmlidXRpb24udXJsfSk7XG4gICAgICB9XG4gICAgICBpZiAobGF5ZXJBdHRyaWJ1dGlvbi5sb2dvVXJsICYmICFsb2dvcy5maW5kKGEgPT4gYS5sb2dvVXJsID09PSBsYXllckF0dHJpYnV0aW9uLmxvZ29VcmwpKSB7XG4gICAgICAgIGxvZ29zLnB1c2gobGF5ZXJBdHRyaWJ1dGlvbik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge3NvdXJjZXM6IHVuaXF1ZVRleHRBdHRyaWJ1dGlvbnMsIGxvZ29zfTtcbiAgfVxuKTtcblxuZXhwb3J0IGNvbnN0IG5vdGlmaWNhdGlvblBhbmVsU2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMpID0+ICh7XG4gIHJlbW92ZU5vdGlmaWNhdGlvbjogcHJvcHMudWlTdGF0ZUFjdGlvbnMucmVtb3ZlTm90aWZpY2F0aW9uLFxuICBub3RpZmljYXRpb25zOiBwcm9wcy51aVN0YXRlLm5vdGlmaWNhdGlvbnNcbn0pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMgPSB7XG4gIG1hcFN0eWxlczogW10sXG4gIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0OiBmYWxzZSxcbiAgbWFwYm94QXBpVXJsOiBERUZBVUxUX01BUEJPWF9BUElfVVJMLFxuICB3aWR0aDogODAwLFxuICBoZWlnaHQ6IDgwMCxcbiAgYXBwTmFtZTogS0VQTEVSX0dMX05BTUUsXG4gIHZlcnNpb246IEtFUExFUl9HTF9WRVJTSU9OLFxuICBzaWRlUGFuZWxXaWR0aDogRElNRU5TSU9OUy5zaWRlUGFuZWwud2lkdGgsXG4gIHRoZW1lOiB7fSxcbiAgY2xvdWRQcm92aWRlcnM6IFtdLFxuICByZWFkT25seTogZmFsc2UsXG4gIGZlYXR1cmVGbGFnczoge31cbn07XG5cbnR5cGUgS2VwbGVyR0xCYXNpY1Byb3BzID0ge1xuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogc3RyaW5nO1xuICBtYXBib3hBcGlVcmw/OiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG4gIHdpZHRoPzogbnVtYmVyO1xuICBoZWlnaHQ/OiBudW1iZXI7XG5cbiAgYXBwV2Vic2l0ZT86IGFueTtcbiAgb25TYXZlTWFwPzogKCkgPT4gdm9pZDtcbiAgb25WaWV3U3RhdGVDaGFuZ2U/OiAodmlld1N0YXRlOiBWaWV3cG9ydCkgPT4gdm9pZDtcbiAgb25EZWNrSW5pdGlhbGl6ZWQ/OiAoKSA9PiB2b2lkO1xuICBvbktlcGxlckdsSW5pdGlhbGl6ZWQ/OiAoKSA9PiB2b2lkO1xuICBnZXRNYXBib3hSZWY/OiAoKSA9PiBSZWFjdC5SZWZPYmplY3Q8YW55PjtcbiAgbWFwU3R5bGVzPzoge2lkOiBzdHJpbmc7IHN0eWxlPzogb2JqZWN0fVtdO1xuICBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdD86IGJvb2xlYW47XG4gIGFwcE5hbWU/OiBzdHJpbmc7XG4gIHZlcnNpb24/OiBzdHJpbmc7XG4gIHNpZGVQYW5lbFdpZHRoPzogbnVtYmVyO1xuICB0aGVtZT86IG9iamVjdDtcbiAgY2xvdWRQcm92aWRlcnM/OiBQcm92aWRlcltdO1xuICBkZWNrR2xQcm9wcz86IG9iamVjdDtcbiAgb25Mb2FkQ2xvdWRNYXBTdWNjZXNzPzogT25TdWNjZXNzQ2FsbEJhY2s7XG4gIG9uTG9hZENsb3VkTWFwRXJyb3I/OiBPbkVycm9yQ2FsbEJhY2s7XG4gIG9uTW91c2VNb3ZlPzogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50ICYge2xuZ0xhdD86IFtudW1iZXIsIG51bWJlcl19KSA9PiB2b2lkO1xuICBvbkV4cG9ydFRvQ2xvdWRTdWNjZXNzPzogT25TdWNjZXNzQ2FsbEJhY2s7XG4gIG9uRXhwb3J0VG9DbG91ZEVycm9yPzogT25FcnJvckNhbGxCYWNrO1xuICByZWFkT25seT86IGJvb2xlYW47XG4gIGZlYXR1cmVGbGFncz86IEZlYXR1cmVGbGFncztcblxuICBsb2NhbGVNZXNzYWdlcz86IHtba2V5OiBzdHJpbmddOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfX07XG4gIGRpc3BhdGNoOiBEaXNwYXRjaDxhbnk+O1xuXG4gIHRvcE1hcENvbnRhaW5lclByb3BzPzogb2JqZWN0O1xuICBib3R0b21NYXBDb250YWluZXJQcm9wcz86IG9iamVjdDtcblxuICB0cmFuc2Zvcm1SZXF1ZXN0PzogKHVybDogc3RyaW5nKSA9PiB7dXJsOiBzdHJpbmd9O1xuXG4gIC8qKiBQYXNzIGBmYWxzZWAgdG8gZGlzYWJsZSB0aGUgcmVtb3RlIFJUTCB0ZXh0IHBsdWdpbiwgb3IgYSBVUkwgc3RyaW5nIHRvIHNlbGYtaG9zdCBpdC4gKi9cbiAgUlRMVGV4dFBsdWdpbj86IHN0cmluZyB8IGZhbHNlO1xufTtcblxudHlwZSBLZXBsZXJHTFByb3BzID0gS2VwbGVyR2xTdGF0ZSAmIEtlcGxlckdsQWN0aW9ucyAmIEtlcGxlckdMQmFzaWNQcm9wcztcbnR5cGUgS2VwbGVyR0xDb21wU3RhdGUgPSB7XG4gIGRpbWVuc2lvbnM6IHt3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlcn0gfCBudWxsO1xufTtcblxuS2VwbGVyR2xGYWN0b3J5LmRlcHMgPSBbXG4gIEJvdHRvbVdpZGdldEZhY3RvcnksXG4gIEdlb0NvZGVyUGFuZWxGYWN0b3J5LFxuICBNYXBDb250YWluZXJGYWN0b3J5LFxuICBNYXBzTGF5b3V0RmFjdG9yeSxcbiAgTW9kYWxDb250YWluZXJGYWN0b3J5LFxuICBTaWRlUGFuZWxGYWN0b3J5LFxuICBQbG90Q29udGFpbmVyRmFjdG9yeSxcbiAgTm90aWZpY2F0aW9uUGFuZWxGYWN0b3J5LFxuICBEbmRDb250ZXh0RmFjdG9yeSxcbiAgRWZmZWN0TWFuYWdlckZhY3Rvcnlcbl07XG5cbmZ1bmN0aW9uIEtlcGxlckdsRmFjdG9yeShcbiAgQm90dG9tV2lkZ2V0OiBSZXR1cm5UeXBlPHR5cGVvZiBCb3R0b21XaWRnZXRGYWN0b3J5PixcbiAgR2VvQ29kZXJQYW5lbDogUmV0dXJuVHlwZTx0eXBlb2YgR2VvQ29kZXJQYW5lbEZhY3Rvcnk+LFxuICBNYXBDb250YWluZXI6IFJldHVyblR5cGU8dHlwZW9mIE1hcENvbnRhaW5lckZhY3Rvcnk+LFxuICBNYXBzTGF5b3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBNYXBzTGF5b3V0RmFjdG9yeT4sXG4gIE1vZGFsQ29udGFpbmVyOiBSZXR1cm5UeXBlPHR5cGVvZiBNb2RhbENvbnRhaW5lckZhY3Rvcnk+LFxuICBTaWRlUGFuZWw6IFJldHVyblR5cGU8dHlwZW9mIFNpZGVQYW5lbEZhY3Rvcnk+LFxuICBQbG90Q29udGFpbmVyOiBSZXR1cm5UeXBlPHR5cGVvZiBQbG90Q29udGFpbmVyRmFjdG9yeT4sXG4gIE5vdGlmaWNhdGlvblBhbmVsOiBSZXR1cm5UeXBlPHR5cGVvZiBOb3RpZmljYXRpb25QYW5lbEZhY3Rvcnk+LFxuICBEbmRDb250ZXh0OiBSZXR1cm5UeXBlPHR5cGVvZiBEbmRDb250ZXh0RmFjdG9yeT5cbik6IFJlYWN0LkNvbXBvbmVudFR5cGU8S2VwbGVyR0xCYXNpY1Byb3BzICYge3NlbGVjdG9yOiAoLi4uYXJnczogYW55W10pID0+IEtlcGxlckdsU3RhdGV9PiB7XG4gIC8qKiBAdHlwZWRlZiB7aW1wb3J0KCcuL2tlcGxlci1nbCcpLlVuY29ubmVjdGVkS2VwbGVyR2xQcm9wc30gS2VwbGVyR2xQcm9wcyAqL1xuICAvKiogQGF1Z21lbnRzIFJlYWN0LkNvbXBvbmVudDxLZXBsZXJHbFByb3BzPiAqL1xuICBjbGFzcyBLZXBsZXJHTCBleHRlbmRzIENvbXBvbmVudDxcbiAgICBLZXBsZXJHTFByb3BzICYge3NlbGVjdG9yOiAoLi4uYXJnczogYW55W10pID0+IEtlcGxlckdsU3RhdGV9LFxuICAgIEtlcGxlckdMQ29tcFN0YXRlXG4gID4ge1xuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSBERUZBVUxUX0tFUExFUl9HTF9QUk9QUztcblxuICAgIHN0YXRlOiBLZXBsZXJHTENvbXBTdGF0ZSA9IHtcbiAgICAgIGRpbWVuc2lvbnM6IG51bGxcbiAgICB9O1xuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICBpZiAoZ2V0QXBwbGljYXRpb25Db25maWcoKS5iYXNlTWFwTGlicmFyeUNvbmZpZz8uWydtYXBib3gnXT8ubWFwTGliTmFtZSA9PT0gJ01hcGJveCcpIHtcbiAgICAgICAgdGhpcy5fdmFsaWRhdGVNYXBib3hUb2tlbigpO1xuICAgICAgfVxuICAgICAgdGhpcy5fbG9hZE1hcFN0eWxlKCk7XG4gICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25LZXBsZXJHbEluaXRpYWxpemVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25LZXBsZXJHbEluaXRpYWxpemVkKCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5yb290LmN1cnJlbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICBvYnNlcnZlRGltZW5zaW9ucyh0aGlzLnJvb3QuY3VycmVudCwgdGhpcy5faGFuZGxlUmVzaXplKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIGlmICh0aGlzLnJvb3QuY3VycmVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHVub2JzZXJ2ZURpbWVuc2lvbnModGhpcy5yb290LmN1cnJlbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIF9oYW5kbGVSZXNpemUgPSBkaW1lbnNpb25zID0+IHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe2RpbWVuc2lvbnN9KTtcbiAgICB9O1xuXG4gICAgc3RhdGljIGNvbnRleHRUeXBlID0gUm9vdENvbnRleHQ7XG5cbiAgICByb290ID0gY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4oKTtcbiAgICBib3R0b21XaWRnZXRSZWYgPSBjcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG5cbiAgICAvKiBzZWxlY3RvcnMgKi9cbiAgICB0aGVtZVNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMudGhlbWU7XG4gICAgdWlUaGVtZVNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMudWlTdGF0ZT8udGhlbWU7XG4gICAgYXZhaWxhYmxlVGhlbWVTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy50aGVtZVNlbGVjdG9yLFxuICAgICAgdGhpcy51aVRoZW1lU2VsZWN0b3IsXG4gICAgICAodGhlbWUsIHVpVGhlbWUpID0+IHtcbiAgICAgICAgLy8gV2hlbiB0aGVtZSB0b2dnbGUgaXMgZW5hYmxlZCwgdWlTdGF0ZS50aGVtZSBkcml2ZXMgbGlnaHQvZGFyayBzd2l0Y2hpbmcuXG4gICAgICAgIGNvbnN0IHRoZW1lSW5wdXQgPSBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmVuYWJsZVRoZW1lVG9nZ2xlXG4gICAgICAgICAgPyB1aVRoZW1lIHx8IFRIRU1FLmRhcmtcbiAgICAgICAgICA6IHRoZW1lO1xuXG4gICAgICAgIGlmICh0eXBlb2YgdGhlbWVJbnB1dCA9PT0gJ29iamVjdCcgJiYgdGhlbWVJbnB1dCAhPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5iYXNpY1RoZW1lLFxuICAgICAgICAgICAgLi4udGhlbWVJbnB1dFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoZW1lSW5wdXQgPT09IFRIRU1FLmxpZ2h0KSB7XG4gICAgICAgICAgcmV0dXJuIHRoZW1lTFQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoZW1lSW5wdXQgPT09IFRIRU1FLmJhc2UpIHtcbiAgICAgICAgICByZXR1cm4gdGhlbWVCUztcbiAgICAgICAgfVxuICAgICAgICAvLyBUSEVNRS5kYXJrIGFuZCB1bmtub3duIHZhbHVlcyBmYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgZGFyayB0aGVtZVxuICAgICAgICByZXR1cm4gYmFzaWNUaGVtZTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgZGF0YXNldHNTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLnZpc1N0YXRlLmRhdGFzZXRzO1xuICAgIGZpbHRlcmVkRGF0YXNldHNTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKHRoaXMuZGF0YXNldHNTZWxlY3RvciwgZ2V0VmlzaWJsZURhdGFzZXRzKTtcblxuICAgIGF2YWlsYWJsZVByb3ZpZGVycyA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgKHByb3BzOiBLZXBsZXJHTFByb3BzKSA9PiBwcm9wcy5jbG91ZFByb3ZpZGVycyxcbiAgICAgIHByb3ZpZGVycyA9PlxuICAgICAgICBBcnJheS5pc0FycmF5KHByb3ZpZGVycykgJiYgcHJvdmlkZXJzLmxlbmd0aFxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBoYXNTdG9yYWdlOiBwcm92aWRlcnMuc29tZShwID0+IHAuaGFzUHJpdmF0ZVN0b3JhZ2UoKSksXG4gICAgICAgICAgICAgIGhhc1NoYXJlOiBwcm92aWRlcnMuc29tZShwID0+IHAuaGFzU2hhcmluZ1VybCgpKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge31cbiAgICApO1xuXG4gICAgbG9jYWxlTWVzc2FnZXNTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgKHByb3BzOiBLZXBsZXJHTFByb3BzKSA9PiBwcm9wcy5sb2NhbGVNZXNzYWdlcyxcbiAgICAgIGN1c3RvbU1lc3NhZ2VzID0+IChjdXN0b21NZXNzYWdlcyA/IG1lcmdlTWVzc2FnZXMobWVzc2FnZXMsIGN1c3RvbU1lc3NhZ2VzKSA6IG1lc3NhZ2VzKVxuICAgICk7XG5cbiAgICAvKiBwcml2YXRlIG1ldGhvZHMgKi9cbiAgICBfdmFsaWRhdGVNYXBib3hUb2tlbigpIHtcbiAgICAgIGNvbnN0IHttYXBib3hBcGlBY2Nlc3NUb2tlbn0gPSB0aGlzLnByb3BzO1xuICAgICAgaWYgKCF2YWxpZGF0ZVRva2VuKG1hcGJveEFwaUFjY2Vzc1Rva2VuKSkge1xuICAgICAgICBDb25zb2xlLndhcm4oTUlTU0lOR19NQVBCT1hfVE9LRU4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIF9sb2FkTWFwU3R5bGUgPSAoKSA9PiB7XG4gICAgICBjb25zdCBkZWZhdWx0U3R5bGVzID0gT2JqZWN0LnZhbHVlcyh0aGlzLnByb3BzLm1hcFN0eWxlLm1hcFN0eWxlcyk7XG4gICAgICAvLyBhZGQgaWQgdG8gY3VzdG9tIG1hcCBzdHlsZXMgaWYgbm90IGdpdmVuXG4gICAgICBjb25zdCBjdXN0b21TdHlsZXMgPSAodGhpcy5wcm9wcy5tYXBTdHlsZXMgfHwgW10pLm1hcChtcyA9PiAoe1xuICAgICAgICAuLi5tcyxcbiAgICAgICAgaWQ6IG1zLmlkIHx8IGdlbmVyYXRlSGFzaElkKClcbiAgICAgIH0pKTtcblxuICAgICAgY29uc3QgYWxsU3R5bGVzID0gWy4uLmN1c3RvbVN0eWxlcywgLi4uZGVmYXVsdFN0eWxlc10ucmVkdWNlKChhY2N1LCBzdHlsZSkgPT4ge1xuICAgICAgICBhY2N1W3N0eWxlLmlkXSA9IHN0eWxlO1xuICAgICAgICByZXR1cm4gYWNjdTtcbiAgICAgIH0sIHt9KTtcblxuICAgICAgdGhpcy5wcm9wcy5tYXBTdHlsZUFjdGlvbnMubG9hZE1hcFN0eWxlcyhhbGxTdHlsZXMpO1xuICAgIH07XG5cbiAgICBfZGVsZXRlTWFwTGFiZWxzID0gKGNvbnRhaW5lcklkLCBsYXllcklkKSA9PiB7XG4gICAgICB0aGlzLnByb3BzLnZpc1N0YXRlQWN0aW9ucy50b2dnbGVMYXllckZvck1hcChjb250YWluZXJJZCwgbGF5ZXJJZCk7XG4gICAgfTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBpZCA9ICdtYXAnLFxuICAgICAgICB3aWR0aCA9IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTLndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy5oZWlnaHQsXG4gICAgICAgIHVpU3RhdGUsXG4gICAgICAgIHZpc1N0YXRlLFxuICAgICAgICAvLyByZWFkT25seSBvdmVycmlkZVxuICAgICAgICByZWFkT25seSxcblxuICAgICAgICAvLyBmZWF0dXJlc1xuICAgICAgICBmZWF0dXJlRmxhZ3MsXG5cbiAgICAgICAgLy8gY2xvdWQgcHJvdmlkZXJzXG4gICAgICAgIGNsb3VkUHJvdmlkZXJzID0gW11cbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICBjb25zdCBkaW1lbnNpb25zID0gdGhpcy5zdGF0ZS5kaW1lbnNpb25zIHx8IHt3aWR0aCwgaGVpZ2h0fTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgc3BsaXRNYXBzLCAvLyB0aGlzIHdpbGwgc3RvcmUgc3VwcG9ydCBmb3Igc3BsaXQgbWFwIHZpZXcgaXMgbmVjZXNzYXJ5XG4gICAgICAgIGludGVyYWN0aW9uQ29uZmlnXG4gICAgICB9ID0gdmlzU3RhdGU7XG5cbiAgICAgIGNvbnN0IGlzU3BsaXQgPSBpc1NwbGl0U2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCB0aGVtZSA9IHRoaXMuYXZhaWxhYmxlVGhlbWVTZWxlY3Rvcih0aGlzLnByb3BzKTtcbiAgICAgIGNvbnN0IGxvY2FsZU1lc3NhZ2VzID0gdGhpcy5sb2NhbGVNZXNzYWdlc1NlbGVjdG9yKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3QgaXNFeHBvcnRpbmdJbWFnZSA9IHVpU3RhdGUuZXhwb3J0SW1hZ2UuZXhwb3J0aW5nO1xuICAgICAgY29uc3QgYXZhaWxhYmxlUHJvdmlkZXJzID0gdGhpcy5hdmFpbGFibGVQcm92aWRlcnModGhpcy5wcm9wcyk7XG5cbiAgICAgIGNvbnN0IGZpbHRlcmVkRGF0YXNldHMgPSB0aGlzLmZpbHRlcmVkRGF0YXNldHNTZWxlY3Rvcih0aGlzLnByb3BzKTtcbiAgICAgIGNvbnN0IHNpZGVGaWVsZHMgPSBzaWRlUGFuZWxTZWxlY3Rvcih0aGlzLnByb3BzLCBhdmFpbGFibGVQcm92aWRlcnMsIGZpbHRlcmVkRGF0YXNldHMpO1xuICAgICAgY29uc3QgcGxvdENvbnRhaW5lckZpZWxkcyA9IHBsb3RDb250YWluZXJTZWxlY3Rvcih0aGlzLnByb3BzKTtcbiAgICAgIGNvbnN0IGJvdHRvbVdpZGdldEZpZWxkcyA9IGJvdHRvbVdpZGdldFNlbGVjdG9yKHRoaXMucHJvcHMsIHRoZW1lKTtcbiAgICAgIGNvbnN0IG1vZGFsQ29udGFpbmVyRmllbGRzID0gbW9kYWxDb250YWluZXJTZWxlY3Rvcih0aGlzLnByb3BzLCB0aGlzLnJvb3QuY3VycmVudCk7XG4gICAgICBjb25zdCBnZW9Db2RlclBhbmVsRmllbGRzID0gZ2VvQ29kZXJQYW5lbFNlbGVjdG9yKHRoaXMucHJvcHMsIGRpbWVuc2lvbnMpO1xuICAgICAgY29uc3Qgbm90aWZpY2F0aW9uUGFuZWxGaWVsZHMgPSBub3RpZmljYXRpb25QYW5lbFNlbGVjdG9yKHRoaXMucHJvcHMpO1xuXG4gICAgICBjb25zdCBtYXBDb250YWluZXJzID0gIWlzU3BsaXRcbiAgICAgICAgPyBbXG4gICAgICAgICAgICA8TWFwQ29udGFpbmVyXG4gICAgICAgICAgICAgIHByaW1hcnk9e3RydWV9XG4gICAgICAgICAgICAgIGtleT17MH1cbiAgICAgICAgICAgICAgaW5kZXg9ezB9XG4gICAgICAgICAgICAgIHsuLi5tYXBGaWVsZHNTZWxlY3Rvcih0aGlzLnByb3BzKX1cbiAgICAgICAgICAgICAgY29udGFpbmVySWQ9ezB9XG4gICAgICAgICAgICAgIGRlbGV0ZU1hcExhYmVscz17dGhpcy5fZGVsZXRlTWFwTGFiZWxzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICBdXG4gICAgICAgIDogc3BsaXRNYXBzLm1hcCgoc2V0dGluZ3MsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8TWFwQ29udGFpbmVyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgcHJpbWFyeT17aW5kZXggPT09IDF9XG4gICAgICAgICAgICAgIHsuLi5tYXBGaWVsZHNTZWxlY3Rvcih0aGlzLnByb3BzLCBpbmRleCl9XG4gICAgICAgICAgICAgIGNvbnRhaW5lcklkPXtpbmRleH1cbiAgICAgICAgICAgICAgZGVsZXRlTWFwTGFiZWxzPXt0aGlzLl9kZWxldGVNYXBMYWJlbHN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Um9vdENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3RoaXMucm9vdH0+XG4gICAgICAgICAgPEZlYXR1cmVGbGFnc0NvbnRleHRQcm92aWRlciBmZWF0dXJlRmxhZ3M9e2ZlYXR1cmVGbGFnc30+XG4gICAgICAgICAgICA8SW50bFByb3ZpZGVyIGxvY2FsZT17dWlTdGF0ZS5sb2NhbGV9IG1lc3NhZ2VzPXtsb2NhbGVNZXNzYWdlc1t1aVN0YXRlLmxvY2FsZV19PlxuICAgICAgICAgICAgICA8U3R5bGVTaGVldE1hbmFnZXIgc2hvdWxkRm9yd2FyZFByb3A9e3Nob3VsZEZvcndhcmRQcm9wfT5cbiAgICAgICAgICAgICAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PlxuICAgICAgICAgICAgICAgICAgPENsb3VkTGlzdFByb3ZpZGVyIHByb3ZpZGVycz17Y2xvdWRQcm92aWRlcnN9PlxuICAgICAgICAgICAgICAgICAgICA8R2xvYmFsU3R5bGVcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJrZXBsZXItZ2xcIlxuICAgICAgICAgICAgICAgICAgICAgIGlkPXtga2VwbGVyLWdsX18ke2lkfWB9XG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogYCR7d2lkdGh9cHhgLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBgJHtoZWlnaHR9cHhgXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICByZWY9e3RoaXMucm9vdH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25QYW5lbCB7Li4ubm90aWZpY2F0aW9uUGFuZWxGaWVsZHN9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPERuZENvbnRleHQgdmlzU3RhdGU9e3Zpc1N0YXRlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHshdWlTdGF0ZS5yZWFkT25seSAmJiAhcmVhZE9ubHkgJiYgPFNpZGVQYW5lbCB7Li4uc2lkZUZpZWxkc30gLz59XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFwc0xheW91dFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJtYXBzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwU3RhdGU9e3RoaXMucHJvcHMubWFwU3RhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2V0U3dpcGVDb21wYXJlUGVyY2VudGFnZT17dGhpcy5wcm9wcy5tYXBTdGF0ZUFjdGlvbnMuc2V0U3dpcGVDb21wYXJlUGVyY2VudGFnZX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge21hcENvbnRhaW5lcnN9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L01hcHNMYXlvdXQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC9EbmRDb250ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIHtpc0V4cG9ydGluZ0ltYWdlICYmIDxQbG90Q29udGFpbmVyIHsuLi5wbG90Q29udGFpbmVyRmllbGRzfSAvPn1cbiAgICAgICAgICAgICAgICAgICAgICB7LyogMSBnZW9jb2Rlcjogc2luZ2xlIG1vZGUgT1Igc3BsaXQgbW9kZSBhbmQgc3luY2VkIHZpZXdwb3J0cyAqL31cbiAgICAgICAgICAgICAgICAgICAgICB7IWlzVmlld3BvcnREaXNqb2ludGVkKHRoaXMucHJvcHMpICYmIGludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyLmVuYWJsZWQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEdlb0NvZGVyUGFuZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdlb0NvZGVyUGFuZWxGaWVsZHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB1bnN5bmNlZFZpZXdwb3J0cz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgey8qIDIgZ2VvY29kZXJzOiBzcGxpdCBtb2RlIGFuZCB1bnN5bmNlZCB2aWV3cG9ydHMgKi99XG4gICAgICAgICAgICAgICAgICAgICAge2lzVmlld3BvcnREaXNqb2ludGVkKHRoaXMucHJvcHMpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGlvbkNvbmZpZy5nZW9jb2Rlci5lbmFibGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXBDb250YWluZXJzLm1hcCgoX21hcENvbnRhaW5lciwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEdlb0NvZGVyUGFuZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZW9Db2RlclBhbmVsRmllbGRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnN5bmNlZFZpZXdwb3J0cz17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgIDxCb3R0b21XaWRnZXRPdXRlciBhYnNvbHV0ZT17IWhhc1BvcnRhYmxlV2lkdGgoYnJlYWtQb2ludFZhbHVlcyl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPEJvdHRvbVdpZGdldFxuICAgICAgICAgICAgICAgICAgICAgICAgICByb290UmVmPXt0aGlzLmJvdHRvbVdpZGdldFJlZn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLmJvdHRvbVdpZGdldEZpZWxkc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyVz17ZGltZW5zaW9ucy53aWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbWU9e3RoZW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L0JvdHRvbVdpZGdldE91dGVyPlxuICAgICAgICAgICAgICAgICAgICAgIDxNb2RhbENvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgey4uLm1vZGFsQ29udGFpbmVyRmllbGRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyVz17ZGltZW5zaW9ucy53aWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lckg9e2RpbWVuc2lvbnMuaGVpZ2h0fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvR2xvYmFsU3R5bGU+XG4gICAgICAgICAgICAgICAgICA8L0Nsb3VkTGlzdFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgICAgICAgICAgICAgPC9TdHlsZVNoZWV0TWFuYWdlcj5cbiAgICAgICAgICAgIDwvSW50bFByb3ZpZGVyPlxuICAgICAgICAgIDwvRmVhdHVyZUZsYWdzQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICA8L1Jvb3RDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ga2VwbGVyR2xDb25uZWN0KFxuICAgIG1hcFN0YXRlVG9Qcm9wcyxcbiAgICBtYWtlTWFwRGlzcGF0Y2hUb1Byb3BzXG4gICkod2l0aFRoZW1lKEtlcGxlckdMKSkgYXMgUmV0dXJuVHlwZTx0eXBlb2YgS2VwbGVyR2xGYWN0b3J5Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZTogS2VwbGVyR2xTdGF0ZSwgcHJvcHM6IEtlcGxlckdMUHJvcHMpIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5wcm9wcyxcbiAgICB2aXNTdGF0ZTogc3RhdGUudmlzU3RhdGUsXG4gICAgbWFwU3R5bGU6IHN0YXRlLm1hcFN0eWxlLFxuICAgIG1hcFN0YXRlOiBzdGF0ZS5tYXBTdGF0ZSxcbiAgICB1aVN0YXRlOiBzdGF0ZS51aVN0YXRlLFxuICAgIHByb3ZpZGVyU3RhdGU6IHN0YXRlLnByb3ZpZGVyU3RhdGVcbiAgfTtcbn1cblxuY29uc3QgZGVmYXVsdFVzZXJBY3Rpb25zID0ge307XG5cbmNvbnN0IGdldERpc3BhdGNoID0gZGlzcGF0Y2ggPT4gZGlzcGF0Y2g7XG5jb25zdCBnZXRVc2VyQWN0aW9ucyA9IChkaXNwYXRjaCwgcHJvcHMpID0+IHByb3BzLmFjdGlvbnMgfHwgZGVmYXVsdFVzZXJBY3Rpb25zO1xuXG4vKiogQHR5cGUgeygpID0+IGltcG9ydCgncmVzZWxlY3QnKS5PdXRwdXRQYXJhbWV0cmljU2VsZWN0b3I8YW55LCBhbnksIGFueSwgYW55Pn0gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlR2V0QWN0aW9uQ3JlYXRvcnMoKSB7XG4gIHJldHVybiBjcmVhdGVTZWxlY3RvcihbZ2V0RGlzcGF0Y2gsIGdldFVzZXJBY3Rpb25zXSwgKGRpc3BhdGNoLCB1c2VyQWN0aW9ucykgPT4ge1xuICAgIGNvbnN0IFt2aXNTdGF0ZUFjdGlvbnMsIG1hcFN0YXRlQWN0aW9ucywgbWFwU3R5bGVBY3Rpb25zLCB1aVN0YXRlQWN0aW9ucywgcHJvdmlkZXJBY3Rpb25zXSA9IFtcbiAgICAgIFZpc1N0YXRlQWN0aW9ucyxcbiAgICAgIE1hcFN0YXRlQWN0aW9ucyxcbiAgICAgIE1hcFN0eWxlQWN0aW9ucyxcbiAgICAgIFVJU3RhdGVBY3Rpb25zLFxuICAgICAgUHJvdmlkZXJBY3Rpb25zXG4gICAgXS5tYXAoYWN0aW9ucyA9PiBiaW5kQWN0aW9uQ3JlYXRvcnMobWVyZ2VBY3Rpb25zKGFjdGlvbnMsIHVzZXJBY3Rpb25zKSwgZGlzcGF0Y2gpKTtcblxuICAgIHJldHVybiB7XG4gICAgICB2aXNTdGF0ZUFjdGlvbnMsXG4gICAgICBtYXBTdGF0ZUFjdGlvbnMsXG4gICAgICBtYXBTdHlsZUFjdGlvbnMsXG4gICAgICB1aVN0YXRlQWN0aW9ucyxcbiAgICAgIHByb3ZpZGVyQWN0aW9ucyxcbiAgICAgIGRpc3BhdGNoXG4gICAgfTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG1ha2VNYXBEaXNwYXRjaFRvUHJvcHMoKSB7XG4gIGNvbnN0IGdldEFjdGlvbkNyZWF0b3JzID0gbWFrZUdldEFjdGlvbkNyZWF0b3JzKCk7XG4gIGNvbnN0IG1hcERpc3BhdGNoVG9Qcm9wcyA9IChkaXNwYXRjaCwgb3duUHJvcHMpID0+IHtcbiAgICBjb25zdCBncm91cGVkQWN0aW9uQ3JlYXRvcnMgPSBnZXRBY3Rpb25DcmVhdG9ycyhkaXNwYXRjaCwgb3duUHJvcHMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmdyb3VwZWRBY3Rpb25DcmVhdG9ycyxcbiAgICAgIGRpc3BhdGNoXG4gICAgfTtcbiAgfTtcblxuICByZXR1cm4gbWFwRGlzcGF0Y2hUb1Byb3BzO1xufVxuXG4vKipcbiAqIE92ZXJyaWRlIGRlZmF1bHQga2VwbGVyLmdsIGFjdGlvbnMgd2l0aCB1c2VyIGRlZmluZWQgYWN0aW9ucyB1c2luZyB0aGUgc2FtZSBrZXlcbiAqL1xuZnVuY3Rpb24gbWVyZ2VBY3Rpb25zKGFjdGlvbnMsIHVzZXJBY3Rpb25zKSB7XG4gIGNvbnN0IG92ZXJyaWRlcyA9IHt9O1xuICBmb3IgKGNvbnN0IGtleSBpbiB1c2VyQWN0aW9ucykge1xuICAgIGlmIChcbiAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh1c2VyQWN0aW9ucywga2V5KSAmJlxuICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGFjdGlvbnMsIGtleSlcbiAgICApIHtcbiAgICAgIG92ZXJyaWRlc1trZXldID0gdXNlckFjdGlvbnNba2V5XTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gey4uLmFjdGlvbnMsIC4uLm92ZXJyaWRlc307XG59XG5cbmV4cG9ydCBkZWZhdWx0IEtlcGxlckdsRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLGlCQUFBLEdBQUFMLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxTQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxnQkFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sVUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsYUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsUUFBQSxHQUFBVCxPQUFBO0FBVUEsSUFBQVUsUUFBQSxHQUFBVixPQUFBO0FBUUEsSUFBQVcsWUFBQSxHQUFBWCxPQUFBO0FBRUEsSUFBQVksa0JBQUEsR0FBQVosT0FBQTtBQVVBLElBQUFhLFVBQUEsR0FBQWIsT0FBQTtBQVVBLElBQUFjLFVBQUEsR0FBQVosc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFlLGNBQUEsR0FBQWIsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFnQixXQUFBLEdBQUFkLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBaUIsYUFBQSxHQUFBZixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQWtCLGVBQUEsR0FBQWhCLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBbUIsY0FBQSxHQUFBakIsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFvQixrQkFBQSxHQUFBbEIsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFxQixjQUFBLEdBQUFuQixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQXNCLGNBQUEsR0FBQXBCLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBdUIsV0FBQSxHQUFBckIsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUF3QixxQkFBQSxHQUFBeEIsT0FBQTtBQUVBLElBQUF5QixNQUFBLEdBQUF6QixPQUFBO0FBVUEsSUFBQTBCLE9BQUEsR0FBQTFCLE9BQUE7QUFBMEYsSUFBQTJCLGVBQUEsRUF6RTFGO0FBQ0E7QUFBQSxTQUFBNUIsd0JBQUE2QixDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBL0IsdUJBQUEsWUFBQUEsd0JBQUE2QixDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLE1BQUFNLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsbUJBQUFULENBQUEsaUJBQUFBLENBQUEsZ0JBQUFVLFFBQUEsQ0FBQVYsQ0FBQSwwQkFBQUEsQ0FBQSxTQUFBUSxDQUFBLE1BQUFGLENBQUEsR0FBQUwsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsUUFBQUcsQ0FBQSxDQUFBSyxHQUFBLENBQUFYLENBQUEsVUFBQU0sQ0FBQSxDQUFBTSxHQUFBLENBQUFaLENBQUEsR0FBQU0sQ0FBQSxDQUFBTyxHQUFBLENBQUFiLENBQUEsRUFBQVEsQ0FBQSxjQUFBTSxFQUFBLElBQUFkLENBQUEsZ0JBQUFjLEVBQUEsT0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFoQixDQUFBLEVBQUFjLEVBQUEsT0FBQVAsQ0FBQSxJQUFBRCxDQUFBLEdBQUFXLE1BQUEsQ0FBQUMsY0FBQSxLQUFBRCxNQUFBLENBQUFFLHdCQUFBLENBQUFuQixDQUFBLEVBQUFjLEVBQUEsT0FBQVAsQ0FBQSxDQUFBSyxHQUFBLElBQUFMLENBQUEsQ0FBQU0sR0FBQSxJQUFBUCxDQUFBLENBQUFFLENBQUEsRUFBQU0sRUFBQSxFQUFBUCxDQUFBLElBQUFDLENBQUEsQ0FBQU0sRUFBQSxJQUFBZCxDQUFBLENBQUFjLEVBQUEsV0FBQU4sQ0FBQSxLQUFBUixDQUFBLEVBQUFDLENBQUE7QUFBQSxTQUFBbUIsV0FBQW5CLENBQUEsRUFBQUssQ0FBQSxFQUFBTixDQUFBLFdBQUFNLENBQUEsT0FBQWUsZ0JBQUEsYUFBQWYsQ0FBQSxPQUFBZ0IsMkJBQUEsYUFBQXJCLENBQUEsRUFBQXNCLHlCQUFBLEtBQUFDLE9BQUEsQ0FBQUMsU0FBQSxDQUFBbkIsQ0FBQSxFQUFBTixDQUFBLFlBQUFxQixnQkFBQSxhQUFBcEIsQ0FBQSxFQUFBeUIsV0FBQSxJQUFBcEIsQ0FBQSxDQUFBcUIsS0FBQSxDQUFBMUIsQ0FBQSxFQUFBRCxDQUFBO0FBQUEsU0FBQXVCLDBCQUFBLGNBQUF0QixDQUFBLElBQUEyQixPQUFBLENBQUFDLFNBQUEsQ0FBQUMsT0FBQSxDQUFBZCxJQUFBLENBQUFRLE9BQUEsQ0FBQUMsU0FBQSxDQUFBRyxPQUFBLGlDQUFBM0IsQ0FBQSxhQUFBc0IseUJBQUEsWUFBQUEsMEJBQUEsYUFBQXRCLENBQUE7QUFBQSxTQUFBOEIsMkJBQUE1QixDQUFBLEVBQUFILENBQUEsUUFBQUMsQ0FBQSx5QkFBQStCLE1BQUEsSUFBQTdCLENBQUEsQ0FBQTZCLE1BQUEsQ0FBQUMsUUFBQSxLQUFBOUIsQ0FBQSxxQkFBQUYsQ0FBQSxRQUFBaUMsS0FBQSxDQUFBQyxPQUFBLENBQUFoQyxDQUFBLE1BQUFGLENBQUEsR0FBQW1DLDJCQUFBLENBQUFqQyxDQUFBLE1BQUFILENBQUEsSUFBQUcsQ0FBQSx1QkFBQUEsQ0FBQSxDQUFBa0MsTUFBQSxJQUFBcEMsQ0FBQSxLQUFBRSxDQUFBLEdBQUFGLENBQUEsT0FBQXFDLEVBQUEsTUFBQUMsQ0FBQSxZQUFBQSxFQUFBLGVBQUFDLENBQUEsRUFBQUQsQ0FBQSxFQUFBbkMsQ0FBQSxXQUFBQSxFQUFBLFdBQUFrQyxFQUFBLElBQUFuQyxDQUFBLENBQUFrQyxNQUFBLEtBQUFJLElBQUEsV0FBQUEsSUFBQSxNQUFBQyxLQUFBLEVBQUF2QyxDQUFBLENBQUFtQyxFQUFBLFVBQUF0QyxDQUFBLFdBQUFBLEVBQUFHLENBQUEsVUFBQUEsQ0FBQSxLQUFBSyxDQUFBLEVBQUErQixDQUFBLGdCQUFBSSxTQUFBLGlKQUFBckMsQ0FBQSxFQUFBc0MsQ0FBQSxPQUFBQyxDQUFBLGdCQUFBTCxDQUFBLFdBQUFBLEVBQUEsSUFBQXZDLENBQUEsR0FBQUEsQ0FBQSxDQUFBZSxJQUFBLENBQUFiLENBQUEsTUFBQUMsQ0FBQSxXQUFBQSxFQUFBLFFBQUFELENBQUEsR0FBQUYsQ0FBQSxDQUFBNkMsSUFBQSxXQUFBRixDQUFBLEdBQUF6QyxDQUFBLENBQUFzQyxJQUFBLEVBQUF0QyxDQUFBLEtBQUFILENBQUEsV0FBQUEsRUFBQUcsQ0FBQSxJQUFBMEMsQ0FBQSxPQUFBdkMsQ0FBQSxHQUFBSCxDQUFBLEtBQUFLLENBQUEsV0FBQUEsRUFBQSxVQUFBb0MsQ0FBQSxZQUFBM0MsQ0FBQSxjQUFBQSxDQUFBLDhCQUFBNEMsQ0FBQSxRQUFBdkMsQ0FBQTtBQUFBLFNBQUE4Qiw0QkFBQWpDLENBQUEsRUFBQXlDLENBQUEsUUFBQXpDLENBQUEsMkJBQUFBLENBQUEsU0FBQTRDLGlCQUFBLENBQUE1QyxDQUFBLEVBQUF5QyxDQUFBLE9BQUEzQyxDQUFBLE1BQUErQyxRQUFBLENBQUFoQyxJQUFBLENBQUFiLENBQUEsRUFBQThDLEtBQUEsNkJBQUFoRCxDQUFBLElBQUFFLENBQUEsQ0FBQXVCLFdBQUEsS0FBQXpCLENBQUEsR0FBQUUsQ0FBQSxDQUFBdUIsV0FBQSxDQUFBd0IsSUFBQSxhQUFBakQsQ0FBQSxjQUFBQSxDQUFBLEdBQUFpQyxLQUFBLENBQUFpQixJQUFBLENBQUFoRCxDQUFBLG9CQUFBRixDQUFBLCtDQUFBbUQsSUFBQSxDQUFBbkQsQ0FBQSxJQUFBOEMsaUJBQUEsQ0FBQTVDLENBQUEsRUFBQXlDLENBQUE7QUFBQSxTQUFBRyxrQkFBQTVDLENBQUEsRUFBQXlDLENBQUEsYUFBQUEsQ0FBQSxJQUFBQSxDQUFBLEdBQUF6QyxDQUFBLENBQUFrQyxNQUFBLE1BQUFPLENBQUEsR0FBQXpDLENBQUEsQ0FBQWtDLE1BQUEsWUFBQXJDLENBQUEsTUFBQUksQ0FBQSxHQUFBOEIsS0FBQSxDQUFBVSxDQUFBLEdBQUE1QyxDQUFBLEdBQUE0QyxDQUFBLEVBQUE1QyxDQUFBLElBQUFJLENBQUEsQ0FBQUosQ0FBQSxJQUFBRyxDQUFBLENBQUFILENBQUEsVUFBQUksQ0FBQTtBQUFBLFNBQUFpRCxRQUFBckQsQ0FBQSxFQUFBRyxDQUFBLFFBQUFGLENBQUEsR0FBQWdCLE1BQUEsQ0FBQXFDLElBQUEsQ0FBQXRELENBQUEsT0FBQWlCLE1BQUEsQ0FBQXNDLHFCQUFBLFFBQUFqRCxDQUFBLEdBQUFXLE1BQUEsQ0FBQXNDLHFCQUFBLENBQUF2RCxDQUFBLEdBQUFHLENBQUEsS0FBQUcsQ0FBQSxHQUFBQSxDQUFBLENBQUFrRCxNQUFBLFdBQUFyRCxDQUFBLFdBQUFjLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQW5CLENBQUEsRUFBQUcsQ0FBQSxFQUFBc0QsVUFBQSxPQUFBeEQsQ0FBQSxDQUFBeUQsSUFBQSxDQUFBL0IsS0FBQSxDQUFBMUIsQ0FBQSxFQUFBSyxDQUFBLFlBQUFMLENBQUE7QUFBQSxTQUFBMEQsY0FBQTNELENBQUEsYUFBQUcsQ0FBQSxNQUFBQSxDQUFBLEdBQUF5RCxTQUFBLENBQUF2QixNQUFBLEVBQUFsQyxDQUFBLFVBQUFGLENBQUEsV0FBQTJELFNBQUEsQ0FBQXpELENBQUEsSUFBQXlELFNBQUEsQ0FBQXpELENBQUEsUUFBQUEsQ0FBQSxPQUFBa0QsT0FBQSxDQUFBcEMsTUFBQSxDQUFBaEIsQ0FBQSxPQUFBNEQsT0FBQSxXQUFBMUQsQ0FBQSxRQUFBMkQsZ0JBQUEsYUFBQTlELENBQUEsRUFBQUcsQ0FBQSxFQUFBRixDQUFBLENBQUFFLENBQUEsU0FBQWMsTUFBQSxDQUFBOEMseUJBQUEsR0FBQTlDLE1BQUEsQ0FBQStDLGdCQUFBLENBQUFoRSxDQUFBLEVBQUFpQixNQUFBLENBQUE4Qyx5QkFBQSxDQUFBOUQsQ0FBQSxLQUFBb0QsT0FBQSxDQUFBcEMsTUFBQSxDQUFBaEIsQ0FBQSxHQUFBNEQsT0FBQSxXQUFBMUQsQ0FBQSxJQUFBYyxNQUFBLENBQUFDLGNBQUEsQ0FBQWxCLENBQUEsRUFBQUcsQ0FBQSxFQUFBYyxNQUFBLENBQUFFLHdCQUFBLENBQUFsQixDQUFBLEVBQUFFLENBQUEsaUJBQUFILENBQUE7QUE0RUE7QUFDQTtBQUNBLElBQU1pRSxXQUFXLEdBQUdDLDRCQUFNLENBQUNDLEdBQUcsQ0FBQXBFLGVBQUEsS0FBQUEsZUFBQSxPQUFBcUUsdUJBQUEsb2pCQUNiLFVBQUFDLEtBQUs7RUFBQSxPQUFJQSxLQUFLLENBQUNDLEtBQUssQ0FBQ0MsVUFBVTtBQUFBLEdBQy9CLFVBQUFGLEtBQUs7RUFBQSxPQUFJQSxLQUFLLENBQUNDLEtBQUssQ0FBQ0UsVUFBVTtBQUFBLEdBQ2pDLFVBQUFILEtBQUs7RUFBQSxPQUFJQSxLQUFLLENBQUNDLEtBQUssQ0FBQ0csUUFBUTtBQUFBLEdBQzNCLFVBQUFKLEtBQUs7RUFBQSxPQUFJQSxLQUFLLENBQUNDLEtBQUssQ0FBQ0ksVUFBVTtBQUFBLEdBcUJuQyxVQUFBTCxLQUFLO0VBQUEsT0FBSUEsS0FBSyxDQUFDQyxLQUFLLENBQUNLLFVBQVU7QUFBQSxFQWMzQztBQU1ELElBQU1DLGlCQUFpQixHQUFHViw0QkFBTSxDQUFDQyxHQUFHLENBQ2xDLFVBQUFVLElBQUE7RUFBQSxJQUFFQyxRQUFRLEdBQUFELElBQUEsQ0FBUkMsUUFBUTtFQUFBLGNBQUFDLE1BQUEsQ0FDUkQsUUFBUSxHQUFHLDBDQUEwQyxHQUFHLEVBQUU7QUFBQSxDQU05RCxDQUFDO0FBRU0sSUFBTUUsb0JBQW9CLEdBQUFDLE9BQUEsQ0FBQUQsb0JBQUEsR0FBRyxTQUF2QkEsb0JBQW9CQSxDQUFHWCxLQUFLLEVBQUk7RUFDM0MsT0FDRUEsS0FBSyxDQUFDYSxRQUFRLENBQUNDLE9BQU8sSUFDdEIsQ0FBQ2QsS0FBSyxDQUFDYSxRQUFRLENBQUNFLGdCQUFnQixJQUNoQ2YsS0FBSyxDQUFDYSxRQUFRLENBQUNHLGlCQUFpQixDQUFDaEQsTUFBTSxHQUFHLENBQUM7QUFFL0MsQ0FBQztBQU1NLElBQU1pRCxnQkFBZ0IsR0FBQUwsT0FBQSxDQUFBSyxnQkFBQSxHQUFHLElBQUFDLHdCQUFjLEVBQzVDLENBQUMsVUFBQ2xCLEtBQW9CO0VBQUEsT0FBS0EsS0FBSyxDQUFDYSxRQUFRO0FBQUEsR0FBRSxVQUFDTSxDQUFnQixFQUFFQyxLQUFjO0VBQUEsT0FBS0EsS0FBSztBQUFBLEVBQUMsRUFDdkYsVUFBQ1AsUUFBa0IsRUFBRU8sS0FBYyxFQUFlO0VBQ2hELElBQUksQ0FBQ0MsTUFBTSxDQUFDQyxRQUFRLENBQUNGLEtBQUssQ0FBQyxFQUFFO0lBQzNCO0lBQ0E7SUFDQTtJQUNBLE9BQU9QLFFBQVE7RUFDakI7RUFFQSxPQUFPRixvQkFBb0IsQ0FBQztJQUFDRSxRQUFRLEVBQVJBO0VBQVEsQ0FBQyxDQUFDLEdBQ25DO0VBQUF2QixhQUFBLENBQUFBLGFBQUEsS0FDSXVCLFFBQVEsR0FBS0EsUUFBUSxDQUFDRyxpQkFBaUIsQ0FBQ0ksS0FBSyxJQUFJLENBQUMsQ0FBQztFQUN2RDtFQUNBUCxRQUFRO0FBQ2QsQ0FDRixDQUFDO0FBRU0sSUFBTVUsaUJBQWlCLEdBQUFYLE9BQUEsQ0FBQVcsaUJBQUEsR0FBRyxTQUFwQkEsaUJBQWlCQSxDQUFJdkIsS0FBb0IsRUFBZ0I7RUFBQSxJQUFkb0IsS0FBSyxHQUFBN0IsU0FBQSxDQUFBdkIsTUFBQSxRQUFBdUIsU0FBQSxRQUFBaUMsU0FBQSxHQUFBakMsU0FBQSxNQUFHLENBQUM7RUFDL0QsSUFBTWtDLFdBQVcsR0FBR0MsbUJBQW1CLENBQUMxQixLQUFLLENBQUM7RUFDOUMsT0FBTztJQUNMMkIsWUFBWSxFQUFFM0IsS0FBSyxDQUFDMkIsWUFBWTtJQUNoQ0Msb0JBQW9CLEVBQUU1QixLQUFLLENBQUM0QixvQkFBb0I7SUFDaERDLFlBQVksRUFBRTdCLEtBQUssQ0FBQzZCLFlBQVksR0FBRzdCLEtBQUssQ0FBQzZCLFlBQVksR0FBR0MsdUJBQXVCLENBQUNELFlBQVk7SUFDNUZoQixRQUFRLEVBQUVJLGdCQUFnQixDQUFDakIsS0FBSyxFQUFFb0IsS0FBSyxDQUFDO0lBQ3hDVyxtQkFBbUIsRUFBRU4sV0FBVyxDQUFDTyxPQUFPO0lBQ3hDQyxnQkFBZ0IsRUFBRVIsV0FBVyxDQUFDUyxLQUFLO0lBQ25DQyxRQUFRLEVBQUVuQyxLQUFLLENBQUNtQyxRQUFRO0lBQ3hCQyxpQkFBaUIsRUFBRXBDLEtBQUssQ0FBQ29DLGlCQUFpQjtJQUMxQ0MsaUJBQWlCLEVBQUVyQyxLQUFLLENBQUNxQyxpQkFBaUI7SUFDMUNDLFdBQVcsRUFBRXRDLEtBQUssQ0FBQ3NDLFdBQVc7SUFDOUJDLFdBQVcsRUFBRXZDLEtBQUssQ0FBQ3VDLFdBQVc7SUFDOUJDLGNBQWMsRUFBRXhDLEtBQUssQ0FBQ3dDLGNBQWM7SUFDcENDLGVBQWUsRUFBRXpDLEtBQUssQ0FBQ3lDLGVBQWU7SUFDdENDLGVBQWUsRUFBRTFDLEtBQUssQ0FBQzBDLGVBQWU7SUFFdEM7SUFDQUMsUUFBUSxFQUFFM0MsS0FBSyxDQUFDMkMsUUFBUTtJQUV4QjtJQUNBQyxlQUFlLEVBQUU1QyxLQUFLLENBQUM2QyxPQUFPLENBQUNELGVBQWU7SUFDOUNFLFdBQVcsRUFBRTlDLEtBQUssQ0FBQzZDLE9BQU8sQ0FBQ0MsV0FBVztJQUN0Q0MsUUFBUSxFQUFFL0MsS0FBSyxDQUFDNkMsT0FBTyxDQUFDRSxRQUFRO0lBQ2hDQyxNQUFNLEVBQUVoRCxLQUFLLENBQUM2QyxPQUFPLENBQUNHLE1BQU07SUFDNUJDLE9BQU8sRUFBRWpELEtBQUssQ0FBQzZDLE9BQU8sQ0FBQzVDLEtBQUs7SUFDNUJpRCx5QkFBeUIsRUFBRTdCLE1BQU0sQ0FBQ3JCLEtBQUssQ0FBQzJDLFFBQVEsQ0FBQ1EscUJBQXFCLENBQUMsR0FBRyxDQUFDO0lBQzNFQyxjQUFjLEVBQUVwRCxLQUFLLENBQUNvRCxjQUFjLEdBQUdwRCxLQUFLLENBQUNvRCxjQUFjLEdBQUd0Qix1QkFBdUIsQ0FBQ3VCLEtBQUs7SUFFM0Y7SUFDQUMsb0JBQW9CLEVBQUV0RCxLQUFLLENBQUNzRCxvQkFBb0I7SUFDaERDLHVCQUF1QixFQUFFdkQsS0FBSyxDQUFDdUQsdUJBQXVCO0lBRXREO0lBQ0FDLGdCQUFnQixFQUFFeEQsS0FBSyxDQUFDd0QsZ0JBQWdCO0lBRXhDQyxhQUFhLEVBQUV6RCxLQUFLLENBQUN5RDtFQUN2QixDQUFDO0FBQ0gsQ0FBQztBQUVNLFNBQVNDLGtCQUFrQkEsQ0FBQ0MsUUFBUSxFQUFFO0VBQzNDO0VBQ0EsT0FBTyxJQUFBQyw4QkFBdUIsRUFBQ0QsUUFBUSxFQUFFLFVBQUFFLEdBQUc7SUFBQSxPQUFJQSxHQUFHLEtBQUtDLGdDQUFxQjtFQUFBLEVBQUM7QUFDaEY7QUFFTyxJQUFNQyxpQkFBaUIsR0FBQW5ELE9BQUEsQ0FBQW1ELGlCQUFBLEdBQUcsU0FBcEJBLGlCQUFpQkEsQ0FBSS9ELEtBQW9CLEVBQUVnRSxrQkFBa0IsRUFBRUMsZ0JBQWdCO0VBQUEsT0FBTTtJQUNoR0MsT0FBTyxFQUFFbEUsS0FBSyxDQUFDa0UsT0FBTyxHQUFHbEUsS0FBSyxDQUFDa0UsT0FBTyxHQUFHcEMsdUJBQXVCLENBQUNvQyxPQUFPO0lBQ3hFQyxPQUFPLEVBQUVuRSxLQUFLLENBQUNtRSxPQUFPLEdBQUduRSxLQUFLLENBQUNtRSxPQUFPLEdBQUdyQyx1QkFBdUIsQ0FBQ3FDLE9BQU87SUFDeEVDLFVBQVUsRUFBRXBFLEtBQUssQ0FBQ29FLFVBQVU7SUFDNUJqQyxRQUFRLEVBQUVuQyxLQUFLLENBQUNtQyxRQUFRO0lBQ3hCdEIsUUFBUSxFQUFFYixLQUFLLENBQUNhLFFBQVE7SUFDeEJ3RCxTQUFTLEVBQUVyRSxLQUFLLENBQUNxRSxTQUFTO0lBQzFCeEIsT0FBTyxFQUFFN0MsS0FBSyxDQUFDNkMsT0FBTztJQUN0QnlCLGVBQWUsRUFBRXRFLEtBQUssQ0FBQ3NFLGVBQWU7SUFDdEM3QixlQUFlLEVBQUV6QyxLQUFLLENBQUN5QyxlQUFlO0lBQ3RDRCxjQUFjLEVBQUV4QyxLQUFLLENBQUN3QyxjQUFjO0lBQ3BDRSxlQUFlLEVBQUUxQyxLQUFLLENBQUMwQyxlQUFlO0lBRXRDaUIsUUFBUSxFQUFFTSxnQkFBZ0I7SUFDMUJNLE9BQU8sRUFBRXZFLEtBQUssQ0FBQzJDLFFBQVEsQ0FBQzRCLE9BQU87SUFDL0JDLE1BQU0sRUFBRXhFLEtBQUssQ0FBQzJDLFFBQVEsQ0FBQzZCLE1BQU07SUFDN0JDLFVBQVUsRUFBRXpFLEtBQUssQ0FBQzJDLFFBQVEsQ0FBQzhCLFVBQVU7SUFDckNDLFlBQVksRUFBRTFFLEtBQUssQ0FBQzJDLFFBQVEsQ0FBQytCLFlBQVk7SUFDekNDLGlCQUFpQixFQUFFM0UsS0FBSyxDQUFDMkMsUUFBUSxDQUFDZ0MsaUJBQWlCO0lBQ25EQyxPQUFPLEVBQUU1RSxLQUFLLENBQUMyQyxRQUFRLENBQUNpQyxPQUFPO0lBQy9CQyxhQUFhLEVBQUU3RSxLQUFLLENBQUMyQyxRQUFRLENBQUNrQyxhQUFhO0lBQzNDQyxlQUFlLEVBQUU5RSxLQUFLLENBQUMyQyxRQUFRLENBQUNtQyxlQUFlO0lBRS9DekIsS0FBSyxFQUFFckQsS0FBSyxDQUFDb0QsY0FBYyxHQUFHcEQsS0FBSyxDQUFDb0QsY0FBYyxHQUFHdEIsdUJBQXVCLENBQUN1QixLQUFLO0lBQ2xGVyxrQkFBa0IsRUFBbEJBLGtCQUFrQjtJQUNsQmUsUUFBUSxFQUFFL0UsS0FBSyxDQUFDZ0YsYUFBYSxDQUFDRDtFQUNoQyxDQUFDO0FBQUEsQ0FBQztBQUVLLElBQU1FLHFCQUFxQixHQUFBckUsT0FBQSxDQUFBcUUscUJBQUEsR0FBRyxTQUF4QkEscUJBQXFCQSxDQUFJakYsS0FBb0I7RUFBQSxPQUFNO0lBQzlEcUQsS0FBSyxFQUFFckQsS0FBSyxDQUFDcUQsS0FBSztJQUNsQjZCLE1BQU0sRUFBRWxGLEtBQUssQ0FBQ2tGLE1BQU07SUFDcEJDLEtBQUssRUFBRW5GLEtBQUssQ0FBQzZDLE9BQU8sQ0FBQ3VDLFdBQVcsQ0FBQ0QsS0FBSztJQUN0Q0UsVUFBVSxFQUFFckYsS0FBSyxDQUFDNkMsT0FBTyxDQUFDdUMsV0FBVyxDQUFDQyxVQUFVO0lBQ2hEQyxNQUFNLEVBQUV0RixLQUFLLENBQUM2QyxPQUFPLENBQUN1QyxXQUFXLENBQUNFLE1BQU07SUFDeENDLE1BQU0sRUFBRXZGLEtBQUssQ0FBQzZDLE9BQU8sQ0FBQ3VDLFdBQVcsQ0FBQ0csTUFBTTtJQUN4Q0MsU0FBUyxFQUFFeEYsS0FBSyxDQUFDNkMsT0FBTyxDQUFDdUMsV0FBVyxDQUFDSSxTQUFTO0lBQzlDQyxxQkFBcUIsRUFBRXpGLEtBQUssQ0FBQzZDLE9BQU8sQ0FBQ3VDLFdBQVcsQ0FBQ0sscUJBQXFCO0lBRXRFQyxTQUFTLEVBQUVuRSxpQkFBaUIsQ0FBQ3ZCLEtBQUssQ0FBQztJQUNuQzJGLGVBQWUsRUFBRTNGLEtBQUssQ0FBQ3dDLGNBQWMsQ0FBQ21ELGVBQWU7SUFDckRDLHFCQUFxQixFQUFFNUYsS0FBSyxDQUFDd0MsY0FBYyxDQUFDb0QscUJBQXFCO0lBQ2pFQyxxQkFBcUIsRUFBRTdGLEtBQUssQ0FBQ3dDLGNBQWMsQ0FBQ3FELHFCQUFxQjtJQUNqRUMsbUJBQW1CLEVBQUU5RixLQUFLLENBQUN3QyxjQUFjLENBQUNzRCxtQkFBbUI7SUFDN0RDLFNBQVMsRUFBRS9GLEtBQUssQ0FBQzJDLFFBQVEsQ0FBQ29EO0VBQzVCLENBQUM7QUFBQSxDQUFDO0FBRUssSUFBTUMsZUFBZSxHQUFBcEYsT0FBQSxDQUFBb0YsZUFBQSxHQUFHLFNBQWxCQSxlQUFlQSxDQUFJaEcsS0FBb0I7RUFBQSxPQUNsREEsS0FBSyxDQUFDMkMsUUFBUSxDQUFDb0QsU0FBUyxJQUFJL0YsS0FBSyxDQUFDMkMsUUFBUSxDQUFDb0QsU0FBUyxDQUFDL0gsTUFBTSxHQUFHLENBQUM7QUFBQTtBQUUxRCxJQUFNaUksb0JBQW9CLEdBQUFyRixPQUFBLENBQUFxRixvQkFBQSxHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUlqRyxLQUFvQixFQUFFQyxLQUFLO0VBQUEsT0FBTTtJQUNwRXNFLE9BQU8sRUFBRXZFLEtBQUssQ0FBQzJDLFFBQVEsQ0FBQzRCLE9BQU87SUFDL0JaLFFBQVEsRUFBRTNELEtBQUssQ0FBQzJDLFFBQVEsQ0FBQ2dCLFFBQVE7SUFDakNkLE9BQU8sRUFBRTdDLEtBQUssQ0FBQzZDLE9BQU87SUFDdEIyQixNQUFNLEVBQUV4RSxLQUFLLENBQUMyQyxRQUFRLENBQUM2QixNQUFNO0lBQzdCMEIsZUFBZSxFQUFFbEcsS0FBSyxDQUFDMkMsUUFBUSxDQUFDdUQsZUFBZTtJQUMvQ3pELGVBQWUsRUFBRXpDLEtBQUssQ0FBQ3lDLGVBQWU7SUFDdEMwRCxXQUFXLEVBQUVuRyxLQUFLLENBQUN3QyxjQUFjLENBQUMyRCxXQUFXO0lBQzdDL0MsY0FBYyxFQUFFcEQsS0FBSyxDQUFDNkMsT0FBTyxDQUFDRSxRQUFRLEdBQUcsQ0FBQyxHQUFHL0MsS0FBSyxDQUFDb0QsY0FBYyxHQUFHbkQsS0FBSyxDQUFDbUcsU0FBUyxDQUFDQyxNQUFNLENBQUNDO0VBQzdGLENBQUM7QUFBQSxDQUFDO0FBRUssSUFBTUMsc0JBQXNCLEdBQUEzRixPQUFBLENBQUEyRixzQkFBQSxHQUFHLFNBQXpCQSxzQkFBc0JBLENBQUl2RyxLQUFvQixFQUFFd0csUUFBUTtFQUFBLE9BQU07SUFDekV0QyxPQUFPLEVBQUVsRSxLQUFLLENBQUNrRSxPQUFPLEdBQUdsRSxLQUFLLENBQUNrRSxPQUFPLEdBQUdwQyx1QkFBdUIsQ0FBQ29DLE9BQU87SUFDeEUvQixRQUFRLEVBQUVuQyxLQUFLLENBQUNtQyxRQUFRO0lBQ3hCUSxRQUFRLEVBQUUzQyxLQUFLLENBQUMyQyxRQUFRO0lBQ3hCOUIsUUFBUSxFQUFFYixLQUFLLENBQUNhLFFBQVE7SUFDeEJnQyxPQUFPLEVBQUU3QyxLQUFLLENBQUM2QyxPQUFPO0lBQ3RCbUMsYUFBYSxFQUFFaEYsS0FBSyxDQUFDZ0YsYUFBYTtJQUVsQ3BELG9CQUFvQixFQUFFNUIsS0FBSyxDQUFDNEIsb0JBQW9CO0lBQ2hEQyxZQUFZLEVBQUU3QixLQUFLLENBQUM2QixZQUFZO0lBQ2hDWSxlQUFlLEVBQUV6QyxLQUFLLENBQUN5QyxlQUFlO0lBQ3RDRCxjQUFjLEVBQUV4QyxLQUFLLENBQUN3QyxjQUFjO0lBQ3BDOEIsZUFBZSxFQUFFdEUsS0FBSyxDQUFDc0UsZUFBZTtJQUN0Q21DLGVBQWUsRUFBRXpHLEtBQUssQ0FBQ3lHLGVBQWU7SUFFdENELFFBQVEsRUFBUkEsUUFBUTtJQUNSO0lBQ0FFLGNBQWMsRUFBRTFHLEtBQUssQ0FBQzBHLGNBQWMsR0FDaEMxRyxLQUFLLENBQUMwRyxjQUFjLEdBQ3BCNUUsdUJBQXVCLENBQUM0RSxjQUFjO0lBQzFDQyxzQkFBc0IsRUFBRTNHLEtBQUssQ0FBQzJHLHNCQUFzQjtJQUNwREMscUJBQXFCLEVBQUU1RyxLQUFLLENBQUM0RyxxQkFBcUI7SUFDbERDLG1CQUFtQixFQUFFN0csS0FBSyxDQUFDNkcsbUJBQW1CO0lBQzlDQyxvQkFBb0IsRUFBRTlHLEtBQUssQ0FBQzhHO0VBQzlCLENBQUM7QUFBQSxDQUFDO0FBRUssSUFBTUMscUJBQXFCLEdBQUFuRyxPQUFBLENBQUFtRyxxQkFBQSxHQUFHLFNBQXhCQSxxQkFBcUJBLENBQ2hDL0csS0FBb0IsRUFDcEJnSCxVQUEyQztFQUFBLElBQUFDLHFCQUFBLEVBQUFDLHNCQUFBO0VBQUEsT0FDdkM7SUFDSkMsaUJBQWlCLEVBQUVuSCxLQUFLLENBQUMyQyxRQUFRLENBQUNnQyxpQkFBaUIsQ0FBQ3lDLFFBQVEsQ0FBQ0MsT0FBTztJQUNwRXpGLG9CQUFvQixFQUFFNUIsS0FBSyxDQUFDNEIsb0JBQW9CO0lBQ2hEZixRQUFRLEVBQUViLEtBQUssQ0FBQ2EsUUFBUTtJQUN4QmdDLE9BQU8sRUFBRTdDLEtBQUssQ0FBQzZDLE9BQU87SUFDdEI0QixVQUFVLEVBQUV6RSxLQUFLLENBQUMyQyxRQUFRLENBQUM4QixVQUFVO0lBQ3JDNkMsYUFBYSxFQUFFdEgsS0FBSyxDQUFDeUMsZUFBZSxDQUFDNkUsYUFBYTtJQUNsREMsYUFBYSxFQUFFdkgsS0FBSyxDQUFDeUMsZUFBZSxDQUFDOEUsYUFBYTtJQUNsREMsU0FBUyxFQUFFeEgsS0FBSyxDQUFDMEMsZUFBZSxDQUFDOEUsU0FBUztJQUMxQ0MsUUFBUSxFQUFFVCxVQUFVLENBQUMzRCxLQUFLO0lBQzFCcUUsV0FBVyxHQUFBVCxxQkFBQSxJQUFBQyxzQkFBQSxHQUFFbEgsS0FBSyxDQUFDMkMsUUFBUSxDQUFDZ0MsaUJBQWlCLENBQUN5QyxRQUFRLENBQUNPLE1BQU0sY0FBQVQsc0JBQUEsdUJBQWhEQSxzQkFBQSxDQUFrRFEsV0FBVyxjQUFBVCxxQkFBQSxjQUFBQSxxQkFBQSxHQUFJO0VBQ2hGLENBQUM7QUFBQSxDQUFDOztBQUVGO0FBQ0E7QUFDQTtBQUNPLElBQU1XLDBCQUEwQixHQUFBaEgsT0FBQSxDQUFBZ0gsMEJBQUEsR0FBRyxJQUFBMUcsd0JBQWMsRUFDdEQsQ0FBQyxVQUFBMkcsS0FBSztFQUFBLE9BQUlBLEtBQUssQ0FBQ2xGLFFBQVEsQ0FBQ2dCLFFBQVE7QUFBQSxFQUFDLEVBQ2xDLFVBQUFBLFFBQVEsRUFBSTtFQUNWLElBQU1tRSxrQkFBd0MsR0FBRyxFQUFFO0VBQ25EbEwsTUFBTSxDQUFDcUMsSUFBSSxDQUFDMEUsUUFBUSxDQUFDLENBQUNuRSxPQUFPLENBQUMsVUFBQXFFLEdBQUcsRUFBSTtJQUFBLElBQUFrRSxZQUFBO0lBQ25DLElBQU1DLEVBQUUsR0FBR3JFLFFBQVEsQ0FBQ0UsR0FBRyxDQUFDO0lBQ3hCLElBQU1vRSxZQUFZLEdBQUdELEVBQUUsYUFBRkEsRUFBRSxnQkFBQUQsWUFBQSxHQUFGQyxFQUFFLENBQUVFLFFBQVEsY0FBQUgsWUFBQSx1QkFBWkEsWUFBQSxDQUFjRSxZQUFZO0lBQy9DLElBQUlwSyxLQUFLLENBQUNDLE9BQU8sQ0FBQ21LLFlBQVksQ0FBQyxFQUFFO01BQy9CQSxZQUFZLENBQUN6SSxPQUFPLENBQUMsVUFBQWlDLFdBQVcsRUFBSTtRQUNsQyxJQUFJLE9BQU9BLFdBQVcsS0FBSyxRQUFRLEVBQUU7VUFDbkM7VUFDQSxJQUFNMEcsS0FBSyxHQUFHMUcsV0FBVyxDQUFDMkcsS0FBSyxDQUFDLFlBQVksQ0FBQztVQUM3QyxJQUFJRCxLQUFLLEVBQUU7WUFDVCxJQUFJO2NBQ0ZBLEtBQUssYUFBTEEsS0FBSyxlQUFMQSxLQUFLLENBQUUzSSxPQUFPLENBQUMsVUFBQTZJLElBQUksRUFBSTtnQkFBQSxJQUFBQyxXQUFBLEVBQUFDLFlBQUE7Z0JBQ3JCLElBQU1DLElBQUksSUFBQUYsV0FBQSxHQUFHRCxJQUFJLENBQUNELEtBQUssQ0FBQyxlQUFlLENBQUMsY0FBQUUsV0FBQSx1QkFBM0JBLFdBQUEsQ0FBOEIsQ0FBQyxDQUFDO2dCQUM3QyxJQUFNRyxLQUFLLElBQUFGLFlBQUEsR0FBR0YsSUFBSSxDQUFDRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsY0FBQUcsWUFBQSx1QkFBNUJBLFlBQUEsQ0FBK0IsQ0FBQyxDQUFDO2dCQUMvQyxJQUFJQyxJQUFJLElBQUlDLEtBQUssRUFBRTtrQkFDakJYLGtCQUFrQixDQUFDekksSUFBSSxDQUFDO29CQUN0Qm9KLEtBQUssS0FBQS9ILE1BQUEsQ0FBSzJILElBQUksQ0FBQ0ssT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsRUFBRSxFQUFBaEksTUFBQSxDQUFHK0gsS0FBSyxDQUFFO29CQUMzREUsR0FBRyxFQUFFSDtrQkFDUCxDQUFDLENBQUM7Z0JBQ0o7Y0FDRixDQUFDLENBQUM7WUFDSixDQUFDLENBQUMsT0FBT0ksS0FBSyxFQUFFO2NBQ2Q7WUFBQTtVQUVKLENBQUMsTUFBTTtZQUNMZCxrQkFBa0IsQ0FBQ3pJLElBQUksQ0FBQztjQUFDb0osS0FBSyxFQUFFaEgsV0FBVztjQUFFa0gsR0FBRyxFQUFFO1lBQUksQ0FBQyxDQUFDO1VBQzFEO1FBQ0Y7TUFDRixDQUFDLENBQUM7SUFDSjtFQUNGLENBQUMsQ0FBQztFQUNGLE9BQU9iLGtCQUFrQjtBQUMzQixDQUNGLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1lLDJCQUEyQixHQUFHLFNBQTlCQSwyQkFBMkJBLENBQUloQixLQUFVLEVBQWE7RUFBQSxJQUFBaUIsZUFBQTtFQUMxRCxJQUFNdEUsTUFBYSxJQUFBc0UsZUFBQSxHQUFHakIsS0FBSyxDQUFDbEYsUUFBUSxjQUFBbUcsZUFBQSx1QkFBZEEsZUFBQSxDQUFnQnRFLE1BQU07RUFDNUMsSUFBSSxDQUFDQSxNQUFNLEVBQUUsT0FBTyxFQUFFO0VBQ3RCLElBQUlYLEdBQUcsR0FBRyxFQUFFO0VBQUMsSUFBQWtGLFNBQUEsR0FBQXJMLDBCQUFBLENBQ084RyxNQUFNO0lBQUF3RSxLQUFBO0VBQUE7SUFBMUIsS0FBQUQsU0FBQSxDQUFBNUssQ0FBQSxNQUFBNkssS0FBQSxHQUFBRCxTQUFBLENBQUFoTixDQUFBLElBQUFxQyxJQUFBLEdBQTRCO01BQUEsSUFBQTZLLGFBQUEsRUFBQUMsV0FBQTtNQUFBLElBQWpCQyxLQUFLLEdBQUFILEtBQUEsQ0FBQTNLLEtBQUE7TUFDZCxJQUFJLENBQUE0SyxhQUFBLEdBQUFFLEtBQUssQ0FBQ3hCLE1BQU0sY0FBQXNCLGFBQUEsZUFBWkEsYUFBQSxDQUFjRyxTQUFTLEtBQUFGLFdBQUEsR0FBSUMsS0FBSyxDQUFDRSxJQUFJLGNBQUFILFdBQUEsZUFBVkEsV0FBQSxDQUFZekgsV0FBVyxFQUFFO1FBQUEsSUFBQTZILFVBQUE7UUFDdEQsSUFBTS9LLENBQUMsR0FBRzRLLEtBQUssQ0FBQ0UsSUFBSSxDQUFDNUgsV0FBVztRQUNoQ29DLEdBQUcsT0FBQW5ELE1BQUEsQ0FBT25DLENBQUMsQ0FBQ2tLLEtBQUssUUFBQS9ILE1BQUEsQ0FBS25DLENBQUMsQ0FBQ29LLEdBQUcsUUFBQWpJLE1BQUEsRUFBQTRJLFVBQUEsR0FBSy9LLENBQUMsQ0FBQ2dMLE9BQU8sY0FBQUQsVUFBQSxjQUFBQSxVQUFBLEdBQUksRUFBRSxPQUFJO01BQ3JEO0lBQ0Y7RUFBQyxTQUFBRSxHQUFBO0lBQUFULFNBQUEsQ0FBQXBOLENBQUEsQ0FBQTZOLEdBQUE7RUFBQTtJQUFBVCxTQUFBLENBQUE1TSxDQUFBO0VBQUE7RUFDRCxPQUFPMEgsR0FBRztBQUNaLENBQUM7QUFFTSxJQUFNNEYsd0JBQXdCLEdBQUE3SSxPQUFBLENBQUE2SSx3QkFBQSxHQUFHLElBQUF2SSx3QkFBYyxFQUNwRCxDQUFDLFVBQUMyRyxLQUFVO0VBQUEsSUFBQTZCLGdCQUFBO0VBQUEsUUFBQUEsZ0JBQUEsR0FBSzdCLEtBQUssQ0FBQ2xGLFFBQVEsY0FBQStHLGdCQUFBLHVCQUFkQSxnQkFBQSxDQUFnQmxGLE1BQU07QUFBQSxHQUFFcUUsMkJBQTJCLENBQUMsRUFDckUsVUFBQ3JFLE1BQWEsRUFBNkI7RUFDekMsSUFBTXlELFlBQW9DLEdBQUcsRUFBRTtFQUMvQyxJQUFJLENBQUN6RCxNQUFNLEVBQUUsT0FBT3lELFlBQVk7RUFBQyxJQUFBMEIsVUFBQSxHQUFBak0sMEJBQUEsQ0FDYjhHLE1BQU07SUFBQW9GLE1BQUE7RUFBQTtJQUFBLElBQUFDLEtBQUEsWUFBQUEsTUFBQSxFQUFFO01BQUEsSUFBQUMsY0FBQSxFQUFBQyxZQUFBO01BQUEsSUFBakJaLEtBQUssR0FBQVMsTUFBQSxDQUFBdkwsS0FBQTtNQUNkLElBQUksQ0FBQXlMLGNBQUEsR0FBQVgsS0FBSyxDQUFDeEIsTUFBTSxjQUFBbUMsY0FBQSxlQUFaQSxjQUFBLENBQWNWLFNBQVMsS0FBQVcsWUFBQSxHQUFJWixLQUFLLENBQUNFLElBQUksY0FBQVUsWUFBQSxlQUFWQSxZQUFBLENBQVl0SSxXQUFXLEVBQUU7UUFDdEQsSUFBTXVJLElBQUksR0FBR2IsS0FBSyxDQUFDRSxJQUFJLENBQUM1SCxXQUFXO1FBQ25DLElBQUl1SSxJQUFJLENBQUN2QixLQUFLLElBQUksQ0FBQ1IsWUFBWSxDQUFDZ0MsSUFBSSxDQUFDLFVBQUExTCxDQUFDO1VBQUEsT0FBSUEsQ0FBQyxDQUFDa0ssS0FBSyxLQUFLdUIsSUFBSSxDQUFDdkIsS0FBSyxJQUFJbEssQ0FBQyxDQUFDb0ssR0FBRyxLQUFLcUIsSUFBSSxDQUFDckIsR0FBRztRQUFBLEVBQUMsRUFBRTtVQUN2RlYsWUFBWSxDQUFDNUksSUFBSSxDQUFDMkssSUFBSSxDQUFDO1FBQ3pCO01BQ0Y7SUFDRixDQUFDO0lBUEQsS0FBQUwsVUFBQSxDQUFBeEwsQ0FBQSxNQUFBeUwsTUFBQSxHQUFBRCxVQUFBLENBQUE1TixDQUFBLElBQUFxQyxJQUFBO01BQUF5TCxLQUFBO0lBQUE7RUFPQyxTQUFBTCxHQUFBO0lBQUFHLFVBQUEsQ0FBQWhPLENBQUEsQ0FBQTZOLEdBQUE7RUFBQTtJQUFBRyxVQUFBLENBQUF4TixDQUFBO0VBQUE7RUFDRCxPQUFPOEwsWUFBWTtBQUNyQixDQUNGLENBQUM7QUFFTSxJQUFNdkcsbUJBQW1CLEdBQUFkLE9BQUEsQ0FBQWMsbUJBQUEsR0FBRyxJQUFBUix3QkFBYyxFQUMvQyxDQUFDMEcsMEJBQTBCLEVBQUU2Qix3QkFBd0IsQ0FBQyxFQUN0RCxVQUNFMUgsbUJBQXlDLEVBQ3pDbUksaUJBQXlDLEVBSXRDO0VBQ0gsSUFBTUMsc0JBQTRDLE9BQUFDLG1CQUFBLGFBQU9ySSxtQkFBbUIsQ0FBQztFQUM3RSxJQUFNRyxLQUE2QixHQUFHLEVBQUU7RUFFeENnSSxpQkFBaUIsQ0FBQzFLLE9BQU8sQ0FBQyxVQUFBNkssZ0JBQWdCLEVBQUk7SUFDNUMsSUFDRSxDQUFDRixzQkFBc0IsQ0FBQ0YsSUFBSSxDQUMxQixVQUFBMUwsQ0FBQztNQUFBLE9BQUlBLENBQUMsQ0FBQ2tLLEtBQUssS0FBSzRCLGdCQUFnQixDQUFDNUIsS0FBSyxJQUFJbEssQ0FBQyxDQUFDb0ssR0FBRyxLQUFLMEIsZ0JBQWdCLENBQUMxQixHQUFHO0lBQUEsQ0FDM0UsQ0FBQyxFQUNEO01BQ0F3QixzQkFBc0IsQ0FBQzlLLElBQUksQ0FBQztRQUFDb0osS0FBSyxFQUFFNEIsZ0JBQWdCLENBQUM1QixLQUFLO1FBQUVFLEdBQUcsRUFBRTBCLGdCQUFnQixDQUFDMUI7TUFBRyxDQUFDLENBQUM7SUFDekY7SUFDQSxJQUFJMEIsZ0JBQWdCLENBQUNkLE9BQU8sSUFBSSxDQUFDckgsS0FBSyxDQUFDK0gsSUFBSSxDQUFDLFVBQUExTCxDQUFDO01BQUEsT0FBSUEsQ0FBQyxDQUFDZ0wsT0FBTyxLQUFLYyxnQkFBZ0IsQ0FBQ2QsT0FBTztJQUFBLEVBQUMsRUFBRTtNQUN4RnJILEtBQUssQ0FBQzdDLElBQUksQ0FBQ2dMLGdCQUFnQixDQUFDO0lBQzlCO0VBQ0YsQ0FBQyxDQUFDO0VBRUYsT0FBTztJQUFDckksT0FBTyxFQUFFbUksc0JBQXNCO0lBQUVqSSxLQUFLLEVBQUxBO0VBQUssQ0FBQztBQUNqRCxDQUNGLENBQUM7QUFFTSxJQUFNb0kseUJBQXlCLEdBQUExSixPQUFBLENBQUEwSix5QkFBQSxHQUFHLFNBQTVCQSx5QkFBeUJBLENBQUl0SyxLQUFvQjtFQUFBLE9BQU07SUFDbEV1SyxrQkFBa0IsRUFBRXZLLEtBQUssQ0FBQ3dDLGNBQWMsQ0FBQytILGtCQUFrQjtJQUMzREMsYUFBYSxFQUFFeEssS0FBSyxDQUFDNkMsT0FBTyxDQUFDMkg7RUFDL0IsQ0FBQztBQUFBLENBQUM7QUFFSyxJQUFNMUksdUJBQXVCLEdBQUFsQixPQUFBLENBQUFrQix1QkFBQSxHQUFHO0VBQ3JDMkksU0FBUyxFQUFFLEVBQUU7RUFDYkMsdUJBQXVCLEVBQUUsS0FBSztFQUM5QjdJLFlBQVksRUFBRThJLGlDQUFzQjtFQUNwQ3RILEtBQUssRUFBRSxHQUFHO0VBQ1Y2QixNQUFNLEVBQUUsR0FBRztFQUNYaEIsT0FBTyxFQUFFMEcseUJBQWM7RUFDdkJ6RyxPQUFPLEVBQUUwRyw0QkFBaUI7RUFDMUJ6SCxjQUFjLEVBQUUwSCxxQkFBVSxDQUFDMUUsU0FBUyxDQUFDL0MsS0FBSztFQUMxQ3BELEtBQUssRUFBRSxDQUFDLENBQUM7RUFDVHlHLGNBQWMsRUFBRSxFQUFFO0VBQ2xCM0QsUUFBUSxFQUFFLEtBQUs7RUFDZmdJLFlBQVksRUFBRSxDQUFDO0FBQ2pCLENBQUM7QUFnRERDLGVBQWUsQ0FBQ0MsSUFBSSxHQUFHLENBQ3JCQyx3QkFBbUIsRUFDbkJDLHlCQUFvQixFQUNwQkMseUJBQW1CLEVBQ25CQyxzQkFBaUIsRUFDakJDLDBCQUFxQixFQUNyQkMscUJBQWdCLEVBQ2hCQyx5QkFBb0IsRUFDcEJDLDZCQUF3QixFQUN4QkMsc0JBQWlCLEVBQ2pCQyx5QkFBb0IsQ0FDckI7QUFFRCxTQUFTWCxlQUFlQSxDQUN0QlksWUFBb0QsRUFDcERDLGFBQXNELEVBQ3REQyxZQUFvRCxFQUNwREMsVUFBZ0QsRUFDaERDLGNBQXdELEVBQ3hEQyxTQUE4QyxFQUM5Q0MsYUFBc0QsRUFDdERDLGlCQUE4RCxFQUM5REMsVUFBZ0QsRUFDeUM7RUFDekY7RUFDQTtFQUFBLElBQ01DLFFBQVEsMEJBQUFDLFVBQUE7SUFBQSxTQUFBRCxTQUFBO01BQUEsSUFBQUUsS0FBQTtNQUFBLElBQUFDLGdCQUFBLG1CQUFBSCxRQUFBO01BQUEsU0FBQUksSUFBQSxHQUFBbE4sU0FBQSxDQUFBdkIsTUFBQSxFQUFBME8sSUFBQSxPQUFBN08sS0FBQSxDQUFBNE8sSUFBQSxHQUFBRSxJQUFBLE1BQUFBLElBQUEsR0FBQUYsSUFBQSxFQUFBRSxJQUFBO1FBQUFELElBQUEsQ0FBQUMsSUFBQSxJQUFBcE4sU0FBQSxDQUFBb04sSUFBQTtNQUFBO01BQUFKLEtBQUEsR0FBQXhQLFVBQUEsT0FBQXNQLFFBQUEsS0FBQTNMLE1BQUEsQ0FBQWdNLElBQUE7TUFBQSxJQUFBak4sZ0JBQUEsYUFBQThNLEtBQUEsV0FNZTtRQUN6QnZGLFVBQVUsRUFBRTtNQUNkLENBQUM7TUFBQSxJQUFBdkgsZ0JBQUEsYUFBQThNLEtBQUEsbUJBcUJlLFVBQUF2RixVQUFVLEVBQUk7UUFDNUJ1RixLQUFBLENBQUtLLFFBQVEsQ0FBQztVQUFDNUYsVUFBVSxFQUFWQTtRQUFVLENBQUMsQ0FBQztNQUM3QixDQUFDO01BQUEsSUFBQXZILGdCQUFBLGFBQUE4TSxLQUFBLHVCQUlNLElBQUFNLGdCQUFTLEVBQXdCLENBQUM7TUFBQSxJQUFBcE4sZ0JBQUEsYUFBQThNLEtBQUEsa0NBQ3ZCLElBQUFNLGdCQUFTLEVBQWlCLENBQUM7TUFFN0M7TUFBQSxJQUFBcE4sZ0JBQUEsYUFBQThNLEtBQUEsbUJBQ2dCLFVBQUF2TSxLQUFLO1FBQUEsT0FBSUEsS0FBSyxDQUFDQyxLQUFLO01BQUE7TUFBQSxJQUFBUixnQkFBQSxhQUFBOE0sS0FBQSxxQkFDbEIsVUFBQXZNLEtBQUs7UUFBQSxJQUFBOE0sY0FBQTtRQUFBLFFBQUFBLGNBQUEsR0FBSTlNLEtBQUssQ0FBQzZDLE9BQU8sY0FBQWlLLGNBQUEsdUJBQWJBLGNBQUEsQ0FBZTdNLEtBQUs7TUFBQTtNQUFBLElBQUFSLGdCQUFBLGFBQUE4TSxLQUFBLDRCQUN0QixJQUFBckwsd0JBQWMsRUFDckNxTCxLQUFBLENBQUtRLGFBQWEsRUFDbEJSLEtBQUEsQ0FBS1MsZUFBZSxFQUNwQixVQUFDL00sS0FBSyxFQUFFZ0QsT0FBTyxFQUFLO1FBQ2xCO1FBQ0EsSUFBTWdLLFVBQVUsR0FBRyxJQUFBQywyQkFBb0IsRUFBQyxDQUFDLENBQUNDLGlCQUFpQixHQUN2RGxLLE9BQU8sSUFBSW1LLGdCQUFLLENBQUNDLElBQUksR0FDckJwTixLQUFLO1FBRVQsSUFBSSxJQUFBcU4sUUFBQSxhQUFPTCxVQUFVLE1BQUssUUFBUSxJQUFJQSxVQUFVLEtBQUssSUFBSSxFQUFFO1VBQ3pELE9BQUEzTixhQUFBLENBQUFBLGFBQUEsS0FDS2lPLGFBQVUsR0FDVk4sVUFBVTtRQUVqQjtRQUNBLElBQUlBLFVBQVUsS0FBS0csZ0JBQUssQ0FBQ0ksS0FBSyxFQUFFO1VBQzlCLE9BQU9DLGVBQU87UUFDaEI7UUFDQSxJQUFJUixVQUFVLEtBQUtHLGdCQUFLLENBQUNNLElBQUksRUFBRTtVQUM3QixPQUFPQyxlQUFPO1FBQ2hCO1FBQ0E7UUFDQSxPQUFPSixhQUFVO01BQ25CLENBQ0YsQ0FBQztNQUFBLElBQUE5TixnQkFBQSxhQUFBOE0sS0FBQSxzQkFFa0IsVUFBQXZNLEtBQUs7UUFBQSxPQUFJQSxLQUFLLENBQUMyQyxRQUFRLENBQUNnQixRQUFRO01BQUE7TUFBQSxJQUFBbEUsZ0JBQUEsYUFBQThNLEtBQUEsOEJBQ3hCLElBQUFyTCx3QkFBYyxFQUFDcUwsS0FBQSxDQUFLcUIsZ0JBQWdCLEVBQUVsSyxrQkFBa0IsQ0FBQztNQUFBLElBQUFqRSxnQkFBQSxhQUFBOE0sS0FBQSx3QkFFL0QsSUFBQXJMLHdCQUFjLEVBQ2pDLFVBQUNsQixLQUFvQjtRQUFBLE9BQUtBLEtBQUssQ0FBQzBHLGNBQWM7TUFBQSxHQUM5QyxVQUFBbUgsU0FBUztRQUFBLE9BQ1BoUSxLQUFLLENBQUNDLE9BQU8sQ0FBQytQLFNBQVMsQ0FBQyxJQUFJQSxTQUFTLENBQUM3UCxNQUFNLEdBQ3hDO1VBQ0U4UCxVQUFVLEVBQUVELFNBQVMsQ0FBQ0UsSUFBSSxDQUFDLFVBQUFDLENBQUM7WUFBQSxPQUFJQSxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQUM7VUFBQSxFQUFDO1VBQ3REQyxRQUFRLEVBQUVMLFNBQVMsQ0FBQ0UsSUFBSSxDQUFDLFVBQUFDLENBQUM7WUFBQSxPQUFJQSxDQUFDLENBQUNHLGFBQWEsQ0FBQyxDQUFDO1VBQUE7UUFDakQsQ0FBQyxHQUNELENBQUMsQ0FBQztNQUFBLENBQ1YsQ0FBQztNQUFBLElBQUExTyxnQkFBQSxhQUFBOE0sS0FBQSw0QkFFd0IsSUFBQXJMLHdCQUFjLEVBQ3JDLFVBQUNsQixLQUFvQjtRQUFBLE9BQUtBLEtBQUssQ0FBQ29PLGNBQWM7TUFBQSxHQUM5QyxVQUFBQyxjQUFjO1FBQUEsT0FBS0EsY0FBYyxHQUFHLElBQUFDLG9CQUFhLEVBQUNDLHNCQUFRLEVBQUVGLGNBQWMsQ0FBQyxHQUFHRSxzQkFBUTtNQUFBLENBQ3hGLENBQUM7TUFBQSxJQUFBOU8sZ0JBQUEsYUFBQThNLEtBQUEsbUJBVWUsWUFBTTtRQUNwQixJQUFNaUMsYUFBYSxHQUFHNVIsTUFBTSxDQUFDNlIsTUFBTSxDQUFDbEMsS0FBQSxDQUFLdk0sS0FBSyxDQUFDbUMsUUFBUSxDQUFDc0ksU0FBUyxDQUFDO1FBQ2xFO1FBQ0EsSUFBTWlFLFlBQVksR0FBRyxDQUFDbkMsS0FBQSxDQUFLdk0sS0FBSyxDQUFDeUssU0FBUyxJQUFJLEVBQUUsRUFBRWtFLEdBQUcsQ0FBQyxVQUFBQyxFQUFFO1VBQUEsT0FBQXRQLGFBQUEsQ0FBQUEsYUFBQSxLQUNuRHNQLEVBQUU7WUFDTEMsRUFBRSxFQUFFRCxFQUFFLENBQUNDLEVBQUUsSUFBSSxJQUFBQywyQkFBYyxFQUFDO1VBQUM7UUFBQSxDQUM3QixDQUFDO1FBRUgsSUFBTUMsU0FBUyxHQUFHLEdBQUFyTyxNQUFBLEtBQUEwSixtQkFBQSxhQUFJc0UsWUFBWSxHQUFLRixhQUFhLEVBQUVRLE1BQU0sQ0FBQyxVQUFDQyxJQUFJLEVBQUVDLEtBQUssRUFBSztVQUM1RUQsSUFBSSxDQUFDQyxLQUFLLENBQUNMLEVBQUUsQ0FBQyxHQUFHSyxLQUFLO1VBQ3RCLE9BQU9ELElBQUk7UUFDYixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFTjFDLEtBQUEsQ0FBS3ZNLEtBQUssQ0FBQ3NFLGVBQWUsQ0FBQzZLLGFBQWEsQ0FBQ0osU0FBUyxDQUFDO01BQ3JELENBQUM7TUFBQSxJQUFBdFAsZ0JBQUEsYUFBQThNLEtBQUEsc0JBRWtCLFVBQUM2QyxXQUFXLEVBQUVDLE9BQU8sRUFBSztRQUMzQzlDLEtBQUEsQ0FBS3ZNLEtBQUssQ0FBQ3lDLGVBQWUsQ0FBQzZNLGlCQUFpQixDQUFDRixXQUFXLEVBQUVDLE9BQU8sQ0FBQztNQUNwRSxDQUFDO01BQUEsT0FBQTlDLEtBQUE7SUFBQTtJQUFBLElBQUFnRCxVQUFBLGFBQUFsRCxRQUFBLEVBQUFDLFVBQUE7SUFBQSxXQUFBa0QsYUFBQSxhQUFBbkQsUUFBQTtNQUFBeEksR0FBQTtNQUFBeEYsS0FBQSxFQXRHRCxTQUFBb1IsaUJBQWlCQSxDQUFBLEVBQUc7UUFBQSxJQUFBQyxxQkFBQTtRQUNsQixJQUFJLEVBQUFBLHFCQUFBLE9BQUF4QywyQkFBb0IsRUFBQyxDQUFDLENBQUN5QyxvQkFBb0IsY0FBQUQscUJBQUEsZ0JBQUFBLHFCQUFBLEdBQTNDQSxxQkFBQSxDQUE4QyxRQUFRLENBQUMsY0FBQUEscUJBQUEsdUJBQXZEQSxxQkFBQSxDQUF5REUsVUFBVSxNQUFLLFFBQVEsRUFBRTtVQUNwRixJQUFJLENBQUNDLG9CQUFvQixDQUFDLENBQUM7UUFDN0I7UUFDQSxJQUFJLENBQUNDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BCLElBQUksT0FBTyxJQUFJLENBQUM5UCxLQUFLLENBQUMrUCxxQkFBcUIsS0FBSyxVQUFVLEVBQUU7VUFDMUQsSUFBSSxDQUFDL1AsS0FBSyxDQUFDK1AscUJBQXFCLENBQUMsQ0FBQztRQUNwQztRQUNBLElBQUksSUFBSSxDQUFDQyxJQUFJLENBQUNDLE9BQU8sWUFBWUMsV0FBVyxFQUFFO1VBQzVDLElBQUFDLHdCQUFpQixFQUFDLElBQUksQ0FBQ0gsSUFBSSxDQUFDQyxPQUFPLEVBQUUsSUFBSSxDQUFDRyxhQUFhLENBQUM7UUFDMUQ7TUFDRjtJQUFDO01BQUF2TSxHQUFBO01BQUF4RixLQUFBLEVBRUQsU0FBQWdTLG9CQUFvQkEsQ0FBQSxFQUFHO1FBQ3JCLElBQUksSUFBSSxDQUFDTCxJQUFJLENBQUNDLE9BQU8sWUFBWUMsV0FBVyxFQUFFO1VBQzVDLElBQUFJLDBCQUFtQixFQUFDLElBQUksQ0FBQ04sSUFBSSxDQUFDQyxPQUFPLENBQUM7UUFDeEM7TUFDRjtJQUFDO01BQUFwTSxHQUFBO01BQUF4RixLQUFBLEVBMkREO01BQ0EsU0FBQXdSLG9CQUFvQkEsQ0FBQSxFQUFHO1FBQ3JCLElBQU9qTyxvQkFBb0IsR0FBSSxJQUFJLENBQUM1QixLQUFLLENBQWxDNEIsb0JBQW9CO1FBQzNCLElBQUksQ0FBQyxJQUFBMk8sb0JBQWEsRUFBQzNPLG9CQUFvQixDQUFDLEVBQUU7VUFDeEM0TyxtQkFBTyxDQUFDQyxJQUFJLENBQUNDLCtCQUFvQixDQUFDO1FBQ3BDO01BQ0Y7SUFBQztNQUFBN00sR0FBQTtNQUFBeEYsS0FBQTtNQXNCRDtNQUNBLFNBQUFzUyxNQUFNQSxDQUFBLEVBQUc7UUFBQSxJQUFBQyxNQUFBO1FBQ1AsSUFBQUMsV0FBQSxHQWNJLElBQUksQ0FBQzdRLEtBQUs7VUFBQThRLGNBQUEsR0FBQUQsV0FBQSxDQWJaaEMsRUFBRTtVQUFGQSxFQUFFLEdBQUFpQyxjQUFBLGNBQUcsS0FBSyxHQUFBQSxjQUFBO1VBQUFDLGlCQUFBLEdBQUFGLFdBQUEsQ0FDVnhOLEtBQUs7VUFBTEEsS0FBSyxHQUFBME4saUJBQUEsY0FBR2pQLHVCQUF1QixDQUFDdUIsS0FBSyxHQUFBME4saUJBQUE7VUFBQUMsa0JBQUEsR0FBQUgsV0FBQSxDQUNyQzNMLE1BQU07VUFBTkEsTUFBTSxHQUFBOEwsa0JBQUEsY0FBR2xQLHVCQUF1QixDQUFDb0QsTUFBTSxHQUFBOEwsa0JBQUE7VUFDdkNuTyxPQUFPLEdBQUFnTyxXQUFBLENBQVBoTyxPQUFPO1VBQ1BGLFFBQVEsR0FBQWtPLFdBQUEsQ0FBUmxPLFFBQVE7VUFFUkksUUFBUSxHQUFBOE4sV0FBQSxDQUFSOU4sUUFBUTtVQUdSZ0ksWUFBWSxHQUFBOEYsV0FBQSxDQUFaOUYsWUFBWTtVQUFBa0cscUJBQUEsR0FBQUosV0FBQSxDQUdabkssY0FBYztVQUFkQSxjQUFjLEdBQUF1SyxxQkFBQSxjQUFHLEVBQUUsR0FBQUEscUJBQUE7UUFHckIsSUFBTWpLLFVBQVUsR0FBRyxJQUFJLENBQUNhLEtBQUssQ0FBQ2IsVUFBVSxJQUFJO1VBQUMzRCxLQUFLLEVBQUxBLEtBQUs7VUFBRTZCLE1BQU0sRUFBTkE7UUFBTSxDQUFDO1FBQzNELElBQ0VhLFNBQVMsR0FFUHBELFFBQVEsQ0FGVm9ELFNBQVM7VUFDVHBCLGlCQUFpQixHQUNmaEMsUUFBUSxDQURWZ0MsaUJBQWlCO1FBR25CLElBQU03RCxPQUFPLEdBQUdrRixlQUFlLENBQUMsSUFBSSxDQUFDaEcsS0FBSyxDQUFDO1FBQzNDLElBQU1DLEtBQUssR0FBRyxJQUFJLENBQUNpUixzQkFBc0IsQ0FBQyxJQUFJLENBQUNsUixLQUFLLENBQUM7UUFDckQsSUFBTW9PLGNBQWMsR0FBRyxJQUFJLENBQUMrQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUNuUixLQUFLLENBQUM7UUFDOUQsSUFBTW9SLGdCQUFnQixHQUFHdk8sT0FBTyxDQUFDdUMsV0FBVyxDQUFDaU0sU0FBUztRQUN0RCxJQUFNck4sa0JBQWtCLEdBQUcsSUFBSSxDQUFDQSxrQkFBa0IsQ0FBQyxJQUFJLENBQUNoRSxLQUFLLENBQUM7UUFFOUQsSUFBTWlFLGdCQUFnQixHQUFHLElBQUksQ0FBQ3FOLHdCQUF3QixDQUFDLElBQUksQ0FBQ3RSLEtBQUssQ0FBQztRQUNsRSxJQUFNdVIsVUFBVSxHQUFHeE4saUJBQWlCLENBQUMsSUFBSSxDQUFDL0QsS0FBSyxFQUFFZ0Usa0JBQWtCLEVBQUVDLGdCQUFnQixDQUFDO1FBQ3RGLElBQU11TixtQkFBbUIsR0FBR3ZNLHFCQUFxQixDQUFDLElBQUksQ0FBQ2pGLEtBQUssQ0FBQztRQUM3RCxJQUFNeVIsa0JBQWtCLEdBQUd4TCxvQkFBb0IsQ0FBQyxJQUFJLENBQUNqRyxLQUFLLEVBQUVDLEtBQUssQ0FBQztRQUNsRSxJQUFNeVIsb0JBQW9CLEdBQUduTCxzQkFBc0IsQ0FBQyxJQUFJLENBQUN2RyxLQUFLLEVBQUUsSUFBSSxDQUFDZ1EsSUFBSSxDQUFDQyxPQUFPLENBQUM7UUFDbEYsSUFBTTBCLG1CQUFtQixHQUFHNUsscUJBQXFCLENBQUMsSUFBSSxDQUFDL0csS0FBSyxFQUFFZ0gsVUFBVSxDQUFDO1FBQ3pFLElBQU00Syx1QkFBdUIsR0FBR3RILHlCQUF5QixDQUFDLElBQUksQ0FBQ3RLLEtBQUssQ0FBQztRQUVyRSxJQUFNNlIsYUFBYSxHQUFHLENBQUMvUSxPQUFPLEdBQzFCLGNBQ0VqSCxNQUFBLFlBQUFpWSxhQUFBLENBQUNoRyxZQUFZLE1BQUFpRyxTQUFBO1VBQ1hDLE9BQU8sRUFBRSxJQUFLO1VBQ2RuTyxHQUFHLEVBQUUsQ0FBRTtVQUNQekMsS0FBSyxFQUFFO1FBQUUsR0FDTEcsaUJBQWlCLENBQUMsSUFBSSxDQUFDdkIsS0FBSyxDQUFDO1VBQ2pDb1AsV0FBVyxFQUFFLENBQUU7VUFDZjZDLGVBQWUsRUFBRSxJQUFJLENBQUNDO1FBQWlCLEVBQ3hDLENBQUMsQ0FDSCxHQUNEbk0sU0FBUyxDQUFDNEksR0FBRyxDQUFDLFVBQUN3RCxRQUFRLEVBQUUvUSxLQUFLO1VBQUEsb0JBQzVCdkgsTUFBQSxZQUFBaVksYUFBQSxDQUFDaEcsWUFBWSxNQUFBaUcsU0FBQTtZQUNYbE8sR0FBRyxFQUFFekMsS0FBTTtZQUNYQSxLQUFLLEVBQUVBLEtBQU07WUFDYjRRLE9BQU8sRUFBRTVRLEtBQUssS0FBSztVQUFFLEdBQ2pCRyxpQkFBaUIsQ0FBQ3FQLE1BQUksQ0FBQzVRLEtBQUssRUFBRW9CLEtBQUssQ0FBQztZQUN4Q2dPLFdBQVcsRUFBRWhPLEtBQU07WUFDbkI2USxlQUFlLEVBQUVyQixNQUFJLENBQUNzQjtVQUFpQixFQUN4QyxDQUFDO1FBQUEsQ0FDSCxDQUFDO1FBRU4sb0JBQ0VyWSxNQUFBLFlBQUFpWSxhQUFBLENBQUN0WCxRQUFBLENBQUE0WCxXQUFXLENBQUNDLFFBQVE7VUFBQ2hVLEtBQUssRUFBRSxJQUFJLENBQUMyUjtRQUFLLGdCQUNyQ25XLE1BQUEsWUFBQWlZLGFBQUEsQ0FBQ3RYLFFBQUEsQ0FBQThYLDJCQUEyQjtVQUFDdkgsWUFBWSxFQUFFQTtRQUFhLGdCQUN0RGxSLE1BQUEsWUFBQWlZLGFBQUEsQ0FBQ3hYLFVBQUEsQ0FBQWlZLFlBQVk7VUFBQ3ZQLE1BQU0sRUFBRUgsT0FBTyxDQUFDRyxNQUFPO1VBQUN1TCxRQUFRLEVBQUVILGNBQWMsQ0FBQ3ZMLE9BQU8sQ0FBQ0csTUFBTTtRQUFFLGdCQUM3RW5KLE1BQUEsWUFBQWlZLGFBQUEsQ0FBQzNYLGlCQUFBLENBQUFxWSxpQkFBaUI7VUFBQ0MsaUJBQWlCLEVBQUVBO1FBQWtCLGdCQUN0RDVZLE1BQUEsWUFBQWlZLGFBQUEsQ0FBQzNYLGlCQUFBLENBQUF1WSxhQUFhO1VBQUN6UyxLQUFLLEVBQUVBO1FBQU0sZ0JBQzFCcEcsTUFBQSxZQUFBaVksYUFBQSxDQUFDdlcscUJBQUEsQ0FBQW9YLGlCQUFpQjtVQUFDOUUsU0FBUyxFQUFFbkg7UUFBZSxnQkFDM0M3TSxNQUFBLFlBQUFpWSxhQUFBLENBQUNsUyxXQUFXO1VBQ1ZnVCxTQUFTLEVBQUMsV0FBVztVQUNyQi9ELEVBQUUsZ0JBQUFuTyxNQUFBLENBQWdCbU8sRUFBRSxDQUFHO1VBQ3ZCSyxLQUFLLEVBQUU7WUFDTDJELE9BQU8sRUFBRSxNQUFNO1lBQ2ZDLGFBQWEsRUFBRSxRQUFRO1lBQ3ZCQyxRQUFRLEVBQUUsVUFBVTtZQUNwQjFQLEtBQUssS0FBQTNDLE1BQUEsQ0FBSzJDLEtBQUssT0FBSTtZQUNuQjZCLE1BQU0sS0FBQXhFLE1BQUEsQ0FBS3dFLE1BQU07VUFDbkIsQ0FBRTtVQUNGOE4sR0FBRyxFQUFFLElBQUksQ0FBQ2hEO1FBQUssZ0JBRWZuVyxNQUFBLFlBQUFpWSxhQUFBLENBQUMzRixpQkFBaUIsRUFBS3lGLHVCQUEwQixDQUFDLGVBQ2xEL1gsTUFBQSxZQUFBaVksYUFBQSxDQUFDMUYsVUFBVTtVQUFDekosUUFBUSxFQUFFQTtRQUFTLEdBQzVCLENBQUNFLE9BQU8sQ0FBQ0UsUUFBUSxJQUFJLENBQUNBLFFBQVEsaUJBQUlsSixNQUFBLFlBQUFpWSxhQUFBLENBQUM3RixTQUFTLEVBQUtzRixVQUFhLENBQUMsZUFDaEUxWCxNQUFBLFlBQUFpWSxhQUFBLENBQUMvRixVQUFVO1VBQ1Q2RyxTQUFTLEVBQUMsTUFBTTtVQUNoQi9SLFFBQVEsRUFBRSxJQUFJLENBQUNiLEtBQUssQ0FBQ2EsUUFBUztVQUM5Qm9TLDJCQUEyQixFQUFFLElBQUksQ0FBQ2pULEtBQUssQ0FBQzBDLGVBQWUsQ0FBQ3dRO1FBQTBCLEdBRWpGckIsYUFDUyxDQUNGLENBQUMsRUFDWlQsZ0JBQWdCLGlCQUFJdlgsTUFBQSxZQUFBaVksYUFBQSxDQUFDNUYsYUFBYSxFQUFLc0YsbUJBQXNCLENBQUMsRUFFOUQsQ0FBQzdRLG9CQUFvQixDQUFDLElBQUksQ0FBQ1gsS0FBSyxDQUFDLElBQUkyRSxpQkFBaUIsQ0FBQ3lDLFFBQVEsQ0FBQ0MsT0FBTyxpQkFDdEV4TixNQUFBLFlBQUFpWSxhQUFBLENBQUNqRyxhQUFhLE1BQUFrRyxTQUFBLGlCQUNSSixtQkFBbUI7VUFDdkJ2USxLQUFLLEVBQUUsQ0FBRTtVQUNUK1IsaUJBQWlCLEVBQUU7UUFBTSxFQUMxQixDQUNGLEVBRUF4UyxvQkFBb0IsQ0FBQyxJQUFJLENBQUNYLEtBQUssQ0FBQyxJQUMvQjJFLGlCQUFpQixDQUFDeUMsUUFBUSxDQUFDQyxPQUFPLElBQ2xDd0ssYUFBYSxDQUFDbEQsR0FBRyxDQUFDLFVBQUN5RSxhQUFhLEVBQUVoUyxLQUFLO1VBQUEsb0JBQ3JDdkgsTUFBQSxZQUFBaVksYUFBQSxDQUFDakcsYUFBYSxNQUFBa0csU0FBQTtZQUNabE8sR0FBRyxFQUFFekM7VUFBTSxHQUNQdVEsbUJBQW1CO1lBQ3ZCdlEsS0FBSyxFQUFFQSxLQUFNO1lBQ2IrUixpQkFBaUIsRUFBRTtVQUFLLEVBQ3pCLENBQUM7UUFBQSxDQUNILENBQUMsZUFDSnRaLE1BQUEsWUFBQWlZLGFBQUEsQ0FBQ3ZSLGlCQUFpQjtVQUFDRSxRQUFRLEVBQUUsQ0FBQyxJQUFBNFMsdUJBQWdCLEVBQUNDLHdCQUFnQjtRQUFFLGdCQUMvRHpaLE1BQUEsWUFBQWlZLGFBQUEsQ0FBQ2xHLFlBQVksTUFBQW1HLFNBQUE7VUFDWHdCLE9BQU8sRUFBRSxJQUFJLENBQUNDO1FBQWdCLEdBQzFCL0Isa0JBQWtCO1VBQ3RCZ0MsVUFBVSxFQUFFek0sVUFBVSxDQUFDM0QsS0FBTTtVQUM3QnBELEtBQUssRUFBRUE7UUFBTSxFQUNkLENBQ2dCLENBQUMsZUFDcEJwRyxNQUFBLFlBQUFpWSxhQUFBLENBQUM5RixjQUFjLE1BQUErRixTQUFBLGlCQUNUTCxvQkFBb0I7VUFDeEIrQixVQUFVLEVBQUV6TSxVQUFVLENBQUMzRCxLQUFNO1VBQzdCcVEsVUFBVSxFQUFFMU0sVUFBVSxDQUFDOUI7UUFBTyxFQUMvQixDQUNVLENBQ0ksQ0FDTixDQUNFLENBQ1AsQ0FDYSxDQUNULENBQUM7TUFFM0I7SUFBQztFQUFBLEVBclBvQnlPLGdCQUFTO0VBQUEsSUFBQWxVLGdCQUFBLGFBQTFCNE0sUUFBUSxrQkFJVXZLLHVCQUF1QjtFQUFBLElBQUFyQyxnQkFBQSxhQUp6QzRNLFFBQVEsaUJBaUNTK0Ysb0JBQVc7RUF1TmxDLE9BQU8sSUFBQXdCLHdCQUFlLEVBQ3BCQyxlQUFlLEVBQ2ZDLHNCQUNGLENBQUMsQ0FBQyxJQUFBQywyQkFBUyxFQUFDMUgsUUFBUSxDQUFDLENBQUM7QUFDeEI7QUFFTyxTQUFTd0gsZUFBZUEsQ0FBQ2hNLEtBQW9CLEVBQUU3SCxLQUFvQixFQUFFO0VBQzFFLE9BQUFWLGFBQUEsQ0FBQUEsYUFBQSxLQUNLVSxLQUFLO0lBQ1IyQyxRQUFRLEVBQUVrRixLQUFLLENBQUNsRixRQUFRO0lBQ3hCUixRQUFRLEVBQUUwRixLQUFLLENBQUMxRixRQUFRO0lBQ3hCdEIsUUFBUSxFQUFFZ0gsS0FBSyxDQUFDaEgsUUFBUTtJQUN4QmdDLE9BQU8sRUFBRWdGLEtBQUssQ0FBQ2hGLE9BQU87SUFDdEJtQyxhQUFhLEVBQUU2QyxLQUFLLENBQUM3QztFQUFhO0FBRXRDO0FBRUEsSUFBTWdQLGtCQUFrQixHQUFHLENBQUMsQ0FBQztBQUU3QixJQUFNQyxXQUFXLEdBQUcsU0FBZEEsV0FBV0EsQ0FBR0MsUUFBUTtFQUFBLE9BQUlBLFFBQVE7QUFBQTtBQUN4QyxJQUFNQyxjQUFjLEdBQUcsU0FBakJBLGNBQWNBLENBQUlELFFBQVEsRUFBRWxVLEtBQUs7RUFBQSxPQUFLQSxLQUFLLENBQUNvVSxPQUFPLElBQUlKLGtCQUFrQjtBQUFBOztBQUUvRTtBQUNPLFNBQVNLLHFCQUFxQkEsQ0FBQSxFQUFHO0VBQ3RDLE9BQU8sSUFBQW5ULHdCQUFjLEVBQUMsQ0FBQytTLFdBQVcsRUFBRUUsY0FBYyxDQUFDLEVBQUUsVUFBQ0QsUUFBUSxFQUFFSSxXQUFXLEVBQUs7SUFDOUUsSUFBQUMsSUFBQSxHQUE2RixDQUMzRkMsd0JBQWUsRUFDZkMsd0JBQWUsRUFDZkMsd0JBQWUsRUFDZkMsdUJBQWMsRUFDZEMsd0JBQWUsQ0FDaEIsQ0FBQ2pHLEdBQUcsQ0FBQyxVQUFBeUYsT0FBTztRQUFBLE9BQUksSUFBQVMseUJBQWtCLEVBQUNDLFlBQVksQ0FBQ1YsT0FBTyxFQUFFRSxXQUFXLENBQUMsRUFBRUosUUFBUSxDQUFDO01BQUEsRUFBQztNQUFBYSxLQUFBLE9BQUFDLGVBQUEsYUFBQVQsSUFBQTtNQU4zRTlSLGVBQWUsR0FBQXNTLEtBQUE7TUFBRXJTLGVBQWUsR0FBQXFTLEtBQUE7TUFBRXpRLGVBQWUsR0FBQXlRLEtBQUE7TUFBRXZTLGNBQWMsR0FBQXVTLEtBQUE7TUFBRXRPLGVBQWUsR0FBQXNPLEtBQUE7SUFRekYsT0FBTztNQUNMdFMsZUFBZSxFQUFmQSxlQUFlO01BQ2ZDLGVBQWUsRUFBZkEsZUFBZTtNQUNmNEIsZUFBZSxFQUFmQSxlQUFlO01BQ2Y5QixjQUFjLEVBQWRBLGNBQWM7TUFDZGlFLGVBQWUsRUFBZkEsZUFBZTtNQUNmeU4sUUFBUSxFQUFSQTtJQUNGLENBQUM7RUFDSCxDQUFDLENBQUM7QUFDSjtBQUVBLFNBQVNKLHNCQUFzQkEsQ0FBQSxFQUFHO0VBQ2hDLElBQU1tQixpQkFBaUIsR0FBR1oscUJBQXFCLENBQUMsQ0FBQztFQUNqRCxJQUFNYSxrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQWtCQSxDQUFJaEIsUUFBUSxFQUFFaUIsUUFBUSxFQUFLO0lBQ2pELElBQU1DLHFCQUFxQixHQUFHSCxpQkFBaUIsQ0FBQ2YsUUFBUSxFQUFFaUIsUUFBUSxDQUFDO0lBRW5FLE9BQUE3VixhQUFBLENBQUFBLGFBQUEsS0FDSzhWLHFCQUFxQjtNQUN4QmxCLFFBQVEsRUFBUkE7SUFBUTtFQUVaLENBQUM7RUFFRCxPQUFPZ0Isa0JBQWtCO0FBQzNCOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVNKLFlBQVlBLENBQUNWLE9BQU8sRUFBRUUsV0FBVyxFQUFFO0VBQzFDLElBQU1lLFNBQVMsR0FBRyxDQUFDLENBQUM7RUFDcEIsS0FBSyxJQUFNeFIsR0FBRyxJQUFJeVEsV0FBVyxFQUFFO0lBQzdCLElBQ0UxWCxNQUFNLENBQUNZLFNBQVMsQ0FBQ2QsY0FBYyxDQUFDQyxJQUFJLENBQUMyWCxXQUFXLEVBQUV6USxHQUFHLENBQUMsSUFDdERqSCxNQUFNLENBQUNZLFNBQVMsQ0FBQ2QsY0FBYyxDQUFDQyxJQUFJLENBQUN5WCxPQUFPLEVBQUV2USxHQUFHLENBQUMsRUFDbEQ7TUFDQXdSLFNBQVMsQ0FBQ3hSLEdBQUcsQ0FBQyxHQUFHeVEsV0FBVyxDQUFDelEsR0FBRyxDQUFDO0lBQ25DO0VBQ0Y7RUFFQSxPQUFBdkUsYUFBQSxDQUFBQSxhQUFBLEtBQVc4VSxPQUFPLEdBQUtpQixTQUFTO0FBQ2xDO0FBQUMsSUFBQUMsUUFBQSxHQUFBMVUsT0FBQSxjQUVjb0ssZUFBZSIsImlnbm9yZUxpc3QiOltdfQ==
|