ngx-wapp-components 1.3.10 → 1.3.11

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.
@@ -1,7 +1,7 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { QBDataTypeEnum } from '../../shared/models/enums.model';
3
3
  import { QueryResultType } from '../../shared/models/filter-panel/query-results.model';
4
- import { NavigationEnd, NavigationStart } from '@angular/router';
4
+ import { NavigationEnd } from '@angular/router';
5
5
  import { filter } from 'rxjs';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "@angular/router";
@@ -97,24 +97,8 @@ export class WFilterPanelComponent {
97
97
  ngOnInit() {
98
98
  this.getQueryBuilderFilterPanel();
99
99
  this.previousRouteDetection();
100
- console.log(this.route);
101
- }
102
- getParentRoute(route) {
103
- let rutaPadre = '';
104
- while (route.parent) {
105
- route = route.parent;
106
- if (route.snapshot.routeConfig && route.snapshot.routeConfig.path) {
107
- rutaPadre = route.snapshot.routeConfig.path + '/' + rutaPadre;
108
- }
109
- }
110
- return rutaPadre;
111
100
  }
112
101
  previousRouteDetection() {
113
- this.router.events
114
- .subscribe((event) => {
115
- if (event instanceof NavigationStart) {
116
- }
117
- });
118
102
  this.router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe(() => {
119
103
  this.parentRoute = this.getParentRoute(this.route);
120
104
  this.localStorage.setPreviousRoute(this.parentRoute);
@@ -123,6 +107,16 @@ export class WFilterPanelComponent {
123
107
  this.hasPreviousFilters = true;
124
108
  }
125
109
  }
110
+ getParentRoute(route) {
111
+ let parentRoute = '';
112
+ while (route.parent) {
113
+ route = route.parent;
114
+ if (route.snapshot.routeConfig && route.snapshot.routeConfig.path) {
115
+ parentRoute = route.snapshot.routeConfig.path + '/' + parentRoute;
116
+ }
117
+ }
118
+ return parentRoute;
119
+ }
126
120
  initQueryBuilderControls() {
127
121
  this.queryCtrl = this.formBuilder.control(this.basicQuery);
128
122
  this.advancedQueryCtrl = this.formBuilder.control(this.advancedQuery);
@@ -456,4 +450,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
456
450
  type: Output,
457
451
  args: ['lastQuery']
458
452
  }] } });
