ngx-wapp-components 1.12.2 → 1.12.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/misc/w-filter-panel/w-filter-panel.component.mjs +15 -6
- package/fesm2015/ngx-wapp-components.mjs +14 -5
- package/fesm2015/ngx-wapp-components.mjs.map +1 -1
- package/fesm2020/ngx-wapp-components.mjs +14 -5
- package/fesm2020/ngx-wapp-components.mjs.map +1 -1
- package/lib/misc/w-filter-panel/w-filter-panel.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -122,13 +122,16 @@ export class WFilterPanelComponent {
|
|
|
122
122
|
this.storedQuery.advancedQueryValue = this.stringDateParse(this.storedQuery.advancedQueryValue);
|
|
123
123
|
this.setNoFiltersQueryType(lastQuery)
|
|
124
124
|
.then((resQueries) => {
|
|
125
|
-
lastQuery = this.deleteFieldsWithoutValue(lastQuery);
|
|
126
|
-
lastQuery = this.handleEmptyFieldsQuery(lastQuery);
|
|
127
|
-
this.lastQuery.emit(lastQuery);
|
|
128
|
-
}).then((resQueries) => {
|
|
129
125
|
if (resQueries.type != 0) {
|
|
130
126
|
this.inverseNullableFilterOperationHandle(lastQuery.basic ? lastQuery.basic : lastQuery.advanced);
|
|
131
127
|
}
|
|
128
|
+
}).then((res) => {
|
|
129
|
+
lastQuery = this.deleteFieldsWithoutValue(lastQuery);
|
|
130
|
+
lastQuery = this.handleEmptyFieldsQuery(lastQuery);
|
|
131
|
+
this.nullableFilterOperationHandlePromise(lastQuery)
|
|
132
|
+
.then((res => {
|
|
133
|
+
this.lastQuery.emit(lastQuery);
|
|
134
|
+
}));
|
|
132
135
|
});
|
|
133
136
|
}
|
|
134
137
|
}
|
|
@@ -217,6 +220,12 @@ export class WFilterPanelComponent {
|
|
|
217
220
|
resolve(queries);
|
|
218
221
|
});
|
|
219
222
|
}
|
|
223
|
+
nullableFilterOperationHandlePromise(query) {
|
|
224
|
+
return new Promise((resolve, reject) => {
|
|
225
|
+
this.nullableFilterOperationHandle(query);
|
|
226
|
+
resolve(query);
|
|
227
|
+
});
|
|
228
|
+
}
|
|
220
229
|
onClearClicked() {
|
|
221
230
|
this.resetBasicQueryValues();
|
|
222
231
|
this.advancedQuery.rules = [];
|
|
@@ -243,7 +252,7 @@ export class WFilterPanelComponent {
|
|
|
243
252
|
});
|
|
244
253
|
}
|
|
245
254
|
else {
|
|
246
|
-
if (query.operator === OperatorEnum.Nullable) {
|
|
255
|
+
if (query.operator === OperatorEnum.Nullable || ((query.operator == 'is' || query.operator == 'is not') && (query.value == 1 || query.value == 0))) {
|
|
247
256
|
if (query.value == 1) {
|
|
248
257
|
query.operator = 'is not';
|
|
249
258
|
}
|
|
@@ -563,4 +572,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
563
572
|
type: Output,
|
|
564
573
|
args: ['lastQuery']
|
|
565
574
|
}] } });
|
|
566
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidy1maWx0ZXItcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2FwcC1jb21wb25lbnRzL3NyYy9saWIvbWlzYy93LWZpbHRlci1wYW5lbC93LWZpbHRlci1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93YXBwLWNvbXBvbmVudHMvc3JjL2xpYi9taXNjL3ctZmlsdGVyLXBhbmVsL3ctZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUkvRSxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLHNEQUFzRCxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBWXJHLE1BQU0sT0FBTyxxQkFBcUI7SUFzRmhDLFlBQ1UsV0FBd0IsRUFDeEIsVUFBc0IsRUFDdEIsY0FBcUM7UUFGckMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFyRnhDLDhCQUF5QixHQUFZLEtBQUssQ0FBQztRQUVsRCxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ2xDLG1CQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ2hDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUc1QyxlQUFVLEdBQVE7WUFDaEIsU0FBUyxFQUFFLEtBQUs7WUFDaEIsS0FBSyxFQUFFLEVBQUU7U0FDVixDQUFDO1FBQ0YsaUJBQVksR0FBUTtZQUNsQixTQUFTLEVB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QUFDLENBQUMsSUFBSSxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3RGLENBQUM7O2tIQTlpQlUscUJBQXFCO3NHQUFyQixxQkFBcUIsdWhCQ2xCbEMsNjU0QkEyVkE7MkZEelVhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxnQkFBZ0I7K0pBb0NULG1CQUFtQjtzQkFBbkMsS0FBSzt1QkFBQyxRQUFRO2dCQUNZLGdCQUFnQjtzQkFBMUMsS0FBSzt1QkFBQyxrQkFBa0I7Z0JBQ0ksa0JBQWtCO3NCQUE5QyxLQUFLO3VCQUFDLG9CQUFvQjtnQkFDWCxLQUFLO3NCQUFwQixLQUFLO3VCQUFDLE9BQU87Z0JBQ1ksZUFBZTtzQkFBeEMsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBQ0ksaUJBQWlCO3NCQUE1QyxLQUFLO3VCQUFDLG1CQUFtQjtnQkFDUCxRQUFRO3NCQUExQixLQUFLO3VCQUFDLFVBQVU7Z0JBQ21CLHlCQUF5QjtzQkFBNUQsS0FBSzt1QkFBQywyQkFBMkI7Z0JBQ2YsUUFBUTtzQkFBMUIsS0FBSzt1QkFBQyxVQUFVO2dCQUVZLGtCQUFrQjtzQkFBOUMsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBc0NGLGFBQWE7c0JBQXJDLE1BQU07dUJBQUMsZUFBZTtnQkFDQyxZQUFZO3NCQUFuQyxNQUFNO3VCQUFDLGNBQWM7Z0JBQ0QsU0FBUztzQkFBN0IsTUFBTTt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9wZXJhdG9yRW51bSwgUUJEYXRhVHlwZUVudW0gfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL2VudW1zLm1vZGVsJztcclxuaW1wb3J0IHsgUWJQYW5lbEZpbHRlciB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvZmlsdGVyLXBhbmVsL3FiLXBhbmVsLWZpbHRlci5tb2RlbCc7XHJcbmltcG9ydCB7IEVudGl0eSwgRW50aXR5TWFwLCBGaWVsZCwgRmllbGRNYXAsIFF1ZXJ5QnVpbGRlckNvbmZpZywgUnVsZSwgUnVsZVNldCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvZmlsdGVyLXBhbmVsL2ZpZWxkLm1vZGVsJztcclxuaW1wb3J0IHsgRmlsdGVyUGFuZWxUcmFuc2xhdGlvbnMgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL2ZpbHRlci1wYW5lbC9maWx0ZXItcGFuZWwtdHJhbnNsYXRpb25zLm1vZGVsJztcclxuaW1wb3J0IHsgUXVlcnlSZXN1bHRUeXBlLCBRdWVyeVJlc3VsdHMgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL2ZpbHRlci1wYW5lbC9xdWVyeS1yZXN1bHRzLm1vZGVsJztcclxuaW1wb3J0IHsgRmlsdGVyRmllbGQgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL2ZpbHRlci1wYW5lbC9maWx0ZXItZmllbGQubW9kZWxzJztcclxuaW1wb3J0IHsgUWJGaWx0ZXJFbnRpdHkgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL2ZpbHRlci1wYW5lbC9xYi1maWx0ZXItZW50aXR5Lm1vZGVsJztcclxuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlL2FwaS9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IFN0b3JlZEZpbHRlclBhbmVsUXVlcnkgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL3N0b3JlZC1maWx0ZXItcGFuZWwtcXVlcnkubW9kZWwnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvc2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd3LWZpbHRlci1wYW5lbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ctZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi93LWZpbHRlci1wYW5lbC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXRmlsdGVyUGFuZWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHB1YmxpYyBxdWVyeUN0cmwhOiBGb3JtQ29udHJvbDtcclxuICBwdWJsaWMgYWR2YW5jZWRRdWVyeUN0cmwhOiBGb3JtQ29udHJvbDtcclxuICBwdWJsaWMgZ3JvdXBlZFF1ZXJ5Q3RybCE6IEZvcm1Db250cm9sO1xyXG4gIHB1YmxpYyBwZXJzaXN0VmFsdWVPbkZpZWxkQ2hhbmdlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgXHJcbiAgcXVlcnlDb25maWdSZWFkeTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzQWR2YW5jZWRTZWFyY2g6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBxYkRhdGFUeXBlRW51bSA9IFFCRGF0YVR5cGVFbnVtO1xyXG4gIHFiRGF0YUVudW1zID0gT2JqZWN0LnZhbHVlcyhRQkRhdGFUeXBlRW51bSk7XHJcbiAgYmFzaWNRdWVyeUNvbmZpZyE6IGFueTtcclxuICBhZHZhbmNlZFF1ZXJ5Q29uZmlnITogYW55O1xyXG4gIGJhc2ljUXVlcnk6IGFueSA9IHtcclxuICAgIGNvbmRpdGlvbjogJ2FuZCcsXHJcbiAgICBydWxlczogW11cclxuICB9O1xyXG4gIGdyb3VwZWRRdWVyeTogYW55ID0ge1xyXG4gICAgY29uZGl0aW9uOiAnYW5kJyxcclxuICAgIHJ1bGVzOiBbXVxyXG4gIH07XHJcbiAgYWR2YW5jZWRRdWVyeTogYW55ID0ge1xyXG4gICAgY29uZGl0aW9uOiAnYW5kJyxcclxuICAgIHJ1bGVzOiBbXVxyXG4gIH07XHJcbiAgZmlsdGVyUGFuZWxPYmplY3QhOiBRYlBhbmVsRmlsdGVyO1xyXG4gIGVudGl0eUNvbmZpZ0dyb3VwZWQ6IFF1ZXJ5QnVpbGRlckNvbmZpZyA9IHsgZmllbGRzOiB7fSB9O1xyXG4gIGVudGl0aWVzOiBhbnlbXSA9IFtdO1xyXG4gIGRlZmF1bHRWYWx1ZXM6IGFueVtdID0gW107XHJcbiAgZGVmYXVsdE9wZXJhdG9yczogYW55W10gPSBbXTtcclxuICBzdG9yZWRRdWVyeSE6IFN0b3JlZEZpbHRlclBhbmVsUXVlcnk7XHJcbiAgcGFyZW50Um91dGUhOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgnYXBpVXJsJykgYXV0aG9yaXphdGlvbkFwaVVybCE6IHN0cmluZztcclxuICBASW5wdXQoJ2NvbW1vbkRhdGFBcGlVcmwnKSBjb21tb25EYXRhQXBpVXJsITogc3RyaW5nO1xyXG4gIEBJbnB1dCgnc2VnbWVudGF0aW9uQXBpVXJsJykgc2VnbWVudGF0aW9uQXBpVXJsITogc3RyaW5nO1xyXG4gIEBJbnB1dCgndG9rZW4nKSB0b2tlbiE6IHN0cmluZztcclxuICBASW5wdXQoJ2NvbW1vbkRhdGFUb2tlbicpIGNvbW1vbkRhdGFUb2tlbiE6IHN0cmluZztcclxuICBASW5wdXQoJ3NlZ21lbnRhdGlvblRva2VuJykgc2VnbWVudGF0aW9uVG9rZW4hOiBzdHJpbmc7XHJcbiAgQElucHV0KCdmaWx0ZXJJZCcpIGZpbHRlcklkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgnZGF0YUlzTG9hZGluZ1NlYXJjaEJ1dHRvbicpIGRhdGFJc0xvYWRpbmdTZWFyY2hCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoJ3RlbmFudElkJykgdGVuYW50SWQhOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgndHJhbnNsYXRpb25zT2JqZWN0JykgdHJhbnNsYXRpb25zT2JqZWN0OiBGaWx0ZXJQYW5lbFRyYW5zbGF0aW9ucyA9IHtcclxuICAgIGJhc2ljU2VhcmNoVGFiTGFiZWw6ICdCYXNpYyBzZWFyY2gnLFxyXG4gICAgYWR2YW5jZWRTZWFyY2hUYWJMYWJlbDogJ0FkdmFuY2VkIHNlYXJjaCcsXHJcbiAgICBncm91cGVkRmlsdGVyVGl0bGU6ICdHcm91cGVkIGZpbHRlcicsXHJcbiAgICBhZHZhbmNlZFNlYXJjaDoge1xyXG4gICAgICBhbmRCdXR0b25MYWJlbDogJ0FuZCcsXHJcbiAgICAgIG9yQnV0dG9uTGFiZWw6ICdPcicsXHJcbiAgICAgIGFkZFJ1bGVCdXR0b25MYWJlbDogJ0FkZCBmaWx0ZXInLFxyXG4gICAgICBhZGRSdWxlU2V0QnV0dG9uTGFiZWw6ICdBZGQgZmlsdGVyIHNldCcsXHJcbiAgICAgIHJlbW92ZVJ1bGVTZXRCdXR0b25MYWJlbDogJ1JlbW92ZSBydWxlIHNldCdcclxuICAgIH0sXHJcbiAgICBub1J1bGVzTGFiZWw6ICdBZGQgZmlsdGVyIG9yIGZpbHRlciBzZXQgdG8gc3RhcnQnLFxyXG4gICAgc2VhcmNoQnV0dG9uTGFiZWw6ICdDbGVhcicsXHJcbiAgICBjbGVhckJ1dHRvbkxhYmVsOiAnQ2xlYXInLFxyXG4gICAgZmllbGRzUGxhY2Vob2xkZXJzOiB7XHJcbiAgICAgIGJvb2xlYW46IHtcclxuICAgICAgICAgIHRydWU6ICdUcnVlJyxcclxuICAgICAgICAgIGZhbHNlOiAnRmFsc2UnXHJcbiAgICAgIH0sXHJcbiAgICAgIGRlY2ltYWw6ICdJbnNlcnQgZGVjaW1hbCBudW1iZXInLFxyXG4gICAgICBsaXN0OiAnU2VsZWN0IGFuIG9wdGlvbicsXHJcbiAgICAgIG51bWJlcjogJ0luc2VydCBhIG51bWJlcicsXHJcbiAgICAgIHRleHQ6ICdJbnNlcnQgdGV4dCcsXHJcbiAgICAgIGRhdGV0aW1lOiAnU2VsZWN0IGEgZGF0ZSdcclxuICAgIH0sXHJcbiAgICBmaXJzdERheU9mV2VlazogMCxcclxuICAgIG9wZXJhdG9yczoge1xyXG4gICAgICBjb250YWluczonY29udGFpbnMnXHJcbiAgICB9LFxyXG4gICAgZmllbGRzOiB7XHJcbiAgICAgIElkbGVEZWFkbGluZTogJ0lkJyxcclxuICAgICAgbmFtZTogJ05hbWUnLFxyXG4gICAgICBjb2RlOiAnQ29kZScsXHJcbiAgICAgIGRlbGV0ZTogJ0RlbGV0ZWQnLFxyXG4gICAgICBjb3VudHJ5OiAnQ291bnRyeSdcclxuICAgIH1cclxuICB9O1xyXG4gIFxyXG4gIEBPdXRwdXQoJ3NlYXJjaENsaWNrZWQnKSBzZWFyY2hDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxRdWVyeVJlc3VsdHM+KCk7XHJcbiAgQE91dHB1dCgnY2xlYXJDbGlja2VkJykgY2xlYXJDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIEBPdXRwdXQoJ2xhc3RRdWVyeScpIGxhc3RRdWVyeSA9IG5ldyBFdmVudEVtaXR0ZXI8UXVlcnlSZXN1bHRzPigpO1xyXG4gIFxyXG4gIHN0YXRlT3B0aW9uczogYW55W10gPSBbeyBsYWJlbDogdGhpcy50cmFuc2xhdGlvbnNPYmplY3QuYWR2YW5jZWRTZWFyY2guYW5kQnV0dG9uTGFiZWwsIHZhbHVlOiAnYW5kJyB9LCB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0aW9uc09iamVjdC5hZHZhbmNlZFNlYXJjaC5vckJ1dHRvbkxhYmVsLCB2YWx1ZTogJ29yJyB9XTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciwgXHJcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IEFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNlc3Npb25TdG9yYWdlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaXNBZHZhbmNlZFNlYXJjaCA9IHRoaXMuc2Vzc2lvblN0b3JhZ2UuZ2V0TGFzdEZpbHRlclBhbmVsUXVlcnkodGhpcy50ZW5hbnRJZCwgdGhpcy5maWx0ZXJJZCk/LmFkdmFuY2VkUXVlcnlWYWx1ZSA/IHRydWUgOiBmYWxzZTtcclxuICAgIGlmKCh0aGlzLnN0b3JlZFF1ZXJ5Py5hZHZhbmNlZFF1ZXJ5VmFsdWUgJiYgdGhpcy5zdG9yZWRRdWVyeT8uYWR2YW5jZWRRdWVyeVZhbHVlLnJ1bGVzLmxlbmd0aCA9PSAwKSB8fCAgKHRoaXMuc3RvcmVkUXVlcnk/LmJhc2ljUXVlcnlWYWx1ZSAmJiB0aGlzLnN0b3JlZFF1ZXJ5Py5iYXNpY1F1ZXJ5VmFsdWUucnVsZXMubGVuZ3RoID09IDApKSB7XHJcbiAgICAgIC8vRG8gbm90aGluZ1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zdG9yZWRRdWVyeT0gdGhpcy5zZXNzaW9uU3RvcmFnZS5nZXRMYXN0RmlsdGVyUGFuZWxRdWVyeSh0aGlzLnRlbmFudElkLCB0aGlzLmZpbHRlcklkKVxyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRRdWVyeUJ1aWxkZXJGaWx0ZXJQYW5lbCgpO1xyXG4gIH1cclxuICBcclxuICBpbml0UXVlcnlCdWlsZGVyQ29udHJvbHMoKSB7XHJcbiAgICB0aGlzLnF1ZXJ5Q3RybCA9IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbCh0aGlzLmJhc2ljUXVlcnkpO1xyXG4gICAgdGhpcy5hZHZhbmNlZFF1ZXJ5Q3RybCA9IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbCh0aGlzLmFkdmFuY2VkUXVlcnkpO1xyXG4gICAgaWYodGhpcy5maWx0ZXJQYW5lbE9iamVjdC5hbGxvd0dyb3VwZWQpIHtcclxuICAgICAgdGhpcy5ncm91cGVkUXVlcnlDdHJsID0gdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKHRoaXMuZ3JvdXBlZFF1ZXJ5KTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYoKHRoaXMuc3RvcmVkUXVlcnk/LmFkdmFuY2VkUXVlcnlWYWx1ZSAmJiB0aGlzLnN0b3JlZFF1ZXJ5Py5hZHZhbmNlZFF1ZXJ5VmFsdWUucnVsZXMubGVuZ3RoID09IDApIHx8ICAodGhpcy5zdG9yZWRRdWVyeT8uYmFzaWNRdWVyeVZhbHVlICYmIHRoaXMuc3RvcmVkUXVlcnk/LmJhc2ljUXVlcnlWYWx1ZS5ydWxlcy5sZW5ndGggPT0gMCkpIHtcclxuICAgICAgLy9EbyBub3RoaW5nXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgbGFzdFF1ZXJ5OiBRdWVyeVJlc3VsdHMgPSB7XHJcbiAgICAgICAgdHlwZTogdGhpcy5nZXRRdWVyeVR5cGUoKSxcclxuICAgICAgICBiYXNpYzogdGhpcy5zdG9yZWRRdWVyeT8uYmFzaWNRdWVyeVZhbHVlID8gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5zdG9yZWRRdWVyeT8uYmFzaWNRdWVyeVZhbHVlKSA6IG51bGwsXHJcbiAgICAgICAgYWR2YW5jZWQ6IHRoaXMuc3RvcmVkUXVlcnk/LmFkdmFuY2VkUXVlcnlWYWx1ZSA/IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuc3RvcmVkUXVlcnk/LmFkdmFuY2VkUXVlcnlWYWx1ZSkgOiBudWxsLFxyXG4gICAgICAgIGdyb3VwZWQ6IHRoaXMuaXNBZHZhbmNlZFNlYXJjaCAmJiB0aGlzLmZpbHRlclBhbmVsT2JqZWN0LmFsbG93R3JvdXBlZCAmJiB0aGlzLmdyb3VwZWRRdWVyeUN0cmwgPyBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmdyb3VwZWRRdWVyeUN0cmw/LnZhbHVlKSA6IG51bGxcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zdG9yZWRRdWVyeS5iYXNpY1F1ZXJ5VmFsdWUgPyBcclxuICAgICAgICB0aGlzLnN0b3JlZFF1ZXJ5LmJhc2ljUXVlcnlWYWx1ZSA9IHRoaXMuc3RyaW5nRGF0ZVBhcnNlKHRoaXMuc3RvcmVkUXVlcnkuYmFzaWNRdWVyeVZhbHVlKSA6XHJcbiAgICAgICAgdGhpcy5zdG9yZWRRdWVyeS5hZHZhbmNlZFF1ZXJ5VmFsdWUgPSB0aGlzLnN0cmluZ0RhdGVQYXJzZSh0aGlzLnN0b3JlZFF1ZXJ5LmFkdmFuY2VkUXVlcnlWYWx1ZSk7XHJcblxyXG5cclxuICAgICAgICB0aGlzLnNldE5vRmlsdGVyc1F1ZXJ5VHlwZShsYXN0UXVlcnkpXHJcbiAgICAgICAgLnRoZW4oKHJlc1F1ZXJpZXM6YW55KSA9PiB7XHJcbiAgICAgICAgICBsYXN0UXVlcnkgPSB0aGlzLmRlbGV0ZUZpZWxkc1dpdGhvdXRWYWx1ZShsYXN0UXVlcnkpO1xyXG4gICAgICAgICAgbGFzdFF1ZXJ5ID0gdGhpcy5oYW5kbGVFbXB0eUZpZWxkc1F1ZXJ5KGxhc3RRdWVyeSk7XHJcbiAgICAgICAgICB0aGlzLmxhc3RRdWVyeS5lbWl0KGxhc3RRdWVyeSk7XHJcbiAgICAgICAgfSkudGhlbigocmVzUXVlcmllczphbnkpID0+IHtcclxuICAgICAgICAgIGlmKHJlc1F1ZXJpZXMudHlwZSAhPSAwKXtcclxuICAgICAgICAgICAgdGhpcy5pbnZlcnNlTnVsbGFibGVGaWx0ZXJPcGVyYXRpb25IYW5kbGUobGFzdFF1ZXJ5LmJhc2ljID8gbGFzdFF1ZXJ5LmJhc2ljIDogbGFzdFF1ZXJ5LmFkdmFuY2VkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9EZXRlY3RhIGxhcyBmZWNoYXMgZW4gc3RyaW5nIHkgbGFzIGNvbnZpZXJ0ZSBhIERhdGVcclxuICBzdHJpbmdEYXRlUGFyc2UocXVlcnk6IGFueSkge1xyXG4gICAgY29uc3QgZGF0ZUZvcm1hdFJlZ0V4cCA9IC9eXFxkezR9LVxcZHsyfS1cXGR7Mn1UXFxkezJ9OlxcZHsyfTpcXGR7Mn0uXFxkezN9Wj8kLztcclxuXHJcbiAgICBjb25zdCBkYXRlc0luZGV4ZXM6IG51bWJlcltdID0gcXVlcnkucnVsZXNcclxuICAgICAgICAgICAgICAgICAgLm1hcCgocnVsZTogYW55LCBpbmRleDpudW1iZXIpID0+IChkYXRlRm9ybWF0UmVnRXhwLnRlc3QocnVsZS52YWx1ZSkgPyBpbmRleCA6IC0xKSlcclxuICAgICAgICAgICAgICAgICAgLmZpbHRlcigoaW5kZXg6bnVtYmVyKSA9PiBpbmRleCAhPT0gLTEpO1xyXG5cclxuICAgICAgZGF0ZXNJbmRleGVzLmZvckVhY2goZGF0ZUluZGV4ID0+IHtcclxuICAgICAgICBxdWVyeS5ydWxlc1tkYXRlSW5kZXhdLnZhbHVlID0gbmV3IERhdGUocXVlcnkucnVsZXNbZGF0ZUluZGV4XS52YWx1ZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gcXVlcnk7XHJcbiAgfVxyXG5cclxuICBkYXRlc1RvTG9jYWxlU3RyaW5nKHF1ZXJ5OiBhbnkpIHtcclxuICAgIGlmIChcInJ1bGVzXCIgaW4gcXVlcnkpIHtcclxuICAgICAgcXVlcnkucnVsZXMuZm9yRWFjaCgocnVsZTogUnVsZVNldCB8IFJ1bGUpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGVzVG9Mb2NhbGVTdHJpbmcocnVsZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHF1ZXJ5LnZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICAgIGxldCBkYXRlID0gcXVlcnkudmFsdWU7XHJcblxyXG4gICAgICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgICAgY29uc3QgbW9udGggPSAoJzAnICsgKGRhdGUuZ2V0TW9udGgoKSArIDEpKS5zbGljZSgtMik7XHJcbiAgICAgICAgY29uc3QgZGF5ID0gKCcwJyArIGRhdGUuZ2V0RGF0ZSgpKS5zbGljZSgtMik7XHJcbiAgICAgICAgY29uc3QgaG91ciA9ICgnMCcgKyBkYXRlLmdldEhvdXJzKCkpLnNsaWNlKC0yKTtcclxuICAgICAgICBjb25zdCBtaW51dGVzID0gKCcwJyArIGRhdGUuZ2V0TWludXRlcygpKS5zbGljZSgtMik7XHJcbiAgICAgICAgY29uc3Qgc2Vjb25kcyA9ICgnMCcgKyBkYXRlLmdldFNlY29uZHMoKSkuc2xpY2UoLTIpO1xyXG5cclxuICAgICAgICBxdWVyeS52YWx1ZSA9IGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fVQke2hvdXJ9OiR7bWludXRlc306JHtzZWNvbmRzfS4wMDBaYDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBzZXRFbXRweUFycmF5c1RvTnVsbChxdWVyeTogYW55KSB7XHJcbiAgICBpZiAoXCJydWxlc1wiIGluIHF1ZXJ5KSB7XHJcbiAgICAgIHF1ZXJ5LnJ1bGVzLmZvckVhY2goKHJ1bGU6IFJ1bGVTZXQgfCBSdWxlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRFbXRweUFycmF5c1RvTnVsbChydWxlKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAocXVlcnkudmFsdWUgaW5zdGFuY2VvZiBBcnJheSAmJiBxdWVyeS52YWx1ZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgIHF1ZXJ5LnZhbHVlID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlU2VhcmNoVHlwZSgpIHtcclxuICAgIHRoaXMuaXNBZHZhbmNlZFNlYXJjaCA9ICF0aGlzLmlzQWR2YW5jZWRTZWFyY2g7XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaENsaWNrZWQoKSB7XHJcbiAgICBsZXQgcXVlcmllczogUXVlcnlSZXN1bHRzID0ge1xyXG4gICAgICB0eXBlOiB0aGlzLmdldFF1ZXJ5VHlwZSgpLFxyXG4gICAgICBiYXNpYzogdGhpcy5pc0FkdmFuY2VkU2VhcmNoID8gbnVsbCA6IE9iamVjdC5hc3NpZ24oe30sIHRoaXMucXVlcnlDdHJsLnZhbHVlKSxcclxuICAgICAgYWR2YW5jZWQ6IHRoaXMuaXNBZHZhbmNlZFNlYXJjaCA/IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuYWR2YW5jZWRRdWVyeUN0cmwudmFsdWUpIDogbnVsbCxcclxuICAgICAgZ3JvdXBlZDogdGhpcy5pc0FkdmFuY2VkU2VhcmNoICYmIHRoaXMuZmlsdGVyUGFuZWxPYmplY3QuYWxsb3dHcm91cGVkID8gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5ncm91cGVkUXVlcnlDdHJsLnZhbHVlKSA6IG51bGxcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5zZXRFbnRpdHkocXVlcmllcyk7XHJcblxyXG4gICAgcXVlcmllcyA9IHRoaXMuaW5pdGlhbGl6ZU9wZXJhdG9ycyhxdWVyaWVzKTtcclxuICAgIFxyXG4gICAgdGhpcy5zZXROb0ZpbHRlcnNRdWVyeVR5cGUocXVlcmllcykudGhlbigocmVzUXVlcmllczphbnkpID0+IHtcclxuICAgICAgaWYocmVzUXVlcmllcy50eXBlICE9IDApe1xyXG4gICAgICAgIHRoaXMubnVsbGFibGVGaWx0ZXJPcGVyYXRpb25IYW5kbGUocXVlcmllcy5iYXNpYyA/IHF1ZXJpZXMuYmFzaWMgOiBxdWVyaWVzLmFkdmFuY2VkKTtcclxuICAgICAgfVxyXG4gICAgfSkudGhlbigocmVzUXVlcmllczphbnkpID0+IHtcclxuICAgICAgbGV0IHN0b3JlZFF1ZXJ5OiBTdG9yZWRGaWx0ZXJQYW5lbFF1ZXJ5ID0ge1xyXG4gICAgICAgIGlkOiB0aGlzLmZpbHRlcklkLFxyXG4gICAgICAgIGJhc2ljUXVlcnlWYWx1ZTogcXVlcmllcy5iYXNpYyxcclxuICAgICAgICBhZHZhbmNlZFF1ZXJ5VmFsdWU6IHF1ZXJpZXMuYWR2YW5jZWQsXHJcbiAgICAgICAgZ3JvdXBlZFF1ZXJ5VmFsdWU6IHF1ZXJpZXMuZ3JvdXBlZFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZGF0ZXNUb0xvY2FsZVN0cmluZyhxdWVyaWVzLmJhc2ljID8gcXVlcmllcy5iYXNpYyA6IHF1ZXJpZXMuYWR2YW5jZWQpO1xyXG4gICAgICB0aGlzLnNldEVtdHB5QXJyYXlzVG9OdWxsKHF1ZXJpZXMuYmFzaWMgPyBxdWVyaWVzLmJhc2ljIDogcXVlcmllcy5hZHZhbmNlZCk7XHJcbiAgICAgIHRoaXMuc2Vzc2lvblN0b3JhZ2Uuc2V0TGFzdEZpbHRlclBhbmVsUXVlcnkodGhpcy50ZW5hbnRJZCwgc3RvcmVkUXVlcnkpO1xyXG4gICAgfSkudGhlbigocmVzUXVlcmllczogYW55KSA9PiB7XHJcbiAgICAgIHF1ZXJpZXMgPSB0aGlzLmRlbGV0ZUZpZWxkc1dpdGhvdXRWYWx1ZShxdWVyaWVzKTtcclxuICAgICAgcXVlcmllcyA9IHRoaXMuaGFuZGxlRW1wdHlGaWVsZHNRdWVyeShxdWVyaWVzKTtcclxuICAgICAgdGhpcy5zZWFyY2hDbGlja2VkLmVtaXQocXVlcmllcyk7XHJcbiAgICB9KS50aGVuKChyZXNRdWVyaWVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5pbnZlcnNlTnVsbGFibGVGaWx0ZXJPcGVyYXRpb25IYW5kbGUocXVlcmllcy5iYXNpYyA/PyBxdWVyaWVzLmFkdmFuY2VkKVxyXG4gICAgfSlcclxuICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGVuIGxhIHByb21lc2E6XCIsIGVycm9yKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0Tm9GaWx0ZXJzUXVlcnlUeXBlKHF1ZXJpZXM6YW55KSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBxdWVyaWVzID0gdGhpcy5oYW5kbGVFbXB0eUZpZWxkc1F1ZXJ5KHF1ZXJpZXMpO1xyXG4gICAgICAgIHJlc29sdmUocXVlcmllcyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2xlYXJDbGlja2VkKCkge1xyXG4gICAgdGhpcy5yZXNldEJhc2ljUXVlcnlWYWx1ZXMoKTtcclxuICAgIHRoaXMuYWR2YW5jZWRRdWVyeS5ydWxlcyA9IFtdO1xyXG4gICAgdGhpcy5ncm91cGVkUXVlcnkucnVsZXMgPSBbXTtcclxuICAgIHRoaXMuc2Vzc2lvblN0b3JhZ2UucmVtb3ZlTGFzdEZpbHRlclBhbmVsUXVlcnkodGhpcy50ZW5hbnRJZCwgdGhpcy5maWx0ZXJJZCk7XHJcbiAgICB0aGlzLmNsZWFyQ2xpY2tlZC5lbWl0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRW1wdHlGaWVsZHNRdWVyeShxdWVyaWVzOiBRdWVyeVJlc3VsdHMpOiBRdWVyeVJlc3VsdHMge1xyXG4gICAgaWYocXVlcmllcy5hZHZhbmNlZCAhPSBudWxsICYmIHF1ZXJpZXMuYWR2YW5jZWQ/LnJ1bGVzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHF1ZXJpZXMudHlwZSA9IDBcclxuICAgIH1cclxuICAgIGlmKHF1ZXJpZXMuYmFzaWMgIT0gbnVsbCAmJiBxdWVyaWVzLmJhc2ljPy5ydWxlcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICBxdWVyaWVzLnR5cGUgPSAwXHJcbiAgICB9XHJcbiAgICBpZihxdWVyaWVzLmdyb3VwZWQgIT0gbnVsbCAmJiBxdWVyaWVzLmdyb3VwZWQ/LnJ1bGVzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHF1ZXJpZXMudHlwZSA9IDBcclxuICAgIH1cclxuICAgIHJldHVybiBxdWVyaWVzO1xyXG4gIH1cclxuXHJcbiAgbnVsbGFibGVGaWx0ZXJPcGVyYXRpb25IYW5kbGUocXVlcnk6IGFueSkge1xyXG4gICAgaWYgKFwicnVsZXNcIiBpbiBxdWVyeSkge1xyXG4gICAgICBxdWVyeS5ydWxlcy5mb3JFYWNoKChydWxlOiBSdWxlU2V0IHwgUnVsZSkgPT4ge1xyXG4gICAgICAgIHRoaXMubnVsbGFibGVGaWx0ZXJPcGVyYXRpb25IYW5kbGUocnVsZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHF1ZXJ5Lm9wZXJhdG9yID09PSBPcGVyYXRvckVudW0uTnVsbGFibGUpIHtcclxuICAgICAgICBpZihxdWVyeS52YWx1ZSA9PSAxKSB7XHJcbiAgICAgICAgICBxdWVyeS5vcGVyYXRvciA9ICdpcyBub3QnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihxdWVyeS52YWx1ZSA9PSAwKSB7XHJcbiAgICAgICAgICBxdWVyeS5vcGVyYXRvciA9ICdpcyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHF1ZXJ5LnZhbHVlID0gJ251bGwnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnZlcnNlTnVsbGFibGVGaWx0ZXJPcGVyYXRpb25IYW5kbGUocXVlcnk6IGFueSkge1xyXG4gICAgaWYgKFwicnVsZXNcIiBpbiBxdWVyeSkge1xyXG4gICAgICBxdWVyeS5ydWxlcy5mb3JFYWNoKChydWxlOiBSdWxlU2V0IHwgUnVsZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuaW52ZXJzZU51bGxhYmxlRmlsdGVyT3BlcmF0aW9uSGFuZGxlKHJ1bGUpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICgocXVlcnkub3BlcmF0b3IgPT0gJ2lzIG5vdCcgfHwgcXVlcnkub3BlcmF0b3IgPT0gJ2lzJykgJiYgcXVlcnkudmFsdWUgPT0gJ251bGwnKSB7XHJcbiAgICAgICAgaWYocXVlcnkub3BlcmF0b3IgPT0gJ2lzIG5vdCcpIHtcclxuICAgICAgICAgIHF1ZXJ5LnZhbHVlID0gMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYocXVlcnkub3BlcmF0b3IgPT0gJ2lzJykge1xyXG4gICAgICAgICAgcXVlcnkudmFsdWUgPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UXVlcnlUeXBlKCk6IFF1ZXJ5UmVzdWx0VHlwZSB7XHJcbiAgICBpZighdGhpcy5pc0FkdmFuY2VkU2VhcmNoKSB7XHJcbiAgICAgIHJldHVybiBRdWVyeVJlc3VsdFR5cGUuQmFzaWM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZih0aGlzLmlzQWR2YW5jZWRTZWFyY2ggJiYgdGhpcy5ncm91cGVkUXVlcnlDdHJsPy52YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiBRdWVyeVJlc3VsdFR5cGUuR3JvdXBlZFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBRdWVyeVJlc3VsdFR5cGUuQWR2YW5jZWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEVudGl0eShxdWVyaWVzOiBRdWVyeVJlc3VsdHMpIHtcclxuICAgIGlmKHRoaXMuZ2V0UXVlcnlUeXBlKCkgPT0gUXVlcnlSZXN1bHRUeXBlLkJhc2ljKSB7XHJcbiAgICAgIHF1ZXJpZXMuYmFzaWMhLnJ1bGVzID0gcXVlcmllcy5iYXNpYyEucnVsZXMubWFwKChyOmFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBmaWVsZDogci5maWVsZCxcclxuICAgICAgICAgIG9wZXJhdG9yOiByLm9wZXJhdG9yLFxyXG4gICAgICAgICAgdmFsdWU6IHIudmFsdWUsXHJcbiAgICAgICAgICBlbnRpdHk6IHRoaXMuZW50aXRpZXMuZmluZChlID0+IGUuZmllbGRKc29uTmFtZSA9PSByLmZpZWxkKS5lbnRpdHlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRRdWVyeUJ1aWxkZXJGaWx0ZXJQYW5lbCgpIHtcclxuICAgIHRoaXMuYXBpU2VydmljZS5nZXRGaWx0ZXJQYW5lbCh0aGlzLmF1dGhvcml6YXRpb25BcGlVcmwsIHRoaXMudG9rZW4sIHRoaXMuY29tbW9uRGF0YUFwaVVybCwgdGhpcy5jb21tb25EYXRhVG9rZW4sIHRoaXMuZmlsdGVySWQpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHFiUGFuZWxGaWx0ZXI6IFFiUGFuZWxGaWx0ZXIpID0+IHtcclxuICAgICAgICB0aGlzLmZpbHRlclBhbmVsT2JqZWN0ID0gcWJQYW5lbEZpbHRlcjtcclxuICAgICAgICBsZXQgYmFzaWNGaWx0ZXJJZHM6IG51bWJlcltdID0gcWJQYW5lbEZpbHRlci5xYnBhbmVsVG9GaWVsZHMuZmlsdGVyKHBhbmVsVG9GaWVsZCA9PiBwYW5lbFRvRmllbGQuYmFzaWMpLm1hcChwYW5lbFRvRmllbGQgPT4gcGFuZWxUb0ZpZWxkLnFiZmlsdGVyRmllbGRJZCk7XHJcbiAgICAgICAgbGV0IGFkdmFuY2VkRmlsdGVySWRzOiBudW1iZXJbXSA9IHFiUGFuZWxGaWx0ZXIucWJwYW5lbFRvRmllbGRzLmZpbHRlcihwYW5lbFRvRmllbGQgPT4gIXBhbmVsVG9GaWVsZC5iYXNpYykubWFwKHBhbmVsVG9GaWVsZCA9PiBwYW5lbFRvRmllbGQucWJmaWx0ZXJGaWVsZElkKTtcclxuICAgICAgICB0aGlzLmRlZmF1bHRWYWx1ZXMgPSBxYlBhbmVsRmlsdGVyLnFicGFuZWxUb0ZpZWxkcy5tYXAocGFuZWxUb0ZpZWxkID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHFiZmlsdGVyRmllbGRJZDogcGFuZWxUb0ZpZWxkLnFiZmlsdGVyRmllbGRJZCxcclxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBwYW5lbFRvRmllbGQuZGVmYXVsdFZhbHVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmRlZmF1bHRPcGVyYXRvcnMgPSBxYlBhbmVsRmlsdGVyLnFicGFuZWxUb0ZpZWxkcy5tYXAocGFuZWxUb0ZpZWxkID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHFiZmlsdGVyRmllbGRJZDogcGFuZWxUb0ZpZWxkLnFiZmlsdGVyRmllbGRJZCxcclxuICAgICAgICAgICAgcWJkZWZhdWx0T3BlcmF0b3I6IHBhbmVsVG9GaWVsZC5xYmRlZmF1bHRPcGVyYXRvclxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgbGV0IGZpbHRlckVudGl0eTogUWJGaWx0ZXJFbnRpdHlbXSA9IHFiUGFuZWxGaWx0ZXIucWJwYW5lbFRvRmllbGRzLm1hcChwYW5lbFRvRmllbGQgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IHBhbmVsVG9GaWVsZC5xYmZpbHRlckZpZWxkLnFiZmlsdGVyRW50aXR5LmlkLCBcclxuICAgICAgICAgICAgYmFzaWM6IHBhbmVsVG9GaWVsZC5iYXNpYyxcclxuICAgICAgICAgICAgbmFtZTogcGFuZWxUb0ZpZWxkLnFiZmlsdGVyRmllbGQucWJmaWx0ZXJFbnRpdHkubmFtZSwgXHJcbiAgICAgICAgICAgIGpzb25OYW1lOiBwYW5lbFRvRmllbGQucWJmaWx0ZXJGaWVsZC5xYmZpbHRlckVudGl0eS5qc29uTmFtZSwgXHJcbiAgICAgICAgICAgIGZpZWxkczogW11cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgbGV0IGZpbHRlckZpZWxkczogRmlsdGVyRmllbGRbXSA9IHFiUGFuZWxGaWx0ZXIucWJwYW5lbFRvRmllbGRzLm1hcChwID0+IHAucWJmaWx0ZXJGaWVsZCk7XHJcbiAgICAgICAgZmlsdGVyRW50aXR5LmZvckVhY2goKGVudGl0eTogUWJGaWx0ZXJFbnRpdHksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICBsZXQgZmllbGRzID0gZmlsdGVyRmllbGRzLmZpbHRlcihlID0+IGUucWJmaWx0ZXJFbnRpdHkuaWQgPT0gZW50aXR5LmlkKTtcclxuICAgICAgICAgICBmaWx0ZXJFbnRpdHlbaW5kZXhdLmZpZWxkcyA9IGZpZWxkcyA7XHJcbiAgICAgICAgfSlcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLmJhc2ljUXVlcnlDb25maWcgPSB0aGlzLmluaXRRdWVyeUJ1aWxkZXIoZmlsdGVyRW50aXR5KTtcclxuICAgICAgICB0aGlzLmJhc2ljUXVlcnlDb25maWcgPSB0aGlzLmZpbHRlckZpZWxkc0J5SWQodGhpcy5iYXNpY1F1ZXJ5Q29uZmlnLCBiYXNpY0ZpbHRlcklkcyk7XHJcbiAgICAgICAgdGhpcy5iYXNpY1F1ZXJ5Q29uZmlnLmZpZWxkcyA9IHRoaXMudHJhbnNsYXRlRmllbGRzKHRoaXMuYmFzaWNRdWVyeUNvbmZpZy5maWVsZHMpO1xyXG4gICAgICAgIHRoaXMuYWR2YW5jZWRRdWVyeUNvbmZpZyA9IHRoaXMuaW5pdFF1ZXJ5QnVpbGRlcihmaWx0ZXJFbnRpdHkpO1xyXG4gICAgICAgIHRoaXMuYWR2YW5jZWRRdWVyeUNvbmZpZyA9IHRoaXMuZmlsdGVyRmllbGRzQnlJZCh0aGlzLmFkdmFuY2VkUXVlcnlDb25maWcsIGFkdmFuY2VkRmlsdGVySWRzKTtcclxuICAgICAgICB0aGlzLmFkdmFuY2VkUXVlcnlDb25maWcuZmllbGRzID0gdGhpcy50cmFuc2xhdGVGaWVsZHModGhpcy5hZHZhbmNlZFF1ZXJ5Q29uZmlnLmZpZWxkcyk7XHJcbiAgICAgICAgbGV0IHJ1bGVzID0gT2JqZWN0LmtleXModGhpcy5iYXNpY1F1ZXJ5Q29uZmlnLmZpZWxkcylcclxuICAgICAgICAgIC5tYXAoZmllbGRLZXkgPT4geyBcclxuICAgICAgICAgICAgbGV0IGRlZmF1bHRPcGVyYXRvciA9IHRoaXMuZGVmYXVsdE9wZXJhdG9ycy5maW5kKG9wZXJhdG9yID0+IG9wZXJhdG9yLnFiZmlsdGVyRmllbGRJZCA9PSB0aGlzLmJhc2ljUXVlcnlDb25maWcuZmllbGRzW2ZpZWxkS2V5XS5pZCAmJiBvcGVyYXRvci5xYmRlZmF1bHRPcGVyYXRvciAhPSBudWxsKTtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICBmaWVsZDogZmllbGRLZXksIFxyXG4gICAgICAgICAgICAgIHZhbHVlOiB0aGlzLmJhc2ljUXVlcnlDb25maWcuZmllbGRzW2ZpZWxkS2V5XS5kZWZhdWx0VmFsdWUhLFxyXG4gICAgICAgICAgICAgIG9wZXJhdG9yOiBkZWZhdWx0T3BlcmF0b3IgPyBkZWZhdWx0T3BlcmF0b3IucWJkZWZhdWx0T3BlcmF0b3Iuc3ltYm9sIDogbnVsbFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBpZih0aGlzLnN0b3JlZFF1ZXJ5ICYmIHRoaXMuc3RvcmVkUXVlcnk/LmlkID09IHRoaXMuZmlsdGVySWQgJiYgdGhpcy5zdG9yZWRRdWVyeT8uYmFzaWNRdWVyeVZhbHVlICYmIHRoaXMuc3RvcmVkUXVlcnk/LmJhc2ljUXVlcnlWYWx1ZS5ydWxlcy5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmJhc2ljUXVlcnkgPSB0aGlzLnN0b3JlZFF1ZXJ5LmJhc2ljUXVlcnlWYWx1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuYmFzaWNRdWVyeSA9IHtcclxuICAgICAgICAgICAgICBjb25kaXRpb246ICdhbmQnLFxyXG4gICAgICAgICAgICAgIHJ1bGVzOiBydWxlc1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYodGhpcy5zdG9yZWRRdWVyeSAmJiB0aGlzLnN0b3JlZFF1ZXJ5Py5pZCA9PSB0aGlzLmZpbHRlcklkICYmIHRoaXMuc3RvcmVkUXVlcnk/LmFkdmFuY2VkUXVlcnlWYWx1ZSAmJiB0aGlzLnN0b3JlZFF1ZXJ5Py5hZHZhbmNlZFF1ZXJ5VmFsdWUucnVsZXMubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgdGhpcy5hZHZhbmNlZFF1ZXJ5ID0gdGhpcy5zdG9yZWRRdWVyeS5hZHZhbmNlZFF1ZXJ5VmFsdWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmFkdmFuY2VkUXVlcnkgPSB7XHJcbiAgICAgICAgICAgICAgY29uZGl0aW9uOiAnYW5kJyxcclxuICAgICAgICAgICAgICBydWxlczogW11cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5xdWVyeUNvbmZpZ1JlYWR5ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmluaXRRdWVyeUJ1aWxkZXJDb250cm9scygpO1xyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgaW5pdFF1ZXJ5QnVpbGRlcihmaWx0ZXJFbnRpdGllczogUWJGaWx0ZXJFbnRpdHlbXSkge1xyXG4gICAgbGV0IGVudGl0eUNvbmZpZ0F1eDogUXVlcnlCdWlsZGVyQ29uZmlnID0geyBmaWVsZHM6IHt9IH07XHJcbiAgICBsZXQgZW50aXRpZXNBcnJheTogRW50aXR5TWFwW10gPSBbXTtcclxuICAgIFxyXG4gICAgZmlsdGVyRW50aXRpZXMubWFwKChlLCBpbmRleCkgPT4ge1xyXG4gICAgICBsZXQgZW50aXR5OiBFbnRpdHkgPSB7IG5hbWU6IGUuanNvbk5hbWUgfTtcclxuICAgICAgcmV0dXJuIGVudGl0aWVzQXJyYXlbaW5kZXhdID0geyBbZS5qc29uTmFtZV06IGVudGl0eSB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IGVudGl0aWVzTWFwOiBFbnRpdHlNYXAgPSB7fTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGVudGl0eSBvZiBlbnRpdGllc0FycmF5KSB7XHJcbiAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhlbnRpdHkpO1xyXG5cclxuICAgICAga2V5cy5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgaWYodGhpcy50cmFuc2xhdGlvbnNPYmplY3QuZW50aXRpZXMpIHtcclxuICAgICAgICAgIGxldCBlbnRpdGllc1RyYW5zbGF0aW9uc0tleXMgPSBPYmplY3Qua2V5cyh0aGlzLnRyYW5zbGF0aW9uc09iamVjdC5lbnRpdGllcyk7XHJcbiAgICAgICAgICBsZXQgdHJhbnNsYXRpb24gPSBlbnRpdGllc1RyYW5zbGF0aW9uc0tleXMuZmluZCh0cmFuc2xhdGlvbktleSA9PiB0cmFuc2xhdGlvbktleSA9PSBrZXkpO1xyXG4gICAgICAgICAgaWYodHJhbnNsYXRpb24pIHtcclxuICAgICAgICAgICAgZW50aXRpZXNNYXBba2V5XSA9IHsgbmFtZTogdGhpcy50cmFuc2xhdGlvbnNPYmplY3QuZW50aXRpZXNba2V5XSB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBlbnRpdGllc01hcFtrZXldID0gZW50aXR5W2tleV1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZW50aXRpZXNNYXBba2V5XSA9IGVudGl0eVtrZXldXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGVudGl0eUNvbmZpZ0F1eC5lbnRpdGllcyA9IGVudGl0aWVzTWFwO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBmaWVsZHM6IEZpZWxkTWFwW10gPSBbXTtcclxuICAgIGZpbHRlckVudGl0aWVzLmZvckVhY2goKGZpbHRlckVudGl0eSkgPT4ge1xyXG4gICAgICByZXR1cm4gZmlsdGVyRW50aXR5LmZpZWxkcy5maWx0ZXIoKGZpbHRlckZpZWxkOiBGaWx0ZXJGaWVsZCkgPT4ge1xyXG4gICAgICAgIGxldCBpbmRleDogbnVtYmVyID0gZmllbGRzLmxlbmd0aCA/PyAwO1xyXG4gICAgICAgIGxldCBvcGVyYXRvcnNGbGF0QXJyYXkgPSBmaWx0ZXJGaWVsZC5vcGVyYXRvcnMubWFwKChvOmFueSkgPT4gby5zeW1ib2wpO1xyXG4gICAgICAgIGxldCBkZWZhdWx0T3BlcmF0b3IgPSB0aGlzLmRlZmF1bHRPcGVyYXRvcnMuZmluZChvcGVyYXRvciA9PiBvcGVyYXRvci5xYmZpbHRlckZpZWxkSWQgPT0gZmlsdGVyRmllbGQuaWQpO1xyXG4gICAgICAgIGxldCBmaWVsZDogRmllbGQgPSB7XHJcbiAgICAgICAgICBpZDogZmlsdGVyRmllbGQuaWQsXHJcbiAgICAgICAgICBuYW1lOiBmaWx0ZXJGaWVsZC5uYW1lLFxyXG4gICAgICAgICAgb3BlcmF0b3JzOiBkZWZhdWx0T3BlcmF0b3IucWJkZWZhdWx0T3BlcmF0b3I/LnN5bWJvbCA/IHRoaXMubW92ZUVsZW1lbnRUb0ZpcnN0UGxhY2Uob3BlcmF0b3JzRmxhdEFycmF5LCBkZWZhdWx0T3BlcmF0b3IucWJkZWZhdWx0T3BlcmF0b3I/LnN5bWJvbCkgOiBvcGVyYXRvcnNGbGF0QXJyYXksXHJcbiAgICAgICAgICB0eXBlOiB0aGlzLmdldERhdGFUeXBlKGZpbHRlckZpZWxkLmRhdGFUeXBlKSxcclxuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogdGhpcy5mb3JtYXREZWZhdWx0VmFsdWUodGhpcy5kZWZhdWx0VmFsdWVzLmZpbmQodmFsdWUgPT4gdmFsdWUucWJmaWx0ZXJGaWVsZElkID09IGZpbHRlckZpZWxkLmlkKS5kZWZhdWx0VmFsdWUsIGZpbHRlckZpZWxkLmRhdGFUeXBlKSxcclxuICAgICAgICAgIGRlZmF1bHRPcGVyYXRvcjogZGVmYXVsdE9wZXJhdG9yLnFiZGVmYXVsdE9wZXJhdG9yPy5zeW1ib2wsXHJcbiAgICAgICAgICBlbnRpdHk6IGZpbHRlckVudGl0eS5qc29uTmFtZSxcclxuICAgICAgICAgIG9wdGlvbnM6IGZpbHRlckZpZWxkLmxpc3RPZlZhbHVlcyxcclxuICAgICAgICAgIHZhbGlkYXRvcjogKHJ1bGU6IFJ1bGUsIHBhcmVudDogUnVsZVNldCk6IGFueSB8IG51bGwgPT4ge1xyXG4gICAgICAgICAgICBpZiAocnVsZS5vcGVyYXRvciAhPT0gXCJpcyBudWxsXCIgJiYgcnVsZS5vcGVyYXRvciAhPT0gXCJpcyBub3QgbnVsbFwiKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHJ1bGUudmFsdWUgPT09IHVuZGVmaW5lZCB8fCBydWxlLnZhbHVlID09PSBudWxsIHx8IHJ1bGUudmFsdWUgPT09ICcnIHx8IHJ1bGUudmFsdWUubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IHJlcXVpcmVkOiAnZW1wdHkgZmllbGQnIH07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVudGl0aWVzLnB1c2goe2ZpZWxkSnNvbk5hbWU6IGZpbHRlckZpZWxkLmpzb25OYW1lLCBlbnRpdHk6IGZpZWxkLmVudGl0eX0pO1xyXG4gICAgICAgIGZpZWxkc1tpbmRleF0gPSB7IFtmaWx0ZXJGaWVsZC5qc29uTmFtZV06IGZpZWxkIH07XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IGZpZWxkc01hcDogRmllbGRNYXAgPSB7fTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcykge1xyXG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoZmllbGQpO1xyXG4gICAgICBrZXlzLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICBmaWVsZHNNYXBba2V5XSA9IGZpZWxkW2tleV07XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgZW50aXR5Q29uZmlnQXV4LmZpZWxkcyA9IGZpZWxkc01hcDtcclxuICAgIH1cclxuICAgIHJldHVybiBlbnRpdHlDb25maWdBdXg7XHJcbiAgfVxyXG5cclxuICBmaWx0ZXJGaWVsZHNCeUlkKGZpZWxkc09iajogYW55LCBpZEFycmF5OiBudW1iZXJbXSk6IGFueSB7XHJcbiAgICBjb25zdCBmaWx0ZXJlZEZpZWxkczogYW55ID0ge307XHJcbiAgICBcclxuICAgIGZvciAoY29uc3Qga2V5IGluIGZpZWxkc09iai5maWVsZHMpIHtcclxuICAgICAgY29uc3QgZmllbGQgPSBmaWVsZHNPYmouZmllbGRzW2tleV07XHJcbiAgICAgIGlmIChpZEFycmF5LmluY2x1ZGVzKGZpZWxkLmlkKSkge1xyXG4gICAgICAgIGZpbHRlcmVkRmllbGRzW2tleV0gPSBmaWVsZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi5maWVsZHNPYmosXHJcbiAgICAgIGZpZWxkczogZmlsdGVyZWRGaWVsZHMsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgdHJhbnNsYXRlRmllbGRzKGZpZWxkczogRmllbGRNYXApIHtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIGZpZWxkcykge1xyXG4gICAgICBpZiAoZmllbGRzLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICBmaWVsZHNba2V5XS5maWVsZCA9IGtleTtcclxuICAgICAgICBmaWVsZHNba2V5XS5uYW1lID0gdGhpcy50cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzW2tleV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmaWVsZHM7XHJcbiAgfVxyXG5cclxuICBtb3ZlRWxlbWVudFRvRmlyc3RQbGFjZShhcnJheTogYW55W10sIGVsZW1lbnRUb0ZpcnN0UGxhY2U6IHN0cmluZykge1xyXG4gICAgY29uc3QgaW5kZXggPSBhcnJheS5pbmRleE9mKGVsZW1lbnRUb0ZpcnN0UGxhY2UpO1xyXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gICAgICBhcnJheS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICBhcnJheS51bnNoaWZ0KGVsZW1lbnRUb0ZpcnN0UGxhY2UpOyBcclxuICAgIH1cclxuICAgIHJldHVybiBhcnJheTtcclxuICB9XHJcblxyXG4gIGZvcm1hdERlZmF1bHRWYWx1ZSh2YWx1ZTogYW55LCB0eXBlOiBRQkRhdGFUeXBlRW51bSkge1xyXG4gICAgaWYodmFsdWUpIHtcclxuICAgICAgaWYodHlwZSA9PSBRQkRhdGFUeXBlRW51bS5Cb29sZWFuKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJztcclxuICAgICAgfVxyXG4gICAgICBpZih0eXBlID09IHRoaXMucWJEYXRhVHlwZUVudW0uTnVtYmVyIHx8IHR5cGUgPT0gdGhpcy5xYkRhdGFUeXBlRW51bS5EZWNpbWFsIHx8IHR5cGUgPT0gdGhpcy5xYkRhdGFUeXBlRW51bS5MaXN0KXtcclxuICAgICAgICByZXR1cm4gTnVtYmVyKHZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfSBcclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldERhdGFUeXBlKGlkOiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLnFiRGF0YUVudW1zLmZpbmQodmFsdWUgPT4gdmFsdWUgPT09IGlkKT8udG9TdHJpbmcoKSA/PyBcIlwiO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlRmllbGRzV2l0aG91dFZhbHVlKGpzb246IGFueSkge1xyXG4gICAgaWYgKGpzb24uYmFzaWMgJiYganNvbi5iYXNpYy5ydWxlcykge1xyXG4gICAgICBqc29uLmJhc2ljLnJ1bGVzID0ganNvbi5iYXNpYy5ydWxlcy5maWx0ZXIoKHJ1bGU6IGFueSkgPT4gcnVsZS52YWx1ZSAhPSBudWxsKTtcclxuICAgICAganNvbi5iYXNpYy5ydWxlcyA9IGpzb24uYmFzaWMucnVsZXMuZmlsdGVyKChydWxlOiBhbnkpID0+IHJ1bGUudmFsdWUgIT0gdW5kZWZpbmVkKTtcclxuICAgICAganNvbi5iYXNpYy5ydWxlcyA9IGpzb24uYmFzaWMucnVsZXMuZmlsdGVyKChydWxlOiBhbnkpID0+IHJ1bGUudmFsdWUgIT09IFwiXCIpO1xyXG4gICAgICBqc29uLmJhc2ljLnJ1bGVzID0ganNvbi5iYXNpYy5ydWxlcy5maWx0ZXIoKHJ1bGU6IGFueSkgPT4geyByZXR1cm4gIShydWxlLm9wZXJhdG9yID09PSBcIm51bGxhYmxlXCIgJiYgcnVsZS52YWx1ZSA9PT0gXCJudWxsXCIpOyB9KTtcclxuICAgIH1cclxuICAgIGlmKGpzb24uYWR2YW5jZWQgJiYganNvbi5hZHZhbmNlZC5ydWxlcz8ubGVuZ3RoICE9IDApIHtcclxuICAgICAganNvbi5hZHZhbmNlZC5ydWxlcyA9IGpzb24uYWR2YW5jZWQucnVsZXMuZmlsdGVyKChydWxlOiBhbnkpID0+IHJ1bGUucnVsZXM/Lmxlbmd0aCAhPSAwKTtcclxuICAgIH1cclxuICAgIGlmKGpzb24uZ3JvdXBlZCAmJiBqc29uLmdyb3VwZWQ/LnJ1bGVzLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgIGpzb24uZ3JvdXBlZC5ydWxlcyA9IGpzb24uZ3JvdXBlZC5ydWxlcy5maWx0ZXIoKHJ1bGU6IGFueSkgPT4gcnVsZS5ydWxlcz8ubGVuZ3RoICE9IDApO1xyXG4gICAgfVxyXG4gICAgaWYoanNvbi5ncm91cGVkICYmIGpzb24uZ3JvdXBlZD8ucnVsZXMubGVuZ3RoID09IDApIHtcclxuICAgICAganNvbi5ncm91cGVkID0gbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiBqc29uO1xyXG4gIH1cclxuICBcclxuICBpbml0aWFsaXplT3BlcmF0b3JzKGpzb246IGFueSkge1xyXG4gICAgaWYgKGpzb24uYmFzaWMgJiYganNvbi5iYXNpYy5ydWxlcykge1xyXG4gICAgICBqc29uLmJhc2ljLnJ1bGVzLmZvckVhY2goKHJ1bGU6YW55KSA9PiB7XHJcbiAgICAgICAgaWYoIXJ1bGUub3BlcmF0b3IpIHtcclxuICAgICAgICAgIHJ1bGUub3BlcmF0b3IgPSBcIj1cIjtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGpzb247XHJcbiAgfVxyXG5cclxuICByZXNldEJhc2ljUXVlcnlWYWx1ZXMoKSB7XHJcbiAgICB0aGlzLmJhc2ljUXVlcnkucnVsZXMuZm9yRWFjaCgocnVsZTogUnVsZSkgPT4ge1xyXG4gICAgICBpZihydWxlLnZhbHVlIHx8IHJ1bGUudmFsdWUgPT0gMCl7XHJcbiAgICAgICAgcnVsZS52YWx1ZSA9IG51bGxcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRRdWVyeUZpZWxkTmFtZShmaWVsZE5hbWU6IHN0cmluZywgZmllbGRzOiBGaWVsZE1hcCkge1xyXG4gICAgY29uc3QgZmllbGRFbnRyeSA9IE9iamVjdC5rZXlzKGZpZWxkcykuZmluZChrZXkgPT4gZmllbGRzW2tleV0uZmllbGQgPT09IGZpZWxkTmFtZSk7XHJcblxyXG4gICAgcmV0dXJuIGZpZWxkRW50cnkgJiYgZmllbGRzW2ZpZWxkRW50cnldLm5hbWUgPyBmaWVsZHNbZmllbGRFbnRyeV0ubmFtZSA6IGZpZWxkTmFtZTtcclxuICB9XHJcblxyXG4gIGZpZWxkSXNCb29sZWFuKGZpZWxkTmFtZTogc3RyaW5nLCBmaWVsZHM6IEZpZWxkTWFwKSB7XHJcbiAgICBjb25zdCBmaWVsZEVudHJ5ID0gT2JqZWN0LmtleXMoZmllbGRzKS5maW5kKGtleSA9PiBmaWVsZHNba2V5XS5maWVsZCA9PT0gZmllbGROYW1lKTtcclxuXHJcbiAgICByZXR1cm4gZmllbGRzW2ZpZWxkRW50cnkhXS50eXBlID09IFFCRGF0YVR5cGVFbnVtLkJvb2xlYW4udG9TdHJpbmcoKSA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG59XHJcbiIsIjwhLS0gVE9ETzogSW50ZW50YXIgb3RyYSB2ZXogcGFzYXIgbG9zIGNvbXBvbmVudGVzIGEgbG9zIGRlIHctIHBvcnF1ZSBubyBzZSBhbGluZW5hIHkgZWwgdy1lZGl0LXNlbGVjdCBubyB2YSBiaWVuIGVuIGZpZWxkLiBcclxuICBBaG9yYSBzZSBjb25zZXJ2YW4gbG9zIGRlIHAtdyBjb24gZXN0aWxvcy4gLS0+XHJcbjxwLWJsb2NrVUkgc3R5bGVDbGFzcz1cInctZmlsdGVyLXBhbmVsLWJsb2NrdWlcIiBbYXV0b1pJbmRleF09XCJmYWxzZVwiIFt0YXJnZXRdPVwiZmlsdGVyUGFuZWxcIiBbYmxvY2tlZF09XCJkYXRhSXNMb2FkaW5nU2VhcmNoQnV0dG9uXCI+PC9wLWJsb2NrVUk+XHJcblxyXG48cC1jYXJkIHN0eWxlQ2xhc3M9XCJ3LWZpbHRlci1wYW5lbC1uby1zdHlsZS1jYXJkXCIgI2ZpbHRlclBhbmVsPlxyXG4gIDxkaXYgKm5nSWY9XCJxdWVyeUNvbmZpZ1JlYWR5XCIgY2xhc3M9XCJ3LWZpbHRlci1wYW5lbC1zdHlsZXNcIj5cclxuICAgICAgPGRpdiAqbmdJZj1cIiFmaWx0ZXJQYW5lbE9iamVjdC5hbGxvd0FkdmFuY2VkU2VhcmNoOyBlbHNlIGJhaXNjQW5kQWR2YW5jZWRcIj5cclxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgJ3ctZmlsdGVyLXBhbmVsLWNvbnRhaW5lci1hZHZhbmNlZCcgOiBpc0FkdmFuY2VkU2VhcmNoLCAndy1maWx0ZXItcGFuZWwtY29udGFpbmVyLWJhc2ljJyA6ICFpc0FkdmFuY2VkU2VhcmNoIH1cIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJiYXNpY1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZCBidXR0b24tZ2FwXCI+XHJcbiAgICAgICAgICAgIDx3LWJ1dHRvbiBbbGFiZWxdPVwidHJhbnNsYXRpb25zT2JqZWN0LmNsZWFyQnV0dG9uTGFiZWxcIiB0eXBlPVwidGVydGlhcnlcIiBzaXplPVwic21hbGxcIiAob25DbGljayk9XCJvbkNsZWFyQ2xpY2tlZCgpXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgPHctYnV0dG9uIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3Quc2VhcmNoQnV0dG9uTGFiZWxcIiBzaXplPVwic21hbGxcIiAob25DbGljayk9XCJvblNlYXJjaENsaWNrZWQoKVwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8bmctdGVtcGxhdGUgI2JhaXNjQW5kQWR2YW5jZWQ+XHJcbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7ICd3LWZpbHRlci1wYW5lbC1jb250YWluZXItYWR2YW5jZWQnIDogaXNBZHZhbmNlZFNlYXJjaCwgJ3ctZmlsdGVyLXBhbmVsLWNvbnRhaW5lci1iYXNpYycgOiAhaXNBZHZhbmNlZFNlYXJjaCB9XCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXNBZHZhbmNlZFNlYXJjaDsgZWxzZSBhZHZhbmNlZFZpZXdcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYmFzaWNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYWR2YW5jZWRWaWV3PlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhZHZhbmNlZFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZCBidXR0b24tZ2FwXCIgW2NsYXNzLnB0LTNdPVwiaXNBZHZhbmNlZFNlYXJjaFwiPlxyXG4gICAgICAgICAgICAgIDx3LWJ1dHRvbiBbbGFiZWxdPVwidHJhbnNsYXRpb25zT2JqZWN0LmNsZWFyQnV0dG9uTGFiZWxcIiB0eXBlPVwidGVydGlhcnlcIiBzaXplPVwic21hbGxcIiAob25DbGljayk9XCJvbkNsZWFyQ2xpY2tlZCgpXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgICA8dy1idXR0b24gW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5zZWFyY2hCdXR0b25MYWJlbFwiIHNpemU9XCJzbWFsbFwiIChvbkNsaWNrKT1cIm9uU2VhcmNoQ2xpY2tlZCgpXCIgW2xvYWRpbmddPVwiZGF0YUlzTG9hZGluZ1NlYXJjaEJ1dHRvblwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvZGl2PlxyXG48L3AtY2FyZD5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNiYXNpYz5cclxuICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXJQYW5lbE9iamVjdC5hbGxvd0FkdmFuY2VkU2VhcmNoXCIgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmQgZmxleC13cmFwXCI+XHJcbiAgICAgIDx3LWJ1dHRvbiBbbGFiZWxdPVwidHJhbnNsYXRpb25zT2JqZWN0LmFkdmFuY2VkU2VhcmNoVGFiTGFiZWxcIiB0eXBlPVwidGV4dFwiIChvbkNsaWNrKT1cInVwZGF0ZVNlYXJjaFR5cGUoKVwiPjwvdy1idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ3LWZpbHRlci1wYW5lbC1iYXNpYyBxdWVyeS1idWlsZGVyLXN0eWxlIGZhZGVpbiBhbmltYXRpb24tZHVyYXRpb24tNTAwXCI+XHJcbiAgICAgIDxxdWVyeS1idWlsZGVyIFtmb3JtQ29udHJvbF09J3F1ZXJ5Q3RybCcgW2NvbmZpZ109J2Jhc2ljUXVlcnlDb25maWcnIFthbGxvd1J1bGVzZXRdPSdmaWx0ZXJQYW5lbE9iamVjdC5hbGxvd1J1bGVTZXQnIFthbGxvd1J1bGVzZXRdPVwiZmlsdGVyUGFuZWxPYmplY3QuYWxsb3dSdWxlU2V0XCIgW3BlcnNpc3RWYWx1ZU9uRmllbGRDaGFuZ2VdPSdwZXJzaXN0VmFsdWVPbkZpZWxkQ2hhbmdlJz5cclxuICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUJ1dHRvbkdyb3VwPVwibGV0IHJ1bGVzZXQ7XCI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5UmVtb3ZlQnV0dG9uPVwibGV0IHJ1bGU7IGxldCByZW1vdmVSdWxlPXJlbW92ZVJ1bGVcIj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlTd2l0Y2hHcm91cD1cImxldCBydWxlc2V0OyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlFbnRpdHk9XCJsZXQgcnVsZTsgbGV0IGVudGl0aWVzPWVudGl0aWVzOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgIDxwLWRyb3Bkb3duIFtkaXNhYmxlZF09XCJ0cnVlXCIgY2xhc3M9XCIgdy1lZGl0LXNlbGVjdC1zbWFsbFwiICpuZ0lmPVwiZmFsc2VcIiBhcHBlbmRUbz1cImJvZHlcIiBbb3B0aW9uc109XCJlbnRpdGllc1wiIFsobmdNb2RlbCldPVwicnVsZS5lbnRpdHlcIiBvcHRpb25MYWJlbD1cIm5hbWVcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50LCBydWxlKVwiPjwvcC1kcm9wZG93bj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlGaWVsZD1cImxldCBydWxlOyBsZXQgZmllbGRzPWZpZWxkczsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlOyBsZXQgZ2V0RmllbGRzID0gZ2V0RmllbGRzOyBsZXQgdmFsdWU9dmFsdWU7IGxldCBuYW1lPW5hbWU7IGxldCBpbmRleD1pbmRleFwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGFwcGVuZFRvPVwiYm9keVwiIGNsYXNzPVwidy00IHRleHQtbGVmdCB3LWZpbHRlci1wYW5lbC1pbnB1dC10ZXh0LWxhYmVsXCIgW2NsYXNzLnctZmlsdGVyLXBhbmVsLWJvb2xlYW4tbGFiZWwtd2lkdGhdPVwiZmllbGRJc0Jvb2xlYW4ocnVsZS5maWVsZCwgZ2V0RmllbGRzKHJ1bGUuZW50aXR5KSlcIiBvcHRpb25MYWJlbD1cIm5hbWVcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCI+e3sgZ2V0UXVlcnlGaWVsZE5hbWUocnVsZS5maWVsZCwgZ2V0RmllbGRzKHJ1bGUuZW50aXR5KSl9fTwvc3Bhbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlPcGVyYXRvcj1cImxldCBydWxlOyBsZXQgb3BlcmF0b3JzPW9wZXJhdG9yczsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXVlcnktYnVpbGRlci1vcGVyYXRvci13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxwLWRyb3Bkb3duIGNsYXNzPVwiIHctZWRpdC1zZWxlY3Qtc21hbGxcIiAqbmdJZj1cImlzQWR2YW5jZWRTZWFyY2hcIiBhcHBlbmRUbz1cImJvZHlcIiBbKG5nTW9kZWwpXT1cInJ1bGUub3BlcmF0b3JcIiBbb3B0aW9uc109XCJvcGVyYXRvcnNcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZShydWxlKVwiPjwvcC1kcm9wZG93bj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLkJvb2xlYW4udG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInF1ZXJ5LWJ1aWxkZXItb3BlcmF0b3Itd2lkdGhcIj5cclxuICAgICAgICAgICAgPHctdG9nZ2xlLWJ1dHRvbiBzaXplPVwic21hbGxcIiBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiBvbkxhYmVsPVwiVHJ1ZVwiIG9mZkxhYmVsPVwiRmFsc2VcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCI+PC93LXRvZ2dsZS1idXR0b24+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgdHlwZTogcWJEYXRhVHlwZUVudW0uRGF0ZXRpbWUudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidy1lZGl0LWNhbGVuZGFyXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICA8dy1lZGl0LWNhbGVuZGFyIGFwcGVuZFRvPVwiYm9keVwiIHNpemU9XCJzbWFsbFwiIFtzaG93SWNvbl09XCJmYWxzZVwiIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIChvbkNoYW5nZSk9XCJvbkNoYW5nZSgpXCIgW3Nob3dUaW1lXT1cInRydWVcIiBbc2hvd1NlY29uZHNdPVwidHJ1ZVwiIFtmaXJzdERheU9mV2Vla109XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmlyc3REYXlPZldlZWsgPz8gMVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLmRhdGV0aW1lXCIgW2Rpc3BsYXlJbmxpbmVCbG9ja109XCJ0cnVlXCI+PC93LWVkaXQtY2FsZW5kYXI+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgZmllbGQ9ZmllbGQ7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLkRlY2ltYWwudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidy1maWx0ZXItcGFuZWwtYmFzaWMtcXVlcnktYnVpbGRlci1pbnB1dC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxwLWlucHV0TnVtYmVyIGlucHV0U3R5bGVDbGFzcz1cImZsZXggZmxleC0xXCIgc3R5bGVDbGFzcz1cImZsZXggZmxleC0xXCIgY2xhc3M9XCIgdy1maWx0ZXItcGFuZWwtYmFzaWMtcXVlcnktYnVpbGRlci1pbnB1dC13aWR0aCB3LWVkaXQtaW5wdXQtbnVtYmVyLXNtYWxsIHctZWRpdC1pbnB1dC1udW1iZXItc21hbGwtaGVpZ2h0XCIgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgaW5wdXRJZD1cIm1pbm1heFwiIGlucHV0SWQ9XCJtaW5tYXhcIiBtb2RlPVwiZGVjaW1hbFwiIFttaW5GcmFjdGlvbkRpZ2l0c109XCIyXCIgW21heEZyYWN0aW9uRGlnaXRzXT1cIjVcIiBbbWluXT1cIjBcIiBbbWF4XT1cIjEwMFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRpb25zT2JqZWN0LmZpZWxkc1BsYWNlaG9sZGVycy5kZWNpbWFsXCI+IDwvcC1pbnB1dE51bWJlcj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IGxldCBvcHRpb25zPW9wdGlvbnM7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLkxpc3QudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidy1maWx0ZXItcGFuZWwtYmFzaWMtcXVlcnktYnVpbGRlci1pbnB1dC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxwLWRyb3Bkb3duIGNsYXNzPVwidy1lZGl0LXNlbGVjdC1zbWFsbFwiIGFwcGVuZFRvPVwiYm9keVwiIFtvcHRpb25zXT1cIm9wdGlvbnNcIiBbZmlsdGVyXT1cInRydWVcIiBbc2hvd0NsZWFyXT1cInRydWVcIiBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgb3B0aW9uTGFiZWw9XCJuYW1lXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLmxpc3RcIj48L3AtZHJvcGRvd24+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgZmllbGQ9ZmllbGQ7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLk51bWJlci50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgICA8cC1pbnB1dE51bWJlciBbdXNlR3JvdXBpbmddPVwiZmFsc2VcIiBpbnB1dFN0eWxlQ2xhc3M9XCJmbGV4IGZsZXgtMVwiIHN0eWxlQ2xhc3M9XCJmbGV4IGZsZXgtMVwiIGNsYXNzPVwiIHctZmlsdGVyLXBhbmVsLWJhc2ljLXF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGggdy1lZGl0LWlucHV0LW51bWJlci1zbWFsbCB3LWVkaXQtaW5wdXQtbnVtYmVyLXNtYWxsLWhlaWdodFwiIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIGlucHV0SWQ9XCJtaW5tYXhcIiBpbnB1dElkPVwibWlubWF4XCIgW21pbl09XCIwXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoKVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLm51bWJlclwiPiA8L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgbGV0IGZpZWxkPWZpZWxkOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5UZXh0LnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiIHctZmlsdGVyLXBhbmVsLWJhc2ljLXF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGggdy1lZGl0LWlucHV0LXRleHQtc21hbGwtaGVpZ2h0IHctZWRpdC1pbnB1dC10ZXh0LXNtYWxsXCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRpb25zT2JqZWN0LmZpZWxkc1BsYWNlaG9sZGVycy50ZXh0XCIvPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IGxldCBvcHRpb25zPW9wdGlvbnM7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLk11bHRpc2VsZWN0LnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInctZmlsdGVyLXBhbmVsLWJhc2ljLXF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8cC1tdWx0aVNlbGVjdCBjbGFzcz1cInctZWRpdC1tdWx0aXNlbGVjdC1zbWFsbFwiIFthcHBlbmRUb109XCInYm9keSdcIiBbb3B0aW9uc109XCJvcHRpb25zXCIgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoKVwiIG9wdGlvbkxhYmVsPVwibmFtZVwiIG9wdGlvblZhbHVlPVwidmFsdWVcIiBkaXNwbGF5PVwiY2hpcFwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLmxpc3RcIj48L3AtbXVsdGlTZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgb3B0aW9ucz1vcHRpb25zOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5OdWxsYWJsZVNlbGVjdC50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidy1maWx0ZXItcGFuZWwtYmFzaWMtcXVlcnktYnVpbGRlci1pbnB1dC13aWR0aFwiPlxyXG4gICAgICAgICAgICA8cC1kcm9wZG93biBjbGFzcz1cInctZWRpdC1zZWxlY3Qtc21hbGxcIiBhcHBlbmRUbz1cImJvZHlcIiBbb3B0aW9uc109XCJvcHRpb25zXCIgW2ZpbHRlcl09XCJ0cnVlXCIgW3Nob3dDbGVhcl09XCJ0cnVlXCIgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoKVwiIG9wdGlvbkxhYmVsPVwibmFtZVwiIG9wdGlvblZhbHVlPVwidmFsdWVcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRpb25zT2JqZWN0LmZpZWxkc1BsYWNlaG9sZGVycy5saXN0XCI+PC9wLWRyb3Bkb3duPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IGxldCBvcHRpb25zPW9wdGlvbnM7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLkJvb2xlYW5TZWxlY3QudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInctZmlsdGVyLXBhbmVsLWJhc2ljLXF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGhcIj5cclxuICAgICAgICAgICAgPHAtZHJvcGRvd24gY2xhc3M9XCJ3LWVkaXQtc2VsZWN0LXNtYWxsXCIgYXBwZW5kVG89XCJib2R5XCIgW29wdGlvbnNdPVwib3B0aW9uc1wiIFtmaWx0ZXJdPVwidHJ1ZVwiIFtzaG93Q2xlYXJdPVwidHJ1ZVwiIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIiBvcHRpb25MYWJlbD1cIm5hbWVcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMubGlzdFwiPjwvcC1kcm9wZG93bj5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgb3B0aW9ucz1vcHRpb25zOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5BZGRyZXNzLnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgPHctYWRkcmVzcy1maWVsZCBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgW29wZXJhdG9yXT1cInJ1bGUub3BlcmF0b3JcIiBbc2VnbWVudGF0aW9uQXBpVXJsXT1cInNlZ21lbnRhdGlvbkFwaVVybFwiIFtzZWdtZW50YXRpb25BcGlUb2tlbl09XCJzZWdtZW50YXRpb25Ub2tlblwiPjwvdy1hZGRyZXNzLWZpZWxkPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3F1ZXJ5LWJ1aWxkZXI+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzQWR2YW5jZWRTZWFyY2ggJiYgYmFzaWNRdWVyeS5ydWxlcy5sZW5ndGg9PTBcIiA+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub1F1ZXJ5RGF0YVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhZHZhbmNlZD5cclxuICAgIDxkaXYgW2NsYXNzLnF1ZXJ5LWJ1aWxkZXItc3R5bGVdPVwiIWZpbHRlclBhbmVsT2JqZWN0LmFsbG93UnVsZVNldFwiIGNsYXNzPVwidy1maWx0ZXItcGFuZWwtY29udGFpbmVyIGZhZGVpbiBhbmltYXRpb24tZHVyYXRpb24tNTAwXCI+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXJQYW5lbE9iamVjdC5hbGxvd1J1bGVTZXRcIiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZCBmbGV4LXdyYXBcIj5cclxuICAgICAgICA8dy1idXR0b24gY2xhc3M9XCJtYi0yXCIgW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5iYXNpY1NlYXJjaFRhYkxhYmVsXCIgdHlwZT1cInRleHRcIiAob25DbGljayk9XCJ1cGRhdGVTZWFyY2hUeXBlKClcIj48L3ctYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPHF1ZXJ5LWJ1aWxkZXIgW2Zvcm1Db250cm9sXT0nYWR2YW5jZWRRdWVyeUN0cmwnIFtjb25maWddPSdhZHZhbmNlZFF1ZXJ5Q29uZmlnJyBbYWxsb3dSdWxlc2V0XT0nZmlsdGVyUGFuZWxPYmplY3QuYWxsb3dSdWxlU2V0JyBbYWxsb3dDb2xsYXBzZV09J2ZpbHRlclBhbmVsT2JqZWN0LmFsbG93Q29sYXBzZScgW2FsbG93UnVsZXNldF09XCJmaWx0ZXJQYW5lbE9iamVjdC5hbGxvd1J1bGVTZXRcIiBbcGVyc2lzdFZhbHVlT25GaWVsZENoYW5nZV09J3BlcnNpc3RWYWx1ZU9uRmllbGRDaGFuZ2UnPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlclBhbmVsT2JqZWN0LmFsbG93UnVsZVNldDsgZWxzZSBub1J1bGVTZXRcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlCdXR0b25Hcm91cD1cImxldCBydWxlc2V0OyBsZXQgYWRkUnVsZT1hZGRSdWxlOyBsZXQgYWRkUnVsZVNldD1hZGRSdWxlU2V0OyBsZXQgcmVtb3ZlUnVsZVNldD1yZW1vdmVSdWxlU2V0XCI+XHJcbiAgICAgICAgICAgICAgICA8dy1idXR0b24gY2xhc3M9XCJtci0yXCIgW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5hZHZhbmNlZFNlYXJjaC5hZGRSdWxlQnV0dG9uTGFiZWxcIiB0eXBlPVwic2Vjb25kYXJ5XCIgc2l6ZT1cInNtYWxsXCIgKG9uQ2xpY2spPVwiYWRkUnVsZSgpXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDx3LWJ1dHRvbiBjbGFzcz1cIm1yLTJcIiBbbGFiZWxdPVwidHJhbnNsYXRpb25zT2JqZWN0LmFkdmFuY2VkU2VhcmNoLmFkZFJ1bGVTZXRCdXR0b25MYWJlbFwiIHR5cGU9XCJzZWNvbmRhcnlcIiBpY29uPVwicGkgcGktcGx1c1wiIHNpemU9XCJzbWFsbFwiICpuZ0lmPVwiYWRkUnVsZVNldFwiIChvbkNsaWNrKT1cImFkZFJ1bGVTZXQoKVwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8dy1idXR0b24gY2xhc3M9XCJtci0yXCIgW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5hZHZhbmNlZFNlYXJjaC5yZW1vdmVSdWxlU2V0QnV0dG9uTGFiZWxcIiB0eXBlPVwidGVydGlhcnlcIiBpY29uPVwicGkgcGktbWludXNcIiBzaXplPVwic21hbGxcIiAqbmdJZj1cInJlbW92ZVJ1bGVTZXRcIiAob25DbGljayk9XCJyZW1vdmVSdWxlU2V0KClcIj48L3ctYnV0dG9uPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9SdWxlU2V0PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUJ1dHRvbkdyb3VwPVwibGV0IHJ1bGVzZXQ7IGxldCBhZGRSdWxlPWFkZFJ1bGU7IGxldCBhZGRSdWxlU2V0PWFkZFJ1bGVTZXQ7IGxldCByZW1vdmVSdWxlU2V0PXJlbW92ZVJ1bGVTZXRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGZsZXgtd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgPHctYnV0dG9uIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3QuYmFzaWNTZWFyY2hUYWJMYWJlbFwiIHR5cGU9XCJ0ZXh0XCIgKG9uQ2xpY2spPVwidXBkYXRlU2VhcmNoVHlwZSgpXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkdmFuY2VkLXF1ZXJ5LWJ1dHRvbi1ncm91cCBnYXAtM1wiPlxyXG4gICAgICAgICAgICAgICAgPHctYnV0dG9uIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3QuYWR2YW5jZWRTZWFyY2guYWRkUnVsZUJ1dHRvbkxhYmVsXCIgdHlwZT1cInNlY29uZGFyeVwiIHNpemU9XCJzbWFsbFwiIChvbkNsaWNrKT1cImFkZFJ1bGUoKVwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8dy1idXR0b24gW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5hZHZhbmNlZFNlYXJjaC5hZGRSdWxlU2V0QnV0dG9uTGFiZWxcIiB0eXBlPVwic2Vjb25kYXJ5XCIgaWNvbj1cInBpIHBpLXBsdXNcIiBzaXplPVwic21hbGxcIiAqbmdJZj1cImFkZFJ1bGVTZXRcIiAob25DbGljayk9XCJhZGRSdWxlU2V0KClcIj48L3ctYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPHctYnV0dG9uIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3QuYWR2YW5jZWRTZWFyY2gucmVtb3ZlUnVsZVNldEJ1dHRvbkxhYmVsXCIgdHlwZT1cInRlcnRpYXJ5XCIgaWNvbj1cInBpIHBpLW1pbnVzXCIgc2l6ZT1cInNtYWxsXCIgKm5nSWY9XCJyZW1vdmVSdWxlU2V0XCIgKG9uQ2xpY2spPVwicmVtb3ZlUnVsZVNldCgpXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5QXJyb3dJY29uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgaWNvbj1cInBpIHBpLWFuZ2xlLXJpZ2h0XCIgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHRcIj48L2J1dHRvbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5UmVtb3ZlQnV0dG9uPVwibGV0IHJ1bGU7IGxldCByZW1vdmVSdWxlPXJlbW92ZVJ1bGVcIj5cclxuICAgICAgICAgICAgPHctYnV0dG9uIGNsYXNzPVwiXCIgbGFiZWw9XCJcIiBzaXplPVwic21hbGxcIiB0eXBlPVwidGVydGlhcnlcIiBpY29uPVwicGkgcGktdGltZXNcIiAob25DbGljayk9XCJyZW1vdmVSdWxlKHJ1bGUpXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5U3dpdGNoR3JvdXA9XCJsZXQgcnVsZXNldDsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJydWxlc2V0XCIgY2xhc3M9XCJ3LWZpbHRlci1wYW5lbC1zd2l0Y2gtZ3JvdXAtcGFkZGluZ1wiPlxyXG4gICAgICAgICAgICAgIDx3LXNlbGVjdC1idXR0b24gKm5nSWY9XCJmaWx0ZXJQYW5lbE9iamVjdC5hbGxvd0xvZ2ljYWxSdWxlXCIgW3N0YXRlT3B0aW9uc109XCJbe2xhYmVsOiAnQW5kJywgdmFsdWU6ICdhbmQnfSwge2xhYmVsOiAnT3InLCB2YWx1ZTogJ29yJ31dXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicnVsZXNldC5jb25kaXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUpPVwicnVsZXNldC5jb25kaXRpb24gPSAkZXZlbnRcIj5cclxuICAgICAgICAgICAgICA8L3ctc2VsZWN0LWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUVudGl0eT1cImxldCBydWxlOyBsZXQgZW50aXRpZXM9ZW50aXRpZXM7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8cC1kcm9wZG93biAqbmdJZj1cImZpbHRlclBhbmVsT2JqZWN0LmVuaXR5TW9kZVwiIGNsYXNzPVwiZmllbGQtZ2FwIHctZWRpdC1zZWxlY3Qtc21hbGwgdy1lbnRpdHktZHJvcGRvd25cIiBhcHBlbmRUbz1cImJvZHlcIiBbb3B0aW9uc109XCJlbnRpdGllc1wiIFsobmdNb2RlbCldPVwicnVsZS5lbnRpdHlcIiBvcHRpb25MYWJlbD1cIm5hbWVcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50LCBydWxlKVwiPjwvcC1kcm9wZG93bj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5RmllbGQ9XCJsZXQgcnVsZTsgbGV0IGZpZWxkcz1maWVsZHM7IGxldCBvbkNoYW5nZT1vbkNoYW5nZTsgbGV0IGdldEZpZWxkcyA9IGdldEZpZWxkc1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInF1ZXJ5LWJ1aWxkZXItZmllbGQtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8cC1kcm9wZG93biBjbGFzcz1cImZpZWxkLWdhcCB3LWVkaXQtc2VsZWN0LXNtYWxsXCIgYXBwZW5kVG89XCJib2R5XCIgW29wdGlvbnNdPVwiZ2V0RmllbGRzKHJ1bGUuZW50aXR5KVwiIFsobmdNb2RlbCldPVwicnVsZS5maWVsZFwiIG9wdGlvbkxhYmVsPVwibmFtZVwiIG9wdGlvblZhbHVlPVwidmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQsIHJ1bGUpXCI+PC9wLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgIDwhLS0gPHctbGlzdC1maWVsZCBjbGFzcz1cImZpZWxkLWdhcFwiIGFwcGVuZFRvPVwiYm9keVwiIFtvcHRpb25zXT1cImdldEZpZWxkcyhydWxlLmVudGl0eSlcIiBbKG5nTW9kZWwpXT1cInJ1bGUuZmllbGRcIiBbb3BlcmF0b3JdPVwiJz0nXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50LCBydWxlKVwiIFtvbmx5RHJvcGRvd25dPVwidHJ1ZVwiPjwvdy1saXN0LWZpZWxkPiAtLT5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlPcGVyYXRvcj1cImxldCBydWxlOyBsZXQgb3BlcmF0b3JzPW9wZXJhdG9yczsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXVlcnktYnVpbGRlci1vcGVyYXRvci13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxwLWRyb3Bkb3duIGNsYXNzPVwiZmllbGQtZ2FwIHctZWRpdC1zZWxlY3Qtc21hbGxcIiBhcHBlbmRUbz1cImJvZHlcIiBbKG5nTW9kZWwpXT1cInJ1bGUub3BlcmF0b3JcIiBbb3B0aW9uc109XCJvcGVyYXRvcnNcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZShydWxlKVwiPjwvcC1kcm9wZG93bj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5Cb29sZWFuLnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8dy10b2dnbGUtYnV0dG9uIGNsYXNzPVwiZmllbGQtZ2FwIHRvZ2dsZS1idXR0b24tYWxpZ25cIiBzaXplPVwic21hbGxcIiBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiBvbkxhYmVsPVwiVHJ1ZVwiIG9mZkxhYmVsPVwiRmFsc2VcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCI+PC93LXRvZ2dsZS1idXR0b24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLkRhdGV0aW1lLnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8dy1lZGl0LWNhbGVuZGFyIGNsYXNzPVwiZmllbGQtZ2FwXCIgYXBwZW5kVG89XCJib2R5XCIgc2l6ZT1cInNtYWxsXCIgW3Nob3dJY29uXT1cImZhbHNlXCIgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgKG9uQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIiBbc2hvd1RpbWVdPVwidHJ1ZVwiIFtzaG93U2Vjb25kc109XCJ0cnVlXCIgW2ZpcnN0RGF5T2ZXZWVrXT1cInRyYW5zbGF0aW9uc09iamVjdC5maXJzdERheU9mV2VlayA/PyAxXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMuZGF0ZXRpbWVcIiBbZGlzcGxheUlubGluZUJsb2NrXT1cInRydWVcIj48L3ctZWRpdC1jYWxlbmRhcj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgZmllbGQ9ZmllbGQ7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLkRlY2ltYWwudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXVlcnktYnVpbGRlci1pbnB1dC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxwLWlucHV0TnVtYmVyIGlucHV0U3R5bGVDbGFzcz1cImZsZXggZmxleC0xXCIgc3R5bGVDbGFzcz1cImZsZXggZmxleC0xXCIgY2xhc3M9XCJmaWVsZC1nYXAgdy1lZGl0LWlucHV0LW51bWJlci1zbWFsbCB3LWVkaXQtaW5wdXQtbnVtYmVyLXNtYWxsLWhlaWdodFwiIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIGlucHV0SWQ9XCJtaW5tYXhcIiBpbnB1dElkPVwibWlubWF4XCIgbW9kZT1cImRlY2ltYWxcIiBbbWluRnJhY3Rpb25EaWdpdHNdPVwiMlwiIFttYXhGcmFjdGlvbkRpZ2l0c109XCI1XCIgW21pbl09XCIwXCIgW21heF09XCIxMDBcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMuZGVjaW1hbFwiPiA8L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgbGV0IG9wdGlvbnM9b3B0aW9uczsgdHlwZTogcWJEYXRhVHlwZUVudW0uTGlzdC50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPHAtZHJvcGRvd24gY2xhc3M9XCJmaWVsZC1nYXAgdy1lZGl0LXNlbGVjdC1zbWFsbFwiIGFwcGVuZFRvPVwiYm9keVwiIFtvcHRpb25zXT1cIm9wdGlvbnNcIiBbZmlsdGVyXT1cInRydWVcIiBbc2hvd0NsZWFyXT1cInRydWVcIiBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgb3B0aW9uTGFiZWw9XCJuYW1lXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLmxpc3RcIj48L3AtZHJvcGRvd24+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgbGV0IG9wdGlvbnM9b3B0aW9uczsgdHlwZTogcWJEYXRhVHlwZUVudW0uTGlzdC50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoIGZpZWxkLWdhcFwiPlxyXG4gICAgICAgICAgICAgIDx3LWxpc3QtZmllbGQgW29wdGlvbnNdPVwib3B0aW9uc1wiIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIFtvcGVyYXRvcl09XCJydWxlLm9wZXJhdG9yXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoKVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLmxpc3RcIj48L3ctbGlzdC1maWVsZD5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgZmllbGQ9ZmllbGQ7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLk51bWJlci50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPHAtaW5wdXROdW1iZXIgW3VzZUdyb3VwaW5nXT1cImZhbHNlXCIgaW5wdXRTdHlsZUNsYXNzPVwiZmxleCBmbGV4LTFcIiBzdHlsZUNsYXNzPVwiZmxleCBmbGV4LTFcIiBjbGFzcz1cImZpZWxkLWdhcCB3LWVkaXQtaW5wdXQtbnVtYmVyLXNtYWxsIHctZWRpdC1pbnB1dC1udW1iZXItc21hbGwtaGVpZ2h0XCIgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgaW5wdXRJZD1cIm1pbm1heFwiIGlucHV0SWQ9XCJtaW5tYXhcIiBbbWluXT1cIjBcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMubnVtYmVyXCI+IDwvcC1pbnB1dE51bWJlcj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgZmllbGQ9ZmllbGQ7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLlRleHQudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZpZWxkLWdhcCBxdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoIHctZWRpdC1pbnB1dC10ZXh0LXNtYWxsLWhlaWdodCB3LWVkaXQtaW5wdXQtdGV4dC1zbWFsbFwiIHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMudGV4dFwiLz5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgbGV0IG9wdGlvbnM9b3B0aW9uczsgdHlwZTogcWJEYXRhVHlwZUVudW0uTXVsdGlzZWxlY3QudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXVlcnktYnVpbGRlci1pbnB1dC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxwLW11bHRpU2VsZWN0IGNsYXNzPVwidy1lZGl0LW11bHRpc2VsZWN0LXNtYWxsXCIgW2FwcGVuZFRvXT1cIidib2R5J1wiIFtvcHRpb25zXT1cIm9wdGlvbnNcIiBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgb3B0aW9uTGFiZWw9XCJuYW1lXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIGRpc3BsYXk9XCJjaGlwXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMubGlzdFwiPjwvcC1tdWx0aVNlbGVjdD5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgb3B0aW9ucz1vcHRpb25zOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5BZGRyZXNzLnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8dy1hZGRyZXNzLWZpZWxkIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIiBbb3BlcmF0b3JdPVwicnVsZS5vcGVyYXRvclwiIFtzZWdtZW50YXRpb25BcGlVcmxdPVwic2VnbWVudGF0aW9uQXBpVXJsXCIgW3NlZ21lbnRhdGlvbkFwaVRva2VuXT1cInNlZ21lbnRhdGlvblRva2VuXCIgW3NlbGVjdFBsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMubGlzdFwiPjwvdy1hZGRyZXNzLWZpZWxkPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgb3B0aW9ucz1vcHRpb25zOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5OdWxsYWJsZVNlbGVjdC50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPHAtZHJvcGRvd24gY2xhc3M9XCJmaWVsZC1nYXAgdy1lZGl0LXNlbGVjdC1zbWFsbFwiIGFwcGVuZFRvPVwiYm9keVwiIFtvcHRpb25zXT1cIm9wdGlvbnNcIiBbZmlsdGVyXT1cInRydWVcIiBbc2hvd0NsZWFyXT1cInRydWVcIiBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgb3B0aW9uTGFiZWw9XCJuYW1lXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLmxpc3RcIj48L3AtZHJvcGRvd24+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgbGV0IG9wdGlvbnM9b3B0aW9uczsgdHlwZTogcWJEYXRhVHlwZUVudW0uQm9vbGVhblNlbGVjdC50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPHAtZHJvcGRvd24gY2xhc3M9XCJmaWVsZC1nYXAgdy1lZGl0LXNlbGVjdC1zbWFsbFwiIGFwcGVuZFRvPVwiYm9keVwiIFtvcHRpb25zXT1cIm9wdGlvbnNcIiBbZmlsdGVyXT1cInRydWVcIiBbc2hvd0NsZWFyXT1cInRydWVcIiBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgb3B0aW9uTGFiZWw9XCJuYW1lXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLmxpc3RcIj48L3AtZHJvcGRvd24+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3F1ZXJ5LWJ1aWxkZXI+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNBZHZhbmNlZFNlYXJjaCAmJiBhZHZhbmNlZFF1ZXJ5LnJ1bGVzLmxlbmd0aD09MFwiID5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9RdWVyeURhdGFcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8IS0tIEdyb3VwZWQgZmlsdGVyIC0tPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVyUGFuZWxPYmplY3QuYWxsb3dHcm91cGVkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInB5LTVcIj5cclxuICAgICAgICAgIDx3LXZpZXctY2FyZC10aXRsZS10ZXh0IFtjYXJkVGl0bGVdPVwidHJhbnNsYXRpb25zT2JqZWN0Lmdyb3VwZWRGaWx0ZXJUaXRsZVwiPjwvdy12aWV3LWNhcmQtdGl0bGUtdGV4dD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPHF1ZXJ5LWJ1aWxkZXIgW2Zvcm1Db250cm9sXT0nZ3JvdXBlZFF1ZXJ5Q3RybCcgW2NvbmZpZ109J2FkdmFuY2VkUXVlcnlDb25maWcnIFthbGxvd1J1bGVzZXRdPSdmaWx0ZXJQYW5lbE9iamVjdC5hbGxvd1J1bGVTZXQnIFthbGxvd0NvbGxhcHNlXT0nZmlsdGVyUGFuZWxPYmplY3QuYWxsb3dDb2xhcHNlJyBbYWxsb3dSdWxlc2V0XT1cImZpbHRlclBhbmVsT2JqZWN0LmFsbG93UnVsZVNldFwiIFtwZXJzaXN0VmFsdWVPbkZpZWxkQ2hhbmdlXT0ncGVyc2lzdFZhbHVlT25GaWVsZENoYW5nZSc+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUJ1dHRvbkdyb3VwPVwibGV0IHJ1bGVzZXQ7IGxldCBhZGRSdWxlPWFkZFJ1bGU7IGxldCBhZGRSdWxlU2V0PWFkZFJ1bGVTZXQ7IGxldCByZW1vdmVSdWxlU2V0PXJlbW92ZVJ1bGVTZXRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTMgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDx3LWJ1dHRvbiBbbGFiZWxdPVwidHJhbnNsYXRpb25zT2JqZWN0LmFkdmFuY2VkU2VhcmNoLmFkZFJ1bGVCdXR0b25MYWJlbFwiIHR5cGU9XCJzZWNvbmRhcnlcIiBzaXplPVwic21hbGxcIiAob25DbGljayk9XCJhZGRSdWxlKClcIj48L3ctYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDx3LWJ1dHRvbiBbbGFiZWxdPVwidHJhbnNsYXRpb25zT2JqZWN0LmFkdmFuY2VkU2VhcmNoLmFkZFJ1bGVTZXRCdXR0b25MYWJlbFwiIHR5cGU9XCJzZWNvbmRhcnlcIiBpY29uPVwicGkgcGktcGx1c1wiIHNpemU9XCJzbWFsbFwiICpuZ0lmPVwiYWRkUnVsZVNldFwiIChvbkNsaWNrKT1cImFkZFJ1bGVTZXQoKVwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgPHctYnV0dG9uIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3QuYWR2YW5jZWRTZWFyY2gucmVtb3ZlUnVsZVNldEJ1dHRvbkxhYmVsXCIgdHlwZT1cInRlcnRpYXJ5XCIgaWNvbj1cInBpIHBpLW1pbnVzXCIgc2l6ZT1cInNtYWxsXCIgKm5nSWY9XCJyZW1vdmVSdWxlU2V0XCIgKG9uQ2xpY2spPVwicmVtb3ZlUnVsZVNldCgpXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUFycm93SWNvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIGljb249XCJwaSBwaS1hbmdsZS1yaWdodFwiIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0XCI+PC9idXR0b24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeVJlbW92ZUJ1dHRvbj1cImxldCBydWxlOyBsZXQgcmVtb3ZlUnVsZT1yZW1vdmVSdWxlXCI+XHJcbiAgICAgICAgICAgIDx3LWJ1dHRvbiBjbGFzcz1cIlwiIGxhYmVsPVwiXCIgc2l6ZT1cInNtYWxsXCIgdHlwZT1cInRlcnRpYXJ5XCIgaWNvbj1cInBpIHBpLXRpbWVzXCIgKG9uQ2xpY2spPVwicmVtb3ZlUnVsZShydWxlKVwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeVN3aXRjaEdyb3VwPVwibGV0IHJ1bGVzZXQ7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicnVsZXNldFwiPlxyXG4gICAgICAgICAgICAgIDx3LXNlbGVjdC1idXR0b24gKm5nSWY9XCJmaWx0ZXJQYW5lbE9iamVjdC5hbGxvd0xvZ2ljYWxSdWxlXCIgW3N0YXRlT3B0aW9uc109XCJbe2xhYmVsOiAnQW5kJywgdmFsdWU6ICdhbmQnfSwge2xhYmVsOiAnT3InLCB2YWx1ZTogJ29yJ31dXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicnVsZXNldC5jb25kaXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUpPVwicnVsZXNldC5jb25kaXRpb24gPSAkZXZlbnRcIj5cclxuICAgICAgICAgICAgICA8L3ctc2VsZWN0LWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUVudGl0eT1cImxldCBydWxlOyBsZXQgZW50aXRpZXM9ZW50aXRpZXM7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8cC1kcm9wZG93biBjbGFzcz1cIm1yLTMgdy1lZGl0LXNlbGVjdC1zbWFsbFwiICpuZ0lmPVwiZmlsdGVyUGFuZWxPYmplY3QuZW5pdHlNb2RlXCIgYXBwZW5kVG89XCJib2R5XCIgW29wdGlvbnNdPVwiZW50aXRpZXNcIiBbKG5nTW9kZWwpXT1cInJ1bGUuZW50aXR5XCIgb3B0aW9uTGFiZWw9XCJuYW1lXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudCwgcnVsZSlcIj48L3AtZHJvcGRvd24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUZpZWxkPVwibGV0IHJ1bGU7IGxldCBmaWVsZHM9ZmllbGRzOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2U7IGxldCBnZXRGaWVsZHMgPSBnZXRGaWVsZHNcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxdWVyeS1idWlsZGVyLWZpZWxkLXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPHAtZHJvcGRvd24gY2xhc3M9XCJtci0zIHctZWRpdC1zZWxlY3Qtc21hbGxcIiBhcHBlbmRUbz1cImJvZHlcIiBbb3B0aW9uc109XCJnZXRGaWVsZHMocnVsZS5lbnRpdHkpXCIgWyhuZ01vZGVsKV09XCJydWxlLmZpZWxkXCIgb3B0aW9uTGFiZWw9XCJuYW1lXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudCwgcnVsZSlcIj48L3AtZHJvcGRvd24+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5T3BlcmF0b3I9XCJsZXQgcnVsZTsgbGV0IG9wZXJhdG9ycz1vcGVyYXRvcnM7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInF1ZXJ5LWJ1aWxkZXItb3BlcmF0b3Itd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8cC1kcm9wZG93biBjbGFzcz1cIm1yLTMgdy1lZGl0LXNlbGVjdC1zbWFsbFwiIGFwcGVuZFRvPVwiYm9keVwiIFsobmdNb2RlbCldPVwicnVsZS5vcGVyYXRvclwiIFtvcHRpb25zXT1cIm9wZXJhdG9yc1wiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKHJ1bGUpXCI+PC9wLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLkJvb2xlYW4udG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDx3LXRvZ2dsZS1idXR0b24gY2xhc3M9XCJtci0zXCIgc2l6ZT1cInNtYWxsXCIgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgb25MYWJlbD1cIlRydWVcIiBvZmZMYWJlbD1cIkZhbHNlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoKVwiPjwvdy10b2dnbGUtYnV0dG9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5EYXRldGltZS50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPHctZWRpdC1jYWxlbmRhciBjbGFzcz1cImZpZWxkLWdhcFwiIGFwcGVuZFRvPVwiYm9keVwiIHNpemU9XCJzbWFsbFwiIFtzaG93SWNvbl09XCJmYWxzZVwiIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIChvbkNoYW5nZSk9XCJvbkNoYW5nZSgpXCIgW3Nob3dUaW1lXT1cInRydWVcIiBbc2hvd1NlY29uZHNdPVwidHJ1ZVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLmRhdGV0aW1lXCIgW2Rpc3BsYXlJbmxpbmVCbG9ja109XCJ0cnVlXCI+PC93LWVkaXQtY2FsZW5kYXI+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgbGV0IGZpZWxkPWZpZWxkOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5EZWNpbWFsLnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8cC1pbnB1dE51bWJlciBjbGFzcz1cIm1yLTNcIiBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiBpbnB1dElkPVwibWlubWF4XCIgaW5wdXRJZD1cIm1pbm1heFwiIG1vZGU9XCJkZWNpbWFsXCIgW21pbkZyYWN0aW9uRGlnaXRzXT1cIjJcIiBbbWF4RnJhY3Rpb25EaWdpdHNdPVwiNVwiIFttaW5dPVwiMFwiIFttYXhdPVwiMTAwXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoKVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLmRlY2ltYWxcIj4gPC9wLWlucHV0TnVtYmVyPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IGxldCBvcHRpb25zPW9wdGlvbnM7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLkxpc3QudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXVlcnktYnVpbGRlci1pbnB1dC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDx3LWxpc3QtZmllbGQgW29wdGlvbnNdPVwib3B0aW9uc1wiIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIFtvcGVyYXRvcl09XCJydWxlLm9wZXJhdG9yXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoKVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLmxpc3RcIj48L3ctbGlzdC1maWVsZD5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgZmllbGQ9ZmllbGQ7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLk51bWJlci50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPHAtaW5wdXROdW1iZXIgW3VzZUdyb3VwaW5nXT1cImZhbHNlXCIgaW5wdXRTdHlsZUNsYXNzPVwiZmxleCBmbGV4LTFcIiBzdHlsZUNsYXNzPVwiZmxleCBmbGV4LTFcIiBjbGFzcz1cImZpZWxkLWdhcCB3LWVkaXQtaW5wdXQtbnVtYmVyLXNtYWxsIHctZWRpdC1pbnB1dC1udW1iZXItc21hbGwtaGVpZ2h0XCIgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgaW5wdXRJZD1cIm1pbm1heFwiIGlucHV0SWQ9XCJtaW5tYXhcIiBbbWluXT1cIjBcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMubnVtYmVyXCI+IDwvcC1pbnB1dE51bWJlcj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgZmllbGQ9ZmllbGQ7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLlRleHQudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cIm1yLTMgcXVlcnktYnVpbGRlci1pbnB1dC13aWR0aCB3LWVkaXQtaW5wdXQtdGV4dC1zbWFsbC1oZWlnaHQgd2FwcC1pbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMudGV4dFwiLz5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8L3F1ZXJ5LWJ1aWxkZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0FkdmFuY2VkU2VhcmNoICYmIGdyb3VwZWRRdWVyeS5ydWxlcy5sZW5ndGg9PTBcIiA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9RdWVyeURhdGFcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI25vUXVlcnlEYXRhPlxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LXdyYXAgY2FyZC1jb250YWluZXIgc3VyZmFjZS01MCBtYi0zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHctZnVsbCBoLTRyZW0gdGV4dC1ncmF5LTkwMCBib3JkZXItcm91bmQgbS0yXCI+XHJcbiAgICAgICAge3t0cmFuc2xhdGlvbnNPYmplY3Qubm9SdWxlc0xhYmVsfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
|
575
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidy1maWx0ZXItcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2FwcC1jb21wb25lbnRzL3NyYy9saWIvbWlzYy93LWZpbHRlci1wYW5lbC93LWZpbHRlci1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93YXBwLWNvbXBvbmVudHMvc3JjL2xpYi9taXNjL3ctZmlsdGVyLXBhbmVsL3ctZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUkvRSxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLHNEQUFzRCxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBWXJHLE1BQU0sT0FBTyxxQkFBcUI7SUFzRmhDLFlBQ1UsV0FBd0IsRUFDeEIsVUFBc0IsRUFDdEIsY0FBcUM7UUFGckMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFyRnhDLDhCQUF5QixHQUFZLEtBQUssQ0FBQztRQUVsRCxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ2xDLG1CQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ2hDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUc1QyxlQUFVLEdBQVE7WUFDaEIsU0FBUyxFQUFFLEtBQUs7WUFDaEIsS0FBSyxFQUFFLEVBQUU7U0FDVixDQUFDO1FBQ0YsaUJBQVksR0FBUTtZQUNsQixTQUFTLEVB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LEtBQUs7dUJBQUMsMkJBQTJCO2dCQUNmLFFBQVE7c0JBQTFCLEtBQUs7dUJBQUMsVUFBVTtnQkFFWSxrQkFBa0I7c0JBQTlDLEtBQUs7dUJBQUMsb0JBQW9CO2dCQXNDRixhQUFhO3NCQUFyQyxNQUFNO3VCQUFDLGVBQWU7Z0JBQ0MsWUFBWTtzQkFBbkMsTUFBTTt1QkFBQyxjQUFjO2dCQUNELFNBQVM7c0JBQTdCLE1BQU07dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBPcGVyYXRvckVudW0sIFFCRGF0YVR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9lbnVtcy5tb2RlbCc7XHJcbmltcG9ydCB7IFFiUGFuZWxGaWx0ZXIgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL2ZpbHRlci1wYW5lbC9xYi1wYW5lbC1maWx0ZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBFbnRpdHksIEVudGl0eU1hcCwgRmllbGQsIEZpZWxkTWFwLCBRdWVyeUJ1aWxkZXJDb25maWcsIFJ1bGUsIFJ1bGVTZXQgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL2ZpbHRlci1wYW5lbC9maWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IEZpbHRlclBhbmVsVHJhbnNsYXRpb25zIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9maWx0ZXItcGFuZWwvZmlsdGVyLXBhbmVsLXRyYW5zbGF0aW9ucy5tb2RlbCc7XHJcbmltcG9ydCB7IFF1ZXJ5UmVzdWx0VHlwZSwgUXVlcnlSZXN1bHRzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9maWx0ZXItcGFuZWwvcXVlcnktcmVzdWx0cy5tb2RlbCc7XHJcbmltcG9ydCB7IEZpbHRlckZpZWxkIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9maWx0ZXItcGFuZWwvZmlsdGVyLWZpZWxkLm1vZGVscyc7XHJcbmltcG9ydCB7IFFiRmlsdGVyRW50aXR5IH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9maWx0ZXItcGFuZWwvcWItZmlsdGVyLWVudGl0eS5tb2RlbCc7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZS9hcGkvYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdG9yZWRGaWx0ZXJQYW5lbFF1ZXJ5IH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9zdG9yZWQtZmlsdGVyLXBhbmVsLXF1ZXJ5Lm1vZGVsJztcclxuaW1wb3J0IHsgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2VzL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndy1maWx0ZXItcGFuZWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93LWZpbHRlci1wYW5lbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdy1maWx0ZXItcGFuZWwuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgV0ZpbHRlclBhbmVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBwdWJsaWMgcXVlcnlDdHJsITogRm9ybUNvbnRyb2w7XHJcbiAgcHVibGljIGFkdmFuY2VkUXVlcnlDdHJsITogRm9ybUNvbnRyb2w7XHJcbiAgcHVibGljIGdyb3VwZWRRdWVyeUN0cmwhOiBGb3JtQ29udHJvbDtcclxuICBwdWJsaWMgcGVyc2lzdFZhbHVlT25GaWVsZENoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG4gIHF1ZXJ5Q29uZmlnUmVhZHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0FkdmFuY2VkU2VhcmNoOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcWJEYXRhVHlwZUVudW0gPSBRQkRhdGFUeXBlRW51bTtcclxuICBxYkRhdGFFbnVtcyA9IE9iamVjdC52YWx1ZXMoUUJEYXRhVHlwZUVudW0pO1xyXG4gIGJhc2ljUXVlcnlDb25maWchOiBhbnk7XHJcbiAgYWR2YW5jZWRRdWVyeUNvbmZpZyE6IGFueTtcclxuICBiYXNpY1F1ZXJ5OiBhbnkgPSB7XHJcbiAgICBjb25kaXRpb246ICdhbmQnLFxyXG4gICAgcnVsZXM6IFtdXHJcbiAgfTtcclxuICBncm91cGVkUXVlcnk6IGFueSA9IHtcclxuICAgIGNvbmRpdGlvbjogJ2FuZCcsXHJcbiAgICBydWxlczogW11cclxuICB9O1xyXG4gIGFkdmFuY2VkUXVlcnk6IGFueSA9IHtcclxuICAgIGNvbmRpdGlvbjogJ2FuZCcsXHJcbiAgICBydWxlczogW11cclxuICB9O1xyXG4gIGZpbHRlclBhbmVsT2JqZWN0ITogUWJQYW5lbEZpbHRlcjtcclxuICBlbnRpdHlDb25maWdHcm91cGVkOiBRdWVyeUJ1aWxkZXJDb25maWcgPSB7IGZpZWxkczoge30gfTtcclxuICBlbnRpdGllczogYW55W10gPSBbXTtcclxuICBkZWZhdWx0VmFsdWVzOiBhbnlbXSA9IFtdO1xyXG4gIGRlZmF1bHRPcGVyYXRvcnM6IGFueVtdID0gW107XHJcbiAgc3RvcmVkUXVlcnkhOiBTdG9yZWRGaWx0ZXJQYW5lbFF1ZXJ5O1xyXG4gIHBhcmVudFJvdXRlITogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoJ2FwaVVybCcpIGF1dGhvcml6YXRpb25BcGlVcmwhOiBzdHJpbmc7XHJcbiAgQElucHV0KCdjb21tb25EYXRhQXBpVXJsJykgY29tbW9uRGF0YUFwaVVybCE6IHN0cmluZztcclxuICBASW5wdXQoJ3NlZ21lbnRhdGlvbkFwaVVybCcpIHNlZ21lbnRhdGlvbkFwaVVybCE6IHN0cmluZztcclxuICBASW5wdXQoJ3Rva2VuJykgdG9rZW4hOiBzdHJpbmc7XHJcbiAgQElucHV0KCdjb21tb25EYXRhVG9rZW4nKSBjb21tb25EYXRhVG9rZW4hOiBzdHJpbmc7XHJcbiAgQElucHV0KCdzZWdtZW50YXRpb25Ub2tlbicpIHNlZ21lbnRhdGlvblRva2VuITogc3RyaW5nO1xyXG4gIEBJbnB1dCgnZmlsdGVySWQnKSBmaWx0ZXJJZCE6IHN0cmluZztcclxuICBASW5wdXQoJ2RhdGFJc0xvYWRpbmdTZWFyY2hCdXR0b24nKSBkYXRhSXNMb2FkaW5nU2VhcmNoQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCd0ZW5hbnRJZCcpIHRlbmFudElkITogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoJ3RyYW5zbGF0aW9uc09iamVjdCcpIHRyYW5zbGF0aW9uc09iamVjdDogRmlsdGVyUGFuZWxUcmFuc2xhdGlvbnMgPSB7XHJcbiAgICBiYXNpY1NlYXJjaFRhYkxhYmVsOiAnQmFzaWMgc2VhcmNoJyxcclxuICAgIGFkdmFuY2VkU2VhcmNoVGFiTGFiZWw6ICdBZHZhbmNlZCBzZWFyY2gnLFxyXG4gICAgZ3JvdXBlZEZpbHRlclRpdGxlOiAnR3JvdXBlZCBmaWx0ZXInLFxyXG4gICAgYWR2YW5jZWRTZWFyY2g6IHtcclxuICAgICAgYW5kQnV0dG9uTGFiZWw6ICdBbmQnLFxyXG4gICAgICBvckJ1dHRvbkxhYmVsOiAnT3InLFxyXG4gICAgICBhZGRSdWxlQnV0dG9uTGFiZWw6ICdBZGQgZmlsdGVyJyxcclxuICAgICAgYWRkUnVsZVNldEJ1dHRvbkxhYmVsOiAnQWRkIGZpbHRlciBzZXQnLFxyXG4gICAgICByZW1vdmVSdWxlU2V0QnV0dG9uTGFiZWw6ICdSZW1vdmUgcnVsZSBzZXQnXHJcbiAgICB9LFxyXG4gICAgbm9SdWxlc0xhYmVsOiAnQWRkIGZpbHRlciBvciBmaWx0ZXIgc2V0IHRvIHN0YXJ0JyxcclxuICAgIHNlYXJjaEJ1dHRvbkxhYmVsOiAnQ2xlYXInLFxyXG4gICAgY2xlYXJCdXR0b25MYWJlbDogJ0NsZWFyJyxcclxuICAgIGZpZWxkc1BsYWNlaG9sZGVyczoge1xyXG4gICAgICBib29sZWFuOiB7XHJcbiAgICAgICAgICB0cnVlOiAnVHJ1ZScsXHJcbiAgICAgICAgICBmYWxzZTogJ0ZhbHNlJ1xyXG4gICAgICB9LFxyXG4gICAgICBkZWNpbWFsOiAnSW5zZXJ0IGRlY2ltYWwgbnVtYmVyJyxcclxuICAgICAgbGlzdDogJ1NlbGVjdCBhbiBvcHRpb24nLFxyXG4gICAgICBudW1iZXI6ICdJbnNlcnQgYSBudW1iZXInLFxyXG4gICAgICB0ZXh0OiAnSW5zZXJ0IHRleHQnLFxyXG4gICAgICBkYXRldGltZTogJ1NlbGVjdCBhIGRhdGUnXHJcbiAgICB9LFxyXG4gICAgZmlyc3REYXlPZldlZWs6IDAsXHJcbiAgICBvcGVyYXRvcnM6IHtcclxuICAgICAgY29udGFpbnM6J2NvbnRhaW5zJ1xyXG4gICAgfSxcclxuICAgIGZpZWxkczoge1xyXG4gICAgICBJZGxlRGVhZGxpbmU6ICdJZCcsXHJcbiAgICAgIG5hbWU6ICdOYW1lJyxcclxuICAgICAgY29kZTogJ0NvZGUnLFxyXG4gICAgICBkZWxldGU6ICdEZWxldGVkJyxcclxuICAgICAgY291bnRyeTogJ0NvdW50cnknXHJcbiAgICB9XHJcbiAgfTtcclxuICBcclxuICBAT3V0cHV0KCdzZWFyY2hDbGlja2VkJykgc2VhcmNoQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8UXVlcnlSZXN1bHRzPigpO1xyXG4gIEBPdXRwdXQoJ2NsZWFyQ2xpY2tlZCcpIGNsZWFyQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBAT3V0cHV0KCdsYXN0UXVlcnknKSBsYXN0UXVlcnkgPSBuZXcgRXZlbnRFbWl0dGVyPFF1ZXJ5UmVzdWx0cz4oKTtcclxuICBcclxuICBzdGF0ZU9wdGlvbnM6IGFueVtdID0gW3sgbGFiZWw6IHRoaXMudHJhbnNsYXRpb25zT2JqZWN0LmFkdmFuY2VkU2VhcmNoLmFuZEJ1dHRvbkxhYmVsLCB2YWx1ZTogJ2FuZCcgfSwgeyBsYWJlbDogdGhpcy50cmFuc2xhdGlvbnNPYmplY3QuYWR2YW5jZWRTZWFyY2gub3JCdXR0b25MYWJlbCwgdmFsdWU6ICdvcicgfV07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsIFxyXG4gICAgcHJpdmF0ZSBhcGlTZXJ2aWNlOiBBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzZXNzaW9uU3RvcmFnZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmlzQWR2YW5jZWRTZWFyY2ggPSB0aGlzLnNlc3Npb25TdG9yYWdlLmdldExhc3RGaWx0ZXJQYW5lbFF1ZXJ5KHRoaXMudGVuYW50SWQsIHRoaXMuZmlsdGVySWQpPy5hZHZhbmNlZFF1ZXJ5VmFsdWUgPyB0cnVlIDogZmFsc2U7XHJcbiAgICBpZigodGhpcy5zdG9yZWRRdWVyeT8uYWR2YW5jZWRRdWVyeVZhbHVlICYmIHRoaXMuc3RvcmVkUXVlcnk/LmFkdmFuY2VkUXVlcnlWYWx1ZS5ydWxlcy5sZW5ndGggPT0gMCkgfHwgICh0aGlzLnN0b3JlZFF1ZXJ5Py5iYXNpY1F1ZXJ5VmFsdWUgJiYgdGhpcy5zdG9yZWRRdWVyeT8uYmFzaWNRdWVyeVZhbHVlLnJ1bGVzLmxlbmd0aCA9PSAwKSkge1xyXG4gICAgICAvL0RvIG5vdGhpbmdcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc3RvcmVkUXVlcnk9IHRoaXMuc2Vzc2lvblN0b3JhZ2UuZ2V0TGFzdEZpbHRlclBhbmVsUXVlcnkodGhpcy50ZW5hbnRJZCwgdGhpcy5maWx0ZXJJZClcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0UXVlcnlCdWlsZGVyRmlsdGVyUGFuZWwoKTtcclxuICB9XHJcbiAgXHJcbiAgaW5pdFF1ZXJ5QnVpbGRlckNvbnRyb2xzKCkge1xyXG4gICAgdGhpcy5xdWVyeUN0cmwgPSB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wodGhpcy5iYXNpY1F1ZXJ5KTtcclxuICAgIHRoaXMuYWR2YW5jZWRRdWVyeUN0cmwgPSB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wodGhpcy5hZHZhbmNlZFF1ZXJ5KTtcclxuICAgIGlmKHRoaXMuZmlsdGVyUGFuZWxPYmplY3QuYWxsb3dHcm91cGVkKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXBlZFF1ZXJ5Q3RybCA9IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbCh0aGlzLmdyb3VwZWRRdWVyeSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmKCh0aGlzLnN0b3JlZFF1ZXJ5Py5hZHZhbmNlZFF1ZXJ5VmFsdWUgJiYgdGhpcy5zdG9yZWRRdWVyeT8uYWR2YW5jZWRRdWVyeVZhbHVlLnJ1bGVzLmxlbmd0aCA9PSAwKSB8fCAgKHRoaXMuc3RvcmVkUXVlcnk/LmJhc2ljUXVlcnlWYWx1ZSAmJiB0aGlzLnN0b3JlZFF1ZXJ5Py5iYXNpY1F1ZXJ5VmFsdWUucnVsZXMubGVuZ3RoID09IDApKSB7XHJcbiAgICAgIC8vRG8gbm90aGluZ1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGxhc3RRdWVyeTogUXVlcnlSZXN1bHRzID0ge1xyXG4gICAgICAgIHR5cGU6IHRoaXMuZ2V0UXVlcnlUeXBlKCksXHJcbiAgICAgICAgYmFzaWM6IHRoaXMuc3RvcmVkUXVlcnk/LmJhc2ljUXVlcnlWYWx1ZSA/IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuc3RvcmVkUXVlcnk/LmJhc2ljUXVlcnlWYWx1ZSkgOiBudWxsLFxyXG4gICAgICAgIGFkdmFuY2VkOiB0aGlzLnN0b3JlZFF1ZXJ5Py5hZHZhbmNlZFF1ZXJ5VmFsdWUgPyBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnN0b3JlZFF1ZXJ5Py5hZHZhbmNlZFF1ZXJ5VmFsdWUpIDogbnVsbCxcclxuICAgICAgICBncm91cGVkOiB0aGlzLmlzQWR2YW5jZWRTZWFyY2ggJiYgdGhpcy5maWx0ZXJQYW5lbE9iamVjdC5hbGxvd0dyb3VwZWQgJiYgdGhpcy5ncm91cGVkUXVlcnlDdHJsID8gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5ncm91cGVkUXVlcnlDdHJsPy52YWx1ZSkgOiBudWxsXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc3RvcmVkUXVlcnkuYmFzaWNRdWVyeVZhbHVlID8gXHJcbiAgICAgICAgdGhpcy5zdG9yZWRRdWVyeS5iYXNpY1F1ZXJ5VmFsdWUgPSB0aGlzLnN0cmluZ0RhdGVQYXJzZSh0aGlzLnN0b3JlZFF1ZXJ5LmJhc2ljUXVlcnlWYWx1ZSkgOlxyXG4gICAgICAgIHRoaXMuc3RvcmVkUXVlcnkuYWR2YW5jZWRRdWVyeVZhbHVlID0gdGhpcy5zdHJpbmdEYXRlUGFyc2UodGhpcy5zdG9yZWRRdWVyeS5hZHZhbmNlZFF1ZXJ5VmFsdWUpO1xyXG5cclxuXHJcbiAgICAgICAgdGhpcy5zZXROb0ZpbHRlcnNRdWVyeVR5cGUobGFzdFF1ZXJ5KVxyXG4gICAgICAgIC50aGVuKChyZXNRdWVyaWVzOmFueSkgPT4ge1xyXG4gICAgICAgICAgaWYocmVzUXVlcmllcy50eXBlICE9IDApe1xyXG4gICAgICAgICAgICB0aGlzLmludmVyc2VOdWxsYWJsZUZpbHRlck9wZXJhdGlvbkhhbmRsZShsYXN0UXVlcnkuYmFzaWMgPyBsYXN0UXVlcnkuYmFzaWMgOiBsYXN0UXVlcnkuYWR2YW5jZWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pLnRoZW4oKHJlcykgPT4ge1xyXG4gICAgICAgICAgbGFzdFF1ZXJ5ID0gdGhpcy5kZWxldGVGaWVsZHNXaXRob3V0VmFsdWUobGFzdFF1ZXJ5KTtcclxuICAgICAgICAgIGxhc3RRdWVyeSA9IHRoaXMuaGFuZGxlRW1wdHlGaWVsZHNRdWVyeShsYXN0UXVlcnkpO1xyXG4gICAgICAgICAgdGhpcy5udWxsYWJsZUZpbHRlck9wZXJhdGlvbkhhbmRsZVByb21pc2UobGFzdFF1ZXJ5KVxyXG4gICAgICAgICAgICAudGhlbigocmVzID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmxhc3RRdWVyeS5lbWl0KGxhc3RRdWVyeSk7XHJcbiAgICAgICAgICAgIH0pKVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL0RldGVjdGEgbGFzIGZlY2hhcyBlbiBzdHJpbmcgeSBsYXMgY29udmllcnRlIGEgRGF0ZVxyXG4gIHN0cmluZ0RhdGVQYXJzZShxdWVyeTogYW55KSB7XHJcbiAgICBjb25zdCBkYXRlRm9ybWF0UmVnRXhwID0gL15cXGR7NH0tXFxkezJ9LVxcZHsyfVRcXGR7Mn06XFxkezJ9OlxcZHsyfS5cXGR7M31aPyQvO1xyXG5cclxuICAgIGNvbnN0IGRhdGVzSW5kZXhlczogbnVtYmVyW10gPSBxdWVyeS5ydWxlc1xyXG4gICAgICAgICAgICAgICAgICAubWFwKChydWxlOiBhbnksIGluZGV4Om51bWJlcikgPT4gKGRhdGVGb3JtYXRSZWdFeHAudGVzdChydWxlLnZhbHVlKSA/IGluZGV4IDogLTEpKVxyXG4gICAgICAgICAgICAgICAgICAuZmlsdGVyKChpbmRleDpudW1iZXIpID0+IGluZGV4ICE9PSAtMSk7XHJcblxyXG4gICAgICBkYXRlc0luZGV4ZXMuZm9yRWFjaChkYXRlSW5kZXggPT4ge1xyXG4gICAgICAgIHF1ZXJ5LnJ1bGVzW2RhdGVJbmRleF0udmFsdWUgPSBuZXcgRGF0ZShxdWVyeS5ydWxlc1tkYXRlSW5kZXhdLnZhbHVlKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBxdWVyeTtcclxuICB9XHJcblxyXG4gIGRhdGVzVG9Mb2NhbGVTdHJpbmcocXVlcnk6IGFueSkge1xyXG4gICAgaWYgKFwicnVsZXNcIiBpbiBxdWVyeSkge1xyXG4gICAgICBxdWVyeS5ydWxlcy5mb3JFYWNoKChydWxlOiBSdWxlU2V0IHwgUnVsZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0ZXNUb0xvY2FsZVN0cmluZyhydWxlKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAocXVlcnkudmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XHJcbiAgICAgICAgbGV0IGRhdGUgPSBxdWVyeS52YWx1ZTtcclxuXHJcbiAgICAgICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgICBjb25zdCBtb250aCA9ICgnMCcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkpLnNsaWNlKC0yKTtcclxuICAgICAgICBjb25zdCBkYXkgPSAoJzAnICsgZGF0ZS5nZXREYXRlKCkpLnNsaWNlKC0yKTtcclxuICAgICAgICBjb25zdCBob3VyID0gKCcwJyArIGRhdGUuZ2V0SG91cnMoKSkuc2xpY2UoLTIpO1xyXG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSAoJzAnICsgZGF0ZS5nZXRNaW51dGVzKCkpLnNsaWNlKC0yKTtcclxuICAgICAgICBjb25zdCBzZWNvbmRzID0gKCcwJyArIGRhdGUuZ2V0U2Vjb25kcygpKS5zbGljZSgtMik7XHJcblxyXG4gICAgICAgIHF1ZXJ5LnZhbHVlID0gYCR7eWVhcn0tJHttb250aH0tJHtkYXl9VCR7aG91cn06JHttaW51dGVzfToke3NlY29uZHN9LjAwMFpgO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIHNldEVtdHB5QXJyYXlzVG9OdWxsKHF1ZXJ5OiBhbnkpIHtcclxuICAgIGlmIChcInJ1bGVzXCIgaW4gcXVlcnkpIHtcclxuICAgICAgcXVlcnkucnVsZXMuZm9yRWFjaCgocnVsZTogUnVsZVNldCB8IFJ1bGUpID0+IHtcclxuICAgICAgICB0aGlzLnNldEVtdHB5QXJyYXlzVG9OdWxsKHJ1bGUpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChxdWVyeS52YWx1ZSBpbnN0YW5jZW9mIEFycmF5ICYmIHF1ZXJ5LnZhbHVlLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgcXVlcnkudmFsdWUgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTZWFyY2hUeXBlKCkge1xyXG4gICAgdGhpcy5pc0FkdmFuY2VkU2VhcmNoID0gIXRoaXMuaXNBZHZhbmNlZFNlYXJjaDtcclxuICB9XHJcblxyXG4gIG9uU2VhcmNoQ2xpY2tlZCgpIHtcclxuICAgIGxldCBxdWVyaWVzOiBRdWVyeVJlc3VsdHMgPSB7XHJcbiAgICAgIHR5cGU6IHRoaXMuZ2V0UXVlcnlUeXBlKCksXHJcbiAgICAgIGJhc2ljOiB0aGlzLmlzQWR2YW5jZWRTZWFyY2ggPyBudWxsIDogT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5xdWVyeUN0cmwudmFsdWUpLFxyXG4gICAgICBhZHZhbmNlZDogdGhpcy5pc0FkdmFuY2VkU2VhcmNoID8gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5hZHZhbmNlZFF1ZXJ5Q3RybC52YWx1ZSkgOiBudWxsLFxyXG4gICAgICBncm91cGVkOiB0aGlzLmlzQWR2YW5jZWRTZWFyY2ggJiYgdGhpcy5maWx0ZXJQYW5lbE9iamVjdC5hbGxvd0dyb3VwZWQgPyBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmdyb3VwZWRRdWVyeUN0cmwudmFsdWUpIDogbnVsbFxyXG4gICAgfVxyXG4gICAgXHJcbiAgICB0aGlzLnNldEVudGl0eShxdWVyaWVzKTtcclxuXHJcbiAgICBxdWVyaWVzID0gdGhpcy5pbml0aWFsaXplT3BlcmF0b3JzKHF1ZXJpZXMpO1xyXG4gICAgXHJcbiAgICB0aGlzLnNldE5vRmlsdGVyc1F1ZXJ5VHlwZShxdWVyaWVzKS50aGVuKChyZXNRdWVyaWVzOmFueSkgPT4ge1xyXG4gICAgICBpZihyZXNRdWVyaWVzLnR5cGUgIT0gMCl7XHJcbiAgICAgICAgdGhpcy5udWxsYWJsZUZpbHRlck9wZXJhdGlvbkhhbmRsZShxdWVyaWVzLmJhc2ljID8gcXVlcmllcy5iYXNpYyA6IHF1ZXJpZXMuYWR2YW5jZWQpO1xyXG4gICAgICB9XHJcbiAgICB9KS50aGVuKChyZXNRdWVyaWVzOmFueSkgPT4ge1xyXG4gICAgICBsZXQgc3RvcmVkUXVlcnk6IFN0b3JlZEZpbHRlclBhbmVsUXVlcnkgPSB7XHJcbiAgICAgICAgaWQ6IHRoaXMuZmlsdGVySWQsXHJcbiAgICAgICAgYmFzaWNRdWVyeVZhbHVlOiBxdWVyaWVzLmJhc2ljLFxyXG4gICAgICAgIGFkdmFuY2VkUXVlcnlWYWx1ZTogcXVlcmllcy5hZHZhbmNlZCxcclxuICAgICAgICBncm91cGVkUXVlcnlWYWx1ZTogcXVlcmllcy5ncm91cGVkXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5kYXRlc1RvTG9jYWxlU3RyaW5nKHF1ZXJpZXMuYmFzaWMgPyBxdWVyaWVzLmJhc2ljIDogcXVlcmllcy5hZHZhbmNlZCk7XHJcbiAgICAgIHRoaXMuc2V0RW10cHlBcnJheXNUb051bGwocXVlcmllcy5iYXNpYyA/IHF1ZXJpZXMuYmFzaWMgOiBxdWVyaWVzLmFkdmFuY2VkKTtcclxuICAgICAgdGhpcy5zZXNzaW9uU3RvcmFnZS5zZXRMYXN0RmlsdGVyUGFuZWxRdWVyeSh0aGlzLnRlbmFudElkLCBzdG9yZWRRdWVyeSk7XHJcbiAgICB9KS50aGVuKChyZXNRdWVyaWVzOiBhbnkpID0+IHtcclxuICAgICAgcXVlcmllcyA9IHRoaXMuZGVsZXRlRmllbGRzV2l0aG91dFZhbHVlKHF1ZXJpZXMpO1xyXG4gICAgICBxdWVyaWVzID0gdGhpcy5oYW5kbGVFbXB0eUZpZWxkc1F1ZXJ5KHF1ZXJpZXMpO1xyXG4gICAgICB0aGlzLnNlYXJjaENsaWNrZWQuZW1pdChxdWVyaWVzKTtcclxuICAgIH0pLnRoZW4oKHJlc1F1ZXJpZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmludmVyc2VOdWxsYWJsZUZpbHRlck9wZXJhdGlvbkhhbmRsZShxdWVyaWVzLmJhc2ljID8/IHF1ZXJpZXMuYWR2YW5jZWQpXHJcbiAgICB9KVxyXG4gICAgLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgZW4gbGEgcHJvbWVzYTpcIiwgZXJyb3IpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXROb0ZpbHRlcnNRdWVyeVR5cGUocXVlcmllczphbnkpIHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIHF1ZXJpZXMgPSB0aGlzLmhhbmRsZUVtcHR5RmllbGRzUXVlcnkocXVlcmllcyk7XHJcbiAgICAgICAgcmVzb2x2ZShxdWVyaWVzKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbnVsbGFibGVGaWx0ZXJPcGVyYXRpb25IYW5kbGVQcm9taXNlKHF1ZXJ5OmFueSkge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgdGhpcy5udWxsYWJsZUZpbHRlck9wZXJhdGlvbkhhbmRsZShxdWVyeSk7XHJcbiAgICAgICAgcmVzb2x2ZShxdWVyeSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2xlYXJDbGlja2VkKCkge1xyXG4gICAgdGhpcy5yZXNldEJhc2ljUXVlcnlWYWx1ZXMoKTtcclxuICAgIHRoaXMuYWR2YW5jZWRRdWVyeS5ydWxlcyA9IFtdO1xyXG4gICAgdGhpcy5ncm91cGVkUXVlcnkucnVsZXMgPSBbXTtcclxuICAgIHRoaXMuc2Vzc2lvblN0b3JhZ2UucmVtb3ZlTGFzdEZpbHRlclBhbmVsUXVlcnkodGhpcy50ZW5hbnRJZCwgdGhpcy5maWx0ZXJJZCk7XHJcbiAgICB0aGlzLmNsZWFyQ2xpY2tlZC5lbWl0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRW1wdHlGaWVsZHNRdWVyeShxdWVyaWVzOiBRdWVyeVJlc3VsdHMpOiBRdWVyeVJlc3VsdHMge1xyXG4gICAgaWYocXVlcmllcy5hZHZhbmNlZCAhPSBudWxsICYmIHF1ZXJpZXMuYWR2YW5jZWQ/LnJ1bGVzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHF1ZXJpZXMudHlwZSA9IDBcclxuICAgIH1cclxuICAgIGlmKHF1ZXJpZXMuYmFzaWMgIT0gbnVsbCAmJiBxdWVyaWVzLmJhc2ljPy5ydWxlcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICBxdWVyaWVzLnR5cGUgPSAwXHJcbiAgICB9XHJcbiAgICBpZihxdWVyaWVzLmdyb3VwZWQgIT0gbnVsbCAmJiBxdWVyaWVzLmdyb3VwZWQ/LnJ1bGVzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHF1ZXJpZXMudHlwZSA9IDBcclxuICAgIH1cclxuICAgIHJldHVybiBxdWVyaWVzO1xyXG4gIH1cclxuXHJcbiAgbnVsbGFibGVGaWx0ZXJPcGVyYXRpb25IYW5kbGUocXVlcnk6IGFueSkge1xyXG4gICAgaWYgKFwicnVsZXNcIiBpbiBxdWVyeSkge1xyXG4gICAgICBxdWVyeS5ydWxlcy5mb3JFYWNoKChydWxlOiBSdWxlU2V0IHwgUnVsZSkgPT4ge1xyXG4gICAgICAgIHRoaXMubnVsbGFibGVGaWx0ZXJPcGVyYXRpb25IYW5kbGUocnVsZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHF1ZXJ5Lm9wZXJhdG9yID09PSBPcGVyYXRvckVudW0uTnVsbGFibGUgfHwgKChxdWVyeS5vcGVyYXRvciA9PSAnaXMnIHx8IHF1ZXJ5Lm9wZXJhdG9yID09ICdpcyBub3QnKSAmJiAocXVlcnkudmFsdWUgPT0gMSB8fCBxdWVyeS52YWx1ZSA9PSAwKSkpIHtcclxuICAgICAgICBpZihxdWVyeS52YWx1ZSA9PSAxKSB7XHJcbiAgICAgICAgICBxdWVyeS5vcGVyYXRvciA9ICdpcyBub3QnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihxdWVyeS52YWx1ZSA9PSAwKSB7XHJcbiAgICAgICAgICBxdWVyeS5vcGVyYXRvciA9ICdpcyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHF1ZXJ5LnZhbHVlID0gJ251bGwnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnZlcnNlTnVsbGFibGVGaWx0ZXJPcGVyYXRpb25IYW5kbGUocXVlcnk6IGFueSkge1xyXG4gICAgaWYgKFwicnVsZXNcIiBpbiBxdWVyeSkge1xyXG4gICAgICBxdWVyeS5ydWxlcy5mb3JFYWNoKChydWxlOiBSdWxlU2V0IHwgUnVsZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuaW52ZXJzZU51bGxhYmxlRmlsdGVyT3BlcmF0aW9uSGFuZGxlKHJ1bGUpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICgocXVlcnkub3BlcmF0b3IgPT0gJ2lzIG5vdCcgfHwgcXVlcnkub3BlcmF0b3IgPT0gJ2lzJykgJiYgcXVlcnkudmFsdWUgPT0gJ251bGwnKSB7XHJcbiAgICAgICAgaWYocXVlcnkub3BlcmF0b3IgPT0gJ2lzIG5vdCcpIHtcclxuICAgICAgICAgIHF1ZXJ5LnZhbHVlID0gMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYocXVlcnkub3BlcmF0b3IgPT0gJ2lzJykge1xyXG4gICAgICAgICAgcXVlcnkudmFsdWUgPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UXVlcnlUeXBlKCk6IFF1ZXJ5UmVzdWx0VHlwZSB7XHJcbiAgICBpZighdGhpcy5pc0FkdmFuY2VkU2VhcmNoKSB7XHJcbiAgICAgIHJldHVybiBRdWVyeVJlc3VsdFR5cGUuQmFzaWM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZih0aGlzLmlzQWR2YW5jZWRTZWFyY2ggJiYgdGhpcy5ncm91cGVkUXVlcnlDdHJsPy52YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiBRdWVyeVJlc3VsdFR5cGUuR3JvdXBlZFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBRdWVyeVJlc3VsdFR5cGUuQWR2YW5jZWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEVudGl0eShxdWVyaWVzOiBRdWVyeVJlc3VsdHMpIHtcclxuICAgIGlmKHRoaXMuZ2V0UXVlcnlUeXBlKCkgPT0gUXVlcnlSZXN1bHRUeXBlLkJhc2ljKSB7XHJcbiAgICAgIHF1ZXJpZXMuYmFzaWMhLnJ1bGVzID0gcXVlcmllcy5iYXNpYyEucnVsZXMubWFwKChyOmFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBmaWVsZDogci5maWVsZCxcclxuICAgICAgICAgIG9wZXJhdG9yOiByLm9wZXJhdG9yLFxyXG4gICAgICAgICAgdmFsdWU6IHIudmFsdWUsXHJcbiAgICAgICAgICBlbnRpdHk6IHRoaXMuZW50aXRpZXMuZmluZChlID0+IGUuZmllbGRKc29uTmFtZSA9PSByLmZpZWxkKS5lbnRpdHlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRRdWVyeUJ1aWxkZXJGaWx0ZXJQYW5lbCgpIHtcclxuICAgIHRoaXMuYXBpU2VydmljZS5nZXRGaWx0ZXJQYW5lbCh0aGlzLmF1dGhvcml6YXRpb25BcGlVcmwsIHRoaXMudG9rZW4sIHRoaXMuY29tbW9uRGF0YUFwaVVybCwgdGhpcy5jb21tb25EYXRhVG9rZW4sIHRoaXMuZmlsdGVySWQpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHFiUGFuZWxGaWx0ZXI6IFFiUGFuZWxGaWx0ZXIpID0+IHtcclxuICAgICAgICB0aGlzLmZpbHRlclBhbmVsT2JqZWN0ID0gcWJQYW5lbEZpbHRlcjtcclxuICAgICAgICBsZXQgYmFzaWNGaWx0ZXJJZHM6IG51bWJlcltdID0gcWJQYW5lbEZpbHRlci5xYnBhbmVsVG9GaWVsZHMuZmlsdGVyKHBhbmVsVG9GaWVsZCA9PiBwYW5lbFRvRmllbGQuYmFzaWMpLm1hcChwYW5lbFRvRmllbGQgPT4gcGFuZWxUb0ZpZWxkLnFiZmlsdGVyRmllbGRJZCk7XHJcbiAgICAgICAgbGV0IGFkdmFuY2VkRmlsdGVySWRzOiBudW1iZXJbXSA9IHFiUGFuZWxGaWx0ZXIucWJwYW5lbFRvRmllbGRzLmZpbHRlcihwYW5lbFRvRmllbGQgPT4gIXBhbmVsVG9GaWVsZC5iYXNpYykubWFwKHBhbmVsVG9GaWVsZCA9PiBwYW5lbFRvRmllbGQucWJmaWx0ZXJGaWVsZElkKTtcclxuICAgICAgICB0aGlzLmRlZmF1bHRWYWx1ZXMgPSBxYlBhbmVsRmlsdGVyLnFicGFuZWxUb0ZpZWxkcy5tYXAocGFuZWxUb0ZpZWxkID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHFiZmlsdGVyRmllbGRJZDogcGFuZWxUb0ZpZWxkLnFiZmlsdGVyRmllbGRJZCxcclxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBwYW5lbFRvRmllbGQuZGVmYXVsdFZhbHVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLmRlZmF1bHRPcGVyYXRvcnMgPSBxYlBhbmVsRmlsdGVyLnFicGFuZWxUb0ZpZWxkcy5tYXAocGFuZWxUb0ZpZWxkID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHFiZmlsdGVyRmllbGRJZDogcGFuZWxUb0ZpZWxkLnFiZmlsdGVyRmllbGRJZCxcclxuICAgICAgICAgICAgcWJkZWZhdWx0T3BlcmF0b3I6IHBhbmVsVG9GaWVsZC5xYmRlZmF1bHRPcGVyYXRvclxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgbGV0IGZpbHRlckVudGl0eTogUWJGaWx0ZXJFbnRpdHlbXSA9IHFiUGFuZWxGaWx0ZXIucWJwYW5lbFRvRmllbGRzLm1hcChwYW5lbFRvRmllbGQgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IHBhbmVsVG9GaWVsZC5xYmZpbHRlckZpZWxkLnFiZmlsdGVyRW50aXR5LmlkLCBcclxuICAgICAgICAgICAgYmFzaWM6IHBhbmVsVG9GaWVsZC5iYXNpYyxcclxuICAgICAgICAgICAgbmFtZTogcGFuZWxUb0ZpZWxkLnFiZmlsdGVyRmllbGQucWJmaWx0ZXJFbnRpdHkubmFtZSwgXHJcbiAgICAgICAgICAgIGpzb25OYW1lOiBwYW5lbFRvRmllbGQucWJmaWx0ZXJGaWVsZC5xYmZpbHRlckVudGl0eS5qc29uTmFtZSwgXHJcbiAgICAgICAgICAgIGZpZWxkczogW11cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgbGV0IGZpbHRlckZpZWxkczogRmlsdGVyRmllbGRbXSA9IHFiUGFuZWxGaWx0ZXIucWJwYW5lbFRvRmllbGRzLm1hcChwID0+IHAucWJmaWx0ZXJGaWVsZCk7XHJcbiAgICAgICAgZmlsdGVyRW50aXR5LmZvckVhY2goKGVudGl0eTogUWJGaWx0ZXJFbnRpdHksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICBsZXQgZmllbGRzID0gZmlsdGVyRmllbGRzLmZpbHRlcihlID0+IGUucWJmaWx0ZXJFbnRpdHkuaWQgPT0gZW50aXR5LmlkKTtcclxuICAgICAgICAgICBmaWx0ZXJFbnRpdHlbaW5kZXhdLmZpZWxkcyA9IGZpZWxkcyA7XHJcbiAgICAgICAgfSlcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLmJhc2ljUXVlcnlDb25maWcgPSB0aGlzLmluaXRRdWVyeUJ1aWxkZXIoZmlsdGVyRW50aXR5KTtcclxuICAgICAgICB0aGlzLmJhc2ljUXVlcnlDb25maWcgPSB0aGlzLmZpbHRlckZpZWxkc0J5SWQodGhpcy5iYXNpY1F1ZXJ5Q29uZmlnLCBiYXNpY0ZpbHRlcklkcyk7XHJcbiAgICAgICAgdGhpcy5iYXNpY1F1ZXJ5Q29uZmlnLmZpZWxkcyA9IHRoaXMudHJhbnNsYXRlRmllbGRzKHRoaXMuYmFzaWNRdWVyeUNvbmZpZy5maWVsZHMpO1xyXG4gICAgICAgIHRoaXMuYWR2YW5jZWRRdWVyeUNvbmZpZyA9IHRoaXMuaW5pdFF1ZXJ5QnVpbGRlcihmaWx0ZXJFbnRpdHkpO1xyXG4gICAgICAgIHRoaXMuYWR2YW5jZWRRdWVyeUNvbmZpZyA9IHRoaXMuZmlsdGVyRmllbGRzQnlJZCh0aGlzLmFkdmFuY2VkUXVlcnlDb25maWcsIGFkdmFuY2VkRmlsdGVySWRzKTtcclxuICAgICAgICB0aGlzLmFkdmFuY2VkUXVlcnlDb25maWcuZmllbGRzID0gdGhpcy50cmFuc2xhdGVGaWVsZHModGhpcy5hZHZhbmNlZFF1ZXJ5Q29uZmlnLmZpZWxkcyk7XHJcbiAgICAgICAgbGV0IHJ1bGVzID0gT2JqZWN0LmtleXModGhpcy5iYXNpY1F1ZXJ5Q29uZmlnLmZpZWxkcylcclxuICAgICAgICAgIC5tYXAoZmllbGRLZXkgPT4geyBcclxuICAgICAgICAgICAgbGV0IGRlZmF1bHRPcGVyYXRvciA9IHRoaXMuZGVmYXVsdE9wZXJhdG9ycy5maW5kKG9wZXJhdG9yID0+IG9wZXJhdG9yLnFiZmlsdGVyRmllbGRJZCA9PSB0aGlzLmJhc2ljUXVlcnlDb25maWcuZmllbGRzW2ZpZWxkS2V5XS5pZCAmJiBvcGVyYXRvci5xYmRlZmF1bHRPcGVyYXRvciAhPSBudWxsKTtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICBmaWVsZDogZmllbGRLZXksIFxyXG4gICAgICAgICAgICAgIHZhbHVlOiB0aGlzLmJhc2ljUXVlcnlDb25maWcuZmllbGRzW2ZpZWxkS2V5XS5kZWZhdWx0VmFsdWUhLFxyXG4gICAgICAgICAgICAgIG9wZXJhdG9yOiBkZWZhdWx0T3BlcmF0b3IgPyBkZWZhdWx0T3BlcmF0b3IucWJkZWZhdWx0T3BlcmF0b3Iuc3ltYm9sIDogbnVsbFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBpZih0aGlzLnN0b3JlZFF1ZXJ5ICYmIHRoaXMuc3RvcmVkUXVlcnk/LmlkID09IHRoaXMuZmlsdGVySWQgJiYgdGhpcy5zdG9yZWRRdWVyeT8uYmFzaWNRdWVyeVZhbHVlICYmIHRoaXMuc3RvcmVkUXVlcnk/LmJhc2ljUXVlcnlWYWx1ZS5ydWxlcy5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmJhc2ljUXVlcnkgPSB0aGlzLnN0b3JlZFF1ZXJ5LmJhc2ljUXVlcnlWYWx1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuYmFzaWNRdWVyeSA9IHtcclxuICAgICAgICAgICAgICBjb25kaXRpb246ICdhbmQnLFxyXG4gICAgICAgICAgICAgIHJ1bGVzOiBydWxlc1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYodGhpcy5zdG9yZWRRdWVyeSAmJiB0aGlzLnN0b3JlZFF1ZXJ5Py5pZCA9PSB0aGlzLmZpbHRlcklkICYmIHRoaXMuc3RvcmVkUXVlcnk/LmFkdmFuY2VkUXVlcnlWYWx1ZSAmJiB0aGlzLnN0b3JlZFF1ZXJ5Py5hZHZhbmNlZFF1ZXJ5VmFsdWUucnVsZXMubGVuZ3RoICE9IDApIHtcclxuICAgICAgICAgICAgdGhpcy5hZHZhbmNlZFF1ZXJ5ID0gdGhpcy5zdG9yZWRRdWVyeS5hZHZhbmNlZFF1ZXJ5VmFsdWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmFkdmFuY2VkUXVlcnkgPSB7XHJcbiAgICAgICAgICAgICAgY29uZGl0aW9uOiAnYW5kJyxcclxuICAgICAgICAgICAgICBydWxlczogW11cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5xdWVyeUNvbmZpZ1JlYWR5ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmluaXRRdWVyeUJ1aWxkZXJDb250cm9scygpO1xyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgaW5pdFF1ZXJ5QnVpbGRlcihmaWx0ZXJFbnRpdGllczogUWJGaWx0ZXJFbnRpdHlbXSkge1xyXG4gICAgbGV0IGVudGl0eUNvbmZpZ0F1eDogUXVlcnlCdWlsZGVyQ29uZmlnID0geyBmaWVsZHM6IHt9IH07XHJcbiAgICBsZXQgZW50aXRpZXNBcnJheTogRW50aXR5TWFwW10gPSBbXTtcclxuICAgIFxyXG4gICAgZmlsdGVyRW50aXRpZXMubWFwKChlLCBpbmRleCkgPT4ge1xyXG4gICAgICBsZXQgZW50aXR5OiBFbnRpdHkgPSB7IG5hbWU6IGUuanNvbk5hbWUgfTtcclxuICAgICAgcmV0dXJuIGVudGl0aWVzQXJyYXlbaW5kZXhdID0geyBbZS5qc29uTmFtZV06IGVudGl0eSB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IGVudGl0aWVzTWFwOiBFbnRpdHlNYXAgPSB7fTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGVudGl0eSBvZiBlbnRpdGllc0FycmF5KSB7XHJcbiAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhlbnRpdHkpO1xyXG5cclxuICAgICAga2V5cy5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgaWYodGhpcy50cmFuc2xhdGlvbnNPYmplY3QuZW50aXRpZXMpIHtcclxuICAgICAgICAgIGxldCBlbnRpdGllc1RyYW5zbGF0aW9uc0tleXMgPSBPYmplY3Qua2V5cyh0aGlzLnRyYW5zbGF0aW9uc09iamVjdC5lbnRpdGllcyk7XHJcbiAgICAgICAgICBsZXQgdHJhbnNsYXRpb24gPSBlbnRpdGllc1RyYW5zbGF0aW9uc0tleXMuZmluZCh0cmFuc2xhdGlvbktleSA9PiB0cmFuc2xhdGlvbktleSA9PSBrZXkpO1xyXG4gICAgICAgICAgaWYodHJhbnNsYXRpb24pIHtcclxuICAgICAgICAgICAgZW50aXRpZXNNYXBba2V5XSA9IHsgbmFtZTogdGhpcy50cmFuc2xhdGlvbnNPYmplY3QuZW50aXRpZXNba2V5XSB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBlbnRpdGllc01hcFtrZXldID0gZW50aXR5W2tleV1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZW50aXRpZXNNYXBba2V5XSA9IGVudGl0eVtrZXldXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGVudGl0eUNvbmZpZ0F1eC5lbnRpdGllcyA9IGVudGl0aWVzTWFwO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBmaWVsZHM6IEZpZWxkTWFwW10gPSBbXTtcclxuICAgIGZpbHRlckVudGl0aWVzLmZvckVhY2goKGZpbHRlckVudGl0eSkgPT4ge1xyXG4gICAgICByZXR1cm4gZmlsdGVyRW50aXR5LmZpZWxkcy5maWx0ZXIoKGZpbHRlckZpZWxkOiBGaWx0ZXJGaWVsZCkgPT4ge1xyXG4gICAgICAgIGxldCBpbmRleDogbnVtYmVyID0gZmllbGRzLmxlbmd0aCA/PyAwO1xyXG4gICAgICAgIGxldCBvcGVyYXRvcnNGbGF0QXJyYXkgPSBmaWx0ZXJGaWVsZC5vcGVyYXRvcnMubWFwKChvOmFueSkgPT4gby5zeW1ib2wpO1xyXG4gICAgICAgIGxldCBkZWZhdWx0T3BlcmF0b3IgPSB0aGlzLmRlZmF1bHRPcGVyYXRvcnMuZmluZChvcGVyYXRvciA9PiBvcGVyYXRvci5xYmZpbHRlckZpZWxkSWQgPT0gZmlsdGVyRmllbGQuaWQpO1xyXG4gICAgICAgIGxldCBmaWVsZDogRmllbGQgPSB7XHJcbiAgICAgICAgICBpZDogZmlsdGVyRmllbGQuaWQsXHJcbiAgICAgICAgICBuYW1lOiBmaWx0ZXJGaWVsZC5uYW1lLFxyXG4gICAgICAgICAgb3BlcmF0b3JzOiBkZWZhdWx0T3BlcmF0b3IucWJkZWZhdWx0T3BlcmF0b3I/LnN5bWJvbCA/IHRoaXMubW92ZUVsZW1lbnRUb0ZpcnN0UGxhY2Uob3BlcmF0b3JzRmxhdEFycmF5LCBkZWZhdWx0T3BlcmF0b3IucWJkZWZhdWx0T3BlcmF0b3I/LnN5bWJvbCkgOiBvcGVyYXRvcnNGbGF0QXJyYXksXHJcbiAgICAgICAgICB0eXBlOiB0aGlzLmdldERhdGFUeXBlKGZpbHRlckZpZWxkLmRhdGFUeXBlKSxcclxuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogdGhpcy5mb3JtYXREZWZhdWx0VmFsdWUodGhpcy5kZWZhdWx0VmFsdWVzLmZpbmQodmFsdWUgPT4gdmFsdWUucWJmaWx0ZXJGaWVsZElkID09IGZpbHRlckZpZWxkLmlkKS5kZWZhdWx0VmFsdWUsIGZpbHRlckZpZWxkLmRhdGFUeXBlKSxcclxuICAgICAgICAgIGRlZmF1bHRPcGVyYXRvcjogZGVmYXVsdE9wZXJhdG9yLnFiZGVmYXVsdE9wZXJhdG9yPy5zeW1ib2wsXHJcbiAgICAgICAgICBlbnRpdHk6IGZpbHRlckVudGl0eS5qc29uTmFtZSxcclxuICAgICAgICAgIG9wdGlvbnM6IGZpbHRlckZpZWxkLmxpc3RPZlZhbHVlcyxcclxuICAgICAgICAgIHZhbGlkYXRvcjogKHJ1bGU6IFJ1bGUsIHBhcmVudDogUnVsZVNldCk6IGFueSB8IG51bGwgPT4ge1xyXG4gICAgICAgICAgICBpZiAocnVsZS5vcGVyYXRvciAhPT0gXCJpcyBudWxsXCIgJiYgcnVsZS5vcGVyYXRvciAhPT0gXCJpcyBub3QgbnVsbFwiKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHJ1bGUudmFsdWUgPT09IHVuZGVmaW5lZCB8fCBydWxlLnZhbHVlID09PSBudWxsIHx8IHJ1bGUudmFsdWUgPT09ICcnIHx8IHJ1bGUudmFsdWUubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IHJlcXVpcmVkOiAnZW1wdHkgZmllbGQnIH07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVudGl0aWVzLnB1c2goe2ZpZWxkSnNvbk5hbWU6IGZpbHRlckZpZWxkLmpzb25OYW1lLCBlbnRpdHk6IGZpZWxkLmVudGl0eX0pO1xyXG4gICAgICAgIGZpZWxkc1tpbmRleF0gPSB7IFtmaWx0ZXJGaWVsZC5qc29uTmFtZV06IGZpZWxkIH07XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IGZpZWxkc01hcDogRmllbGRNYXAgPSB7fTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcykge1xyXG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoZmllbGQpO1xyXG4gICAgICBrZXlzLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICBmaWVsZHNNYXBba2V5XSA9IGZpZWxkW2tleV07XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgZW50aXR5Q29uZmlnQXV4LmZpZWxkcyA9IGZpZWxkc01hcDtcclxuICAgIH1cclxuICAgIHJldHVybiBlbnRpdHlDb25maWdBdXg7XHJcbiAgfVxyXG5cclxuICBmaWx0ZXJGaWVsZHNCeUlkKGZpZWxkc09iajogYW55LCBpZEFycmF5OiBudW1iZXJbXSk6IGFueSB7XHJcbiAgICBjb25zdCBmaWx0ZXJlZEZpZWxkczogYW55ID0ge307XHJcbiAgICBcclxuICAgIGZvciAoY29uc3Qga2V5IGluIGZpZWxkc09iai5maWVsZHMpIHtcclxuICAgICAgY29uc3QgZmllbGQgPSBmaWVsZHNPYmouZmllbGRzW2tleV07XHJcbiAgICAgIGlmIChpZEFycmF5LmluY2x1ZGVzKGZpZWxkLmlkKSkge1xyXG4gICAgICAgIGZpbHRlcmVkRmllbGRzW2tleV0gPSBmaWVsZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi5maWVsZHNPYmosXHJcbiAgICAgIGZpZWxkczogZmlsdGVyZWRGaWVsZHMsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgdHJhbnNsYXRlRmllbGRzKGZpZWxkczogRmllbGRNYXApIHtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIGZpZWxkcykge1xyXG4gICAgICBpZiAoZmllbGRzLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICBmaWVsZHNba2V5XS5maWVsZCA9IGtleTtcclxuICAgICAgICBmaWVsZHNba2V5XS5uYW1lID0gdGhpcy50cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzW2tleV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmaWVsZHM7XHJcbiAgfVxyXG5cclxuICBtb3ZlRWxlbWVudFRvRmlyc3RQbGFjZShhcnJheTogYW55W10sIGVsZW1lbnRUb0ZpcnN0UGxhY2U6IHN0cmluZykge1xyXG4gICAgY29uc3QgaW5kZXggPSBhcnJheS5pbmRleE9mKGVsZW1lbnRUb0ZpcnN0UGxhY2UpO1xyXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gICAgICBhcnJheS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICBhcnJheS51bnNoaWZ0KGVsZW1lbnRUb0ZpcnN0UGxhY2UpOyBcclxuICAgIH1cclxuICAgIHJldHVybiBhcnJheTtcclxuICB9XHJcblxyXG4gIGZvcm1hdERlZmF1bHRWYWx1ZSh2YWx1ZTogYW55LCB0eXBlOiBRQkRhdGFUeXBlRW51bSkge1xyXG4gICAgaWYodmFsdWUpIHtcclxuICAgICAgaWYodHlwZSA9PSBRQkRhdGFUeXBlRW51bS5Cb29sZWFuKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJztcclxuICAgICAgfVxyXG4gICAgICBpZih0eXBlID09IHRoaXMucWJEYXRhVHlwZUVudW0uTnVtYmVyIHx8IHR5cGUgPT0gdGhpcy5xYkRhdGFUeXBlRW51bS5EZWNpbWFsIHx8IHR5cGUgPT0gdGhpcy5xYkRhdGFUeXBlRW51bS5MaXN0KXtcclxuICAgICAgICByZXR1cm4gTnVtYmVyKHZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfSBcclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldERhdGFUeXBlKGlkOiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLnFiRGF0YUVudW1zLmZpbmQodmFsdWUgPT4gdmFsdWUgPT09IGlkKT8udG9TdHJpbmcoKSA/PyBcIlwiO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlRmllbGRzV2l0aG91dFZhbHVlKGpzb246IGFueSkge1xyXG4gICAgaWYgKGpzb24uYmFzaWMgJiYganNvbi5iYXNpYy5ydWxlcykge1xyXG4gICAgICBqc29uLmJhc2ljLnJ1bGVzID0ganNvbi5iYXNpYy5ydWxlcy5maWx0ZXIoKHJ1bGU6IGFueSkgPT4gcnVsZS52YWx1ZSAhPSBudWxsKTtcclxuICAgICAganNvbi5iYXNpYy5ydWxlcyA9IGpzb24uYmFzaWMucnVsZXMuZmlsdGVyKChydWxlOiBhbnkpID0+IHJ1bGUudmFsdWUgIT0gdW5kZWZpbmVkKTtcclxuICAgICAganNvbi5iYXNpYy5ydWxlcyA9IGpzb24uYmFzaWMucnVsZXMuZmlsdGVyKChydWxlOiBhbnkpID0+IHJ1bGUudmFsdWUgIT09IFwiXCIpO1xyXG4gICAgICBqc29uLmJhc2ljLnJ1bGVzID0ganNvbi5iYXNpYy5ydWxlcy5maWx0ZXIoKHJ1bGU6IGFueSkgPT4geyByZXR1cm4gIShydWxlLm9wZXJhdG9yID09PSBcIm51bGxhYmxlXCIgJiYgcnVsZS52YWx1ZSA9PT0gXCJudWxsXCIpOyB9KTtcclxuICAgIH1cclxuICAgIGlmKGpzb24uYWR2YW5jZWQgJiYganNvbi5hZHZhbmNlZC5ydWxlcz8ubGVuZ3RoICE9IDApIHtcclxuICAgICAganNvbi5hZHZhbmNlZC5ydWxlcyA9IGpzb24uYWR2YW5jZWQucnVsZXMuZmlsdGVyKChydWxlOiBhbnkpID0+IHJ1bGUucnVsZXM/Lmxlbmd0aCAhPSAwKTtcclxuICAgIH1cclxuICAgIGlmKGpzb24uZ3JvdXBlZCAmJiBqc29uLmdyb3VwZWQ/LnJ1bGVzLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgIGpzb24uZ3JvdXBlZC5ydWxlcyA9IGpzb24uZ3JvdXBlZC5ydWxlcy5maWx0ZXIoKHJ1bGU6IGFueSkgPT4gcnVsZS5ydWxlcz8ubGVuZ3RoICE9IDApO1xyXG4gICAgfVxyXG4gICAgaWYoanNvbi5ncm91cGVkICYmIGpzb24uZ3JvdXBlZD8ucnVsZXMubGVuZ3RoID09IDApIHtcclxuICAgICAganNvbi5ncm91cGVkID0gbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiBqc29uO1xyXG4gIH1cclxuICBcclxuICBpbml0aWFsaXplT3BlcmF0b3JzKGpzb246IGFueSkge1xyXG4gICAgaWYgKGpzb24uYmFzaWMgJiYganNvbi5iYXNpYy5ydWxlcykge1xyXG4gICAgICBqc29uLmJhc2ljLnJ1bGVzLmZvckVhY2goKHJ1bGU6YW55KSA9PiB7XHJcbiAgICAgICAgaWYoIXJ1bGUub3BlcmF0b3IpIHtcclxuICAgICAgICAgIHJ1bGUub3BlcmF0b3IgPSBcIj1cIjtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGpzb247XHJcbiAgfVxyXG5cclxuICByZXNldEJhc2ljUXVlcnlWYWx1ZXMoKSB7XHJcbiAgICB0aGlzLmJhc2ljUXVlcnkucnVsZXMuZm9yRWFjaCgocnVsZTogUnVsZSkgPT4ge1xyXG4gICAgICBpZihydWxlLnZhbHVlIHx8IHJ1bGUudmFsdWUgPT0gMCl7XHJcbiAgICAgICAgcnVsZS52YWx1ZSA9IG51bGxcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRRdWVyeUZpZWxkTmFtZShmaWVsZE5hbWU6IHN0cmluZywgZmllbGRzOiBGaWVsZE1hcCkge1xyXG4gICAgY29uc3QgZmllbGRFbnRyeSA9IE9iamVjdC5rZXlzKGZpZWxkcykuZmluZChrZXkgPT4gZmllbGRzW2tleV0uZmllbGQgPT09IGZpZWxkTmFtZSk7XHJcblxyXG4gICAgcmV0dXJuIGZpZWxkRW50cnkgJiYgZmllbGRzW2ZpZWxkRW50cnldLm5hbWUgPyBmaWVsZHNbZmllbGRFbnRyeV0ubmFtZSA6IGZpZWxkTmFtZTtcclxuICB9XHJcblxyXG4gIGZpZWxkSXNCb29sZWFuKGZpZWxkTmFtZTogc3RyaW5nLCBmaWVsZHM6IEZpZWxkTWFwKSB7XHJcbiAgICBjb25zdCBmaWVsZEVudHJ5ID0gT2JqZWN0LmtleXMoZmllbGRzKS5maW5kKGtleSA9PiBmaWVsZHNba2V5XS5maWVsZCA9PT0gZmllbGROYW1lKTtcclxuXHJcbiAgICByZXR1cm4gZmllbGRzW2ZpZWxkRW50cnkhXS50eXBlID09IFFCRGF0YVR5cGVFbnVtLkJvb2xlYW4udG9TdHJpbmcoKSA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG59XHJcbiIsIjwhLS0gVE9ETzogSW50ZW50YXIgb3RyYSB2ZXogcGFzYXIgbG9zIGNvbXBvbmVudGVzIGEgbG9zIGRlIHctIHBvcnF1ZSBubyBzZSBhbGluZW5hIHkgZWwgdy1lZGl0LXNlbGVjdCBubyB2YSBiaWVuIGVuIGZpZWxkLiBcclxuICBBaG9yYSBzZSBjb25zZXJ2YW4gbG9zIGRlIHAtdyBjb24gZXN0aWxvcy4gLS0+XHJcbjxwLWJsb2NrVUkgc3R5bGVDbGFzcz1cInctZmlsdGVyLXBhbmVsLWJsb2NrdWlcIiBbYXV0b1pJbmRleF09XCJmYWxzZVwiIFt0YXJnZXRdPVwiZmlsdGVyUGFuZWxcIiBbYmxvY2tlZF09XCJkYXRhSXNMb2FkaW5nU2VhcmNoQnV0dG9uXCI+PC9wLWJsb2NrVUk+XHJcblxyXG48cC1jYXJkIHN0eWxlQ2xhc3M9XCJ3LWZpbHRlci1wYW5lbC1uby1zdHlsZS1jYXJkXCIgI2ZpbHRlclBhbmVsPlxyXG4gIDxkaXYgKm5nSWY9XCJxdWVyeUNvbmZpZ1JlYWR5XCIgY2xhc3M9XCJ3LWZpbHRlci1wYW5lbC1zdHlsZXNcIj5cclxuICAgICAgPGRpdiAqbmdJZj1cIiFmaWx0ZXJQYW5lbE9iamVjdC5hbGxvd0FkdmFuY2VkU2VhcmNoOyBlbHNlIGJhaXNjQW5kQWR2YW5jZWRcIj5cclxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgJ3ctZmlsdGVyLXBhbmVsLWNvbnRhaW5lci1hZHZhbmNlZCcgOiBpc0FkdmFuY2VkU2VhcmNoLCAndy1maWx0ZXItcGFuZWwtY29udGFpbmVyLWJhc2ljJyA6ICFpc0FkdmFuY2VkU2VhcmNoIH1cIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJiYXNpY1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZCBidXR0b24tZ2FwXCI+XHJcbiAgICAgICAgICAgIDx3LWJ1dHRvbiBbbGFiZWxdPVwidHJhbnNsYXRpb25zT2JqZWN0LmNsZWFyQnV0dG9uTGFiZWxcIiB0eXBlPVwidGVydGlhcnlcIiBzaXplPVwic21hbGxcIiAob25DbGljayk9XCJvbkNsZWFyQ2xpY2tlZCgpXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgPHctYnV0dG9uIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3Quc2VhcmNoQnV0dG9uTGFiZWxcIiBzaXplPVwic21hbGxcIiAob25DbGljayk9XCJvblNlYXJjaENsaWNrZWQoKVwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8bmctdGVtcGxhdGUgI2JhaXNjQW5kQWR2YW5jZWQ+XHJcbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7ICd3LWZpbHRlci1wYW5lbC1jb250YWluZXItYWR2YW5jZWQnIDogaXNBZHZhbmNlZFNlYXJjaCwgJ3ctZmlsdGVyLXBhbmVsLWNvbnRhaW5lci1iYXNpYycgOiAhaXNBZHZhbmNlZFNlYXJjaCB9XCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXNBZHZhbmNlZFNlYXJjaDsgZWxzZSBhZHZhbmNlZFZpZXdcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYmFzaWNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYWR2YW5jZWRWaWV3PlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhZHZhbmNlZFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZCBidXR0b24tZ2FwXCIgW2NsYXNzLnB0LTNdPVwiaXNBZHZhbmNlZFNlYXJjaFwiPlxyXG4gICAgICAgICAgICAgIDx3LWJ1dHRvbiBbbGFiZWxdPVwidHJhbnNsYXRpb25zT2JqZWN0LmNsZWFyQnV0dG9uTGFiZWxcIiB0eXBlPVwidGVydGlhcnlcIiBzaXplPVwic21hbGxcIiAob25DbGljayk9XCJvbkNsZWFyQ2xpY2tlZCgpXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgICA8dy1idXR0b24gW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5zZWFyY2hCdXR0b25MYWJlbFwiIHNpemU9XCJzbWFsbFwiIChvbkNsaWNrKT1cIm9uU2VhcmNoQ2xpY2tlZCgpXCIgW2xvYWRpbmddPVwiZGF0YUlzTG9hZGluZ1NlYXJjaEJ1dHRvblwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvZGl2PlxyXG48L3AtY2FyZD5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNiYXNpYz5cclxuICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXJQYW5lbE9iamVjdC5hbGxvd0FkdmFuY2VkU2VhcmNoXCIgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmQgZmxleC13cmFwXCI+XHJcbiAgICAgIDx3LWJ1dHRvbiBbbGFiZWxdPVwidHJhbnNsYXRpb25zT2JqZWN0LmFkdmFuY2VkU2VhcmNoVGFiTGFiZWxcIiB0eXBlPVwidGV4dFwiIChvbkNsaWNrKT1cInVwZGF0ZVNlYXJjaFR5cGUoKVwiPjwvdy1idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ3LWZpbHRlci1wYW5lbC1iYXNpYyBxdWVyeS1idWlsZGVyLXN0eWxlIGZhZGVpbiBhbmltYXRpb24tZHVyYXRpb24tNTAwXCI+XHJcbiAgICAgIDxxdWVyeS1idWlsZGVyIFtmb3JtQ29udHJvbF09J3F1ZXJ5Q3RybCcgW2NvbmZpZ109J2Jhc2ljUXVlcnlDb25maWcnIFthbGxvd1J1bGVzZXRdPSdmaWx0ZXJQYW5lbE9iamVjdC5hbGxvd1J1bGVTZXQnIFthbGxvd1J1bGVzZXRdPVwiZmlsdGVyUGFuZWxPYmplY3QuYWxsb3dSdWxlU2V0XCIgW3BlcnNpc3RWYWx1ZU9uRmllbGRDaGFuZ2VdPSdwZXJzaXN0VmFsdWVPbkZpZWxkQ2hhbmdlJz5cclxuICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUJ1dHRvbkdyb3VwPVwibGV0IHJ1bGVzZXQ7XCI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5UmVtb3ZlQnV0dG9uPVwibGV0IHJ1bGU7IGxldCByZW1vdmVSdWxlPXJlbW92ZVJ1bGVcIj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlTd2l0Y2hHcm91cD1cImxldCBydWxlc2V0OyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlFbnRpdHk9XCJsZXQgcnVsZTsgbGV0IGVudGl0aWVzPWVudGl0aWVzOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgIDxwLWRyb3Bkb3duIFtkaXNhYmxlZF09XCJ0cnVlXCIgY2xhc3M9XCIgdy1lZGl0LXNlbGVjdC1zbWFsbFwiICpuZ0lmPVwiZmFsc2VcIiBhcHBlbmRUbz1cImJvZHlcIiBbb3B0aW9uc109XCJlbnRpdGllc1wiIFsobmdNb2RlbCldPVwicnVsZS5lbnRpdHlcIiBvcHRpb25MYWJlbD1cIm5hbWVcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50LCBydWxlKVwiPjwvcC1kcm9wZG93bj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlGaWVsZD1cImxldCBydWxlOyBsZXQgZmllbGRzPWZpZWxkczsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlOyBsZXQgZ2V0RmllbGRzID0gZ2V0RmllbGRzOyBsZXQgdmFsdWU9dmFsdWU7IGxldCBuYW1lPW5hbWU7IGxldCBpbmRleD1pbmRleFwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGFwcGVuZFRvPVwiYm9keVwiIGNsYXNzPVwidy00IHRleHQtbGVmdCB3LWZpbHRlci1wYW5lbC1pbnB1dC10ZXh0LWxhYmVsXCIgW2NsYXNzLnctZmlsdGVyLXBhbmVsLWJvb2xlYW4tbGFiZWwtd2lkdGhdPVwiZmllbGRJc0Jvb2xlYW4ocnVsZS5maWVsZCwgZ2V0RmllbGRzKHJ1bGUuZW50aXR5KSlcIiBvcHRpb25MYWJlbD1cIm5hbWVcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCI+e3sgZ2V0UXVlcnlGaWVsZE5hbWUocnVsZS5maWVsZCwgZ2V0RmllbGRzKHJ1bGUuZW50aXR5KSl9fTwvc3Bhbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlPcGVyYXRvcj1cImxldCBydWxlOyBsZXQgb3BlcmF0b3JzPW9wZXJhdG9yczsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXVlcnktYnVpbGRlci1vcGVyYXRvci13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxwLWRyb3Bkb3duIGNsYXNzPVwiIHctZWRpdC1zZWxlY3Qtc21hbGxcIiAqbmdJZj1cImlzQWR2YW5jZWRTZWFyY2hcIiBhcHBlbmRUbz1cImJvZHlcIiBbKG5nTW9kZWwpXT1cInJ1bGUub3BlcmF0b3JcIiBbb3B0aW9uc109XCJvcGVyYXRvcnNcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZShydWxlKVwiPjwvcC1kcm9wZG93bj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLkJvb2xlYW4udG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInF1ZXJ5LWJ1aWxkZXItb3BlcmF0b3Itd2lkdGhcIj5cclxuICAgICAgICAgICAgPHctdG9nZ2xlLWJ1dHRvbiBzaXplPVwic21hbGxcIiBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiBvbkxhYmVsPVwiVHJ1ZVwiIG9mZkxhYmVsPVwiRmFsc2VcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCI+PC93LXRvZ2dsZS1idXR0b24+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgdHlwZTogcWJEYXRhVHlwZUVudW0uRGF0ZXRpbWUudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidy1lZGl0LWNhbGVuZGFyXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICA8dy1lZGl0LWNhbGVuZGFyIGFwcGVuZFRvPVwiYm9keVwiIHNpemU9XCJzbWFsbFwiIFtzaG93SWNvbl09XCJmYWxzZVwiIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIChvbkNoYW5nZSk9XCJvbkNoYW5nZSgpXCIgW3Nob3dUaW1lXT1cInRydWVcIiBbc2hvd1NlY29uZHNdPVwidHJ1ZVwiIFtmaXJzdERheU9mV2Vla109XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmlyc3REYXlPZldlZWsgPz8gMVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLmRhdGV0aW1lXCIgW2Rpc3BsYXlJbmxpbmVCbG9ja109XCJ0cnVlXCI+PC93LWVkaXQtY2FsZW5kYXI+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgZmllbGQ9ZmllbGQ7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLkRlY2ltYWwudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidy1maWx0ZXItcGFuZWwtYmFzaWMtcXVlcnktYnVpbGRlci1pbnB1dC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxwLWlucHV0TnVtYmVyIGlucHV0U3R5bGVDbGFzcz1cImZsZXggZmxleC0xXCIgc3R5bGVDbGFzcz1cImZsZXggZmxleC0xXCIgY2xhc3M9XCIgdy1maWx0ZXItcGFuZWwtYmFzaWMtcXVlcnktYnVpbGRlci1pbnB1dC13aWR0aCB3LWVkaXQtaW5wdXQtbnVtYmVyLXNtYWxsIHctZWRpdC1pbnB1dC1udW1iZXItc21hbGwtaGVpZ2h0XCIgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgaW5wdXRJZD1cIm1pbm1heFwiIGlucHV0SWQ9XCJtaW5tYXhcIiBtb2RlPVwiZGVjaW1hbFwiIFttaW5GcmFjdGlvbkRpZ2l0c109XCIyXCIgW21heEZyYWN0aW9uRGlnaXRzXT1cIjVcIiBbbWluXT1cIjBcIiBbbWF4XT1cIjEwMFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRpb25zT2JqZWN0LmZpZWxkc1BsYWNlaG9sZGVycy5kZWNpbWFsXCI+IDwvcC1pbnB1dE51bWJlcj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IGxldCBvcHRpb25zPW9wdGlvbnM7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLkxpc3QudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidy1maWx0ZXItcGFuZWwtYmFzaWMtcXVlcnktYnVpbGRlci1pbnB1dC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxwLWRyb3Bkb3duIGNsYXNzPVwidy1lZGl0LXNlbGVjdC1zbWFsbFwiIGFwcGVuZFRvPVwiYm9keVwiIFtvcHRpb25zXT1cIm9wdGlvbnNcIiBbZmlsdGVyXT1cInRydWVcIiBbc2hvd0NsZWFyXT1cInRydWVcIiBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgb3B0aW9uTGFiZWw9XCJuYW1lXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLmxpc3RcIj48L3AtZHJvcGRvd24+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgZmllbGQ9ZmllbGQ7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLk51bWJlci50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgICA8cC1pbnB1dE51bWJlciBbdXNlR3JvdXBpbmddPVwiZmFsc2VcIiBpbnB1dFN0eWxlQ2xhc3M9XCJmbGV4IGZsZXgtMVwiIHN0eWxlQ2xhc3M9XCJmbGV4IGZsZXgtMVwiIGNsYXNzPVwiIHctZmlsdGVyLXBhbmVsLWJhc2ljLXF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGggdy1lZGl0LWlucHV0LW51bWJlci1zbWFsbCB3LWVkaXQtaW5wdXQtbnVtYmVyLXNtYWxsLWhlaWdodFwiIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIGlucHV0SWQ9XCJtaW5tYXhcIiBpbnB1dElkPVwibWlubWF4XCIgW21pbl09XCIwXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoKVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLm51bWJlclwiPiA8L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgbGV0IGZpZWxkPWZpZWxkOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5UZXh0LnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiIHctZmlsdGVyLXBhbmVsLWJhc2ljLXF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGggdy1lZGl0LWlucHV0LXRleHQtc21hbGwtaGVpZ2h0IHctZWRpdC1pbnB1dC10ZXh0LXNtYWxsXCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRpb25zT2JqZWN0LmZpZWxkc1BsYWNlaG9sZGVycy50ZXh0XCIvPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IGxldCBvcHRpb25zPW9wdGlvbnM7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLk11bHRpc2VsZWN0LnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInctZmlsdGVyLXBhbmVsLWJhc2ljLXF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8cC1tdWx0aVNlbGVjdCBjbGFzcz1cInctZWRpdC1tdWx0aXNlbGVjdC1zbWFsbFwiIFthcHBlbmRUb109XCInYm9keSdcIiBbb3B0aW9uc109XCJvcHRpb25zXCIgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoKVwiIG9wdGlvbkxhYmVsPVwibmFtZVwiIG9wdGlvblZhbHVlPVwidmFsdWVcIiBkaXNwbGF5PVwiY2hpcFwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLmxpc3RcIj48L3AtbXVsdGlTZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgb3B0aW9ucz1vcHRpb25zOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5OdWxsYWJsZVNlbGVjdC50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidy1maWx0ZXItcGFuZWwtYmFzaWMtcXVlcnktYnVpbGRlci1pbnB1dC13aWR0aFwiPlxyXG4gICAgICAgICAgICA8cC1kcm9wZG93biBjbGFzcz1cInctZWRpdC1zZWxlY3Qtc21hbGxcIiBhcHBlbmRUbz1cImJvZHlcIiBbb3B0aW9uc109XCJvcHRpb25zXCIgW2ZpbHRlcl09XCJ0cnVlXCIgW3Nob3dDbGVhcl09XCJ0cnVlXCIgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoKVwiIG9wdGlvbkxhYmVsPVwibmFtZVwiIG9wdGlvblZhbHVlPVwidmFsdWVcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRpb25zT2JqZWN0LmZpZWxkc1BsYWNlaG9sZGVycy5saXN0XCI+PC9wLWRyb3Bkb3duPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IGxldCBvcHRpb25zPW9wdGlvbnM7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLkJvb2xlYW5TZWxlY3QudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInctZmlsdGVyLXBhbmVsLWJhc2ljLXF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGhcIj5cclxuICAgICAgICAgICAgPHAtZHJvcGRvd24gY2xhc3M9XCJ3LWVkaXQtc2VsZWN0LXNtYWxsXCIgYXBwZW5kVG89XCJib2R5XCIgW29wdGlvbnNdPVwib3B0aW9uc1wiIFtmaWx0ZXJdPVwidHJ1ZVwiIFtzaG93Q2xlYXJdPVwidHJ1ZVwiIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIiBvcHRpb25MYWJlbD1cIm5hbWVcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMubGlzdFwiPjwvcC1kcm9wZG93bj5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgb3B0aW9ucz1vcHRpb25zOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5BZGRyZXNzLnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgPHctYWRkcmVzcy1maWVsZCBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgW29wZXJhdG9yXT1cInJ1bGUub3BlcmF0b3JcIiBbc2VnbWVudGF0aW9uQXBpVXJsXT1cInNlZ21lbnRhdGlvbkFwaVVybFwiIFtzZWdtZW50YXRpb25BcGlUb2tlbl09XCJzZWdtZW50YXRpb25Ub2tlblwiPjwvdy1hZGRyZXNzLWZpZWxkPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3F1ZXJ5LWJ1aWxkZXI+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzQWR2YW5jZWRTZWFyY2ggJiYgYmFzaWNRdWVyeS5ydWxlcy5sZW5ndGg9PTBcIiA+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub1F1ZXJ5RGF0YVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNhZHZhbmNlZD5cclxuICAgIDxkaXYgW2NsYXNzLnF1ZXJ5LWJ1aWxkZXItc3R5bGVdPVwiIWZpbHRlclBhbmVsT2JqZWN0LmFsbG93UnVsZVNldFwiIGNsYXNzPVwidy1maWx0ZXItcGFuZWwtY29udGFpbmVyIGZhZGVpbiBhbmltYXRpb24tZHVyYXRpb24tNTAwXCI+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXJQYW5lbE9iamVjdC5hbGxvd1J1bGVTZXRcIiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZCBmbGV4LXdyYXBcIj5cclxuICAgICAgICA8dy1idXR0b24gY2xhc3M9XCJtYi0yXCIgW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5iYXNpY1NlYXJjaFRhYkxhYmVsXCIgdHlwZT1cInRleHRcIiAob25DbGljayk9XCJ1cGRhdGVTZWFyY2hUeXBlKClcIj48L3ctYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPHF1ZXJ5LWJ1aWxkZXIgW2Zvcm1Db250cm9sXT0nYWR2YW5jZWRRdWVyeUN0cmwnIFtjb25maWddPSdhZHZhbmNlZFF1ZXJ5Q29uZmlnJyBbYWxsb3dSdWxlc2V0XT0nZmlsdGVyUGFuZWxPYmplY3QuYWxsb3dSdWxlU2V0JyBbYWxsb3dDb2xsYXBzZV09J2ZpbHRlclBhbmVsT2JqZWN0LmFsbG93Q29sYXBzZScgW2FsbG93UnVsZXNldF09XCJmaWx0ZXJQYW5lbE9iamVjdC5hbGxvd1J1bGVTZXRcIiBbcGVyc2lzdFZhbHVlT25GaWVsZENoYW5nZV09J3BlcnNpc3RWYWx1ZU9uRmllbGRDaGFuZ2UnPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlclBhbmVsT2JqZWN0LmFsbG93UnVsZVNldDsgZWxzZSBub1J1bGVTZXRcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlCdXR0b25Hcm91cD1cImxldCBydWxlc2V0OyBsZXQgYWRkUnVsZT1hZGRSdWxlOyBsZXQgYWRkUnVsZVNldD1hZGRSdWxlU2V0OyBsZXQgcmVtb3ZlUnVsZVNldD1yZW1vdmVSdWxlU2V0XCI+XHJcbiAgICAgICAgICAgICAgICA8dy1idXR0b24gY2xhc3M9XCJtci0yXCIgW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5hZHZhbmNlZFNlYXJjaC5hZGRSdWxlQnV0dG9uTGFiZWxcIiB0eXBlPVwic2Vjb25kYXJ5XCIgc2l6ZT1cInNtYWxsXCIgKG9uQ2xpY2spPVwiYWRkUnVsZSgpXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDx3LWJ1dHRvbiBjbGFzcz1cIm1yLTJcIiBbbGFiZWxdPVwidHJhbnNsYXRpb25zT2JqZWN0LmFkdmFuY2VkU2VhcmNoLmFkZFJ1bGVTZXRCdXR0b25MYWJlbFwiIHR5cGU9XCJzZWNvbmRhcnlcIiBpY29uPVwicGkgcGktcGx1c1wiIHNpemU9XCJzbWFsbFwiICpuZ0lmPVwiYWRkUnVsZVNldFwiIChvbkNsaWNrKT1cImFkZFJ1bGVTZXQoKVwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8dy1idXR0b24gY2xhc3M9XCJtci0yXCIgW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5hZHZhbmNlZFNlYXJjaC5yZW1vdmVSdWxlU2V0QnV0dG9uTGFiZWxcIiB0eXBlPVwidGVydGlhcnlcIiBpY29uPVwicGkgcGktbWludXNcIiBzaXplPVwic21hbGxcIiAqbmdJZj1cInJlbW92ZVJ1bGVTZXRcIiAob25DbGljayk9XCJyZW1vdmVSdWxlU2V0KClcIj48L3ctYnV0dG9uPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9SdWxlU2V0PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUJ1dHRvbkdyb3VwPVwibGV0IHJ1bGVzZXQ7IGxldCBhZGRSdWxlPWFkZFJ1bGU7IGxldCBhZGRSdWxlU2V0PWFkZFJ1bGVTZXQ7IGxldCByZW1vdmVSdWxlU2V0PXJlbW92ZVJ1bGVTZXRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGZsZXgtd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgPHctYnV0dG9uIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3QuYmFzaWNTZWFyY2hUYWJMYWJlbFwiIHR5cGU9XCJ0ZXh0XCIgKG9uQ2xpY2spPVwidXBkYXRlU2VhcmNoVHlwZSgpXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkdmFuY2VkLXF1ZXJ5LWJ1dHRvbi1ncm91cCBnYXAtM1wiPlxyXG4gICAgICAgICAgICAgICAgPHctYnV0dG9uIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3QuYWR2YW5jZWRTZWFyY2guYWRkUnVsZUJ1dHRvbkxhYmVsXCIgdHlwZT1cInNlY29uZGFyeVwiIHNpemU9XCJzbWFsbFwiIChvbkNsaWNrKT1cImFkZFJ1bGUoKVwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8dy1idXR0b24gW2xhYmVsXT1cInRyYW5zbGF0aW9uc09iamVjdC5hZHZhbmNlZFNlYXJjaC5hZGRSdWxlU2V0QnV0dG9uTGFiZWxcIiB0eXBlPVwic2Vjb25kYXJ5XCIgaWNvbj1cInBpIHBpLXBsdXNcIiBzaXplPVwic21hbGxcIiAqbmdJZj1cImFkZFJ1bGVTZXRcIiAob25DbGljayk9XCJhZGRSdWxlU2V0KClcIj48L3ctYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPHctYnV0dG9uIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3QuYWR2YW5jZWRTZWFyY2gucmVtb3ZlUnVsZVNldEJ1dHRvbkxhYmVsXCIgdHlwZT1cInRlcnRpYXJ5XCIgaWNvbj1cInBpIHBpLW1pbnVzXCIgc2l6ZT1cInNtYWxsXCIgKm5nSWY9XCJyZW1vdmVSdWxlU2V0XCIgKG9uQ2xpY2spPVwicmVtb3ZlUnVsZVNldCgpXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5QXJyb3dJY29uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgaWNvbj1cInBpIHBpLWFuZ2xlLXJpZ2h0XCIgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHRcIj48L2J1dHRvbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5UmVtb3ZlQnV0dG9uPVwibGV0IHJ1bGU7IGxldCByZW1vdmVSdWxlPXJlbW92ZVJ1bGVcIj5cclxuICAgICAgICAgICAgPHctYnV0dG9uIGNsYXNzPVwiXCIgbGFiZWw9XCJcIiBzaXplPVwic21hbGxcIiB0eXBlPVwidGVydGlhcnlcIiBpY29uPVwicGkgcGktdGltZXNcIiAob25DbGljayk9XCJyZW1vdmVSdWxlKHJ1bGUpXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5U3dpdGNoR3JvdXA9XCJsZXQgcnVsZXNldDsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJydWxlc2V0XCIgY2xhc3M9XCJ3LWZpbHRlci1wYW5lbC1zd2l0Y2gtZ3JvdXAtcGFkZGluZ1wiPlxyXG4gICAgICAgICAgICAgIDx3LXNlbGVjdC1idXR0b24gKm5nSWY9XCJmaWx0ZXJQYW5lbE9iamVjdC5hbGxvd0xvZ2ljYWxSdWxlXCIgW3N0YXRlT3B0aW9uc109XCJbe2xhYmVsOiAnQW5kJywgdmFsdWU6ICdhbmQnfSwge2xhYmVsOiAnT3InLCB2YWx1ZTogJ29yJ31dXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicnVsZXNldC5jb25kaXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUpPVwicnVsZXNldC5jb25kaXRpb24gPSAkZXZlbnRcIj5cclxuICAgICAgICAgICAgICA8L3ctc2VsZWN0LWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUVudGl0eT1cImxldCBydWxlOyBsZXQgZW50aXRpZXM9ZW50aXRpZXM7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8cC1kcm9wZG93biAqbmdJZj1cImZpbHRlclBhbmVsT2JqZWN0LmVuaXR5TW9kZVwiIGNsYXNzPVwiZmllbGQtZ2FwIHctZWRpdC1zZWxlY3Qtc21hbGwgdy1lbnRpdHktZHJvcGRvd25cIiBhcHBlbmRUbz1cImJvZHlcIiBbb3B0aW9uc109XCJlbnRpdGllc1wiIFsobmdNb2RlbCldPVwicnVsZS5lbnRpdHlcIiBvcHRpb25MYWJlbD1cIm5hbWVcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50LCBydWxlKVwiPjwvcC1kcm9wZG93bj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5RmllbGQ9XCJsZXQgcnVsZTsgbGV0IGZpZWxkcz1maWVsZHM7IGxldCBvbkNoYW5nZT1vbkNoYW5nZTsgbGV0IGdldEZpZWxkcyA9IGdldEZpZWxkc1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInF1ZXJ5LWJ1aWxkZXItZmllbGQtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8cC1kcm9wZG93biBjbGFzcz1cImZpZWxkLWdhcCB3LWVkaXQtc2VsZWN0LXNtYWxsXCIgYXBwZW5kVG89XCJib2R5XCIgW29wdGlvbnNdPVwiZ2V0RmllbGRzKHJ1bGUuZW50aXR5KVwiIFsobmdNb2RlbCldPVwicnVsZS5maWVsZFwiIG9wdGlvbkxhYmVsPVwibmFtZVwiIG9wdGlvblZhbHVlPVwidmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQsIHJ1bGUpXCI+PC9wLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgIDwhLS0gPHctbGlzdC1maWVsZCBjbGFzcz1cImZpZWxkLWdhcFwiIGFwcGVuZFRvPVwiYm9keVwiIFtvcHRpb25zXT1cImdldEZpZWxkcyhydWxlLmVudGl0eSlcIiBbKG5nTW9kZWwpXT1cInJ1bGUuZmllbGRcIiBbb3BlcmF0b3JdPVwiJz0nXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50LCBydWxlKVwiIFtvbmx5RHJvcGRvd25dPVwidHJ1ZVwiPjwvdy1saXN0LWZpZWxkPiAtLT5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlPcGVyYXRvcj1cImxldCBydWxlOyBsZXQgb3BlcmF0b3JzPW9wZXJhdG9yczsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXVlcnktYnVpbGRlci1vcGVyYXRvci13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxwLWRyb3Bkb3duIGNsYXNzPVwiZmllbGQtZ2FwIHctZWRpdC1zZWxlY3Qtc21hbGxcIiBhcHBlbmRUbz1cImJvZHlcIiBbKG5nTW9kZWwpXT1cInJ1bGUub3BlcmF0b3JcIiBbb3B0aW9uc109XCJvcGVyYXRvcnNcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZShydWxlKVwiPjwvcC1kcm9wZG93bj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5Cb29sZWFuLnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8dy10b2dnbGUtYnV0dG9uIGNsYXNzPVwiZmllbGQtZ2FwIHRvZ2dsZS1idXR0b24tYWxpZ25cIiBzaXplPVwic21hbGxcIiBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiBvbkxhYmVsPVwiVHJ1ZVwiIG9mZkxhYmVsPVwiRmFsc2VcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCI+PC93LXRvZ2dsZS1idXR0b24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLkRhdGV0aW1lLnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8dy1lZGl0LWNhbGVuZGFyIGNsYXNzPVwiZmllbGQtZ2FwXCIgYXBwZW5kVG89XCJib2R5XCIgc2l6ZT1cInNtYWxsXCIgW3Nob3dJY29uXT1cImZhbHNlXCIgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgKG9uQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIiBbc2hvd1RpbWVdPVwidHJ1ZVwiIFtzaG93U2Vjb25kc109XCJ0cnVlXCIgW2ZpcnN0RGF5T2ZXZWVrXT1cInRyYW5zbGF0aW9uc09iamVjdC5maXJzdERheU9mV2VlayA/PyAxXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMuZGF0ZXRpbWVcIiBbZGlzcGxheUlubGluZUJsb2NrXT1cInRydWVcIj48L3ctZWRpdC1jYWxlbmRhcj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgZmllbGQ9ZmllbGQ7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLkRlY2ltYWwudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXVlcnktYnVpbGRlci1pbnB1dC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxwLWlucHV0TnVtYmVyIGlucHV0U3R5bGVDbGFzcz1cImZsZXggZmxleC0xXCIgc3R5bGVDbGFzcz1cImZsZXggZmxleC0xXCIgY2xhc3M9XCJmaWVsZC1nYXAgdy1lZGl0LWlucHV0LW51bWJlci1zbWFsbCB3LWVkaXQtaW5wdXQtbnVtYmVyLXNtYWxsLWhlaWdodFwiIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIGlucHV0SWQ9XCJtaW5tYXhcIiBpbnB1dElkPVwibWlubWF4XCIgbW9kZT1cImRlY2ltYWxcIiBbbWluRnJhY3Rpb25EaWdpdHNdPVwiMlwiIFttYXhGcmFjdGlvbkRpZ2l0c109XCI1XCIgW21pbl09XCIwXCIgW21heF09XCIxMDBcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMuZGVjaW1hbFwiPiA8L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgbGV0IG9wdGlvbnM9b3B0aW9uczsgdHlwZTogcWJEYXRhVHlwZUVudW0uTGlzdC50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPHAtZHJvcGRvd24gY2xhc3M9XCJmaWVsZC1nYXAgdy1lZGl0LXNlbGVjdC1zbWFsbFwiIGFwcGVuZFRvPVwiYm9keVwiIFtvcHRpb25zXT1cIm9wdGlvbnNcIiBbZmlsdGVyXT1cInRydWVcIiBbc2hvd0NsZWFyXT1cInRydWVcIiBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgb3B0aW9uTGFiZWw9XCJuYW1lXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLmxpc3RcIj48L3AtZHJvcGRvd24+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgbGV0IG9wdGlvbnM9b3B0aW9uczsgdHlwZTogcWJEYXRhVHlwZUVudW0uTGlzdC50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoIGZpZWxkLWdhcFwiPlxyXG4gICAgICAgICAgICAgIDx3LWxpc3QtZmllbGQgW29wdGlvbnNdPVwib3B0aW9uc1wiIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIFtvcGVyYXRvcl09XCJydWxlLm9wZXJhdG9yXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoKVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLmxpc3RcIj48L3ctbGlzdC1maWVsZD5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgZmllbGQ9ZmllbGQ7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLk51bWJlci50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPHAtaW5wdXROdW1iZXIgW3VzZUdyb3VwaW5nXT1cImZhbHNlXCIgaW5wdXRTdHlsZUNsYXNzPVwiZmxleCBmbGV4LTFcIiBzdHlsZUNsYXNzPVwiZmxleCBmbGV4LTFcIiBjbGFzcz1cImZpZWxkLWdhcCB3LWVkaXQtaW5wdXQtbnVtYmVyLXNtYWxsIHctZWRpdC1pbnB1dC1udW1iZXItc21hbGwtaGVpZ2h0XCIgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgaW5wdXRJZD1cIm1pbm1heFwiIGlucHV0SWQ9XCJtaW5tYXhcIiBbbWluXT1cIjBcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMubnVtYmVyXCI+IDwvcC1pbnB1dE51bWJlcj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgZmllbGQ9ZmllbGQ7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLlRleHQudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZpZWxkLWdhcCBxdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoIHctZWRpdC1pbnB1dC10ZXh0LXNtYWxsLWhlaWdodCB3LWVkaXQtaW5wdXQtdGV4dC1zbWFsbFwiIHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMudGV4dFwiLz5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgbGV0IG9wdGlvbnM9b3B0aW9uczsgdHlwZTogcWJEYXRhVHlwZUVudW0uTXVsdGlzZWxlY3QudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXVlcnktYnVpbGRlci1pbnB1dC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxwLW11bHRpU2VsZWN0IGNsYXNzPVwidy1lZGl0LW11bHRpc2VsZWN0LXNtYWxsXCIgW2FwcGVuZFRvXT1cIidib2R5J1wiIFtvcHRpb25zXT1cIm9wdGlvbnNcIiBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgb3B0aW9uTGFiZWw9XCJuYW1lXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIGRpc3BsYXk9XCJjaGlwXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMubGlzdFwiPjwvcC1tdWx0aVNlbGVjdD5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgb3B0aW9ucz1vcHRpb25zOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5BZGRyZXNzLnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8dy1hZGRyZXNzLWZpZWxkIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKClcIiBbb3BlcmF0b3JdPVwicnVsZS5vcGVyYXRvclwiIFtzZWdtZW50YXRpb25BcGlVcmxdPVwic2VnbWVudGF0aW9uQXBpVXJsXCIgW3NlZ21lbnRhdGlvbkFwaVRva2VuXT1cInNlZ21lbnRhdGlvblRva2VuXCIgW3NlbGVjdFBsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMubGlzdFwiPjwvdy1hZGRyZXNzLWZpZWxkPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgb3B0aW9ucz1vcHRpb25zOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5OdWxsYWJsZVNlbGVjdC50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPHAtZHJvcGRvd24gY2xhc3M9XCJmaWVsZC1nYXAgdy1lZGl0LXNlbGVjdC1zbWFsbFwiIGFwcGVuZFRvPVwiYm9keVwiIFtvcHRpb25zXT1cIm9wdGlvbnNcIiBbZmlsdGVyXT1cInRydWVcIiBbc2hvd0NsZWFyXT1cInRydWVcIiBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgb3B0aW9uTGFiZWw9XCJuYW1lXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLmxpc3RcIj48L3AtZHJvcGRvd24+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgbGV0IG9wdGlvbnM9b3B0aW9uczsgdHlwZTogcWJEYXRhVHlwZUVudW0uQm9vbGVhblNlbGVjdC50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPHAtZHJvcGRvd24gY2xhc3M9XCJmaWVsZC1nYXAgdy1lZGl0LXNlbGVjdC1zbWFsbFwiIGFwcGVuZFRvPVwiYm9keVwiIFtvcHRpb25zXT1cIm9wdGlvbnNcIiBbZmlsdGVyXT1cInRydWVcIiBbc2hvd0NsZWFyXT1cInRydWVcIiBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgb3B0aW9uTGFiZWw9XCJuYW1lXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLmxpc3RcIj48L3AtZHJvcGRvd24+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3F1ZXJ5LWJ1aWxkZXI+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNBZHZhbmNlZFNlYXJjaCAmJiBhZHZhbmNlZFF1ZXJ5LnJ1bGVzLmxlbmd0aD09MFwiID5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9RdWVyeURhdGFcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8IS0tIEdyb3VwZWQgZmlsdGVyIC0tPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVyUGFuZWxPYmplY3QuYWxsb3dHcm91cGVkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInB5LTVcIj5cclxuICAgICAgICAgIDx3LXZpZXctY2FyZC10aXRsZS10ZXh0IFtjYXJkVGl0bGVdPVwidHJhbnNsYXRpb25zT2JqZWN0Lmdyb3VwZWRGaWx0ZXJUaXRsZVwiPjwvdy12aWV3LWNhcmQtdGl0bGUtdGV4dD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPHF1ZXJ5LWJ1aWxkZXIgW2Zvcm1Db250cm9sXT0nZ3JvdXBlZFF1ZXJ5Q3RybCcgW2NvbmZpZ109J2FkdmFuY2VkUXVlcnlDb25maWcnIFthbGxvd1J1bGVzZXRdPSdmaWx0ZXJQYW5lbE9iamVjdC5hbGxvd1J1bGVTZXQnIFthbGxvd0NvbGxhcHNlXT0nZmlsdGVyUGFuZWxPYmplY3QuYWxsb3dDb2xhcHNlJyBbYWxsb3dSdWxlc2V0XT1cImZpbHRlclBhbmVsT2JqZWN0LmFsbG93UnVsZVNldFwiIFtwZXJzaXN0VmFsdWVPbkZpZWxkQ2hhbmdlXT0ncGVyc2lzdFZhbHVlT25GaWVsZENoYW5nZSc+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUJ1dHRvbkdyb3VwPVwibGV0IHJ1bGVzZXQ7IGxldCBhZGRSdWxlPWFkZFJ1bGU7IGxldCBhZGRSdWxlU2V0PWFkZFJ1bGVTZXQ7IGxldCByZW1vdmVSdWxlU2V0PXJlbW92ZVJ1bGVTZXRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTMgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDx3LWJ1dHRvbiBbbGFiZWxdPVwidHJhbnNsYXRpb25zT2JqZWN0LmFkdmFuY2VkU2VhcmNoLmFkZFJ1bGVCdXR0b25MYWJlbFwiIHR5cGU9XCJzZWNvbmRhcnlcIiBzaXplPVwic21hbGxcIiAob25DbGljayk9XCJhZGRSdWxlKClcIj48L3ctYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDx3LWJ1dHRvbiBbbGFiZWxdPVwidHJhbnNsYXRpb25zT2JqZWN0LmFkdmFuY2VkU2VhcmNoLmFkZFJ1bGVTZXRCdXR0b25MYWJlbFwiIHR5cGU9XCJzZWNvbmRhcnlcIiBpY29uPVwicGkgcGktcGx1c1wiIHNpemU9XCJzbWFsbFwiICpuZ0lmPVwiYWRkUnVsZVNldFwiIChvbkNsaWNrKT1cImFkZFJ1bGVTZXQoKVwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICAgICAgPHctYnV0dG9uIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNPYmplY3QuYWR2YW5jZWRTZWFyY2gucmVtb3ZlUnVsZVNldEJ1dHRvbkxhYmVsXCIgdHlwZT1cInRlcnRpYXJ5XCIgaWNvbj1cInBpIHBpLW1pbnVzXCIgc2l6ZT1cInNtYWxsXCIgKm5nSWY9XCJyZW1vdmVSdWxlU2V0XCIgKG9uQ2xpY2spPVwicmVtb3ZlUnVsZVNldCgpXCI+PC93LWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUFycm93SWNvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIGljb249XCJwaSBwaS1hbmdsZS1yaWdodFwiIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0XCI+PC9idXR0b24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeVJlbW92ZUJ1dHRvbj1cImxldCBydWxlOyBsZXQgcmVtb3ZlUnVsZT1yZW1vdmVSdWxlXCI+XHJcbiAgICAgICAgICAgIDx3LWJ1dHRvbiBjbGFzcz1cIlwiIGxhYmVsPVwiXCIgc2l6ZT1cInNtYWxsXCIgdHlwZT1cInRlcnRpYXJ5XCIgaWNvbj1cInBpIHBpLXRpbWVzXCIgKG9uQ2xpY2spPVwicmVtb3ZlUnVsZShydWxlKVwiPjwvdy1idXR0b24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeVN3aXRjaEdyb3VwPVwibGV0IHJ1bGVzZXQ7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicnVsZXNldFwiPlxyXG4gICAgICAgICAgICAgIDx3LXNlbGVjdC1idXR0b24gKm5nSWY9XCJmaWx0ZXJQYW5lbE9iamVjdC5hbGxvd0xvZ2ljYWxSdWxlXCIgW3N0YXRlT3B0aW9uc109XCJbe2xhYmVsOiAnQW5kJywgdmFsdWU6ICdhbmQnfSwge2xhYmVsOiAnT3InLCB2YWx1ZTogJ29yJ31dXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicnVsZXNldC5jb25kaXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUpPVwicnVsZXNldC5jb25kaXRpb24gPSAkZXZlbnRcIj5cclxuICAgICAgICAgICAgICA8L3ctc2VsZWN0LWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUVudGl0eT1cImxldCBydWxlOyBsZXQgZW50aXRpZXM9ZW50aXRpZXM7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8cC1kcm9wZG93biBjbGFzcz1cIm1yLTMgdy1lZGl0LXNlbGVjdC1zbWFsbFwiICpuZ0lmPVwiZmlsdGVyUGFuZWxPYmplY3QuZW5pdHlNb2RlXCIgYXBwZW5kVG89XCJib2R5XCIgW29wdGlvbnNdPVwiZW50aXRpZXNcIiBbKG5nTW9kZWwpXT1cInJ1bGUuZW50aXR5XCIgb3B0aW9uTGFiZWw9XCJuYW1lXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudCwgcnVsZSlcIj48L3AtZHJvcGRvd24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUZpZWxkPVwibGV0IHJ1bGU7IGxldCBmaWVsZHM9ZmllbGRzOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2U7IGxldCBnZXRGaWVsZHMgPSBnZXRGaWVsZHNcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxdWVyeS1idWlsZGVyLWZpZWxkLXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPHAtZHJvcGRvd24gY2xhc3M9XCJtci0zIHctZWRpdC1zZWxlY3Qtc21hbGxcIiBhcHBlbmRUbz1cImJvZHlcIiBbb3B0aW9uc109XCJnZXRGaWVsZHMocnVsZS5lbnRpdHkpXCIgWyhuZ01vZGVsKV09XCJydWxlLmZpZWxkXCIgb3B0aW9uTGFiZWw9XCJuYW1lXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudCwgcnVsZSlcIj48L3AtZHJvcGRvd24+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5T3BlcmF0b3I9XCJsZXQgcnVsZTsgbGV0IG9wZXJhdG9ycz1vcGVyYXRvcnM7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInF1ZXJ5LWJ1aWxkZXItb3BlcmF0b3Itd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8cC1kcm9wZG93biBjbGFzcz1cIm1yLTMgdy1lZGl0LXNlbGVjdC1zbWFsbFwiIGFwcGVuZFRvPVwiYm9keVwiIFsobmdNb2RlbCldPVwicnVsZS5vcGVyYXRvclwiIFtvcHRpb25zXT1cIm9wZXJhdG9yc1wiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKHJ1bGUpXCI+PC9wLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLkJvb2xlYW4udG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDx3LXRvZ2dsZS1idXR0b24gY2xhc3M9XCJtci0zXCIgc2l6ZT1cInNtYWxsXCIgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgb25MYWJlbD1cIlRydWVcIiBvZmZMYWJlbD1cIkZhbHNlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoKVwiPjwvdy10b2dnbGUtYnV0dG9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5EYXRldGltZS50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPHctZWRpdC1jYWxlbmRhciBjbGFzcz1cImZpZWxkLWdhcFwiIGFwcGVuZFRvPVwiYm9keVwiIHNpemU9XCJzbWFsbFwiIFtzaG93SWNvbl09XCJmYWxzZVwiIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIChvbkNoYW5nZSk9XCJvbkNoYW5nZSgpXCIgW3Nob3dUaW1lXT1cInRydWVcIiBbc2hvd1NlY29uZHNdPVwidHJ1ZVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLmRhdGV0aW1lXCIgW2Rpc3BsYXlJbmxpbmVCbG9ja109XCJ0cnVlXCI+PC93LWVkaXQtY2FsZW5kYXI+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnF1ZXJ5SW5wdXQ9XCJsZXQgcnVsZTsgbGV0IGZpZWxkPWZpZWxkOyB0eXBlOiBxYkRhdGFUeXBlRW51bS5EZWNpbWFsLnRvU3RyaW5nKCk7IGxldCBvbkNoYW5nZT1vbkNoYW5nZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8cC1pbnB1dE51bWJlciBjbGFzcz1cIm1yLTNcIiBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiBpbnB1dElkPVwibWlubWF4XCIgaW5wdXRJZD1cIm1pbm1heFwiIG1vZGU9XCJkZWNpbWFsXCIgW21pbkZyYWN0aW9uRGlnaXRzXT1cIjJcIiBbbWF4RnJhY3Rpb25EaWdpdHNdPVwiNVwiIFttaW5dPVwiMFwiIFttYXhdPVwiMTAwXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoKVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLmRlY2ltYWxcIj4gPC9wLWlucHV0TnVtYmVyPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpxdWVyeUlucHV0PVwibGV0IHJ1bGU7IGxldCBvcHRpb25zPW9wdGlvbnM7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLkxpc3QudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXVlcnktYnVpbGRlci1pbnB1dC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDx3LWxpc3QtZmllbGQgW29wdGlvbnNdPVwib3B0aW9uc1wiIFsobmdNb2RlbCldPVwicnVsZS52YWx1ZVwiIFtvcGVyYXRvcl09XCJydWxlLm9wZXJhdG9yXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2UoKVwiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGlvbnNPYmplY3QuZmllbGRzUGxhY2Vob2xkZXJzLmxpc3RcIj48L3ctbGlzdC1maWVsZD5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgZmllbGQ9ZmllbGQ7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLk51bWJlci50b1N0cmluZygpOyBsZXQgb25DaGFuZ2U9b25DaGFuZ2VcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPHAtaW5wdXROdW1iZXIgW3VzZUdyb3VwaW5nXT1cImZhbHNlXCIgaW5wdXRTdHlsZUNsYXNzPVwiZmxleCBmbGV4LTFcIiBzdHlsZUNsYXNzPVwiZmxleCBmbGV4LTFcIiBjbGFzcz1cImZpZWxkLWdhcCB3LWVkaXQtaW5wdXQtbnVtYmVyLXNtYWxsIHctZWRpdC1pbnB1dC1udW1iZXItc21hbGwtaGVpZ2h0XCIgWyhuZ01vZGVsKV09XCJydWxlLnZhbHVlXCIgaW5wdXRJZD1cIm1pbm1heFwiIGlucHV0SWQ9XCJtaW5tYXhcIiBbbWluXT1cIjBcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMubnVtYmVyXCI+IDwvcC1pbnB1dE51bWJlcj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqcXVlcnlJbnB1dD1cImxldCBydWxlOyBsZXQgZmllbGQ9ZmllbGQ7IHR5cGU6IHFiRGF0YVR5cGVFbnVtLlRleHQudG9TdHJpbmcoKTsgbGV0IG9uQ2hhbmdlPW9uQ2hhbmdlXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cIm1yLTMgcXVlcnktYnVpbGRlci1pbnB1dC13aWR0aCB3LWVkaXQtaW5wdXQtdGV4dC1zbWFsbC1oZWlnaHQgd2FwcC1pbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBbKG5nTW9kZWwpXT1cInJ1bGUudmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgpXCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0aW9uc09iamVjdC5maWVsZHNQbGFjZWhvbGRlcnMudGV4dFwiLz5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8L3F1ZXJ5LWJ1aWxkZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0FkdmFuY2VkU2VhcmNoICYmIGdyb3VwZWRRdWVyeS5ydWxlcy5sZW5ndGg9PTBcIiA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9RdWVyeURhdGFcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI25vUXVlcnlEYXRhPlxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LXdyYXAgY2FyZC1jb250YWluZXIgc3VyZmFjZS01MCBtYi0zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHctZnVsbCBoLTRyZW0gdGV4dC1ncmF5LTkwMCBib3JkZXItcm91bmQgbS0yXCI+XHJcbiAgICAgICAge3t0cmFuc2xhdGlvbnNPYmplY3Qubm9SdWxlc0xhYmVsfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
|
@@ -3039,13 +3039,16 @@ class WFilterPanelComponent {
|
|
|
3039
3039
|
this.storedQuery.advancedQueryValue = this.stringDateParse(this.storedQuery.advancedQueryValue);
|
|
3040
3040
|
this.setNoFiltersQueryType(lastQuery)
|
|
3041
3041
|
.then((resQueries) => {
|
|
3042
|
-
lastQuery = this.deleteFieldsWithoutValue(lastQuery);
|
|
3043
|
-
lastQuery = this.handleEmptyFieldsQuery(lastQuery);
|
|
3044
|
-
this.lastQuery.emit(lastQuery);
|
|
3045
|
-
}).then((resQueries) => {
|
|
3046
3042
|
if (resQueries.type != 0) {
|
|
3047
3043
|
this.inverseNullableFilterOperationHandle(lastQuery.basic ? lastQuery.basic : lastQuery.advanced);
|
|
3048
3044
|
}
|
|
3045
|
+
}).then((res) => {
|
|
3046
|
+
lastQuery = this.deleteFieldsWithoutValue(lastQuery);
|
|
3047
|
+
lastQuery = this.handleEmptyFieldsQuery(lastQuery);
|
|
3048
|
+
this.nullableFilterOperationHandlePromise(lastQuery)
|
|
3049
|
+
.then((res => {
|
|
3050
|
+
this.lastQuery.emit(lastQuery);
|
|
3051
|
+
}));
|
|
3049
3052
|
});
|
|
3050
3053
|
}
|
|
3051
3054
|
}
|
|
@@ -3135,6 +3138,12 @@ class WFilterPanelComponent {
|
|
|
3135
3138
|
resolve(queries);
|
|
3136
3139
|
});
|
|
3137
3140
|
}
|
|
3141
|
+
nullableFilterOperationHandlePromise(query) {
|
|
3142
|
+
return new Promise((resolve, reject) => {
|
|
3143
|
+
this.nullableFilterOperationHandle(query);
|
|
3144
|
+
resolve(query);
|
|
3145
|
+
});
|
|
3146
|
+
}
|
|
3138
3147
|
onClearClicked() {
|
|
3139
3148
|
this.resetBasicQueryValues();
|
|
3140
3149
|
this.advancedQuery.rules = [];
|
|
@@ -3162,7 +3171,7 @@ class WFilterPanelComponent {
|
|
|
3162
3171
|
});
|
|
3163
3172
|
}
|
|
3164
3173
|
else {
|
|
3165
|
-
if (query.operator === OperatorEnum.Nullable) {
|
|
3174
|
+
if (query.operator === OperatorEnum.Nullable || ((query.operator == 'is' || query.operator == 'is not') && (query.value == 1 || query.value == 0))) {
|
|
3166
3175
|
if (query.value == 1) {
|
|
3167
3176
|
query.operator = 'is not';
|
|
3168
3177
|
}
|