459
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidy1maWx0ZXItcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2FwcC1jb21wb25lbnRzL3NyYy9saWIvbWlzYy93LWZpbHRlci1wYW5lbC93LWZpbHRlci1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93YXBwLWNvbXBvbmVudHMvc3JjL2xpYi9taXNjL3ctZmlsdGVyLXBhbmVsL3ctZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSWpFLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sc0RBQXNELENBQUM7QUFNckcsT0FBTyxFQUFrQixhQUFhLEVBQUUsZUFBZSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFFekYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPOUIsTUFBTSxPQUFPLHFCQUFxQjtJQW1GaEMsWUFDVSxNQUFjLEVBQ2QsS0FBcUIsRUFDckIsV0FBd0IsRUFDeEIsVUFBc0IsRUFDdEIsWUFBaUM7UUFKakMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBcEZwQyw4QkFBeUIsR0FBWSxLQUFLLENBQUM7UUFFbEQscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ2xDLHFCQUFnQixHQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsdUJBQXVCLEVB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Q0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUM7UUFFcEYsT0FBTyxNQUFNLENBQUMsVUFBVyxDQUFDLENBQUMsSUFBSSxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3RGLENBQUM7O2tIQTdjVSxxQkFBcUI7c0dBQXJCLHFCQUFxQiwrYUNyQmxDLHU2dkJBaVRBOzJGRDVSYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsZ0JBQWdCOytNQW9DVCxtQkFBbUI7c0JBQW5DLEtBQUs7dUJBQUMsUUFBUTtnQkFDWSxnQkFBZ0I7c0JBQTFDLEtBQUs7dUJBQUMsa0JBQWtCO2dCQUNULEtBQUs7c0JBQXBCLEtBQUs7dUJBQUMsT0FBTztnQkFDWSxlQUFlO3NCQUF4QyxLQUFLO3VCQUFDLGlCQUFpQjtnQkFDTCxRQUFRO3NCQUExQixLQUFLO3VCQUFDLFVBQVU7Z0JBQ21CLHlCQUF5QjtzQkFBNUQsS0FBSzt1QkFBQywyQkFBMkI7Z0JBRUwsa0JBQWtCO3NCQUE5QyxLQUFLO3VCQUFDLG9CQUFvQjtnQkFxQ0YsYUFBYTtzQkFBckMsTUFBTTt1QkFBQyxlQUFlO2dCQUNDLFlBQVk7c0JBQW5DLE1BQU07dUJBQUMsY0FBYztnQkFDRCxTQUFTO3NCQUE3QixNQUFNO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUUJEYXRhVHlwZUVudW0gfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL2VudW1zLm1vZGVsJztcclxuaW1wb3J0IHsgUWJQYW5lbEZpbHRlciB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvZmlsdGVyLXBhbmVsL3FiLXBhbmVsLWZpbHRlci5tb2RlbCc7XHJcbmltcG9ydCB7IEVudGl0eSwgRW50aXR5TWFwLCBGaWVsZCwgRmllbGRNYXAsIFF1ZXJ5QnVpbGRlckNvbmZpZywgUnVsZSwgUnVsZVNldCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvZmlsdGVyLXBhbmVsL2ZpZWxkLm1vZGVsJztcclxuaW1wb3J0IHsgRmlsdGVyUGFuZWxUcmFuc2xhdGlvbnMgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL2ZpbHRlci1wYW5lbC9maWx0ZXItcGFuZWwtdHJhbnNsYXRpb25zLm1vZGVsJztcclxuaW1wb3J0IHsgUXVlcnlSZXN1bHRUeXBlLCBRdWVyeVJlc3VsdHMgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL2ZpbHRlci1wYW5lbC9xdWVyeS1yZXN1bHRzLm1vZGVsJztcclxuaW1wb3J0IHsgRmlsdGVyRmllbGQgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL2ZpbHRlci1wYW5lbC9maWx0ZXItZmllbGQubW9kZWxzJztcclxuaW1wb3J0IHsgUWJGaWx0ZXJFbnRpdHkgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL2ZpbHRlci1wYW5lbC9xYi1maWx0ZXItZW50aXR5Lm1vZGVsJztcclxuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlL2FwaS9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RvcmVkRmlsdGVyUGFuZWxRdWVyeSB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvc3RvcmVkLWZpbHRlci1wYW5lbC1xdWVyeS5tb2RlbCc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IExhc3RRdWVyeSB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvZmlsdGVyLXBhbmVsL2xhc3QtcXVlcnkubW9kZWwnO1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndy1maWx0ZXItcGFuZWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93LWZpbHRlci1wYW5lbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdy1maWx0ZXItcGFuZWwuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgV0ZpbHRlclBhbmVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBwdWJsaWMgcXVlcnlDdHJsITogRm9ybUNvbnRyb2w7XHJcbiAgcHVibGljIGFkdmFuY2VkUXVlcnlDdHJsITogRm9ybUNvbnRyb2w7XHJcbiAgcHVibGljIGdyb3VwZWRRdWVyeUN0cmwhOiBGb3JtQ29udHJvbDtcclxuICBwdWJsaWMgcGVyc2lzdFZhbHVlT25GaWVsZENoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG4gIHF1ZXJ5Q29uZmlnUmVhZHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0FkdmFuY2VkU2VhcmNoOiBib29sZWFuID0gdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0TGFzdEZpbHRlclBhbmVsUXVlcnkoKT8uYWR2YW5jZWRRdWVyeVZhbHVlID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIHFiRGF0YVR5cGVFbnVtID0gUUJEYXRhVHlwZUVudW07XHJcbiAgcWJEYXRhRW51bXMgPSBPYmplY3QudmFsdWVzKFFCRGF0YVR5cGVFbnVtKTtcclxuICBiYXNpY1F1ZXJ5Q29uZmlnITogYW55O1xyXG4gIGFkdmFuY2VkUXVlcnlDb25maWchOiBhbnk7XHJcbiAgYmFzaWNRdWVyeTogYW55ID0ge1xyXG4gICAgY29uZGl0aW9uOiAnYW5kJyxcclxuICAgIHJ1bGVzOiBbXVxyXG4gIH07XHJcbiAgZ3JvdXBlZFF1ZXJ5OiBhbnkgPSB7XHJcbiAgICBjb25kaXRpb246ICdhbmQnLFxyXG4gICAgcnVsZXM6IFtdXHJcbiAgfTtcclxuICBhZHZhbmNlZFF1ZXJ5OiBhbnkgPSB7XHJcbiAgICBjb25kaXRpb246ICdhbmQnLFxyXG4gICAgcnVsZXM6IFtdXHJcbiAgfTtcclxuICBmaWx0ZXJQYW5lbE9iamVjdCE6IFFiUGFuZWxGaWx0ZXI7XHJcbiAgZW50aXR5Q29uZmlnR3JvdXBlZDogUXVlcnlCdWlsZGVyQ29uZmlnID0geyBmaWVsZHM6IHt9IH07XHJcbiAgZW50aXRpZXM6IGFueVtdID0gW107XHJcbiAgZGVmYXVsdFZhbHVlczogYW55W10gPSBbXTtcclxuICBkZWZhdWx0T3BlcmF0b3JzOiBhbnlbXSA9IFtdO1xyXG4gIHN0b3JlZFF1ZXJ5OiBTdG9yZWRGaWx0ZXJQYW5lbFF1ZXJ5ID0gdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0TGFzdEZpbHRlclBhbmVsUXVlcnkoKTtcclxuICBoYXNQcmV2aW91c0ZpbHRlcnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCdhcGlVcmwnKSBhdXRob3JpemF0aW9uQXBpVXJsITogc3RyaW5nO1xyXG4gIEBJbnB1dCgnY29tbW9uRGF0YUFwaVVybCcpIGNvbW1vbkRhdGFBcGlVcmwhOiBzdHJpbmc7XHJcbiAgQElucHV0KCd0b2tlbicpIHRva2VuITogc3RyaW5nO1xyXG4gIEBJbnB1dCgnY29tbW9uRGF0YVRva2VuJykgY29tbW9uRGF0YVRva2VuITogc3RyaW5nO1xyXG4gIEBJbnB1dCgnZmlsdGVySWQnKSBmaWx0ZXJJZCE6IHN0cmluZztcclxuICBASW5wdXQoJ2RhdGFJc0xvYWRpbmdTZWFyY2hCdXR0b24nKSBkYXRhSXNMb2FkaW5nU2VhcmNoQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgndHJhbnNsYXRpb25zT2JqZWN0JykgdHJhbnNsYXRpb25zT2JqZWN0OiBGaWx0ZXJQYW5lbFRyYW5zbGF0aW9ucyA9IHtcclxuICAgIGJhc2ljU2VhcmNoVGFiTGFiZWw6ICdCYXNpYyBzZWFyY2gnLFxyXG4gICAgYWR2YW5jZWRTZWFyY2hUYWJMYWJlbDogJ0FkdmFuY2VkIHNlYXJjaCcsXHJcbiAgICBncm91cGVkRmlsdGVyVGl0bGU6ICdHcm91cGVkIGZpbHRlcicsXHJcbiAgICBhZHZhbmNlZFNlYXJjaDoge1xyXG4gICAgICBhbmRCdXR0b25MYWJlbDogJ0FuZCcsXHJcbiAgICAgIG9yQnV0dG9uTGFiZWw6ICdPcicsXHJcbiAgICAgIGFkZFJ1bGVCdXR0b25MYWJlbDogJ0FkZCBmaWx0ZXInLFxyXG4gICAgICBhZGRSdWxlU2V0QnV0dG9uTGFiZWw6ICdBZGQgZmlsdGVyIHNldCcsXHJcbiAgICAgIHJlbW92ZVJ1bGVTZXRCdXR0b25MYWJlbDogJ1JlbW92ZSBydWxlIHNldCdcclxuICAgIH0sXHJcbiAgICBub1J1bGVzTGFiZWw6ICdBZGQgZmlsdGVyIG9yIGZpbHRlciBzZXQgdG8gc3RhcnQnLFxyXG4gICAgc2VhcmNoQnV0dG9uTGFiZWw6ICdDbGVhcicsXHJcbiAgICBjbGVhckJ1dHRvbkxhYmVsOiAnQ2xlYXInLFxyXG4gICAgZmllbGRzUGxhY2Vob2xkZXJzOiB7XHJcbiAgICAgIGJvb2xlYW46IHtcclxuICAgICAgICAgIHRydWU6ICdUcnVlJyxcclxuICAgICAgICAgIGZhbHNlOiAnRmFsc2UnXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlY2ltYWw6ICdJbnNlcnQgZGVjaW1hbCBudW1iZXInLFxyXG4gICAgICBsaXN0OiAnU2VsZWN0IGFuIG9wdGlvbicsXHJcbiAgICAgIG51bWJlcjogJ0luc2VydCBhIG51bWJlcicsXHJcbiAgICAgIHRleHQ6ICdJbnNlcnQgdGV4dCcsXHJcbiAgICAgIGRhdGV0aW1lOiAnU2VsZWN0IGEgZGF0ZSdcclxuICAgIH0sXHJcbiAgICBvcGVyYXRvcnM6IHtcclxuICAgICAgY29udGFpbnM6J2NvbnRhaW5zJ1xyXG4gICAgfSxcclxuICAgIGZpZWxkczoge1xyXG4gICAgICBJZGxlRGVhZGxpbmU6ICdJZCcsXHJcbiAgICAgIG5hbWU6ICdOYW1lJyxcclxuICAgICAgY29kZTogJ0NvZGUnLFxyXG4gICAgICBkZWxldGU6ICdEZWxldGVkJyxcclxuICAgICAgY291bnRyeTogJ0NvdW50cnknXHJcbiAgICB9XHJcbiAgfTtcclxuICBcclxuICBAT3V0cHV0KCdzZWFyY2hDbGlja2VkJykgc2VhcmNoQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8UXVlcnlSZXN1bHRzPigpO1xyXG4gIEBPdXRwdXQoJ2NsZWFyQ2xpY2tlZCcpIGNsZWFyQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBAT3V0cHV0KCdsYXN0UXVlcnknKSBsYXN0UXVlcnkgPSBuZXcgRXZlbnRFbWl0dGVyPExhc3RRdWVyeT4oKTtcclxuICBcclxuICBzdGF0ZU9wdGlvbnM6IGFueVtdID0gW3sgbGFiZWw6IHRoaXMudHJhbnNsYXRpb25zT2JqZWN0LmFkdmFuY2VkU2VhcmNoLmFuZEJ1dHRvbkxhYmVsLCB2YWx1ZTogJ2FuZCcgfSwgeyBsYWJlbDogdGhpcy50cmFuc2xhdGlvbnNPYmplY3QuYWR2YW5jZWRTZWFyY2gub3JCdXR0b25MYWJlbCwgdmFsdWU6ICdvcicgfV07XHJcbiAgcGFyZW50Um91dGUhOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsIFxyXG4gICAgcHJpdmF0ZSBhcGlTZXJ2aWNlOiBBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsb2NhbFN0b3JhZ2U6IExvY2FsU3RvcmFnZVNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZ2V0UXVlcnlCdWlsZGVyRmlsdGVyUGFuZWwoKTtcclxuICAgIHRoaXMucHJldmlvdXNSb3V0ZURldGVjdGlvbigpO1xyXG4gICAgY29uc29sZS5sb2codGhpcy5yb3V0ZSlcclxuICB9XHJcblxyXG4gIGdldFBhcmVudFJvdXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IHN0cmluZyB7XHJcbiAgICBsZXQgcnV0YVBhZHJlID0gJyc7XHJcblxyXG4gICAgd2hpbGUgKHJvdXRlLnBhcmVudCkge1xyXG4gICAgICByb3V0ZSA9IHJvdXRlLnBhcmVudDtcclxuICAgICAgaWYgKHJvdXRlLnNuYXBzaG90LnJvdXRlQ29uZmlnICYmIHJvdXRlLnNuYXBzaG90LnJvdXRlQ29uZmlnLnBhdGgpIHtcclxuICAgICAgICBydXRhUGFkcmUgPSByb3V0ZS5zbmFwc2hvdC5yb3V0ZUNvbmZpZy5wYXRoICsgJy8nICsgcnV0YVBhZHJlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJ1dGFQYWRyZTtcclxuICB9XHJcbiAgXHJcbiAgcHJldmlvdXNSb3V0ZURldGVjdGlvbigpIHtcclxuICAgIHRoaXMucm91dGVyLmV2ZW50c1xyXG4gICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxyXG4gICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKVxyXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnBhcmVudFJvdXRlID0gdGhpcy5nZXRQYXJlbnRSb3V0ZSh0aGlzLnJvdXRlKTtcclxuICAgICAgdGhpcy5sb2NhbFN0b3JhZ2Uuc2V0UHJldmlvdXNSb3V0ZSh0aGlzLnBhcmVudFJvdXRlKTtcclxuXHJcbiAgICB9KTtcclxuXHJcbiAgICBpZih0aGlzLnJvdXRlci51cmwuaW5jbHVkZXModGhpcy5sb2NhbFN0b3JhZ2UuZ2V0UHJldmlvdXNSb3V0ZSgpISkgKXtcclxuICAgICAgdGhpcy5oYXNQcmV2aW91c0ZpbHRlcnMgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdFF1ZXJ5QnVpbGRlckNvbnRyb2xzKCkge1xyXG4gICAgdGhpcy5xdWVyeUN0cmwgPSB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wodGhpcy5iYXNpY1F1ZXJ5KTtcclxuICAgIHRoaXMuYWR2YW5jZWRRdWVyeUN0cmwgPSB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wodGhpcy5hZHZhbmNlZFF1ZXJ5KTtcclxuICAgIGlmKHRoaXMuZmlsdGVyUGFuZWxPYmplY3QuYWxsb3dHcm91cGVkKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXBlZFF1ZXJ5Q3RybCA9IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbCh0aGlzLmdyb3VwZWRRdWVyeSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmKHRoaXMuaGFzUHJldmlvdXNGaWx0ZXJzICYmIHRoaXMuc3RvcmVkUXVlcnkpIHtcclxuICAgICAgbGV0IGxhc3RRdWVyeTogTGFzdFF1ZXJ5ID0ge1xyXG4gICAgICAgIGhhc0xhc3RRdWVyeTogdHJ1ZSxcclxuICAgICAgICBxdWVyeToge1xyXG4gICAgICAgICAgdHlwZTogdGhpcy5nZXRRdWVyeVR5cGUoKSxcclxuICAgICAgICAgIGJhc2ljOiB0aGlzLnN0b3JlZFF1ZXJ5Py5iYXNpY1F1ZXJ5VmFsdWUgPyBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnN0b3JlZFF1ZXJ5Py5iYXNpY1F1ZXJ5VmFsdWUpIDogbnVsbCxcclxuICAgICAgICAgIGFkdmFuY2VkOiB0aGlzLnN0b3JlZFF1ZXJ5Py5hZHZhbmNlZFF1ZXJ5VmFsdWUgPyBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnN0b3JlZFF1ZXJ5Py5hZHZhbmNlZFF1ZXJ5VmFsdWUpIDogbnVsbCxcclxuICAgICAgICAgIGdyb3VwZWQ6IHRoaXMuaXNBZHZhbmNlZFNlYXJjaCAmJiB0aGlzLmZpbHRlclBhbmVsT2JqZWN0LmFsbG93R3JvdXBlZCAmJiB0aGlzLmdyb3VwZWRRdWVyeUN0cmwgPyBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmdyb3VwZWRRdWVyeUN0cmw/LnZhbHVlKSA6IG51bGxcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgbGFzdFF1ZXJ5LnF1ZXJ5ID0gdGhpcy5kZWxldGVGaWVsZHNXaXRob3V0VmFsdWUobGFzdFF1ZXJ5LnF1ZXJ5KTtcclxuICAgICAgbGFzdFF1ZXJ5LnF1ZXJ5ID0gdGhpcy5oYW5kbGVFbXB0eUZpZWxkc1F1ZXJ5KGxhc3RRdWVyeS5xdWVyeSk7XHJcbiAgICAgIHRoaXMubGFzdFF1ZXJ5LmVtaXQobGFzdFF1ZXJ5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZVNlYXJjaFR5cGUoKSB7XHJcbiAgICB0aGlzLmlzQWR2YW5jZWRTZWFyY2ggPSAhdGhpcy5pc0FkdmFuY2VkU2VhcmNoO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2hDbGlja2VkKCkge1xyXG4gICAgbGV0IHF1ZXJpZXM6IFF1ZXJ5UmVzdWx0cyA9IHtcclxuICAgICAgdHlwZTogdGhpcy5nZXRRdWVyeVR5cGUoKSxcclxuICAgICAgYmFzaWM6IHRoaXMuaXNBZHZhbmNlZFNlYXJjaCA/IG51bGwgOiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnF1ZXJ5Q3RybC52YWx1ZSksXHJcbiAgICAgIGFkdmFuY2VkOiB0aGlzLmlzQWR2YW5jZWRTZWFyY2ggPyBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmFkdmFuY2VkUXVlcnlDdHJsLnZhbHVlKSA6IG51bGwsXHJcbiAgICAgIGdyb3VwZWQ6IHRoaXMuaXNBZHZhbmNlZFNlYXJjaCAmJiB0aGlzLmZpbHRlclBhbmVsT2JqZWN0LmFsbG93R3JvdXBlZCA/IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZ3JvdXBlZFF1ZXJ5Q3RybC52YWx1ZSkgOiBudWxsXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXRFbnRpdHkocXVlcmllcyk7XHJcblxyXG4gICAgcXVlcmllcyA9IHRoaXMuaW5pdGlhbGl6ZU9wZXJhdG9ycyhxdWVyaWVzKTtcclxuICAgIFxyXG4gICAgbGV0IHN0b3JlZFF1ZXJ5OiBTdG9yZWRGaWx0ZXJQYW5lbFF1ZXJ5ID0ge1xyXG4gICAgICBpZDogdGhpcy5maWx0ZXJJZCxcclxuICAgICAgYmFzaWNRdWVyeVZhbHVlOiBxdWVyaWVzLmJhc2ljLFxyXG4gICAgICBhZHZhbmNlZFF1ZXJ5VmFsdWU6IHF1ZXJpZXMuYWR2YW5jZWQsXHJcbiAgICAgIGdyb3VwZWRRdWVyeVZhbHVlOiBxdWVyaWVzLmdyb3VwZWRcclxuICAgIH1cclxuICAgIHRoaXMubG9jYWxTdG9yYWdlLnNldExhc3RGaWx0ZXJQYW5lbFF1ZXJ5KHN0b3JlZFF1ZXJ5KTtcclxuICAgIFxyXG4gICAgcXVlcmllcyA9IHRoaXMuZGVsZXRlRmllbGRzV2l0aG91dFZhbHVlKHF1ZXJpZXMpO1xyXG4gICAgcXVlcmllcyA9IHRoaXMuaGFuZGxlRW1wdHlGaWVsZHNRdWVyeShxdWVyaWVzKTtcclxuXHJcbiAgICB0aGlzLnNlYXJjaENsaWNrZWQuZW1pdChxdWVyaWVzKTtcclxuICB9XHJcblxyXG4gIG9uQ2xlYXJDbGlja2VkKCkge1xyXG4gICAgdGhpcy5yZXNldEJhc2ljUXVlcnlWYWx1ZXMoKTtcclxuICAgIHRoaXMuYWR2YW5jZWRRdWVyeS5ydWxlcyA9IFtdO1xyXG4gICAgdGhpcy5ncm91cGVkUXVlcnkucnVsZXMgPSBbXTtcclxuICAgIHRoaXMubG9jYWxTdG9yYWdlLnJlbW92ZUxhc3RGaWx0ZXJQYW5lbFF1ZXJ5KCk7XHJcbiAgICB0aGlzLmNsZWFyQ2xpY2tlZC5lbWl0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRW1wdHlGaWVsZHNRdWVyeShxdWVyaWVzOiBRdWVyeVJlc3VsdHMpOiBRdWVyeVJlc3VsdHMge1xyXG4gICAgaWYocXVlcmllcy5hZHZhbmNlZCAhPSBudWxsICYmIHF1ZXJpZXMuYWR2YW5jZWQ/LnJ1bGVzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHF1ZXJpZXMudHlwZSA9IDBcclxuICAgIH1cclxuICAgIGlmKHF1ZXJpZXMuYmFzaWMgIT0gbnVsbCAmJiBxdWVyaWVzLmJhc2ljPy5ydWxlcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICBxdWVyaWVzLnR5cGUgPSAwXHJcbiAgICB9XHJcbiAgICBpZihxdWVyaWVzLmdyb3VwZWQgIT0gbnVsbCAmJiBxdWVyaWVzLmdyb3VwZWQ/LnJ1bGVzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHF1ZXJpZXMudHlwZSA9IDBcclxuICAgIH1cclxuICAgIHJldHVybiBxdWVyaWVzO1xyXG4gIH1cclxuXHJcbiAgZ2V0UXVlcnlUeXBlKCk6IFF1ZXJ5UmVzdWx0VHlwZSB7XHJcbiAgICBpZighdGhpcy5pc0FkdmFuY2VkU2VhcmNoKSB7XHJcbiAgICAgIHJldHVybiBRdWVyeVJlc3VsdFR5cGUuQmFzaWM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZih0aGlzLmlzQWR2YW5jZWRTZWFyY2ggJiYgdGhpcy5ncm91cGVkUXVlcnlDdHJsPy52YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiBRdWVyeVJlc3VsdFR5cGUuR3JvdXBlZFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBRdWVyeVJlc3VsdFR5cGUuQWR2YW5jZWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEVudGl0eShxdWVyaWVzOiBRdWVyeVJlc3VsdHMpIHtcclxuICAgIGlmKHRoaXMuZ2V0UXVlcnlUeXBlKCkgPT0gUXVlcnlSZXN1bHRUeXBlLkJhc2ljKSB7XHJcbiAgICAgIHF1ZXJpZXMuYmFzaWMhLnJ1bGVzID0gcXVlcmllcy5iYXNpYyEucnVsZXMubWFwKChyOmFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBmaWVsZDogci5maWVsZCxcclxuICAgICAgICAgIG9wZXJhdG9yOiByLm9wZXJhdG9yLFxyXG4gICAgICAgICAgdmFsdWU6IHIudmFsdWUsXHJcbiAgICAgICAgICBlbnRpdHk6IHRoaXMuZW50aXRpZXMuZmluZChlID0+IGUuZmllbGRKc29uTmFtZSA9PSByLmZpZWxkKS5lbnRpdHlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRRdWVyeUJ1aWxkZXJGaWx0ZXJQYW5lbCgpIHtcclxuICAgIHRoaXMuYXBpU2VydmljZS5nZXRGaWx0ZXJQYW5lbCh0aGlzLmF1dGhvcml6YXRpb25BcGlVcmwsIHRoaXMudG9rZW4sIHRoaXMuY29tbW9uRGF0YUFwaVVybCwgdGhpcy5jb21tb25EYXRhVG9rZW4sIHRoaXMuZmlsdGVySWQpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHFiUGFuZWxGaWx0ZXI6IFFiUGFuZWxGaWx0ZXIpID0+IHtcclxuICAgICAgICB0aGlzLmZpbHRlclBhbmVsT2JqZWN0ID0gcWJQYW5lbEZpbHRlcjtcclxuICAgICAgICBsZXQgYmFzaWNGaWx0ZXJJZHM6IG51bWJlcltdID0gcWJQYW5lbEZpbHRlci5xYnBhbmVsVG9GaWVsZHMuZmlsdGVyKHBhbmVsVG9GaWVsZCA9PiBwYW5lbFRvRmllbGQuYmFzaWMpLm1hcChwYW5lbFRvRmllbGQgPT4gcGFuZWxUb0ZpZWxkLnFiZmlsdGVyRmllbGRJZCk7XHJcbiAgICAgICAgbGV0IGFkdmFuY2VkRmlsdGVySWRzOiBudW1iZXJbXSA9IHFiUGFuZWxGaWx0ZXIucWJwYW5lbFRvRmllbGRzLmZpbHRlcihwYW5lbFRvRmllbGQgPT4gIXBhbmVsVG9GaWVsZC5iYXNpYykubWFwKHBhbmVsVG9GaWVsZCA9PiBwYW5lbFRvRmllbGQucWJmaWx0ZXJGaWVsZElkKTtcclxuICAgICAgICB0aGlzLmRlZmF1bHRWYWx1ZXMgPSBxYlBhbmVsRmlsdGVyLnFicGFuZWxUb0ZpZWxkcy5tYXAocGFuZWxUb0ZpZWxkID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHFiZmlsdGVyRmllbGRJZDogcGFuZWxUb0ZpZWxkLnFiZmlsdGVyRmllbGRJZCxcclxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBwYW5lbFRvRmllbGQuZGVmYXVsdFZhbHVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmRlZmF1bHRPcGVyYXRvcnMgPSBxYlBhbmVsRmlsdGVyLnFicGFuZWxUb0ZpZWxkcy5tYXAocGFuZWxUb0ZpZWxkID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHFiZmlsdGVyRmllbGRJZDogcGFuZWxUb0ZpZWxkLnFiZmlsdGVyRmllbGRJZCxcclxuICAgICAgICAgICAgcWJkZWZhdWx0T3BlcmF0b3I6IHBhbmVsVG9GaWVsZC5xYmRlZmF1bHRPcGVyYXRvclxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgbGV0IGZpbHRlckVudGl0eTogUWJGaWx0ZXJFbnRpdHlbXSA9IHFiUGFuZWxGaWx0ZXIucWJwYW5lbFRvRmllbGRzLm1hcChwYW5lbFRvRmllbGQgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IHBhbmVsVG9GaWVsZC5xYmZpbHRlckZpZWxkLnFiZmlsdGVyRW50aXR5LmlkLCBcclxuICAgICAgICAgICAgYmFzaWM6IHBhbmVsVG9GaWVsZC5iYXNpYyxcclxuICAgICAgICAgICAgbmFtZTogcGFuZWxUb0ZpZWxkLnFiZmlsdGVyRmllbGQucWJmaWx0ZXJFbnRpdHkubmFtZSwgXHJcbiAgICAgICAgICAgIGpzb25OYW1lOiBwYW5lbFRvRmllbGQucWJmaWx0ZXJGaWVsZC5xYmZpbHRlckVudGl0eS5qc29uTmFtZSwgXHJcbiAgICAgICAgICAgIGZpZWxkczogW11cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgbGV0IGZpbHRlckZpZWxkczogRmlsdGVyRmllbGRbXSA9IHFiUGFuZWxGaWx0ZXIucWJwYW5lbFRvRmllbGRzLm1hcChwID0+IHAucWJmaWx0ZXJGaWVsZCk7XHJcbiAgICAgICAgZmlsdGVyRW50aXR5LmZvckVhY2goKGVudGl0eTogUWJGaWx0ZXJFbnRpdHksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICBsZXQgZmllbGRzID0gZmlsdGVyRmllbGRzLmZpbHRlcihlID0+IGUucWJmaWx0ZXJFbnRpdHkuaWQgPT0gZW50aXR5LmlkKTtcclxuICAgICAgICAgICBmaWx0ZXJFbnRpdHlbaW5kZXhdLmZpZWxkcyA9IGZpZWxkcyA7XHJcbiAgICAgICAgfSlcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLmJhc2ljUXVlcnlDb25maWcgPSB0aGlzLmluaXRRdWVyeUJ1aWxkZXIoZmlsdGVyRW50aXR5KTtcclxuICAgICAgICB0aGlzLmJhc2ljUXVlcnlDb25maWcgPSB0aGlzLmZpbHRlckZpZWxkc0J5SWQodGhpcy5iYXNpY1F1ZXJ5Q29uZmlnLCBiYXNpY0ZpbHRlcklkcyk7XHJcbiAgICAgICAgdGhpcy5iYXNpY1F1ZXJ5Q29uZmlnLmZpZWxkcyA9IHRoaXMudHJhbnNsYXRlRmllbGRzKHRoaXMuYmFzaWNRdWVyeUNvbmZpZy5maWVsZHMpO1xyXG4gICAgICAgIHRoaXMuYWR2YW5jZWRRdWVyeUNvbmZpZyA9IHRoaXMuaW5pdFF1ZXJ5QnVpbGRlcihmaWx0ZXJFbnRpdHkpO1xyXG4gICAgICAgIHRoaXMuYWR2YW5jZWRRdWVyeUNvbmZpZyA9IHRoaXMuZmlsdGVyRmllbGRzQnlJZCh0aGlzLmFkdmFuY2VkUXVlcnlDb25maWcsIGFkdmFuY2VkRmlsdGVySWRzKTtcclxuICAgICAgICB0aGlzLmFkdmFuY2VkUXVlcnlDb25maWcuZmllbGRzID0gdGhpcy50cmFuc2xhdGVGaWVsZHModGhpcy5hZHZhbmNlZFF1ZXJ5Q29uZmlnLmZpZWxkcyk7XHJcbiAgICAgICAgbGV0IHJ1bGVzID0gT2JqZWN0LmtleXModGhpcy5iYXNpY1F1ZXJ5Q29uZmlnLmZpZWxkcylcclxuICAgICAgICAgIC5tYXAoZmllbGRLZXkgPT4geyBcclxuICAgICAgICAgICAgbGV0IGRlZmF1bHRPcGVyYXRvciA9IHRoaXMuZGVmYXVsdE9wZXJhdG9ycy5maW5kKG9wZXJhdG9yID0+IG9wZXJhdG9yLnFiZmlsdGVyRmllbGRJZCA9PSB0aGlzLmJhc2ljUXVlcnlDb25maWcuZmllbGRzW2ZpZWxkS2V5XS5pZCAmJiBvcGVyYXRvci5xYmRlZmF1bHRPcGVyYXRvciAhPSBudWxsKTtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICBmaWVsZDogZmllbGRLZXksIFxyXG4gICAgICAgICAgICAgIHZhbHVlOiB0aGlzLmJhc2ljUXVlcnlDb25maWcuZmllbGRzW2ZpZWxkS2V5XS5kZWZhdWx0VmFsdWUhLFxyXG4gICAgICAgICAgICAgIG9wZXJhdG9yOiBkZWZhdWx0T3BlcmF0b3IgPyBkZWZhdWx0T3BlcmF0b3IucWJkZWZhdWx0T3BlcmF0b3Iuc3ltYm9sIDogbnVsbFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBpZih0aGlzLmhhc1ByZXZpb3VzRmlsdGVycyAmJiB0aGlzLnN0b3JlZFF1ZXJ5ICYmIHRoaXMuc3RvcmVkUXVlcnk/LmlkID09IHRoaXMuZmlsdGVySWQgJiYgdGhpcy5zdG9yZWRRdWVyeT8uYmFzaWNRdWVyeVZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYmFzaWNRdWVyeSA9IHRoaXMuc3RvcmVkUXVlcnkuYmFzaWNRdWVyeVZhbHVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5iYXNpY1F1ZXJ5ID0ge1xyXG4gICAgICAgICAgICAgIGNvbmRpdGlvbjogJ2FuZCcsXHJcbiAgICAgICAgICAgICAgcnVsZXM6IHJ1bGVzXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZih0aGlzLmhhc1ByZXZpb3VzRmlsdGVycyAmJiB0aGlzLnN0b3JlZFF1ZXJ5ICYmIHRoaXMuc3RvcmVkUXVlcnk/LmlkID09IHRoaXMuZmlsdGVySWQgJiYgdGhpcy5zdG9yZWRRdWVyeT8uYWR2YW5jZWRRdWVyeVZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWR2YW5jZWRRdWVyeSA9IHRoaXMuc3RvcmVkUXVlcnkuYWR2YW5jZWRRdWVyeVZhbHVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5hZHZhbmNlZFF1ZXJ5ID0ge1xyXG4gICAgICAgICAgICAgIGNvbmRpdGlvbjogJ2FuZCcsXHJcbiAgICAgICAgICAgICAgcnVsZXM6IFtdXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucXVlcnlDb25maWdSZWFkeSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pbml0UXVlcnlCdWlsZGVyQ29udHJvbHMoKTtcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGluaXRRdWVyeUJ1aWxkZXIoZmlsdGVyRW50aXRpZXM6IFFiRmlsdGVyRW50aXR5W10pIHtcclxuICAgIGxldCBlbnRpdHlDb25maWdBdXg6IFF1ZXJ5QnVpbGRlckNvbmZpZyA9IHsgZmllbGRzOiB7fSB9O1xyXG4gICAgbGV0IGVudGl0aWVzQXJyYXk6IEVudGl0eU1hcFtdID0gW107XHJcbiAgICBmaWx0ZXJFbnRpdGllcy5tYXAoKGUsIGluZGV4KSA9PiB7XHJcbiAgICAgIGxldCBlbnRpdHk6IEVudGl0eSA9IHsgbmFtZTogZS5qc29uTmFtZSB9O1xyXG4gICAgICByZXR1cm4gZW50aXRpZXNBcnJheVtpbmRleF0gPSB7IFtlLmpzb25OYW1lXTogZW50aXR5IH07XHJcbiAgICB9KTtcclxuXHJcbiAgICBsZXQgZW50aXRpZXNNYXA6IEVudGl0eU1hcCA9IHt9O1xyXG5cclxuICAgIGZvciAoY29uc3QgZW50aXR5IG9mIGVudGl0aWVzQXJyYXkpIHtcclxuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGVudGl0eSk7XHJcblxyXG4gICAgICBrZXlzLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICBlbnRpdGllc01hcFtrZXldID0gZW50aXR5W2tleV1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICBlbnRpdHlDb25maWdBdXguZW50aXRpZXMgPSBlbnRpdGllc01hcDtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgZmllbGRzOiBGaWVsZE1hcFtdID0gW107XHJcbiAgICBmaWx0ZXJFbnRpdGllcy5mb3JFYWNoKChmaWx0ZXJFbnRpdHkpID0+IHtcclxuICAgICAgcmV0dXJuIGZpbHRlckVudGl0eS5maWVsZHMuZmlsdGVyKChmaWx0ZXJGaWVsZDogRmlsdGVyRmllbGQpID0+IHtcclxuICAgICAgICBsZXQgaW5kZXg6IG51bWJlciA9IGZpZWxkcy5sZW5ndGggPz8gMDtcclxuICAgICAgICBsZXQgb3BlcmF0b3JzRmxhdEFycmF5ID0gZmlsdGVyRmllbGQub3BlcmF0b3JzLm1hcCgobzphbnkpID0+IG8uc3ltYm9sKTtcclxuICAgICAgICBsZXQgZGVmYXVsdE9wZXJhdG9yID0gdGhpcy5kZWZhdWx0T3BlcmF0b3JzLmZpbmQob3BlcmF0b3IgPT4gb3BlcmF0b3IucWJmaWx0ZXJGaWVsZElkID09IGZpbHRlckZpZWxkLmlkKTtcclxuICAgICAgICBsZXQgZmllbGQ6IEZpZWxkID0ge1xyXG4gICAgICAgICAgaWQ6IGZpbHRlckZpZWxkLmlkLFxyXG4gICAgICAgICAgbmFtZTogZmlsdGVyRmllbGQubmFtZSxcclxuICAgICAgICAgIG9wZXJhdG9yczogZGVmYXVsdE9wZXJhdG9yLnFiZGVmYXVsdE9wZXJhdG9yPy5zeW1ib2wgPyB0aGlzLm1vdmVFbGVtZW50VG9GaXJzdFBsYWNlKG9wZXJhdG9yc0ZsYXRBcnJheSwgZGVmYXVsdE9wZXJhdG9yLnFiZGVmYXVsdE9wZXJhdG9yPy5zeW1ib2wpIDogb3BlcmF0b3JzRmxhdEFycmF5LFxyXG4gICAgICAgICAgdHlwZTogdGhpcy5nZXREYXRhVHlwZShmaWx0ZXJGaWVsZC5kYXRhVHlwZSksXHJcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IHRoaXMuZm9ybWF0RGVmYXVsdFZhbHVlKHRoaXMuZGVmYXVsdFZhbHVlcy5maW5kKHZhbHVlID0+IHZhbHVlLnFiZmlsdGVyRmllbGRJZCA9PSBmaWx0ZXJGaWVsZC5pZCkuZGVmYXVsdFZhbHVlLCBmaWx0ZXJGaWVsZC5kYXRhVHlwZSksXHJcbiAgICAgICAgICBkZWZhdWx0T3BlcmF0b3I6IGRlZmF1bHRPcGVyYXRvci5xYmRlZmF1bHRPcGVyYXRvcj8uc3ltYm9sLFxyXG4gICAgICAgICAgZW50aXR5OiBmaWx0ZXJFbnRpdHkuanNvbk5hbWUsXHJcbiAgICAgICAgICBvcHRpb25zOiBmaWx0ZXJGaWVsZC5saXN0T2ZWYWx1ZXMsXHJcbiAgICAgICAgICB2YWxpZGF0b3I6IChydWxlOiBSdWxlLCBwYXJlbnQ6IFJ1bGVTZXQpOiBhbnkgfCBudWxsID0+IHtcclxuICAgICAgICAgICAgaWYgKHJ1bGUub3BlcmF0b3IgIT09IFwiaXMgbnVsbFwiICYmIHJ1bGUub3BlcmF0b3IgIT09IFwiaXMgbm90IG51bGxcIikge1xyXG4gICAgICAgICAgICAgIGlmIChydWxlLnZhbHVlID09PSB1bmRlZmluZWQgfHwgcnVsZS52YWx1ZSA9PT0gbnVsbCB8fCBydWxlLnZhbHVlID09PSAnJyB8fCBydWxlLnZhbHVlLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyByZXF1aXJlZDogJ2VtcHR5IGZpZWxkJyB9O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbnRpdGllcy5wdXNoKHtmaWVsZEpzb25OYW1lOiBmaWx0ZXJGaWVsZC5qc29uTmFtZSwgZW50aXR5OiBmaWVsZC5lbnRpdHl9KTtcclxuICAgICAgICBmaWVsZHNbaW5kZXhdID0geyBbZmlsdGVyRmllbGQuanNvbk5hbWVdOiBmaWVsZCB9O1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIGxldCBmaWVsZHNNYXA6IEZpZWxkTWFwID0ge307XHJcblxyXG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZHMpIHtcclxuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGZpZWxkKTtcclxuICAgICAga2V5cy5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgZmllbGRzTWFwW2tleV0gPSBmaWVsZFtrZXldO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGVudGl0eUNvbmZpZ0F1eC5maWVsZHMgPSBmaWVsZHNNYXA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZW50aXR5Q29uZmlnQXV4O1xyXG4gIH1cclxuXHJcbiAgZmlsdGVyRmllbGRzQnlJZChmaWVsZHNPYmo6IGFueSwgaWRBcnJheTogbnVtYmVyW10pOiBhbnkge1xyXG4gICAgY29uc3QgZmlsdGVyZWRGaWVsZHM6IGFueSA9IHt9O1xyXG4gICAgXHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBmaWVsZHNPYmouZmllbGRzKSB7XHJcbiAgICAgIGNvbnN0IGZpZWxkID0gZmllbGRzT2JqLmZpZWxkc1trZXldO1xyXG4gICAgICBpZiAoaWRBcnJheS5pbmNsdWRlcyhmaWVsZC5pZCkpIHtcclxuICAgICAgICBmaWx0ZXJlZEZpZWxkc1trZXldID0gZmllbGQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4uZmllbGRzT2JqLFxyXG4gICAgICBmaWVsZHM6IGZpbHRlcmVkRmllbGRzLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHRyYW5zbGF0ZUZpZWxkcyhmaWVsZHM6IEZpZWxkTWFwKSB7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBmaWVsZHMpIHtcclxuICAgICAgaWYgKGZpZWxkcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgZmllbGRzW2tleV0uZmllbGQgPSBrZXk7XHJcbiAgICAgICAgZmllbGRzW2tleV0ubmFtZSA9IHRoaXMudHJhbnNsYXRpb25zT2JqZWN0LmZpZWxkc1trZXldO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmllbGRzO1xyXG4gIH1cclxuXHJcbiAgbW92ZUVsZW1lbnRUb0ZpcnN0UGxhY2UoYXJyYXk6IGFueVtdLCBlbGVtZW50VG9GaXJzdFBsYWNlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGluZGV4ID0gYXJyYXkuaW5kZXhPZihlbGVtZW50VG9GaXJzdFBsYWNlKTtcclxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgYXJyYXkuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgYXJyYXkudW5zaGlmdChlbGVtZW50VG9GaXJzdFBsYWNlKTsgXHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXJyYXk7XHJcbiAgfVxyXG5cclxuICBmb3JtYXREZWZhdWx0VmFsdWUodmFsdWU6IGFueSwgdHlwZTogUUJEYXRhVHlwZUVudW0pIHtcclxuICAgIGlmKHZhbHVlKSB7XHJcbiAgICAgIGlmKHR5cGUgPT0gUUJEYXRhVHlwZUVudW0uQm9vbGVhbikge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSc7XHJcbiAgICAgIH1cclxuICAgICAgaWYodHlwZSA9PSB0aGlzLnFiRGF0YVR5cGVFbnVtLk51bWJlciB8fCB0eXBlID09IHRoaXMucWJEYXRhVHlwZUVudW0uRGVjaW1hbCB8fCB0eXBlID09IHRoaXMucWJEYXRhVHlwZUVudW0uTGlzdCl7XHJcbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH0gXHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXREYXRhVHlwZShpZDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5xYkRhdGFFbnVtcy5maW5kKHZhbHVlID0+IHZhbHVlID09PSBpZCk/LnRvU3RyaW5nKCkgPz8gXCJcIjtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUZpZWxkc1dpdGhvdXRWYWx1ZShqc29uOiBhbnkpIHtcclxuICAgIGlmIChqc29uLmJhc2ljICYmIGpzb24uYmFzaWMucnVsZXMpIHtcclxuICAgICAganNvbi5iYXNpYy5ydWxlcyA9IGpzb24uYmFzaWMucnVsZXMuZmlsdGVyKChydWxlOiBhbnkpID0+IHJ1bGUudmFsdWUgIT0gbnVsbCk7XHJcbiAgICAgIGpzb24uYmFzaWMucnVsZXMgPSBqc29uLmJhc2ljLnJ1bGVzLmZpbHRlcigocnVsZTogYW55KSA9PiBydWxlLnZhbHVlICE9IHVuZGVmaW5lZCk7XHJcbiAgICAgIGpzb24uYmFzaWMucnVsZXMgPSBqc29uLmJhc2ljLnJ1bGVzLmZpbHRlcigocnVsZTogYW55KSA9PiBydWxlLnZhbHVlICE9PSBcIlwiKTtcclxuICAgIH1cclxuICAgIGlmKGpzb24uYWR2YW5jZWQgJiYganNvbi5hZHZhbmNlZC5ydWxlcz8ubGVuZ3RoICE9IDApIHtcclxuICAgICAganNvbi5hZHZhbmNlZC5ydWxlcyA9IGpzb24uYWR2YW5jZWQucnVsZXMuZmlsdGVyKChydWxlOiBhbnkpID0+IHJ1bGUucnVsZXM/Lmxlbmd0aCAhPSAwKTtcclxuICAgIH1cclxuICAgIGlmKGpzb24uZ3JvdXBlZCAmJiBqc29uLmdyb3VwZWQ/LnJ1bGVzLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgIGpzb24uZ3JvdXBlZC5ydWxlcyA9IGpzb24uZ3JvdXBlZC5ydWxlcy5maWx0ZXIoKHJ1bGU6IGFueSkgPT4gcnVsZS5ydWxlcz8ubGVuZ3RoICE9IDApO1xyXG4gICAgfVxyXG4gICAgaWYoanNvbi5ncm91cGVkICYmIGpzb24uZ3JvdXBlZD8ucnVsZXMubGVuZ3RoID09IDApIHtcclxuICAgICAganNvbi5ncm91cGVkID0gbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiBqc29uO1xyXG4gIH1cclxuICBcclxuICBpbml0aWFsaXplT3BlcmF0b3JzKGpzb246IGFueSkge1xyXG4gICAgaWYgKGpzb24uYmFzaWMgJiYganNvbi5iYXNpYy5ydWxlcykge1xyXG4gICAgICBqc29uLmJhc2ljLnJ1bGVzLmZvckVhY2goKHJ1bGU6YW55KSA9PiB7XHJcbiAgICAgICAgaWYoIXJ1bGUub3BlcmF0b3IpIHtcclxuICAgICAgICAgIHJ1bGUub3BlcmF0b3IgPSBcIj1cIjtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGpzb247XHJcbiAgfVxyXG5cclxuICByZXNldEJhc2ljUXVlcnlWYWx1ZXMoKSB7XHJcbiAgICB0aGlzLmJhc2ljUXVlcnkucnVsZXMuZm9yRWFjaCgocnVsZTogUnVsZSkgPT4ge1xyXG4gICAgICBpZihydWxlLnZhbHVlIHx8IHJ1bGUudmFsdWUgPT0gMCl7XHJcbiAgICAgICAgcnVsZS52YWx1ZSA9IG51bGxcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRRdWVyeUZpZWxkTmFtZShmaWVsZE5hbWU6IHN0cmluZywgZmllbGRzOiBGaWVsZE1hcCkge1xyXG4gICAgY29uc3QgZmllbGRFbnRyeSA9IE9iamVjdC5rZXlzKGZpZWxkcykuZmluZChrZXkgPT4gZmllbGRzW2tleV0uZmllbGQgPT09IGZpZWxkTmFtZSk7XHJcblxyXG4gICAgcmV0dXJuIGZpZWxkRW50cnkgJiYgZmllbGRzW2ZpZWxkRW50cnldLm5hbWUgPyBmaWVsZHNbZmllbGRFbnRyeV0ubmFtZSA6IGZpZWxkTmFtZTtcclxuICB9XHJcblxyXG4gIGZpZWxkSXNCb29sZWFuKGZpZWxkTmFtZTogc3RyaW5nLCBmaWVsZHM6IEZpZWxkTWFwKSB7XHJcbiAgICBjb25zdCBmaWVsZEVudHJ5ID0gT2JqZWN0LmtleXMoZmllbGRzKS5maW5kKGtleSA9PiBmaWVsZHNba2V5XS5maWVsZCA9PT0gZmllbGROYW1lKTtcclxuXHJcbiAgICByZXR1cm4gZmllbGRzW2ZpZWxkRW50cnkhXS50eXBlID09IFFCRGF0YVR5cGVFbnVtLkJvb2xlYW4udG9TdHJpbmcoKSA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG59XHJcbiIsIjwhLS0gVE9ETzogSW50ZW50YXIgb3RyYSB2ZXogcGFzYXIgbG9zIGNvbXBvbmVudGVzIGEgbG9zIGRlIHctIHBvcnF1ZSBubyBzZSBhbGluZW5hIHkgZWwgdy1lZGl0LXNlbGVjdCBubyB2YSBiaWVuIGVuIGZpZWxkLiBcclxuICBBaG9yYSBzZSBjb25zZXJ2YW4gbG9zIGRlIHAtdyBjb24gZXN0aWxvcy4gLS0+XHJcbjxkaXYgKm5nSWY9XCJxdWVyeUNvbmZpZ1JlYWR5XCIgY2xhc3M9XCJ3LWZpbHRlci1wYW5lbC1zdHlsZXNcIj5cclxuICAgIDxkaXYgKm5nSWY9XCIhZmlsdGVyUGFuZWxPYmplY3QuYWxsb3dBZHZhbmNlZFNlYXJjaDsgZWxzZSBiYWlzY0FuZEFkdmFuY2VkXCI+XHJcbiAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyAndy1maWx0ZXItcGFuZWwtY29udGFpbmVyLWFkdmFuY2VkJyA6IGlzQWR2YW5jZWRTZWFyY2gsICd3LWZpbHRlci1wYW5lbC1jb250YWluZXItYmFzaWMnIDogIWlzQWR2YW5jZWRTZWFyY2ggfVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJiYXNpY1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmQgYnV0dG9uLWdhcFwiPlxyXG4gICAgICAgICAgPHctYnV0dG9uIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3QuY2xlYXJCdXR0b25MYWJlbFwiIHR5cGU9XCJ0ZXJ0aWFyeVwiIHNpemU9XCJzbWFsbFwiIChvbkNsaWNrKT1cIm9uQ2xlYXJDbGlja2VkKClcIj48L3ctYnV0dG9uPlxyXG4gICAgICAgICAgPHctYnV0dG9uIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3Quc2VhcmNoQnV0dG9uTGFiZWxcIiBzaXplPVwic21hbGxcIiAob25DbGljayk9XCJvblNlYXJjaENsaWNrZWQoKVwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICNiYWlzY0FuZEFkdmFuY2VkPlxyXG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgJ3ctZmlsdGVyLXBhbmVsLWNvbnRhaW5lci1hZHZhbmNlZCcgOiBpc0FkdmFuY2VkU2VhcmNoLCAndy1maWx0ZXItcGFuZWwtY29udGFpbmVyLWJhc2ljJyA6ICFpc0FkdmFuY2VkU2VhcmNoIH1cIj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXNBZHZhbmNlZFNlYXJjaDsgZWxzZSBhZHZhbmNlZFZpZXdcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJhc2ljXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYWR2YW5jZWRWaWV3PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWR2YW5jZWRcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZCBidXR0b24tZ2FwXCIgW2NsYXNzLnB0LTNdPVwiaXNBZHZhbmNlZFNlYXJjaFwiPlxyXG4gICAgICAgICAgICA8dy1idXR0b24gW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5jbGVhckJ1dHRvbkxhYmVsXCIgdHlwZT1cInRlcnRpYXJ5XCIgc2l6ZT1cInNtYWxsXCIgKG9uQ2xpY2spPVwib25DbGVhckNsaWNrZWQoKVwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICAgIDx3LWJ1dHRvbiBbbGFiZWxdPVwidHJhbnNsYXRpb25zT2JqZWN0LnNlYXJjaEJ1dHRvbkxhYmVsXCIgc2l6ZT1cInNtYWxsXCIgKG9uQ2xpY2spPVwib25TZWFyY2hDbGlja2VkKClcIiBbbG9hZGluZ109XCJkYXRhSXNMb2FkaW5nU2VhcmNoQnV0dG9uXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYmFzaWM+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVyUGFuZWxPYmplY3QuYWxsb3dBZHZhbmNlZFNlYXJjaFwiIGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGZsZXgtd3JhcFwiPlxyXG4gICAgICA8dy1idXR0b24gW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5hZHZhbmNlZFNlYXJjaFRhYkxhYmVsXCIgdHlwZT1cInRleHRcIiAob25DbGljayk9XCJ1cGRhdGVTZWFyY2hUeXBlKClcIj48L3ctYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidy1maWx0ZXItcGFuZWwtYmFzaWMgcXVlcnktYnVpbGRlci1zdHlsZSBmYWRlaW4gYW5pbWF0aW9uLWR1cmF0aW9uLTUwMFwiPlxyXG4gICAgICA8cXVlcnktYnVpbGRlciBbZm9ybUNvbnRyb2xdPSdxdWVyeUN0cmwnIFtjb25maWddPSdiYXNpY1F1ZXJ5Q29uZmlnJyBbYWxsb3dSdWxlc2V0XT0nZmlsdGVyUGFuZWxPYmplY3QuYWxsb3dSdWxlU2V0JyBbYWxsb3dSdWxlc2V0XT1cImZpbHRlclBhbmVsT2JqZWN0LmFsbG93UnVsZVNldFwiIFtwZXJzaXN0VmFsdWVPbkZpZWxkQ2hhbmdlXT0ncGVyc2lzdFZhbHVlT25GaWVsZENoYW5nZSc+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlCdXR0b25Hcm91cD1cImxldCBydWxlc2V0O1wiPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeVJlbW92ZUJ1dHRvbj1cImxldCBydWxlOyBsZXQgcmVtb3ZlUnVsZT1yZW1vdmVSdWxlXCI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5U3dpdGNoR3JvdXA9XCJsZXQgcnVsZXNldDsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5RW50aXR5PVwibGV0IHJ1bGU7IGxldCBlbnRpdGllcz1lbnRpdGllczsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICA8cC1kcm9wZG93biBbZGlzYWJsZWRdPVwidHJ1ZVwiIGNsYXNzPVwiIHctZWRpdC1zZWxlY3Qtc21hbGxcIiAqbmdJZj1cImZhbHNlXCIgYXBwZW5kVG89XCJib2R5XCIgW29wdGlvbnNdPVwiZW50aXRpZXNcIiBbKG5nTW9kZWwpXT1cInJ1bGUuZW50aXR5XCIgb3B0aW9uTGFiZWw9XCJuYW1lXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudCwgcnVsZSlcIj48L3AtZHJvcGRvd24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5RmllbGQ9XCJsZXQgcnVsZTsgbGV0IGZpZWxkcz1maWVsZHM7IGxldCBvbkNoYW5nZT1vbkNoYW5nZTsgbGV0IGdldEZpZWxkcyA9IGdldEZpZWxkczsgbGV0IHZhbHVlPXZhbHVlOyBsZXQgbmFtZT1uYW1lOyBsZXQgaW5kZXg9aW5kZXhcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBhcHBlbmRUbz1cImJvZHlcIiBjbGFzcz1cInctNCB0ZXh0LWxlZnQgdy1maWx0ZXItcGFuZWwtaW5wdXQtdGV4dC1sYWJlbFwiIFtjbGFzcy53LWZpbHRlci1wYW5lbC1ib29sZWFuLWxhYmVsLXdpZHRoXT1cImZpZWxkSXNCb29sZWFuKHJ1bGUuZmllbGQsIGdldEZpZWxkcyhydWxlLmVudGl0eSkpXCIgb3B0aW9uTGFiZWw9XCJuYW1lXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiPnt7IGdldFF1ZXJ5RmllbGROYW1lKHJ1bGUuZmllbGQsIGdldEZpZWxkcyhydWxlLmVudGl0eSkpfX08L3NwYW4+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5T3BlcmF0b3I9XCJsZXQgcnVsZTsgbGV0IG9wZXJhdG9ycz1vcGVyYXRvcnM7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInF1ZXJ5LWJ1aWxkZXItb3BlcmF0b3Itd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8cC1kcm9wZG93biBjbGFzcz1cIiB3LWVkaXQtc2VsZWN0LXNtYWxsXCIgKm5nSWY9XCJpc0FkdmFuY2VkU2VhcmNoXCIgYXBwZW5kVG89XCJib2R5XCIgWyhuZ01vZGVsKV09XCJydWxlLm9wZXJhdG9yXCIgW29wdGlvbnNdPVwib3BlcmF0b3JzXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UocnVsZSlcIj48L3AtZHJvcGRvd24+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5Cb29sZWFuLnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJxdWVyeS1idWlsZGVyLW9wZXJhdG9yLXdpZHRoXCI+XHJcbiAgICAgICAgICAgIDx3LXRvZ2dsZS1idXR0b24gc2l6ZT1cInNtYWxsXCIgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgb25MYWJlbD1cIlRydWVcIiBvZmZMYWJlbD1cIkZhbHNlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoKVwiPjwvdy10b2dnbGUtYnV0dG9uPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLkRhdGV0aW1lLnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInctZmlsdGVyLXBhbmVsLWJhc2ljLXF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8dy1lZGl0LWNhbGVuZGFyIGFwcGVuZFRvPVwiYm9keVwiIHNpemU9XCJzbWFsbFwiIFtzaG93SWNvbl09XCJmYWxzZVwiIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIChvbkNoYW5nZSk9XCJvbkNoYW5nZSgpXCIgW3Nob3dUaW1lXT1cInRydWVcIiBbc2hvd1NlY29uZHNdPVwidHJ1ZVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLmRhdGV0aW1lXCIgW2Rpc3BsYXlJbmxpbmVCbG9ja109XCJ0cnVlXCI+PC93LWVkaXQtY2FsZW5kYXI+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgZmllbGQ9ZmllbGQ7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLkRlY2ltYWwudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidy1maWx0ZXItcGFuZWwtYmFzaWMtcXVlcnktYnVpbGRlci1pbnB1dC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxwLWlucHV0TnVtYmVyIGlucHV0U3R5bGVDbGFzcz1cImZsZXggZmxleC0xXCIgc3R5bGVDbGFzcz1cImZsZXggZmxleC0xXCIgY2xhc3M9XCIgdy1maWx0ZXItcGFuZWwtYmFzaWMtcXVlcnktYnVpbGRlci1pbnB1dC13aWR0aCB3LWVkaXQtaW5wdXQtbnVtYmVyLXNtYWxsIHctZWRpdC1pbnB1dC1udW1iZXItc21hbGwtaGVpZ2h0XCIgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgaW5wdXRJZD1cIm1pbm1heFwiIGlucHV0SWQ9XCJtaW5tYXhcIiBtb2RlPVwiZGVjaW1hbFwiIFttaW5GcmFjdGlvbkRpZ2l0c109XCIyXCIgW21heEZyYWN0aW9uRGlnaXRzXT1cIjVcIiBbbWluXT1cIjBcIiBbbWF4XT1cIjEwMFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRpb25zT2JqZWN0LmZpZWxkc1BsYWNlaG9sZGVycy5kZWNpbWFsXCI+IDwvcC1pbnB1dE51bWJlcj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IGxldCBvcHRpb25zPW9wdGlvbnM7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLkxpc3QudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidy1maWx0ZXItcGFuZWwtYmFzaWMtcXVlcnktYnVpbGRlci1pbnB1dC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxwLWRyb3Bkb3duIGNsYXNzPVwiIHctZWRpdC1zZWxlY3Qtc21hbGxcIiBhcHBlbmRUbz1cImJvZHlcIiBbb3B0aW9uc109XCJvcHRpb25zXCIgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoKVwiIG9wdGlvbkxhYmVsPVwibmFtZVwiIG9wdGlvblZhbHVlPVwidmFsdWVcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRpb25zT2JqZWN0LmZpZWxkc1BsYWNlaG9sZGVycy5saXN0XCI+PC9wLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgbGV0IGZpZWxkPWZpZWxkOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5OdW1iZXIudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgICAgPHAtaW5wdXROdW1iZXIgaW5wdXRTdHlsZUNsYXNzPVwiZmxleCBmbGV4LTFcIiBzdHlsZUNsYXNzPVwiZmxleCBmbGV4LTFcIiBjbGFzcz1cIiB3LWZpbHRlci1wYW5lbC1iYXNpYy1xdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoIHctZWRpdC1pbnB1dC1udW1iZXItc21hbGwgdy1lZGl0LWlucHV0LW51bWJlci1zbWFsbC1oZWlnaHRcIiBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiBpbnB1dElkPVwibWlubWF4XCIgaW5wdXRJZD1cIm1pbm1heFwiIFttaW5dPVwiMFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRpb25zT2JqZWN0LmZpZWxkc1BsYWNlaG9sZGVycy5udW1iZXJcIj4gPC9wLWlucHV0TnVtYmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IGxldCBmaWVsZD1maWVsZDsgdHlwZTogcWJEYXRhVHlwZUVudW0uVGV4dC50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cIiB3LWZpbHRlci1wYW5lbC1iYXNpYy1xdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoIHctZWRpdC1pbnB1dC10ZXh0LXNtYWxsLWhlaWdodCB3LWVkaXQtaW5wdXQtdGV4dC1zbWFsbFwiIHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMudGV4dFwiLz5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgb3B0aW9ucz1vcHRpb25zOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5MaXN0LnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInctZmlsdGVyLXBhbmVsLWJhc2ljLXF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8cC1tdWx0aVNlbGVjdCBbYXBwZW5kVG9dPVwiJ2JvZHknXCIgW29wdGlvbnNdPVwib3B0aW9uc1wiIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIiBvcHRpb25MYWJlbD1cIm5hbWVcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCIgZGlzcGxheT1cImNoaXBcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRpb25zT2JqZWN0LmZpZWxkc1BsYWNlaG9sZGVycy5saXN0XCI+PC9wLW11bHRpU2VsZWN0PlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvcXVlcnktYnVpbGRlcj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNBZHZhbmNlZFNlYXJjaCAmJiBiYXNpY1F1ZXJ5LnJ1bGVzLmxlbmd0aD09MFwiID5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5vUXVlcnlEYXRhXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhZHZhbmNlZD5cclxuICAgIDxkaXYgW2NsYXNzLnF1ZXJ5LWJ1aWxkZXItc3R5bGVdPVwiIWZpbHRlclBhbmVsT2JqZWN0LmFsbG93UnVsZVNldFwiIGNsYXNzPVwidy1maWx0ZXItcGFuZWwtY29udGFpbmVyIGZhZGVpbiBhbmltYXRpb24tZHVyYXRpb24tNTAwXCI+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXJQYW5lbE9iamVjdC5hbGxvd1J1bGVTZXRcIiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZCBmbGV4LXdyYXBcIj5cclxuICAgICAgICA8dy1idXR0b24gY2xhc3M9XCJtYi0yXCIgW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5iYXNpY1NlYXJjaFRhYkxhYmVsXCIgdHlwZT1cInRleHRcIiAob25DbGljayk9XCJ1cGRhdGVTZWFyY2hUeXBlKClcIj48L3ctYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPHF1ZXJ5LWJ1aWxkZXIgW2Zvcm1Db250cm9sXT0nYWR2YW5jZWRRdWVyeUN0cmwnIFtjb25maWddPSdhZHZhbmNlZFF1ZXJ5Q29uZmlnJyBbYWxsb3dSdWxlc2V0XT0nZmlsdGVyUGFuZWxPYmplY3QuYWxsb3dSdWxlU2V0JyBbYWxsb3dDb2xsYXBzZV09J2ZpbHRlclBhbmVsT2JqZWN0LmFsbG93Q29sYXBzZScgW2FsbG93UnVsZXNldF09XCJmaWx0ZXJQYW5lbE9iamVjdC5hbGxvd1J1bGVTZXRcIiBbcGVyc2lzdFZhbHVlT25GaWVsZENoYW5nZV09J3BlcnNpc3RWYWx1ZU9uRmllbGRDaGFuZ2UnPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlclBhbmVsT2JqZWN0LmFsbG93UnVsZVNldDsgZWxzZSBub1J1bGVTZXRcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlCdXR0b25Hcm91cD1cImxldCBydWxlc2V0OyBsZXQgYWRkUnVsZT1hZGRSdWxlOyBsZXQgYWRkUnVsZVNldD1hZGRSdWxlU2V0OyBsZXQgcmVtb3ZlUnVsZVNldD1yZW1vdmVSdWxlU2V0XCI+XHJcbiAgICAgICAgICAgICAgICA8dy1idXR0b24gY2xhc3M9XCJtci0yXCIgW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5hZHZhbmNlZFNlYXJjaC5hZGRSdWxlQnV0dG9uTGFiZWxcIiB0eXBlPVwic2Vjb25kYXJ5XCIgc2l6ZT1cInNtYWxsXCIgKG9uQ2xpY2spPVwiYWRkUnVsZSgpXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDx3LWJ1dHRvbiBjbGFzcz1cIm1yLTJcIiBbbGFiZWxdPVwidHJhbnNsYXRpb25zT2JqZWN0LmFkdmFuY2VkU2VhcmNoLmFkZFJ1bGVTZXRCdXR0b25MYWJlbFwiIHR5cGU9XCJzZWNvbmRhcnlcIiBpY29uPVwicGkgcGktcGx1c1wiIHNpemU9XCJzbWFsbFwiICpuZ0lmPVwiYWRkUnVsZVNldFwiIChvbkNsaWNrKT1cImFkZFJ1bGVTZXQoKVwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8dy1idXR0b24gY2xhc3M9XCJtci0yXCIgW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5hZHZhbmNlZFNlYXJjaC5yZW1vdmVSdWxlU2V0QnV0dG9uTGFiZWxcIiB0eXBlPVwidGVydGlhcnlcIiBpY29uPVwicGkgcGktbWludXNcIiBzaXplPVwic21hbGxcIiAqbmdJZj1cInJlbW92ZVJ1bGVTZXRcIiAob25DbGljayk9XCJyZW1vdmVSdWxlU2V0KClcIj48L3ctYnV0dG9uPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9SdWxlU2V0PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUJ1dHRvbkdyb3VwPVwibGV0IHJ1bGVzZXQ7IGxldCBhZGRSdWxlPWFkZFJ1bGU7IGxldCBhZGRSdWxlU2V0PWFkZFJ1bGVTZXQ7IGxldCByZW1vdmVSdWxlU2V0PXJlbW92ZVJ1bGVTZXRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGZsZXgtd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgPHctYnV0dG9uIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3QuYmFzaWNTZWFyY2hUYWJMYWJlbFwiIHR5cGU9XCJ0ZXh0XCIgKG9uQ2xpY2spPVwidXBkYXRlU2VhcmNoVHlwZSgpXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkdmFuY2VkLXF1ZXJ5LWJ1dHRvbi1ncm91cCBnYXAtM1wiPlxyXG4gICAgICAgICAgICAgICAgPHctYnV0dG9uIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3QuYWR2YW5jZWRTZWFyY2guYWRkUnVsZUJ1dHRvbkxhYmVsXCIgdHlwZT1cInNlY29uZGFyeVwiIHNpemU9XCJzbWFsbFwiIChvbkNsaWNrKT1cImFkZFJ1bGUoKVwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8dy1idXR0b24gW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5hZHZhbmNlZFNlYXJjaC5hZGRSdWxlU2V0QnV0dG9uTGFiZWxcIiB0eXBlPVwic2Vjb25kYXJ5XCIgaWNvbj1cInBpIHBpLXBsdXNcIiBzaXplPVwic21hbGxcIiAqbmdJZj1cImFkZFJ1bGVTZXRcIiAob25DbGljayk9XCJhZGRSdWxlU2V0KClcIj48L3ctYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPHctYnV0dG9uIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3QuYWR2YW5jZWRTZWFyY2gucmVtb3ZlUnVsZVNldEJ1dHRvbkxhYmVsXCIgdHlwZT1cInRlcnRpYXJ5XCIgaWNvbj1cInBpIHBpLW1pbnVzXCIgc2l6ZT1cInNtYWxsXCIgKm5nSWY9XCJyZW1vdmVSdWxlU2V0XCIgKG9uQ2xpY2spPVwicmVtb3ZlUnVsZVNldCgpXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5QXJyb3dJY29uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgaWNvbj1cInBpIHBpLWFuZ2xlLXJpZ2h0XCIgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHRcIj48L2J1dHRvbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5UmVtb3ZlQnV0dG9uPVwibGV0IHJ1bGU7IGxldCByZW1vdmVSdWxlPXJlbW92ZVJ1bGVcIj5cclxuICAgICAgICAgICAgPHctYnV0dG9uIGNsYXNzPVwiXCIgbGFiZWw9XCJcIiBzaXplPVwic21hbGxcIiB0eXBlPVwidGVydGlhcnlcIiBpY29uPVwicGkgcGktdGltZXNcIiAob25DbGljayk9XCJyZW1vdmVSdWxlKHJ1bGUpXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5U3dpdGNoR3JvdXA9XCJsZXQgcnVsZXNldDsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJydWxlc2V0XCIgY2xhc3M9XCJ3LWZpbHRlci1wYW5lbC1zd2l0Y2gtZ3JvdXAtcGFkZGluZ1wiPlxyXG4gICAgICAgICAgICAgIDx3LXNlbGVjdC1idXR0b24gKm5nSWY9XCJmaWx0ZXJQYW5lbE9iamVjdC5hbGxvd0xvZ2ljYWxSdWxlXCIgW3N0YXRlT3B0aW9uc109XCJbe2xhYmVsOiAnQW5kJywgdmFsdWU6ICdhbmQnfSwge2xhYmVsOiAnT3InLCB2YWx1ZTogJ29yJ31dXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicnVsZXNldC5jb25kaXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUpPVwicnVsZXNldC5jb25kaXRpb24gPSAkZXZlbnRcIj5cclxuICAgICAgICAgICAgICA8L3ctc2VsZWN0LWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUVudGl0eT1cImxldCBydWxlOyBsZXQgZW50aXRpZXM9ZW50aXRpZXM7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICAgIDxwLWRyb3Bkb3duICpuZ0lmPVwiZmlsdGVyUGFuZWxPYmplY3QuZW5pdHlNb2RlXCIgY2xhc3M9XCJmaWVsZC1nYXAgdy1lZGl0LXNlbGVjdC1zbWFsbFwiIGFwcGVuZFRvPVwiYm9keVwiIFtvcHRpb25zXT1cImVudGl0aWVzXCIgWyhuZ01vZGVsKV09XCJydWxlLmVudGl0eVwiIG9wdGlvbkxhYmVsPVwibmFtZVwiIG9wdGlvblZhbHVlPVwidmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQsIHJ1bGUpXCI+PC9wLWRyb3Bkb3duPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlGaWVsZD1cImxldCBydWxlOyBsZXQgZmllbGRzPWZpZWxkczsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlOyBsZXQgZ2V0RmllbGRzID0gZ2V0RmllbGRzXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXVlcnktYnVpbGRlci1maWVsZC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxwLWRyb3Bkb3duIGNsYXNzPVwiZmllbGQtZ2FwIHctZWRpdC1zZWxlY3Qtc21hbGxcIiBhcHBlbmRUbz1cImJvZHlcIiBbb3B0aW9uc109XCJnZXRGaWVsZHMocnVsZS5lbnRpdHkpXCIgWyhuZ01vZGVsKV09XCJydWxlLmZpZWxkXCIgb3B0aW9uTGFiZWw9XCJuYW1lXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudCwgcnVsZSlcIj48L3AtZHJvcGRvd24+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5T3BlcmF0b3I9XCJsZXQgcnVsZTsgbGV0IG9wZXJhdG9ycz1vcGVyYXRvcnM7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInF1ZXJ5LWJ1aWxkZXItb3BlcmF0b3Itd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8cC1kcm9wZG93biBjbGFzcz1cImZpZWxkLWdhcCB3LWVkaXQtc2VsZWN0LXNtYWxsXCIgYXBwZW5kVG89XCJib2R5XCIgWyhuZ01vZGVsKV09XCJydWxlLm9wZXJhdG9yXCIgW29wdGlvbnNdPVwib3BlcmF0b3JzXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UocnVsZSlcIj48L3AtZHJvcGRvd24+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgdHlwZTogcWJEYXRhVHlwZUVudW0uQm9vbGVhbi50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPHctdG9nZ2xlLWJ1dHRvbiBjbGFzcz1cImZpZWxkLWdhcCB0b2dnbGUtYnV0dG9uLWFsaWduXCIgc2l6ZT1cInNtYWxsXCIgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgb25MYWJlbD1cIlRydWVcIiBvZmZMYWJlbD1cIkZhbHNlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoKVwiPjwvdy10b2dnbGUtYnV0dG9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5EYXRldGltZS50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPHctZWRpdC1jYWxlbmRhciBjbGFzcz1cImZpZWxkLWdhcFwiIGFwcGVuZFRvPVwiYm9keVwiIHNpemU9XCJzbWFsbFwiIFtzaG93SWNvbl09XCJmYWxzZVwiIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIChvbkNoYW5nZSk9XCJvbkNoYW5nZSgpXCIgW3Nob3dUaW1lXT1cInRydWVcIiBbc2hvd1NlY29uZHNdPVwidHJ1ZVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLmRhdGV0aW1lXCIgW2Rpc3BsYXlJbmxpbmVCbG9ja109XCJ0cnVlXCI+PC93LWVkaXQtY2FsZW5kYXI+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgbGV0IGZpZWxkPWZpZWxkOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5EZWNpbWFsLnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8cC1pbnB1dE51bWJlciBpbnB1dFN0eWxlQ2xhc3M9XCJmbGV4IGZsZXgtMVwiIHN0eWxlQ2xhc3M9XCJmbGV4IGZsZXgtMVwiIGNsYXNzPVwiZmllbGQtZ2FwIHctZWRpdC1pbnB1dC1udW1iZXItc21hbGwgdy1lZGl0LWlucHV0LW51bWJlci1zbWFsbC1oZWlnaHRcIiBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiBpbnB1dElkPVwibWlubWF4XCIgaW5wdXRJZD1cIm1pbm1heFwiIG1vZGU9XCJkZWNpbWFsXCIgW21pbkZyYWN0aW9uRGlnaXRzXT1cIjJcIiBbbWF4RnJhY3Rpb25EaWdpdHNdPVwiNVwiIFttaW5dPVwiMFwiIFttYXhdPVwiMTAwXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoKVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLmRlY2ltYWxcIj4gPC9wLWlucHV0TnVtYmVyPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IGxldCBvcHRpb25zPW9wdGlvbnM7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLkxpc3QudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXVlcnktYnVpbGRlci1pbnB1dC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxwLWRyb3Bkb3duIGNsYXNzPVwiZmllbGQtZ2FwIHctZWRpdC1zZWxlY3Qtc21hbGxcIiBhcHBlbmRUbz1cImJvZHlcIiBbb3B0aW9uc109XCJvcHRpb25zXCIgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoKVwiIG9wdGlvbkxhYmVsPVwibmFtZVwiIG9wdGlvblZhbHVlPVwidmFsdWVcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRpb25zT2JqZWN0LmZpZWxkc1BsYWNlaG9sZGVycy5saXN0XCI+PC9wLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IGxldCBvcHRpb25zPW9wdGlvbnM7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLkxpc3QudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXVlcnktYnVpbGRlci1pbnB1dC13aWR0aCBmaWVsZC1nYXBcIj5cclxuICAgICAgICAgICAgICA8dy1saXN0LWZpZWxkIFtvcHRpb25zXT1cIm9wdGlvbnNcIiBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiBbb3BlcmF0b3JdPVwicnVsZS5vcGVyYXRvclwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRpb25zT2JqZWN0LmZpZWxkc1BsYWNlaG9sZGVycy5saXN0XCI+PC93LWxpc3QtZmllbGQ+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgbGV0IGZpZWxkPWZpZWxkOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5OdW1iZXIudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXVlcnktYnVpbGRlci1pbnB1dC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxwLWlucHV0TnVtYmVyIGlucHV0U3R5bGVDbGFzcz1cImZsZXggZmxleC0xXCIgc3R5bGVDbGFzcz1cImZsZXggZmxleC0xXCIgY2xhc3M9XCJmaWVsZC1nYXAgdy1lZGl0LWlucHV0LW51bWJlci1zbWFsbCB3LWVkaXQtaW5wdXQtbnVtYmVyLXNtYWxsLWhlaWdodFwiIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIGlucHV0SWQ9XCJtaW5tYXhcIiBpbnB1dElkPVwibWlubWF4XCIgW21pbl09XCIwXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoKVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLm51bWJlclwiPiA8L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgbGV0IGZpZWxkPWZpZWxkOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5UZXh0LnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmaWVsZC1nYXAgcXVlcnktYnVpbGRlci1pbnB1dC13aWR0aCB3LWVkaXQtaW5wdXQtdGV4dC1zbWFsbC1oZWlnaHQgdy1lZGl0LWlucHV0LXRleHQtc21hbGxcIiB0eXBlPVwidGV4dFwiIHBJbnB1dFRleHQgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoKVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLnRleHRcIi8+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9xdWVyeS1idWlsZGVyPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQWR2YW5jZWRTZWFyY2ggJiYgYWR2YW5jZWRRdWVyeS5ydWxlcy5sZW5ndGg9PTBcIiA+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5vUXVlcnlEYXRhXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPCEtLSBHcm91cGVkIGZpbHRlciAtLT5cclxuICAgICAgPGRpdiAqbmdJZj1cImZpbHRlclBhbmVsT2JqZWN0LmFsbG93R3JvdXBlZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJweS01XCI+XHJcbiAgICAgICAgICA8dy12aWV3LWNhcmQtdGl0bGUtdGV4dCBbY2FyZFRpdGxlXT1cInRyYW5zbGF0aW9uc09iamVjdC5ncm91cGVkRmlsdGVyVGl0bGVcIj48L3ctdmlldy1jYXJkLXRpdGxlLXRleHQ+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxxdWVyeS1idWlsZGVyIFtmb3JtQ29udHJvbF09J2dyb3VwZWRRdWVyeUN0cmwnIFtjb25maWddPSdhZHZhbmNlZFF1ZXJ5Q29uZmlnJyBbYWxsb3dSdWxlc2V0XT0nZmlsdGVyUGFuZWxPYmplY3QuYWxsb3dSdWxlU2V0JyBbYWxsb3dDb2xsYXBzZV09J2ZpbHRlclBhbmVsT2JqZWN0LmFsbG93Q29sYXBzZScgW2FsbG93UnVsZXNldF09XCJmaWx0ZXJQYW5lbE9iamVjdC5hbGxvd1J1bGVTZXRcIiBbcGVyc2lzdFZhbHVlT25GaWVsZENoYW5nZV09J3BlcnNpc3RWYWx1ZU9uRmllbGRDaGFuZ2UnPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlCdXR0b25Hcm91cD1cImxldCBydWxlc2V0OyBsZXQgYWRkUnVsZT1hZGRSdWxlOyBsZXQgYWRkUnVsZVNldD1hZGRSdWxlU2V0OyBsZXQgcmVtb3ZlUnVsZVNldD1yZW1vdmVSdWxlU2V0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0zIG1iLTNcIj5cclxuICAgICAgICAgICAgICA8dy1idXR0b24gW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5hZHZhbmNlZFNlYXJjaC5hZGRSdWxlQnV0dG9uTGFiZWxcIiB0eXBlPVwic2Vjb25kYXJ5XCIgc2l6ZT1cInNtYWxsXCIgKG9uQ2xpY2spPVwiYWRkUnVsZSgpXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgICA8dy1idXR0b24gW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5hZHZhbmNlZFNlYXJjaC5hZGRSdWxlU2V0QnV0dG9uTGFiZWxcIiB0eXBlPVwic2Vjb25kYXJ5XCIgaWNvbj1cInBpIHBpLXBsdXNcIiBzaXplPVwic21hbGxcIiAqbmdJZj1cImFkZFJ1bGVTZXRcIiAob25DbGljayk9XCJhZGRSdWxlU2V0KClcIj48L3ctYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDx3LWJ1dHRvbiBbbGFiZWxdPVwidHJhbnNsYXRpb25zT2JqZWN0LmFkdmFuY2VkU2VhcmNoLnJlbW92ZVJ1bGVTZXRCdXR0b25MYWJlbFwiIHR5cGU9XCJ0ZXJ0aWFyeVwiIGljb249XCJwaSBwaS1taW51c1wiIHNpemU9XCJzbWFsbFwiICpuZ0lmPVwicmVtb3ZlUnVsZVNldFwiIChvbkNsaWNrKT1cInJlbW92ZVJ1bGVTZXQoKVwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlBcnJvd0ljb24+XHJcbiAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIiBpY29uPVwicGkgcGktYW5nbGUtcmlnaHRcIiBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dFwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlSZW1vdmVCdXR0b249XCJsZXQgcnVsZTsgbGV0IHJlbW92ZVJ1bGU9cmVtb3ZlUnVsZVwiPlxyXG4gICAgICAgICAgICA8dy1idXR0b24gY2xhc3M9XCJcIiBsYWJlbD1cIlwiIHNpemU9XCJzbWFsbFwiIHR5cGU9XCJ0ZXJ0aWFyeVwiIGljb249XCJwaSBwaS10aW1lc1wiIChvbkNsaWNrKT1cInJlbW92ZVJ1bGUocnVsZSlcIj48L3ctYnV0dG9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlTd2l0Y2hHcm91cD1cImxldCBydWxlc2V0OyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJ1bGVzZXRcIj5cclxuICAgICAgICAgICAgICA8dy1zZWxlY3QtYnV0dG9uICpuZ0lmPVwiZmlsdGVyUGFuZWxPYmplY3QuYWxsb3dMb2dpY2FsUnVsZVwiIFtzdGF0ZU9wdGlvbnNdPVwiW3tsYWJlbDogJ0FuZCcsIHZhbHVlOiAnYW5kJ30sIHtsYWJlbDogJ09yJywgdmFsdWU6ICdvcid9XVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJ1bGVzZXQuY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlKT1cInJ1bGVzZXQuY29uZGl0aW9uID0gJGV2ZW50XCI+XHJcbiAgICAgICAgICAgICAgPC93LXNlbGVjdC1idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlFbnRpdHk9XCJsZXQgcnVsZTsgbGV0IGVudGl0aWVzPWVudGl0aWVzOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPHAtZHJvcGRvd24gY2xhc3M9XCJtci0zIHctZWRpdC1zZWxlY3Qtc21hbGxcIiAqbmdJZj1cImZpbHRlclBhbmVsT2JqZWN0LmVuaXR5TW9kZVwiIGFwcGVuZFRvPVwiYm9keVwiIFtvcHRpb25zXT1cImVudGl0aWVzXCIgWyhuZ01vZGVsKV09XCJydWxlLmVudGl0eVwiIG9wdGlvbkxhYmVsPVwibmFtZVwiIG9wdGlvblZhbHVlPVwidmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQsIHJ1bGUpXCI+PC9wLWRyb3Bkb3duPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlGaWVsZD1cImxldCBydWxlOyBsZXQgZmllbGRzPWZpZWxkczsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlOyBsZXQgZ2V0RmllbGRzID0gZ2V0RmllbGRzXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXVlcnktYnVpbGRlci1maWVsZC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxwLWRyb3Bkb3duIGNsYXNzPVwibXItMyB3LWVkaXQtc2VsZWN0LXNtYWxsXCIgYXBwZW5kVG89XCJib2R5XCIgW29wdGlvbnNdPVwiZ2V0RmllbGRzKHJ1bGUuZW50aXR5KVwiIFsobmdNb2RlbCldPVwicnVsZS5maWVsZFwiIG9wdGlvbkxhYmVsPVwibmFtZVwiIG9wdGlvblZhbHVlPVwidmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQsIHJ1bGUpXCI+PC9wLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeU9wZXJhdG9yPVwibGV0IHJ1bGU7IGxldCBvcGVyYXRvcnM9b3BlcmF0b3JzOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxdWVyeS1idWlsZGVyLW9wZXJhdG9yLXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPHAtZHJvcGRvd24gY2xhc3M9XCJtci0zIHctZWRpdC1zZWxlY3Qtc21hbGxcIiBhcHBlbmRUbz1cImJvZHlcIiBbKG5nTW9kZWwpXT1cInJ1bGUub3BlcmF0b3JcIiBbb3B0aW9uc109XCJvcGVyYXRvcnNcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZShydWxlKVwiPjwvcC1kcm9wZG93bj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5Cb29sZWFuLnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8dy10b2dnbGUtYnV0dG9uIGNsYXNzPVwibXItM1wiIHNpemU9XCJzbWFsbFwiIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIG9uTGFiZWw9XCJUcnVlXCIgb2ZmTGFiZWw9XCJGYWxzZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIj48L3ctdG9nZ2xlLWJ1dHRvbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgdHlwZTogcWJEYXRhVHlwZUVudW0uRGF0ZXRpbWUudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXVlcnktYnVpbGRlci1pbnB1dC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDx3LWVkaXQtY2FsZW5kYXIgY2xhc3M9XCJmaWVsZC1nYXBcIiBhcHBlbmRUbz1cImJvZHlcIiBzaXplPVwic21hbGxcIiBbc2hvd0ljb25dPVwiZmFsc2VcIiBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiAob25DaGFuZ2UpPVwib25DaGFuZ2UoKVwiIFtzaG93VGltZV09XCJ0cnVlXCIgW3Nob3dTZWNvbmRzXT1cInRydWVcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRpb25zT2JqZWN0LmZpZWxkc1BsYWNlaG9sZGVycy5kYXRldGltZVwiIFtkaXNwbGF5SW5saW5lQmxvY2tdPVwidHJ1ZVwiPjwvdy1lZGl0LWNhbGVuZGFyPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IGxldCBmaWVsZD1maWVsZDsgdHlwZTogcWJEYXRhVHlwZUVudW0uRGVjaW1hbC50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPHAtaW5wdXROdW1iZXIgY2xhc3M9XCJtci0zXCIgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgaW5wdXRJZD1cIm1pbm1heFwiIGlucHV0SWQ9XCJtaW5tYXhcIiBtb2RlPVwiZGVjaW1hbFwiIFttaW5GcmFjdGlvbkRpZ2l0c109XCIyXCIgW21heEZyYWN0aW9uRGlnaXRzXT1cIjVcIiBbbWluXT1cIjBcIiBbbWF4XT1cIjEwMFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRpb25zT2JqZWN0LmZpZWxkc1BsYWNlaG9sZGVycy5kZWNpbWFsXCI+IDwvcC1pbnB1dE51bWJlcj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgb3B0aW9ucz1vcHRpb25zOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5MaXN0LnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8dy1saXN0LWZpZWxkIFtvcHRpb25zXT1cIm9wdGlvbnNcIiBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiBbb3BlcmF0b3JdPVwicnVsZS5vcGVyYXRvclwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRpb25zT2JqZWN0LmZpZWxkc1BsYWNlaG9sZGVycy5saXN0XCI+PC93LWxpc3QtZmllbGQ+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgbGV0IGZpZWxkPWZpZWxkOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5OdW1iZXIudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXVlcnktYnVpbGRlci1pbnB1dC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxwLWlucHV0TnVtYmVyIGlucHV0U3R5bGVDbGFzcz1cImZsZXggZmxleC0xXCIgc3R5bGVDbGFzcz1cImZsZXggZmxleC0xXCIgY2xhc3M9XCJmaWVsZC1nYXAgdy1lZGl0LWlucHV0LW51bWJlci1zbWFsbCB3LWVkaXQtaW5wdXQtbnVtYmVyLXNtYWxsLWhlaWdodFwiIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIGlucHV0SWQ9XCJtaW5tYXhcIiBpbnB1dElkPVwibWlubWF4XCIgW21pbl09XCIwXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoKVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLm51bWJlclwiPiA8L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgbGV0IGZpZWxkPWZpZWxkOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5UZXh0LnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJtci0zIHF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGggdy1lZGl0LWlucHV0LXRleHQtc21hbGwtaGVpZ2h0IHdhcHAtaW5wdXRcIiB0eXBlPVwidGV4dFwiIHBJbnB1dFRleHQgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoKVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLnRleHRcIi8+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPC9xdWVyeS1idWlsZGVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNBZHZhbmNlZFNlYXJjaCAmJiBncm91cGVkUXVlcnkucnVsZXMubGVuZ3RoPT0wXCIgPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5vUXVlcnlEYXRhXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNub1F1ZXJ5RGF0YT5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC13cmFwIGNhcmQtY29udGFpbmVyIHN1cmZhY2UtNTAgbWItM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciB3LWZ1bGwgaC00cmVtIHRleHQtZ3JheS05MDAgYm9yZGVyLXJvdW5kIG0tMlwiPlxyXG4gICAgICAgIHt7dHJhbnNsYXRpb25zT2JqZWN0Lm5vUnVsZXNMYWJlbH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuIl19
453
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidy1maWx0ZXItcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2FwcC1jb21wb25lbnRzL3NyYy9saWIvbWlzYy93LWZpbHRlci1wYW5lbC93LWZpbHRlci1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93YXBwLWNvbXBvbmVudHMvc3JjL2xpYi9taXNjL3ctZmlsdGVyLXBhbmVsL3ctZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSWpFLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sc0RBQXNELENBQUM7QUFNckcsT0FBTyxFQUFrQixhQUFhLEVBQTJCLE1BQU0saUJBQWlCLENBQUM7QUFFekYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPOUIsTUFBTSxPQUFPLHFCQUFxQjtJQW1GaEMsWUFDVSxNQUFjLEVBQ2QsS0FBcUIsRUFDckIsV0FBd0IsRUFDeEIsVUFBc0IsRUFDdEIsWUFBaUM7UUFKakMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBcEZwQyw4QkFBeUIsR0FBWSxLQUFLLENBQUM7UUFFbEQscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ2xDLHFCQUFnQixHQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxr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QUMsS0FBSyxDQUFDO0lBQ3RGLENBQUM7O2tIQW5jVSxxQkFBcUI7c0dBQXJCLHFCQUFxQiwrYUNyQmxDLHU2dkJBaVRBOzJGRDVSYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsZ0JBQWdCOytNQXFDVCxtQkFBbUI7c0JBQW5DLEtBQUs7dUJBQUMsUUFBUTtnQkFDWSxnQkFBZ0I7c0JBQTFDLEtBQUs7dUJBQUMsa0JBQWtCO2dCQUNULEtBQUs7c0JBQXBCLEtBQUs7dUJBQUMsT0FBTztnQkFDWSxlQUFlO3NCQUF4QyxLQUFLO3VCQUFDLGlCQUFpQjtnQkFDTCxRQUFRO3NCQUExQixLQUFLO3VCQUFDLFVBQVU7Z0JBQ21CLHlCQUF5QjtzQkFBNUQsS0FBSzt1QkFBQywyQkFBMkI7Z0JBRUwsa0JBQWtCO3NCQUE5QyxLQUFLO3VCQUFDLG9CQUFvQjtnQkFxQ0YsYUFBYTtzQkFBckMsTUFBTTt1QkFBQyxlQUFlO2dCQUNDLFlBQVk7c0JBQW5DLE1BQU07dUJBQUMsY0FBYztnQkFDRCxTQUFTO3NCQUE3QixNQUFNO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUUJEYXRhVHlwZUVudW0gfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL2VudW1zLm1vZGVsJztcclxuaW1wb3J0IHsgUWJQYW5lbEZpbHRlciB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvZmlsdGVyLXBhbmVsL3FiLXBhbmVsLWZpbHRlci5tb2RlbCc7XHJcbmltcG9ydCB7IEVudGl0eSwgRW50aXR5TWFwLCBGaWVsZCwgRmllbGRNYXAsIFF1ZXJ5QnVpbGRlckNvbmZpZywgUnVsZSwgUnVsZVNldCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvZmlsdGVyLXBhbmVsL2ZpZWxkLm1vZGVsJztcclxuaW1wb3J0IHsgRmlsdGVyUGFuZWxUcmFuc2xhdGlvbnMgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL2ZpbHRlci1wYW5lbC9maWx0ZXItcGFuZWwtdHJhbnNsYXRpb25zLm1vZGVsJztcclxuaW1wb3J0IHsgUXVlcnlSZXN1bHRUeXBlLCBRdWVyeVJlc3VsdHMgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL2ZpbHRlci1wYW5lbC9xdWVyeS1yZXN1bHRzLm1vZGVsJztcclxuaW1wb3J0IHsgRmlsdGVyRmllbGQgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL2ZpbHRlci1wYW5lbC9maWx0ZXItZmllbGQubW9kZWxzJztcclxuaW1wb3J0IHsgUWJGaWx0ZXJFbnRpdHkgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL2ZpbHRlci1wYW5lbC9xYi1maWx0ZXItZW50aXR5Lm1vZGVsJztcclxuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlL2FwaS9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RvcmVkRmlsdGVyUGFuZWxRdWVyeSB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvc3RvcmVkLWZpbHRlci1wYW5lbC1xdWVyeS5tb2RlbCc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IExhc3RRdWVyeSB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvZmlsdGVyLXBhbmVsL2xhc3QtcXVlcnkubW9kZWwnO1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndy1maWx0ZXItcGFuZWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93LWZpbHRlci1wYW5lbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdy1maWx0ZXItcGFuZWwuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgV0ZpbHRlclBhbmVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBwdWJsaWMgcXVlcnlDdHJsITogRm9ybUNvbnRyb2w7XHJcbiAgcHVibGljIGFkdmFuY2VkUXVlcnlDdHJsITogRm9ybUNvbnRyb2w7XHJcbiAgcHVibGljIGdyb3VwZWRRdWVyeUN0cmwhOiBGb3JtQ29udHJvbDtcclxuICBwdWJsaWMgcGVyc2lzdFZhbHVlT25GaWVsZENoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG4gIHF1ZXJ5Q29uZmlnUmVhZHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0FkdmFuY2VkU2VhcmNoOiBib29sZWFuID0gdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0TGFzdEZpbHRlclBhbmVsUXVlcnkoKT8uYWR2YW5jZWRRdWVyeVZhbHVlID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIHFiRGF0YVR5cGVFbnVtID0gUUJEYXRhVHlwZUVudW07XHJcbiAgcWJEYXRhRW51bXMgPSBPYmplY3QudmFsdWVzKFFCRGF0YVR5cGVFbnVtKTtcclxuICBiYXNpY1F1ZXJ5Q29uZmlnITogYW55O1xyXG4gIGFkdmFuY2VkUXVlcnlDb25maWchOiBhbnk7XHJcbiAgYmFzaWNRdWVyeTogYW55ID0ge1xyXG4gICAgY29uZGl0aW9uOiAnYW5kJyxcclxuICAgIHJ1bGVzOiBbXVxyXG4gIH07XHJcbiAgZ3JvdXBlZFF1ZXJ5OiBhbnkgPSB7XHJcbiAgICBjb25kaXRpb246ICdhbmQnLFxyXG4gICAgcnVsZXM6IFtdXHJcbiAgfTtcclxuICBhZHZhbmNlZFF1ZXJ5OiBhbnkgPSB7XHJcbiAgICBjb25kaXRpb246ICdhbmQnLFxyXG4gICAgcnVsZXM6IFtdXHJcbiAgfTtcclxuICBmaWx0ZXJQYW5lbE9iamVjdCE6IFFiUGFuZWxGaWx0ZXI7XHJcbiAgZW50aXR5Q29uZmlnR3JvdXBlZDogUXVlcnlCdWlsZGVyQ29uZmlnID0geyBmaWVsZHM6IHt9IH07XHJcbiAgZW50aXRpZXM6IGFueVtdID0gW107XHJcbiAgZGVmYXVsdFZhbHVlczogYW55W10gPSBbXTtcclxuICBkZWZhdWx0T3BlcmF0b3JzOiBhbnlbXSA9IFtdO1xyXG4gIHN0b3JlZFF1ZXJ5OiBTdG9yZWRGaWx0ZXJQYW5lbFF1ZXJ5ID0gdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0TGFzdEZpbHRlclBhbmVsUXVlcnkoKTtcclxuICBoYXNQcmV2aW91c0ZpbHRlcnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwYXJlbnRSb3V0ZSE6IHN0cmluZztcclxuXHJcbiAgQElucHV0KCdhcGlVcmwnKSBhdXRob3JpemF0aW9uQXBpVXJsITogc3RyaW5nO1xyXG4gIEBJbnB1dCgnY29tbW9uRGF0YUFwaVVybCcpIGNvbW1vbkRhdGFBcGlVcmwhOiBzdHJpbmc7XHJcbiAgQElucHV0KCd0b2tlbicpIHRva2VuITogc3RyaW5nO1xyXG4gIEBJbnB1dCgnY29tbW9uRGF0YVRva2VuJykgY29tbW9uRGF0YVRva2VuITogc3RyaW5nO1xyXG4gIEBJbnB1dCgnZmlsdGVySWQnKSBmaWx0ZXJJZCE6IHN0cmluZztcclxuICBASW5wdXQoJ2RhdGFJc0xvYWRpbmdTZWFyY2hCdXR0b24nKSBkYXRhSXNMb2FkaW5nU2VhcmNoQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgndHJhbnNsYXRpb25zT2JqZWN0JykgdHJhbnNsYXRpb25zT2JqZWN0OiBGaWx0ZXJQYW5lbFRyYW5zbGF0aW9ucyA9IHtcclxuICAgIGJhc2ljU2VhcmNoVGFiTGFiZWw6ICdCYXNpYyBzZWFyY2gnLFxyXG4gICAgYWR2YW5jZWRTZWFyY2hUYWJMYWJlbDogJ0FkdmFuY2VkIHNlYXJjaCcsXHJcbiAgICBncm91cGVkRmlsdGVyVGl0bGU6ICdHcm91cGVkIGZpbHRlcicsXHJcbiAgICBhZHZhbmNlZFNlYXJjaDoge1xyXG4gICAgICBhbmRCdXR0b25MYWJlbDogJ0FuZCcsXHJcbiAgICAgIG9yQnV0dG9uTGFiZWw6ICdPcicsXHJcbiAgICAgIGFkZFJ1bGVCdXR0b25MYWJlbDogJ0FkZCBmaWx0ZXInLFxyXG4gICAgICBhZGRSdWxlU2V0QnV0dG9uTGFiZWw6ICdBZGQgZmlsdGVyIHNldCcsXHJcbiAgICAgIHJlbW92ZVJ1bGVTZXRCdXR0b25MYWJlbDogJ1JlbW92ZSBydWxlIHNldCdcclxuICAgIH0sXHJcbiAgICBub1J1bGVzTGFiZWw6ICdBZGQgZmlsdGVyIG9yIGZpbHRlciBzZXQgdG8gc3RhcnQnLFxyXG4gICAgc2VhcmNoQnV0dG9uTGFiZWw6ICdDbGVhcicsXHJcbiAgICBjbGVhckJ1dHRvbkxhYmVsOiAnQ2xlYXInLFxyXG4gICAgZmllbGRzUGxhY2Vob2xkZXJzOiB7XHJcbiAgICAgIGJvb2xlYW46IHtcclxuICAgICAgICAgIHRydWU6ICdUcnVlJyxcclxuICAgICAgICAgIGZhbHNlOiAnRmFsc2UnXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlY2ltYWw6ICdJbnNlcnQgZGVjaW1hbCBudW1iZXInLFxyXG4gICAgICBsaXN0OiAnU2VsZWN0IGFuIG9wdGlvbicsXHJcbiAgICAgIG51bWJlcjogJ0luc2VydCBhIG51bWJlcicsXHJcbiAgICAgIHRleHQ6ICdJbnNlcnQgdGV4dCcsXHJcbiAgICAgIGRhdGV0aW1lOiAnU2VsZWN0IGEgZGF0ZSdcclxuICAgIH0sXHJcbiAgICBvcGVyYXRvcnM6IHtcclxuICAgICAgY29udGFpbnM6J2NvbnRhaW5zJ1xyXG4gICAgfSxcclxuICAgIGZpZWxkczoge1xyXG4gICAgICBJZGxlRGVhZGxpbmU6ICdJZCcsXHJcbiAgICAgIG5hbWU6ICdOYW1lJyxcclxuICAgICAgY29kZTogJ0NvZGUnLFxyXG4gICAgICBkZWxldGU6ICdEZWxldGVkJyxcclxuICAgICAgY291bnRyeTogJ0NvdW50cnknXHJcbiAgICB9XHJcbiAgfTtcclxuICBcclxuICBAT3V0cHV0KCdzZWFyY2hDbGlja2VkJykgc2VhcmNoQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8UXVlcnlSZXN1bHRzPigpO1xyXG4gIEBPdXRwdXQoJ2NsZWFyQ2xpY2tlZCcpIGNsZWFyQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBAT3V0cHV0KCdsYXN0UXVlcnknKSBsYXN0UXVlcnkgPSBuZXcgRXZlbnRFbWl0dGVyPExhc3RRdWVyeT4oKTtcclxuICBcclxuICBzdGF0ZU9wdGlvbnM6IGFueVtdID0gW3sgbGFiZWw6IHRoaXMudHJhbnNsYXRpb25zT2JqZWN0LmFkdmFuY2VkU2VhcmNoLmFuZEJ1dHRvbkxhYmVsLCB2YWx1ZTogJ2FuZCcgfSwgeyBsYWJlbDogdGhpcy50cmFuc2xhdGlvbnNPYmplY3QuYWR2YW5jZWRTZWFyY2gub3JCdXR0b25MYWJlbCwgdmFsdWU6ICdvcicgfV07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsIFxyXG4gICAgcHJpdmF0ZSBhcGlTZXJ2aWNlOiBBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsb2NhbFN0b3JhZ2U6IExvY2FsU3RvcmFnZVNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZ2V0UXVlcnlCdWlsZGVyRmlsdGVyUGFuZWwoKTtcclxuICAgIHRoaXMucHJldmlvdXNSb3V0ZURldGVjdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgcHJldmlvdXNSb3V0ZURldGVjdGlvbigpIHtcclxuICAgIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxyXG4gICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKVxyXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnBhcmVudFJvdXRlID0gdGhpcy5nZXRQYXJlbnRSb3V0ZSh0aGlzLnJvdXRlKTtcclxuICAgICAgdGhpcy5sb2NhbFN0b3JhZ2Uuc2V0UHJldmlvdXNSb3V0ZSh0aGlzLnBhcmVudFJvdXRlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmKHRoaXMucm91dGVyLnVybC5pbmNsdWRlcyh0aGlzLmxvY2FsU3RvcmFnZS5nZXRQcmV2aW91c1JvdXRlKCkhKSApe1xyXG4gICAgICB0aGlzLmhhc1ByZXZpb3VzRmlsdGVycyA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRQYXJlbnRSb3V0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGUpOiBzdHJpbmcge1xyXG4gICAgbGV0IHBhcmVudFJvdXRlID0gJyc7XHJcbiAgICB3aGlsZSAocm91dGUucGFyZW50KSB7XHJcbiAgICAgIHJvdXRlID0gcm91dGUucGFyZW50O1xyXG4gICAgICBpZiAocm91dGUuc25hcHNob3Qucm91dGVDb25maWcgJiYgcm91dGUuc25hcHNob3Qucm91dGVDb25maWcucGF0aCkge1xyXG4gICAgICAgIHBhcmVudFJvdXRlID0gcm91dGUuc25hcHNob3Qucm91dGVDb25maWcucGF0aCArICcvJyArIHBhcmVudFJvdXRlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGFyZW50Um91dGU7XHJcbiAgfVxyXG4gIFxyXG4gIGluaXRRdWVyeUJ1aWxkZXJDb250cm9scygpIHtcclxuICAgIHRoaXMucXVlcnlDdHJsID0gdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKHRoaXMuYmFzaWNRdWVyeSk7XHJcbiAgICB0aGlzLmFkdmFuY2VkUXVlcnlDdHJsID0gdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKHRoaXMuYWR2YW5jZWRRdWVyeSk7XHJcbiAgICBpZih0aGlzLmZpbHRlclBhbmVsT2JqZWN0LmFsbG93R3JvdXBlZCkge1xyXG4gICAgICB0aGlzLmdyb3VwZWRRdWVyeUN0cmwgPSB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wodGhpcy5ncm91cGVkUXVlcnkpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZih0aGlzLmhhc1ByZXZpb3VzRmlsdGVycyAmJiB0aGlzLnN0b3JlZFF1ZXJ5KSB7XHJcbiAgICAgIGxldCBsYXN0UXVlcnk6IExhc3RRdWVyeSA9IHtcclxuICAgICAgICBoYXNMYXN0UXVlcnk6IHRydWUsXHJcbiAgICAgICAgcXVlcnk6IHtcclxuICAgICAgICAgIHR5cGU6IHRoaXMuZ2V0UXVlcnlUeXBlKCksXHJcbiAgICAgICAgICBiYXNpYzogdGhpcy5zdG9yZWRRdWVyeT8uYmFzaWNRdWVyeVZhbHVlID8gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5zdG9yZWRRdWVyeT8uYmFzaWNRdWVyeVZhbHVlKSA6IG51bGwsXHJcbiAgICAgICAgICBhZHZhbmNlZDogdGhpcy5zdG9yZWRRdWVyeT8uYWR2YW5jZWRRdWVyeVZhbHVlID8gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5zdG9yZWRRdWVyeT8uYWR2YW5jZWRRdWVyeVZhbHVlKSA6IG51bGwsXHJcbiAgICAgICAgICBncm91cGVkOiB0aGlzLmlzQWR2YW5jZWRTZWFyY2ggJiYgdGhpcy5maWx0ZXJQYW5lbE9iamVjdC5hbGxvd0dyb3VwZWQgJiYgdGhpcy5ncm91cGVkUXVlcnlDdHJsID8gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5ncm91cGVkUXVlcnlDdHJsPy52YWx1ZSkgOiBudWxsXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGxhc3RRdWVyeS5xdWVyeSA9IHRoaXMuZGVsZXRlRmllbGRzV2l0aG91dFZhbHVlKGxhc3RRdWVyeS5xdWVyeSk7XHJcbiAgICAgIGxhc3RRdWVyeS5xdWVyeSA9IHRoaXMuaGFuZGxlRW1wdHlGaWVsZHNRdWVyeShsYXN0UXVlcnkucXVlcnkpO1xyXG4gICAgICB0aGlzLmxhc3RRdWVyeS5lbWl0KGxhc3RRdWVyeSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTZWFyY2hUeXBlKCkge1xyXG4gICAgdGhpcy5pc0FkdmFuY2VkU2VhcmNoID0gIXRoaXMuaXNBZHZhbmNlZFNlYXJjaDtcclxuICB9XHJcblxyXG4gIG9uU2VhcmNoQ2xpY2tlZCgpIHtcclxuICAgIGxldCBxdWVyaWVzOiBRdWVyeVJlc3VsdHMgPSB7XHJcbiAgICAgIHR5cGU6IHRoaXMuZ2V0UXVlcnlUeXBlKCksXHJcbiAgICAgIGJhc2ljOiB0aGlzLmlzQWR2YW5jZWRTZWFyY2ggPyBudWxsIDogT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5xdWVyeUN0cmwudmFsdWUpLFxyXG4gICAgICBhZHZhbmNlZDogdGhpcy5pc0FkdmFuY2VkU2VhcmNoID8gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5hZHZhbmNlZFF1ZXJ5Q3RybC52YWx1ZSkgOiBudWxsLFxyXG4gICAgICBncm91cGVkOiB0aGlzLmlzQWR2YW5jZWRTZWFyY2ggJiYgdGhpcy5maWx0ZXJQYW5lbE9iamVjdC5hbGxvd0dyb3VwZWQgPyBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmdyb3VwZWRRdWVyeUN0cmwudmFsdWUpIDogbnVsbFxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2V0RW50aXR5KHF1ZXJpZXMpO1xyXG5cclxuICAgIHF1ZXJpZXMgPSB0aGlzLmluaXRpYWxpemVPcGVyYXRvcnMocXVlcmllcyk7XHJcbiAgICBcclxuICAgIGxldCBzdG9yZWRRdWVyeTogU3RvcmVkRmlsdGVyUGFuZWxRdWVyeSA9IHtcclxuICAgICAgaWQ6IHRoaXMuZmlsdGVySWQsXHJcbiAgICAgIGJhc2ljUXVlcnlWYWx1ZTogcXVlcmllcy5iYXNpYyxcclxuICAgICAgYWR2YW5jZWRRdWVyeVZhbHVlOiBxdWVyaWVzLmFkdmFuY2VkLFxyXG4gICAgICBncm91cGVkUXVlcnlWYWx1ZTogcXVlcmllcy5ncm91cGVkXHJcbiAgICB9XHJcbiAgICB0aGlzLmxvY2FsU3RvcmFnZS5zZXRMYXN0RmlsdGVyUGFuZWxRdWVyeShzdG9yZWRRdWVyeSk7XHJcbiAgICBcclxuICAgIHF1ZXJpZXMgPSB0aGlzLmRlbGV0ZUZpZWxkc1dpdGhvdXRWYWx1ZShxdWVyaWVzKTtcclxuICAgIHF1ZXJpZXMgPSB0aGlzLmhhbmRsZUVtcHR5RmllbGRzUXVlcnkocXVlcmllcyk7XHJcblxyXG4gICAgdGhpcy5zZWFyY2hDbGlja2VkLmVtaXQocXVlcmllcyk7XHJcbiAgfVxyXG5cclxuICBvbkNsZWFyQ2xpY2tlZCgpIHtcclxuICAgIHRoaXMucmVzZXRCYXNpY1F1ZXJ5VmFsdWVzKCk7XHJcbiAgICB0aGlzLmFkdmFuY2VkUXVlcnkucnVsZXMgPSBbXTtcclxuICAgIHRoaXMuZ3JvdXBlZFF1ZXJ5LnJ1bGVzID0gW107XHJcbiAgICB0aGlzLmxvY2FsU3RvcmFnZS5yZW1vdmVMYXN0RmlsdGVyUGFuZWxRdWVyeSgpO1xyXG4gICAgdGhpcy5jbGVhckNsaWNrZWQuZW1pdCh0cnVlKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUVtcHR5RmllbGRzUXVlcnkocXVlcmllczogUXVlcnlSZXN1bHRzKTogUXVlcnlSZXN1bHRzIHtcclxuICAgIGlmKHF1ZXJpZXMuYWR2YW5jZWQgIT0gbnVsbCAmJiBxdWVyaWVzLmFkdmFuY2VkPy5ydWxlcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICBxdWVyaWVzLnR5cGUgPSAwXHJcbiAgICB9XHJcbiAgICBpZihxdWVyaWVzLmJhc2ljICE9IG51bGwgJiYgcXVlcmllcy5iYXNpYz8ucnVsZXMubGVuZ3RoID09IDApIHtcclxuICAgICAgcXVlcmllcy50eXBlID0gMFxyXG4gICAgfVxyXG4gICAgaWYocXVlcmllcy5ncm91cGVkICE9IG51bGwgJiYgcXVlcmllcy5ncm91cGVkPy5ydWxlcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICBxdWVyaWVzLnR5cGUgPSAwXHJcbiAgICB9XHJcbiAgICByZXR1cm4gcXVlcmllcztcclxuICB9XHJcblxyXG4gIGdldFF1ZXJ5VHlwZSgpOiBRdWVyeVJlc3VsdFR5cGUge1xyXG4gICAgaWYoIXRoaXMuaXNBZHZhbmNlZFNlYXJjaCkge1xyXG4gICAgICByZXR1cm4gUXVlcnlSZXN1bHRUeXBlLkJhc2ljO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYodGhpcy5pc0FkdmFuY2VkU2VhcmNoICYmIHRoaXMuZ3JvdXBlZFF1ZXJ5Q3RybD8udmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gUXVlcnlSZXN1bHRUeXBlLkdyb3VwZWRcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gUXVlcnlSZXN1bHRUeXBlLkFkdmFuY2VkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRFbnRpdHkocXVlcmllczogUXVlcnlSZXN1bHRzKSB7XHJcbiAgICBpZih0aGlzLmdldFF1ZXJ5VHlwZSgpID09IFF1ZXJ5UmVzdWx0VHlwZS5CYXNpYykge1xyXG4gICAgICBxdWVyaWVzLmJhc2ljIS5ydWxlcyA9IHF1ZXJpZXMuYmFzaWMhLnJ1bGVzLm1hcCgocjphbnkpID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgZmllbGQ6IHIuZmllbGQsXHJcbiAgICAgICAgICBvcGVyYXRvcjogci5vcGVyYXRvcixcclxuICAgICAgICAgIHZhbHVlOiByLnZhbHVlLFxyXG4gICAgICAgICAgZW50aXR5OiB0aGlzLmVudGl0aWVzLmZpbmQoZSA9PiBlLmZpZWxkSnNvbk5hbWUgPT0gci5maWVsZCkuZW50aXR5XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UXVlcnlCdWlsZGVyRmlsdGVyUGFuZWwoKSB7XHJcbiAgICB0aGlzLmFwaVNlcnZpY2UuZ2V0RmlsdGVyUGFuZWwodGhpcy5hdXRob3JpemF0aW9uQXBpVXJsLCB0aGlzLnRva2VuLCB0aGlzLmNvbW1vbkRhdGFBcGlVcmwsIHRoaXMuY29tbW9uRGF0YVRva2VuLCB0aGlzLmZpbHRlcklkKVxyXG4gICAgICAuc3Vic2NyaWJlKChxYlBhbmVsRmlsdGVyOiBRYlBhbmVsRmlsdGVyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJQYW5lbE9iamVjdCA9IHFiUGFuZWxGaWx0ZXI7XHJcbiAgICAgICAgbGV0IGJhc2ljRmlsdGVySWRzOiBudW1iZXJbXSA9IHFiUGFuZWxGaWx0ZXIucWJwYW5lbFRvRmllbGRzLmZpbHRlcihwYW5lbFRvRmllbGQgPT4gcGFuZWxUb0ZpZWxkLmJhc2ljKS5tYXAocGFuZWxUb0ZpZWxkID0+IHBhbmVsVG9GaWVsZC5xYmZpbHRlckZpZWxkSWQpO1xyXG4gICAgICAgIGxldCBhZHZhbmNlZEZpbHRlcklkczogbnVtYmVyW10gPSBxYlBhbmVsRmlsdGVyLnFicGFuZWxUb0ZpZWxkcy5maWx0ZXIocGFuZWxUb0ZpZWxkID0+ICFwYW5lbFRvRmllbGQuYmFzaWMpLm1hcChwYW5lbFRvRmllbGQgPT4gcGFuZWxUb0ZpZWxkLnFiZmlsdGVyRmllbGRJZCk7XHJcbiAgICAgICAgdGhpcy5kZWZhdWx0VmFsdWVzID0gcWJQYW5lbEZpbHRlci5xYnBhbmVsVG9GaWVsZHMubWFwKHBhbmVsVG9GaWVsZCA9PiB7XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBxYmZpbHRlckZpZWxkSWQ6IHBhbmVsVG9GaWVsZC5xYmZpbHRlckZpZWxkSWQsXHJcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogcGFuZWxUb0ZpZWxkLmRlZmF1bHRWYWx1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5kZWZhdWx0T3BlcmF0b3JzID0gcWJQYW5lbEZpbHRlci5xYnBhbmVsVG9GaWVsZHMubWFwKHBhbmVsVG9GaWVsZCA9PiB7XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBxYmZpbHRlckZpZWxkSWQ6IHBhbmVsVG9GaWVsZC5xYmZpbHRlckZpZWxkSWQsXHJcbiAgICAgICAgICAgIHFiZGVmYXVsdE9wZXJhdG9yOiBwYW5lbFRvRmllbGQucWJkZWZhdWx0T3BlcmF0b3JcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIGxldCBmaWx0ZXJFbnRpdHk6IFFiRmlsdGVyRW50aXR5W10gPSBxYlBhbmVsRmlsdGVyLnFicGFuZWxUb0ZpZWxkcy5tYXAocGFuZWxUb0ZpZWxkID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGlkOiBwYW5lbFRvRmllbGQucWJmaWx0ZXJGaWVsZC5xYmZpbHRlckVudGl0eS5pZCwgXHJcbiAgICAgICAgICAgIGJhc2ljOiBwYW5lbFRvRmllbGQuYmFzaWMsXHJcbiAgICAgICAgICAgIG5hbWU6IHBhbmVsVG9GaWVsZC5xYmZpbHRlckZpZWxkLnFiZmlsdGVyRW50aXR5Lm5hbWUsIFxyXG4gICAgICAgICAgICBqc29uTmFtZTogcGFuZWxUb0ZpZWxkLnFiZmlsdGVyRmllbGQucWJmaWx0ZXJFbnRpdHkuanNvbk5hbWUsIFxyXG4gICAgICAgICAgICBmaWVsZHM6IFtdXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGxldCBmaWx0ZXJGaWVsZHM6IEZpbHRlckZpZWxkW10gPSBxYlBhbmVsRmlsdGVyLnFicGFuZWxUb0ZpZWxkcy5tYXAocCA9PiBwLnFiZmlsdGVyRmllbGQpO1xyXG4gICAgICAgIGZpbHRlckVudGl0eS5mb3JFYWNoKChlbnRpdHk6IFFiRmlsdGVyRW50aXR5LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgbGV0IGZpZWxkcyA9IGZpbHRlckZpZWxkcy5maWx0ZXIoZSA9PiBlLnFiZmlsdGVyRW50aXR5LmlkID09IGVudGl0eS5pZCk7XHJcbiAgICAgICAgICAgZmlsdGVyRW50aXR5W2luZGV4XS5maWVsZHMgPSBmaWVsZHMgO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5iYXNpY1F1ZXJ5Q29uZmlnID0gdGhpcy5pbml0UXVlcnlCdWlsZGVyKGZpbHRlckVudGl0eSk7XHJcbiAgICAgICAgdGhpcy5iYXNpY1F1ZXJ5Q29uZmlnID0gdGhpcy5maWx0ZXJGaWVsZHNCeUlkKHRoaXMuYmFzaWNRdWVyeUNvbmZpZywgYmFzaWNGaWx0ZXJJZHMpO1xyXG4gICAgICAgIHRoaXMuYmFzaWNRdWVyeUNvbmZpZy5maWVsZHMgPSB0aGlzLnRyYW5zbGF0ZUZpZWxkcyh0aGlzLmJhc2ljUXVlcnlDb25maWcuZmllbGRzKTtcclxuICAgICAgICB0aGlzLmFkdmFuY2VkUXVlcnlDb25maWcgPSB0aGlzLmluaXRRdWVyeUJ1aWxkZXIoZmlsdGVyRW50aXR5KTtcclxuICAgICAgICB0aGlzLmFkdmFuY2VkUXVlcnlDb25maWcgPSB0aGlzLmZpbHRlckZpZWxkc0J5SWQodGhpcy5hZHZhbmNlZFF1ZXJ5Q29uZmlnLCBhZHZhbmNlZEZpbHRlcklkcyk7XHJcbiAgICAgICAgdGhpcy5hZHZhbmNlZFF1ZXJ5Q29uZmlnLmZpZWxkcyA9IHRoaXMudHJhbnNsYXRlRmllbGRzKHRoaXMuYWR2YW5jZWRRdWVyeUNvbmZpZy5maWVsZHMpO1xyXG4gICAgICAgIGxldCBydWxlcyA9IE9iamVjdC5rZXlzKHRoaXMuYmFzaWNRdWVyeUNvbmZpZy5maWVsZHMpXHJcbiAgICAgICAgICAubWFwKGZpZWxkS2V5ID0+IHsgXHJcbiAgICAgICAgICAgIGxldCBkZWZhdWx0T3BlcmF0b3IgPSB0aGlzLmRlZmF1bHRPcGVyYXRvcnMuZmluZChvcGVyYXRvciA9PiBvcGVyYXRvci5xYmZpbHRlckZpZWxkSWQgPT0gdGhpcy5iYXNpY1F1ZXJ5Q29uZmlnLmZpZWxkc1tmaWVsZEtleV0uaWQgJiYgb3BlcmF0b3IucWJkZWZhdWx0T3BlcmF0b3IgIT0gbnVsbCk7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgZmllbGQ6IGZpZWxkS2V5LCBcclxuICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5iYXNpY1F1ZXJ5Q29uZmlnLmZpZWxkc1tmaWVsZEtleV0uZGVmYXVsdFZhbHVlISxcclxuICAgICAgICAgICAgICBvcGVyYXRvcjogZGVmYXVsdE9wZXJhdG9yID8gZGVmYXVsdE9wZXJhdG9yLnFiZGVmYXVsdE9wZXJhdG9yLnN5bWJvbCA6IG51bGxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgaWYodGhpcy5oYXNQcmV2aW91c0ZpbHRlcnMgJiYgdGhpcy5zdG9yZWRRdWVyeSAmJiB0aGlzLnN0b3JlZFF1ZXJ5Py5pZCA9PSB0aGlzLmZpbHRlcklkICYmIHRoaXMuc3RvcmVkUXVlcnk/LmJhc2ljUXVlcnlWYWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmJhc2ljUXVlcnkgPSB0aGlzLnN0b3JlZFF1ZXJ5LmJhc2ljUXVlcnlWYWx1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuYmFzaWNRdWVyeSA9IHtcclxuICAgICAgICAgICAgICBjb25kaXRpb246ICdhbmQnLFxyXG4gICAgICAgICAgICAgIHJ1bGVzOiBydWxlc1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYodGhpcy5oYXNQcmV2aW91c0ZpbHRlcnMgJiYgdGhpcy5zdG9yZWRRdWVyeSAmJiB0aGlzLnN0b3JlZFF1ZXJ5Py5pZCA9PSB0aGlzLmZpbHRlcklkICYmIHRoaXMuc3RvcmVkUXVlcnk/LmFkdmFuY2VkUXVlcnlWYWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmFkdmFuY2VkUXVlcnkgPSB0aGlzLnN0b3JlZFF1ZXJ5LmFkdmFuY2VkUXVlcnlWYWx1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWR2YW5jZWRRdWVyeSA9IHtcclxuICAgICAgICAgICAgICBjb25kaXRpb246ICdhbmQnLFxyXG4gICAgICAgICAgICAgIHJ1bGVzOiBbXVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnF1ZXJ5Q29uZmlnUmVhZHkgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaW5pdFF1ZXJ5QnVpbGRlckNvbnRyb2xzKCk7XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBpbml0UXVlcnlCdWlsZGVyKGZpbHRlckVudGl0aWVzOiBRYkZpbHRlckVudGl0eVtdKSB7XHJcbiAgICBsZXQgZW50aXR5Q29uZmlnQXV4OiBRdWVyeUJ1aWxkZXJDb25maWcgPSB7IGZpZWxkczoge30gfTtcclxuICAgIGxldCBlbnRpdGllc0FycmF5OiBFbnRpdHlNYXBbXSA9IFtdO1xyXG4gICAgZmlsdGVyRW50aXRpZXMubWFwKChlLCBpbmRleCkgPT4ge1xyXG4gICAgICBsZXQgZW50aXR5OiBFbnRpdHkgPSB7IG5hbWU6IGUuanNvbk5hbWUgfTtcclxuICAgICAgcmV0dXJuIGVudGl0aWVzQXJyYXlbaW5kZXhdID0geyBbZS5qc29uTmFtZV06IGVudGl0eSB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IGVudGl0aWVzTWFwOiBFbnRpdHlNYXAgPSB7fTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGVudGl0eSBvZiBlbnRpdGllc0FycmF5KSB7XHJcbiAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhlbnRpdHkpO1xyXG5cclxuICAgICAga2V5cy5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgZW50aXRpZXNNYXBba2V5XSA9IGVudGl0eVtrZXldXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgZW50aXR5Q29uZmlnQXV4LmVudGl0aWVzID0gZW50aXRpZXNNYXA7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGZpZWxkczogRmllbGRNYXBbXSA9IFtdO1xyXG4gICAgZmlsdGVyRW50aXRpZXMuZm9yRWFjaCgoZmlsdGVyRW50aXR5KSA9PiB7XHJcbiAgICAgIHJldHVybiBmaWx0ZXJFbnRpdHkuZmllbGRzLmZpbHRlcigoZmlsdGVyRmllbGQ6IEZpbHRlckZpZWxkKSA9PiB7XHJcbiAgICAgICAgbGV0IGluZGV4OiBudW1iZXIgPSBmaWVsZHMubGVuZ3RoID8/IDA7XHJcbiAgICAgICAgbGV0IG9wZXJhdG9yc0ZsYXRBcnJheSA9IGZpbHRlckZpZWxkLm9wZXJhdG9ycy5tYXAoKG86YW55KSA9PiBvLnN5bWJvbCk7XHJcbiAgICAgICAgbGV0IGRlZmF1bHRPcGVyYXRvciA9IHRoaXMuZGVmYXVsdE9wZXJhdG9ycy5maW5kKG9wZXJhdG9yID0+IG9wZXJhdG9yLnFiZmlsdGVyRmllbGRJZCA9PSBmaWx0ZXJGaWVsZC5pZCk7XHJcbiAgICAgICAgbGV0IGZpZWxkOiBGaWVsZCA9IHtcclxuICAgICAgICAgIGlkOiBmaWx0ZXJGaWVsZC5pZCxcclxuICAgICAgICAgIG5hbWU6IGZpbHRlckZpZWxkLm5hbWUsXHJcbiAgICAgICAgICBvcGVyYXRvcnM6IGRlZmF1bHRPcGVyYXRvci5xYmRlZmF1bHRPcGVyYXRvcj8uc3ltYm9sID8gdGhpcy5tb3ZlRWxlbWVudFRvRmlyc3RQbGFjZShvcGVyYXRvcnNGbGF0QXJyYXksIGRlZmF1bHRPcGVyYXRvci5xYmRlZmF1bHRPcGVyYXRvcj8uc3ltYm9sKSA6IG9wZXJhdG9yc0ZsYXRBcnJheSxcclxuICAgICAgICAgIHR5cGU6IHRoaXMuZ2V0RGF0YVR5cGUoZmlsdGVyRmllbGQuZGF0YVR5cGUpLFxyXG4gICAgICAgICAgZGVmYXVsdFZhbHVlOiB0aGlzLmZvcm1hdERlZmF1bHRWYWx1ZSh0aGlzLmRlZmF1bHRWYWx1ZXMuZmluZCh2YWx1ZSA9PiB2YWx1ZS5xYmZpbHRlckZpZWxkSWQgPT0gZmlsdGVyRmllbGQuaWQpLmRlZmF1bHRWYWx1ZSwgZmlsdGVyRmllbGQuZGF0YVR5cGUpLFxyXG4gICAgICAgICAgZGVmYXVsdE9wZXJhdG9yOiBkZWZhdWx0T3BlcmF0b3IucWJkZWZhdWx0T3BlcmF0b3I/LnN5bWJvbCxcclxuICAgICAgICAgIGVudGl0eTogZmlsdGVyRW50aXR5Lmpzb25OYW1lLFxyXG4gICAgICAgICAgb3B0aW9uczogZmlsdGVyRmllbGQubGlzdE9mVmFsdWVzLFxyXG4gICAgICAgICAgdmFsaWRhdG9yOiAocnVsZTogUnVsZSwgcGFyZW50OiBSdWxlU2V0KTogYW55IHwgbnVsbCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChydWxlLm9wZXJhdG9yICE9PSBcImlzIG51bGxcIiAmJiBydWxlLm9wZXJhdG9yICE9PSBcImlzIG5vdCBudWxsXCIpIHtcclxuICAgICAgICAgICAgICBpZiAocnVsZS52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHJ1bGUudmFsdWUgPT09IG51bGwgfHwgcnVsZS52YWx1ZSA9PT0gJycgfHwgcnVsZS52YWx1ZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgcmVxdWlyZWQ6ICdlbXB0eSBmaWVsZCcgfTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZW50aXRpZXMucHVzaCh7ZmllbGRKc29uTmFtZTogZmlsdGVyRmllbGQuanNvbk5hbWUsIGVudGl0eTogZmllbGQuZW50aXR5fSk7XHJcbiAgICAgICAgZmllbGRzW2luZGV4XSA9IHsgW2ZpbHRlckZpZWxkLmpzb25OYW1lXTogZmllbGQgfTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBsZXQgZmllbGRzTWFwOiBGaWVsZE1hcCA9IHt9O1xyXG5cclxuICAgIGZvciAoY29uc3QgZmllbGQgb2YgZmllbGRzKSB7XHJcbiAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhmaWVsZCk7XHJcbiAgICAgIGtleXMuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGZpZWxkc01hcFtrZXldID0gZmllbGRba2V5XTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBlbnRpdHlDb25maWdBdXguZmllbGRzID0gZmllbGRzTWFwO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGVudGl0eUNvbmZpZ0F1eDtcclxuICB9XHJcblxyXG4gIGZpbHRlckZpZWxkc0J5SWQoZmllbGRzT2JqOiBhbnksIGlkQXJyYXk6IG51bWJlcltdKTogYW55IHtcclxuICAgIGNvbnN0IGZpbHRlcmVkRmllbGRzOiBhbnkgPSB7fTtcclxuICAgIFxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZmllbGRzT2JqLmZpZWxkcykge1xyXG4gICAgICBjb25zdCBmaWVsZCA9IGZpZWxkc09iai5maWVsZHNba2V5XTtcclxuICAgICAgaWYgKGlkQXJyYXkuaW5jbHVkZXMoZmllbGQuaWQpKSB7XHJcbiAgICAgICAgZmlsdGVyZWRGaWVsZHNba2V5XSA9IGZpZWxkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHJldHVybiB7XHJcbiAgICAgIC4uLmZpZWxkc09iaixcclxuICAgICAgZmllbGRzOiBmaWx0ZXJlZEZpZWxkcyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICB0cmFuc2xhdGVGaWVsZHMoZmllbGRzOiBGaWVsZE1hcCkge1xyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZmllbGRzKSB7XHJcbiAgICAgIGlmIChmaWVsZHMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgIGZpZWxkc1trZXldLmZpZWxkID0ga2V5O1xyXG4gICAgICAgIGZpZWxkc1trZXldLm5hbWUgPSB0aGlzLnRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNba2V5XTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZpZWxkcztcclxuICB9XHJcblxyXG4gIG1vdmVFbGVtZW50VG9GaXJzdFBsYWNlKGFycmF5OiBhbnlbXSwgZWxlbWVudFRvRmlyc3RQbGFjZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBpbmRleCA9IGFycmF5LmluZGV4T2YoZWxlbWVudFRvRmlyc3RQbGFjZSk7XHJcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgIGFycmF5LnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIGFycmF5LnVuc2hpZnQoZWxlbWVudFRvRmlyc3RQbGFjZSk7IFxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFycmF5O1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0RGVmYXVsdFZhbHVlKHZhbHVlOiBhbnksIHR5cGU6IFFCRGF0YVR5cGVFbnVtKSB7XHJcbiAgICBpZih2YWx1ZSkge1xyXG4gICAgICBpZih0eXBlID09IFFCRGF0YVR5cGVFbnVtLkJvb2xlYW4pIHtcclxuICAgICAgICByZXR1cm4gdmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKHR5cGUgPT0gdGhpcy5xYkRhdGFUeXBlRW51bS5OdW1iZXIgfHwgdHlwZSA9PSB0aGlzLnFiRGF0YVR5cGVFbnVtLkRlY2ltYWwgfHwgdHlwZSA9PSB0aGlzLnFiRGF0YVR5cGVFbnVtLkxpc3Qpe1xyXG4gICAgICAgIHJldHVybiBOdW1iZXIodmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9IFxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGF0YVR5cGUoaWQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMucWJEYXRhRW51bXMuZmluZCh2YWx1ZSA9PiB2YWx1ZSA9PT0gaWQpPy50b1N0cmluZygpID8/IFwiXCI7XHJcbiAgfVxyXG5cclxuICBkZWxldGVGaWVsZHNXaXRob3V0VmFsdWUoanNvbjogYW55KSB7XHJcbiAgICBpZiAoanNvbi5iYXNpYyAmJiBqc29uLmJhc2ljLnJ1bGVzKSB7XHJcbiAgICAgIGpzb24uYmFzaWMucnVsZXMgPSBqc29uLmJhc2ljLnJ1bGVzLmZpbHRlcigocnVsZTogYW55KSA9PiBydWxlLnZhbHVlICE9IG51bGwpO1xyXG4gICAgICBqc29uLmJhc2ljLnJ1bGVzID0ganNvbi5iYXNpYy5ydWxlcy5maWx0ZXIoKHJ1bGU6IGFueSkgPT4gcnVsZS52YWx1ZSAhPSB1bmRlZmluZWQpO1xyXG4gICAgICBqc29uLmJhc2ljLnJ1bGVzID0ganNvbi5iYXNpYy5ydWxlcy5maWx0ZXIoKHJ1bGU6IGFueSkgPT4gcnVsZS52YWx1ZSAhPT0gXCJcIik7XHJcbiAgICB9XHJcbiAgICBpZihqc29uLmFkdmFuY2VkICYmIGpzb24uYWR2YW5jZWQucnVsZXM/Lmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgIGpzb24uYWR2YW5jZWQucnVsZXMgPSBqc29uLmFkdmFuY2VkLnJ1bGVzLmZpbHRlcigocnVsZTogYW55KSA9PiBydWxlLnJ1bGVzPy5sZW5ndGggIT0gMCk7XHJcbiAgICB9XHJcbiAgICBpZihqc29uLmdyb3VwZWQgJiYganNvbi5ncm91cGVkPy5ydWxlcy5sZW5ndGggIT0gMCkge1xyXG4gICAgICBqc29uLmdyb3VwZWQucnVsZXMgPSBqc29uLmdyb3VwZWQucnVsZXMuZmlsdGVyKChydWxlOiBhbnkpID0+IHJ1bGUucnVsZXM/Lmxlbmd0aCAhPSAwKTtcclxuICAgIH1cclxuICAgIGlmKGpzb24uZ3JvdXBlZCAmJiBqc29uLmdyb3VwZWQ/LnJ1bGVzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIGpzb24uZ3JvdXBlZCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ganNvbjtcclxuICB9XHJcbiAgXHJcbiAgaW5pdGlhbGl6ZU9wZXJhdG9ycyhqc29uOiBhbnkpIHtcclxuICAgIGlmIChqc29uLmJhc2ljICYmIGpzb24uYmFzaWMucnVsZXMpIHtcclxuICAgICAganNvbi5iYXNpYy5ydWxlcy5mb3JFYWNoKChydWxlOmFueSkgPT4ge1xyXG4gICAgICAgIGlmKCFydWxlLm9wZXJhdG9yKSB7XHJcbiAgICAgICAgICBydWxlLm9wZXJhdG9yID0gXCI9XCI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBqc29uO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRCYXNpY1F1ZXJ5VmFsdWVzKCkge1xyXG4gICAgdGhpcy5iYXNpY1F1ZXJ5LnJ1bGVzLmZvckVhY2goKHJ1bGU6IFJ1bGUpID0+IHtcclxuICAgICAgaWYocnVsZS52YWx1ZSB8fCBydWxlLnZhbHVlID09IDApe1xyXG4gICAgICAgIHJ1bGUudmFsdWUgPSBudWxsXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0UXVlcnlGaWVsZE5hbWUoZmllbGROYW1lOiBzdHJpbmcsIGZpZWxkczogRmllbGRNYXApIHtcclxuICAgIGNvbnN0IGZpZWxkRW50cnkgPSBPYmplY3Qua2V5cyhmaWVsZHMpLmZpbmQoa2V5ID0+IGZpZWxkc1trZXldLmZpZWxkID09PSBmaWVsZE5hbWUpO1xyXG5cclxuICAgIHJldHVybiBmaWVsZEVudHJ5ICYmIGZpZWxkc1tmaWVsZEVudHJ5XS5uYW1lID8gZmllbGRzW2ZpZWxkRW50cnldLm5hbWUgOiBmaWVsZE5hbWU7XHJcbiAgfVxyXG5cclxuICBmaWVsZElzQm9vbGVhbihmaWVsZE5hbWU6IHN0cmluZywgZmllbGRzOiBGaWVsZE1hcCkge1xyXG4gICAgY29uc3QgZmllbGRFbnRyeSA9IE9iamVjdC5rZXlzKGZpZWxkcykuZmluZChrZXkgPT4gZmllbGRzW2tleV0uZmllbGQgPT09IGZpZWxkTmFtZSk7XHJcblxyXG4gICAgcmV0dXJuIGZpZWxkc1tmaWVsZEVudHJ5IV0udHlwZSA9PSBRQkRhdGFUeXBlRW51bS5Cb29sZWFuLnRvU3RyaW5nKCkgPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8IS0tIFRPRE86IEludGVudGFyIG90cmEgdmV6IHBhc2FyIGxvcyBjb21wb25lbnRlcyBhIGxvcyBkZSB3LSBwb3JxdWUgbm8gc2UgYWxpbmVuYSB5IGVsIHctZWRpdC1zZWxlY3Qgbm8gdmEgYmllbiBlbiBmaWVsZC4gXHJcbiAgQWhvcmEgc2UgY29uc2VydmFuIGxvcyBkZSBwLXcgY29uIGVzdGlsb3MuIC0tPlxyXG48ZGl2ICpuZ0lmPVwicXVlcnlDb25maWdSZWFkeVwiIGNsYXNzPVwidy1maWx0ZXItcGFuZWwtc3R5bGVzXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiIWZpbHRlclBhbmVsT2JqZWN0LmFsbG93QWR2YW5jZWRTZWFyY2g7IGVsc2UgYmFpc2NBbmRBZHZhbmNlZFwiPlxyXG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgJ3ctZmlsdGVyLXBhbmVsLWNvbnRhaW5lci1hZHZhbmNlZCcgOiBpc0FkdmFuY2VkU2VhcmNoLCAndy1maWx0ZXItcGFuZWwtY29udGFpbmVyLWJhc2ljJyA6ICFpc0FkdmFuY2VkU2VhcmNoIH1cIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYmFzaWNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGJ1dHRvbi1nYXBcIj5cclxuICAgICAgICAgIDx3LWJ1dHRvbiBbbGFiZWxdPVwidHJhbnNsYXRpb25zT2JqZWN0LmNsZWFyQnV0dG9uTGFiZWxcIiB0eXBlPVwidGVydGlhcnlcIiBzaXplPVwic21hbGxcIiAob25DbGljayk9XCJvbkNsZWFyQ2xpY2tlZCgpXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgIDx3LWJ1dHRvbiBbbGFiZWxdPVwidHJhbnNsYXRpb25zT2JqZWN0LnNlYXJjaEJ1dHRvbkxhYmVsXCIgc2l6ZT1cInNtYWxsXCIgKG9uQ2xpY2spPVwib25TZWFyY2hDbGlja2VkKClcIj48L3ctYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjYmFpc2NBbmRBZHZhbmNlZD5cclxuICAgICAgPGRpdiBbbmdDbGFzc109XCJ7ICd3LWZpbHRlci1wYW5lbC1jb250YWluZXItYWR2YW5jZWQnIDogaXNBZHZhbmNlZFNlYXJjaCwgJ3ctZmlsdGVyLXBhbmVsLWNvbnRhaW5lci1iYXNpYycgOiAhaXNBZHZhbmNlZFNlYXJjaCB9XCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzQWR2YW5jZWRTZWFyY2g7IGVsc2UgYWR2YW5jZWRWaWV3XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJiYXNpY1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2FkdmFuY2VkVmlldz5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFkdmFuY2VkXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmQgYnV0dG9uLWdhcFwiIFtjbGFzcy5wdC0zXT1cImlzQWR2YW5jZWRTZWFyY2hcIj5cclxuICAgICAgICAgICAgPHctYnV0dG9uIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3QuY2xlYXJCdXR0b25MYWJlbFwiIHR5cGU9XCJ0ZXJ0aWFyeVwiIHNpemU9XCJzbWFsbFwiIChvbkNsaWNrKT1cIm9uQ2xlYXJDbGlja2VkKClcIj48L3ctYnV0dG9uPlxyXG4gICAgICAgICAgICA8dy1idXR0b24gW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5zZWFyY2hCdXR0b25MYWJlbFwiIHNpemU9XCJzbWFsbFwiIChvbkNsaWNrKT1cIm9uU2VhcmNoQ2xpY2tlZCgpXCIgW2xvYWRpbmddPVwiZGF0YUlzTG9hZGluZ1NlYXJjaEJ1dHRvblwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2Jhc2ljPlxyXG4gICAgPGRpdiAqbmdJZj1cImZpbHRlclBhbmVsT2JqZWN0LmFsbG93QWR2YW5jZWRTZWFyY2hcIiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZCBmbGV4LXdyYXBcIj5cclxuICAgICAgPHctYnV0dG9uIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3QuYWR2YW5jZWRTZWFyY2hUYWJMYWJlbFwiIHR5cGU9XCJ0ZXh0XCIgKG9uQ2xpY2spPVwidXBkYXRlU2VhcmNoVHlwZSgpXCI+PC93LWJ1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInctZmlsdGVyLXBhbmVsLWJhc2ljIHF1ZXJ5LWJ1aWxkZXItc3R5bGUgZmFkZWluIGFuaW1hdGlvbi1kdXJhdGlvbi01MDBcIj5cclxuICAgICAgPHF1ZXJ5LWJ1aWxkZXIgW2Zvcm1Db250cm9sXT0ncXVlcnlDdHJsJyBbY29uZmlnXT0nYmFzaWNRdWVyeUNvbmZpZycgW2FsbG93UnVsZXNldF09J2ZpbHRlclBhbmVsT2JqZWN0LmFsbG93UnVsZVNldCcgW2FsbG93UnVsZXNldF09XCJmaWx0ZXJQYW5lbE9iamVjdC5hbGxvd1J1bGVTZXRcIiBbcGVyc2lzdFZhbHVlT25GaWVsZENoYW5nZV09J3BlcnNpc3RWYWx1ZU9uRmllbGRDaGFuZ2UnPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5QnV0dG9uR3JvdXA9XCJsZXQgcnVsZXNldDtcIj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlSZW1vdmVCdXR0b249XCJsZXQgcnVsZTsgbGV0IHJlbW92ZVJ1bGU9cmVtb3ZlUnVsZVwiPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeVN3aXRjaEdyb3VwPVwibGV0IHJ1bGVzZXQ7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUVudGl0eT1cImxldCBydWxlOyBsZXQgZW50aXRpZXM9ZW50aXRpZXM7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgPHAtZHJvcGRvd24gW2Rpc2FibGVkXT1cInRydWVcIiBjbGFzcz1cIiB3LWVkaXQtc2VsZWN0LXNtYWxsXCIgKm5nSWY9XCJmYWxzZVwiIGFwcGVuZFRvPVwiYm9keVwiIFtvcHRpb25zXT1cImVudGl0aWVzXCIgWyhuZ01vZGVsKV09XCJydWxlLmVudGl0eVwiIG9wdGlvbkxhYmVsPVwibmFtZVwiIG9wdGlvblZhbHVlPVwidmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQsIHJ1bGUpXCI+PC9wLWRyb3Bkb3duPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUZpZWxkPVwibGV0IHJ1bGU7IGxldCBmaWVsZHM9ZmllbGRzOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2U7IGxldCBnZXRGaWVsZHMgPSBnZXRGaWVsZHM7IGxldCB2YWx1ZT12YWx1ZTsgbGV0IG5hbWU9bmFtZTsgbGV0IGluZGV4PWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gYXBwZW5kVG89XCJib2R5XCIgY2xhc3M9XCJ3LTQgdGV4dC1sZWZ0IHctZmlsdGVyLXBhbmVsLWlucHV0LXRleHQtbGFiZWxcIiBbY2xhc3Mudy1maWx0ZXItcGFuZWwtYm9vbGVhbi1sYWJlbC13aWR0aF09XCJmaWVsZElzQm9vbGVhbihydWxlLmZpZWxkLCBnZXRGaWVsZHMocnVsZS5lbnRpdHkpKVwiIG9wdGlvbkxhYmVsPVwibmFtZVwiIG9wdGlvblZhbHVlPVwidmFsdWVcIj57eyBnZXRRdWVyeUZpZWxkTmFtZShydWxlLmZpZWxkLCBnZXRGaWVsZHMocnVsZS5lbnRpdHkpKX19PC9zcGFuPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeU9wZXJhdG9yPVwibGV0IHJ1bGU7IGxldCBvcGVyYXRvcnM9b3BlcmF0b3JzOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxdWVyeS1idWlsZGVyLW9wZXJhdG9yLXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPHAtZHJvcGRvd24gY2xhc3M9XCIgdy1lZGl0LXNlbGVjdC1zbWFsbFwiICpuZ0lmPVwiaXNBZHZhbmNlZFNlYXJjaFwiIGFwcGVuZFRvPVwiYm9keVwiIFsobmdNb2RlbCldPVwicnVsZS5vcGVyYXRvclwiIFtvcHRpb25zXT1cIm9wZXJhdG9yc1wiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKHJ1bGUpXCI+PC9wLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgdHlwZTogcWJEYXRhVHlwZUVudW0uQm9vbGVhbi50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXVlcnktYnVpbGRlci1vcGVyYXRvci13aWR0aFwiPlxyXG4gICAgICAgICAgICA8dy10b2dnbGUtYnV0dG9uIHNpemU9XCJzbWFsbFwiIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIG9uTGFiZWw9XCJUcnVlXCIgb2ZmTGFiZWw9XCJGYWxzZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIj48L3ctdG9nZ2xlLWJ1dHRvbj5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5EYXRldGltZS50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3LWZpbHRlci1wYW5lbC1iYXNpYy1xdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPHctZWRpdC1jYWxlbmRhciBhcHBlbmRUbz1cImJvZHlcIiBzaXplPVwic21hbGxcIiBbc2hvd0ljb25dPVwiZmFsc2VcIiBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiAob25DaGFuZ2UpPVwib25DaGFuZ2UoKVwiIFtzaG93VGltZV09XCJ0cnVlXCIgW3Nob3dTZWNvbmRzXT1cInRydWVcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRpb25zT2JqZWN0LmZpZWxkc1BsYWNlaG9sZGVycy5kYXRldGltZVwiIFtkaXNwbGF5SW5saW5lQmxvY2tdPVwidHJ1ZVwiPjwvdy1lZGl0LWNhbGVuZGFyPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgbGV0IGZpZWxkPWZpZWxkOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5EZWNpbWFsLnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInctZmlsdGVyLXBhbmVsLWJhc2ljLXF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8cC1pbnB1dE51bWJlciBpbnB1dFN0eWxlQ2xhc3M9XCJmbGV4IGZsZXgtMVwiIHN0eWxlQ2xhc3M9XCJmbGV4IGZsZXgtMVwiIGNsYXNzPVwiIHctZmlsdGVyLXBhbmVsLWJhc2ljLXF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGggdy1lZGl0LWlucHV0LW51bWJlci1zbWFsbCB3LWVkaXQtaW5wdXQtbnVtYmVyLXNtYWxsLWhlaWdodFwiIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIGlucHV0SWQ9XCJtaW5tYXhcIiBpbnB1dElkPVwibWlubWF4XCIgbW9kZT1cImRlY2ltYWxcIiBbbWluRnJhY3Rpb25EaWdpdHNdPVwiMlwiIFttYXhGcmFjdGlvbkRpZ2l0c109XCI1XCIgW21pbl09XCIwXCIgW21heF09XCIxMDBcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMuZGVjaW1hbFwiPiA8L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgb3B0aW9ucz1vcHRpb25zOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5MaXN0LnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInctZmlsdGVyLXBhbmVsLWJhc2ljLXF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8cC1kcm9wZG93biBjbGFzcz1cIiB3LWVkaXQtc2VsZWN0LXNtYWxsXCIgYXBwZW5kVG89XCJib2R5XCIgW29wdGlvbnNdPVwib3B0aW9uc1wiIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIiBvcHRpb25MYWJlbD1cIm5hbWVcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMubGlzdFwiPjwvcC1kcm9wZG93bj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IGxldCBmaWVsZD1maWVsZDsgdHlwZTogcWJEYXRhVHlwZUVudW0uTnVtYmVyLnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICAgIDxwLWlucHV0TnVtYmVyIGlucHV0U3R5bGVDbGFzcz1cImZsZXggZmxleC0xXCIgc3R5bGVDbGFzcz1cImZsZXggZmxleC0xXCIgY2xhc3M9XCIgdy1maWx0ZXItcGFuZWwtYmFzaWMtcXVlcnktYnVpbGRlci1pbnB1dC13aWR0aCB3LWVkaXQtaW5wdXQtbnVtYmVyLXNtYWxsIHctZWRpdC1pbnB1dC1udW1iZXItc21hbGwtaGVpZ2h0XCIgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgaW5wdXRJZD1cIm1pbm1heFwiIGlucHV0SWQ9XCJtaW5tYXhcIiBbbWluXT1cIjBcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMubnVtYmVyXCI+IDwvcC1pbnB1dE51bWJlcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgZmllbGQ9ZmllbGQ7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLlRleHQudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCIgdy1maWx0ZXItcGFuZWwtYmFzaWMtcXVlcnktYnVpbGRlci1pbnB1dC13aWR0aCB3LWVkaXQtaW5wdXQtdGV4dC1zbWFsbC1oZWlnaHQgdy1lZGl0LWlucHV0LXRleHQtc21hbGxcIiB0eXBlPVwidGV4dFwiIHBJbnB1dFRleHQgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoKVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLnRleHRcIi8+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgbGV0IG9wdGlvbnM9b3B0aW9uczsgdHlwZTogcWJEYXRhVHlwZUVudW0uTGlzdC50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3LWZpbHRlci1wYW5lbC1iYXNpYy1xdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPHAtbXVsdGlTZWxlY3QgW2FwcGVuZFRvXT1cIidib2R5J1wiIFtvcHRpb25zXT1cIm9wdGlvbnNcIiBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgb3B0aW9uTGFiZWw9XCJuYW1lXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIGRpc3BsYXk9XCJjaGlwXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMubGlzdFwiPjwvcC1tdWx0aVNlbGVjdD5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3F1ZXJ5LWJ1aWxkZXI+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzQWR2YW5jZWRTZWFyY2ggJiYgYmFzaWNRdWVyeS5ydWxlcy5sZW5ndGg9PTBcIiA+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub1F1ZXJ5RGF0YVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYWR2YW5jZWQ+XHJcbiAgICA8ZGl2IFtjbGFzcy5xdWVyeS1idWlsZGVyLXN0eWxlXT1cIiFmaWx0ZXJQYW5lbE9iamVjdC5hbGxvd1J1bGVTZXRcIiBjbGFzcz1cInctZmlsdGVyLXBhbmVsLWNvbnRhaW5lciBmYWRlaW4gYW5pbWF0aW9uLWR1cmF0aW9uLTUwMFwiPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVyUGFuZWxPYmplY3QuYWxsb3dSdWxlU2V0XCIgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmQgZmxleC13cmFwXCI+XHJcbiAgICAgICAgPHctYnV0dG9uIGNsYXNzPVwibWItMlwiIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3QuYmFzaWNTZWFyY2hUYWJMYWJlbFwiIHR5cGU9XCJ0ZXh0XCIgKG9uQ2xpY2spPVwidXBkYXRlU2VhcmNoVHlwZSgpXCI+PC93LWJ1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxxdWVyeS1idWlsZGVyIFtmb3JtQ29udHJvbF09J2FkdmFuY2VkUXVlcnlDdHJsJyBbY29uZmlnXT0nYWR2YW5jZWRRdWVyeUNvbmZpZycgW2FsbG93UnVsZXNldF09J2ZpbHRlclBhbmVsT2JqZWN0LmFsbG93UnVsZVNldCcgW2FsbG93Q29sbGFwc2VdPSdmaWx0ZXJQYW5lbE9iamVjdC5hbGxvd0NvbGFwc2UnIFthbGxvd1J1bGVzZXRdPVwiZmlsdGVyUGFuZWxPYmplY3QuYWxsb3dSdWxlU2V0XCIgW3BlcnNpc3RWYWx1ZU9uRmllbGRDaGFuZ2VdPSdwZXJzaXN0VmFsdWVPbkZpZWxkQ2hhbmdlJz5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXJQYW5lbE9iamVjdC5hbGxvd1J1bGVTZXQ7IGVsc2Ugbm9SdWxlU2V0XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5QnV0dG9uR3JvdXA9XCJsZXQgcnVsZXNldDsgbGV0IGFkZFJ1bGU9YWRkUnVsZTsgbGV0IGFkZFJ1bGVTZXQ9YWRkUnVsZVNldDsgbGV0IHJlbW92ZVJ1bGVTZXQ9cmVtb3ZlUnVsZVNldFwiPlxyXG4gICAgICAgICAgICAgICAgPHctYnV0dG9uIGNsYXNzPVwibXItMlwiIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3QuYWR2YW5jZWRTZWFyY2guYWRkUnVsZUJ1dHRvbkxhYmVsXCIgdHlwZT1cInNlY29uZGFyeVwiIHNpemU9XCJzbWFsbFwiIChvbkNsaWNrKT1cImFkZFJ1bGUoKVwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8dy1idXR0b24gY2xhc3M9XCJtci0yXCIgW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5hZHZhbmNlZFNlYXJjaC5hZGRSdWxlU2V0QnV0dG9uTGFiZWxcIiB0eXBlPVwic2Vjb25kYXJ5XCIgaWNvbj1cInBpIHBpLXBsdXNcIiBzaXplPVwic21hbGxcIiAqbmdJZj1cImFkZFJ1bGVTZXRcIiAob25DbGljayk9XCJhZGRSdWxlU2V0KClcIj48L3ctYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPHctYnV0dG9uIGNsYXNzPVwibXItMlwiIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3QuYWR2YW5jZWRTZWFyY2gucmVtb3ZlUnVsZVNldEJ1dHRvbkxhYmVsXCIgdHlwZT1cInRlcnRpYXJ5XCIgaWNvbj1cInBpIHBpLW1pbnVzXCIgc2l6ZT1cInNtYWxsXCIgKm5nSWY9XCJyZW1vdmVSdWxlU2V0XCIgKG9uQ2xpY2spPVwicmVtb3ZlUnVsZVNldCgpXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI25vUnVsZVNldD5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlCdXR0b25Hcm91cD1cImxldCBydWxlc2V0OyBsZXQgYWRkUnVsZT1hZGRSdWxlOyBsZXQgYWRkUnVsZVNldD1hZGRSdWxlU2V0OyBsZXQgcmVtb3ZlUnVsZVNldD1yZW1vdmVSdWxlU2V0XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZCBmbGV4LXdyYXBcIj5cclxuICAgICAgICAgICAgICAgIDx3LWJ1dHRvbiBbbGFiZWxdPVwidHJhbnNsYXRpb25zT2JqZWN0LmJhc2ljU2VhcmNoVGFiTGFiZWxcIiB0eXBlPVwidGV4dFwiIChvbkNsaWNrKT1cInVwZGF0ZVNlYXJjaFR5cGUoKVwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhZHZhbmNlZC1xdWVyeS1idXR0b24tZ3JvdXAgZ2FwLTNcIj5cclxuICAgICAgICAgICAgICAgIDx3LWJ1dHRvbiBbbGFiZWxdPVwidHJhbnNsYXRpb25zT2JqZWN0LmFkdmFuY2VkU2VhcmNoLmFkZFJ1bGVCdXR0b25MYWJlbFwiIHR5cGU9XCJzZWNvbmRhcnlcIiBzaXplPVwic21hbGxcIiAob25DbGljayk9XCJhZGRSdWxlKClcIj48L3ctYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPHctYnV0dG9uIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3QuYWR2YW5jZWRTZWFyY2guYWRkUnVsZVNldEJ1dHRvbkxhYmVsXCIgdHlwZT1cInNlY29uZGFyeVwiIGljb249XCJwaSBwaS1wbHVzXCIgc2l6ZT1cInNtYWxsXCIgKm5nSWY9XCJhZGRSdWxlU2V0XCIgKG9uQ2xpY2spPVwiYWRkUnVsZVNldCgpXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDx3LWJ1dHRvbiBbbGFiZWxdPVwidHJhbnNsYXRpb25zT2JqZWN0LmFkdmFuY2VkU2VhcmNoLnJlbW92ZVJ1bGVTZXRCdXR0b25MYWJlbFwiIHR5cGU9XCJ0ZXJ0aWFyeVwiIGljb249XCJwaSBwaS1taW51c1wiIHNpemU9XCJzbWFsbFwiICpuZ0lmPVwicmVtb3ZlUnVsZVNldFwiIChvbkNsaWNrKT1cInJlbW92ZVJ1bGVTZXQoKVwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUFycm93SWNvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIGljb249XCJwaSBwaS1hbmdsZS1yaWdodFwiIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0XCI+PC9idXR0b24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeVJlbW92ZUJ1dHRvbj1cImxldCBydWxlOyBsZXQgcmVtb3ZlUnVsZT1yZW1vdmVSdWxlXCI+XHJcbiAgICAgICAgICAgIDx3LWJ1dHRvbiBjbGFzcz1cIlwiIGxhYmVsPVwiXCIgc2l6ZT1cInNtYWxsXCIgdHlwZT1cInRlcnRpYXJ5XCIgaWNvbj1cInBpIHBpLXRpbWVzXCIgKG9uQ2xpY2spPVwicmVtb3ZlUnVsZShydWxlKVwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeVN3aXRjaEdyb3VwPVwibGV0IHJ1bGVzZXQ7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicnVsZXNldFwiIGNsYXNzPVwidy1maWx0ZXItcGFuZWwtc3dpdGNoLWdyb3VwLXBhZGRpbmdcIj5cclxuICAgICAgICAgICAgICA8dy1zZWxlY3QtYnV0dG9uICpuZ0lmPVwiZmlsdGVyUGFuZWxPYmplY3QuYWxsb3dMb2dpY2FsUnVsZVwiIFtzdGF0ZU9wdGlvbnNdPVwiW3tsYWJlbDogJ0FuZCcsIHZhbHVlOiAnYW5kJ30sIHtsYWJlbDogJ09yJywgdmFsdWU6ICdvcid9XVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJ1bGVzZXQuY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlKT1cInJ1bGVzZXQuY29uZGl0aW9uID0gJGV2ZW50XCI+XHJcbiAgICAgICAgICAgICAgPC93LXNlbGVjdC1idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlFbnRpdHk9XCJsZXQgcnVsZTsgbGV0IGVudGl0aWVzPWVudGl0aWVzOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgICA8cC1kcm9wZG93biAqbmdJZj1cImZpbHRlclBhbmVsT2JqZWN0LmVuaXR5TW9kZVwiIGNsYXNzPVwiZmllbGQtZ2FwIHctZWRpdC1zZWxlY3Qtc21hbGxcIiBhcHBlbmRUbz1cImJvZHlcIiBbb3B0aW9uc109XCJlbnRpdGllc1wiIFsobmdNb2RlbCldPVwicnVsZS5lbnRpdHlcIiBvcHRpb25MYWJlbD1cIm5hbWVcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50LCBydWxlKVwiPjwvcC1kcm9wZG93bj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5RmllbGQ9XCJsZXQgcnVsZTsgbGV0IGZpZWxkcz1maWVsZHM7IGxldCBvbkNoYW5nZT1vbkNoYW5nZTsgbGV0IGdldEZpZWxkcyA9IGdldEZpZWxkc1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInF1ZXJ5LWJ1aWxkZXItZmllbGQtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8cC1kcm9wZG93biBjbGFzcz1cImZpZWxkLWdhcCB3LWVkaXQtc2VsZWN0LXNtYWxsXCIgYXBwZW5kVG89XCJib2R5XCIgW29wdGlvbnNdPVwiZ2V0RmllbGRzKHJ1bGUuZW50aXR5KVwiIFsobmdNb2RlbCldPVwicnVsZS5maWVsZFwiIG9wdGlvbkxhYmVsPVwibmFtZVwiIG9wdGlvblZhbHVlPVwidmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQsIHJ1bGUpXCI+PC9wLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeU9wZXJhdG9yPVwibGV0IHJ1bGU7IGxldCBvcGVyYXRvcnM9b3BlcmF0b3JzOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxdWVyeS1idWlsZGVyLW9wZXJhdG9yLXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPHAtZHJvcGRvd24gY2xhc3M9XCJmaWVsZC1nYXAgdy1lZGl0LXNlbGVjdC1zbWFsbFwiIGFwcGVuZFRvPVwiYm9keVwiIFsobmdNb2RlbCldPVwicnVsZS5vcGVyYXRvclwiIFtvcHRpb25zXT1cIm9wZXJhdG9yc1wiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKHJ1bGUpXCI+PC9wLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLkJvb2xlYW4udG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDx3LXRvZ2dsZS1idXR0b24gY2xhc3M9XCJmaWVsZC1nYXAgdG9nZ2xlLWJ1dHRvbi1hbGlnblwiIHNpemU9XCJzbWFsbFwiIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIG9uTGFiZWw9XCJUcnVlXCIgb2ZmTGFiZWw9XCJGYWxzZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIj48L3ctdG9nZ2xlLWJ1dHRvbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgdHlwZTogcWJEYXRhVHlwZUVudW0uRGF0ZXRpbWUudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXVlcnktYnVpbGRlci1pbnB1dC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDx3LWVkaXQtY2FsZW5kYXIgY2xhc3M9XCJmaWVsZC1nYXBcIiBhcHBlbmRUbz1cImJvZHlcIiBzaXplPVwic21hbGxcIiBbc2hvd0ljb25dPVwiZmFsc2VcIiBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiAob25DaGFuZ2UpPVwib25DaGFuZ2UoKVwiIFtzaG93VGltZV09XCJ0cnVlXCIgW3Nob3dTZWNvbmRzXT1cInRydWVcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRpb25zT2JqZWN0LmZpZWxkc1BsYWNlaG9sZGVycy5kYXRldGltZVwiIFtkaXNwbGF5SW5saW5lQmxvY2tdPVwidHJ1ZVwiPjwvdy1lZGl0LWNhbGVuZGFyPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IGxldCBmaWVsZD1maWVsZDsgdHlwZTogcWJEYXRhVHlwZUVudW0uRGVjaW1hbC50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPHAtaW5wdXROdW1iZXIgaW5wdXRTdHlsZUNsYXNzPVwiZmxleCBmbGV4LTFcIiBzdHlsZUNsYXNzPVwiZmxleCBmbGV4LTFcIiBjbGFzcz1cImZpZWxkLWdhcCB3LWVkaXQtaW5wdXQtbnVtYmVyLXNtYWxsIHctZWRpdC1pbnB1dC1udW1iZXItc21hbGwtaGVpZ2h0XCIgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgaW5wdXRJZD1cIm1pbm1heFwiIGlucHV0SWQ9XCJtaW5tYXhcIiBtb2RlPVwiZGVjaW1hbFwiIFttaW5GcmFjdGlvbkRpZ2l0c109XCIyXCIgW21heEZyYWN0aW9uRGlnaXRzXT1cIjVcIiBbbWluXT1cIjBcIiBbbWF4XT1cIjEwMFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRpb25zT2JqZWN0LmZpZWxkc1BsYWNlaG9sZGVycy5kZWNpbWFsXCI+IDwvcC1pbnB1dE51bWJlcj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgb3B0aW9ucz1vcHRpb25zOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5MaXN0LnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8cC1kcm9wZG93biBjbGFzcz1cImZpZWxkLWdhcCB3LWVkaXQtc2VsZWN0LXNtYWxsXCIgYXBwZW5kVG89XCJib2R5XCIgW29wdGlvbnNdPVwib3B0aW9uc1wiIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIiBvcHRpb25MYWJlbD1cIm5hbWVcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMubGlzdFwiPjwvcC1kcm9wZG93bj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgb3B0aW9ucz1vcHRpb25zOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5MaXN0LnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGggZmllbGQtZ2FwXCI+XHJcbiAgICAgICAgICAgICAgPHctbGlzdC1maWVsZCBbb3B0aW9uc109XCJvcHRpb25zXCIgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgW29wZXJhdG9yXT1cInJ1bGUub3BlcmF0b3JcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMubGlzdFwiPjwvdy1saXN0LWZpZWxkPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IGxldCBmaWVsZD1maWVsZDsgdHlwZTogcWJEYXRhVHlwZUVudW0uTnVtYmVyLnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8cC1pbnB1dE51bWJlciBpbnB1dFN0eWxlQ2xhc3M9XCJmbGV4IGZsZXgtMVwiIHN0eWxlQ2xhc3M9XCJmbGV4IGZsZXgtMVwiIGNsYXNzPVwiZmllbGQtZ2FwIHctZWRpdC1pbnB1dC1udW1iZXItc21hbGwgdy1lZGl0LWlucHV0LW51bWJlci1zbWFsbC1oZWlnaHRcIiBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiBpbnB1dElkPVwibWlubWF4XCIgaW5wdXRJZD1cIm1pbm1heFwiIFttaW5dPVwiMFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRpb25zT2JqZWN0LmZpZWxkc1BsYWNlaG9sZGVycy5udW1iZXJcIj4gPC9wLWlucHV0TnVtYmVyPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IGxldCBmaWVsZD1maWVsZDsgdHlwZTogcWJEYXRhVHlwZUVudW0uVGV4dC50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZmllbGQtZ2FwIHF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGggdy1lZGl0LWlucHV0LXRleHQtc21hbGwtaGVpZ2h0IHctZWRpdC1pbnB1dC10ZXh0LXNtYWxsXCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRpb25zT2JqZWN0LmZpZWxkc1BsYWNlaG9sZGVycy50ZXh0XCIvPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvcXVlcnktYnVpbGRlcj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0FkdmFuY2VkU2VhcmNoICYmIGFkdmFuY2VkUXVlcnkucnVsZXMubGVuZ3RoPT0wXCIgPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub1F1ZXJ5RGF0YVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDwhLS0gR3JvdXBlZCBmaWx0ZXIgLS0+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXJQYW5lbE9iamVjdC5hbGxvd0dyb3VwZWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHktNVwiPlxyXG4gICAgICAgICAgPHctdmlldy1jYXJkLXRpdGxlLXRleHQgW2NhcmRUaXRsZV09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZ3JvdXBlZEZpbHRlclRpdGxlXCI+PC93LXZpZXctY2FyZC10aXRsZS10ZXh0PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8cXVlcnktYnVpbGRlciBbZm9ybUNvbnRyb2xdPSdncm91cGVkUXVlcnlDdHJsJyBbY29uZmlnXT0nYWR2YW5jZWRRdWVyeUNvbmZpZycgW2FsbG93UnVsZXNldF09J2ZpbHRlclBhbmVsT2JqZWN0LmFsbG93UnVsZVNldCcgW2FsbG93Q29sbGFwc2VdPSdmaWx0ZXJQYW5lbE9iamVjdC5hbGxvd0NvbGFwc2UnIFthbGxvd1J1bGVzZXRdPVwiZmlsdGVyUGFuZWxPYmplY3QuYWxsb3dSdWxlU2V0XCIgW3BlcnNpc3RWYWx1ZU9uRmllbGRDaGFuZ2VdPSdwZXJzaXN0VmFsdWVPbkZpZWxkQ2hhbmdlJz5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5QnV0dG9uR3JvdXA9XCJsZXQgcnVsZXNldDsgbGV0IGFkZFJ1bGU9YWRkUnVsZTsgbGV0IGFkZFJ1bGVTZXQ9YWRkUnVsZVNldDsgbGV0IHJlbW92ZVJ1bGVTZXQ9cmVtb3ZlUnVsZVNldFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMyBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPHctYnV0dG9uIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3QuYWR2YW5jZWRTZWFyY2guYWRkUnVsZUJ1dHRvbkxhYmVsXCIgdHlwZT1cInNlY29uZGFyeVwiIHNpemU9XCJzbWFsbFwiIChvbkNsaWNrKT1cImFkZFJ1bGUoKVwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgPHctYnV0dG9uIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3QuYWR2YW5jZWRTZWFyY2guYWRkUnVsZVNldEJ1dHRvbkxhYmVsXCIgdHlwZT1cInNlY29uZGFyeVwiIGljb249XCJwaSBwaS1wbHVzXCIgc2l6ZT1cInNtYWxsXCIgKm5nSWY9XCJhZGRSdWxlU2V0XCIgKG9uQ2xpY2spPVwiYWRkUnVsZVNldCgpXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgICA8dy1idXR0b24gW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5hZHZhbmNlZFNlYXJjaC5yZW1vdmVSdWxlU2V0QnV0dG9uTGFiZWxcIiB0eXBlPVwidGVydGlhcnlcIiBpY29uPVwicGkgcGktbWludXNcIiBzaXplPVwic21hbGxcIiAqbmdJZj1cInJlbW92ZVJ1bGVTZXRcIiAob25DbGljayk9XCJyZW1vdmVSdWxlU2V0KClcIj48L3ctYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5QXJyb3dJY29uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgaWNvbj1cInBpIHBpLWFuZ2xlLXJpZ2h0XCIgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHRcIj48L2J1dHRvbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5UmVtb3ZlQnV0dG9uPVwibGV0IHJ1bGU7IGxldCByZW1vdmVSdWxlPXJlbW92ZVJ1bGVcIj5cclxuICAgICAgICAgICAgPHctYnV0dG9uIGNsYXNzPVwiXCIgbGFiZWw9XCJcIiBzaXplPVwic21hbGxcIiB0eXBlPVwidGVydGlhcnlcIiBpY29uPVwicGkgcGktdGltZXNcIiAob25DbGljayk9XCJyZW1vdmVSdWxlKHJ1bGUpXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5U3dpdGNoR3JvdXA9XCJsZXQgcnVsZXNldDsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJydWxlc2V0XCI+XHJcbiAgICAgICAgICAgICAgPHctc2VsZWN0LWJ1dHRvbiAqbmdJZj1cImZpbHRlclBhbmVsT2JqZWN0LmFsbG93TG9naWNhbFJ1bGVcIiBbc3RhdGVPcHRpb25zXT1cIlt7bGFiZWw6ICdBbmQnLCB2YWx1ZTogJ2FuZCd9LCB7bGFiZWw6ICdPcicsIHZhbHVlOiAnb3InfV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJydWxlc2V0LmNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSk9XCJydWxlc2V0LmNvbmRpdGlvbiA9ICRldmVudFwiPlxyXG4gICAgICAgICAgICAgIDwvdy1zZWxlY3QtYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5RW50aXR5PVwibGV0IHJ1bGU7IGxldCBlbnRpdGllcz1lbnRpdGllczsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxwLWRyb3Bkb3duIGNsYXNzPVwibXItMyB3LWVkaXQtc2VsZWN0LXNtYWxsXCIgKm5nSWY9XCJmaWx0ZXJQYW5lbE9iamVjdC5lbml0eU1vZGVcIiBhcHBlbmRUbz1cImJvZHlcIiBbb3B0aW9uc109XCJlbnRpdGllc1wiIFsobmdNb2RlbCldPVwicnVsZS5lbnRpdHlcIiBvcHRpb25MYWJlbD1cIm5hbWVcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50LCBydWxlKVwiPjwvcC1kcm9wZG93bj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5RmllbGQ9XCJsZXQgcnVsZTsgbGV0IGZpZWxkcz1maWVsZHM7IGxldCBvbkNoYW5nZT1vbkNoYW5nZTsgbGV0IGdldEZpZWxkcyA9IGdldEZpZWxkc1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInF1ZXJ5LWJ1aWxkZXItZmllbGQtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8cC1kcm9wZG93biBjbGFzcz1cIm1yLTMgdy1lZGl0LXNlbGVjdC1zbWFsbFwiIGFwcGVuZFRvPVwiYm9keVwiIFtvcHRpb25zXT1cImdldEZpZWxkcyhydWxlLmVudGl0eSlcIiBbKG5nTW9kZWwpXT1cInJ1bGUuZmllbGRcIiBvcHRpb25MYWJlbD1cIm5hbWVcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50LCBydWxlKVwiPjwvcC1kcm9wZG93bj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlPcGVyYXRvcj1cImxldCBydWxlOyBsZXQgb3BlcmF0b3JzPW9wZXJhdG9yczsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXVlcnktYnVpbGRlci1vcGVyYXRvci13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxwLWRyb3Bkb3duIGNsYXNzPVwibXItMyB3LWVkaXQtc2VsZWN0LXNtYWxsXCIgYXBwZW5kVG89XCJib2R5XCIgWyhuZ01vZGVsKV09XCJydWxlLm9wZXJhdG9yXCIgW29wdGlvbnNdPVwib3BlcmF0b3JzXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UocnVsZSlcIj48L3AtZHJvcGRvd24+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgdHlwZTogcWJEYXRhVHlwZUVudW0uQm9vbGVhbi50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPHctdG9nZ2xlLWJ1dHRvbiBjbGFzcz1cIm1yLTNcIiBzaXplPVwic21hbGxcIiBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiBvbkxhYmVsPVwiVHJ1ZVwiIG9mZkxhYmVsPVwiRmFsc2VcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCI+PC93LXRvZ2dsZS1idXR0b24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLkRhdGV0aW1lLnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8dy1lZGl0LWNhbGVuZGFyIGNsYXNzPVwiZmllbGQtZ2FwXCIgYXBwZW5kVG89XCJib2R5XCIgc2l6ZT1cInNtYWxsXCIgW3Nob3dJY29uXT1cImZhbHNlXCIgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgKG9uQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIiBbc2hvd1RpbWVdPVwidHJ1ZVwiIFtzaG93U2Vjb25kc109XCJ0cnVlXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMuZGF0ZXRpbWVcIiBbZGlzcGxheUlubGluZUJsb2NrXT1cInRydWVcIj48L3ctZWRpdC1jYWxlbmRhcj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgZmllbGQ9ZmllbGQ7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLkRlY2ltYWwudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXVlcnktYnVpbGRlci1pbnB1dC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxwLWlucHV0TnVtYmVyIGNsYXNzPVwibXItM1wiIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIGlucHV0SWQ9XCJtaW5tYXhcIiBpbnB1dElkPVwibWlubWF4XCIgbW9kZT1cImRlY2ltYWxcIiBbbWluRnJhY3Rpb25EaWdpdHNdPVwiMlwiIFttYXhGcmFjdGlvbkRpZ2l0c109XCI1XCIgW21pbl09XCIwXCIgW21heF09XCIxMDBcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMuZGVjaW1hbFwiPiA8L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgbGV0IG9wdGlvbnM9b3B0aW9uczsgdHlwZTogcWJEYXRhVHlwZUVudW0uTGlzdC50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPHctbGlzdC1maWVsZCBbb3B0aW9uc109XCJvcHRpb25zXCIgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgW29wZXJhdG9yXT1cInJ1bGUub3BlcmF0b3JcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMubGlzdFwiPjwvdy1saXN0LWZpZWxkPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IGxldCBmaWVsZD1maWVsZDsgdHlwZTogcWJEYXRhVHlwZUVudW0uTnVtYmVyLnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8cC1pbnB1dE51bWJlciBpbnB1dFN0eWxlQ2xhc3M9XCJmbGV4IGZsZXgtMVwiIHN0eWxlQ2xhc3M9XCJmbGV4IGZsZXgtMVwiIGNsYXNzPVwiZmllbGQtZ2FwIHctZWRpdC1pbnB1dC1udW1iZXItc21hbGwgdy1lZGl0LWlucHV0LW51bWJlci1zbWFsbC1oZWlnaHRcIiBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiBpbnB1dElkPVwibWlubWF4XCIgaW5wdXRJZD1cIm1pbm1heFwiIFttaW5dPVwiMFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRpb25zT2JqZWN0LmZpZWxkc1BsYWNlaG9sZGVycy5udW1iZXJcIj4gPC9wLWlucHV0TnVtYmVyPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IGxldCBmaWVsZD1maWVsZDsgdHlwZTogcWJEYXRhVHlwZUVudW0uVGV4dC50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwibXItMyBxdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoIHctZWRpdC1pbnB1dC10ZXh0LXNtYWxsLWhlaWdodCB3YXBwLWlucHV0XCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRpb25zT2JqZWN0LmZpZWxkc1BsYWNlaG9sZGVycy50ZXh0XCIvPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwvcXVlcnktYnVpbGRlcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQWR2YW5jZWRTZWFyY2ggJiYgZ3JvdXBlZFF1ZXJ5LnJ1bGVzLmxlbmd0aD09MFwiID5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub1F1ZXJ5RGF0YVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjbm9RdWVyeURhdGE+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZsZXgtd3JhcCBjYXJkLWNvbnRhaW5lciBzdXJmYWNlLTUwIG1iLTNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgdy1mdWxsIGgtNHJlbSB0ZXh0LWdyYXktOTAwIGJvcmRlci1yb3VuZCBtLTJcIj5cclxuICAgICAgICB7e3RyYW5zbGF0aW9uc09iamVjdC5ub1J1bGVzTGFiZWx9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
@@ -7,7 +7,7 @@ import { DatePipe, CommonModule } from '@angular/common';
7
7
  import * as i1$5 from '@angular/common/http';
8
8
  import { HttpHeaders, HttpClientModule } from '@angular/common/http';
9
9
  import * as i1$4 from '@angular/router';
10
- import { NavigationEnd, NavigationStart, RouterModule } from '@angular/router';
10
+ import { NavigationEnd, RouterModule } from '@angular/router';
11
11
  import * as i2 from 'primeng/inputtext';
12
12
  import { InputTextModule } from 'primeng/inputtext';
13
13
  import * as i5 from 'primeng/button';
@@ -2624,24 +2624,8 @@ class WFilterPanelComponent {
2624
2624
  ngOnInit() {
2625
2625
  this.getQueryBuilderFilterPanel();
2626
2626
  this.previousRouteDetection();
2627
- console.log(this.route);
2628
- }
2629
- getParentRoute(route) {
2630
- let rutaPadre = '';
2631
- while (route.parent) {
2632
- route = route.parent;
2633
- if (route.snapshot.routeConfig && route.snapshot.routeConfig.path) {
2634
- rutaPadre = route.snapshot.routeConfig.path + '/' + rutaPadre;
2635
- }
2636
- }
2637
- return rutaPadre;
2638
2627
  }
2639
2628
  previousRouteDetection() {
2640
- this.router.events
2641
- .subscribe((event) => {
2642
- if (event instanceof NavigationStart) {
2643
- }
2644
- });
2645
2629
  this.router.events.pipe(filter$1(event => event instanceof NavigationEnd)).subscribe(() => {
2646
2630
  this.parentRoute = this.getParentRoute(this.route);
2647
2631
  this.localStorage.setPreviousRoute(this.parentRoute);
@@ -2650,6 +2634,16 @@ class WFilterPanelComponent {
2650
2634
  this.hasPreviousFilters = true;
2651
2635
  }
2652
2636
  }
2637
+ getParentRoute(route) {
2638
+ let parentRoute = '';
2639
+ while (route.parent) {
2640
+ route = route.parent;
2641
+ if (route.snapshot.routeConfig && route.snapshot.routeConfig.path) {
2642
+ parentRoute = route.snapshot.routeConfig.path + '/' + parentRoute;
2643
+ }
2644
+ }
2645
+ return parentRoute;
2646
+ }
2653
2647
  initQueryBuilderControls() {
2654
2648
  var _a, _b, _c, _d, _e;
2655
2649
  this.queryCtrl = this.formBuilder.control(this.basicQuery);