simpo-component-library 3.6.535 → 3.6.537
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/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +2 -2
- package/esm2022/lib/ecommerce/sections/product-list/product-list.component.mjs +28 -7
- package/esm2022/lib/ecommerce/sections/user-profile/user-profile.component.mjs +3 -3
- package/esm2022/lib/sections/appointment-form/appointment-booking/appointment-booking/appointment-booking.component.mjs +3 -3
- package/esm2022/lib/sections/header-section/header-section.component.mjs +10 -3
- package/esm2022/lib/sections/text-section/text-section.component.mjs +3 -3
- package/esm2022/lib/services/rest.service.mjs +3 -1
- package/fesm2022/simpo-component-library.mjs +45 -15
- package/fesm2022/simpo-component-library.mjs.map +1 -1
- package/lib/directive/background-directive.d.ts +1 -1
- package/lib/directive/button-directive.directive.d.ts +1 -1
- package/lib/directive/color.directive.d.ts +1 -1
- package/lib/ecommerce/sections/new-collection/new-collection.component.d.ts +1 -1
- package/lib/ecommerce/sections/product-desc/product-desc.component.d.ts +2 -2
- package/lib/ecommerce/sections/product-list/product-list.component.d.ts +4 -3
- package/lib/ecommerce/sections/store-list/store-list.component.d.ts +1 -1
- package/lib/ecommerce/sections/store-page/store-page.component.d.ts +1 -1
- package/lib/elements/link-editor/link-editor.component.d.ts +1 -1
- package/lib/elements/pricing-s1/pricing-s1.component.d.ts +1 -1
- package/lib/sections/banner-grid-section/banner-grid-section.component.d.ts +1 -1
- package/lib/sections/contact-us/contact-us.component.d.ts +2 -2
- package/lib/sections/faq-section/faq-section.component.d.ts +1 -1
- package/lib/sections/header-section/header-section.component.d.ts +2 -1
- package/lib/sections/moving-text/moving-text.component.d.ts +1 -1
- package/lib/sections/pricing-section/pricing-section.component.d.ts +3 -3
- package/lib/services/rest.service.d.ts +2 -0
- package/package.json +1 -1
- package/simpo-component-library-3.6.537.tgz +0 -0
- package/simpo-component-library-3.6.535.tgz +0 -0
|
@@ -142,7 +142,7 @@ export class ProductDescComponent extends BaseSection {
|
|
|
142
142
|
this.featureProductData = new FeaturedProductModal(this.data);
|
|
143
143
|
this.recentViewedData = new FeaturedProductModal(this.data, true);
|
|
144
144
|
this.styles = this.data?.styles;
|
|
145
|
-
this.currentImg = this.responseData?.itemImages[0]?.imgUrl;
|
|
145
|
+
this.currentImg = this.responseData?.itemImages[0]?.imgUrl ?? "";
|
|
146
146
|
this.button = this.data?.action?.buttons[0];
|
|
147
147
|
this.buttonId = (this.data ? this.data.id : '') + (this.button ? this.button.id : '');
|
|
148
148
|
this.pincode = localStorage.getItem('pincode');
|
|
@@ -929,4 +929,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
929
929
|
type: HostListener,
|
|
930
930
|
args: ["window: resize", ["$event"]]
|
|
931
931
|
}] } });
|
|
932
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZXNjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWNvbW1lcmNlL3NlY3Rpb25zL3Byb2R1Y3QtZGVzYy9wcm9kdWN0LWRlc2MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvcHJvZHVjdC1kZXNjL3Byb2R1Y3QtZGVzYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBMEIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5JLE9BQU8sRUFBRSxxQkFBcUIsRUFBbUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRyxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRXpGLE9BQU8sV0FBVyxNQUFNLCtCQUErQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQU1qRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQs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LGdHQUNuQixlQUFlLG1GQUNmLHFCQUFxQix5S0FDckIsMEJBQTBCOzs0RkFNakIsb0JBQW9CO2tCQWxDaEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxvQkFBb0I7d0JBQ3BCLE9BQU87d0JBQ1AsY0FBYzt3QkFDZCxXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQix3QkFBd0I7d0JBQ3hCLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIseUJBQXlCO3dCQUN6QixvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixlQUFlO3dCQUNmLFdBQVc7d0JBQ1gsdUJBQXVCO3dCQUN2QixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixxQkFBcUI7d0JBQ3JCLDBCQUEwQjtxQkFDM0IsYUFDVSxDQUFDLGNBQWMsQ0FBQzs7MEJBK0J4QixNQUFNOzJCQUFDLFdBQVc7Z1dBMUJrQyxlQUFlO3NCQUFyRSxTQUFTO3VCQUFDLHVCQUF1QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDcEMsRUFBRTtzQkFBbEIsU0FBUzt1QkFBQyxJQUFJO2dCQUdOLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQTRTTixhQUFhO3NCQURaLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbnB1dCwgUExBVEZPUk1fSUQsIFJlbmRlcmVyMiwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQcm9kdWN0RGVzY01vZGFsLCBQcm9kdWN0RGVzY1N0eWxlc01vZGFsIH0gZnJvbSAnLi9wcm9kdWN0LWRlc2MubW9kYWwnO1xyXG5pbXBvcnQgeyBjaGVja0l0ZW1BbHJlYWR5QWRkZWQsIEl0ZW1JbWFnZSwgSXRlbVZhcmlhbnQsIFByb2R1Y3QgfSBmcm9tICcuLi8uLi9zdHlsZXMvcHJvZHVjdC5tb2RhbCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQmFja2dyb3VuZE1vZGVsLCBCdXR0b25Nb2RlbCwgTGF5T3V0TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zdHlsZXMvc3R5bGUubW9kZWwnO1xyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vLi4vLi4vc2VjdGlvbnMvQmFzZVNlY3Rpb24nO1xyXG5pbXBvcnQgeyBBbmltYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYW5pbWF0aW9uLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTaW1wb0NvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi8uLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NhcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTmd4SW1hZ2Vab29tTW9kdWxlIH0gZnJvbSAnbmd4LWltYWdlLXpvb20nO1xyXG5pbXBvcnQgeyBGZWF0dXJlZFByb2R1Y3RzQ29tcG9uZW50IH0gZnJvbSBcIi4uL2ZlYXR1cmVkLXByb2R1Y3RzL2ZlYXR1cmVkLXByb2R1Y3RzLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBGZWF0dXJlZFByb2R1Y3RNb2RhbCB9IGZyb20gJy4uL2ZlYXR1cmVkLXByb2R1Y3RzL2ZlYXR1cmVkLXByb2R1Y3RzLm1vZGFsJztcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT3JkZXJlZEl0ZW1zIH0gZnJvbSAnLi4vLi4vc3R5bGVzL09yZGVyZWRJdGVtcy5tb2RhbCc7XHJcbmltcG9ydCB7IEJVU0lORVNTX0NPTlNUQU5UUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9idXNpbmVzcy5jb25zdGFudCc7XHJcbmltcG9ydCB7IFRvYXN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b2FzdCc7XHJcbmltcG9ydCB7IE1lbnVJdGVtLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgTWV0YSwgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBJdGVtVmFyaWVudENvbXBvbmVudCB9IGZyb20gJy4uL2l0ZW0tdmFyaWVudC9pdGVtLXZhcmllbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0Qm90dG9tU2hlZXQsIE1hdEJvdHRvbVNoZWV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYm90dG9tLXNoZWV0JztcclxuaW1wb3J0IHsgQmFja2dyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9iYWNrZ3JvdW5kLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNpbXBvV3JhcENvbW50YWluZXIgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvd3JhcC1jb250YWluZXJzLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2NvbG9yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNvY2lhSWNvbnNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9lbGVtZW50cy9zb2NpYS1pY29ucy9zb2NpYS1pY29ucy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSYXRpbmdNb2R1bGUgfSBmcm9tICdwcmltZW5nL3JhdGluZyc7XHJcbmltcG9ydCB7IFJldmlldyB9IGZyb20gJy4uLy4uL3N0eWxlcy9yZXZpZXcubW9kYWwnO1xyXG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3VzZXIubW9kYWwnO1xyXG5pbXBvcnQgeyBTcGVlZERpYWxNb2R1bGUgfSBmcm9tICdwcmltZW5nL3NwZWVkZGlhbCc7XHJcbmltcG9ydCB7IEN1c3RvbWVyUmV2aWV3Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vc2VjdGlvbnMvY3VzdG9tZXItcmV2aWV3L2N1c3RvbWVyLXJldmlldy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQYW5lbE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcGFuZWwnO1xyXG5pbXBvcnQgeyBTdmdEaXZpZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZWxlbWVudHMvc3ZnLWRpdmlkZXIvc3ZnLWRpdmlkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29ybmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2Nvcm5lci1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCdXR0b25FZGl0b3JEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYnV0dG9uLWVkaXRvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9zcGFjaW5nLWhvcml6b250YWwuZGlyZWN0aXZlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tcHJvZHVjdC1kZXNjJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgU2ltcG9Db21wb25lbnRNb2R1bGUsXHJcbiAgICBNYXRJY29uLFxyXG4gICAgQ29sb3JEaXJlY3RpdmUsXHJcbiAgICAvL0RJUkVDVElWRVxyXG4gICAgU2ltcG9XcmFwQ29tbnRhaW5lcixcclxuICAgIEJhY2tncm91bmREaXJlY3RpdmUsXHJcbiAgICBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBBbmltYXRpb25EaXJlY3RpdmUsXHJcbiAgICBDb250ZW50Rml0RGlyZWN0aXZlLFxyXG4gICAgSG92ZXJEaXJlY3RpdmUsXHJcbiAgICBOZ3hJbWFnZVpvb21Nb2R1bGUsXHJcbiAgICBGZWF0dXJlZFByb2R1Y3RzQ29tcG9uZW50LFxyXG4gICAgTWF0Qm90dG9tU2hlZXRNb2R1bGUsXHJcbiAgICBTb2NpYUljb25zQ29tcG9uZW50LFxyXG4gICAgUmF0aW5nTW9kdWxlLFxyXG4gICAgU3BlZWREaWFsTW9kdWxlLFxyXG4gICAgVG9hc3RNb2R1bGUsXHJcbiAgICBDdXN0b21lclJldmlld0NvbXBvbmVudCxcclxuICAgIFBhbmVsTW9kdWxlLFxyXG4gICAgU3ZnRGl2aWRlckNvbXBvbmVudCxcclxuICAgIENvcm5lckRpcmVjdGl2ZSxcclxuICAgIEJ1dHRvbkVkaXRvckRpcmVjdGl2ZSxcclxuICAgIFNwYWNpbmdIb3Jpem9udGFsRGlyZWN0aXZlXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2R1Y3QtZGVzYy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3Byb2R1Y3QtZGVzYy5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZHVjdERlc2NDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2VjdGlvbiB7XHJcbiAgQFZpZXdDaGlsZChDdXN0b21lclJldmlld0NvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pIHJldmlld0NvbXBvbmVudCE6IEN1c3RvbWVyUmV2aWV3Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2QyJykgZDIhOiBFbGVtZW50UmVmO1xyXG5cclxuXHJcbiAgQElucHV0KCkgZGF0YT86IFByb2R1Y3REZXNjTW9kYWw7XHJcbiAgQElucHV0KCkgcmVzcG9uc2VEYXRhITogUHJvZHVjdDtcclxuICBASW5wdXQoKSBpbmRleD86IG51bWJlcjtcclxuICBASW5wdXQoKSBlZGl0PzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBkZWxldGU/OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGN1c3RvbUNsYXNzPzogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKSBuZXh0Q29tcG9uZW50Q29sb3I/OiBCYWNrZ3JvdW5kTW9kZWw7XHJcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGZlYXR1cmVQcm9kdWN0RGF0YTogRmVhdHVyZWRQcm9kdWN0TW9kYWwgfCBudWxsID0gbnVsbDtcclxuICBwdWJsaWMgcmVjZW50Vmlld2VkRGF0YTogRmVhdHVyZWRQcm9kdWN0TW9kYWwgfCBudWxsID0gbnVsbDtcclxuICBwdWJsaWMgdmFyaWVudHM6IE1hcDxzdHJpbmcsIHN0cmluZ1tdPiA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmdbXT4oKTtcclxuICBwdWJsaWMgc2VsZWN0ZWRWYXJpZW50OiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcclxuXHJcbiAgcHVibGljIHJlbGF0ZWRQcm9kdWN0RGF0YTogUHJvZHVjdFtdID0gW107XHJcbiAgcHVibGljIHByb2R1Y3RSZXZpZXc6IG51bWJlciA9IDA7XHJcbiAgcHVibGljIHRvdGFsUmV2aWV3OiBudW1iZXIgPSA1O1xyXG4gIHB1YmxpYyBzaG93UmV2aWV3OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNlbGVjdGVkUmV2aWV3OiBhbnk7XHJcbiAgcHVibGljIGN1cnJlbnRJbWFnZUluZGV4OiBudW1iZXIgPSAwO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZXZlbnRTZXJ2aWNlOiBFdmVudHNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXRhVGFnU2VydmljZTogTWV0YSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGl0bGVTZXJ2aWNlOiBUaXRsZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYm90dG9tU2hlZXQ6IE1hdEJvdHRvbVNoZWV0LFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBtYXREaWFsb2c6IE1hdERpYWxvZyxcclxuXHJcbiAgKSB7XHJcblxyXG4gICAgc3VwZXIoKVxyXG5cclxuICAgIC8vIHRoaXMubWV0YVRhZ1NlcnZpY2UudXBkYXRlVGFnKHsgbmFtZTogXCJkZXNjcmlwdGlvblwiLCBjb250ZW50OiBcIlRlc3RpbmdcIiB9KTtcclxuICAgIC8vIHRoaXMubWV0YVRhZ1NlcnZpY2UudXBkYXRlVGFnKHsgcHJvcGVydHk6IFwib2c6dGl0bGVcIiwgY29udGVudDogXCJUaXRsZVwiIH0pO1xyXG4gICAgLy8gdGhpcy5tZXRhVGFnU2VydmljZS51cGRhdGVUYWcoeyBwcm9wZXJ0eTogXCJvZzppbWFnZVwiLCBjb250ZW50OiBcImh0dHBzOi8vZGV2LWJlZW9zLnMzLmFtYXpvbmF3cy5jb20vbGlicmFyeS1tZWRpYS84NDg3MjhjMTcyNjA4NjAwOTY1NmltYWdlcy5wbmdcIiB9KTtcclxuICAgIC8vIHRoaXMubWV0YVRhZ1NlcnZpY2UudXBkYXRlVGFnKHsgcHJvcGVydHk6IFwib2c6ZGVzY3JpcHRpb25cIiwgY29udGVudDogXCJEZXNjcmlwdGlvblwiIH0pO1xyXG4gICAgLy8gdGhpcy5tZXRhVGFnU2VydmljZS51cGRhdGVUYWcoeyBwcm9wZXJ0eTogXCJvZzpzaXRlX25hbWVcIiwgY29udGVudDogXCJuYXR1cmFsc1wiIH0pO1xyXG4gICAgLy8gdGhpcy5tZXRhVGFnU2VydmljZS51cGRhdGVUYWcoeyBwcm9wZXJ0eTogXCJvZzp0eXBlXCIsIGNvbnRlbnQ6IFwid2Vic2l0ZVwiIH0pO1xyXG4gICAgLy8gdGhpcy5tZXRhVGFnU2VydmljZS51cGRhdGVUYWcoeyBwcm9wZXJ0eTogXCJvZzp1cmxcIiwgY29udGVudDogXCJodHRwczovL25hdHVyYWxzLmRldi5zaW1wby5haS9cIiB9KTtcclxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgIHRoaXMuZ2V0U2NyZWVuU2l6ZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLnNob3dMb2FkaW5nU2NyZWVuLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSByZXNwb25zZTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBidXR0b25JZD86IHN0cmluZztcclxuICBidXR0b24/OiBCdXR0b25Nb2RlbFxyXG4gIHN0eWxlcz86IFByb2R1Y3REZXNjU3R5bGVzTW9kYWw7XHJcbiAgc3ViSW5kdXN0cnlOYW1lOiBzdHJpbmcgPSAnJ1xyXG4gIGlzSXRlbUFzRmF2b3JpdGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0l0ZW1BZGRlZEFzVHJpYWw6IGJvb2xlYW4gPSBmYWxzZVxyXG4gIHByaXZhdGUgVVNFUl9DQVJUOiBPcmRlcmVkSXRlbXNbXSB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgVVNFUl9XSVNITElTVDogT3JkZXJlZEl0ZW1zW10gfCBudWxsID0gbnVsbDtcclxuICBwdWJsaWMgaXRlbUltYWdlczogSXRlbUltYWdlW10gPSBbXTtcclxuICBpdGVtczogTWVudUl0ZW1bXSB8IG51bGwgPSBudWxsO1xyXG4gIGJ1c2luZXNzRGV0YWlsczogYW55O1xyXG4gIHRyaWFsQ2FydEl0ZW06IGFueVtdID0gW11cclxuXHJcbiAgaXNQaW5Db2RlOiBib29sZWFuID0gdHJ1ZTtcclxuICB0b1Nob3dJbkpld2VsbGVyeTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIElzRWNvbW1lcmNlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyB0aGlzLmJ1c2luZXNzRGV0YWlscyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdiRGV0YWlscycpXHJcbiAgICAvLyBpZih0aGlzLmJ1c2luZXNzRGV0YWlscyAhPSBudWxsKSB7XHJcbiAgICAvLyAgIHRoaXMuYnVzaW5lc3NEZXRhaWxzID0gSlNPTi5wYXJzZSh0aGlzLmJ1c2luZXNzRGV0YWlscyk7XHJcbiAgICAvLyAgIHRoaXMuc3ViSW5kdXN0cnlOYW1lID0gdGhpcy5idXNpbmVzc0RldGFpbHMuc3ViSW5kdXN0cnlOYW1lO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIGlmICh3aW5kb3c/LmxvY2F0aW9uPy5vcmlnaW4/LmluY2x1ZGVzKCdjYXJhdGxhbmUnKSB8fCB3aW5kb3c/LmxvY2F0aW9uPy5vcmlnaW4/LmluY2x1ZGVzKCdvcnJhJykpIHtcclxuICAgICAgdGhpcy50b1Nob3dJbkpld2VsbGVyeSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5nZXRFY29tbWVyY2VDb25maWdzKCk7XHJcbiAgICB0aGlzLnN1YkluZHVzdHJ5TmFtZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzdWJJbmR1c3RyeU5hbWUnKSA/PyBcIlwiO1xyXG4gICAgdGhpcy5mZWF0dXJlUHJvZHVjdERhdGEgPSBuZXcgRmVhdHVyZWRQcm9kdWN0TW9kYWwodGhpcy5kYXRhKTtcclxuICAgIHRoaXMucmVjZW50Vmlld2VkRGF0YSA9IG5ldyBGZWF0dXJlZFByb2R1Y3RNb2RhbCh0aGlzLmRhdGEsIHRydWUpO1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLmRhdGE/LnN0eWxlcztcclxuICAgIHRoaXMuY3VycmVudEltZyA9IHRoaXMucmVzcG9uc2VEYXRhPy5pdGVtSW1hZ2VzWzBdPy5pbWdVcmxcclxuICAgIHRoaXMuYnV0dG9uID0gdGhpcy5kYXRhPy5hY3Rpb24/LmJ1dHRvbnNbMF07XHJcbiAgICB0aGlzLmJ1dHRvbklkID0gKHRoaXMuZGF0YSA/IHRoaXMuZGF0YS5pZCA6ICcnKSArICh0aGlzLmJ1dHRvbiA/IHRoaXMuYnV0dG9uLmlkIDogJycpO1xyXG5cclxuICAgIHRoaXMucGluY29kZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwaW5jb2RlJyk7XHJcbiAgICBpZiAodGhpcy5waW5jb2RlKSB7XHJcbiAgICAgIHRoaXMuZ2V0U3RvcmVEZXRhaWxzKClcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLml0ZW1zID0gW1xyXG4gICAgICAvLyB7XHJcbiAgICAgIC8vICAgaWNvbjogXCJwaSBwaS1oZWFydFwiLFxyXG4gICAgICAvLyAgIGNvbW1hbmQ6ICgpID0+IHtcclxuICAgICAgLy8gICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3dpc2hsaXN0J10pO1xyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gfSxcclxuICAgICAge1xyXG4gICAgICAgIGljb246IFwicGkgcGktc2hhcmUtYWx0XCIsXHJcbiAgICAgICAgY29tbWFuZDogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaGFyZVByb2R1Y3QoKTtcclxuICAgICAgICAgIC8vIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcclxuICAgICAgICAgIC8vIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdpbmZvJywgc3VtbWFyeTogJ0NvcGllZCcsIGRldGFpbDogJ1lvdSBjYW4gc2hhcmUgdGhlIHVybCcsIGtleTogJ3dpc2hsaXN0JyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIF07XHJcbiAgICB0aGlzLmdldFByb2R1Y3RCeUNhdGVnb3J5KCk7XHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2Uuc2hvd0xvYWRpbmdTY3JlZW4uc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHJlc3BvbnNlO1xyXG4gICAgfSlcclxuICAgIHRoaXMuSXNFY29tbWVyY2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIndlYnNpdGVUeXBlXCIpICE9ICdTVEFUSUMnID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHFQYXJhbSkgPT4ge1xyXG4gICAgICBjb25zdCBwcm9kdWN0SWQgPSBxUGFyYW1bXCJpZFwiXTtcclxuICAgICAgaWYgKHByb2R1Y3RJZCkge1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzSXRlbUFzRmF2b3JpdGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFByb2R1Y3REZXRhaWxzKHByb2R1Y3RJZCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0gcmVzcG9uc2VbMF07XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YT8uaXRlbVZhcmlhbnQuZm9yRWFjaCgodmFyaWVudDogSXRlbVZhcmlhbnQsIGlkeDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmllbnQucXVhbnRpdHkgPSAwO1xyXG4gICAgICAgICAgICBPYmplY3Qua2V5cyh2YXJpZW50LnByb3BlcnRpZXMpLmZvckVhY2goKHZhcmllbnRLZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChpZHggPT0gMClcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYXJpZW50LnNldCh2YXJpZW50S2V5LCB2YXJpZW50LnByb3BlcnRpZXNbdmFyaWVudEtleV0pO1xyXG4gICAgICAgICAgICAgIGlmICghdGhpcy52YXJpZW50cy5nZXQodmFyaWVudEtleSk/LmluY2x1ZGVzKHZhcmllbnQucHJvcGVydGllc1t2YXJpZW50S2V5XSkpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhcmllbnRzLnNldCh2YXJpZW50S2V5LCBbLi4uKHRoaXMudmFyaWVudHMuZ2V0KHZhcmllbnRLZXkpID8/IFtdKSwgdmFyaWVudC5wcm9wZXJ0aWVzW3ZhcmllbnRLZXldXSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UmVsYXRlZFByb2R1Y3RzKCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgY29uc3QgaXRlbVZhcmlhbnQ6IEl0ZW1WYXJpYW50IHwgbnVsbCA9IHRoaXMuZ2V0SXRlbVZhcmllbnQoKTtcclxuICAgICAgICAgIGlmIChpdGVtVmFyaWFudCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5pdGVtSW1hZ2VzID0gaXRlbVZhcmlhbnQudmFyaWFudEltYWdlcztcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEudmFyaWVudElkID0gaXRlbVZhcmlhbnQudmFyaWFudElkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUodGhpcy5yZXNwb25zZURhdGE/Lm5hbWUpO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLnJlc3BvbnNlRGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLml0ZW1JbWFnZXMgPSB0aGlzLnJlc3BvbnNlRGF0YS5pdGVtSW1hZ2VzO1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5xdWFudGl0eSA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlckNhcnQoKS50aGVuKChjYXJ0UmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICBjYXJ0UmVzcG9uc2Uub25zdWNjZXNzID0gKGNhcnREYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuVVNFUl9DQVJUID0gY2FydERhdGEudGFyZ2V0LnJlc3VsdCBhcyB1bmtub3duIGFzIE9yZGVyZWRJdGVtc1tdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5VU0VSX0NBUlQ/LmZvckVhY2goKGl0ZW06IE9yZGVyZWRJdGVtcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoaXRlbS5pdGVtSWQgPT0gcHJvZHVjdElkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVzcG9uc2VEYXRhPy5pdGVtVmFyaWFudD8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1WYXJpYW50ICYmIGl0ZW0udmFyaWVudElkID09IGl0ZW1WYXJpYW50LnZhcmlhbnRJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtVmFyaWFudC5xdWFudGl0eSA9IGl0ZW0ucXVhbnRpdHk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnF1YW50aXR5ID0gaXRlbS5xdWFudGl0eTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucXVhbnRpdHkgPSBpdGVtLnF1YW50aXR5O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcldoaXNobGlzdCgpLnRoZW4oKHdpc2hsaXN0UmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICB3aXNobGlzdFJlc3BvbnNlLm9uc3VjY2VzcyA9ICh3aGlzbGlzdERhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5VU0VSX1dJU0hMSVNUID0gd2hpc2xpc3REYXRhLnRhcmdldC5yZXN1bHQgYXMgdW5rbm93biBhcyBPcmRlcmVkSXRlbXNbXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuVVNFUl9XSVNITElTVD8uZm9yRWFjaCgoaXRlbTogT3JkZXJlZEl0ZW1zKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChpdGVtLml0ZW1JZCA9PSBwcm9kdWN0SWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZXNwb25zZURhdGE/Lml0ZW1WYXJpYW50Py5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtVmFyaWFudDogSXRlbVZhcmlhbnQgfCBudWxsID0gdGhpcy5nZXRJdGVtVmFyaWVudCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1WYXJpYW50ICYmIGl0ZW1WYXJpYW50LnZhcmlhbnRJZCA9PSBpdGVtLnZhcmllbnRJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtVmFyaWFudC53aXNobGlzdCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNJdGVtQXNGYXZvcml0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNJdGVtQXNGYXZvcml0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tJdGVtQWxyZWFkeUFkZGVkSW5UcmlhbCgpO1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRJbWcgPSB0aGlzLnJlc3BvbnNlRGF0YT8uaXRlbUltYWdlcz8uWzBdPy5pbWdVcmw7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UHJvZHVjdEJ5Q2F0ZWdvcnkoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ2V0UmV2aWV3cyhwcm9kdWN0SWQpXHJcbiAgICB9KVxyXG4gIH1cclxuICB2YXJpZW50TG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHJlY2VudFZpZXdJdGVtTGlzdDogUHJvZHVjdFtdID0gW107XHJcbiAgZ2V0UmVsYXRlZFByb2R1Y3RzKCkge1xyXG4gICAgY29uc3QgdXNlckRldGFpbHM6IFVzZXIgfCBudWxsID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCk7XHJcbiAgICBpZiAoISF1c2VyRGV0YWlscykge1xyXG4gICAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFJlY2VudFZpZXdQcm9kdWN0KHVzZXJEZXRhaWxzLnVzZXJJZCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVjZW50Vmlld0l0ZW1MaXN0ID0gcmVzcG9uc2U7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG4gIHNlbGVjdFZhcmllbnQoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudmFyaWVudExvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhcmllbnQuc2V0KGtleSwgdmFsdWUpO1xyXG4gICAgdGhpcy5yZXNwb25zZURhdGE/Lml0ZW1WYXJpYW50Py5mb3JFYWNoKCh2YXJpZW50OiBJdGVtVmFyaWFudCkgPT4ge1xyXG4gICAgICBsZXQgZm91bmRWYXJpZW50ID0gdHJ1ZTtcclxuICAgICAgT2JqZWN0LmtleXModmFyaWVudC5wcm9wZXJ0aWVzKS5mb3JFYWNoKChwcm9wZXJ0eTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgZm91bmRWYXJpZW50ID0gKHRoaXMuc2VsZWN0ZWRWYXJpZW50LmdldChwcm9wZXJ0eSkgPT0gdmFyaWVudC5wcm9wZXJ0aWVzW3Byb3BlcnR5XSkgJiYgZm91bmRWYXJpZW50O1xyXG4gICAgICB9KVxyXG4gICAgICBpZiAoZm91bmRWYXJpZW50KSB7XHJcbiAgICAgICAgdGhpcy5pdGVtSW1hZ2VzID0gdmFyaWVudC52YXJpYW50SW1hZ2VzO1xyXG4gICAgICAgIHRoaXMuY3VycmVudEltZyA9IHRoaXMuaXRlbUltYWdlc1swXT8uaW1nVXJsO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnByaWNlID0gdmFyaWVudC5pdGVtVmFyaWFudFByaWNlO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLml0ZW1JbnZlbnRvcnkgPSB2YXJpZW50Lml0ZW1JbnZlbnRvcnk7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEudmFyaWVudElkID0gdmFyaWVudC52YXJpYW50SWQ7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucXVhbnRpdHkgPSB0aGlzLmdldFZhcmllbnRRdWFudGl0eSh2YXJpZW50KTtcclxuICAgICAgICB0aGlzLmlzSXRlbUFzRmF2b3JpdGUgPSB0aGlzLmlzVmFyaWVudFByZXNlbnRJbldpc2h0bGlzdCh2YXJpZW50KTtcclxuICAgICAgICB0aGlzLmNoZWNrSXRlbUFscmVhZHlBZGRlZEluVHJpYWwoKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnZhcmllbnRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9LCAzMDApO1xyXG4gIH1cclxuICByYWlzZUxlYWQoKSB7XHJcbiAgICBjb25zdCB1c2VyRGV0YWlscyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpO1xyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIGJ1c2luZXNzSWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0lkJyksXHJcbiAgICAgIGVtYWlsOiB1c2VyRGV0YWlscz8uY29udGFjdD8uZW1haWwsXHJcbiAgICAgIG1lc3NhZ2U6IFwiXCIsXHJcbiAgICAgIG1vYmlsZU5vOiBcIlwiLFxyXG4gICAgICBtb3JlSW5mbzoge1xyXG4gICAgICAgIE5hbWU6IHVzZXJEZXRhaWxzPy5jb250YWN0Py5uYW1lLFxyXG4gICAgICAgIFwiTW9iaWxlIE51bWJlclwiOiB1c2VyRGV0YWlscz8uY29udGFjdD8ubW9iaWxlLFxyXG4gICAgICAgIEVtYWlsOiB1c2VyRGV0YWlscz8uY29udGFjdD8uZW1haWwsXHJcbiAgICAgICAgXCJMZWFkIFNvdXJjZVwiOiBcIldlYnNpdGVcIixcclxuICAgICAgICBcIkxlYWQgU3RhdHVzXCI6IFwiTkVXXCJcclxuICAgICAgfSxcclxuICAgICAgbmFtZTogdXNlckRldGFpbHM/LmNvbnRhY3Q/Lm5hbWVcclxuICAgIH1cclxuICAgIHRoaXMucmVzdFNlcnZpY2UuY3JlYXRlTGVhZChwYXlsb2FkKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzPy5kYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnc3VjY2VzcycsIHN1bW1hcnk6ICdUaGFuayB5b3UnLCBkZXRhaWw6ICdPdXIgdGVhbSB3aWxsIGNvbnRhY3QgeW91IHNvb24nIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6ICdFcnJvcicsIGRldGFpbDogJ0Vycm9yIG9jY3VyZWQgcGxlYXNlIHRyeSBhZ2FpbiBsYXRlcicgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBnZXRJdGVtVmFyaWVudCgpOiBJdGVtVmFyaWFudCB8IG51bGwge1xyXG4gICAgbGV0IHNlbGVjdGVkVmFyaWVudDogSXRlbVZhcmlhbnQgfCBudWxsID0gbnVsbDtcclxuICAgIHRoaXMucmVzcG9uc2VEYXRhPy5pdGVtVmFyaWFudD8uZm9yRWFjaCgodmFyaWVudDogSXRlbVZhcmlhbnQpID0+IHtcclxuICAgICAgbGV0IGZvdW5kVmFyaWVudCA9IHRydWU7XHJcbiAgICAgIE9iamVjdC5rZXlzKHZhcmllbnQucHJvcGVydGllcykuZm9yRWFjaCgocHJvcGVydHk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGZvdW5kVmFyaWVudCA9ICh0aGlzLnNlbGVjdGVkVmFyaWVudC5nZXQocHJvcGVydHkpID09IHZhcmllbnQucHJvcGVydGllc1twcm9wZXJ0eV0pICYmIGZvdW5kVmFyaWVudDtcclxuICAgICAgfSlcclxuICAgICAgaWYgKGZvdW5kVmFyaWVudClcclxuICAgICAgICBzZWxlY3RlZFZhcmllbnQgPSB2YXJpZW50O1xyXG4gICAgfSlcclxuXHJcbiAgICByZXR1cm4gc2VsZWN0ZWRWYXJpZW50O1xyXG4gIH1cclxuXHJcbiAgY2hlY2tJdGVtQWxyZWFkeUFkZGVkSW5UcmlhbCgpIHtcclxuICAgIGxldCB1c2VyOiBVc2VyIHwgbnVsbCA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpXHJcbiAgICBpZiAodXNlcikge1xyXG4gICAgICBsZXQgcmVxdWVzdDogY2hlY2tJdGVtQWxyZWFkeUFkZGVkID0gbmV3IGNoZWNrSXRlbUFscmVhZHlBZGRlZCh0aGlzLnJlc3BvbnNlRGF0YS5pdGVtSWQsIHRoaXMucmVzcG9uc2VEYXRhLnZhcmllbnRJZCwgdXNlci51c2VySWQsICdUUklBTF9DQVJUJylcclxuICAgICAgdGhpcy5yZXN0U2VydmljZS5jaGVja0l0ZW1BbHJlYWR5QWRkZWQocmVxdWVzdCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNJdGVtQWRkZWRBc1RyaWFsID0gcmVzLmRhdGFcclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ2V0VHJpYWxDYXJ0SW5kZXhEQkRhdGEoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFRyaWFsQ2FydEluZGV4REJEYXRhKCkge1xyXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5nZXRUcmlhbENhcnQoKS50aGVuKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICByZXNwb25zZS5vbnN1Y2Nlc3MgPSAodXNlclRyaWFsQ2FydFJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgdHJpYWxDYXJ0SXRlbTogT3JkZXJlZEl0ZW1zW10gPSB1c2VyVHJpYWxDYXJ0UmVzcG9uc2UudGFyZ2V0LnJlc3VsdDtcclxuICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHRyaWFsQ2FydEl0ZW0pIHtcclxuICAgICAgICAgIGlmIChpdGVtLml0ZW1JZCA9PT0gdGhpcy5yZXNwb25zZURhdGEuaXRlbUlkICYmICh0aGlzLnJlc3BvbnNlRGF0YT8uaXRlbVZhcmlhbnQ/Lmxlbmd0aCA9PSAwIHx8IHRoaXMucmVzcG9uc2VEYXRhLnZhcmllbnRJZCA9PT0gaXRlbS52YXJpZW50SWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNJdGVtQWRkZWRBc1RyaWFsID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzaGFyZVByb2R1Y3QoKSB7XHJcbiAgICBuYXZpZ2F0b3Iuc2hhcmUoe1xyXG4gICAgICB0aXRsZTogJ0J1eSAnICsgdGhpcy5yZXNwb25zZURhdGE/Lm5hbWUsXHJcbiAgICAgIHRleHQ6IHRoaXMucmVzcG9uc2VEYXRhLmJyaWVmPy5yZXBsYWNlKC88XFwvW14+XSsoPnwkKS9nLCBcIlwiKSxcclxuICAgICAgdXJsOiB3aW5kb3cubG9jYXRpb24uaHJlZixcclxuICAgIH0pXHJcbiAgICAgIC50aGVuKCgpID0+IHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdpbmZvJywgc3VtbWFyeTogJ1NoYXJlZCcsIGRldGFpbDogJ1Byb2R1Y3Qgc2hhcmVkJywga2V5OiAnd2lzaGxpc3QnIH0pKVxyXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiAnU2hhcmVkJywgZGV0YWlsOiAnRmFpbGVkIHRvIHNoYXJlIHByb2R1Y3QuIFRyeSBBZ2Fpbi4nLCBrZXk6ICd3aXNobGlzdCcgfSkpO1xyXG5cclxuICB9XHJcbiAgcm91dGVUb0hvbWUoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XHJcbiAgfVxyXG5cclxuICBzY3JlZW5XaWR0aDogYW55O1xyXG4gIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6IHJlc2l6ZVwiLCBbXCIkZXZlbnRcIl0pXHJcbiAgZ2V0U2NyZWVuU2l6ZSgpIHtcclxuICAgIHRoaXMuc2NyZWVuV2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICB9XHJcblxyXG4gIHNjcm9sbChlOiBXaGVlbEV2ZW50KSB7XHJcbiAgICBjb25zdCBkID0gdGhpcy5kMi5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgYXRUb3AgPSBkLnNjcm9sbFRvcCA9PT0gMDtcclxuICAgIGNvbnN0IGF0Qm90dG9tID0gZC5zY3JvbGxUb3AgPj0gZC5zY3JvbGxIZWlnaHQgLSBkLmNsaWVudEhlaWdodDtcclxuICAgIGlmICgoYXRUb3AgJiYgZS5kZWx0YVkgPCAwKSB8fCAoYXRCb3R0b20gJiYgZS5kZWx0YVkgPiAwKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBkLnNjcm9sbFRvcCA9IE1hdGgubWF4KDAsIE1hdGgubWluKGQuc2Nyb2xsVG9wICsgZS5kZWx0YVkgKiAyLCBkLnNjcm9sbEhlaWdodCAtIGQuY2xpZW50SGVpZ2h0KSk7XHJcbiAgfVxyXG5cclxuICBjdXJyZW50SW1nOiBhbnk7XHJcbiAgY2hhbmdlSW1nKHVybDogYW55KSB7XHJcbiAgICB0aGlzLmN1cnJlbnRJbWcgPSB1cmw7XHJcbiAgfVxyXG5cclxuICBnZXRLZXlzKHZhcmllbnQ6IE9iamVjdCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyh2YXJpZW50KTtcclxuICB9XHJcblxyXG4gIGdvVG9DYXJ0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvY2FydCddKTtcclxuICB9XHJcblxyXG4gIGFkZFRvQ2FydCh0eXBlOiAnQUREJyB8ICdTVUJTVFJBQ1QnID0gJ0FERCcpIHtcclxuICAgIGlmICh0aGlzLmlzSXRlbU91dE9mU3RvY2spIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ3dhcm4nLCBzdW1tYXJ5OiAnQ2FydCcsIGRldGFpbDogJ0l0ZW0gaXMgbm90IGF2YWlsYWJsZSBhcyBvZiBub3cuIFdlIHdpbGwgbm90aWZ5IHlvdSBvbmNlIGF2YWlsYWJsZScgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5yZXNwb25zZURhdGE/Lml0ZW1WYXJpYW50Py5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGl0ZW1WYXJpZW50OiBJdGVtVmFyaWFudCB8IG51bGwgPSB0aGlzLmdldEl0ZW1WYXJpZW50KCk7XHJcbiAgICAgIGlmIChpdGVtVmFyaWVudCkge1xyXG4gICAgICAgIGl0ZW1WYXJpZW50LnF1YW50aXR5ICs9ICh0eXBlID09ICdBREQnID8gMSA6IC0xKTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5xdWFudGl0eSA9IGl0ZW1WYXJpZW50LnF1YW50aXR5O1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLml0ZW1JbnZlbnRvcnkgPSBpdGVtVmFyaWVudC5pdGVtSW52ZW50b3J5O1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLml0ZW1JbWFnZXMgPSBpdGVtVmFyaWVudC52YXJpYW50SW1hZ2VzO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5yZXNwb25zZURhdGEucXVhbnRpdHkpIHtcclxuICAgICAgICBsZXQgaXNQcmVzZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5VU0VSX0NBUlQ/LmZvckVhY2goKGl0ZW06IE9yZGVyZWRJdGVtcykgPT4ge1xyXG4gICAgICAgICAgaWYgKGl0ZW0udmFyaWVudElkID09IHRoaXMucmVzcG9uc2VEYXRhLnZhcmllbnRJZCkge1xyXG4gICAgICAgICAgICBpdGVtLnF1YW50aXR5ID0gdGhpcy5yZXNwb25zZURhdGEucXVhbnRpdHk7XHJcbiAgICAgICAgICAgIGlzUHJlc2VudCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICBpZiAoIWlzUHJlc2VudClcclxuICAgICAgICAgIHRoaXMuVVNFUl9DQVJUPy5wdXNoKG5ldyBPcmRlcmVkSXRlbXModGhpcy5yZXNwb25zZURhdGEsIHRoaXMucmVzcG9uc2VEYXRhLnZhcmllbnRJZCkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuVVNFUl9DQVJUID0gdGhpcy5VU0VSX0NBUlQ/LmZpbHRlcigoaXRlbTogT3JkZXJlZEl0ZW1zKSA9PiBpdGVtLnZhcmllbnRJZCAhPSB0aGlzLnJlc3BvbnNlRGF0YS52YXJpZW50SWQpID8/IFtdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Ub0NhcnQodGhpcy5yZXNwb25zZURhdGEgYXMgUHJvZHVjdCwgaXRlbVZhcmllbnQ/LnZhcmlhbnRJZCk7XHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgaWYgKCF0aGlzLnJlc3BvbnNlRGF0YT8ucXVhbnRpdHkpXHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucXVhbnRpdHkgPSAwO1xyXG4gICAgICBpZiAodHlwZSA9PSAnQUREJykge1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnF1YW50aXR5ICs9IDE7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucXVhbnRpdHkgLT0gMTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtVG9DYXJ0KHRoaXMucmVzcG9uc2VEYXRhIGFzIFByb2R1Y3QpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ29Ub0ZpbHRlcihjYXRlZ29yeTogc3RyaW5nKSB7XHJcbiAgICBjYXRlZ29yeSA9IGNhdGVnb3J5LnJlcGxhY2VBbGwoXCIgXCIsIFwiX1wiKVxyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydsaXN0J10sIHsgcXVlcnlQYXJhbXM6IHsgY2F0ZWdvcnk6IGNhdGVnb3J5IH0gfSk7XHJcbiAgfVxyXG5cclxuICBhZGRUb0Zhdm91cml0ZSgpIHtcclxuICAgIHRoaXMuaXNJdGVtQXNGYXZvcml0ZSA9IHRydWU7XHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnc3VjY2VzcycsIHN1bW1hcnk6ICdTdWNjZXNzJywgZGV0YWlsOiAnSXRlbSBhZGRlZCB0byB5b3VyIHdpc2hsaXN0Jywga2V5OiAnd2lzaGxpc3QnIH0pO1xyXG4gICAgaWYgKHRoaXMucmVzcG9uc2VEYXRhPy5pdGVtVmFyaWFudD8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBpdGVtVmFyaWVudDogSXRlbVZhcmlhbnQgfCBudWxsID0gdGhpcy5nZXRJdGVtVmFyaWVudCgpO1xyXG4gICAgICBpZiAoaXRlbVZhcmllbnQpIHtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5pdGVtSW52ZW50b3J5ID0gaXRlbVZhcmllbnQuaXRlbUludmVudG9yeTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5pdGVtSW1hZ2VzID0gaXRlbVZhcmllbnQudmFyaWFudEltYWdlcztcclxuICAgICAgICBpdGVtVmFyaWVudC53aXNobGlzdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtVG9GYXZvdXJpdGUodGhpcy5yZXNwb25zZURhdGEgYXMgUHJvZHVjdCwgaXRlbVZhcmllbnQudmFyaWFudElkKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtVG9GYXZvdXJpdGUodGhpcy5yZXNwb25zZURhdGEgYXMgUHJvZHVjdCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5pc0l0ZW1Bc0Zhdm9yaXRlKSB7XHJcbiAgICAgIHRoaXMuVVNFUl9XSVNITElTVD8ucHVzaChuZXcgT3JkZXJlZEl0ZW1zKHRoaXMucmVzcG9uc2VEYXRhLCB0aGlzLnJlc3BvbnNlRGF0YS52YXJpZW50SWQpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuVVNFUl9XSVNITElTVCA9IHRoaXMuVVNFUl9XSVNITElTVD8uZmlsdGVyKChpdGVtOiBPcmRlcmVkSXRlbXMpID0+IGl0ZW0udmFyaWVudElkICE9IHRoaXMucmVzcG9uc2VEYXRhLnZhcmllbnRJZCkgPz8gW107XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlbW92ZVRvRmF2b3VyaXRlKCkge1xyXG4gICAgdGhpcy5pc0l0ZW1Bc0Zhdm9yaXRlID0gZmFsc2U7XHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnaW5mbycsIHN1bW1hcnk6ICdTdWNjZXNzJywgZGV0YWlsOiAnSXRlbSByZW1vdmVkIGZyb20geW91ciB3aXNobGlzdCcsIGtleTogJ3dpc2hsaXN0JyB9KTtcclxuICAgIGlmICh0aGlzLnJlc3BvbnNlRGF0YT8uaXRlbVZhcmlhbnQ/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgaXRlbVZhcmllbnQ6IEl0ZW1WYXJpYW50IHwgbnVsbCA9IHRoaXMuZ2V0SXRlbVZhcmllbnQoKTtcclxuICAgICAgaWYgKGl0ZW1WYXJpZW50KSB7XHJcbiAgICAgICAgaXRlbVZhcmllbnQud2lzaGxpc3QgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLnJlbW92ZUl0ZW1Gcm9tRmF2b3VyaXRlKHRoaXMucmVzcG9uc2VEYXRhLnZhcmllbnRJZCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2FydFNlcnZpY2UucmVtb3ZlSXRlbUZyb21GYXZvdXJpdGUodGhpcy5yZXNwb25zZURhdGEudmFyaWVudElkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFByb2R1Y3RCeUNhdGVnb3J5KCkge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRQcm9kdWN0QnlDYXRlZ29yeUlkKHRoaXMucmVzcG9uc2VEYXRhPy5pdGVtQ2F0ZWdvcmlzYXRpb24/Lml0ZW1DYXRlZ29yaWVzPy5bMF0/LnJlZklkID8/IFwiXCIpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnJlbGF0ZWRQcm9kdWN0RGF0YSA9IHJlc3BvbnNlLmRhdGE/LmZpbHRlcigocHJvZHVjdDogUHJvZHVjdCkgPT4gdGhpcy5yZXNwb25zZURhdGEuaXRlbUlkICE9IHByb2R1Y3QuaXRlbUlkKTtcclxuICAgICAgaWYgKHRoaXMucmVsYXRlZFByb2R1Y3REYXRhPy5sZW5ndGggPT0gMClcclxuICAgICAgICB0aGlzLmdldFByb2R1Y3RCeUNvbGxlY3Rpb24oKTtcclxuICAgIH0pXHJcbiAgfVxyXG4gIGdldFByb2R1Y3RCeUNvbGxlY3Rpb24oKSB7XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFByb2R1Y3RCeUNvbGxlY3Rpb25JZCh0aGlzLnJlc3BvbnNlRGF0YT8uaXRlbUNhdGVnb3Jpc2F0aW9uPy5pdGVtQ29sbGVjdGlvbj8uWzBdLnJlZklkID8/IFwiXCIpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnJlbGF0ZWRQcm9kdWN0RGF0YSA9IHJlc3BvbnNlLmRhdGE/LmZpbHRlcigocHJvZHVjdDogUHJvZHVjdCkgPT4gdGhpcy5yZXNwb25zZURhdGEuaXRlbUlkICE9IHByb2R1Y3QuaXRlbUlkKTtcclxuICAgIH0pXHJcbiAgfVxyXG4gIGNoYW5nZVByb2R1Y3QocHJvZHVjdDogUHJvZHVjdCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvZGV0YWlscyddLCB7IHF1ZXJ5UGFyYW1zOiB7IGlkOiBwcm9kdWN0Lml0ZW1JZCB9IH0pO1xyXG4gICAgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCA9IDA7XHJcbiAgfVxyXG4gIGdldEtleUJ5SWR4KHByb3BlcnR5OiBhbnksIGluZGV4OiBudW1iZXIpIHtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyhwcm9wZXJ0eSlbaW5kZXhdO1xyXG4gIH1cclxuICBpc1ZhcmllbnRBdmFpbGFibGUodmFyaWVudDogYW55KTogYm9vbGVhbiB7XHJcblxyXG4gICAgLy8gdGhpcy5yZXNwb25zZURhdGE/Lml0ZW1WYXJpYW50Py5mb3JFYWNoKCh2YXJpZW50OiBJdGVtVmFyaWFudCk9PiB7XHJcbiAgICAvLyAgIGxldCBmb3VuZFZhcmllbnQgPSB0cnVlO1xyXG4gICAgLy8gICBPYmplY3Qua2V5cyh2YXJpZW50LnByb3BlcnRpZXMpLmZvckVhY2goKHByb3BlcnR5OiBzdHJpbmcpPT4ge1xyXG4gICAgLy8gICAgIC8vIGZvdW5kVmFyaWVudCA9ICh2YXJpZW50S2V5ID09IHZhcmllbnQucHJvcGVydGllc1twcm9wZXJ0eV0pICYmIGZvdW5kVmFyaWVudDtcclxuICAgIC8vICAgfSlcclxuICAgIC8vIH0pXHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICByZXZpZXdUaXRsZTogc3RyaW5nID0gXCJcIjtcclxuICByZXZpZXdEZXNjcmlwdGlvbjogc3RyaW5nID0gXCJcIjtcclxuICBhZGRQcm9kdWN0UmV2aWV3KCkge1xyXG4gICAgY29uc3QgdXNlckRldGFpbHM6IFVzZXIgfCBudWxsID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCk7XHJcblxyXG4gICAgaWYgKHRoaXMucmV2aWV3VGl0bGUubGVuZ3RoID09IDAgJiYgdGhpcy5yZXZpZXdEZXNjcmlwdGlvbi5sZW5ndGggPT0gMCAmJiB0aGlzLnByb2R1Y3RSZXZpZXcgPT0gMClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGlmICghdXNlckRldGFpbHMpIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2luZm8nLCBzdW1tYXJ5OiAnTG9naW4nLCBkZXRhaWw6ICdQbGVhc2UgbG9naW4gdG8gcG9zdCByZXZpZXcnLCBrZXk6ICd3aXNobGlzdCcgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHBheWxvYWQ6IFJldmlldyA9IHtcclxuICAgICAgcHJvZHVjdElkOiB0aGlzLnJlc3BvbnNlRGF0YS5pdGVtSWQsXHJcbiAgICAgIHVzZXJJZDogdXNlckRldGFpbHMudXNlcklkLFxyXG4gICAgICByYXRpbmc6IHRoaXMucHJvZHVjdFJldmlldyxcclxuICAgICAgcmV2aWV3OiB0aGlzLnJldmlld0Rlc2NyaXB0aW9uLFxyXG4gICAgICB1c2VyTmFtZTogdXNlckRldGFpbHM/LmNvbnRhY3Q/Lm5hbWUsXHJcbiAgICAgIHRpdGxlOiB0aGlzLnJldmlld1RpdGxlLFxyXG4gICAgICBwcm9kdWN0SW1hZ2VzOiBbXVxyXG4gICAgfVxyXG4gICAgdGhpcy5yZXN0U2VydmljZS5hZGRSZXZpZXcocGF5bG9hZCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICB0aGlzLnNob3dSZXZpZXcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5yZXNwb25zZURhdGEucmF0aW5nICs9IDE7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ1JldmlldycsIGRldGFpbDogJ1RoYW5rcyBmb3IgZ2l2aW5nIHlvdXIgZmVlZGJhY2snLCBrZXk6ICd3aXNobGlzdCcgfSk7XHJcbiAgICAgIGlmICh0aGlzLnJldmlld0NvbXBvbmVudCkge1xyXG4gICAgICAgIHRoaXMucmV2aWV3Q29tcG9uZW50LmdldEFsbFJldmlld3MoKTtcclxuICAgICAgfVxyXG4gICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6ICdSZXZpZXcnLCBkZXRhaWw6IGVycm9yPy5lcnJvcj8ubWVzc2FnZSwga2V5OiAnd2lzaGxpc3QnIH0pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VmFyaWVudFF1YW50aXR5KHByb2R1Y3RWYXJpZW50OiBJdGVtVmFyaWFudCk6IG51bWJlciB7XHJcbiAgICBsZXQgaXRlbVF1YW50aXR5OiBudW1iZXIgPSAwO1xyXG4gICAgdGhpcy5VU0VSX0NBUlQ/LmZvckVhY2goKGl0ZW06IE9yZGVyZWRJdGVtcykgPT4ge1xyXG4gICAgICBpZiAocHJvZHVjdFZhcmllbnQudmFyaWFudElkID09IGl0ZW0udmFyaWVudElkKVxyXG4gICAgICAgIGl0ZW1RdWFudGl0eSA9IGl0ZW0ucXVhbnRpdHk7XHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIGl0ZW1RdWFudGl0eTtcclxuICB9XHJcbiAgcHJpdmF0ZSBpc1ZhcmllbnRQcmVzZW50SW5XaXNodGxpc3QocHJvZHVjdFZhcmllbnQ6IEl0ZW1WYXJpYW50KTogYm9vbGVhbiB7XHJcbiAgICBsZXQgcHJlc2VudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5VU0VSX1dJU0hMSVNUPy5mb3JFYWNoKChpdGVtOiBPcmRlcmVkSXRlbXMpID0+IHtcclxuICAgICAgaWYgKHByb2R1Y3RWYXJpZW50LnZhcmlhbnRJZCA9PSBpdGVtLnZhcmllbnRJZClcclxuICAgICAgICBwcmVzZW50ID0gdHJ1ZTtcclxuICAgIH0pXHJcbiAgICByZXR1cm4gcHJlc2VudDtcclxuICB9XHJcblxyXG4gIGVkaXRTZWN0aW9uKCkge1xyXG5cclxuICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8PSA0NzUpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2UudG9nZ2xlRWRpdG9yRXZlbnQuZW1pdChmYWxzZSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmVkaXRTZWN0aW9uLmVtaXQoeyBkYXRhOiB0aGlzLmRhdGEgfSk7XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzSXRlbU91dE9mU3RvY2soKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5yZXNwb25zZURhdGE/Lml0ZW1JbnZlbnRvcnk/Lm9wZW5pbmdTdG9jayA9PSAwO1xyXG4gIH1cclxuICBnZXQgY3VycmVuY3koKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBCVVNJTkVTU19DT05TVEFOVFMuQ1VSUkVOQ1k7XHJcbiAgfVxyXG4gIGdldCBpc0l0ZW1Mb3dTdG9jaygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnJlc3BvbnNlRGF0YT8uaXRlbUludmVudG9yeT8ub3BlbmluZ1N0b2NrIDwgNTtcclxuICB9XHJcbiAgZ2V0IGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDw9IDQ3NTtcclxuICB9XHJcblxyXG4gIGdldENhcmF0KGNhcmF0OiBhbnkpIHtcclxuICAgIHN3aXRjaCAoY2FyYXQpIHtcclxuICAgICAgY2FzZSAnSzI0JzpcclxuICAgICAgICByZXR1cm4gXCIyNCBDYXJhdHNcIlxyXG4gICAgICBjYXNlICdLMjInOlxyXG4gICAgICAgIHJldHVybiBcIjIyIENhcmF0c1wiXHJcbiAgICAgIGNhc2UgJ0sxOCc6XHJcbiAgICAgICAgcmV0dXJuIFwiMTggQ2FyYXRzXCJcclxuICAgICAgY2FzZSAnSzE0JzpcclxuICAgICAgICByZXR1cm4gXCIxNCBDYXJhdHNcIlxyXG4gICAgICBjYXNlICdLMTAnOlxyXG4gICAgICAgIHJldHVybiBcIjEwIENhcmF0c1wiXHJcbiAgICAgIGNhc2UgJ0s5OTknOlxyXG4gICAgICAgIHJldHVybiBcIjk5LjklIFB1cmVcIlxyXG4gICAgICBjYXNlICdLOTI1JzpcclxuICAgICAgICByZXR1cm4gXCI5Mi41JSBQdXJlXCJcclxuICAgICAgY2FzZSAnSzkwMCc6XHJcbiAgICAgICAgcmV0dXJuIFwiOTAlIFB1cmVcIlxyXG4gICAgICBjYXNlICdWUyc6XHJcbiAgICAgICAgcmV0dXJuIFwiVmVyeSBTbGlnaHRseSBJbmNsdWRlZFwiXHJcbiAgICAgIGNhc2UgJ1NJJzpcclxuICAgICAgICByZXR1cm4gXCJTbGlnaHRseSBJbmNsdWRlZFwiXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIFwiMjQgQ2FyYXRzXCJcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0UHJpY2VQZXJHcmFtKHdlaWdodDogYW55LCBwcmljZTogYW55KSB7XHJcbiAgICBpZiAod2VpZ2h0ICYmIHByaWNlKSB7XHJcbiAgICAgIHJldHVybiAocHJpY2UgLyB3ZWlnaHQpLnRvRml4ZWQoMik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICB9XHJcbiAgaXNEZXNjcmlwdGlvbkNvbGxhcHNlZCA9IGZhbHNlO1xyXG5cclxuICB0b2dnbGVEZXNjcmlwdGlvbigpIHtcclxuICAgIHRoaXMuaXNEZXNjcmlwdGlvbkNvbGxhcHNlZCA9ICF0aGlzLmlzRGVzY3JpcHRpb25Db2xsYXBzZWQ7XHJcbiAgfVxyXG4gIGlzUHJpY2VCcmVha3VwID0gZmFsc2VcclxuICB0b2dnbGVQcmljZUJyZWFrRG93bigpIHtcclxuICAgIHRoaXMuaXNQcmljZUJyZWFrdXAgPSAhdGhpcy5pc1ByaWNlQnJlYWt1cDtcclxuICB9XHJcbiAgZ2V0RGlmZmVyZW5jZShzZWxsaW5nUHJpY2U6IGFueSwgbXJwOiBhbnkpOiBudW1iZXIge1xyXG4gICAgaWYgKCFzZWxsaW5nUHJpY2UgfHwgIW1ycClcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICByZXR1cm4gbXJwIC0gc2VsbGluZ1ByaWNlO1xyXG4gIH1cclxuICBnZXRCYWNrZ3JvdW5kQ29sb3IodHlwZTogc3RyaW5nKSB7XHJcbiAgICAvLyBzd2l0Y2ggKHR5cGUpIHtcclxuICAgIC8vICAgY2FzZSBcIkdPTERcIjpcclxuICAgIC8vICAgICByZXR1cm4gXCIjRkZGNEQxXCJcclxuICAgIC8vICAgY2FzZSBcIkRJQU1PTkRcIjpcclxuICAgIC8vICAgICByZXR1cm4gXCIjRUZFMUY0XCJcclxuICAgIC8vICAgY2FzZSBcIlNJTFZFUlwiOlxyXG4gICAgLy8gICAgIHJldHVybiBcImxpbmVhci1ncmFkaWVudCgxODBkZWcsICNGQUZBRkEgMCUsICNGRkZGRkYgMTAwJSlcIlxyXG4gICAgLy8gICBkZWZhdWx0OlxyXG4gICAgLy8gICAgIHJldHVybiBcIiNlMmY2ZmZcIlxyXG4gICAgLy8gfVxyXG4gICAgcmV0dXJuIFwiI0ZGRjlGNVwiXHJcbiAgfVxyXG4gIGdldEhlYWRlckNvbG9yKHR5cGU6IHN0cmluZykge1xyXG4gICAgLy8gc3dpdGNoICh0eXBlKSB7XHJcbiAgICAvLyAgIGNhc2UgXCJHT0xEXCI6XHJcbiAgICAvLyAgICAgcmV0dXJuIFwiI0ZGRjNFOVwiXHJcbiAgICAvLyAgIGNhc2UgXCJESUFNT05EXCI6XHJcbiAgICAvLyAgICAgcmV0dXJuIFwiIzlENDNCOFwiXHJcbiAgICAvLyAgIGNhc2UgXCJTSUxWRVJcIjpcclxuICAgIC8vICAgICByZXR1cm4gXCJsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCAjQkRCREJEIDAlLCAjRTJFMkUyIDEwMCUpXCJcclxuICAgIC8vICAgZGVmYXVsdDpcclxuICAgIC8vICAgICByZXR1cm4gXCJsaW5lYXItZ3JhZGllbnQoMTU5ZGVnLCByZ2JhKDY1LDEwNSwyMjUsMSkgMCUsIHJnYmEoMTM3LDIwNywyNDAsMSkgMTAwJSlcIlxyXG4gICAgLy8gfVxyXG4gICAgcmV0dXJuIFwiI0ZGRjNFOVwiXHJcbiAgfVxyXG4gIGdldFRleHRDb2xvcihjb2xvcjogYW55KSB7XHJcbiAgICBjb25zdCB0aHJlc2hvbGQgPSAxMzA7XHJcbiAgICBjb25zdCByID0gcGFyc2VJbnQoY29sb3Iuc2xpY2UoMSwgMyksIDE2KTtcclxuICAgIGNvbnN0IGcgPSBwYXJzZUludChjb2xvci5zbGljZSgzLCA1KSwgMTYpO1xyXG4gICAgY29uc3QgYiA9IHBhcnNlSW50KGNvbG9yLnNsaWNlKDUsIDcpLCAxNik7XHJcbiAgICBjb25zdCBicmlnaHRuZXNzID0gKHIgKiAyOTkgKyBnICogNTg3ICsgYiAqIDExNCkgLyAxMDAwO1xyXG5cclxuICAgIHJldHVybiBicmlnaHRuZXNzID4gdGhyZXNob2xkID8gJyMwMDAwMDAnIDogJyNmZmZmZmYnO1xyXG4gIH1cclxuICBsYW5ndWFnZXM6IHN0cmluZ1tdID0gW1wiRW5nbGlzaFwiLCBcIlRlbHVndVwiLCBcIkhpbmRpXCIsIFwiVGFtaWxcIiwgXCJLYW5uYWRhXCIsIFwiTWFsYXlhbGFtXCIsIFwiT3RoZXJzXCJdXHJcbiAgc2VsZWN0ZWRMYW5nOiBzdHJpbmcgPSB0aGlzLmxhbmd1YWdlc1swXVxyXG5cclxuICBnZXRDbGFzcyhtYXA6IGFueSkge1xyXG4gICAgaWYgKG1hcC5zaXplID09IDEpXHJcbiAgICAgIHJldHVybiAnY29sLTYnXHJcbiAgICBlbHNlIGlmIChtYXAuc2l6ZSA9PSAyKVxyXG4gICAgICByZXR1cm4gJ2NvbC00J1xyXG4gICAgZWxzZSBpZiAobWFwLnNpemUgPT0gMylcclxuICAgICAgcmV0dXJuICdjb2wtMydcclxuICAgIGVsc2VcclxuICAgICAgcmV0dXJuICd3aWR0aC1tYXgnO1xyXG4gIH1cclxuICBvbkZpbmRJblN0b3JlKGlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3N0b3JlJ10sIHsgcXVlcnlQYXJhbXM6IHsgc3RvcmVJZDogaWQgfSB9KTtcclxuICB9XHJcblxyXG4gIG9uQm9va0FwcG9pbnRtZW50KCkge1xyXG5cclxuICB9XHJcbiAgaXNEZXRhaWxzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcGluY29kZTogYW55O1xyXG4gIHN0b3JlRGV0YWlsczogYW55O1xyXG4gIGdldFN0b3JlRGV0YWlscygpIHtcclxuICAgIGlmICh0aGlzLnBpbmNvZGUgPT0gbnVsbCB8fCB0aGlzLnBpbmNvZGUudG9TdHJpbmcoKS5sZW5ndGggIT0gNikge1xyXG4gICAgICB0aGlzLmlzUGluQ29kZSA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFN0b3JlTG9jYXRvckRldGFpbHModGhpcy5waW5jb2RlLnRvU3RyaW5nKCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5pc0RldGFpbHMgPSB0cnVlO1xyXG4gICAgICB0aGlzLnN0b3JlRGV0YWlscyA9IHJlcz8uZGF0YTtcclxuICAgICAgdGhpcy5pc1BpbkNvZGUgPSB0cnVlO1xyXG4gICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6ICdFcnJvcicsIGRldGFpbDogZXJyPy5lcnJvcj8ubWVzc2FnZSwga2V5OiAnU3RvcmUgTG9jYXRvcicgfSk7XHJcbiAgICAgIH0pXHJcbiAgfVxyXG4gIGJyYW5kUHJvbWlzZXM6IGFueVtdID0gW107XHJcbiAgZWNvbUNvbmZpZ3M6IGFueTtcclxuICBnZXRFY29tbWVyY2VDb25maWdzKCkge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRFY29tbWVyY2VDb25maWdzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmJyYW5kUHJvbWlzZXMgPSByZXM/LmRhdGE/LmJyYW5kUHJvbWlzZXNcclxuICAgICAgdGhpcy5lY29tQ29uZmlncyA9IHJlcz8uZGF0YVxyXG4gICAgfSlcclxuICB9XHJcbiAgbG9jYXRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgb3RoZXJMYW5ndWFnZTogc3RyaW5nID0gJyc7XHJcblxyXG4gIHZpZGVvQ2FsbFBheWxvYWQ6IGFueSA9IHtcclxuICAgIGJ1c2luZXNzSWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0lkJykgPz8gXCJcIixcclxuICAgIG1vYmlsZU51bWJlcjogXCJcIixcclxuICAgIHBpbmNvZGU6IFwiXCIsXHJcbiAgICB1c2VybmFtZTogXCJcIixcclxuICAgIGVtYWlsOiBcIlwiLFxyXG4gICAgbWVzc2FnZTogYGAsXHJcbiAgfVxyXG5cclxuICB2YWxpZGF0aW9uRXJyb3JzOiBhbnkgPSB7XHJcbiAgICB1c2VybmFtZTogZmFsc2UsXHJcbiAgICBtb2JpbGVOdW1iZXI6IGZhbHNlLFxyXG4gICAgcGluY29kZTogZmFsc2UsXHJcbiAgICBlbWFpbDogZmFsc2VcclxuICB9O1xyXG4gIGlzU3VibWl0dGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNjaGVkdWxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNjaGVkdWxlVmlkZW9DYWxsKCkge1xyXG4gICAgaWYgKHRoaXMuaXNTdWJtaXR0aW5nKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMucmVzZXRWYWxpZGF0aW9uRXJyb3JzKCk7XHJcbiAgICBsZXQgaGFzRXJyb3JzID0gZmFsc2U7XHJcbiAgICBpZiAoIXRoaXMudmlkZW9DYWxsUGF5bG9hZC51c2VybmFtZT8udHJpbSgpKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycy51c2VybmFtZSA9IHRydWU7XHJcbiAgICAgIGhhc0Vycm9ycyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMudmlkZW9DYWxsUGF5bG9hZC5tb2JpbGVOdW1iZXIpIHtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzLm1vYmlsZU51bWJlciA9IHRydWU7XHJcbiAgICAgIGhhc0Vycm9ycyA9IHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudmlkZW9DYWxsUGF5bG9hZC5tb2JpbGVOdW1iZXIudG9TdHJpbmcoKS5sZW5ndGggIT09IDEwKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycy5tb2JpbGVOdW1iZXIgPSB0cnVlO1xyXG4gICAgICBoYXNFcnJvcnMgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLnZpZGVvQ2FsbFBheWxvYWQucGluY29kZSkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMucGluY29kZSA9IHRydWU7XHJcbiAgICAgIGhhc0Vycm9ycyA9IHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudmlkZW9DYWxsUGF5bG9hZC5waW5jb2RlLnRvU3RyaW5nKCkubGVuZ3RoICE9PSA2KSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycy5waW5jb2RlID0gdHJ1ZTtcclxuICAgICAgaGFzRXJyb3JzID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMudmlkZW9DYWxsUGF5bG9hZC5lbWFpbD8udHJpbSgpKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycy5lbWFpbCA9IHRydWU7XHJcbiAgICAgIGhhc0Vycm9ycyA9IHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKCEvXlthLXpBLVowLTkuXyUrLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Mix9JC8udGVzdCh0aGlzLnZpZGVvQ2FsbFBheWxvYWQuZW1haWwpKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycy5lbWFpbCA9IHRydWU7XHJcbiAgICAgIGhhc0Vycm9ycyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoaGFzRXJyb3JzKSB7XHJcbiAgICAgIGlmICghdGhpcy52aWRlb0NhbGxQYXlsb2FkLnVzZXJuYW1lPy50cmltKCkgfHwgIXRoaXMudmlkZW9DYWxsUGF5bG9hZC5tb2JpbGVOdW1iZXIgfHwgIXRoaXMudmlkZW9DYWxsUGF5bG9hZC5waW5jb2RlKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgc2V2ZXJpdHk6ICd3YXJuJyxcclxuICAgICAgICAgIHN1bW1hcnk6ICdWaWRlbyBDYWxsIFNjaGVkdWxlJyxcclxuICAgICAgICAgIGRldGFpbDogJ1BsZWFzZSBmaWxsIGFsbCB0aGUgcmVxdWlyZWQgZGV0YWlscycsXHJcbiAgICAgICAgICBrZXk6ICdWaWRlbyBDYWxsIFNjaGVkdWxlJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMudmlkZW9DYWxsUGF5bG9hZC5tb2JpbGVOdW1iZXIudG9TdHJpbmcoKS5sZW5ndGggIT09IDEwKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgc2V2ZXJpdHk6ICd3YXJuJyxcclxuICAgICAgICAgIHN1bW1hcnk6ICdWaWRlbyBDYWxsIFNjaGVkdWxlJyxcclxuICAgICAgICAgIGRldGFpbDogJ1BsZWFzZSBlbnRlciBhIHZhbGlkIDEwLWRpZ2l0IG1vYmlsZSBudW1iZXInLFxyXG4gICAgICAgICAga2V5OiAnVmlkZW8gQ2FsbCBTY2hlZHVsZSdcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnZpZGVvQ2FsbFBheWxvYWQucGluY29kZS50b1N0cmluZygpLmxlbmd0aCAhPT0gNikge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgIHNldmVyaXR5OiAnd2FybicsXHJcbiAgICAgICAgICBzdW1tYXJ5OiAnVmlkZW8gQ2FsbCBTY2hlZHVsZScsXHJcbiAgICAgICAgICBkZXRhaWw6ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCA2LWRpZ2l0IHBpbmNvZGUnLFxyXG4gICAgICAgICAga2V5OiAnVmlkZW8gQ2FsbCBTY2hlZHVsZSdcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICghdGhpcy52aWRlb0NhbGxQYXlsb2FkLmVtYWlsPy50cmltKCkgfHwgIS9eW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLH0kLy50ZXN0KHRoaXMudmlkZW9DYWxsUGF5bG9hZC5lbWFpbCkpIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICBzZXZlcml0eTogJ3dhcm4nLFxyXG4gICAgICAgICAgc3VtbWFyeTogJ1ZpZGVvIENhbGwgU2NoZWR1bGUnLFxyXG4gICAgICAgICAgZGV0YWlsOiAnUGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcycsXHJcbiAgICAgICAgICBrZXk6ICdWaWRlbyBDYWxsIFNjaGVkdWxlJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzU3VibWl0dGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnZpZGVvQ2FsbFBheWxvYWQubWVzc2FnZSA9IHRoaXMudmlkZW9DYWxsUGF5bG9hZC5tZXNzYWdlICsgYEhpLCBJJ3ZlIGp1c3Qgc2NoZWR1bGVkIGEgdmlkZW8gY2FsbCB3aXRoIHlvdSBmb3IgdGhpcyBwcm9kdWN0ICR7dGhpcy5yZXNwb25zZURhdGE/Lm5hbWV9LiBJdCdzIGltcG9ydGFudCBhbmQgSSdkIGFwcHJlY2lhdGUgeW91ciB0aW1lIOKAlCBsb29raW5nIGZvcndhcmQgdG8gY29ubmVjdGluZyBhcyBzb29uIGFzIHBvc3NpYmxlICBpbiAke3RoaXMuc2VsZWN0ZWRMYW5nID09ICdPdGhlcnMnID8gdGhpcy5vdGhlckxhbmd1YWdlIDogdGhpcy5zZWxlY3RlZExhbmd9IGxhbmd1YWdlYDtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UucG9zdFZpZGVvQ2FsbERldGFpbHModGhpcy52aWRlb0NhbGxQYXlsb2FkKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgIHNldmVyaXR5OiAnc3VjY2VzcycsXHJcbiAgICAgICAgICBzdW1tYXJ5OiAnVmlkZW8gQ2FsbCBTY2hlZHVsZScsXHJcbiAgICAgICAgICBkZXRhaWw6ICdZb3VyIFZpZGVvIENhbGwgaXMgU2NoZWR1bGVkIFN1Y2Nlc3NmdWxseScsXHJcbiAgICAgICAgICBrZXk6ICdWaWRlbyBTY2hlZHVsaW5nJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zY2hlZHVsZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2xvc2VEaWFsb2coKVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxyXG4gICAgICAgICAgc3VtbWFyeTogJ0Vycm9yJyxcclxuICAgICAgICAgIGRldGFpbDogZXJyPy5lcnJvcj8ubWVzc2FnZSxcclxuICAgICAgICAgIGtleTogJ1ZpZGVvIENhbGwgU2NoZWR1bGUnXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG4gIHJlc2V0VmFsaWRhdGlvbkVycm9ycygpIHtcclxuICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycyA9IHtcclxuICAgICAgdXNlcm5hbWU6IGZhbHNlLFxyXG4gICAgICBtb2JpbGVOdW1iZXI6IGZhbHNlLFxyXG4gICAgICBwaW5jb2RlOiBmYWxzZVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHJlc2V0Rm9ybSgpIHtcclxuICAgIHRoaXMudmlkZW9DYWxsUGF5bG9hZCA9IHtcclxuICAgICAgdXNlcm5hbWU6ICcnLFxyXG4gICAgICBtb2JpbGVOdW1iZXI6ICcnLFxyXG4gICAgICBwaW5jb2RlOiAnJyxcclxuICAgICAgbWVzc2FnZTogJydcclxuICAgIH07XHJcbiAgICB0aGlzLnJlc2V0VmFsaWRhdGlvbkVycm9ycygpO1xyXG4gIH1cclxuICBvbklucHV0Q2hhbmdlKGZpZWxkOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnZhbGlkYXRpb25FcnJvcnNbZmllbGRdKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yc1tmaWVsZF0gPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgY2xvc2VNb2RhbCgpIHtcclxuICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleGFtcGxlTW9kYWxDZW50ZXInKTtcclxuICAgIGlmIChtb2RhbEVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUobW9kYWxFbGVtZW50LCAnZGF0YS1icy1kaXNtaXNzJywgJ21vZGFsJyk7XHJcbiAgICAgIG1vZGFsRWxlbWVudC5jbGljaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QnV0dG9uSWQoaW5kZXg6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YT8uYWN0aW9uPy5idXR0b25zW2luZGV4XT8uaWQgPz8gXCJcIjtcclxuICB9XHJcbiAgZ2V0QnV0dG9uU3R5bGUoaW5kZXg6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YT8uYWN0aW9uPy5idXR0b25zW2luZGV4XT8uc3R5bGVzO1xyXG4gIH1cclxuICBvcGVuRGlhbG9nQm94KHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxIVE1MRGl2RWxlbWVudD4pOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbmZpZzogTWF0RGlhbG9nQ29uZmlnID0ge1xyXG4gICAgICBwYW5lbENsYXNzOiAnJyxcclxuICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMuc2NyZWVuV2lkdGggPiA0NzUpIHtcclxuICAgICAgY29uZmlnLnBhbmVsQ2xhc3MgPSAndmlkZW8tY2FsbC1kaWFsb2cnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uZmlnLndpZHRoID0gJzEwMHZ3JztcclxuICAgICAgY29uZmlnLmhlaWdodCA9ICcxMDB2aCc7XHJcbiAgICAgIGNvbmZpZy5tYXhXaWR0aCA9ICcxMDB2dyc7XHJcbiAgICAgIGNvbmZpZy5wYW5lbENsYXNzID0gJ2FwcG9pbnRtZW50LWZvcm0nO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5tYXREaWFsb2cub3Blbih0ZW1wbGF0ZSwgY29uZmlnKTtcclxuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcclxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnJztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbWF0Q2xvc2VEaWFsb2coKSB7XHJcbiAgICB0aGlzLm1hdERpYWxvZy5jbG9zZUFsbCgpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VEaWFsb2coKSB7XHJcbiAgICB0aGlzLm1hdERpYWxvZy5jbG9zZUFsbCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmF0aW5ncyhub29mcmF0aW5nczogYW55KSB7XHJcbiAgICBpZiAobm9vZnJhdGluZ3MgPj0gMTAwMCkge1xyXG4gICAgICByZXR1cm4gKG5vb2ZyYXRpbmdzIC8gMTAwMCkudG9GaXhlZCgxKSArIFwiSytcIjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKG5vb2ZyYXRpbmdzID4gMTAwMDAwMCkge1xyXG4gICAgICByZXR1cm4gKG5vb2ZyYXRpbmdzIC8gMTAwMDAwMCkudG9GaXhlZCgxKSArIFwiTVwiO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBub29mcmF0aW5ncztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZFRvVHJpYWxDYXJ0KCkge1xyXG4gICAgaWYgKHRoaXMucmVzcG9uc2VEYXRhPy5pdGVtVmFyaWFudD8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBpdGVtVmFyaWVudDogSXRlbVZhcmlhbnQgfCBudWxsID0gdGhpcy5nZXRJdGVtVmFyaWVudCgpO1xyXG4gICAgICBpZiAoaXRlbVZhcmllbnQpIHtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5pdGVtSW52ZW50b3J5ID0gaXRlbVZhcmllbnQuaXRlbUludmVudG9yeTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5pdGVtSW1hZ2VzID0gaXRlbVZhcmllbnQudmFyaWFudEltYWdlcztcclxuICAgICAgICBpdGVtVmFyaWVudC53aXNobGlzdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtVG9UcmlhbCh0aGlzLnJlc3BvbnNlRGF0YSBhcyBQcm9kdWN0LCBpdGVtVmFyaWVudC52YXJpYW50SWQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Ub1RyaWFsKHRoaXMucmVzcG9uc2VEYXRhIGFzIFByb2R1Y3QpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc0l0ZW1BZGRlZEFzVHJpYWwgPSB0cnVlO1xyXG4gICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ3N1Y2Nlc3MnLCBzdW1tYXJ5OiAnU3VjY2VzcycsIGRldGFpbDogJ0l0ZW0gYWRkZWQgdG8geW91ciB0cmFpbCBjYXJ0Jywga2V5OiAnd2lzaGxpc3QnIH0pO1xyXG5cclxuICB9XHJcbiAgcmV2aWV3c0RhdGE6IGFueVtdID0gW11cclxuICByYXRpbmdDb3VudHM6IGFueVxyXG4gIHBhZ2VOdW1iZXI6IG51bWJlciA9IDBcclxuICBsb2FkTW9yZVJldmlld3MoKSB7XHJcbiAgICB0aGlzLnBhZ2VOdW1iZXIrKztcclxuICAgIHRoaXMuZ2V0UmV2aWV3cyh0aGlzLnJlc3BvbnNlRGF0YT8uaXRlbUlkKTtcclxuICB9XHJcbiAgZ2V0UmV2aWV3cyhwcm9kdWN0SWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRSZXZpZXdzQnlQcm9kdWN0SWQocHJvZHVjdElkLCB0aGlzLnBhZ2VOdW1iZXIpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnJldmlld3NEYXRhID0gWy4uLnRoaXMucmV2aWV3c0RhdGEsIC4uLnJlc3BvbnNlPy5kYXRhPy51c2VyUmV2aWV3c107XHJcbiAgICAgIHRoaXMucmF0aW5nQ291bnRzID0gcmVzcG9uc2U/LmRhdGE/Lm92ZXJhbGxSYXRpbmdDb3VudFxyXG4gICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6ICdFcnJvcicsIGRldGFpbDogZXJyb3I/LmVycm9yPy5tZXNzYWdlLCBrZXk6ICdSZXZpZXdzJyB9KTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXRQZXJjZW50YWdlKHJhdGluZzogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5yYXRpbmdDb3VudHMgJiYgdGhpcy5yYXRpbmdDb3VudHNbcmF0aW5nXSkge1xyXG4gICAgICBsZXQgcGVyY2VudCA9ICh0aGlzLnJhdGluZ0NvdW50c1tyYXRpbmddIC8gdGhpcy5yZXNwb25zZURhdGE/LnRvdGFsUmV2aWV3Q291bnQpICogMTAwXHJcbiAgICAgIHJldHVybiBwZXJjZW50LnRvRml4ZWQoMCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJzAnO1xyXG4gIH1cclxuXHJcbiAgZ2V0UkdCQShiZ0NvbG9yOiBhbnksIG9wYWNpdHk6IG51bWJlcik6IGFueSB7XHJcbiAgICBjb25zdCByID0gcGFyc2VJbnQoYmdDb2xvci5zbGljZSgxLCAzKSwgMTYpO1xyXG4gICAgY29uc3QgZyA9IHBhcnNlSW50KGJnQ29sb3Iuc2xpY2UoMywgNSksIDE2KTtcclxuICAgIGNvbnN0IGIgPSBwYXJzZUludChiZ0NvbG9yLnNsaWNlKDUsIDcpLCAxNik7XHJcbiAgICByZXR1cm4gYHJnYmEoJHtyfSwgJHtnfSwgJHtifSwgJHtvcGFjaXR5IC8gMTAwfSlgO1xyXG4gIH1cclxuXHJcbiAgc2hvd0RldGFpbFJldmlldyhyZXZpZXc6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFJldmlldyA9IHJldmlld1xyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29wZW5SZXZpZXdEZXRhaWwnKT8uY2xpY2soKVxyXG4gIH1cclxuICBnZXQgc3R5bGVzTGF5b3V0KCkge1xyXG4gICAgcmV0dXJuIHsgLi4udGhpcy5zdHlsZXM/LmxheW91dCB9IGFzIExheU91dE1vZGVsO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxyXG4gIDxwLXRvYXN0IHBvc2l0aW9uPVwiYm90dG9tLXJpZ2h0XCIgW2Jhc2VaSW5kZXhdPVwiMTAwMDAwMDAwMDBcIiBbYXV0b1pJbmRleF09XCJ0cnVlXCIga2V5PVwid2lzaGxpc3RcIlxyXG4gICAgW3Nob3dUcmFuc2Zvcm1PcHRpb25zXT1cImlzTW9iaWxlID8gJ3RyYW5zbGF0ZVkoLTEwMCUpJyA6ICcnXCI+PC9wLXRvYXN0PlxyXG4gIDxwLXRvYXN0IHBvc2l0aW9uPVwiYm90dG9tLXJpZ2h0XCIgW2Jhc2VaSW5kZXhdPVwiMTAwMDAwMDAwMDBcIiBbYXV0b1pJbmRleF09XCJ0cnVlXCJcclxuICAgIFtzaG93VHJhbnNmb3JtT3B0aW9uc109XCJpc01vYmlsZSA/ICd0cmFuc2xhdGVZKC0xMDAlKScgOiAnJ1wiPjwvcC10b2FzdD5cclxuICA8cC10b2FzdCBwb3NpdGlvbj1cImJvdHRvbS1yaWdodFwiIFtiYXNlWkluZGV4XT1cIjEwMDAwMDAwMDAwXCIgW2F1dG9aSW5kZXhdPVwidHJ1ZVwiIGtleT1cIlZpZGVvIENhbGwgU2NoZWR1bGVcIlxyXG4gICAgW3Nob3dUcmFuc2Zvcm1PcHRpb25zXT1cImlzTW9iaWxlID8gJ3RyYW5zbGF0ZVkoLTEwMCUpJyA6ICcnXCI+PC9wLXRvYXN0PlxyXG4gIDxwLXRvYXN0IHBvc2l0aW9uPVwiYm90dG9tLXJpZ2h0XCIgW2Jhc2VaSW5kZXhdPVwiMTAwMDAwMDAwMDBcIiBbYXV0b1pJbmRleF09XCJ0cnVlXCIga2V5PVwiVmlkZW8gU2NoZWR1bGluZ1wiXHJcbiAgICBbc2hvd1RyYW5zZm9ybU9wdGlvbnNdPVwiaXNNb2JpbGUgPyAndHJhbnNsYXRlWSgtMTAwJSknIDogJydcIj48L3AtdG9hc3Q+XHJcbiAgPHNlY3Rpb24gY2xhc3M9XCJ0b3RhbC1jb250YWluZXJcIiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9CYWNrZ3JvdW5kXT1cInN0eWxlcz8uYmFja2dyb3VuZFwiXHJcbiAgICBzaW1wb0hvdmVyIChob3ZlcmluZyk9XCJzaG93RWRpdFRhYnMoJGV2ZW50KVwiIFthdHRyLnN0eWxlXT1cImN1c3RvbUNsYXNzXCI+XHJcblxyXG4gICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIiBjbGFzcz1cInNwZWVkZGlhbC1saW5lYXJcIiAqbmdJZj1cImlzTW9iaWxlXCI+XHJcbiAgICAgIDxwLXNwZWVkRGlhbCBbbW9kZWxdPVwiaXRlbXNcIiBkaXJlY3Rpb249XCJ1cFwiIFtidXR0b25TdHlsZV09XCJ7J2JvcmRlci1yYWRpdXMnOiAnNTAlJywgJ2hlaWdodCc6ICczMHB4J31cIiAvPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c2VjdGlvbiBjbGFzcz1cImNvbnRhaW5lclwiIFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb0FuaW1hdGlvbl09XCJzdHlsZXM/LmFuaW1hdGlvblwiIFtzcGFjaW5nSG9yaXpvbnRhbF09XCJzdHlsZXNMYXlvdXRcIiAgW3NpbXBvTGF5b3V0XT1cInN0eWxlcz8ubGF5b3V0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkaXNwbGF5LW5vbmVcIj48YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgc3R5bGU9XCJ0ZXh0LWRlY29yYXRpb246IG5vbmU7IGNvbG9yOiAjMDI2N0MxXCJcclxuICAgICAgICAgIChjbGljayk9XCJyb3V0ZVRvSG9tZSgpXCI+SG9tZTwvYT4gL1xyXG4gICAgICAgIDxzcGFuPnt7IHJlc3BvbnNlRGF0YT8ubmFtZSB8IHRpdGxlY2FzZSB9fTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgaC0xMDAgdy0xMDBcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDI1cHg7aGVpZ2h0OiAxMDAlO1wiIGNsYXNzPVwiYWJvdmUtaGVpZ2h0XCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7J21pbi1oZWlnaHQ6IDk1dmgnOiBpc01vYmlsZSwgJ21heC13aWR0aDogOTV2aCc6ICFpc01vYmlsZX1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTYgY29sLTEyIGgtMTAwXCIgY2xhc3M9XCJoZWlnaHRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kLWltZy1ibG9ja1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiSW1hZ2VTZWN0aW9uXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTQgY29sLTEyIGgtMTAwIHByb2R1Y3QtZGV0YWlsXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNNb2JpbGVcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInZhcmlhbnRzXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiUHJvZHVjdERlc2NcIj48L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc01vYmlsZVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidmFyaWFudHNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTW9iaWxlXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJBY3Rpb25CdG5cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9TaG93SW5KZXdlbGxlcnlcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIkRlbGl2ZXJ5U2VjdGlvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVjb21Db25maWdzPy52aWRlb0NhbGxFbmFibGVkXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ2aWRlb0NhbGxTY2hlZHVsZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVjb21Db25maWdzPy5icmFuZFByb21pc2VFbmFibGVkXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJicmFuZGluZ1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGVzY3JpcHRvcnNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInByb2R1Y3QtZGVzYyBib2R5LWxhcmdlIGQtYmxvY2tcIiAqbmdJZj1cInJlc3BvbnNlRGF0YT8uYnJpZWZcIlxyXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cInJlc3BvbnNlRGF0YS5icmllZlwiPjwvZGl2PiAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LXNrdVwiPlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCJyZXNwb25zZURhdGE/Lml0ZW1JbnZlbnRvcnlcIj5TS1UgOiB7e3Jlc3BvbnNlRGF0YS5pdGVtSW52ZW50b3J5Py5vcGVuaW5nU3RvY2t9fTwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2XHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zZURhdGE/Lml0ZW1DYXRlZ29yaXNhdGlvbj8uaXRlbUNhdGVnb3JpZXMgJiYgKHJlc3BvbnNlRGF0YT8uaXRlbUNhdGVnb3Jpc2F0aW9uPy5pdGVtQ2F0ZWdvcmllcz8ubGVuZ3RoIHx8IDApID4gMFwiPlxyXG4gICAgICAgICAgICAgIENhdGVnb3J5IDogPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJnb1RvRmlsdGVyKGNhdC5yZWZOYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY2F0IG9mIHJlc3BvbnNlRGF0YT8uaXRlbUNhdGVnb3Jpc2F0aW9uPy5pdGVtQ2F0ZWdvcmllcztsZXQgaWR4ID0gaW5kZXhcIj57e2NhdC5yZWZOYW1lIHxcclxuICAgICAgICAgICAgICAgIHRpdGxlY2FzZX19IDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoaWR4KzEpICE9IHJlc3BvbnNlRGF0YT8uaXRlbUNhdGVnb3Jpc2F0aW9uPy5pdGVtQ2F0ZWdvcmllcz8ubGVuZ3RoXCI+LDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvYT48L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIocmVzcG9uc2VEYXRhPy5pdGVtQ2F0ZWdvcmlzYXRpb24/LnByb2R1Y3RUYWdzPy5sZW5ndGggfHwgMCkgPiAwXCI+VGFncyA6IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdGFnIG9mIHJlc3BvbnNlRGF0YT8uaXRlbUNhdGVnb3Jpc2F0aW9uPy5wcm9kdWN0VGFnc1wiPnt7dGFnLnRhZ05hbWV9fSxcclxuICAgICAgICAgICAgICA8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIlNvY2lhbEljb25zXCI+PC9uZy1jb250YWluZXI+IC0tPlxyXG4gICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiUmV2aWV3U2VjdGlvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiUmV2aWV3c1NlY3Rpb25cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3NlY3Rpb24+XHJcbiAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZWxhdGVkUHJvZHVjdERhdGE/Lmxlbmd0aFwiPlxyXG4gICAgICA8c2ltcG8tZmVhdHVyZWQtcHJvZHVjdHMgW2VkaXRdPVwiZmFsc2VcIiBbZGF0YV09XCJmZWF0dXJlUHJvZHVjdERhdGFcIiBbcmVzcG9uc2VEYXRhXT1cInJlbGF0ZWRQcm9kdWN0RGF0YVwiXHJcbiAgICAgICAgW2lzUmVsYXRlZFByb2R1Y3RdPVwidHJ1ZVwiIChjaGFuZ2VEZXRhaWxQcm9kdWN0KT1cImNoYW5nZVByb2R1Y3QoJGV2ZW50KVwiPjwvc2ltcG8tZmVhdHVyZWQtcHJvZHVjdHM+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZWNlbnRWaWV3SXRlbUxpc3Q/Lmxlbmd0aFwiPlxyXG4gICAgICA8c2ltcG8tZmVhdHVyZWQtcHJvZHVjdHMgW2VkaXRdPVwiZmFsc2VcIiBbZGF0YV09XCJyZWNlbnRWaWV3ZWREYXRhXCIgW3Jlc3BvbnNlRGF0YV09XCJyZWNlbnRWaWV3SXRlbUxpc3RcIlxyXG4gICAgICAgIFtpc1JlbGF0ZWRQcm9kdWN0XT1cInRydWVcIj48L3NpbXBvLWZlYXR1cmVkLXByb2R1Y3RzPlxyXG4gICAgPC9uZy1jb250YWluZXI+IC0tPlxyXG4gICAgPCEtLSA8bmctY29udGFpbmVyPlxyXG4gICAgICA8c2ltcG8tY3VzdG9tZXItcmV2aWV3IFtkYXRhXT1cImRhdGFcIj48L3NpbXBvLWN1c3RvbWVyLXJldmlldz5cclxuICAgIDwvbmctY29udGFpbmVyPiAtLT5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3R5bGVzPy5kZXZpZGVyPy5kaXNwbGF5XCI+XHJcbiAgICAgIDxzaW1wby1zdmctZGl2aWRlciBbZGl2aWRlclR5cGVdPVwic3R5bGVzPy5kZXZpZGVyPy5kZXZpZGVyVHlwZVwiXHJcbiAgICAgICAgW2NvbG9yXT1cIm5leHRDb21wb25lbnRDb2xvcj8uY29sb3JcIj48L3NpbXBvLXN2Zy1kaXZpZGVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICAgIDxzaW1wby1ob3Zlci1lbGVtZW50cyBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCIgW2VkaXRPcHRpb25zXT1cImVkaXRcIj48L3NpbXBvLWhvdmVyLWVsZW1lbnRzPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0RlbGV0ZVwiIFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZGVsZXRlfVwiPlxyXG4gICAgICA8c2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiPjwvc2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L3NlY3Rpb24+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbjxuZ3gtc2tlbGV0b24tbG9hZGVyICpuZ0lmPVwiaXNMb2FkaW5nXCIgY291bnQ9XCIxXCIgYXBwZWFyYW5jZT1cImNpcmNsZVwiIFt0aGVtZV09XCJ7XHJcbiAgd2lkdGg6ICcxMDAlJyxcclxuICBoZWlnaHQ6ICc0MHZoJyxcclxuICAnYm9yZGVyLXJhZGl1cyc6ICcxMHB4JyxcclxuICAncG9zaXRpb24nOiAncmVsYXRpdmUnLFxyXG4gICdyaWdodCc6ICc1cHgnXHJcbn1cIj5cclxuPC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxyXG5cclxuXHJcbjxkaXYgY2xhc3M9XCJtb2JpbGUtZm9vdGVyXCI+XHJcbiAgPGRpdiBjbGFzcz1cImljb25zXCI+XHJcbiAgICA8ZGl2IChjbGljayk9XCJnb1RvQ2FydCgpXCI+XHJcbiAgICAgIDxtYXQtaWNvbj5zaG9wcGluZ19jYXJ0PC9tYXQtaWNvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdj5cclxuICAgICAgPG1hdC1pY29uIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgKGNsaWNrKT1cImFkZFRvRmF2b3VyaXRlKClcIlxyXG4gICAgICAgICpuZ0lmPVwiIWlzSXRlbUFzRmF2b3JpdGVcIj5mYXZvcml0ZV9ib3JkZXI8L21hdC1pY29uPlxyXG4gICAgICA8bWF0LWljb24gW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAoY2xpY2spPVwicmVtb3ZlVG9GYXZvdXJpdGUoKVwiXHJcbiAgICAgICAgKm5nSWY9XCJpc0l0ZW1Bc0Zhdm9yaXRlXCI+ZmF2b3JpdGU8L21hdC1pY29uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGJ1dHRvbiBjbGFzcz1cIm91dC1vZi1zdG9jayB0ZXh0LWNlbnRlclwiICpuZ0lmPVwiaXNJdGVtT3V0T2ZTdG9ja1wiIFthcHBCdXR0b25FZGl0b3JdPVwiZWRpdCA/PyBmYWxzZVwiXHJcbiAgICBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbYnV0dG9uU3R5bGVdPVwiZ2V0QnV0dG9uU3R5bGUoMClcIiBbYnV0dG9uSWRdPVwiZ2V0QnV0dG9uSWQoMClcIiBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCJcclxuICAgIFtpZF09XCJkYXRhPy5pZCtnZXRCdXR0b25JZCgwKVwiPk91dCBvZlxyXG4gICAgU3RvY2s8L2J1dHRvbj5cclxuICA8ZGl2IGNsYXNzPVwicXVhbnRpdHlcIiAqbmdJZj1cInJlc3BvbnNlRGF0YT8ucXVhbnRpdHkgJiYgIWVjb21Db25maWdzPy52aWRlb0NhbGxFbmFibGVkXCJcclxuICAgIFtzdHlsZS5ib3JkZXJDb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicGx1c1wiIChjbGljayk9XCJhZGRUb0NhcnQoJ1NVQlNUUkFDVCcpXCIgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj4tPC9kaXY+XHJcbiAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDUwcHg7XCIgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBmY1wiXHJcbiAgICAgIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+e3tyZXNwb25zZURhdGE/LnF1YW50aXR5fX08L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtaW51c1wiIChjbGljayk9XCJhZGRUb0NhcnQoJ0FERCcpXCIgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj4rPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGJ1dHRvbiAqbmdJZj1cInJlc3BvbnNlRGF0YT8ucXVhbnRpdHkgJiYgZWNvbUNvbmZpZ3M/LnZpZGVvQ2FsbEVuYWJsZWRcIiBjbGFzcz1cInNlbmQtYnRuIHctMTAwXCJcclxuICAgIFthcHBCdXR0b25FZGl0b3JdPVwiZWRpdCA/PyBmYWxzZVwiIHNpbXBvQnV0dG9uRGlyZWN0aXZlIFtidXR0b25TdHlsZV09XCJnZXRCdXR0b25TdHlsZSgwKVwiIFtidXR0b25JZF09XCJnZXRCdXR0b25JZCgwKVwiXHJcbiAgICBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCIgW2lkXT1cImRhdGE/LmlkK2dldEJ1dHRvbklkKDApXCIgKGNsaWNrKT1cIiFlZGl0ID8gb3BlbkRpYWxvZ0JveChkaWFsb2dCb3gpIDogJydcIj5cclxuICAgIDxtYXQtaWNvbj52aWRlb2NhbTwvbWF0LWljb24+TElWRSBWSURFTyBDQUxMPC9idXR0b24+XHJcbiAgPGRpdiAqbmdJZj1cIiFyZXNwb25zZURhdGE/LnF1YW50aXR5ICYmICFpc0l0ZW1PdXRPZlN0b2NrXCIgY2xhc3M9XCJ3LTc1XCI+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwic2VuZC1idG4gdy0xMDBcIiBbYXBwQnV0dG9uRWRpdG9yXT1cImVkaXQgPz8gZmFsc2VcIiBzaW1wb0J1dHRvbkRpcmVjdGl2ZVxyXG4gICAgICBbYnV0dG9uU3R5bGVdPVwiZ2V0QnV0dG9uU3R5bGUoMClcIiBbYnV0dG9uSWRdPVwiZ2V0QnV0dG9uSWQoMClcIiBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCJcclxuICAgICAgW2lkXT1cImRhdGE/LmlkK2dldEJ1dHRvbklkKDApXCJcclxuICAgICAgKGNsaWNrKT1cIiFlZGl0ID8gYWRkVG9DYXJ0KCkgOiAnJ1wiPjxtYXQtaWNvbj5zaG9wcGluZ19jYXJ0PC9tYXQtaWNvbj57e2RhdGE/LmFjdGlvbj8uYnV0dG9ucz8uWzBdPy5jb250ZW50Py5sYWJlbH19PC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNSZXZpZXdTZWN0aW9uPlxyXG4gIDxkaXYgY2xhc3M9XCJyZXZpZXctc2VjXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5DdXN0b21lciBSZXZpZXc8L2Rpdj5cclxuICAgIDxwLXJhdGluZyBbY2FuY2VsXT1cImZhbHNlXCIgW3JlYWRvbmx5XT1cInRydWVcIiBbKG5nTW9kZWwpXT1cInRvdGFsUmV2aWV3XCIgLz5cclxuICAgIDxzcGFuPkJlIHRoZSBmaXJzdCB0byB3cml0ZSBhIHJldmlldzwvc3Bhbj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJtdC0zXCIgc2ltcG9CdXR0b25EaXJlY3RpdmUgW2lkXT1cImJ1dHRvbklkXCIgW2J1dHRvblN0eWxlXT1cImJ1dHRvbj8uc3R5bGVzXCJcclxuICAgICAgW2JhY2tncm91bmRJbmZvXT1cInN0eWxlcz8uYmFja2dyb3VuZFwiIFtjb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcclxuICAgICAgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAoY2xpY2spPVwic2hvd1JldmlldyA9ICFzaG93UmV2aWV3XCI+e3sgIXNob3dSZXZpZXcgPyAnQWRkXHJcbiAgICAgIFJldmlldycgOiAnQ2FuY2VsIFJldmlldyd9fTwvYnV0dG9uPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dSZXZpZXdcIj5cclxuICAgICAgPGhyIC8+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLXJldmlld1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPldyaXRlIGEgcmV2aWV3PC9kaXY+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWNvbmRhcnktdGV4dFwiPlJBVElORzwvc3Bhbj5cclxuICAgICAgICA8cC1yYXRpbmcgWyhuZ01vZGVsKV09XCJwcm9kdWN0UmV2aWV3XCIgW2NhbmNlbF09XCJmYWxzZVwiIFtyZWFkb25seV09XCJmYWxzZVwiIC8+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2Vjb25kYXJ5LXRleHRcIj5SZXZpZXcgVGl0bGU8L3NwYW4+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIkdpdmUgeW91ciByZXZpZXcgYSB0aXRsZVwiIFsobmdNb2RlbCldPVwicmV2aWV3VGl0bGVcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWNvbmRhcnktdGV4dFwiPlJldmlldzwvc3Bhbj5cclxuICAgICAgICAgIDx0ZXh0YXJlYSBwbGFjZWhvbGRlcj1cIldyaXRlIHlvdXIgY29tbWVudHMgaGVyZVwiIFsobmdNb2RlbCldPVwicmV2aWV3RGVzY3JpcHRpb25cIj48L3RleHRhcmVhPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpZXctYWN0aW9uLWJ0blwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBbc3R5bGUuYm9yZGVyQ29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgKGNsaWNrKT1cInNob3dSZXZpZXcgPSBmYWxzZVwiPkNhbmNlbCByZXZpZXc8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gc2ltcG9CdXR0b25EaXJlY3RpdmUgW2lkXT1cImJ1dHRvbklkXCIgW2J1dHRvblN0eWxlXT1cImJ1dHRvbj8uc3R5bGVzXCJcclxuICAgICAgICAgICAgW2JhY2tncm91bmRJbmZvXT1cInN0eWxlcz8uYmFja2dyb3VuZFwiIFtjb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFkZFByb2R1Y3RSZXZpZXcoKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwcm9kdWN0UmV2aWV3ID09IDAgJiYgcmV2aWV3VGl0bGU/Lmxlbmd0aCA9PSAwICYmIHJldmlld0Rlc2NyaXB0aW9uPy5sZW5ndGggPT0gMFwiPlN1Ym1pdFxyXG4gICAgICAgICAgICByZXZpZXc8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNTb2NpYWxJY29ucz5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXN0YXJ0IGFsaWduLWl0ZW1zLWxnLWNlbnRlciBmbGV4LWNvbHVtbiBmbGV4LWxnLXJvdyBnYXAtbGctMCBnYXAtM1wiXHJcbiAgICAgIFtuZ0NsYXNzXT1cImRhdGE/LmNvbnRlbnQ/LnNvY2lhbExpbmtzPy5kaXNwbGF5ID8gJ2p1c3RpZnktY29udGVudC1iZXR3ZWVuJyA6ICdqdXN0aWZ5LWNvbnRlbnQtZW5kJ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTBcIiAqbmdJZj1cImRhdGE/LmNvbnRlbnQ/LnNvY2lhbExpbmtzPy5kaXNwbGF5XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhPy5jb250ZW50Py5zb2NpYWxMaW5rcz8uY2hhbm5lbHNcIj5cclxuICAgICAgICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7bWFyZ2luLXJpZ2h0OiAxMHB4O1wiPlxyXG4gICAgICAgICAgICA8c2ltcG8tc29jaWEtaWNvbnMgW3NvY2lhbEljb25EYXRhXT1cIml0ZW1cIiBbY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiXHJcbiAgICAgICAgICAgICAgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiPjwvc2ltcG8tc29jaWEtaWNvbnM+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjQWN0aW9uQnRuPlxyXG4gIDxkaXYgY2xhc3M9XCJidXR0b24tcGFyZW50XCI+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwib3V0LW9mLXN0b2NrIHRleHQtY2VudGVyXCIgKm5nSWY9XCJpc0l0ZW1PdXRPZlN0b2NrXCIgW2FwcEJ1dHRvbkVkaXRvcl09XCJlZGl0ID8/IGZhbHNlXCJcclxuICAgICAgc2ltcG9CdXR0b25EaXJlY3RpdmUgW2J1dHRvblN0eWxlXT1cImdldEJ1dHRvblN0eWxlKDApXCIgW2J1dHRvbklkXT1cImdldEJ1dHRvbklkKDApXCIgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiXHJcbiAgICAgIFtpZF09XCJkYXRhPy5pZCtnZXRCdXR0b25JZCgwKVwiPk91dCBvZlxyXG4gICAgICBTdG9jazwvYnV0dG9uPlxyXG4gICAgPGRpdiBjbGFzcz1cInF1YW50aXR5XCIgKm5nSWY9XCJyZXNwb25zZURhdGE/LnF1YW50aXR5ICYmICFlY29tQ29uZmlncz8udmlkZW9DYWxsRW5hYmxlZFwiXHJcbiAgICAgIFtzdHlsZS5ib3JkZXJDb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwbHVzXCIgKGNsaWNrKT1cImFkZFRvQ2FydCgnU1VCU1RSQUNUJylcIiBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPi08L2Rpdj5cclxuICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOiA1MHB4O1wiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZmNcIlxyXG4gICAgICAgIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+e3tyZXNwb25zZURhdGE/LnF1YW50aXR5fX08L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1pbnVzXCIgKGNsaWNrKT1cImFkZFRvQ2FydCgnQUREJylcIiBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPis8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGJ1dHRvbiAqbmdJZj1cInJlc3BvbnNlRGF0YT8ucXVhbnRpdHkgJiYgZWNvbUNvbmZpZ3M/LnZpZGVvQ2FsbEVuYWJsZWRcIiBjbGFzcz1cInNlbmQtYnRuIHctMTAwXCJcclxuICAgICAgW2FwcEJ1dHRvbkVkaXRvcl09XCJlZGl0ID8/IGZhbHNlXCIgc2ltcG9CdXR0b25EaXJlY3RpdmUgW2J1dHRvblN0eWxlXT1cImdldEJ1dHRvblN0eWxlKDApXCJcclxuICAgICAgW2J1dHRvbklkXT1cImdldEJ1dHRvbklkKDApXCIgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiIFtpZF09XCJkYXRhPy5pZCtnZXRCdXR0b25JZCgwKVwiXHJcbiAgICAgIChjbGljayk9XCIhZWRpdCA/IG9wZW5EaWFsb2dCb3goZGlhbG9nQm94KSA6ICcnXCI+XHJcbiAgICAgIDxtYXQtaWNvbj52aWRlb2NhbTwvbWF0LWljb24+TElWRSBWSURFTyBDQUxMPC9idXR0b24+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiKCFyZXNwb25zZURhdGE/LnF1YW50aXR5ICYmICFpc0l0ZW1PdXRPZlN0b2NrKSAmJiBJc0Vjb21tZXJjZVwiIGNsYXNzPVwidy03NVwiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwic2VuZC1idG4gdy0xMDBcIiBbYXBwQnV0dG9uRWRpdG9yXT1cImVkaXQgPz8gZmFsc2VcIiBzaW1wb0J1dHRvbkRpcmVjdGl2ZVxyXG4gICAgICAgIFtidXR0b25TdHlsZV09XCJnZXRCdXR0b25TdHlsZSgwKVwiIFtidXR0b25JZF09XCJnZXRCdXR0b25JZCgwKVwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIlxyXG4gICAgICAgIFtpZF09XCJkYXRhPy5pZCtnZXRCdXR0b25JZCgwKVwiXHJcbiAgICAgICAgKGNsaWNrKT1cIiFlZGl0ID8gYWRkVG9DYXJ0KCkgOiAnJ1wiPjxtYXQtaWNvbj5zaG9wcGluZ19jYXJ0PC9tYXQtaWNvbj57e2RhdGE/LmFjdGlvbj8uYnV0dG9ucz8uWzBdPy5jb250ZW50Py5sYWJlbH19PC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCIoIXJlc3BvbnNlRGF0YT8ucXVhbnRpdHkgJiYgIWlzSXRlbU91dE9mU3RvY2spICYmICFJc0Vjb21tZXJjZVwiIGNsYXNzPVwidy03NVwiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwic2VuZC1idG4gdy0xMDBcIiBbYXBwQnV0dG9uRWRpdG9yXT1cImVkaXQgPz8gZmFsc2VcIiBzaW1wb0J1dHRvbkRpcmVjdGl2ZVxyXG4gICAgICAgIFtidXR0b25TdHlsZV09XCJnZXRCdXR0b25TdHlsZSgwKVwiIFtidXR0b25JZF09XCJnZXRCdXR0b25JZCgwKVwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIlxyXG4gICAgICAgIFtpZF09XCJkYXRhPy5pZCtnZXRCdXR0b25JZCgwKVwiIChjbGljayk9XCJyYWlzZUxlYWQoKVwiPjxtYXQtaWNvbiBzdHlsZT1cImhlaWdodDoxNHB4ICFpbXBvcnRhbnRcIj5cclxuICAgICAgICAgIG1lc3NhZ2U8L21hdC1pY29uPk5vdGlmeSBNZTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmF2b3VyaXRlIGJvcmRlci1zb2xpZFwiICpuZ0lmPVwiSXNFY29tbWVyY2VcIiBbc3R5bGUuYm9yZGVyQ29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPlxyXG4gICAgICA8bWF0LWljb24gW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAoY2xpY2spPVwiYWRkVG9GYXZvdXJpdGUoKVwiXHJcbiAgICAgICAgKm5nSWY9XCIhaXNJdGVtQXNGYXZvcml0ZVwiPmZhdm9yaXRlX2JvcmRlcjwvbWF0LWljb24+XHJcbiAgICAgIDxtYXQtaWNvbiBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIChjbGljayk9XCJyZW1vdmVUb0Zhdm91cml0ZSgpXCJcclxuICAgICAgICAqbmdJZj1cImlzSXRlbUFzRmF2b3JpdGVcIj5mYXZvcml0ZTwvbWF0LWljb24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGFyZS1wcm9kdWN0XCI+XHJcbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInNoYXJlLWljb25cIiAoY2xpY2spPVwic2hhcmVQcm9kdWN0KClcIiBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiXHJcbiAgICAgICAgW3N0eWxlLmJvcmRlckNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5zaGFyZTwvbWF0LWljb24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdmFyaWFudHM+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGE/LnN0eWxlcz8uY3VzdG9taXphdGlvbiA9PSAnU3R5bGUxJ1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdmFyaWVudCBvZiB2YXJpZW50cyB8IGtleXZhbHVlXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0xNVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2YXJpZW50LWtleVwiPnt7dmFyaWVudC5rZXl9fTwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBzdHlsZT1cImdhcDogNXB4O1wiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdmFyaWVudFZhbHVlIG9mIHZhcmllbnQudmFsdWVcIiBjbGFzcz1cInZhcmllbnQtdGFnXCJcclxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInNlbGVjdGVkVmFyaWVudC5nZXQodmFyaWVudC5rZXkpID09IHZhcmllbnRWYWx1ZSA/ICd3aGl0ZScgOiBkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJzZWxlY3RlZFZhcmllbnQuZ2V0KHZhcmllbnQua2V5KSA9PSB2YXJpZW50VmFsdWUgPyBkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yIDogJydcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VmFyaWVudCh2YXJpZW50LmtleSwgdmFyaWVudFZhbHVlKVwiPnt7dmFyaWVudFZhbHVlIHwgdGl0bGVjYXNlfX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YT8uc3R5bGVzPy5jdXN0b21pemF0aW9uID09ICdTdHlsZTInICYmIHNlbGVjdGVkVmFyaWVudC5zaXplID4gMFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC0yIHN0eWxlMi1jb250YWluZXIgdy0xMDBcIiBbc3R5bGUuYm9yZGVyQ29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRWYXJpZW50IHwga2V5dmFsdWVcIiBjbGFzcz1cInB4LTMgcHktMiB2YXJpZW50LWl0ZW1cIlxyXG4gICAgICAgICAgW2NsYXNzXT1cImdldENsYXNzKHNlbGVjdGVkVmFyaWVudClcIiBbc3R5bGUuYm9yZGVyQ29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZhcmlhbnQtaGVhZFwiPnt7aXRlbS5rZXkgfCB0aXRsZWNhc2V9fTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZhcmlhbnQtdmFsdWUgdGV4dC1zdGFydCBmdy02MDBcIj5cclxuICAgICAgICAgICAge3tpdGVtLnZhbHVlIHxcclxuICAgICAgICAgICAgdGl0bGVjYXNlfX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgcC0wXCIgW2NsYXNzXT1cImdldENsYXNzKHNlbGVjdGVkVmFyaWVudClcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tdGV4dCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgaC0xMDAgcC0yXCIgZGF0YS1icy10b2dnbGU9XCJvZmZjYW52YXNcIlxyXG4gICAgICAgICAgICBkYXRhLWJzLXRhcmdldD1cIiNvZmZjYW52YXNSaWdodFZhcmlhbnRcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcclxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImdldFRleHRDb2xvcihkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yKVwiPkNVU1RPTUlTRVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI1Byb2R1Y3REZXNjPlxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW5cIiBzdHlsZT1cIm1hcmdpbi10b3A6IDE1cHg7XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmF0aW5nIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0yIG1iLTNcIlxyXG4gICAgICAqbmdJZj1cInJlc3BvbnNlRGF0YT8uYXZlcmFnZVJhdGluZyAgJiYgcmVzcG9uc2VEYXRhPy50b3RhbFJldmlld0NvdW50XCJcclxuICAgICAgW3N0eWxlLmJvcmRlckNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJhdGluZy1ubyBteS0xXCI+e3socmVzcG9uc2VEYXRhPy5hdmVyYWdlUmF0aW5nIHwgbnVtYmVyOicxLjEtMicpfX3irZA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRvdGFsLXJhdGluZ3MgbXktMVwiPnt7cmVzcG9uc2VEYXRhPy50b3RhbFJldmlld0NvdW50ID09IDEgPyAnMSBSYXRpbmcnIDpcclxuICAgICAgICBnZXRSYXRpbmdzKHJlc3BvbnNlRGF0YT8udG90YWxSZXZpZXdDb3VudCkgKyBcIiBcIiArIFwicmF0aW5nc1wifX08L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInByaWNlXCIgW25nQ2xhc3NdPVwieydkaXNjb3VudC1wcmljZSc6IHJlc3BvbnNlRGF0YT8ucHJpY2U/LnNlbGxpbmdQcmljZX1cIlxyXG4gICAgICAgICpuZ0lmPVwicmVzcG9uc2VEYXRhPy5wcmljZT8uc2VsbGluZ1ByaWNlICYmIHJlc3BvbnNlRGF0YS5wcmljZS5zZWxsaW5nUHJpY2UgPiAwXCI+PHNwYW5cclxuICAgICAgICAgIFtpbm5lckhUTUxdPSdjdXJyZW5jeSc+PC9zcGFuPlxyXG4gICAgICAgIHt7cmVzcG9uc2VEYXRhPy5wcmljZT8uc2VsbGluZ1ByaWNlfX08L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInByaWNlXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7J3N0cmlrZS10aHJvdWdoJzogZ2V0RGlmZmVyZW5jZShyZXNwb25zZURhdGE/LnByaWNlPy5kaXNjb3VudGVkUHJpY2UsIHJlc3BvbnNlRGF0YT8ucHJpY2U/LnZhbHVlKSA+IDJ9XCJcclxuICAgICAgICAqbmdJZj1cImdldERpZmZlcmVuY2UocmVzcG9uc2VEYXRhPy5wcmljZT8uZGlzY291bnRlZFByaWNlLCByZXNwb25zZURhdGE/LnByaWNlPy52YWx1ZSkgPiAyXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubmVySFRNTF09J2N1cnJlbmN5Jz48L3NwYW4+XHJcbiAgICAgICAge3tyZXNwb25zZURhdGE/LnByaWNlPy52YWx1ZSB8IG51bWJlcjonMS4wLTAnfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0YXgtdGV4dFwiPihNUlAgSW5jbHVzaXZlIGFsbCB0YXhlcyk8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1sYXJnZSB0cmltLXRleHRcIiBjbGFzcz1cInByb2R1Y3QtaGVhZGluZ1wiPnt7cmVzcG9uc2VEYXRhPy5uYW1lfX08L2Rpdj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9TaG93SW5KZXdlbGxlcnlcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXNjb3VudFwiPlxyXG4gICAgICA8cD5GbGF0IDMwJSBvZmYgb24gRGlhbW9uZCBQcmljZXM8L3A+XHJcbiAgICAgIDxwIGNsYXNzPVwib2ZmZXJcIj5PZmZlciBFeHBpcmVzIGluIDQgZGF5czwvcD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpbmctc2l6ZS12aWRlb1wiPlxyXG4gICAgICA8cCBjbGFzcz1cInRleHRcIj5Ob3Qgc3VyZSBhYm91dCB0aGUgcmluZyBzaXplPzwvcD5cclxuICAgICAgPHAgY2xhc3M9XCJsZWFybi1ob3dcIiBkYXRhLXRvZ2dsZT1cIm1vZGFsXCIgZGF0YS10YXJnZXQ9XCIjZXhhbXBsZU1vZGFsXCI+TGVhcm4gSG93XHJcbiAgICAgICAgPG1hdC1pY29uPnBsYXlfY2lyY2xlX291dGxpbmU8L21hdC1pY29uPlxyXG4gICAgICA8L3A+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInByb2R1Y3QtZGVzYyBib2R5LWxhcmdlIGQtYmxvY2tcIiAqbmdJZj1cInJlc3BvbnNlRGF0YT8uYnJpZWZcIiBbaW5uZXJIVE1MXT1cInJlc3BvbnNlRGF0YS5icmllZlwiPjwvZGl2PlxyXG5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZGVzY3JpcHRvcnM+XHJcbiAgPGRpdiBjbGFzcz1cInJvdyBwcm9kLWRlc2NcIj5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LWhlYWRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXItdGV4dFwiICpuZ0lmPVwicmVzcG9uc2VEYXRhPy5kZXNjcmlwdG9yIHx8IHJlc3BvbnNlRGF0YT8ubWF0ZXJpYWxzXCI+UHJvZHVjdCBEZXRhaWxzPC9zcGFuPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZWJyZWFrdXAtYnRuIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAqbmdJZj1cInN1YkluZHVzdHJ5TmFtZSA9PSAnRWNvbW1lcmNlIEpld2VsbGVyeSdcIiBkYXRhLWJzLXRvZ2dsZT1cIm9mZmNhbnZhc1wiXHJcbiAgICAgICAgICBkYXRhLWJzLXRhcmdldD1cIiNvZmZjYW52YXNSaWdodFByaWNlQnJlYWt1cFwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIlxyXG4gICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImdldFRleHRDb2xvcihkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yKVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+IFBSSUNFIEJSRUFLVVBcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiAxMHB4O1wiIGNsYXNzPVwiYm9keS1sYXJnZSBicmllZi1kZXNjXCIgKm5nSWY9XCJyZXNwb25zZURhdGE/LmRlc2NyaXB0b3JcIlxyXG4gICAgICAgICAgW2lubmVySFRNTF09XCJyZXNwb25zZURhdGE/LmRlc2NyaXB0b3I/Lm5hbWVcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmNvbG9yXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3ViSW5kdXN0cnlOYW1lID09ICdFY29tbWVyY2UgSmV3ZWxsZXJ5J1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJqZXdlbGxlcnktdGFibGUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbGUgb2YgcmVzcG9uc2VEYXRhPy5tYXRlcmlhbHNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImpld2VsLWNvbnRhaW5lciBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImpld2VsLWhlYWRlclwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImdldEhlYWRlckNvbG9yKGVsZS5tYXRlcmlhbFR5cGUpXCI+XHJcbiAgICAgICAgICAgICAgICB7e2VsZS5tYXRlcmlhbFR5cGUgfCB0aXRsZWNhc2V9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbS0wIHctMTAwIGJyLXBcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJnZXRCYWNrZ3JvdW5kQ29sb3IoZWxlLm1hdGVyaWFsVHlwZSlcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBtZXRhbC1wdXJpdHlcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICBOZXQgV2VpZ2h0L0dyYW1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7ZWxlLnByaW1hcnlNYXRlcmlhbFdlaWdodCArIFwiIFwiICsgJ2dyYW1zJ319XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgbWV0YWwtcHVyaXR5XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgUHVyaXR5XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e2VsZS5tYXRlcmlhbFB1cml0eX19XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFByaWNlL0dyYW1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIOKCuXt7IGdldFByaWNlUGVyR3JhbShlbGUucHJpbWFyeU1hdGVyaWFsV2VpZ2h0LGVsZS5tYXRlcmlhbFByaWNlKSB8XHJcbiAgICAgICAgICAgICAgICAgICAgbnVtYmVyOicxLjItMid9fVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgVmFsdWVcclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIOKCuXt7ZWxlLm1hdGVyaWFsUHJpY2UgfCBudW1iZXI6JzEuMi0yJ319XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiamV3ZWwtY29udGFpbmVyIG10LTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImpld2VsLWhlYWRlclwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImdldEhlYWRlckNvbG9yKCdNYWtpbmcgQ2hhcmdlcycpXCI+XHJcbiAgICAgICAgICAgICAgTWFraW5nIENoYXJnZXNcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbS0wIHctMTAwIGJyLXBcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJnZXRCYWNrZ3JvdW5kQ29sb3IoJ01ha2luZyBDaGFyZ2VzJylcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIE5ldCBXZWlnaHRcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7cmVzcG9uc2VEYXRhPy5iYXNlV2VpZ2h0fX0gPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICBNYWtpbmcgQ2hhcmdlICVcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7cmVzcG9uc2VEYXRhPy5tYWtpbmdDaGFyZ2VQZXJjZW50YWdlfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgVmFsdWVcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgIOKCuXt7cmVzcG9uc2VEYXRhPy5qZXdlbHJ5UHJpY2VCcmVha3VwPy5tYWtpbmdDaGFyZ2VBbW91bnQgfCBudW1iZXI6JzEuMi0yJ319XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDwhLS0gPGRpdiBjbGFzcz1cInRhYi1ncm91cFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRhYlwiIGRhdGEtYnMtdG9nZ2xlPVwiY29sbGFwc2VcIiBocmVmPVwiI2NvbGxhcHNlRXhhbXBsZVwiID5EZXNjcmlwdGlvbjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiAxMHB4O1wiIGNsYXNzPVwiYm9keS1sYXJnZSBjb2xsYXBzZVwiIGlkPVwiY29sbGFwc2VFeGFtcGxlXCIgKm5nSWY9XCJyZXNwb25zZURhdGE/LmRlc2NyaXB0b3JcIlxyXG4gICAgICAgICAgW2lubmVySFRNTF09XCJyZXNwb25zZURhdGE/LmRlc2NyaXB0b3I/Lm5hbWVcIj48L2Rpdj4gLS0+XHJcbiAgPC9kaXY+XHJcblxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNJbWFnZVNlY3Rpb24+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF2YXJpZW50TG9hZGluZyAmJiAoaXNNb2JpbGUgfHwgZGF0YT8uc3R5bGVzPy5ncmlkU3R5bGUgPT0gJ1N0eWxlMScpXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW1nLWxpc3RcIiAqbmdJZj1cInNjcmVlbldpZHRoID4gNTAwXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGltZyBvZiBpdGVtSW1hZ2VzXCI+XHJcbiAgICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIG9uZXJyb3I9XCJ0aGlzLnNyYz0naHR0cHM6Ly9pLnBvc3RpbWcuY2MvaFBTMkpwVjAvbm8taW1hZ2UtYXZhaWxhYmxlLmpwZydcIiBbc3JjXT1cImltZy5pbWdVcmxcIlxyXG4gICAgICAgICAgYWx0PVwiXCIgY2xhc3M9XCJpbWdcIiAoY2xpY2spPVwiY2hhbmdlSW1nKGltZy5pbWdVcmwpXCIgW3NpbXBvQ29ybmVyXT1cInN0eWxlcz8uY29ybmVyc1wiXHJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyQ29sb3JdPVwiaW1nLmltZ1VybCA9PSBjdXJyZW50SW1nID8gZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvciA6ICd0cmFuc3BhcmVudCdcIj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJpdGVtLWltZ1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudEltZ1wiPlxyXG5cclxuICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cInNoYXJlLWljb25cIiAoY2xpY2spPVwic2hhcmVQcm9kdWN0KClcIj5zaGFyZTwvbWF0LWljb24+IC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNNb2JpbGVcIj5cclxuICAgICAgICAgIDxpbWcgW3NyY109XCJjdXJyZW50SW1nXCIgY2xhc3M9XCJpbWcgem9vbVwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlOyB3aWR0aDogMTAwJTtcIiBbc2ltcG9Db3JuZXJdPVwic3R5bGVzPy5jb3JuZXJzXCI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTW9iaWxlXCI+XHJcbiAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJjdXJyZW50SW1nXCIgYWx0PVwiXCIgW3NpbXBvQ29ybmVyXT1cInN0eWxlcz8uY29ybmVyc1wiIGNsYXNzPVwiem9vbVwiPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjdXJyZW50SW1nXCI+XHJcbiAgICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIHNyYz1cImh0dHBzOi8vaS5wb3N0aW1nLmNjL2hQUzJKcFYwL25vLWltYWdlLWF2YWlsYWJsZS5qcGdcIiBhbHQ9XCJcIlxyXG4gICAgICAgICAgW3NpbXBvQ29ybmVyXT1cInN0eWxlcz8uY29ybmVyc1wiPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImltZy1saXN0IHctMTAwXCIgKm5nSWY9XCJzY3JlZW5XaWR0aCA8PSA1MDBcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaW1nIG9mIGl0ZW1JbWFnZXNcIj5cclxuICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgb25lcnJvcj1cInRoaXMuc3JjPSdodHRwczovL2kucG9zdGltZy5jYy9oUFMySnBWMC9uby1pbWFnZS1hdmFpbGFibGUuanBnJ1wiIFtzcmNdPVwiaW1nLmltZ1VybFwiXHJcbiAgICAgICAgICBhbHQ9XCJcIiBjbGFzcz1cImltZyB6b29tXCIgKGNsaWNrKT1cImNoYW5nZUltZyhpbWcuaW1nVXJsKVwiXHJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyQ29sb3JdPVwiaW1nLmltZ1VybCA9PSBjdXJyZW50SW1nID8gZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvciA6ICd0cmFuc3BhcmVudCdcIj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF2YXJpZW50TG9hZGluZyAmJiAoIWlzTW9iaWxlICYmIGRhdGE/LnN0eWxlcz8uZ3JpZFN0eWxlID09ICdTdHlsZTInKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBoLTEwMCBtdC0wIHctMTAwXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtSW1hZ2VzPy5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBzcmM9XCJodHRwczovL2kucG9zdGltZy5jYy9oUFMySnBWMC9uby1pbWFnZS1hdmFpbGFibGUuanBnXCIgYWx0PVwiXCIgY2xhc3M9XCJpbWdcIlxyXG4gICAgICAgICAgW3NpbXBvQ29ybmVyXT1cInN0eWxlcz8uY29ybmVyc1wiIGNsYXNzPVwiY29sLTEyIGgtMTAwIHAtMFwiPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaW1nIG9mIGl0ZW1JbWFnZXNcIj5cclxuICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgb25lcnJvcj1cInRoaXMuc3JjPSdodHRwczovL2kucG9zdGltZy5jYy9oUFMySnBWMC9uby1pbWFnZS1hdmFpbGFibGUuanBnJ1wiIFtzcmNdPVwiaW1nLmltZ1VybFwiXHJcbiAgICAgICAgICBhbHQ9XCJcIiBjbGFzcz1cImltZyBjb2wtNiBoLTc1IHAtMSBzdHlsZS0yLWltZ1wiIChjbGljayk9XCJjaGFuZ2VJbWcoaW1nLmltZ1VybClcIiBbc2ltcG9Db3JuZXJdPVwic3R5bGVzPy5jb3JuZXJzXCJcclxuICAgICAgICAgIFtzdHlsZS5ib3JkZXJDb2xvcl09XCJpbWcuaW1nVXJsID09IGN1cnJlbnRJbWcgPyBkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yIDogJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgICBbY2xhc3MuaC0xMDBdPVwic2NyZWVuV2lkdGggPD0gNTAwXCIgW2NsYXNzLnctMTAwXT1cIml0ZW1JbWFnZXM/Lmxlbmd0aCA9PSAxXCJcclxuICAgICAgICAgIFtjbGFzcy5oLTEwMF09XCJpdGVtSW1hZ2VzPy5sZW5ndGggPT0gMVwiPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG5cclxuXHJcbiAgPGRpdiBjbGFzcz1cIml0ZW0taW1nXCIgKm5nSWY9XCJ2YXJpZW50TG9hZGluZ1wiPlxyXG4gICAgPG5neC1za2VsZXRvbi1sb2FkZXIgY291bnQ9XCIxXCIgYXBwZWFyYW5jZT1cImNpcmNsZVwiIFt0aGVtZV09XCJ7XHJcbiAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICAgIGhlaWdodDogJzEwMCUnLFxyXG4gICAgICAnYm9yZGVyLXJhZGl1cyc6ICcxMHB4JyxcclxuICAgICAgJ3Bvc2l0aW9uJzogJ3JlbGF0aXZlJyxcclxuICAgICAgJ3JpZ2h0JzogJzVweCdcclxuICAgIH1cIj5cclxuICAgIDwvbmd4LXNrZWxldG9uLWxvYWRlcj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYnJhbmRpbmc+XHJcbiAgPGRpdiBjbGFzcz1cInJvdyB3LTEwMFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnJhbmQgb2YgYnJhbmRQcm9taXNlc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBnLTJcIj5cclxuICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgb25lcnJvcj1cInRoaXMuc3JjPSdodHRwczovL2kucG9zdGltZy5jYy9oUFMySnBWMC9uby1pbWFnZS1hdmFpbGFibGUuanBnJ1wiXHJcbiAgICAgICAgICBbc3JjXT1cImJyYW5kPy5sb2dvVXJsXCIgYWx0PVwiXCIgY2xhc3M9XCJ3LWgtNDAgcC0wIGJyLTUwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJyYW5kLXRleHQgdy0xMDAgdGV4dC1jZW50ZXIgcHktMlwiPlxyXG4gICAgICAgICAge3ticmFuZD8udGl0bGUgfCB0aXRsZWNhc2V9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICN2aWRlb0NhbGxTY2hlZHVsZT5cclxuICA8IS0tICpuZ0lmPVwiZWNvbUNvbmZpZ3M/LnZpZGVvQ2FsbEVuYWJsZWRcIiAtLT5cclxuICA8bmctY29udGFpbmVyPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyB3LTEwMCB2aWRlby1jb250YWluZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC00IHZpZGVvLWNhbGwtaW1nXCI+XHJcbiAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2Qyejk0OTd4cDh4YjEyLmNsb3VkZnJvbnQubmV0L3Byb2QtaW1hZ2VzLzM1NTAwN2MxNzUzNjIwNzcyNjY2MTEyODktMjI5MjIxMDIzX3NtYWxsLmdpZlwiXHJcbiAgICAgICAgICBhbHQ9XCJcIiBjbGFzcz1cInctMTAwIGgtMTAwIFwiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC04IGFsaWduLWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZpZGVvLWhlYWQtdGV4dFwiPlxyXG4gICAgICAgICAgTGl2ZSBWaWRlbyBDYWxsXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0XCI+XHJcbiAgICAgICAgICBKb2luIGEgbGl2ZSB2aWRlbyBjYWxsIHdpdGggb3VyIGNvbnN1bHRhbnRzIHRvIHNlZSB5b3VyIGZhdm91cml0ZSBkZXNpZ25zIHVwIGNsb3NlIVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJzY2gtYnRuIHRleHQtY2VudGVyIGN1cnNvci1wb2ludGVyXCIgW2FwcEJ1dHRvbkVkaXRvcl09XCJlZGl0ID8/IGZhbHNlXCIgc2ltcG9CdXR0b25EaXJlY3RpdmVcclxuICAgICAgICAgIFtidXR0b25TdHlsZV09XCJnZXRCdXR0b25TdHlsZSgyKVwiIFtidXR0b25JZF09XCJnZXRCdXR0b25JZCgyKVwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIlxyXG4gICAgICAgICAgW2lkXT1cImRhdGE/LmlkK2dldEJ1dHRvbklkKDIpXCIgKGNsaWNrKT1cIiFlZGl0ID8gb3BlbkRpYWxvZ0JveChkaWFsb2dCb3gpIDogJydcIj5cclxuICAgICAgICAgIFNjaGVkdWxlIGEgVmlkZW8gQ2FsbFxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNEZWxpdmVyeVNlY3Rpb24+XHJcbiAgPGRpdiBjbGFzcz1cImRlbGl2ZXJ5LWNvbnRhaW5lclwiPlxyXG4gICAgPGgyIGNsYXNzPVwiZGVsaXZlcnktdGl0bGVcIj5EZWxpdmVyeSwgU3RvcmVzICYgVHJpYWw8L2gyPlxyXG5cclxuICAgIDwhLS0gTG9jYXRpb24gU2VjdGlvbiAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJsb2NhdGlvbi1zZWN0aW9uXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsb2NhdGlvbi1jb250YWluZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXHJcbiAgICAgICAgW3N0eWxlLmJvcmRlckNvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB3LTkwXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG14LTFcIj48bWF0LWljb25cclxuICAgICAgICAgICAgICBjbGFzcz1cImdwcyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5ncHNfZml4ZWQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwicG9zdGFsLWNvZGUtaW5wdXRcIiBwbGFjZWhvbGRlcj1cIkVudGVyIFBpbkNvZGVcIiBbKG5nTW9kZWwpXT1cInBpbmNvZGVcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGxvY2F0ZS1idG5cIiAoY2xpY2spPVwiZ2V0U3RvcmVEZXRhaWxzKClcIj57e3BpbmNvZGUgPyAnQ2hhbmdlJyA6ICdMb2NhdGUgbWUnfX08L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCIhaXNQaW5Db2RlXCIgc3R5bGU9XCJjb2xvcjogcmVkO1wiPlBpbiBjb2RlIG11c3QgYmUgNiBkaWdpdHMuPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgIDwhLS0gRnJlZSBEZWxpdmVyeSBTZWN0aW9uIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZGVsaXZlcnktc2VjdGlvblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImRlbGl2ZXJ5LWljb25cIj7wn46BPC9zcGFuPlxyXG5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGVsaXZlcnktdGV4dFwiICpuZ0lmPVwiZWNvbUNvbmZpZ3M/LmRlbGl2ZXJ5Q2hhcmdlcyA9PSAwXCI+RnJlZVxyXG4gICAgICAgICAgICBEZWxpdmVyeSBieSB7eyBzdG9yZURldGFpbHM/LmVzdGltYXRlZERlbGl2ZXJ5RGF0ZSB8IGRhdGU6J2QgTU1NJyB9fTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImRlbGl2ZXJ5LXRleHRcIiAqbmdJZj1cImVjb21Db25maWdzPy5kZWxpdmVyeUNoYXJnZXMgPiAwXCI+WW91clxyXG4gICAgICAgICAgICBPcmRlciB3aWxsXHJcbiAgICAgICAgICAgIERlbGl2ZXIgYnkge3sgc3RvcmVEZXRhaWxzPy5lc3RpbWF0ZWREZWxpdmVyeURhdGUgfCBkYXRlOidkIE1NTScgfX0gd2l0aCBhIERlbGl2ZXJ5IENoYXJnZSBvZlxyXG4gICAgICAgICAgICDigrkge3tlY29tQ29uZmlncz8uZGVsaXZlcnlDaGFyZ2VzIHwgbnVtYmVyOicxLjItMid9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIE5lYXJlc3QgU3RvcmUgU2VjdGlvbiAtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICpuZ0lmPVwic3RvcmVEZXRhaWxzPy5uZWFyYnlTdG9yZT8ubmFtZSAmJiBzdG9yZURldGFpbHM/Lm5lYXJieVN0b3JlPy5uYW1lPy5sZW5ndGggPiAwO2Vsc2UgZW1wdHlTdG9yZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdG9yZS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBzdG9yZS1pdGVtXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RvcmUtaWNvblwiPvCfj6o8L3NwYW4+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdG9yZS1kZXRhaWxzXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0b3JlLXRleHRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RvcmUtbGFiZWxcIj5OZWFyZXN0IFN0b3JlIC0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdG9yZS1uYW1lXCI+e3sgc3RvcmVEZXRhaWxzPy5uZWFyYnlTdG9yZT8ubmFtZSB8IHRpdGxlY2FzZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cInN0b3JlLWRpc3RhbmNlXCI+ICg0a20pPC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJhdmFpbGFiaWxpdHktc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXZhaWxhYmlsaXR5LWJhZGdlXCI+4o+wIEFWQUlMQUJMRSBCWSAyOCBKVU48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJvdGhlci1zdG9yZXMtdGV4dFwiPlxyXG4gICAgICAgICAgICAgIEFsc28gQXZhaWxhYmxlIGluIDxzcGFuIGNsYXNzPVwib3RoZXItc3RvcmVzLWxpbmtcIj4xOCBvdGhlciBzdG9yZXM8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciB3LTEwMFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZmluZC1zdG9yZS1idG4gdy0xMDBcIiBbYXBwQnV0dG9uRWRpdG9yXT1cImVkaXQgPz8gZmFsc2VcIiBzaW1wb0J1dHRvbkRpcmVjdGl2ZVxyXG4gICAgICAgICAgICAgIFtidXR0b25TdHlsZV09XCJnZXRCdXR0b25TdHlsZSgxKVwiIFtidXR0b25JZF09XCJnZXRCdXR0b25JZCgxKVwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIlxyXG4gICAgICAgICAgICAgIFtpZF09XCJkYXRhPy5pZCtnZXRCdXR0b25JZCgxKVwiIChjbGljayk9XCJvbkZpbmRJblN0b3JlKHN0b3JlRGV0YWlscz8ubmVhcmJ5U3RvcmU/LnN0b3JlSWQpXCI+RklORCBJTlxyXG4gICAgICAgICAgICAgIFNUT1JFPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjZW1wdHlTdG9yZT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGVsaXZlcnktc2VjdGlvblwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZWxpdmVyeS1pY29uXCI+8J+Pqjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZWxpdmVyeS10ZXh0XCI+Tm8gU3RvcmVzIGFyZSBhdmFpbGFibGU8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPCEtLSBUcnkgQXQgSG9tZSBTZWN0aW9uIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidHJ5LWhvbWUtc2VjdGlvblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtc3RhcnQgdHJ5LWhvbWUtaXRlbVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJob21lLWljb25cIj7wn4+gPC9zcGFuPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRyeS1ob21lLWRldGFpbHNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyeS1ob21lLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHJ5LWhvbWUtdGV4dFwiPlRyeSBBdCBIb21lPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnJlZS10ZXh0XCI+IChJdCdzIEZyZWUpPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhvbWUtYXBwb2ludG1lbnQtdGV4dFwiPkhvbWUgQXBwb2ludG1lbnQgPHNwYW4+QXZhaWxhYmxlIHRvIHRyeSBmcm9tIDI5IEp1bDwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiYXBwb2ludG1lbnQtdGV4dFwiPlxyXG4gICAgICAgICAgICAgIEhvbWUgQXBwb2ludG1lbnQgPHNwYW4gY2xhc3M9XCJhcHBvaW50bWVudC1hdmFpbGFibGVcIj5BdmFpbGFibGUgdG8gdHJ5IGZyb20gMjggSnVuPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4LWFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHctMTAwXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYm9vay1hcHBvaW50bWVudC1idG5cIiAoY2xpY2spPVwiYWRkVG9UcmlhbENhcnQoKVwiICpuZ0lmPVwiIWlzSXRlbUFkZGVkQXNUcmlhbFwiPlRyeSBhdFxyXG4gICAgICAgICAgICBIT01FPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYm9vay1hcHBvaW50bWVudC1idG5cIiAqbmdJZj1cImlzSXRlbUFkZGVkQXNUcmlhbFwiPkhPTUUgQVBQT0lOVE1FTlQgQk9PS0VEPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPGRpdiBjbGFzcz1cIm9mZmNhbnZhcyBvZmZjYW52YXMtZW5kIG9mZmNhbnZhcy12YXJpYW50XCIgdGFiaW5kZXg9XCItMVwiIGlkPVwib2ZmY2FudmFzUmlnaHRWYXJpYW50XCJcclxuICBhcmlhLWxhYmVsbGVkYnk9XCJvZmZjYW52YXNSaWdodExhYmVsXCI+XHJcbiAgPGRpdiBjbGFzcz1cInZhcmllbnQtaGVhZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWVuZCBwLTJcIj5cclxuICAgIDxtYXQtaWNvbiBkYXRhLWJzLWRpc21pc3M9XCJvZmZjYW52YXNcIlxyXG4gICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBmLTE4XCI+Y2xvc2U8L21hdC1pY29uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJ2YXJpZW50LXByaWNlIHB4LTMgcGItMlwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInByaWNlLXRleHRcIj5QcmljZTwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCAgZy0zIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicHJpY2VcIiBbbmdDbGFzc109XCJ7J2Rpc2NvdW50LXByaWNlJzogcmVzcG9uc2VEYXRhPy5wcmljZT8uZGlzY291bnRlZFByaWNlfVwiXHJcbiAgICAgICAgKm5nSWY9XCJyZXNwb25zZURhdGE/LnByaWNlPy5kaXNjb3VudGVkUHJpY2UgJiYgcmVzcG9uc2VEYXRhLnByaWNlLmRpc2NvdW50ZWRQcmljZSA+IDBcIj48c3BhblxyXG4gICAgICAgICAgW2lubmVySFRNTF09J2N1cnJlbmN5Jz48L3NwYW4+XHJcbiAgICAgICAge3tyZXNwb25zZURhdGE/LnByaWNlPy5kaXNjb3VudGVkUHJpY2V9fTwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicHJpY2VcIlxyXG4gICAgICAgICpuZ0lmPVwicmVzcG9uc2VEYXRhPy5wcmljZT8uc2VsbGluZ1ByaWNlICYmIGdldERpZmZlcmVuY2UocmVzcG9uc2VEYXRhPy5wcmljZT8uc2VsbGluZ1ByaWNlLCByZXNwb25zZURhdGE/LnByaWNlPy5kaXNjb3VudGVkUHJpY2UpID4gMlwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieydzdHJpa2UtdGhyb3VnaCc6IHJlc3BvbnNlRGF0YT8ucHJpY2U/LmRpc2NvdW50ZWRQcmljZX1cIj48c3BhbiBbaW5uZXJIVE1MXT0nY3VycmVuY3knPjwvc3Bhbj5cclxuICAgICAgICB7e3Jlc3BvbnNlRGF0YT8ucHJpY2U/LnNlbGxpbmdQcmljZSB8IG51bWJlcjonMS4wLTAnfX08L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJ2YXJpZW50LWNvbnRhaW5lciBoLTEwMCBwLTNcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhcmllbnQgb2YgdmFyaWVudHMgfCBrZXl2YWx1ZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidmFyaWVudC1kYXRhXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZhcmllbnQta2V5XCI+e3t2YXJpZW50LmtleX19PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIHN0eWxlPVwiZ2FwOiA1cHg7XCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB2YXJpZW50VmFsdWUgb2YgdmFyaWVudC52YWx1ZVwiIGNsYXNzPVwidmFyaWVudC10YWdcIlxyXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwic2VsZWN0ZWRWYXJpZW50LmdldCh2YXJpZW50LmtleSkgPT0gdmFyaWVudFZhbHVlID8gJ3doaXRlJyA6IGRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIlxyXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cInNlbGVjdGVkVmFyaWVudC5nZXQodmFyaWVudC5rZXkpID09IHZhcmllbnRWYWx1ZSA/IGRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3IgOiAnJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RWYXJpZW50KHZhcmllbnQua2V5LCB2YXJpZW50VmFsdWUpXCI+e3t2YXJpZW50VmFsdWUgfCB0aXRsZWNhc2V9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJjb25maXJtLWJ0biB3LTEwMCBwLTMgdGV4dC1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIiBkYXRhLWJzLWRpc21pc3M9XCJvZmZjYW52YXNcIlxyXG4gICAgW3N0eWxlLmJhY2tncm91bmRdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIHN0eWxlPVwiY29sb3I6IHdoaXRlO1wiPkNvbmZpcm1cclxuICAgIEN1c3RvbWl6YXRpb248L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2RpYWxvZ0JveD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBkLWZsZXggYWxpZ24taXRlbS1jZW50ZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctdmlkZW8gdy0xMDAgcHktMiB0ZXh0LWNlbnRlclwiPkxpdmUgVmlkZW8gY2FsbCBhdCB5b3VyIGNvbnZlbmllbmNlITwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2NoZWR1bGUtaGVhZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWVuZCBwLTJcIj5cclxuICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cIm1hdENsb3NlRGlhbG9nKClcIlxyXG4gICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZi0xOFwiPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IGgtMTAwXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgaC0xMDAgdy0xMDAgdmlkZW8tY2FsbC1jb250YWluZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgaC0xMDBcIiAqbmdJZj1cIiFpc01vYmlsZVwiPlxyXG4gICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICBzcmM9XCJodHRwczovL2Qyejk0OTd4cDh4YjEyLmNsb3VkZnJvbnQubmV0L3Byb2QtaW1hZ2VzLzU1NzY5OWMxNzUzNzc5NTAzOTEzZnJlZXBpay1vdmVyaGVhZC1zaG90LWEtcGVyc29uLWhvbGRpbmctYS1zbWFydHBob25lLXdpdGgtYS0xMDI5X3ZtZzhHcUhqIChvbmxpbmUtdmlkZW8tY3V0dGVyLmNvbSkuZ2lmXCJcclxuICAgICAgICAgICAgYWx0PVwiXCIgY2xhc3M9XCJ3LTEwMCBoLTEwMFwiIHN0eWxlPVwib2JqZWN0LWZpdDogY292ZXI7XCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IHBvc2l0aW9uLXJlbGF0aXZlIGgtMTAwIGNhbGwtZGV0YWlsc1wiPlxyXG4gICAgICAgICAgPCEtLSBOYW1lIElucHV0IHdpdGggVmFsaWRhdGlvbiAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1maWVsZCBteS0zXCIgW2NsYXNzLmVycm9yLWJvcmRlcl09XCJ2YWxpZGF0aW9uRXJyb3JzLnVzZXJuYW1lXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgTmFtZSpcIiBbKG5nTW9kZWwpXT1cInZpZGVvQ2FsbFBheWxvYWQudXNlcm5hbWVcIlxyXG4gICAgICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0Q2hhbmdlKCd1c2VybmFtZScpXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZmllbGQgbXktM1wiIFtjbGFzcy5lcnJvci1ib3JkZXJdPVwidmFsaWRhdGlvbkVycm9ycy5lbWFpbFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImVtYWlsXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBFbWFpbCpcIiBbKG5nTW9kZWwpXT1cInZpZGVvQ2FsbFBheWxvYWQuZW1haWxcIlxyXG4gICAgICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0Q2hhbmdlKCdlbWFpbCcpXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIE1vYmlsZSBOdW1iZXIgSW5wdXQgd2l0aCBWYWxpZGF0aW9uIC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWZpZWxkIG15LTNcIiBbY2xhc3MuZXJyb3ItYm9yZGVyXT1cInZhbGlkYXRpb25FcnJvcnMubW9iaWxlTnVtYmVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dC1jYWxsXCI+SU4gKzkxPC9kaXY+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBNb2JpbGUqXCIgWyhuZ01vZGVsKV09XCJ2aWRlb0NhbGxQYXlsb2FkLm1vYmlsZU51bWJlclwiXHJcbiAgICAgICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJ21vYmlsZU51bWJlcicpXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgPCEtLSBQaW5jb2RlIElucHV0IHdpdGggVmFsaWRhdGlvbiAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1maWVsZCBteS0zXCIgW2NsYXNzLmVycm9yLWJvcmRlcl09XCJ2YWxpZGF0aW9uRXJyb3JzLnBpbmNvZGVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0LWNhbGwgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgdy0xMiBib3JkZXItdW5zZXRcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJmLTE4IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPmdwc19maXhlZDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgUGluIENvZGUqXCIgY2xhc3M9XCJ3LTg4XCIgWyhuZ01vZGVsKV09XCJ2aWRlb0NhbGxQYXlsb2FkLnBpbmNvZGVcIlxyXG4gICAgICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0Q2hhbmdlKCdwaW5jb2RlJylcIj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxhbmd1YWdlIG15LTNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pbmktdGV4dCBtYi0yXCI+TGFuZ3VhZ2UgUHJlZmVyZW5jZTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFuZ3VhZ2UtY29udGFpbmVyIGQtZmxleCBnYXAtMiBmbGV4LXdyYXAgbXQtMVwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGxhbmcgb2YgbGFuZ3VhZ2VzXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFuZyBweC0yIHB5LTEgcm91bmRlZCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImxhbmcgPT0gc2VsZWN0ZWRMYW5nID8gZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvciA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGVkTGFuZyA9IGxhbmdcIlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwibGFuZyA9PSBzZWxlY3RlZExhbmcgPyBnZXRUZXh0Q29sb3IoZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvcikgOiAnIzAwMDAwMCdcIj5cclxuICAgICAgICAgICAgICAgICAge3tsYW5nfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkTGFuZyA9PSAnT3RoZXJzJ1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZmllbGQgbXktM1wiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgT3RoZXIgTGFuZ3VhZ2VcIiBbKG5nTW9kZWwpXT1cIm90aGVyTGFuZ3VhZ2VcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ2aWRlby1idG4gbXQtMiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIiBbZGlzYWJsZWRdPVwiaXNTdWJtaXR0aW5nXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1N1Ym1pdHRpbmdcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc20gbWUtMlwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TG9hZGluZy4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICBTQ0hFRFVMSU5HLi4uXHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzU3VibWl0dGluZyAmJiAhc2NoZWR1bGVkXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwic2NoZWR1bGVWaWRlb0NhbGwoKVwiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPnZpZGVvX2NhbGw8L21hdC1pY29uPiZuYnNwO1xyXG4gICAgICAgICAgICAgICAgU0NIRURVTEUgQSBWSURFTyBDQUxMXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2NoZWR1bGVkXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmNoZWNrX2NpcmNsZTwvbWF0LWljb24+Jm5ic3A7XHJcbiAgICAgICAgICAgICAgU0NIRURVTEVEIFNVQ0NFU1NGVUxMWVxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPGRpdiBjbGFzcz1cIm9mZmNhbnZhcyBvZmZjYW52YXMtZW5kIG9mZmNhbnZhcy1zbWFsbCBvdmVyZmxvdy1zY3JvbGxcIiB0YWJpbmRleD1cIi0xXCIgaWQ9XCJvZmZjYW52YXNSaWdodFByaWNlQnJlYWt1cFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ2YXJpZW50LWhlYWRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1lbmQgcC0yXCI+XHJcbiAgICA8bWF0LWljb24gZGF0YS1icy1kaXNtaXNzPVwib2ZmY2FudmFzXCJcclxuICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZi0xOFwiPmNsb3NlPC9tYXQtaWNvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwidmFyaWVudC1wcmljZSBwLTEwLTIwXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHJpY2UtYnJlYWstaGVhZGVyXCI+e3tyZXNwb25zZURhdGE/Lm5hbWV9fTwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJwcmljZS1icmVha3VwIGgtMTAwIHctMTAwXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbGUgb2YgcmVzcG9uc2VEYXRhPy5tYXRlcmlhbHNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInByaWNlLWNvbnRhaW5lciBtYi0zIHAtMTAtMjBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtY29udGFpbmVyLWhlYWRlclwiPlxyXG4gICAgICAgICAge3sgZWxlLm1hdGVyaWFsVHlwZSArIFwiIEJSRUFLVVBcIiB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgdy0xMDAgaGVhZGVyLXJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zIHRleHQtY2VudGVyXCI+Q09NUE9ORU5UPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTMgdGV4dC1jZW50ZXJcIj5SQVRFPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTMgdGV4dC1jZW50ZXJcIj5XRUlHSFQ8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMyB0ZXh0LWNlbnRlclwiPkZJTkFMIFZBTFVFPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyB3LTEwMCB2YWx1ZS1yb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMyB0ZXh0LWNlbnRlclwiPnt7IGVsZS5tYXRlcmlhbFB1cml0eSB8IHRpdGxlY2FzZSB9fTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zIHRleHQtY2VudGVyXCI+4oK5e3sgZ2V0UHJpY2VQZXJHcmFtKGVsZS5wcmltYXJ5TWF0ZXJpYWxXZWlnaHQsIGVsZS5tYXRlcmlhbFByaWNlKSB8XHJcbiAgICAgICAgICAgIG51bWJlcjonMS4yLTInIH19PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTMgdGV4dC1jZW50ZXJcIj57eyBlbGUucHJpbWFyeU1hdGVyaWFsV2VpZ2h0ICsgXCIgZ3JhbXNcIiB9fTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zIHRleHQtY2VudGVyIHRvdGFsXCI+4oK5e3sgZWxlLm1hdGVyaWFsUHJpY2UgfCBudW1iZXI6JzEuMi0yJyB9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJwcmljZS1jb250YWluZXIgbWItMyBwLTEwLTMwIHB5LTAgYm9yZGVyLXVuc2V0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgdy0xMDAgc3VtbWFyeS1yb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgdGV4dC1zdGFydFwiPk1ha2luZyBDaGFyZ2VzPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IHRleHQtZW5kIHRvdGFsXCI+4oK5e3sgcmVzcG9uc2VEYXRhPy5qZXdlbHJ5UHJpY2VCcmVha3VwPy5tYWtpbmdDaGFyZ2VBbW91bnQgfCBudW1iZXI6JzEuMi0yJyB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdyB3LTEwMCBzdW1tYXJ5LXJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiB0ZXh0LXN0YXJ0XCI+VGF4IEFtb3VudDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiB0ZXh0LWVuZCB0b3RhbFwiPuKCuXt7IHJlc3BvbnNlRGF0YT8uamV3ZWxyeVByaWNlQnJlYWt1cD8udGF4QW1vdW50IHwgbnVtYmVyOicxLjItMicgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgdy0xMDAgc3VtbWFyeS1yb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgdGV4dC1zdGFydFwiPlRvdGFsIEFtb3VudDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiB0ZXh0LWVuZCB0b3RhbFwiPlxyXG4gICAgICAgICAg4oK5e3socmVzcG9uc2VEYXRhPy5qZXdlbHJ5UHJpY2VCcmVha3VwPy5wcmljZVdpdGhvdXRUYXggKyByZXNwb25zZURhdGE/Lmpld2VscnlQcmljZUJyZWFrdXA/LnRheEFtb3VudCkgfFxyXG4gICAgICAgICAgbnVtYmVyOicxLjItMid9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI1Jldmlld3NTZWN0aW9uPlxyXG4gIDxkaXYgY2xhc3M9XCJ3LTEwMCByb3cgcmV2aWV3LXNlY3Rpb25cIiBbc3R5bGUuYmFja2dyb3VuZF09XCJnZXRSR0JBKHN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3IsIDEwKVwiXHJcbiAgICAqbmdJZj1cInJldmlld3NEYXRhICYmIHJldmlld3NEYXRhLmxlbmd0aCA+IDBcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBjb2wtc20tMTJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImN1c3QtaGVhZGVyXCI+Q3VzdG9tZXIgUmV2aWV3czwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0zIG1iLTFcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVzcG9uc2VEYXRhPy5hdmVyYWdlUmF0aW5nXCI+XHJcbiAgICAgICAgICA8cC1yYXRpbmcgWyhuZ01vZGVsKV09XCJyZXNwb25zZURhdGEuYXZlcmFnZVJhdGluZ1wiIFtjYW5jZWxdPVwiZmFsc2VcIiBbcmVhZG9ubHldPVwidHJ1ZVwiPjwvcC1yYXRpbmc+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJyYXRpbmctdGV4dFwiPnt7cmVzcG9uc2VEYXRhPy5hdmVyYWdlUmF0aW5nIHwgbnVtYmVyOicxLjEtMid9fSBvdXQgb2YgNTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbWItM1wiPnt7cmVzcG9uc2VEYXRhPy50b3RhbFJldmlld0NvdW50ICsgXCIgcmF0aW5nc1wifX08L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJhdGluZ3MtcGVyY2VudGFnZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJhdGluZyBvZiBbNSw0LDMsMiwxXVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBlcmNlbnRhZ2UgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBtYi0yXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7cmF0aW5nICsgXCIgc3RhclwifX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTUwIGJhclwiIFtzdHlsZS5ib3JkZXJDb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBbc3R5bGUud2lkdGguJV09XCJnZXRQZXJjZW50YWdlKHJhdGluZylcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgY2xhc3M9XCJoLTEwMFwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwZXJjZW50YWdlLXRleHRcIj57e2dldFBlcmNlbnRhZ2UocmF0aW5nKSArIFwiJVwifX08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOSBjb2wtc20tMTJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJldmlldy1oZWFkZXJcIj5MYXRlc3QgUmV2aWV3czwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmV2aWV3LWJvZHkgZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0zXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcmV2aWV3IG9mIHJldmlld3NEYXRhXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aWV3LWNvbnRhaW5lciB3LTc1XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpZXctbmFtZSBnYXAtMiBteS0yIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vbS5tZWRpYS1hbWF6b24uY29tL2ltYWdlcy9TL2FtYXpvbi1hdmF0YXJzLWdsb2JhbC9kZWZhdWx0LnBuZ1wiIGFsdD1cIlwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIndpZHRoLTMwIGgtMjUgbXItMlwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuPnt7cmV2aWV3Py51c2VyTmFtZSA/PyBcIi1cIn19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJldmlldz8ucmF0aW5nXCI+XHJcbiAgICAgICAgICAgICAgPHAtcmF0aW5nIFsobmdNb2RlbCldPVwicmV2aWV3LnJhdGluZ1wiIFtjYW5jZWxdPVwiZmFsc2VcIiBbcmVhZG9ubHldPVwidHJ1ZVwiPjwvcC1yYXRpbmc+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aWV3LWRlc2NcIj5cclxuICAgICAgICAgICAgICB7e3Jldmlldz8ucmV2aWV3ID8/IFwiLVwifX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpZXctaW1nXCI+XHJcbiAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImltZy5pbWdVcmxcIiBhbHQ9XCJcIiAqbmdGb3I9XCJsZXQgaW1nIG9mIHJldmlldz8ucmV2aWV3SW1hZ2VzID8/IFtdXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RGV0YWlsUmV2aWV3KHJldmlldylcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiBkYXRhLXRvZ2dsZT1cIm1vZGFsXCIgZGF0YS10YXJnZXQ9XCIjcmV2aWV3TW9kYWxcIlxyXG4gICAgICAgICAgICAgICAgaWQ9XCJvcGVuUmV2aWV3RGV0YWlsXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInctNzUgc2VlLW1vcmUgcHktM1wiIChjbGljayk9XCJsb2FkTW9yZVJldmlld3MoKVwiICpuZ0lmPVwiKHJldmlld3NEYXRhPy5sZW5ndGggPz8gMCkgPiAzXCJcclxuICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+XHJcbiAgICAgICAgICBTZWUgbW9yZSByZXZpZXdzIDxzcGFuPj48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxkaXYgY2xhc3M9XCJtb2RhbCBmYWRlXCIgaWQ9XCJleGFtcGxlTW9kYWxcIiB0YWJpbmRleD1cIi0xXCIgYXJpYS1sYWJlbGxlZGJ5PVwiZXhhbXBsZU1vZGFsTGFiZWxcIiByb2xlPVwiZGlhbG9nXCJcclxuICBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWRpYWxvZy1jZW50ZXJlZCB2aWRlby1tb2RhbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIiBzdHlsZT1cImhlaWdodDogMTAwJTtcIj5cclxuICAgICAgICA8dmlkZW8gY29udHJvbHMgbXV0ZWQgcGxheXNpbmxpbmUgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1wiPlxyXG4gICAgICAgICAgPHNvdXJjZVxyXG4gICAgICAgICAgICBzcmM9XCJodHRwczovL2Qyejk0OTd4cDh4YjEyLmNsb3VkZnJvbnQubmV0L3Byb2QtaW1hZ2VzLzM3MTY0N2MxNzUzOTYyMDg0MjY1Y2xpZGVvX2VkaXRvcl80OGJjOTNjMjRlMTg0NzA4ODhjNjYxYmIwOWU0MzdkYSAob25saW5lLXZpZGVvLWN1dHRlci5jb20pLm1wNFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJ2aWRlby9tcDRcIj5cclxuICAgICAgICAgIFlvdXIgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSB2aWRlbyB0YWcuXHJcbiAgICAgICAgPC92aWRlbz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwibW9kYWwgZmFkZVwiIGlkPVwicmV2aWV3TW9kYWxcIiB0YWJpbmRleD1cIi0xXCIgYXJpYS1sYWJlbGxlZGJ5PVwicmV2aWV3TW9kYWxMYWJlbFwiIHJvbGU9XCJkaWFsb2dcIlxyXG4gIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgcmV2aWV3LW1vZGFsXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgPGgxIGNsYXNzPVwibW9kYWwtdGl0bGUgZnMtNVwiPjwvaDE+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiBkYXRhLWJzLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiPjwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJldmlldy1jb250YWluZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LWltYWdlXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhY2t3YXJkLWFycm93IGFycm93XCIgKGNsaWNrKT1cImN1cnJlbnRJbWFnZUluZGV4ID0gY3VycmVudEltYWdlSW5kZXgtMVwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImN1cnJlbnRJbWFnZUluZGV4ID4gMFwiPuKWvDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJzZWxlY3RlZFJldmlldz8ucmV2aWV3SW1hZ2VzPy5bY3VycmVudEltYWdlSW5kZXhdPy5pbWdVcmxcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9yd2FyZC1hcnJvdyBhcnJvd1wiIChjbGljayk9XCJjdXJyZW50SW1hZ2VJbmRleCA9IGN1cnJlbnRJbWFnZUluZGV4KzFcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjdXJyZW50SW1hZ2VJbmRleCA8IHNlbGVjdGVkUmV2aWV3Py5pbWFnZXM/Lmxlbmd0aCAtIDFcIj7ilrI8L2Rpdj5cclxuICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJlYXJidWRzLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoYXJnaW5nLWNhc2VcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlYXJidWQgbGVmdFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVhcmJ1ZCByaWdodFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIm5hdmlnYXRpb24tYXJyb3dzXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpZXctc2VjdGlvblwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aWV3ZXItaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlld2VyLWF2YXRhclwiPvCfkaQ8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aWV3ZXItbmFtZVwiPnt7c2VsZWN0ZWRSZXZpZXc/LnVzZXJOYW1lID8/IFwiLVwifX08L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJhdGluZ1wiICpuZ0lmPVwic2VsZWN0ZWRSZXZpZXc/LnJhdGluZ1wiPlxyXG4gICAgICAgICAgICAgIDxwLXJhdGluZyBbKG5nTW9kZWwpXT1cInNlbGVjdGVkUmV2aWV3LnJhdGluZ1wiIFtjYW5jZWxdPVwiZmFsc2VcIiBbcmVhZG9ubHldPVwidHJ1ZVwiPjwvcC1yYXRpbmc+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlldy1kYXRlXCI+XHJcbiAgICAgICAgICAgICAgUmV2aWV3ZWQgaW4gSW5kaWEgb24gMjQgSnVseSAyMDI1XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlldy10ZXh0XCI+XHJcbiAgICAgICAgICAgICAge3tzZWxlY3RlZFJldmlldz8ucmV2aWV3ID8/IFwiLVwifX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2VzLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICA8aDM+SW1hZ2VzIGluIHRoaXMgcmV2aWV3PC9oMz5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aWV3LWltYWdlc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlldy1pbWFnZVwiIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWQnOiBjdXJyZW50SW1hZ2VJbmRleCA9PSBpfVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpbWcgb2Ygc2VsZWN0ZWRSZXZpZXc/LnJldmlld0ltYWdlcyA/PyBbXTtsZXQgaSA9IGluZGV4XCIgKGNsaWNrKT1cImN1cnJlbnRJbWFnZUluZGV4ID0gaVwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaW1nLmltZ1VybFwiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
|
932
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZXNjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWNvbW1lcmNlL3NlY3Rpb25zL3Byb2R1Y3QtZGVzYy9wcm9kdWN0LWRlc2MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lY29tbWVyY2Uvc2VjdGlvbnMvcHJvZHVjdC1kZXNjL3Byb2R1Y3QtZGVzYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBMEIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5JLE9BQU8sRUFBRSxxQkFBcUIsRUFBbUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRyxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRXpGLE9BQU8sV0FBVyxNQUFNLCtCQUErQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQU1qRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQs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QUNYLG1CQUFtQixnR0FDbkIsZUFBZSxtRkFDZixxQkFBcUIseUtBQ3JCLDBCQUEwQjs7NEZBTWpCLG9CQUFvQjtrQkFsQ2hDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsb0JBQW9CO3dCQUNwQixPQUFPO3dCQUNQLGNBQWM7d0JBQ2QsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsd0JBQXdCO3dCQUN4QixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxrQkFBa0I7d0JBQ2xCLHlCQUF5Qjt3QkFDekIsb0JBQW9CO3dCQUNwQixtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixXQUFXO3dCQUNYLHVCQUF1Qjt3QkFDdkIsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YscUJBQXFCO3dCQUNyQiwwQkFBMEI7cUJBQzNCLGFBQ1UsQ0FBQyxjQUFjLENBQUM7OzBCQStCeEIsTUFBTTsyQkFBQyxXQUFXO2dXQTFCa0MsZUFBZTtzQkFBckUsU0FBUzt1QkFBQyx1QkFBdUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ3BDLEVBQUU7c0JBQWxCLFNBQVM7dUJBQUMsSUFBSTtnQkFHTixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkE0U04sYUFBYTtzQkFEWixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgSW5wdXQsIFBMQVRGT1JNX0lELCBSZW5kZXJlcjIsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUHJvZHVjdERlc2NNb2RhbCwgUHJvZHVjdERlc2NTdHlsZXNNb2RhbCB9IGZyb20gJy4vcHJvZHVjdC1kZXNjLm1vZGFsJztcclxuaW1wb3J0IHsgY2hlY2tJdGVtQWxyZWFkeUFkZGVkLCBJdGVtSW1hZ2UsIEl0ZW1WYXJpYW50LCBQcm9kdWN0IH0gZnJvbSAnLi4vLi4vc3R5bGVzL3Byb2R1Y3QubW9kYWwnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9idXR0b24tZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEJhY2tncm91bmRNb2RlbCwgQnV0dG9uTW9kZWwsIExheU91dE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc3R5bGVzL3N0eWxlLm1vZGVsJztcclxuaW1wb3J0IEJhc2VTZWN0aW9uIGZyb20gJy4uLy4uLy4uL3NlY3Rpb25zL0Jhc2VTZWN0aW9uJztcclxuaW1wb3J0IHsgQW5pbWF0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2FuaW1hdGlvbi1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBIb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9ob3Zlci1lbGVtZW50LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbnRlbnRGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvY29udGVudC1maXQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2ltcG9Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2luZGV4JztcclxuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4uLy4vLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcmVzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE5neEltYWdlWm9vbU1vZHVsZSB9IGZyb20gJ25neC1pbWFnZS16b29tJztcclxuaW1wb3J0IHsgRmVhdHVyZWRQcm9kdWN0c0NvbXBvbmVudCB9IGZyb20gXCIuLi9mZWF0dXJlZC1wcm9kdWN0cy9mZWF0dXJlZC1wcm9kdWN0cy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRmVhdHVyZWRQcm9kdWN0TW9kYWwgfSBmcm9tICcuLi9mZWF0dXJlZC1wcm9kdWN0cy9mZWF0dXJlZC1wcm9kdWN0cy5tb2RhbCc7XHJcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IE9yZGVyZWRJdGVtcyB9IGZyb20gJy4uLy4uL3N0eWxlcy9PcmRlcmVkSXRlbXMubW9kYWwnO1xyXG5pbXBvcnQgeyBCVVNJTkVTU19DT05TVEFOVFMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvYnVzaW5lc3MuY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBUb2FzdE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9hc3QnO1xyXG5pbXBvcnQgeyBNZW51SXRlbSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IE1ldGEsIFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgSXRlbVZhcmllbnRDb21wb25lbnQgfSBmcm9tICcuLi9pdGVtLXZhcmllbnQvaXRlbS12YXJpZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdEJvdHRvbVNoZWV0LCBNYXRCb3R0b21TaGVldE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2JvdHRvbS1zaGVldCc7XHJcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTaW1wb1dyYXBDb21udGFpbmVyIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL3dyYXAtY29udGFpbmVycy5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb2xvckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9jb2xvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTb2NpYUljb25zQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZWxlbWVudHMvc29jaWEtaWNvbnMvc29jaWEtaWNvbnMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmF0aW5nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9yYXRpbmcnO1xyXG5pbXBvcnQgeyBSZXZpZXcgfSBmcm9tICcuLi8uLi9zdHlsZXMvcmV2aWV3Lm1vZGFsJztcclxuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uLy4uL3N0eWxlcy91c2VyLm1vZGFsJztcclxuaW1wb3J0IHsgU3BlZWREaWFsTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9zcGVlZGRpYWwnO1xyXG5pbXBvcnQgeyBDdXN0b21lclJldmlld0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL3NlY3Rpb25zL2N1c3RvbWVyLXJldmlldy9jdXN0b21lci1yZXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGFuZWxNb2R1bGUgfSBmcm9tICdwcmltZW5nL3BhbmVsJztcclxuaW1wb3J0IHsgU3ZnRGl2aWRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2VsZW1lbnRzL3N2Zy1kaXZpZGVyL3N2Zy1kaXZpZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcm5lckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZS9jb3JuZXItZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQnV0dG9uRWRpdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1lZGl0b3IuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU3BhY2luZ0hvcml6b250YWxEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmUvc3BhY2luZy1ob3Jpem9udGFsLmRpcmVjdGl2ZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLXByb2R1Y3QtZGVzYycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFNpbXBvQ29tcG9uZW50TW9kdWxlLFxyXG4gICAgTWF0SWNvbixcclxuICAgIENvbG9yRGlyZWN0aXZlLFxyXG4gICAgLy9ESVJFQ1RJVkVcclxuICAgIFNpbXBvV3JhcENvbW50YWluZXIsXHJcbiAgICBCYWNrZ3JvdW5kRGlyZWN0aXZlLFxyXG4gICAgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgQW5pbWF0aW9uRGlyZWN0aXZlLFxyXG4gICAgQ29udGVudEZpdERpcmVjdGl2ZSxcclxuICAgIEhvdmVyRGlyZWN0aXZlLFxyXG4gICAgTmd4SW1hZ2Vab29tTW9kdWxlLFxyXG4gICAgRmVhdHVyZWRQcm9kdWN0c0NvbXBvbmVudCxcclxuICAgIE1hdEJvdHRvbVNoZWV0TW9kdWxlLFxyXG4gICAgU29jaWFJY29uc0NvbXBvbmVudCxcclxuICAgIFJhdGluZ01vZHVsZSxcclxuICAgIFNwZWVkRGlhbE1vZHVsZSxcclxuICAgIFRvYXN0TW9kdWxlLFxyXG4gICAgQ3VzdG9tZXJSZXZpZXdDb21wb25lbnQsXHJcbiAgICBQYW5lbE1vZHVsZSxcclxuICAgIFN2Z0RpdmlkZXJDb21wb25lbnQsXHJcbiAgICBDb3JuZXJEaXJlY3RpdmUsXHJcbiAgICBCdXR0b25FZGl0b3JEaXJlY3RpdmUsXHJcbiAgICBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZVxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbTWVzc2FnZVNlcnZpY2VdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9kdWN0LWRlc2MuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9wcm9kdWN0LWRlc2MuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFByb2R1Y3REZXNjQ29tcG9uZW50IGV4dGVuZHMgQmFzZVNlY3Rpb24ge1xyXG4gIEBWaWV3Q2hpbGQoQ3VzdG9tZXJSZXZpZXdDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSByZXZpZXdDb21wb25lbnQhOiBDdXN0b21lclJldmlld0NvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdkMicpIGQyITogRWxlbWVudFJlZjtcclxuXHJcblxyXG4gIEBJbnB1dCgpIGRhdGE/OiBQcm9kdWN0RGVzY01vZGFsO1xyXG4gIEBJbnB1dCgpIHJlc3BvbnNlRGF0YSE6IFByb2R1Y3Q7XHJcbiAgQElucHV0KCkgaW5kZXg/OiBudW1iZXI7XHJcbiAgQElucHV0KCkgZWRpdD86IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZGVsZXRlPzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjdXN0b21DbGFzcz86IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgbmV4dENvbXBvbmVudENvbG9yPzogQmFja2dyb3VuZE1vZGVsO1xyXG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBmZWF0dXJlUHJvZHVjdERhdGE6IEZlYXR1cmVkUHJvZHVjdE1vZGFsIHwgbnVsbCA9IG51bGw7XHJcbiAgcHVibGljIHJlY2VudFZpZXdlZERhdGE6IEZlYXR1cmVkUHJvZHVjdE1vZGFsIHwgbnVsbCA9IG51bGw7XHJcbiAgcHVibGljIHZhcmllbnRzOiBNYXA8c3RyaW5nLCBzdHJpbmdbXT4gPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nW10+KCk7XHJcbiAgcHVibGljIHNlbGVjdGVkVmFyaWVudDogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XHJcblxyXG4gIHB1YmxpYyByZWxhdGVkUHJvZHVjdERhdGE6IFByb2R1Y3RbXSA9IFtdO1xyXG4gIHB1YmxpYyBwcm9kdWN0UmV2aWV3OiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyB0b3RhbFJldmlldzogbnVtYmVyID0gNTtcclxuICBwdWJsaWMgc2hvd1JldmlldzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzZWxlY3RlZFJldmlldzogYW55O1xyXG4gIHB1YmxpYyBjdXJyZW50SW1hZ2VJbmRleDogbnVtYmVyID0gMDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2V2ZW50U2VydmljZTogRXZlbnRzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWV0YVRhZ1NlcnZpY2U6IE1ldGEsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRpdGxlU2VydmljZTogVGl0bGUsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJvdHRvbVNoZWV0OiBNYXRCb3R0b21TaGVldCxcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByaXZhdGUgbWF0RGlhbG9nOiBNYXREaWFsb2csXHJcblxyXG4gICkge1xyXG5cclxuICAgIHN1cGVyKClcclxuXHJcbiAgICAvLyB0aGlzLm1ldGFUYWdTZXJ2aWNlLnVwZGF0ZVRhZyh7IG5hbWU6IFwiZGVzY3JpcHRpb25cIiwgY29udGVudDogXCJUZXN0aW5nXCIgfSk7XHJcbiAgICAvLyB0aGlzLm1ldGFUYWdTZXJ2aWNlLnVwZGF0ZVRhZyh7IHByb3BlcnR5OiBcIm9nOnRpdGxlXCIsIGNvbnRlbnQ6IFwiVGl0bGVcIiB9KTtcclxuICAgIC8vIHRoaXMubWV0YVRhZ1NlcnZpY2UudXBkYXRlVGFnKHsgcHJvcGVydHk6IFwib2c6aW1hZ2VcIiwgY29udGVudDogXCJodHRwczovL2Rldi1iZWVvcy5zMy5hbWF6b25hd3MuY29tL2xpYnJhcnktbWVkaWEvODQ4NzI4YzE3MjYwODYwMDk2NTZpbWFnZXMucG5nXCIgfSk7XHJcbiAgICAvLyB0aGlzLm1ldGFUYWdTZXJ2aWNlLnVwZGF0ZVRhZyh7IHByb3BlcnR5OiBcIm9nOmRlc2NyaXB0aW9uXCIsIGNvbnRlbnQ6IFwiRGVzY3JpcHRpb25cIiB9KTtcclxuICAgIC8vIHRoaXMubWV0YVRhZ1NlcnZpY2UudXBkYXRlVGFnKHsgcHJvcGVydHk6IFwib2c6c2l0ZV9uYW1lXCIsIGNvbnRlbnQ6IFwibmF0dXJhbHNcIiB9KTtcclxuICAgIC8vIHRoaXMubWV0YVRhZ1NlcnZpY2UudXBkYXRlVGFnKHsgcHJvcGVydHk6IFwib2c6dHlwZVwiLCBjb250ZW50OiBcIndlYnNpdGVcIiB9KTtcclxuICAgIC8vIHRoaXMubWV0YVRhZ1NlcnZpY2UudXBkYXRlVGFnKHsgcHJvcGVydHk6IFwib2c6dXJsXCIsIGNvbnRlbnQ6IFwiaHR0cHM6Ly9uYXR1cmFscy5kZXYuc2ltcG8uYWkvXCIgfSk7XHJcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG4gICAgICB0aGlzLmdldFNjcmVlblNpemUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuX2V2ZW50U2VydmljZS5zaG93TG9hZGluZ1NjcmVlbi5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gcmVzcG9uc2U7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgYnV0dG9uSWQ/OiBzdHJpbmc7XHJcbiAgYnV0dG9uPzogQnV0dG9uTW9kZWxcclxuICBzdHlsZXM/OiBQcm9kdWN0RGVzY1N0eWxlc01vZGFsO1xyXG4gIHN1YkluZHVzdHJ5TmFtZTogc3RyaW5nID0gJydcclxuICBpc0l0ZW1Bc0Zhdm9yaXRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNJdGVtQWRkZWRBc1RyaWFsOiBib29sZWFuID0gZmFsc2VcclxuICBwcml2YXRlIFVTRVJfQ0FSVDogT3JkZXJlZEl0ZW1zW10gfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIFVTRVJfV0lTSExJU1Q6IE9yZGVyZWRJdGVtc1tdIHwgbnVsbCA9IG51bGw7XHJcbiAgcHVibGljIGl0ZW1JbWFnZXM6IEl0ZW1JbWFnZVtdID0gW107XHJcbiAgaXRlbXM6IE1lbnVJdGVtW10gfCBudWxsID0gbnVsbDtcclxuICBidXNpbmVzc0RldGFpbHM6IGFueTtcclxuICB0cmlhbENhcnRJdGVtOiBhbnlbXSA9IFtdXHJcblxyXG4gIGlzUGluQ29kZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgdG9TaG93SW5KZXdlbGxlcnk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBJc0Vjb21tZXJjZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgLy8gdGhpcy5idXNpbmVzc0RldGFpbHMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYkRldGFpbHMnKVxyXG4gICAgLy8gaWYodGhpcy5idXNpbmVzc0RldGFpbHMgIT0gbnVsbCkge1xyXG4gICAgLy8gICB0aGlzLmJ1c2luZXNzRGV0YWlscyA9IEpTT04ucGFyc2UodGhpcy5idXNpbmVzc0RldGFpbHMpO1xyXG4gICAgLy8gICB0aGlzLnN1YkluZHVzdHJ5TmFtZSA9IHRoaXMuYnVzaW5lc3NEZXRhaWxzLnN1YkluZHVzdHJ5TmFtZTtcclxuICAgIC8vIH1cclxuXHJcbiAgICBpZiAod2luZG93Py5sb2NhdGlvbj8ub3JpZ2luPy5pbmNsdWRlcygnY2FyYXRsYW5lJykgfHwgd2luZG93Py5sb2NhdGlvbj8ub3JpZ2luPy5pbmNsdWRlcygnb3JyYScpKSB7XHJcbiAgICAgIHRoaXMudG9TaG93SW5KZXdlbGxlcnkgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZ2V0RWNvbW1lcmNlQ29uZmlncygpO1xyXG4gICAgdGhpcy5zdWJJbmR1c3RyeU5hbWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc3ViSW5kdXN0cnlOYW1lJykgPz8gXCJcIjtcclxuICAgIHRoaXMuZmVhdHVyZVByb2R1Y3REYXRhID0gbmV3IEZlYXR1cmVkUHJvZHVjdE1vZGFsKHRoaXMuZGF0YSk7XHJcbiAgICB0aGlzLnJlY2VudFZpZXdlZERhdGEgPSBuZXcgRmVhdHVyZWRQcm9kdWN0TW9kYWwodGhpcy5kYXRhLCB0cnVlKTtcclxuICAgIHRoaXMuc3R5bGVzID0gdGhpcy5kYXRhPy5zdHlsZXM7XHJcbiAgICB0aGlzLmN1cnJlbnRJbWcgPSB0aGlzLnJlc3BvbnNlRGF0YT8uaXRlbUltYWdlc1swXT8uaW1nVXJsID8/IFwiXCJcclxuICAgIHRoaXMuYnV0dG9uID0gdGhpcy5kYXRhPy5hY3Rpb24/LmJ1dHRvbnNbMF07XHJcbiAgICB0aGlzLmJ1dHRvbklkID0gKHRoaXMuZGF0YSA/IHRoaXMuZGF0YS5pZCA6ICcnKSArICh0aGlzLmJ1dHRvbiA/IHRoaXMuYnV0dG9uLmlkIDogJycpO1xyXG5cclxuICAgIHRoaXMucGluY29kZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwaW5jb2RlJyk7XHJcbiAgICBpZiAodGhpcy5waW5jb2RlKSB7XHJcbiAgICAgIHRoaXMuZ2V0U3RvcmVEZXRhaWxzKClcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLml0ZW1zID0gW1xyXG4gICAgICAvLyB7XHJcbiAgICAgIC8vICAgaWNvbjogXCJwaSBwaS1oZWFydFwiLFxyXG4gICAgICAvLyAgIGNvbW1hbmQ6ICgpID0+IHtcclxuICAgICAgLy8gICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3dpc2hsaXN0J10pO1xyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gfSxcclxuICAgICAge1xyXG4gICAgICAgIGljb246IFwicGkgcGktc2hhcmUtYWx0XCIsXHJcbiAgICAgICAgY29tbWFuZDogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaGFyZVByb2R1Y3QoKTtcclxuICAgICAgICAgIC8vIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcclxuICAgICAgICAgIC8vIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdpbmZvJywgc3VtbWFyeTogJ0NvcGllZCcsIGRldGFpbDogJ1lvdSBjYW4gc2hhcmUgdGhlIHVybCcsIGtleTogJ3dpc2hsaXN0JyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIF07XHJcbiAgICB0aGlzLmdldFByb2R1Y3RCeUNhdGVnb3J5KCk7XHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2Uuc2hvd0xvYWRpbmdTY3JlZW4uc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHJlc3BvbnNlO1xyXG4gICAgfSlcclxuICAgIHRoaXMuSXNFY29tbWVyY2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIndlYnNpdGVUeXBlXCIpICE9ICdTVEFUSUMnID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHFQYXJhbSkgPT4ge1xyXG4gICAgICBjb25zdCBwcm9kdWN0SWQgPSBxUGFyYW1bXCJpZFwiXTtcclxuICAgICAgaWYgKHByb2R1Y3RJZCkge1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzSXRlbUFzRmF2b3JpdGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFByb2R1Y3REZXRhaWxzKHByb2R1Y3RJZCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhID0gcmVzcG9uc2VbMF07XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YT8uaXRlbVZhcmlhbnQuZm9yRWFjaCgodmFyaWVudDogSXRlbVZhcmlhbnQsIGlkeDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgIHZhcmllbnQucXVhbnRpdHkgPSAwO1xyXG4gICAgICAgICAgICBPYmplY3Qua2V5cyh2YXJpZW50LnByb3BlcnRpZXMpLmZvckVhY2goKHZhcmllbnRLZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChpZHggPT0gMClcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYXJpZW50LnNldCh2YXJpZW50S2V5LCB2YXJpZW50LnByb3BlcnRpZXNbdmFyaWVudEtleV0pO1xyXG4gICAgICAgICAgICAgIGlmICghdGhpcy52YXJpZW50cy5nZXQodmFyaWVudEtleSk/LmluY2x1ZGVzKHZhcmllbnQucHJvcGVydGllc1t2YXJpZW50S2V5XSkpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhcmllbnRzLnNldCh2YXJpZW50S2V5LCBbLi4uKHRoaXMudmFyaWVudHMuZ2V0KHZhcmllbnRLZXkpID8/IFtdKSwgdmFyaWVudC5wcm9wZXJ0aWVzW3ZhcmllbnRLZXldXSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UmVsYXRlZFByb2R1Y3RzKCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgY29uc3QgaXRlbVZhcmlhbnQ6IEl0ZW1WYXJpYW50IHwgbnVsbCA9IHRoaXMuZ2V0SXRlbVZhcmllbnQoKTtcclxuICAgICAgICAgIGlmIChpdGVtVmFyaWFudCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5pdGVtSW1hZ2VzID0gaXRlbVZhcmlhbnQudmFyaWFudEltYWdlcztcclxuICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEudmFyaWVudElkID0gaXRlbVZhcmlhbnQudmFyaWFudElkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUodGhpcy5yZXNwb25zZURhdGE/Lm5hbWUpO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLnJlc3BvbnNlRGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLml0ZW1JbWFnZXMgPSB0aGlzLnJlc3BvbnNlRGF0YS5pdGVtSW1hZ2VzO1xyXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5xdWFudGl0eSA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlckNhcnQoKS50aGVuKChjYXJ0UmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICBjYXJ0UmVzcG9uc2Uub25zdWNjZXNzID0gKGNhcnREYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuVVNFUl9DQVJUID0gY2FydERhdGEudGFyZ2V0LnJlc3VsdCBhcyB1bmtub3duIGFzIE9yZGVyZWRJdGVtc1tdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5VU0VSX0NBUlQ/LmZvckVhY2goKGl0ZW06IE9yZGVyZWRJdGVtcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoaXRlbS5pdGVtSWQgPT0gcHJvZHVjdElkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVzcG9uc2VEYXRhPy5pdGVtVmFyaWFudD8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1WYXJpYW50ICYmIGl0ZW0udmFyaWVudElkID09IGl0ZW1WYXJpYW50LnZhcmlhbnRJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtVmFyaWFudC5xdWFudGl0eSA9IGl0ZW0ucXVhbnRpdHk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnF1YW50aXR5ID0gaXRlbS5xdWFudGl0eTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucXVhbnRpdHkgPSBpdGVtLnF1YW50aXR5O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcldoaXNobGlzdCgpLnRoZW4oKHdpc2hsaXN0UmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICB3aXNobGlzdFJlc3BvbnNlLm9uc3VjY2VzcyA9ICh3aGlzbGlzdERhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5VU0VSX1dJU0hMSVNUID0gd2hpc2xpc3REYXRhLnRhcmdldC5yZXN1bHQgYXMgdW5rbm93biBhcyBPcmRlcmVkSXRlbXNbXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuVVNFUl9XSVNITElTVD8uZm9yRWFjaCgoaXRlbTogT3JkZXJlZEl0ZW1zKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChpdGVtLml0ZW1JZCA9PSBwcm9kdWN0SWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZXNwb25zZURhdGE/Lml0ZW1WYXJpYW50Py5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtVmFyaWFudDogSXRlbVZhcmlhbnQgfCBudWxsID0gdGhpcy5nZXRJdGVtVmFyaWVudCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1WYXJpYW50ICYmIGl0ZW1WYXJpYW50LnZhcmlhbnRJZCA9PSBpdGVtLnZhcmllbnRJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtVmFyaWFudC53aXNobGlzdCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNJdGVtQXNGYXZvcml0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNJdGVtQXNGYXZvcml0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tJdGVtQWxyZWFkeUFkZGVkSW5UcmlhbCgpO1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRJbWcgPSB0aGlzLnJlc3BvbnNlRGF0YT8uaXRlbUltYWdlcz8uWzBdPy5pbWdVcmw7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UHJvZHVjdEJ5Q2F0ZWdvcnkoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ2V0UmV2aWV3cyhwcm9kdWN0SWQpXHJcbiAgICB9KVxyXG4gIH1cclxuICB2YXJpZW50TG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHJlY2VudFZpZXdJdGVtTGlzdDogUHJvZHVjdFtdID0gW107XHJcbiAgZ2V0UmVsYXRlZFByb2R1Y3RzKCkge1xyXG4gICAgY29uc3QgdXNlckRldGFpbHM6IFVzZXIgfCBudWxsID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCk7XHJcbiAgICBpZiAoISF1c2VyRGV0YWlscykge1xyXG4gICAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFJlY2VudFZpZXdQcm9kdWN0KHVzZXJEZXRhaWxzLnVzZXJJZCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVjZW50Vmlld0l0ZW1MaXN0ID0gcmVzcG9uc2U7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG4gIHNlbGVjdFZhcmllbnQoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudmFyaWVudExvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhcmllbnQuc2V0KGtleSwgdmFsdWUpO1xyXG4gICAgdGhpcy5yZXNwb25zZURhdGE/Lml0ZW1WYXJpYW50Py5mb3JFYWNoKCh2YXJpZW50OiBJdGVtVmFyaWFudCkgPT4ge1xyXG4gICAgICBsZXQgZm91bmRWYXJpZW50ID0gdHJ1ZTtcclxuICAgICAgT2JqZWN0LmtleXModmFyaWVudC5wcm9wZXJ0aWVzKS5mb3JFYWNoKChwcm9wZXJ0eTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgZm91bmRWYXJpZW50ID0gKHRoaXMuc2VsZWN0ZWRWYXJpZW50LmdldChwcm9wZXJ0eSkgPT0gdmFyaWVudC5wcm9wZXJ0aWVzW3Byb3BlcnR5XSkgJiYgZm91bmRWYXJpZW50O1xyXG4gICAgICB9KVxyXG4gICAgICBpZiAoZm91bmRWYXJpZW50KSB7XHJcbiAgICAgICAgdGhpcy5pdGVtSW1hZ2VzID0gdmFyaWVudC52YXJpYW50SW1hZ2VzO1xyXG4gICAgICAgIHRoaXMuY3VycmVudEltZyA9IHRoaXMuaXRlbUltYWdlc1swXT8uaW1nVXJsO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnByaWNlID0gdmFyaWVudC5pdGVtVmFyaWFudFByaWNlO1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLml0ZW1JbnZlbnRvcnkgPSB2YXJpZW50Lml0ZW1JbnZlbnRvcnk7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEudmFyaWVudElkID0gdmFyaWVudC52YXJpYW50SWQ7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucXVhbnRpdHkgPSB0aGlzLmdldFZhcmllbnRRdWFudGl0eSh2YXJpZW50KTtcclxuICAgICAgICB0aGlzLmlzSXRlbUFzRmF2b3JpdGUgPSB0aGlzLmlzVmFyaWVudFByZXNlbnRJbldpc2h0bGlzdCh2YXJpZW50KTtcclxuICAgICAgICB0aGlzLmNoZWNrSXRlbUFscmVhZHlBZGRlZEluVHJpYWwoKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnZhcmllbnRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9LCAzMDApO1xyXG4gIH1cclxuICByYWlzZUxlYWQoKSB7XHJcbiAgICBjb25zdCB1c2VyRGV0YWlscyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpO1xyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIGJ1c2luZXNzSWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0lkJyksXHJcbiAgICAgIGVtYWlsOiB1c2VyRGV0YWlscz8uY29udGFjdD8uZW1haWwsXHJcbiAgICAgIG1lc3NhZ2U6IFwiXCIsXHJcbiAgICAgIG1vYmlsZU5vOiBcIlwiLFxyXG4gICAgICBtb3JlSW5mbzoge1xyXG4gICAgICAgIE5hbWU6IHVzZXJEZXRhaWxzPy5jb250YWN0Py5uYW1lLFxyXG4gICAgICAgIFwiTW9iaWxlIE51bWJlclwiOiB1c2VyRGV0YWlscz8uY29udGFjdD8ubW9iaWxlLFxyXG4gICAgICAgIEVtYWlsOiB1c2VyRGV0YWlscz8uY29udGFjdD8uZW1haWwsXHJcbiAgICAgICAgXCJMZWFkIFNvdXJjZVwiOiBcIldlYnNpdGVcIixcclxuICAgICAgICBcIkxlYWQgU3RhdHVzXCI6IFwiTkVXXCJcclxuICAgICAgfSxcclxuICAgICAgbmFtZTogdXNlckRldGFpbHM/LmNvbnRhY3Q/Lm5hbWVcclxuICAgIH1cclxuICAgIHRoaXMucmVzdFNlcnZpY2UuY3JlYXRlTGVhZChwYXlsb2FkKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzPy5kYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnc3VjY2VzcycsIHN1bW1hcnk6ICdUaGFuayB5b3UnLCBkZXRhaWw6ICdPdXIgdGVhbSB3aWxsIGNvbnRhY3QgeW91IHNvb24nIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6ICdFcnJvcicsIGRldGFpbDogJ0Vycm9yIG9jY3VyZWQgcGxlYXNlIHRyeSBhZ2FpbiBsYXRlcicgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBnZXRJdGVtVmFyaWVudCgpOiBJdGVtVmFyaWFudCB8IG51bGwge1xyXG4gICAgbGV0IHNlbGVjdGVkVmFyaWVudDogSXRlbVZhcmlhbnQgfCBudWxsID0gbnVsbDtcclxuICAgIHRoaXMucmVzcG9uc2VEYXRhPy5pdGVtVmFyaWFudD8uZm9yRWFjaCgodmFyaWVudDogSXRlbVZhcmlhbnQpID0+IHtcclxuICAgICAgbGV0IGZvdW5kVmFyaWVudCA9IHRydWU7XHJcbiAgICAgIE9iamVjdC5rZXlzKHZhcmllbnQucHJvcGVydGllcykuZm9yRWFjaCgocHJvcGVydHk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGZvdW5kVmFyaWVudCA9ICh0aGlzLnNlbGVjdGVkVmFyaWVudC5nZXQocHJvcGVydHkpID09IHZhcmllbnQucHJvcGVydGllc1twcm9wZXJ0eV0pICYmIGZvdW5kVmFyaWVudDtcclxuICAgICAgfSlcclxuICAgICAgaWYgKGZvdW5kVmFyaWVudClcclxuICAgICAgICBzZWxlY3RlZFZhcmllbnQgPSB2YXJpZW50O1xyXG4gICAgfSlcclxuXHJcbiAgICByZXR1cm4gc2VsZWN0ZWRWYXJpZW50O1xyXG4gIH1cclxuXHJcbiAgY2hlY2tJdGVtQWxyZWFkeUFkZGVkSW5UcmlhbCgpIHtcclxuICAgIGxldCB1c2VyOiBVc2VyIHwgbnVsbCA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VXNlcigpXHJcbiAgICBpZiAodXNlcikge1xyXG4gICAgICBsZXQgcmVxdWVzdDogY2hlY2tJdGVtQWxyZWFkeUFkZGVkID0gbmV3IGNoZWNrSXRlbUFscmVhZHlBZGRlZCh0aGlzLnJlc3BvbnNlRGF0YS5pdGVtSWQsIHRoaXMucmVzcG9uc2VEYXRhLnZhcmllbnRJZCwgdXNlci51c2VySWQsICdUUklBTF9DQVJUJylcclxuICAgICAgdGhpcy5yZXN0U2VydmljZS5jaGVja0l0ZW1BbHJlYWR5QWRkZWQocmVxdWVzdCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNJdGVtQWRkZWRBc1RyaWFsID0gcmVzLmRhdGFcclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ2V0VHJpYWxDYXJ0SW5kZXhEQkRhdGEoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFRyaWFsQ2FydEluZGV4REJEYXRhKCkge1xyXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5nZXRUcmlhbENhcnQoKS50aGVuKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICByZXNwb25zZS5vbnN1Y2Nlc3MgPSAodXNlclRyaWFsQ2FydFJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgdHJpYWxDYXJ0SXRlbTogT3JkZXJlZEl0ZW1zW10gPSB1c2VyVHJpYWxDYXJ0UmVzcG9uc2UudGFyZ2V0LnJlc3VsdDtcclxuICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHRyaWFsQ2FydEl0ZW0pIHtcclxuICAgICAgICAgIGlmIChpdGVtLml0ZW1JZCA9PT0gdGhpcy5yZXNwb25zZURhdGEuaXRlbUlkICYmICh0aGlzLnJlc3BvbnNlRGF0YT8uaXRlbVZhcmlhbnQ/Lmxlbmd0aCA9PSAwIHx8IHRoaXMucmVzcG9uc2VEYXRhLnZhcmllbnRJZCA9PT0gaXRlbS52YXJpZW50SWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNJdGVtQWRkZWRBc1RyaWFsID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzaGFyZVByb2R1Y3QoKSB7XHJcbiAgICBuYXZpZ2F0b3Iuc2hhcmUoe1xyXG4gICAgICB0aXRsZTogJ0J1eSAnICsgdGhpcy5yZXNwb25zZURhdGE/Lm5hbWUsXHJcbiAgICAgIHRleHQ6IHRoaXMucmVzcG9uc2VEYXRhLmJyaWVmPy5yZXBsYWNlKC88XFwvW14+XSsoPnwkKS9nLCBcIlwiKSxcclxuICAgICAgdXJsOiB3aW5kb3cubG9jYXRpb24uaHJlZixcclxuICAgIH0pXHJcbiAgICAgIC50aGVuKCgpID0+IHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdpbmZvJywgc3VtbWFyeTogJ1NoYXJlZCcsIGRldGFpbDogJ1Byb2R1Y3Qgc2hhcmVkJywga2V5OiAnd2lzaGxpc3QnIH0pKVxyXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiAnU2hhcmVkJywgZGV0YWlsOiAnRmFpbGVkIHRvIHNoYXJlIHByb2R1Y3QuIFRyeSBBZ2Fpbi4nLCBrZXk6ICd3aXNobGlzdCcgfSkpO1xyXG5cclxuICB9XHJcbiAgcm91dGVUb0hvbWUoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XHJcbiAgfVxyXG5cclxuICBzY3JlZW5XaWR0aDogYW55O1xyXG4gIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6IHJlc2l6ZVwiLCBbXCIkZXZlbnRcIl0pXHJcbiAgZ2V0U2NyZWVuU2l6ZSgpIHtcclxuICAgIHRoaXMuc2NyZWVuV2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICB9XHJcblxyXG4gIHNjcm9sbChlOiBXaGVlbEV2ZW50KSB7XHJcbiAgICBjb25zdCBkID0gdGhpcy5kMi5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgYXRUb3AgPSBkLnNjcm9sbFRvcCA9PT0gMDtcclxuICAgIGNvbnN0IGF0Qm90dG9tID0gZC5zY3JvbGxUb3AgPj0gZC5zY3JvbGxIZWlnaHQgLSBkLmNsaWVudEhlaWdodDtcclxuICAgIGlmICgoYXRUb3AgJiYgZS5kZWx0YVkgPCAwKSB8fCAoYXRCb3R0b20gJiYgZS5kZWx0YVkgPiAwKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBkLnNjcm9sbFRvcCA9IE1hdGgubWF4KDAsIE1hdGgubWluKGQuc2Nyb2xsVG9wICsgZS5kZWx0YVkgKiAyLCBkLnNjcm9sbEhlaWdodCAtIGQuY2xpZW50SGVpZ2h0KSk7XHJcbiAgfVxyXG5cclxuICBjdXJyZW50SW1nOiBhbnk7XHJcbiAgY2hhbmdlSW1nKHVybDogYW55KSB7XHJcbiAgICB0aGlzLmN1cnJlbnRJbWcgPSB1cmw7XHJcbiAgfVxyXG5cclxuICBnZXRLZXlzKHZhcmllbnQ6IE9iamVjdCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyh2YXJpZW50KTtcclxuICB9XHJcblxyXG4gIGdvVG9DYXJ0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvY2FydCddKTtcclxuICB9XHJcblxyXG4gIGFkZFRvQ2FydCh0eXBlOiAnQUREJyB8ICdTVUJTVFJBQ1QnID0gJ0FERCcpIHtcclxuICAgIGlmICh0aGlzLmlzSXRlbU91dE9mU3RvY2spIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ3dhcm4nLCBzdW1tYXJ5OiAnQ2FydCcsIGRldGFpbDogJ0l0ZW0gaXMgbm90IGF2YWlsYWJsZSBhcyBvZiBub3cuIFdlIHdpbGwgbm90aWZ5IHlvdSBvbmNlIGF2YWlsYWJsZScgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5yZXNwb25zZURhdGE/Lml0ZW1WYXJpYW50Py5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGl0ZW1WYXJpZW50OiBJdGVtVmFyaWFudCB8IG51bGwgPSB0aGlzLmdldEl0ZW1WYXJpZW50KCk7XHJcbiAgICAgIGlmIChpdGVtVmFyaWVudCkge1xyXG4gICAgICAgIGl0ZW1WYXJpZW50LnF1YW50aXR5ICs9ICh0eXBlID09ICdBREQnID8gMSA6IC0xKTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5xdWFudGl0eSA9IGl0ZW1WYXJpZW50LnF1YW50aXR5O1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLml0ZW1JbnZlbnRvcnkgPSBpdGVtVmFyaWVudC5pdGVtSW52ZW50b3J5O1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLml0ZW1JbWFnZXMgPSBpdGVtVmFyaWVudC52YXJpYW50SW1hZ2VzO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5yZXNwb25zZURhdGEucXVhbnRpdHkpIHtcclxuICAgICAgICBsZXQgaXNQcmVzZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5VU0VSX0NBUlQ/LmZvckVhY2goKGl0ZW06IE9yZGVyZWRJdGVtcykgPT4ge1xyXG4gICAgICAgICAgaWYgKGl0ZW0udmFyaWVudElkID09IHRoaXMucmVzcG9uc2VEYXRhLnZhcmllbnRJZCkge1xyXG4gICAgICAgICAgICBpdGVtLnF1YW50aXR5ID0gdGhpcy5yZXNwb25zZURhdGEucXVhbnRpdHk7XHJcbiAgICAgICAgICAgIGlzUHJlc2VudCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICBpZiAoIWlzUHJlc2VudClcclxuICAgICAgICAgIHRoaXMuVVNFUl9DQVJUPy5wdXNoKG5ldyBPcmRlcmVkSXRlbXModGhpcy5yZXNwb25zZURhdGEsIHRoaXMucmVzcG9uc2VEYXRhLnZhcmllbnRJZCkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuVVNFUl9DQVJUID0gdGhpcy5VU0VSX0NBUlQ/LmZpbHRlcigoaXRlbTogT3JkZXJlZEl0ZW1zKSA9PiBpdGVtLnZhcmllbnRJZCAhPSB0aGlzLnJlc3BvbnNlRGF0YS52YXJpZW50SWQpID8/IFtdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Ub0NhcnQodGhpcy5yZXNwb25zZURhdGEgYXMgUHJvZHVjdCwgaXRlbVZhcmllbnQ/LnZhcmlhbnRJZCk7XHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgaWYgKCF0aGlzLnJlc3BvbnNlRGF0YT8ucXVhbnRpdHkpXHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucXVhbnRpdHkgPSAwO1xyXG4gICAgICBpZiAodHlwZSA9PSAnQUREJykge1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VEYXRhLnF1YW50aXR5ICs9IDE7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZURhdGEucXVhbnRpdHkgLT0gMTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtVG9DYXJ0KHRoaXMucmVzcG9uc2VEYXRhIGFzIFByb2R1Y3QpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ29Ub0ZpbHRlcihjYXRlZ29yeTogc3RyaW5nKSB7XHJcbiAgICBjYXRlZ29yeSA9IGNhdGVnb3J5LnJlcGxhY2VBbGwoXCIgXCIsIFwiX1wiKVxyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydsaXN0J10sIHsgcXVlcnlQYXJhbXM6IHsgY2F0ZWdvcnk6IGNhdGVnb3J5IH0gfSk7XHJcbiAgfVxyXG5cclxuICBhZGRUb0Zhdm91cml0ZSgpIHtcclxuICAgIHRoaXMuaXNJdGVtQXNGYXZvcml0ZSA9IHRydWU7XHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnc3VjY2VzcycsIHN1bW1hcnk6ICdTdWNjZXNzJywgZGV0YWlsOiAnSXRlbSBhZGRlZCB0byB5b3VyIHdpc2hsaXN0Jywga2V5OiAnd2lzaGxpc3QnIH0pO1xyXG4gICAgaWYgKHRoaXMucmVzcG9uc2VEYXRhPy5pdGVtVmFyaWFudD8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBpdGVtVmFyaWVudDogSXRlbVZhcmlhbnQgfCBudWxsID0gdGhpcy5nZXRJdGVtVmFyaWVudCgpO1xyXG4gICAgICBpZiAoaXRlbVZhcmllbnQpIHtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5pdGVtSW52ZW50b3J5ID0gaXRlbVZhcmllbnQuaXRlbUludmVudG9yeTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5pdGVtSW1hZ2VzID0gaXRlbVZhcmllbnQudmFyaWFudEltYWdlcztcclxuICAgICAgICBpdGVtVmFyaWVudC53aXNobGlzdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtVG9GYXZvdXJpdGUodGhpcy5yZXNwb25zZURhdGEgYXMgUHJvZHVjdCwgaXRlbVZhcmllbnQudmFyaWFudElkKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtVG9GYXZvdXJpdGUodGhpcy5yZXNwb25zZURhdGEgYXMgUHJvZHVjdCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5pc0l0ZW1Bc0Zhdm9yaXRlKSB7XHJcbiAgICAgIHRoaXMuVVNFUl9XSVNITElTVD8ucHVzaChuZXcgT3JkZXJlZEl0ZW1zKHRoaXMucmVzcG9uc2VEYXRhLCB0aGlzLnJlc3BvbnNlRGF0YS52YXJpZW50SWQpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuVVNFUl9XSVNITElTVCA9IHRoaXMuVVNFUl9XSVNITElTVD8uZmlsdGVyKChpdGVtOiBPcmRlcmVkSXRlbXMpID0+IGl0ZW0udmFyaWVudElkICE9IHRoaXMucmVzcG9uc2VEYXRhLnZhcmllbnRJZCkgPz8gW107XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlbW92ZVRvRmF2b3VyaXRlKCkge1xyXG4gICAgdGhpcy5pc0l0ZW1Bc0Zhdm9yaXRlID0gZmFsc2U7XHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnaW5mbycsIHN1bW1hcnk6ICdTdWNjZXNzJywgZGV0YWlsOiAnSXRlbSByZW1vdmVkIGZyb20geW91ciB3aXNobGlzdCcsIGtleTogJ3dpc2hsaXN0JyB9KTtcclxuICAgIGlmICh0aGlzLnJlc3BvbnNlRGF0YT8uaXRlbVZhcmlhbnQ/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgaXRlbVZhcmllbnQ6IEl0ZW1WYXJpYW50IHwgbnVsbCA9IHRoaXMuZ2V0SXRlbVZhcmllbnQoKTtcclxuICAgICAgaWYgKGl0ZW1WYXJpZW50KSB7XHJcbiAgICAgICAgaXRlbVZhcmllbnQud2lzaGxpc3QgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLnJlbW92ZUl0ZW1Gcm9tRmF2b3VyaXRlKHRoaXMucmVzcG9uc2VEYXRhLnZhcmllbnRJZCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2FydFNlcnZpY2UucmVtb3ZlSXRlbUZyb21GYXZvdXJpdGUodGhpcy5yZXNwb25zZURhdGEudmFyaWVudElkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFByb2R1Y3RCeUNhdGVnb3J5KCkge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRQcm9kdWN0QnlDYXRlZ29yeUlkKHRoaXMucmVzcG9uc2VEYXRhPy5pdGVtQ2F0ZWdvcmlzYXRpb24/Lml0ZW1DYXRlZ29yaWVzPy5bMF0/LnJlZklkID8/IFwiXCIpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnJlbGF0ZWRQcm9kdWN0RGF0YSA9IHJlc3BvbnNlLmRhdGE/LmZpbHRlcigocHJvZHVjdDogUHJvZHVjdCkgPT4gdGhpcy5yZXNwb25zZURhdGEuaXRlbUlkICE9IHByb2R1Y3QuaXRlbUlkKTtcclxuICAgICAgaWYgKHRoaXMucmVsYXRlZFByb2R1Y3REYXRhPy5sZW5ndGggPT0gMClcclxuICAgICAgICB0aGlzLmdldFByb2R1Y3RCeUNvbGxlY3Rpb24oKTtcclxuICAgIH0pXHJcbiAgfVxyXG4gIGdldFByb2R1Y3RCeUNvbGxlY3Rpb24oKSB7XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFByb2R1Y3RCeUNvbGxlY3Rpb25JZCh0aGlzLnJlc3BvbnNlRGF0YT8uaXRlbUNhdGVnb3Jpc2F0aW9uPy5pdGVtQ29sbGVjdGlvbj8uWzBdLnJlZklkID8/IFwiXCIpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnJlbGF0ZWRQcm9kdWN0RGF0YSA9IHJlc3BvbnNlLmRhdGE/LmZpbHRlcigocHJvZHVjdDogUHJvZHVjdCkgPT4gdGhpcy5yZXNwb25zZURhdGEuaXRlbUlkICE9IHByb2R1Y3QuaXRlbUlkKTtcclxuICAgIH0pXHJcbiAgfVxyXG4gIGNoYW5nZVByb2R1Y3QocHJvZHVjdDogUHJvZHVjdCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvZGV0YWlscyddLCB7IHF1ZXJ5UGFyYW1zOiB7IGlkOiBwcm9kdWN0Lml0ZW1JZCB9IH0pO1xyXG4gICAgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCA9IDA7XHJcbiAgfVxyXG4gIGdldEtleUJ5SWR4KHByb3BlcnR5OiBhbnksIGluZGV4OiBudW1iZXIpIHtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyhwcm9wZXJ0eSlbaW5kZXhdO1xyXG4gIH1cclxuICBpc1ZhcmllbnRBdmFpbGFibGUodmFyaWVudDogYW55KTogYm9vbGVhbiB7XHJcblxyXG4gICAgLy8gdGhpcy5yZXNwb25zZURhdGE/Lml0ZW1WYXJpYW50Py5mb3JFYWNoKCh2YXJpZW50OiBJdGVtVmFyaWFudCk9PiB7XHJcbiAgICAvLyAgIGxldCBmb3VuZFZhcmllbnQgPSB0cnVlO1xyXG4gICAgLy8gICBPYmplY3Qua2V5cyh2YXJpZW50LnByb3BlcnRpZXMpLmZvckVhY2goKHByb3BlcnR5OiBzdHJpbmcpPT4ge1xyXG4gICAgLy8gICAgIC8vIGZvdW5kVmFyaWVudCA9ICh2YXJpZW50S2V5ID09IHZhcmllbnQucHJvcGVydGllc1twcm9wZXJ0eV0pICYmIGZvdW5kVmFyaWVudDtcclxuICAgIC8vICAgfSlcclxuICAgIC8vIH0pXHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICByZXZpZXdUaXRsZTogc3RyaW5nID0gXCJcIjtcclxuICByZXZpZXdEZXNjcmlwdGlvbjogc3RyaW5nID0gXCJcIjtcclxuICBhZGRQcm9kdWN0UmV2aWV3KCkge1xyXG4gICAgY29uc3QgdXNlckRldGFpbHM6IFVzZXIgfCBudWxsID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKCk7XHJcblxyXG4gICAgaWYgKHRoaXMucmV2aWV3VGl0bGUubGVuZ3RoID09IDAgJiYgdGhpcy5yZXZpZXdEZXNjcmlwdGlvbi5sZW5ndGggPT0gMCAmJiB0aGlzLnByb2R1Y3RSZXZpZXcgPT0gMClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGlmICghdXNlckRldGFpbHMpIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ2luZm8nLCBzdW1tYXJ5OiAnTG9naW4nLCBkZXRhaWw6ICdQbGVhc2UgbG9naW4gdG8gcG9zdCByZXZpZXcnLCBrZXk6ICd3aXNobGlzdCcgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHBheWxvYWQ6IFJldmlldyA9IHtcclxuICAgICAgcHJvZHVjdElkOiB0aGlzLnJlc3BvbnNlRGF0YS5pdGVtSWQsXHJcbiAgICAgIHVzZXJJZDogdXNlckRldGFpbHMudXNlcklkLFxyXG4gICAgICByYXRpbmc6IHRoaXMucHJvZHVjdFJldmlldyxcclxuICAgICAgcmV2aWV3OiB0aGlzLnJldmlld0Rlc2NyaXB0aW9uLFxyXG4gICAgICB1c2VyTmFtZTogdXNlckRldGFpbHM/LmNvbnRhY3Q/Lm5hbWUsXHJcbiAgICAgIHRpdGxlOiB0aGlzLnJldmlld1RpdGxlLFxyXG4gICAgICBwcm9kdWN0SW1hZ2VzOiBbXVxyXG4gICAgfVxyXG4gICAgdGhpcy5yZXN0U2VydmljZS5hZGRSZXZpZXcocGF5bG9hZCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICB0aGlzLnNob3dSZXZpZXcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5yZXNwb25zZURhdGEucmF0aW5nICs9IDE7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ1JldmlldycsIGRldGFpbDogJ1RoYW5rcyBmb3IgZ2l2aW5nIHlvdXIgZmVlZGJhY2snLCBrZXk6ICd3aXNobGlzdCcgfSk7XHJcbiAgICAgIGlmICh0aGlzLnJldmlld0NvbXBvbmVudCkge1xyXG4gICAgICAgIHRoaXMucmV2aWV3Q29tcG9uZW50LmdldEFsbFJldmlld3MoKTtcclxuICAgICAgfVxyXG4gICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6ICdSZXZpZXcnLCBkZXRhaWw6IGVycm9yPy5lcnJvcj8ubWVzc2FnZSwga2V5OiAnd2lzaGxpc3QnIH0pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VmFyaWVudFF1YW50aXR5KHByb2R1Y3RWYXJpZW50OiBJdGVtVmFyaWFudCk6IG51bWJlciB7XHJcbiAgICBsZXQgaXRlbVF1YW50aXR5OiBudW1iZXIgPSAwO1xyXG4gICAgdGhpcy5VU0VSX0NBUlQ/LmZvckVhY2goKGl0ZW06IE9yZGVyZWRJdGVtcykgPT4ge1xyXG4gICAgICBpZiAocHJvZHVjdFZhcmllbnQudmFyaWFudElkID09IGl0ZW0udmFyaWVudElkKVxyXG4gICAgICAgIGl0ZW1RdWFudGl0eSA9IGl0ZW0ucXVhbnRpdHk7XHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIGl0ZW1RdWFudGl0eTtcclxuICB9XHJcbiAgcHJpdmF0ZSBpc1ZhcmllbnRQcmVzZW50SW5XaXNodGxpc3QocHJvZHVjdFZhcmllbnQ6IEl0ZW1WYXJpYW50KTogYm9vbGVhbiB7XHJcbiAgICBsZXQgcHJlc2VudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5VU0VSX1dJU0hMSVNUPy5mb3JFYWNoKChpdGVtOiBPcmRlcmVkSXRlbXMpID0+IHtcclxuICAgICAgaWYgKHByb2R1Y3RWYXJpZW50LnZhcmlhbnRJZCA9PSBpdGVtLnZhcmllbnRJZClcclxuICAgICAgICBwcmVzZW50ID0gdHJ1ZTtcclxuICAgIH0pXHJcbiAgICByZXR1cm4gcHJlc2VudDtcclxuICB9XHJcblxyXG4gIGVkaXRTZWN0aW9uKCkge1xyXG5cclxuICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8PSA0NzUpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2UudG9nZ2xlRWRpdG9yRXZlbnQuZW1pdChmYWxzZSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmVkaXRTZWN0aW9uLmVtaXQoeyBkYXRhOiB0aGlzLmRhdGEgfSk7XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzSXRlbU91dE9mU3RvY2soKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5yZXNwb25zZURhdGE/Lml0ZW1JbnZlbnRvcnk/Lm9wZW5pbmdTdG9jayA9PSAwO1xyXG4gIH1cclxuICBnZXQgY3VycmVuY3koKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBCVVNJTkVTU19DT05TVEFOVFMuQ1VSUkVOQ1k7XHJcbiAgfVxyXG4gIGdldCBpc0l0ZW1Mb3dTdG9jaygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnJlc3BvbnNlRGF0YT8uaXRlbUludmVudG9yeT8ub3BlbmluZ1N0b2NrIDwgNTtcclxuICB9XHJcbiAgZ2V0IGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDw9IDQ3NTtcclxuICB9XHJcblxyXG4gIGdldENhcmF0KGNhcmF0OiBhbnkpIHtcclxuICAgIHN3aXRjaCAoY2FyYXQpIHtcclxuICAgICAgY2FzZSAnSzI0JzpcclxuICAgICAgICByZXR1cm4gXCIyNCBDYXJhdHNcIlxyXG4gICAgICBjYXNlICdLMjInOlxyXG4gICAgICAgIHJldHVybiBcIjIyIENhcmF0c1wiXHJcbiAgICAgIGNhc2UgJ0sxOCc6XHJcbiAgICAgICAgcmV0dXJuIFwiMTggQ2FyYXRzXCJcclxuICAgICAgY2FzZSAnSzE0JzpcclxuICAgICAgICByZXR1cm4gXCIxNCBDYXJhdHNcIlxyXG4gICAgICBjYXNlICdLMTAnOlxyXG4gICAgICAgIHJldHVybiBcIjEwIENhcmF0c1wiXHJcbiAgICAgIGNhc2UgJ0s5OTknOlxyXG4gICAgICAgIHJldHVybiBcIjk5LjklIFB1cmVcIlxyXG4gICAgICBjYXNlICdLOTI1JzpcclxuICAgICAgICByZXR1cm4gXCI5Mi41JSBQdXJlXCJcclxuICAgICAgY2FzZSAnSzkwMCc6XHJcbiAgICAgICAgcmV0dXJuIFwiOTAlIFB1cmVcIlxyXG4gICAgICBjYXNlICdWUyc6XHJcbiAgICAgICAgcmV0dXJuIFwiVmVyeSBTbGlnaHRseSBJbmNsdWRlZFwiXHJcbiAgICAgIGNhc2UgJ1NJJzpcclxuICAgICAgICByZXR1cm4gXCJTbGlnaHRseSBJbmNsdWRlZFwiXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIFwiMjQgQ2FyYXRzXCJcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0UHJpY2VQZXJHcmFtKHdlaWdodDogYW55LCBwcmljZTogYW55KSB7XHJcbiAgICBpZiAod2VpZ2h0ICYmIHByaWNlKSB7XHJcbiAgICAgIHJldHVybiAocHJpY2UgLyB3ZWlnaHQpLnRvRml4ZWQoMik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICB9XHJcbiAgaXNEZXNjcmlwdGlvbkNvbGxhcHNlZCA9IGZhbHNlO1xyXG5cclxuICB0b2dnbGVEZXNjcmlwdGlvbigpIHtcclxuICAgIHRoaXMuaXNEZXNjcmlwdGlvbkNvbGxhcHNlZCA9ICF0aGlzLmlzRGVzY3JpcHRpb25Db2xsYXBzZWQ7XHJcbiAgfVxyXG4gIGlzUHJpY2VCcmVha3VwID0gZmFsc2VcclxuICB0b2dnbGVQcmljZUJyZWFrRG93bigpIHtcclxuICAgIHRoaXMuaXNQcmljZUJyZWFrdXAgPSAhdGhpcy5pc1ByaWNlQnJlYWt1cDtcclxuICB9XHJcbiAgZ2V0RGlmZmVyZW5jZShzZWxsaW5nUHJpY2U6IGFueSwgbXJwOiBhbnkpOiBudW1iZXIge1xyXG4gICAgaWYgKCFzZWxsaW5nUHJpY2UgfHwgIW1ycClcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICByZXR1cm4gbXJwIC0gc2VsbGluZ1ByaWNlO1xyXG4gIH1cclxuICBnZXRCYWNrZ3JvdW5kQ29sb3IodHlwZTogc3RyaW5nKSB7XHJcbiAgICAvLyBzd2l0Y2ggKHR5cGUpIHtcclxuICAgIC8vICAgY2FzZSBcIkdPTERcIjpcclxuICAgIC8vICAgICByZXR1cm4gXCIjRkZGNEQxXCJcclxuICAgIC8vICAgY2FzZSBcIkRJQU1PTkRcIjpcclxuICAgIC8vICAgICByZXR1cm4gXCIjRUZFMUY0XCJcclxuICAgIC8vICAgY2FzZSBcIlNJTFZFUlwiOlxyXG4gICAgLy8gICAgIHJldHVybiBcImxpbmVhci1ncmFkaWVudCgxODBkZWcsICNGQUZBRkEgMCUsICNGRkZGRkYgMTAwJSlcIlxyXG4gICAgLy8gICBkZWZhdWx0OlxyXG4gICAgLy8gICAgIHJldHVybiBcIiNlMmY2ZmZcIlxyXG4gICAgLy8gfVxyXG4gICAgcmV0dXJuIFwiI0ZGRjlGNVwiXHJcbiAgfVxyXG4gIGdldEhlYWRlckNvbG9yKHR5cGU6IHN0cmluZykge1xyXG4gICAgLy8gc3dpdGNoICh0eXBlKSB7XHJcbiAgICAvLyAgIGNhc2UgXCJHT0xEXCI6XHJcbiAgICAvLyAgICAgcmV0dXJuIFwiI0ZGRjNFOVwiXHJcbiAgICAvLyAgIGNhc2UgXCJESUFNT05EXCI6XHJcbiAgICAvLyAgICAgcmV0dXJuIFwiIzlENDNCOFwiXHJcbiAgICAvLyAgIGNhc2UgXCJTSUxWRVJcIjpcclxuICAgIC8vICAgICByZXR1cm4gXCJsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCAjQkRCREJEIDAlLCAjRTJFMkUyIDEwMCUpXCJcclxuICAgIC8vICAgZGVmYXVsdDpcclxuICAgIC8vICAgICByZXR1cm4gXCJsaW5lYXItZ3JhZGllbnQoMTU5ZGVnLCByZ2JhKDY1LDEwNSwyMjUsMSkgMCUsIHJnYmEoMTM3LDIwNywyNDAsMSkgMTAwJSlcIlxyXG4gICAgLy8gfVxyXG4gICAgcmV0dXJuIFwiI0ZGRjNFOVwiXHJcbiAgfVxyXG4gIGdldFRleHRDb2xvcihjb2xvcjogYW55KSB7XHJcbiAgICBjb25zdCB0aHJlc2hvbGQgPSAxMzA7XHJcbiAgICBjb25zdCByID0gcGFyc2VJbnQoY29sb3Iuc2xpY2UoMSwgMyksIDE2KTtcclxuICAgIGNvbnN0IGcgPSBwYXJzZUludChjb2xvci5zbGljZSgzLCA1KSwgMTYpO1xyXG4gICAgY29uc3QgYiA9IHBhcnNlSW50KGNvbG9yLnNsaWNlKDUsIDcpLCAxNik7XHJcbiAgICBjb25zdCBicmlnaHRuZXNzID0gKHIgKiAyOTkgKyBnICogNTg3ICsgYiAqIDExNCkgLyAxMDAwO1xyXG5cclxuICAgIHJldHVybiBicmlnaHRuZXNzID4gdGhyZXNob2xkID8gJyMwMDAwMDAnIDogJyNmZmZmZmYnO1xyXG4gIH1cclxuICBsYW5ndWFnZXM6IHN0cmluZ1tdID0gW1wiRW5nbGlzaFwiLCBcIlRlbHVndVwiLCBcIkhpbmRpXCIsIFwiVGFtaWxcIiwgXCJLYW5uYWRhXCIsIFwiTWFsYXlhbGFtXCIsIFwiT3RoZXJzXCJdXHJcbiAgc2VsZWN0ZWRMYW5nOiBzdHJpbmcgPSB0aGlzLmxhbmd1YWdlc1swXVxyXG5cclxuICBnZXRDbGFzcyhtYXA6IGFueSkge1xyXG4gICAgaWYgKG1hcC5zaXplID09IDEpXHJcbiAgICAgIHJldHVybiAnY29sLTYnXHJcbiAgICBlbHNlIGlmIChtYXAuc2l6ZSA9PSAyKVxyXG4gICAgICByZXR1cm4gJ2NvbC00J1xyXG4gICAgZWxzZSBpZiAobWFwLnNpemUgPT0gMylcclxuICAgICAgcmV0dXJuICdjb2wtMydcclxuICAgIGVsc2VcclxuICAgICAgcmV0dXJuICd3aWR0aC1tYXgnO1xyXG4gIH1cclxuICBvbkZpbmRJblN0b3JlKGlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3N0b3JlJ10sIHsgcXVlcnlQYXJhbXM6IHsgc3RvcmVJZDogaWQgfSB9KTtcclxuICB9XHJcblxyXG4gIG9uQm9va0FwcG9pbnRtZW50KCkge1xyXG5cclxuICB9XHJcbiAgaXNEZXRhaWxzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcGluY29kZTogYW55O1xyXG4gIHN0b3JlRGV0YWlsczogYW55O1xyXG4gIGdldFN0b3JlRGV0YWlscygpIHtcclxuICAgIGlmICh0aGlzLnBpbmNvZGUgPT0gbnVsbCB8fCB0aGlzLnBpbmNvZGUudG9TdHJpbmcoKS5sZW5ndGggIT0gNikge1xyXG4gICAgICB0aGlzLmlzUGluQ29kZSA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFN0b3JlTG9jYXRvckRldGFpbHModGhpcy5waW5jb2RlLnRvU3RyaW5nKCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5pc0RldGFpbHMgPSB0cnVlO1xyXG4gICAgICB0aGlzLnN0b3JlRGV0YWlscyA9IHJlcz8uZGF0YTtcclxuICAgICAgdGhpcy5pc1BpbkNvZGUgPSB0cnVlO1xyXG4gICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6ICdFcnJvcicsIGRldGFpbDogZXJyPy5lcnJvcj8ubWVzc2FnZSwga2V5OiAnU3RvcmUgTG9jYXRvcicgfSk7XHJcbiAgICAgIH0pXHJcbiAgfVxyXG4gIGJyYW5kUHJvbWlzZXM6IGFueVtdID0gW107XHJcbiAgZWNvbUNvbmZpZ3M6IGFueTtcclxuICBnZXRFY29tbWVyY2VDb25maWdzKCkge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRFY29tbWVyY2VDb25maWdzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmJyYW5kUHJvbWlzZXMgPSByZXM/LmRhdGE/LmJyYW5kUHJvbWlzZXNcclxuICAgICAgdGhpcy5lY29tQ29uZmlncyA9IHJlcz8uZGF0YVxyXG4gICAgfSlcclxuICB9XHJcbiAgbG9jYXRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgb3RoZXJMYW5ndWFnZTogc3RyaW5nID0gJyc7XHJcblxyXG4gIHZpZGVvQ2FsbFBheWxvYWQ6IGFueSA9IHtcclxuICAgIGJ1c2luZXNzSWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0lkJykgPz8gXCJcIixcclxuICAgIG1vYmlsZU51bWJlcjogXCJcIixcclxuICAgIHBpbmNvZGU6IFwiXCIsXHJcbiAgICB1c2VybmFtZTogXCJcIixcclxuICAgIGVtYWlsOiBcIlwiLFxyXG4gICAgbWVzc2FnZTogYGAsXHJcbiAgfVxyXG5cclxuICB2YWxpZGF0aW9uRXJyb3JzOiBhbnkgPSB7XHJcbiAgICB1c2VybmFtZTogZmFsc2UsXHJcbiAgICBtb2JpbGVOdW1iZXI6IGZhbHNlLFxyXG4gICAgcGluY29kZTogZmFsc2UsXHJcbiAgICBlbWFpbDogZmFsc2VcclxuICB9O1xyXG4gIGlzU3VibWl0dGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNjaGVkdWxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNjaGVkdWxlVmlkZW9DYWxsKCkge1xyXG4gICAgaWYgKHRoaXMuaXNTdWJtaXR0aW5nKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMucmVzZXRWYWxpZGF0aW9uRXJyb3JzKCk7XHJcbiAgICBsZXQgaGFzRXJyb3JzID0gZmFsc2U7XHJcbiAgICBpZiAoIXRoaXMudmlkZW9DYWxsUGF5bG9hZC51c2VybmFtZT8udHJpbSgpKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycy51c2VybmFtZSA9IHRydWU7XHJcbiAgICAgIGhhc0Vycm9ycyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMudmlkZW9DYWxsUGF5bG9hZC5tb2JpbGVOdW1iZXIpIHtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzLm1vYmlsZU51bWJlciA9IHRydWU7XHJcbiAgICAgIGhhc0Vycm9ycyA9IHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudmlkZW9DYWxsUGF5bG9hZC5tb2JpbGVOdW1iZXIudG9TdHJpbmcoKS5sZW5ndGggIT09IDEwKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycy5tb2JpbGVOdW1iZXIgPSB0cnVlO1xyXG4gICAgICBoYXNFcnJvcnMgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLnZpZGVvQ2FsbFBheWxvYWQucGluY29kZSkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMucGluY29kZSA9IHRydWU7XHJcbiAgICAgIGhhc0Vycm9ycyA9IHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudmlkZW9DYWxsUGF5bG9hZC5waW5jb2RlLnRvU3RyaW5nKCkubGVuZ3RoICE9PSA2KSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycy5waW5jb2RlID0gdHJ1ZTtcclxuICAgICAgaGFzRXJyb3JzID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMudmlkZW9DYWxsUGF5bG9hZC5lbWFpbD8udHJpbSgpKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycy5lbWFpbCA9IHRydWU7XHJcbiAgICAgIGhhc0Vycm9ycyA9IHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKCEvXlthLXpBLVowLTkuXyUrLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Mix9JC8udGVzdCh0aGlzLnZpZGVvQ2FsbFBheWxvYWQuZW1haWwpKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycy5lbWFpbCA9IHRydWU7XHJcbiAgICAgIGhhc0Vycm9ycyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoaGFzRXJyb3JzKSB7XHJcbiAgICAgIGlmICghdGhpcy52aWRlb0NhbGxQYXlsb2FkLnVzZXJuYW1lPy50cmltKCkgfHwgIXRoaXMudmlkZW9DYWxsUGF5bG9hZC5tb2JpbGVOdW1iZXIgfHwgIXRoaXMudmlkZW9DYWxsUGF5bG9hZC5waW5jb2RlKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgc2V2ZXJpdHk6ICd3YXJuJyxcclxuICAgICAgICAgIHN1bW1hcnk6ICdWaWRlbyBDYWxsIFNjaGVkdWxlJyxcclxuICAgICAgICAgIGRldGFpbDogJ1BsZWFzZSBmaWxsIGFsbCB0aGUgcmVxdWlyZWQgZGV0YWlscycsXHJcbiAgICAgICAgICBrZXk6ICdWaWRlbyBDYWxsIFNjaGVkdWxlJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMudmlkZW9DYWxsUGF5bG9hZC5tb2JpbGVOdW1iZXIudG9TdHJpbmcoKS5sZW5ndGggIT09IDEwKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgc2V2ZXJpdHk6ICd3YXJuJyxcclxuICAgICAgICAgIHN1bW1hcnk6ICdWaWRlbyBDYWxsIFNjaGVkdWxlJyxcclxuICAgICAgICAgIGRldGFpbDogJ1BsZWFzZSBlbnRlciBhIHZhbGlkIDEwLWRpZ2l0IG1vYmlsZSBudW1iZXInLFxyXG4gICAgICAgICAga2V5OiAnVmlkZW8gQ2FsbCBTY2hlZHVsZSdcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnZpZGVvQ2FsbFBheWxvYWQucGluY29kZS50b1N0cmluZygpLmxlbmd0aCAhPT0gNikge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgIHNldmVyaXR5OiAnd2FybicsXHJcbiAgICAgICAgICBzdW1tYXJ5OiAnVmlkZW8gQ2FsbCBTY2hlZHVsZScsXHJcbiAgICAgICAgICBkZXRhaWw6ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCA2LWRpZ2l0IHBpbmNvZGUnLFxyXG4gICAgICAgICAga2V5OiAnVmlkZW8gQ2FsbCBTY2hlZHVsZSdcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICghdGhpcy52aWRlb0NhbGxQYXlsb2FkLmVtYWlsPy50cmltKCkgfHwgIS9eW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLH0kLy50ZXN0KHRoaXMudmlkZW9DYWxsUGF5bG9hZC5lbWFpbCkpIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICBzZXZlcml0eTogJ3dhcm4nLFxyXG4gICAgICAgICAgc3VtbWFyeTogJ1ZpZGVvIENhbGwgU2NoZWR1bGUnLFxyXG4gICAgICAgICAgZGV0YWlsOiAnUGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcycsXHJcbiAgICAgICAgICBrZXk6ICdWaWRlbyBDYWxsIFNjaGVkdWxlJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzU3VibWl0dGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnZpZGVvQ2FsbFBheWxvYWQubWVzc2FnZSA9IHRoaXMudmlkZW9DYWxsUGF5bG9hZC5tZXNzYWdlICsgYEhpLCBJJ3ZlIGp1c3Qgc2NoZWR1bGVkIGEgdmlkZW8gY2FsbCB3aXRoIHlvdSBmb3IgdGhpcyBwcm9kdWN0ICR7dGhpcy5yZXNwb25zZURhdGE/Lm5hbWV9LiBJdCdzIGltcG9ydGFudCBhbmQgSSdkIGFwcHJlY2lhdGUgeW91ciB0aW1lIOKAlCBsb29raW5nIGZvcndhcmQgdG8gY29ubmVjdGluZyBhcyBzb29uIGFzIHBvc3NpYmxlICBpbiAke3RoaXMuc2VsZWN0ZWRMYW5nID09ICdPdGhlcnMnID8gdGhpcy5vdGhlckxhbmd1YWdlIDogdGhpcy5zZWxlY3RlZExhbmd9IGxhbmd1YWdlYDtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UucG9zdFZpZGVvQ2FsbERldGFpbHModGhpcy52aWRlb0NhbGxQYXlsb2FkKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgIHNldmVyaXR5OiAnc3VjY2VzcycsXHJcbiAgICAgICAgICBzdW1tYXJ5OiAnVmlkZW8gQ2FsbCBTY2hlZHVsZScsXHJcbiAgICAgICAgICBkZXRhaWw6ICdZb3VyIFZpZGVvIENhbGwgaXMgU2NoZWR1bGVkIFN1Y2Nlc3NmdWxseScsXHJcbiAgICAgICAgICBrZXk6ICdWaWRlbyBTY2hlZHVsaW5nJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zY2hlZHVsZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2xvc2VEaWFsb2coKVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxyXG4gICAgICAgICAgc3VtbWFyeTogJ0Vycm9yJyxcclxuICAgICAgICAgIGRldGFpbDogZXJyPy5lcnJvcj8ubWVzc2FnZSxcclxuICAgICAgICAgIGtleTogJ1ZpZGVvIENhbGwgU2NoZWR1bGUnXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG4gIHJlc2V0VmFsaWRhdGlvbkVycm9ycygpIHtcclxuICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycyA9IHtcclxuICAgICAgdXNlcm5hbWU6IGZhbHNlLFxyXG4gICAgICBtb2JpbGVOdW1iZXI6IGZhbHNlLFxyXG4gICAgICBwaW5jb2RlOiBmYWxzZVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHJlc2V0Rm9ybSgpIHtcclxuICAgIHRoaXMudmlkZW9DYWxsUGF5bG9hZCA9IHtcclxuICAgICAgdXNlcm5hbWU6ICcnLFxyXG4gICAgICBtb2JpbGVOdW1iZXI6ICcnLFxyXG4gICAgICBwaW5jb2RlOiAnJyxcclxuICAgICAgbWVzc2FnZTogJydcclxuICAgIH07XHJcbiAgICB0aGlzLnJlc2V0VmFsaWRhdGlvbkVycm9ycygpO1xyXG4gIH1cclxuICBvbklucHV0Q2hhbmdlKGZpZWxkOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnZhbGlkYXRpb25FcnJvcnNbZmllbGRdKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yc1tmaWVsZF0gPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgY2xvc2VNb2RhbCgpIHtcclxuICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleGFtcGxlTW9kYWxDZW50ZXInKTtcclxuICAgIGlmIChtb2RhbEVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUobW9kYWxFbGVtZW50LCAnZGF0YS1icy1kaXNtaXNzJywgJ21vZGFsJyk7XHJcbiAgICAgIG1vZGFsRWxlbWVudC5jbGljaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QnV0dG9uSWQoaW5kZXg6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YT8uYWN0aW9uPy5idXR0b25zW2luZGV4XT8uaWQgPz8gXCJcIjtcclxuICB9XHJcbiAgZ2V0QnV0dG9uU3R5bGUoaW5kZXg6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YT8uYWN0aW9uPy5idXR0b25zW2luZGV4XT8uc3R5bGVzO1xyXG4gIH1cclxuICBvcGVuRGlhbG9nQm94KHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxIVE1MRGl2RWxlbWVudD4pOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbmZpZzogTWF0RGlhbG9nQ29uZmlnID0ge1xyXG4gICAgICBwYW5lbENsYXNzOiAnJyxcclxuICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMuc2NyZWVuV2lkdGggPiA0NzUpIHtcclxuICAgICAgY29uZmlnLnBhbmVsQ2xhc3MgPSAndmlkZW8tY2FsbC1kaWFsb2cnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uZmlnLndpZHRoID0gJzEwMHZ3JztcclxuICAgICAgY29uZmlnLmhlaWdodCA9ICcxMDB2aCc7XHJcbiAgICAgIGNvbmZpZy5tYXhXaWR0aCA9ICcxMDB2dyc7XHJcbiAgICAgIGNvbmZpZy5wYW5lbENsYXNzID0gJ2FwcG9pbnRtZW50LWZvcm0nO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5tYXREaWFsb2cub3Blbih0ZW1wbGF0ZSwgY29uZmlnKTtcclxuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcclxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnJztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbWF0Q2xvc2VEaWFsb2coKSB7XHJcbiAgICB0aGlzLm1hdERpYWxvZy5jbG9zZUFsbCgpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VEaWFsb2coKSB7XHJcbiAgICB0aGlzLm1hdERpYWxvZy5jbG9zZUFsbCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmF0aW5ncyhub29mcmF0aW5nczogYW55KSB7XHJcbiAgICBpZiAobm9vZnJhdGluZ3MgPj0gMTAwMCkge1xyXG4gICAgICByZXR1cm4gKG5vb2ZyYXRpbmdzIC8gMTAwMCkudG9GaXhlZCgxKSArIFwiSytcIjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKG5vb2ZyYXRpbmdzID4gMTAwMDAwMCkge1xyXG4gICAgICByZXR1cm4gKG5vb2ZyYXRpbmdzIC8gMTAwMDAwMCkudG9GaXhlZCgxKSArIFwiTVwiO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBub29mcmF0aW5ncztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZFRvVHJpYWxDYXJ0KCkge1xyXG4gICAgaWYgKHRoaXMucmVzcG9uc2VEYXRhPy5pdGVtVmFyaWFudD8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBpdGVtVmFyaWVudDogSXRlbVZhcmlhbnQgfCBudWxsID0gdGhpcy5nZXRJdGVtVmFyaWVudCgpO1xyXG4gICAgICBpZiAoaXRlbVZhcmllbnQpIHtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5pdGVtSW52ZW50b3J5ID0gaXRlbVZhcmllbnQuaXRlbUludmVudG9yeTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlRGF0YS5pdGVtSW1hZ2VzID0gaXRlbVZhcmllbnQudmFyaWFudEltYWdlcztcclxuICAgICAgICBpdGVtVmFyaWVudC53aXNobGlzdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5hZGRJdGVtVG9UcmlhbCh0aGlzLnJlc3BvbnNlRGF0YSBhcyBQcm9kdWN0LCBpdGVtVmFyaWVudC52YXJpYW50SWQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNhcnRTZXJ2aWNlLmFkZEl0ZW1Ub1RyaWFsKHRoaXMucmVzcG9uc2VEYXRhIGFzIFByb2R1Y3QpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc0l0ZW1BZGRlZEFzVHJpYWwgPSB0cnVlO1xyXG4gICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ3N1Y2Nlc3MnLCBzdW1tYXJ5OiAnU3VjY2VzcycsIGRldGFpbDogJ0l0ZW0gYWRkZWQgdG8geW91ciB0cmFpbCBjYXJ0Jywga2V5OiAnd2lzaGxpc3QnIH0pO1xyXG5cclxuICB9XHJcbiAgcmV2aWV3c0RhdGE6IGFueVtdID0gW11cclxuICByYXRpbmdDb3VudHM6IGFueVxyXG4gIHBhZ2VOdW1iZXI6IG51bWJlciA9IDBcclxuICBsb2FkTW9yZVJldmlld3MoKSB7XHJcbiAgICB0aGlzLnBhZ2VOdW1iZXIrKztcclxuICAgIHRoaXMuZ2V0UmV2aWV3cyh0aGlzLnJlc3BvbnNlRGF0YT8uaXRlbUlkKTtcclxuICB9XHJcbiAgZ2V0UmV2aWV3cyhwcm9kdWN0SWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRSZXZpZXdzQnlQcm9kdWN0SWQocHJvZHVjdElkLCB0aGlzLnBhZ2VOdW1iZXIpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnJldmlld3NEYXRhID0gWy4uLnRoaXMucmV2aWV3c0RhdGEsIC4uLnJlc3BvbnNlPy5kYXRhPy51c2VyUmV2aWV3c107XHJcbiAgICAgIHRoaXMucmF0aW5nQ291bnRzID0gcmVzcG9uc2U/LmRhdGE/Lm92ZXJhbGxSYXRpbmdDb3VudFxyXG4gICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6ICdFcnJvcicsIGRldGFpbDogZXJyb3I/LmVycm9yPy5tZXNzYWdlLCBrZXk6ICdSZXZpZXdzJyB9KTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXRQZXJjZW50YWdlKHJhdGluZzogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5yYXRpbmdDb3VudHMgJiYgdGhpcy5yYXRpbmdDb3VudHNbcmF0aW5nXSkge1xyXG4gICAgICBsZXQgcGVyY2VudCA9ICh0aGlzLnJhdGluZ0NvdW50c1tyYXRpbmddIC8gdGhpcy5yZXNwb25zZURhdGE/LnRvdGFsUmV2aWV3Q291bnQpICogMTAwXHJcbiAgICAgIHJldHVybiBwZXJjZW50LnRvRml4ZWQoMCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJzAnO1xyXG4gIH1cclxuXHJcbiAgZ2V0UkdCQShiZ0NvbG9yOiBhbnksIG9wYWNpdHk6IG51bWJlcik6IGFueSB7XHJcbiAgICBjb25zdCByID0gcGFyc2VJbnQoYmdDb2xvci5zbGljZSgxLCAzKSwgMTYpO1xyXG4gICAgY29uc3QgZyA9IHBhcnNlSW50KGJnQ29sb3Iuc2xpY2UoMywgNSksIDE2KTtcclxuICAgIGNvbnN0IGIgPSBwYXJzZUludChiZ0NvbG9yLnNsaWNlKDUsIDcpLCAxNik7XHJcbiAgICByZXR1cm4gYHJnYmEoJHtyfSwgJHtnfSwgJHtifSwgJHtvcGFjaXR5IC8gMTAwfSlgO1xyXG4gIH1cclxuXHJcbiAgc2hvd0RldGFpbFJldmlldyhyZXZpZXc6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFJldmlldyA9IHJldmlld1xyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29wZW5SZXZpZXdEZXRhaWwnKT8uY2xpY2soKVxyXG4gIH1cclxuICBnZXQgc3R5bGVzTGF5b3V0KCkge1xyXG4gICAgcmV0dXJuIHsgLi4udGhpcy5zdHlsZXM/LmxheW91dCB9IGFzIExheU91dE1vZGVsO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxyXG4gIDxwLXRvYXN0IHBvc2l0aW9uPVwiYm90dG9tLXJpZ2h0XCIgW2Jhc2VaSW5kZXhdPVwiMTAwMDAwMDAwMDBcIiBbYXV0b1pJbmRleF09XCJ0cnVlXCIga2V5PVwid2lzaGxpc3RcIlxyXG4gICAgW3Nob3dUcmFuc2Zvcm1PcHRpb25zXT1cImlzTW9iaWxlID8gJ3RyYW5zbGF0ZVkoLTEwMCUpJyA6ICcnXCI+PC9wLXRvYXN0PlxyXG4gIDxwLXRvYXN0IHBvc2l0aW9uPVwiYm90dG9tLXJpZ2h0XCIgW2Jhc2VaSW5kZXhdPVwiMTAwMDAwMDAwMDBcIiBbYXV0b1pJbmRleF09XCJ0cnVlXCJcclxuICAgIFtzaG93VHJhbnNmb3JtT3B0aW9uc109XCJpc01vYmlsZSA/ICd0cmFuc2xhdGVZKC0xMDAlKScgOiAnJ1wiPjwvcC10b2FzdD5cclxuICA8cC10b2FzdCBwb3NpdGlvbj1cImJvdHRvbS1yaWdodFwiIFtiYXNlWkluZGV4XT1cIjEwMDAwMDAwMDAwXCIgW2F1dG9aSW5kZXhdPVwidHJ1ZVwiIGtleT1cIlZpZGVvIENhbGwgU2NoZWR1bGVcIlxyXG4gICAgW3Nob3dUcmFuc2Zvcm1PcHRpb25zXT1cImlzTW9iaWxlID8gJ3RyYW5zbGF0ZVkoLTEwMCUpJyA6ICcnXCI+PC9wLXRvYXN0PlxyXG4gIDxwLXRvYXN0IHBvc2l0aW9uPVwiYm90dG9tLXJpZ2h0XCIgW2Jhc2VaSW5kZXhdPVwiMTAwMDAwMDAwMDBcIiBbYXV0b1pJbmRleF09XCJ0cnVlXCIga2V5PVwiVmlkZW8gU2NoZWR1bGluZ1wiXHJcbiAgICBbc2hvd1RyYW5zZm9ybU9wdGlvbnNdPVwiaXNNb2JpbGUgPyAndHJhbnNsYXRlWSgtMTAwJSknIDogJydcIj48L3AtdG9hc3Q+XHJcbiAgPHNlY3Rpb24gY2xhc3M9XCJ0b3RhbC1jb250YWluZXJcIiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9CYWNrZ3JvdW5kXT1cInN0eWxlcz8uYmFja2dyb3VuZFwiXHJcbiAgICBzaW1wb0hvdmVyIChob3ZlcmluZyk9XCJzaG93RWRpdFRhYnMoJGV2ZW50KVwiIFthdHRyLnN0eWxlXT1cImN1c3RvbUNsYXNzXCI+XHJcblxyXG4gICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIiBjbGFzcz1cInNwZWVkZGlhbC1saW5lYXJcIiAqbmdJZj1cImlzTW9iaWxlXCI+XHJcbiAgICAgIDxwLXNwZWVkRGlhbCBbbW9kZWxdPVwiaXRlbXNcIiBkaXJlY3Rpb249XCJ1cFwiIFtidXR0b25TdHlsZV09XCJ7J2JvcmRlci1yYWRpdXMnOiAnNTAlJywgJ2hlaWdodCc6ICczMHB4J31cIiAvPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8c2VjdGlvbiBjbGFzcz1cImNvbnRhaW5lclwiIFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb0FuaW1hdGlvbl09XCJzdHlsZXM/LmFuaW1hdGlvblwiIFtzcGFjaW5nSG9yaXpvbnRhbF09XCJzdHlsZXNMYXlvdXRcIiAgW3NpbXBvTGF5b3V0XT1cInN0eWxlcz8ubGF5b3V0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkaXNwbGF5LW5vbmVcIj48YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgc3R5bGU9XCJ0ZXh0LWRlY29yYXRpb246IG5vbmU7IGNvbG9yOiAjMDI2N0MxXCJcclxuICAgICAgICAgIChjbGljayk9XCJyb3V0ZVRvSG9tZSgpXCI+SG9tZTwvYT4gL1xyXG4gICAgICAgIDxzcGFuPnt7IHJlc3BvbnNlRGF0YT8ubmFtZSB8IHRpdGxlY2FzZSB9fTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgaC0xMDAgdy0xMDBcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDI1cHg7aGVpZ2h0OiAxMDAlO1wiIGNsYXNzPVwiYWJvdmUtaGVpZ2h0XCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7J21pbi1oZWlnaHQ6IDk1dmgnOiBpc01vYmlsZSwgJ21heC13aWR0aDogOTV2aCc6ICFpc01vYmlsZX1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTYgY29sLTEyIGgtMTAwXCIgY2xhc3M9XCJoZWlnaHRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kLWltZy1ibG9ja1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiSW1hZ2VTZWN0aW9uXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTQgY29sLTEyIGgtMTAwIHByb2R1Y3QtZGV0YWlsXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNNb2JpbGVcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInZhcmlhbnRzXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiUHJvZHVjdERlc2NcIj48L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc01vYmlsZVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidmFyaWFudHNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTW9iaWxlXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJBY3Rpb25CdG5cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9TaG93SW5KZXdlbGxlcnlcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIkRlbGl2ZXJ5U2VjdGlvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVjb21Db25maWdzPy52aWRlb0NhbGxFbmFibGVkXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ2aWRlb0NhbGxTY2hlZHVsZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVjb21Db25maWdzPy5icmFuZFByb21pc2VFbmFibGVkXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJicmFuZGluZ1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGVzY3JpcHRvcnNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInByb2R1Y3QtZGVzYyBib2R5LWxhcmdlIGQtYmxvY2tcIiAqbmdJZj1cInJlc3BvbnNlRGF0YT8uYnJpZWZcIlxyXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cInJlc3BvbnNlRGF0YS5icmllZlwiPjwvZGl2PiAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LXNrdVwiPlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCJyZXNwb25zZURhdGE/Lml0ZW1JbnZlbnRvcnlcIj5TS1UgOiB7e3Jlc3BvbnNlRGF0YS5pdGVtSW52ZW50b3J5Py5vcGVuaW5nU3RvY2t9fTwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2XHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zZURhdGE/Lml0ZW1DYXRlZ29yaXNhdGlvbj8uaXRlbUNhdGVnb3JpZXMgJiYgKHJlc3BvbnNlRGF0YT8uaXRlbUNhdGVnb3Jpc2F0aW9uPy5pdGVtQ2F0ZWdvcmllcz8ubGVuZ3RoIHx8IDApID4gMFwiPlxyXG4gICAgICAgICAgICAgIENhdGVnb3J5IDogPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJnb1RvRmlsdGVyKGNhdC5yZWZOYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY2F0IG9mIHJlc3BvbnNlRGF0YT8uaXRlbUNhdGVnb3Jpc2F0aW9uPy5pdGVtQ2F0ZWdvcmllcztsZXQgaWR4ID0gaW5kZXhcIj57e2NhdC5yZWZOYW1lIHxcclxuICAgICAgICAgICAgICAgIHRpdGxlY2FzZX19IDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoaWR4KzEpICE9IHJlc3BvbnNlRGF0YT8uaXRlbUNhdGVnb3Jpc2F0aW9uPy5pdGVtQ2F0ZWdvcmllcz8ubGVuZ3RoXCI+LDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvYT48L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIocmVzcG9uc2VEYXRhPy5pdGVtQ2F0ZWdvcmlzYXRpb24/LnByb2R1Y3RUYWdzPy5sZW5ndGggfHwgMCkgPiAwXCI+VGFncyA6IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdGFnIG9mIHJlc3BvbnNlRGF0YT8uaXRlbUNhdGVnb3Jpc2F0aW9uPy5wcm9kdWN0VGFnc1wiPnt7dGFnLnRhZ05hbWV9fSxcclxuICAgICAgICAgICAgICA8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIlNvY2lhbEljb25zXCI+PC9uZy1jb250YWluZXI+IC0tPlxyXG4gICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiUmV2aWV3U2VjdGlvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiUmV2aWV3c1NlY3Rpb25cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3NlY3Rpb24+XHJcbiAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZWxhdGVkUHJvZHVjdERhdGE/Lmxlbmd0aFwiPlxyXG4gICAgICA8c2ltcG8tZmVhdHVyZWQtcHJvZHVjdHMgW2VkaXRdPVwiZmFsc2VcIiBbZGF0YV09XCJmZWF0dXJlUHJvZHVjdERhdGFcIiBbcmVzcG9uc2VEYXRhXT1cInJlbGF0ZWRQcm9kdWN0RGF0YVwiXHJcbiAgICAgICAgW2lzUmVsYXRlZFByb2R1Y3RdPVwidHJ1ZVwiIChjaGFuZ2VEZXRhaWxQcm9kdWN0KT1cImNoYW5nZVByb2R1Y3QoJGV2ZW50KVwiPjwvc2ltcG8tZmVhdHVyZWQtcHJvZHVjdHM+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZWNlbnRWaWV3SXRlbUxpc3Q/Lmxlbmd0aFwiPlxyXG4gICAgICA8c2ltcG8tZmVhdHVyZWQtcHJvZHVjdHMgW2VkaXRdPVwiZmFsc2VcIiBbZGF0YV09XCJyZWNlbnRWaWV3ZWREYXRhXCIgW3Jlc3BvbnNlRGF0YV09XCJyZWNlbnRWaWV3SXRlbUxpc3RcIlxyXG4gICAgICAgIFtpc1JlbGF0ZWRQcm9kdWN0XT1cInRydWVcIj48L3NpbXBvLWZlYXR1cmVkLXByb2R1Y3RzPlxyXG4gICAgPC9uZy1jb250YWluZXI+IC0tPlxyXG4gICAgPCEtLSA8bmctY29udGFpbmVyPlxyXG4gICAgICA8c2ltcG8tY3VzdG9tZXItcmV2aWV3IFtkYXRhXT1cImRhdGFcIj48L3NpbXBvLWN1c3RvbWVyLXJldmlldz5cclxuICAgIDwvbmctY29udGFpbmVyPiAtLT5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3R5bGVzPy5kZXZpZGVyPy5kaXNwbGF5XCI+XHJcbiAgICAgIDxzaW1wby1zdmctZGl2aWRlciBbZGl2aWRlclR5cGVdPVwic3R5bGVzPy5kZXZpZGVyPy5kZXZpZGVyVHlwZVwiXHJcbiAgICAgICAgW2NvbG9yXT1cIm5leHRDb21wb25lbnRDb2xvcj8uY29sb3JcIj48L3NpbXBvLXN2Zy1kaXZpZGVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICAgIDxzaW1wby1ob3Zlci1lbGVtZW50cyBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCIgW2VkaXRPcHRpb25zXT1cImVkaXRcIj48L3NpbXBvLWhvdmVyLWVsZW1lbnRzPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0RlbGV0ZVwiIFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZGVsZXRlfVwiPlxyXG4gICAgICA8c2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiPjwvc2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L3NlY3Rpb24+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbjxuZ3gtc2tlbGV0b24tbG9hZGVyICpuZ0lmPVwiaXNMb2FkaW5nXCIgY291bnQ9XCIxXCIgYXBwZWFyYW5jZT1cImNpcmNsZVwiIFt0aGVtZV09XCJ7XHJcbiAgd2lkdGg6ICcxMDAlJyxcclxuICBoZWlnaHQ6ICc0MHZoJyxcclxuICAnYm9yZGVyLXJhZGl1cyc6ICcxMHB4JyxcclxuICAncG9zaXRpb24nOiAncmVsYXRpdmUnLFxyXG4gICdyaWdodCc6ICc1cHgnXHJcbn1cIj5cclxuPC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxyXG5cclxuXHJcbjxkaXYgY2xhc3M9XCJtb2JpbGUtZm9vdGVyXCI+XHJcbiAgPGRpdiBjbGFzcz1cImljb25zXCI+XHJcbiAgICA8ZGl2IChjbGljayk9XCJnb1RvQ2FydCgpXCI+XHJcbiAgICAgIDxtYXQtaWNvbj5zaG9wcGluZ19jYXJ0PC9tYXQtaWNvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdj5cclxuICAgICAgPG1hdC1pY29uIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgKGNsaWNrKT1cImFkZFRvRmF2b3VyaXRlKClcIlxyXG4gICAgICAgICpuZ0lmPVwiIWlzSXRlbUFzRmF2b3JpdGVcIj5mYXZvcml0ZV9ib3JkZXI8L21hdC1pY29uPlxyXG4gICAgICA8bWF0LWljb24gW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAoY2xpY2spPVwicmVtb3ZlVG9GYXZvdXJpdGUoKVwiXHJcbiAgICAgICAgKm5nSWY9XCJpc0l0ZW1Bc0Zhdm9yaXRlXCI+ZmF2b3JpdGU8L21hdC1pY29uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGJ1dHRvbiBjbGFzcz1cIm91dC1vZi1zdG9jayB0ZXh0LWNlbnRlclwiICpuZ0lmPVwiaXNJdGVtT3V0T2ZTdG9ja1wiIFthcHBCdXR0b25FZGl0b3JdPVwiZWRpdCA/PyBmYWxzZVwiXHJcbiAgICBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbYnV0dG9uU3R5bGVdPVwiZ2V0QnV0dG9uU3R5bGUoMClcIiBbYnV0dG9uSWRdPVwiZ2V0QnV0dG9uSWQoMClcIiBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCJcclxuICAgIFtpZF09XCJkYXRhPy5pZCtnZXRCdXR0b25JZCgwKVwiPk91dCBvZlxyXG4gICAgU3RvY2s8L2J1dHRvbj5cclxuICA8ZGl2IGNsYXNzPVwicXVhbnRpdHlcIiAqbmdJZj1cInJlc3BvbnNlRGF0YT8ucXVhbnRpdHkgJiYgIWVjb21Db25maWdzPy52aWRlb0NhbGxFbmFibGVkXCJcclxuICAgIFtzdHlsZS5ib3JkZXJDb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicGx1c1wiIChjbGljayk9XCJhZGRUb0NhcnQoJ1NVQlNUUkFDVCcpXCIgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj4tPC9kaXY+XHJcbiAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDUwcHg7XCIgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBmY1wiXHJcbiAgICAgIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+e3tyZXNwb25zZURhdGE/LnF1YW50aXR5fX08L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtaW51c1wiIChjbGljayk9XCJhZGRUb0NhcnQoJ0FERCcpXCIgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj4rPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGJ1dHRvbiAqbmdJZj1cInJlc3BvbnNlRGF0YT8ucXVhbnRpdHkgJiYgZWNvbUNvbmZpZ3M/LnZpZGVvQ2FsbEVuYWJsZWRcIiBjbGFzcz1cInNlbmQtYnRuIHctMTAwXCJcclxuICAgIFthcHBCdXR0b25FZGl0b3JdPVwiZWRpdCA/PyBmYWxzZVwiIHNpbXBvQnV0dG9uRGlyZWN0aXZlIFtidXR0b25TdHlsZV09XCJnZXRCdXR0b25TdHlsZSgwKVwiIFtidXR0b25JZF09XCJnZXRCdXR0b25JZCgwKVwiXHJcbiAgICBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCIgW2lkXT1cImRhdGE/LmlkK2dldEJ1dHRvbklkKDApXCIgKGNsaWNrKT1cIiFlZGl0ID8gb3BlbkRpYWxvZ0JveChkaWFsb2dCb3gpIDogJydcIj5cclxuICAgIDxtYXQtaWNvbj52aWRlb2NhbTwvbWF0LWljb24+TElWRSBWSURFTyBDQUxMPC9idXR0b24+XHJcbiAgPGRpdiAqbmdJZj1cIiFyZXNwb25zZURhdGE/LnF1YW50aXR5ICYmICFpc0l0ZW1PdXRPZlN0b2NrXCIgY2xhc3M9XCJ3LTc1XCI+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwic2VuZC1idG4gdy0xMDBcIiBbYXBwQnV0dG9uRWRpdG9yXT1cImVkaXQgPz8gZmFsc2VcIiBzaW1wb0J1dHRvbkRpcmVjdGl2ZVxyXG4gICAgICBbYnV0dG9uU3R5bGVdPVwiZ2V0QnV0dG9uU3R5bGUoMClcIiBbYnV0dG9uSWRdPVwiZ2V0QnV0dG9uSWQoMClcIiBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCJcclxuICAgICAgW2lkXT1cImRhdGE/LmlkK2dldEJ1dHRvbklkKDApXCJcclxuICAgICAgKGNsaWNrKT1cIiFlZGl0ID8gYWRkVG9DYXJ0KCkgOiAnJ1wiPjxtYXQtaWNvbj5zaG9wcGluZ19jYXJ0PC9tYXQtaWNvbj57e2RhdGE/LmFjdGlvbj8uYnV0dG9ucz8uWzBdPy5jb250ZW50Py5sYWJlbH19PC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNSZXZpZXdTZWN0aW9uPlxyXG4gIDxkaXYgY2xhc3M9XCJyZXZpZXctc2VjXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5DdXN0b21lciBSZXZpZXc8L2Rpdj5cclxuICAgIDxwLXJhdGluZyBbY2FuY2VsXT1cImZhbHNlXCIgW3JlYWRvbmx5XT1cInRydWVcIiBbKG5nTW9kZWwpXT1cInRvdGFsUmV2aWV3XCIgLz5cclxuICAgIDxzcGFuPkJlIHRoZSBmaXJzdCB0byB3cml0ZSBhIHJldmlldzwvc3Bhbj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJtdC0zXCIgc2ltcG9CdXR0b25EaXJlY3RpdmUgW2lkXT1cImJ1dHRvbklkXCIgW2J1dHRvblN0eWxlXT1cImJ1dHRvbj8uc3R5bGVzXCJcclxuICAgICAgW2JhY2tncm91bmRJbmZvXT1cInN0eWxlcz8uYmFja2dyb3VuZFwiIFtjb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcclxuICAgICAgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAoY2xpY2spPVwic2hvd1JldmlldyA9ICFzaG93UmV2aWV3XCI+e3sgIXNob3dSZXZpZXcgPyAnQWRkXHJcbiAgICAgIFJldmlldycgOiAnQ2FuY2VsIFJldmlldyd9fTwvYnV0dG9uPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dSZXZpZXdcIj5cclxuICAgICAgPGhyIC8+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLXJldmlld1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPldyaXRlIGEgcmV2aWV3PC9kaXY+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWNvbmRhcnktdGV4dFwiPlJBVElORzwvc3Bhbj5cclxuICAgICAgICA8cC1yYXRpbmcgWyhuZ01vZGVsKV09XCJwcm9kdWN0UmV2aWV3XCIgW2NhbmNlbF09XCJmYWxzZVwiIFtyZWFkb25seV09XCJmYWxzZVwiIC8+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2Vjb25kYXJ5LXRleHRcIj5SZXZpZXcgVGl0bGU8L3NwYW4+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIkdpdmUgeW91ciByZXZpZXcgYSB0aXRsZVwiIFsobmdNb2RlbCldPVwicmV2aWV3VGl0bGVcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWNvbmRhcnktdGV4dFwiPlJldmlldzwvc3Bhbj5cclxuICAgICAgICAgIDx0ZXh0YXJlYSBwbGFjZWhvbGRlcj1cIldyaXRlIHlvdXIgY29tbWVudHMgaGVyZVwiIFsobmdNb2RlbCldPVwicmV2aWV3RGVzY3JpcHRpb25cIj48L3RleHRhcmVhPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpZXctYWN0aW9uLWJ0blwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBbc3R5bGUuYm9yZGVyQ29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgKGNsaWNrKT1cInNob3dSZXZpZXcgPSBmYWxzZVwiPkNhbmNlbCByZXZpZXc8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gc2ltcG9CdXR0b25EaXJlY3RpdmUgW2lkXT1cImJ1dHRvbklkXCIgW2J1dHRvblN0eWxlXT1cImJ1dHRvbj8uc3R5bGVzXCJcclxuICAgICAgICAgICAgW2JhY2tncm91bmRJbmZvXT1cInN0eWxlcz8uYmFja2dyb3VuZFwiIFtjb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFkZFByb2R1Y3RSZXZpZXcoKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwcm9kdWN0UmV2aWV3ID09IDAgJiYgcmV2aWV3VGl0bGU/Lmxlbmd0aCA9PSAwICYmIHJldmlld0Rlc2NyaXB0aW9uPy5sZW5ndGggPT0gMFwiPlN1Ym1pdFxyXG4gICAgICAgICAgICByZXZpZXc8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNTb2NpYWxJY29ucz5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXN0YXJ0IGFsaWduLWl0ZW1zLWxnLWNlbnRlciBmbGV4LWNvbHVtbiBmbGV4LWxnLXJvdyBnYXAtbGctMCBnYXAtM1wiXHJcbiAgICAgIFtuZ0NsYXNzXT1cImRhdGE/LmNvbnRlbnQ/LnNvY2lhbExpbmtzPy5kaXNwbGF5ID8gJ2p1c3RpZnktY29udGVudC1iZXR3ZWVuJyA6ICdqdXN0aWZ5LWNvbnRlbnQtZW5kJ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTBcIiAqbmdJZj1cImRhdGE/LmNvbnRlbnQ/LnNvY2lhbExpbmtzPy5kaXNwbGF5XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhPy5jb250ZW50Py5zb2NpYWxMaW5rcz8uY2hhbm5lbHNcIj5cclxuICAgICAgICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7bWFyZ2luLXJpZ2h0OiAxMHB4O1wiPlxyXG4gICAgICAgICAgICA8c2ltcG8tc29jaWEtaWNvbnMgW3NvY2lhbEljb25EYXRhXT1cIml0ZW1cIiBbY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiXHJcbiAgICAgICAgICAgICAgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiPjwvc2ltcG8tc29jaWEtaWNvbnM+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjQWN0aW9uQnRuPlxyXG4gIDxkaXYgY2xhc3M9XCJidXR0b24tcGFyZW50XCI+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwib3V0LW9mLXN0b2NrIHRleHQtY2VudGVyXCIgKm5nSWY9XCJpc0l0ZW1PdXRPZlN0b2NrXCIgW2FwcEJ1dHRvbkVkaXRvcl09XCJlZGl0ID8/IGZhbHNlXCJcclxuICAgICAgc2ltcG9CdXR0b25EaXJlY3RpdmUgW2J1dHRvblN0eWxlXT1cImdldEJ1dHRvblN0eWxlKDApXCIgW2J1dHRvbklkXT1cImdldEJ1dHRvbklkKDApXCIgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiXHJcbiAgICAgIFtpZF09XCJkYXRhPy5pZCtnZXRCdXR0b25JZCgwKVwiPk91dCBvZlxyXG4gICAgICBTdG9jazwvYnV0dG9uPlxyXG4gICAgPGRpdiBjbGFzcz1cInF1YW50aXR5XCIgKm5nSWY9XCJyZXNwb25zZURhdGE/LnF1YW50aXR5ICYmICFlY29tQ29uZmlncz8udmlkZW9DYWxsRW5hYmxlZFwiXHJcbiAgICAgIFtzdHlsZS5ib3JkZXJDb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwbHVzXCIgKGNsaWNrKT1cImFkZFRvQ2FydCgnU1VCU1RSQUNUJylcIiBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPi08L2Rpdj5cclxuICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOiA1MHB4O1wiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZmNcIlxyXG4gICAgICAgIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+e3tyZXNwb25zZURhdGE/LnF1YW50aXR5fX08L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1pbnVzXCIgKGNsaWNrKT1cImFkZFRvQ2FydCgnQUREJylcIiBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPis8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGJ1dHRvbiAqbmdJZj1cInJlc3BvbnNlRGF0YT8ucXVhbnRpdHkgJiYgZWNvbUNvbmZpZ3M/LnZpZGVvQ2FsbEVuYWJsZWRcIiBjbGFzcz1cInNlbmQtYnRuIHctMTAwXCJcclxuICAgICAgW2FwcEJ1dHRvbkVkaXRvcl09XCJlZGl0ID8/IGZhbHNlXCIgc2ltcG9CdXR0b25EaXJlY3RpdmUgW2J1dHRvblN0eWxlXT1cImdldEJ1dHRvblN0eWxlKDApXCJcclxuICAgICAgW2J1dHRvbklkXT1cImdldEJ1dHRvbklkKDApXCIgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiIFtpZF09XCJkYXRhPy5pZCtnZXRCdXR0b25JZCgwKVwiXHJcbiAgICAgIChjbGljayk9XCIhZWRpdCA/IG9wZW5EaWFsb2dCb3goZGlhbG9nQm94KSA6ICcnXCI+XHJcbiAgICAgIDxtYXQtaWNvbj52aWRlb2NhbTwvbWF0LWljb24+TElWRSBWSURFTyBDQUxMPC9idXR0b24+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiKCFyZXNwb25zZURhdGE/LnF1YW50aXR5ICYmICFpc0l0ZW1PdXRPZlN0b2NrKSAmJiBJc0Vjb21tZXJjZVwiIGNsYXNzPVwidy03NVwiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwic2VuZC1idG4gdy0xMDBcIiBbYXBwQnV0dG9uRWRpdG9yXT1cImVkaXQgPz8gZmFsc2VcIiBzaW1wb0J1dHRvbkRpcmVjdGl2ZVxyXG4gICAgICAgIFtidXR0b25TdHlsZV09XCJnZXRCdXR0b25TdHlsZSgwKVwiIFtidXR0b25JZF09XCJnZXRCdXR0b25JZCgwKVwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIlxyXG4gICAgICAgIFtpZF09XCJkYXRhPy5pZCtnZXRCdXR0b25JZCgwKVwiXHJcbiAgICAgICAgKGNsaWNrKT1cIiFlZGl0ID8gYWRkVG9DYXJ0KCkgOiAnJ1wiPjxtYXQtaWNvbj5zaG9wcGluZ19jYXJ0PC9tYXQtaWNvbj57e2RhdGE/LmFjdGlvbj8uYnV0dG9ucz8uWzBdPy5jb250ZW50Py5sYWJlbH19PC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCIoIXJlc3BvbnNlRGF0YT8ucXVhbnRpdHkgJiYgIWlzSXRlbU91dE9mU3RvY2spICYmICFJc0Vjb21tZXJjZVwiIGNsYXNzPVwidy03NVwiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwic2VuZC1idG4gdy0xMDBcIiBbYXBwQnV0dG9uRWRpdG9yXT1cImVkaXQgPz8gZmFsc2VcIiBzaW1wb0J1dHRvbkRpcmVjdGl2ZVxyXG4gICAgICAgIFtidXR0b25TdHlsZV09XCJnZXRCdXR0b25TdHlsZSgwKVwiIFtidXR0b25JZF09XCJnZXRCdXR0b25JZCgwKVwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIlxyXG4gICAgICAgIFtpZF09XCJkYXRhPy5pZCtnZXRCdXR0b25JZCgwKVwiIChjbGljayk9XCJyYWlzZUxlYWQoKVwiPjxtYXQtaWNvbiBzdHlsZT1cImhlaWdodDoxNHB4ICFpbXBvcnRhbnRcIj5cclxuICAgICAgICAgIG1lc3NhZ2U8L21hdC1pY29uPk5vdGlmeSBNZTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmF2b3VyaXRlIGJvcmRlci1zb2xpZFwiICpuZ0lmPVwiSXNFY29tbWVyY2VcIiBbc3R5bGUuYm9yZGVyQ29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPlxyXG4gICAgICA8bWF0LWljb24gW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAoY2xpY2spPVwiYWRkVG9GYXZvdXJpdGUoKVwiXHJcbiAgICAgICAgKm5nSWY9XCIhaXNJdGVtQXNGYXZvcml0ZVwiPmZhdm9yaXRlX2JvcmRlcjwvbWF0LWljb24+XHJcbiAgICAgIDxtYXQtaWNvbiBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIChjbGljayk9XCJyZW1vdmVUb0Zhdm91cml0ZSgpXCJcclxuICAgICAgICAqbmdJZj1cImlzSXRlbUFzRmF2b3JpdGVcIj5mYXZvcml0ZTwvbWF0LWljb24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGFyZS1wcm9kdWN0XCI+XHJcbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInNoYXJlLWljb25cIiAoY2xpY2spPVwic2hhcmVQcm9kdWN0KClcIiBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiXHJcbiAgICAgICAgW3N0eWxlLmJvcmRlckNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5zaGFyZTwvbWF0LWljb24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdmFyaWFudHM+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGE/LnN0eWxlcz8uY3VzdG9taXphdGlvbiA9PSAnU3R5bGUxJ1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdmFyaWVudCBvZiB2YXJpZW50cyB8IGtleXZhbHVlXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0xNVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2YXJpZW50LWtleVwiPnt7dmFyaWVudC5rZXl9fTwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBzdHlsZT1cImdhcDogNXB4O1wiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdmFyaWVudFZhbHVlIG9mIHZhcmllbnQudmFsdWVcIiBjbGFzcz1cInZhcmllbnQtdGFnXCJcclxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInNlbGVjdGVkVmFyaWVudC5nZXQodmFyaWVudC5rZXkpID09IHZhcmllbnRWYWx1ZSA/ICd3aGl0ZScgOiBkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJzZWxlY3RlZFZhcmllbnQuZ2V0KHZhcmllbnQua2V5KSA9PSB2YXJpZW50VmFsdWUgPyBkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yIDogJydcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VmFyaWVudCh2YXJpZW50LmtleSwgdmFyaWVudFZhbHVlKVwiPnt7dmFyaWVudFZhbHVlIHwgdGl0bGVjYXNlfX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YT8uc3R5bGVzPy5jdXN0b21pemF0aW9uID09ICdTdHlsZTInICYmIHNlbGVjdGVkVmFyaWVudC5zaXplID4gMFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC0yIHN0eWxlMi1jb250YWluZXIgdy0xMDBcIiBbc3R5bGUuYm9yZGVyQ29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRWYXJpZW50IHwga2V5dmFsdWVcIiBjbGFzcz1cInB4LTMgcHktMiB2YXJpZW50LWl0ZW1cIlxyXG4gICAgICAgICAgW2NsYXNzXT1cImdldENsYXNzKHNlbGVjdGVkVmFyaWVudClcIiBbc3R5bGUuYm9yZGVyQ29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZhcmlhbnQtaGVhZFwiPnt7aXRlbS5rZXkgfCB0aXRsZWNhc2V9fTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZhcmlhbnQtdmFsdWUgdGV4dC1zdGFydCBmdy02MDBcIj5cclxuICAgICAgICAgICAge3tpdGVtLnZhbHVlIHxcclxuICAgICAgICAgICAgdGl0bGVjYXNlfX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgcC0wXCIgW2NsYXNzXT1cImdldENsYXNzKHNlbGVjdGVkVmFyaWVudClcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tdGV4dCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgaC0xMDAgcC0yXCIgZGF0YS1icy10b2dnbGU9XCJvZmZjYW52YXNcIlxyXG4gICAgICAgICAgICBkYXRhLWJzLXRhcmdldD1cIiNvZmZjYW52YXNSaWdodFZhcmlhbnRcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcclxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImdldFRleHRDb2xvcihkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yKVwiPkNVU1RPTUlTRVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI1Byb2R1Y3REZXNjPlxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW5cIiBzdHlsZT1cIm1hcmdpbi10b3A6IDE1cHg7XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmF0aW5nIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0yIG1iLTNcIlxyXG4gICAgICAqbmdJZj1cInJlc3BvbnNlRGF0YT8uYXZlcmFnZVJhdGluZyAgJiYgcmVzcG9uc2VEYXRhPy50b3RhbFJldmlld0NvdW50XCJcclxuICAgICAgW3N0eWxlLmJvcmRlckNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJhdGluZy1ubyBteS0xXCI+e3socmVzcG9uc2VEYXRhPy5hdmVyYWdlUmF0aW5nIHwgbnVtYmVyOicxLjEtMicpfX3irZA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRvdGFsLXJhdGluZ3MgbXktMVwiPnt7cmVzcG9uc2VEYXRhPy50b3RhbFJldmlld0NvdW50ID09IDEgPyAnMSBSYXRpbmcnIDpcclxuICAgICAgICBnZXRSYXRpbmdzKHJlc3BvbnNlRGF0YT8udG90YWxSZXZpZXdDb3VudCkgKyBcIiBcIiArIFwicmF0aW5nc1wifX08L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInByaWNlXCIgW25nQ2xhc3NdPVwieydkaXNjb3VudC1wcmljZSc6IHJlc3BvbnNlRGF0YT8ucHJpY2U/LnNlbGxpbmdQcmljZX1cIlxyXG4gICAgICAgICpuZ0lmPVwicmVzcG9uc2VEYXRhPy5wcmljZT8uc2VsbGluZ1ByaWNlICYmIHJlc3BvbnNlRGF0YS5wcmljZS5zZWxsaW5nUHJpY2UgPiAwXCI+PHNwYW5cclxuICAgICAgICAgIFtpbm5lckhUTUxdPSdjdXJyZW5jeSc+PC9zcGFuPlxyXG4gICAgICAgIHt7cmVzcG9uc2VEYXRhPy5wcmljZT8uc2VsbGluZ1ByaWNlfX08L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInByaWNlXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7J3N0cmlrZS10aHJvdWdoJzogZ2V0RGlmZmVyZW5jZShyZXNwb25zZURhdGE/LnByaWNlPy5kaXNjb3VudGVkUHJpY2UsIHJlc3BvbnNlRGF0YT8ucHJpY2U/LnZhbHVlKSA+IDJ9XCJcclxuICAgICAgICAqbmdJZj1cImdldERpZmZlcmVuY2UocmVzcG9uc2VEYXRhPy5wcmljZT8uZGlzY291bnRlZFByaWNlLCByZXNwb25zZURhdGE/LnByaWNlPy52YWx1ZSkgPiAyXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubmVySFRNTF09J2N1cnJlbmN5Jz48L3NwYW4+XHJcbiAgICAgICAge3tyZXNwb25zZURhdGE/LnByaWNlPy52YWx1ZSB8IG51bWJlcjonMS4wLTAnfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0YXgtdGV4dFwiPihNUlAgSW5jbHVzaXZlIGFsbCB0YXhlcyk8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1sYXJnZSB0cmltLXRleHRcIiBjbGFzcz1cInByb2R1Y3QtaGVhZGluZ1wiPnt7cmVzcG9uc2VEYXRhPy5uYW1lfX08L2Rpdj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9TaG93SW5KZXdlbGxlcnlcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaXNjb3VudFwiPlxyXG4gICAgICA8cD5GbGF0IDMwJSBvZmYgb24gRGlhbW9uZCBQcmljZXM8L3A+XHJcbiAgICAgIDxwIGNsYXNzPVwib2ZmZXJcIj5PZmZlciBFeHBpcmVzIGluIDQgZGF5czwvcD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJpbmctc2l6ZS12aWRlb1wiPlxyXG4gICAgICA8cCBjbGFzcz1cInRleHRcIj5Ob3Qgc3VyZSBhYm91dCB0aGUgcmluZyBzaXplPzwvcD5cclxuICAgICAgPHAgY2xhc3M9XCJsZWFybi1ob3dcIiBkYXRhLXRvZ2dsZT1cIm1vZGFsXCIgZGF0YS10YXJnZXQ9XCIjZXhhbXBsZU1vZGFsXCI+TGVhcm4gSG93XHJcbiAgICAgICAgPG1hdC1pY29uPnBsYXlfY2lyY2xlX291dGxpbmU8L21hdC1pY29uPlxyXG4gICAgICA8L3A+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInByb2R1Y3QtZGVzYyBib2R5LWxhcmdlIGQtYmxvY2tcIiAqbmdJZj1cInJlc3BvbnNlRGF0YT8uYnJpZWZcIiBbaW5uZXJIVE1MXT1cInJlc3BvbnNlRGF0YS5icmllZlwiPjwvZGl2PlxyXG5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZGVzY3JpcHRvcnM+XHJcbiAgPGRpdiBjbGFzcz1cInJvdyBwcm9kLWRlc2NcIj5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LWhlYWRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXItdGV4dFwiICpuZ0lmPVwicmVzcG9uc2VEYXRhPy5kZXNjcmlwdG9yIHx8IHJlc3BvbnNlRGF0YT8ubWF0ZXJpYWxzXCI+UHJvZHVjdCBEZXRhaWxzPC9zcGFuPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZWJyZWFrdXAtYnRuIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAqbmdJZj1cInN1YkluZHVzdHJ5TmFtZSA9PSAnRWNvbW1lcmNlIEpld2VsbGVyeSdcIiBkYXRhLWJzLXRvZ2dsZT1cIm9mZmNhbnZhc1wiXHJcbiAgICAgICAgICBkYXRhLWJzLXRhcmdldD1cIiNvZmZjYW52YXNSaWdodFByaWNlQnJlYWt1cFwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIlxyXG4gICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImdldFRleHRDb2xvcihkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yKVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+IFBSSUNFIEJSRUFLVVBcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiAxMHB4O1wiIGNsYXNzPVwiYm9keS1sYXJnZSBicmllZi1kZXNjXCIgKm5nSWY9XCJyZXNwb25zZURhdGE/LmRlc2NyaXB0b3JcIlxyXG4gICAgICAgICAgW2lubmVySFRNTF09XCJyZXNwb25zZURhdGE/LmRlc2NyaXB0b3I/Lm5hbWVcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmNvbG9yXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3ViSW5kdXN0cnlOYW1lID09ICdFY29tbWVyY2UgSmV3ZWxsZXJ5J1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJqZXdlbGxlcnktdGFibGUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbGUgb2YgcmVzcG9uc2VEYXRhPy5tYXRlcmlhbHNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImpld2VsLWNvbnRhaW5lciBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImpld2VsLWhlYWRlclwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImdldEhlYWRlckNvbG9yKGVsZS5tYXRlcmlhbFR5cGUpXCI+XHJcbiAgICAgICAgICAgICAgICB7e2VsZS5tYXRlcmlhbFR5cGUgfCB0aXRsZWNhc2V9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbS0wIHctMTAwIGJyLXBcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJnZXRCYWNrZ3JvdW5kQ29sb3IoZWxlLm1hdGVyaWFsVHlwZSlcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBtZXRhbC1wdXJpdHlcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICBOZXQgV2VpZ2h0L0dyYW1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7ZWxlLnByaW1hcnlNYXRlcmlhbFdlaWdodCArIFwiIFwiICsgJ2dyYW1zJ319XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgbWV0YWwtcHVyaXR5XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgUHVyaXR5XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e2VsZS5tYXRlcmlhbFB1cml0eX19XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFByaWNlL0dyYW1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIOKCuXt7IGdldFByaWNlUGVyR3JhbShlbGUucHJpbWFyeU1hdGVyaWFsV2VpZ2h0LGVsZS5tYXRlcmlhbFByaWNlKSB8XHJcbiAgICAgICAgICAgICAgICAgICAgbnVtYmVyOicxLjItMid9fVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgVmFsdWVcclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIOKCuXt7ZWxlLm1hdGVyaWFsUHJpY2UgfCBudW1iZXI6JzEuMi0yJ319XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiamV3ZWwtY29udGFpbmVyIG10LTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImpld2VsLWhlYWRlclwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImdldEhlYWRlckNvbG9yKCdNYWtpbmcgQ2hhcmdlcycpXCI+XHJcbiAgICAgICAgICAgICAgTWFraW5nIENoYXJnZXNcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbS0wIHctMTAwIGJyLXBcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJnZXRCYWNrZ3JvdW5kQ29sb3IoJ01ha2luZyBDaGFyZ2VzJylcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIE5ldCBXZWlnaHRcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7cmVzcG9uc2VEYXRhPy5iYXNlV2VpZ2h0fX0gPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICBNYWtpbmcgQ2hhcmdlICVcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7cmVzcG9uc2VEYXRhPy5tYWtpbmdDaGFyZ2VQZXJjZW50YWdlfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgVmFsdWVcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgIOKCuXt7cmVzcG9uc2VEYXRhPy5qZXdlbHJ5UHJpY2VCcmVha3VwPy5tYWtpbmdDaGFyZ2VBbW91bnQgfCBudW1iZXI6JzEuMi0yJ319XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDwhLS0gPGRpdiBjbGFzcz1cInRhYi1ncm91cFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRhYlwiIGRhdGEtYnMtdG9nZ2xlPVwiY29sbGFwc2VcIiBocmVmPVwiI2NvbGxhcHNlRXhhbXBsZVwiID5EZXNjcmlwdGlvbjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiAxMHB4O1wiIGNsYXNzPVwiYm9keS1sYXJnZSBjb2xsYXBzZVwiIGlkPVwiY29sbGFwc2VFeGFtcGxlXCIgKm5nSWY9XCJyZXNwb25zZURhdGE/LmRlc2NyaXB0b3JcIlxyXG4gICAgICAgICAgW2lubmVySFRNTF09XCJyZXNwb25zZURhdGE/LmRlc2NyaXB0b3I/Lm5hbWVcIj48L2Rpdj4gLS0+XHJcbiAgPC9kaXY+XHJcblxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNJbWFnZVNlY3Rpb24+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF2YXJpZW50TG9hZGluZyAmJiAoaXNNb2JpbGUgfHwgZGF0YT8uc3R5bGVzPy5ncmlkU3R5bGUgPT0gJ1N0eWxlMScpXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW1nLWxpc3RcIiAqbmdJZj1cInNjcmVlbldpZHRoID4gNTAwXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGltZyBvZiBpdGVtSW1hZ2VzXCI+XHJcbiAgICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIG9uZXJyb3I9XCJ0aGlzLnNyYz0naHR0cHM6Ly9pLnBvc3RpbWcuY2MvaFBTMkpwVjAvbm8taW1hZ2UtYXZhaWxhYmxlLmpwZydcIiBbc3JjXT1cImltZy5pbWdVcmxcIlxyXG4gICAgICAgICAgYWx0PVwiXCIgY2xhc3M9XCJpbWdcIiAoY2xpY2spPVwiY2hhbmdlSW1nKGltZy5pbWdVcmwpXCIgW3NpbXBvQ29ybmVyXT1cInN0eWxlcz8uY29ybmVyc1wiXHJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyQ29sb3JdPVwiaW1nLmltZ1VybCA9PSBjdXJyZW50SW1nID8gZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvciA6ICd0cmFuc3BhcmVudCdcIj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJpdGVtLWltZ1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudEltZ1wiPlxyXG5cclxuICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cInNoYXJlLWljb25cIiAoY2xpY2spPVwic2hhcmVQcm9kdWN0KClcIj5zaGFyZTwvbWF0LWljb24+IC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNNb2JpbGVcIj5cclxuICAgICAgICAgIDxpbWcgW3NyY109XCJjdXJyZW50SW1nXCIgY2xhc3M9XCJpbWcgem9vbVwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlOyB3aWR0aDogMTAwJTtcIiBbc2ltcG9Db3JuZXJdPVwic3R5bGVzPy5jb3JuZXJzXCI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTW9iaWxlXCI+XHJcbiAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJjdXJyZW50SW1nXCIgYWx0PVwiXCIgW3NpbXBvQ29ybmVyXT1cInN0eWxlcz8uY29ybmVyc1wiIGNsYXNzPVwiem9vbVwiPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjdXJyZW50SW1nXCI+XHJcbiAgICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIHNyYz1cImh0dHBzOi8vaS5wb3N0aW1nLmNjL2hQUzJKcFYwL25vLWltYWdlLWF2YWlsYWJsZS5qcGdcIiBhbHQ9XCJcIlxyXG4gICAgICAgICAgW3NpbXBvQ29ybmVyXT1cInN0eWxlcz8uY29ybmVyc1wiPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImltZy1saXN0IHctMTAwXCIgKm5nSWY9XCJzY3JlZW5XaWR0aCA8PSA1MDBcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaW1nIG9mIGl0ZW1JbWFnZXNcIj5cclxuICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgb25lcnJvcj1cInRoaXMuc3JjPSdodHRwczovL2kucG9zdGltZy5jYy9oUFMySnBWMC9uby1pbWFnZS1hdmFpbGFibGUuanBnJ1wiIFtzcmNdPVwiaW1nLmltZ1VybFwiXHJcbiAgICAgICAgICBhbHQ9XCJcIiBjbGFzcz1cImltZyB6b29tXCIgKGNsaWNrKT1cImNoYW5nZUltZyhpbWcuaW1nVXJsKVwiXHJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyQ29sb3JdPVwiaW1nLmltZ1VybCA9PSBjdXJyZW50SW1nID8gZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvciA6ICd0cmFuc3BhcmVudCdcIj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF2YXJpZW50TG9hZGluZyAmJiAoIWlzTW9iaWxlICYmIGRhdGE/LnN0eWxlcz8uZ3JpZFN0eWxlID09ICdTdHlsZTInKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBoLTEwMCBtdC0wIHctMTAwXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtSW1hZ2VzPy5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBzcmM9XCJodHRwczovL2kucG9zdGltZy5jYy9oUFMySnBWMC9uby1pbWFnZS1hdmFpbGFibGUuanBnXCIgYWx0PVwiXCIgY2xhc3M9XCJpbWdcIlxyXG4gICAgICAgICAgW3NpbXBvQ29ybmVyXT1cInN0eWxlcz8uY29ybmVyc1wiIGNsYXNzPVwiY29sLTEyIGgtMTAwIHAtMFwiPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaW1nIG9mIGl0ZW1JbWFnZXNcIj5cclxuICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgb25lcnJvcj1cInRoaXMuc3JjPSdodHRwczovL2kucG9zdGltZy5jYy9oUFMySnBWMC9uby1pbWFnZS1hdmFpbGFibGUuanBnJ1wiIFtzcmNdPVwiaW1nLmltZ1VybFwiXHJcbiAgICAgICAgICBhbHQ9XCJcIiBjbGFzcz1cImltZyBjb2wtNiBoLTc1IHAtMSBzdHlsZS0yLWltZ1wiIChjbGljayk9XCJjaGFuZ2VJbWcoaW1nLmltZ1VybClcIiBbc2ltcG9Db3JuZXJdPVwic3R5bGVzPy5jb3JuZXJzXCJcclxuICAgICAgICAgIFtzdHlsZS5ib3JkZXJDb2xvcl09XCJpbWcuaW1nVXJsID09IGN1cnJlbnRJbWcgPyBkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yIDogJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgICBbY2xhc3MuaC0xMDBdPVwic2NyZWVuV2lkdGggPD0gNTAwXCIgW2NsYXNzLnctMTAwXT1cIml0ZW1JbWFnZXM/Lmxlbmd0aCA9PSAxXCJcclxuICAgICAgICAgIFtjbGFzcy5oLTEwMF09XCJpdGVtSW1hZ2VzPy5sZW5ndGggPT0gMVwiPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG5cclxuXHJcbiAgPGRpdiBjbGFzcz1cIml0ZW0taW1nXCIgKm5nSWY9XCJ2YXJpZW50TG9hZGluZ1wiPlxyXG4gICAgPG5neC1za2VsZXRvbi1sb2FkZXIgY291bnQ9XCIxXCIgYXBwZWFyYW5jZT1cImNpcmNsZVwiIFt0aGVtZV09XCJ7XHJcbiAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICAgIGhlaWdodDogJzEwMCUnLFxyXG4gICAgICAnYm9yZGVyLXJhZGl1cyc6ICcxMHB4JyxcclxuICAgICAgJ3Bvc2l0aW9uJzogJ3JlbGF0aXZlJyxcclxuICAgICAgJ3JpZ2h0JzogJzVweCdcclxuICAgIH1cIj5cclxuICAgIDwvbmd4LXNrZWxldG9uLWxvYWRlcj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYnJhbmRpbmc+XHJcbiAgPGRpdiBjbGFzcz1cInJvdyB3LTEwMFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnJhbmQgb2YgYnJhbmRQcm9taXNlc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBnLTJcIj5cclxuICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgb25lcnJvcj1cInRoaXMuc3JjPSdodHRwczovL2kucG9zdGltZy5jYy9oUFMySnBWMC9uby1pbWFnZS1hdmFpbGFibGUuanBnJ1wiXHJcbiAgICAgICAgICBbc3JjXT1cImJyYW5kPy5sb2dvVXJsXCIgYWx0PVwiXCIgY2xhc3M9XCJ3LWgtNDAgcC0wIGJyLTUwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJyYW5kLXRleHQgdy0xMDAgdGV4dC1jZW50ZXIgcHktMlwiPlxyXG4gICAgICAgICAge3ticmFuZD8udGl0bGUgfCB0aXRsZWNhc2V9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICN2aWRlb0NhbGxTY2hlZHVsZT5cclxuICA8IS0tICpuZ0lmPVwiZWNvbUNvbmZpZ3M/LnZpZGVvQ2FsbEVuYWJsZWRcIiAtLT5cclxuICA8bmctY29udGFpbmVyPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyB3LTEwMCB2aWRlby1jb250YWluZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC00IHZpZGVvLWNhbGwtaW1nXCI+XHJcbiAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2Qyejk0OTd4cDh4YjEyLmNsb3VkZnJvbnQubmV0L3Byb2QtaW1hZ2VzLzM1NTAwN2MxNzUzNjIwNzcyNjY2MTEyODktMjI5MjIxMDIzX3NtYWxsLmdpZlwiXHJcbiAgICAgICAgICBhbHQ9XCJcIiBjbGFzcz1cInctMTAwIGgtMTAwIFwiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC04IGFsaWduLWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZpZGVvLWhlYWQtdGV4dFwiPlxyXG4gICAgICAgICAgTGl2ZSBWaWRlbyBDYWxsXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0XCI+XHJcbiAgICAgICAgICBKb2luIGEgbGl2ZSB2aWRlbyBjYWxsIHdpdGggb3VyIGNvbnN1bHRhbnRzIHRvIHNlZSB5b3VyIGZhdm91cml0ZSBkZXNpZ25zIHVwIGNsb3NlIVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJzY2gtYnRuIHRleHQtY2VudGVyIGN1cnNvci1wb2ludGVyXCIgW2FwcEJ1dHRvbkVkaXRvcl09XCJlZGl0ID8/IGZhbHNlXCIgc2ltcG9CdXR0b25EaXJlY3RpdmVcclxuICAgICAgICAgIFtidXR0b25TdHlsZV09XCJnZXRCdXR0b25TdHlsZSgyKVwiIFtidXR0b25JZF09XCJnZXRCdXR0b25JZCgyKVwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIlxyXG4gICAgICAgICAgW2lkXT1cImRhdGE/LmlkK2dldEJ1dHRvbklkKDIpXCIgKGNsaWNrKT1cIiFlZGl0ID8gb3BlbkRpYWxvZ0JveChkaWFsb2dCb3gpIDogJydcIj5cclxuICAgICAgICAgIFNjaGVkdWxlIGEgVmlkZW8gQ2FsbFxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNEZWxpdmVyeVNlY3Rpb24+XHJcbiAgPGRpdiBjbGFzcz1cImRlbGl2ZXJ5LWNvbnRhaW5lclwiPlxyXG4gICAgPGgyIGNsYXNzPVwiZGVsaXZlcnktdGl0bGVcIj5EZWxpdmVyeSwgU3RvcmVzICYgVHJpYWw8L2gyPlxyXG5cclxuICAgIDwhLS0gTG9jYXRpb24gU2VjdGlvbiAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJsb2NhdGlvbi1zZWN0aW9uXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsb2NhdGlvbi1jb250YWluZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXHJcbiAgICAgICAgW3N0eWxlLmJvcmRlckNvbG9yXT1cInN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB3LTkwXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG14LTFcIj48bWF0LWljb25cclxuICAgICAgICAgICAgICBjbGFzcz1cImdwcyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5ncHNfZml4ZWQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwicG9zdGFsLWNvZGUtaW5wdXRcIiBwbGFjZWhvbGRlcj1cIkVudGVyIFBpbkNvZGVcIiBbKG5nTW9kZWwpXT1cInBpbmNvZGVcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGxvY2F0ZS1idG5cIiAoY2xpY2spPVwiZ2V0U3RvcmVEZXRhaWxzKClcIj57e3BpbmNvZGUgPyAnQ2hhbmdlJyA6ICdMb2NhdGUgbWUnfX08L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCIhaXNQaW5Db2RlXCIgc3R5bGU9XCJjb2xvcjogcmVkO1wiPlBpbiBjb2RlIG11c3QgYmUgNiBkaWdpdHMuPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgIDwhLS0gRnJlZSBEZWxpdmVyeSBTZWN0aW9uIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZGVsaXZlcnktc2VjdGlvblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImRlbGl2ZXJ5LWljb25cIj7wn46BPC9zcGFuPlxyXG5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGVsaXZlcnktdGV4dFwiICpuZ0lmPVwiZWNvbUNvbmZpZ3M/LmRlbGl2ZXJ5Q2hhcmdlcyA9PSAwXCI+RnJlZVxyXG4gICAgICAgICAgICBEZWxpdmVyeSBieSB7eyBzdG9yZURldGFpbHM/LmVzdGltYXRlZERlbGl2ZXJ5RGF0ZSB8IGRhdGU6J2QgTU1NJyB9fTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImRlbGl2ZXJ5LXRleHRcIiAqbmdJZj1cImVjb21Db25maWdzPy5kZWxpdmVyeUNoYXJnZXMgPiAwXCI+WW91clxyXG4gICAgICAgICAgICBPcmRlciB3aWxsXHJcbiAgICAgICAgICAgIERlbGl2ZXIgYnkge3sgc3RvcmVEZXRhaWxzPy5lc3RpbWF0ZWREZWxpdmVyeURhdGUgfCBkYXRlOidkIE1NTScgfX0gd2l0aCBhIERlbGl2ZXJ5IENoYXJnZSBvZlxyXG4gICAgICAgICAgICDigrkge3tlY29tQ29uZmlncz8uZGVsaXZlcnlDaGFyZ2VzIHwgbnVtYmVyOicxLjItMid9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIE5lYXJlc3QgU3RvcmUgU2VjdGlvbiAtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICpuZ0lmPVwic3RvcmVEZXRhaWxzPy5uZWFyYnlTdG9yZT8ubmFtZSAmJiBzdG9yZURldGFpbHM/Lm5lYXJieVN0b3JlPy5uYW1lPy5sZW5ndGggPiAwO2Vsc2UgZW1wdHlTdG9yZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdG9yZS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBzdG9yZS1pdGVtXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RvcmUtaWNvblwiPvCfj6o8L3NwYW4+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdG9yZS1kZXRhaWxzXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0b3JlLXRleHRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RvcmUtbGFiZWxcIj5OZWFyZXN0IFN0b3JlIC0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdG9yZS1uYW1lXCI+e3sgc3RvcmVEZXRhaWxzPy5uZWFyYnlTdG9yZT8ubmFtZSB8IHRpdGxlY2FzZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cInN0b3JlLWRpc3RhbmNlXCI+ICg0a20pPC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJhdmFpbGFiaWxpdHktc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXZhaWxhYmlsaXR5LWJhZGdlXCI+4o+wIEFWQUlMQUJMRSBCWSAyOCBKVU48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJvdGhlci1zdG9yZXMtdGV4dFwiPlxyXG4gICAgICAgICAgICAgIEFsc28gQXZhaWxhYmxlIGluIDxzcGFuIGNsYXNzPVwib3RoZXItc3RvcmVzLWxpbmtcIj4xOCBvdGhlciBzdG9yZXM8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciB3LTEwMFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZmluZC1zdG9yZS1idG4gdy0xMDBcIiBbYXBwQnV0dG9uRWRpdG9yXT1cImVkaXQgPz8gZmFsc2VcIiBzaW1wb0J1dHRvbkRpcmVjdGl2ZVxyXG4gICAgICAgICAgICAgIFtidXR0b25TdHlsZV09XCJnZXRCdXR0b25TdHlsZSgxKVwiIFtidXR0b25JZF09XCJnZXRCdXR0b25JZCgxKVwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIlxyXG4gICAgICAgICAgICAgIFtpZF09XCJkYXRhPy5pZCtnZXRCdXR0b25JZCgxKVwiIChjbGljayk9XCJvbkZpbmRJblN0b3JlKHN0b3JlRGV0YWlscz8ubmVhcmJ5U3RvcmU/LnN0b3JlSWQpXCI+RklORCBJTlxyXG4gICAgICAgICAgICAgIFNUT1JFPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjZW1wdHlTdG9yZT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGVsaXZlcnktc2VjdGlvblwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZWxpdmVyeS1pY29uXCI+8J+Pqjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZWxpdmVyeS10ZXh0XCI+Tm8gU3RvcmVzIGFyZSBhdmFpbGFibGU8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPCEtLSBUcnkgQXQgSG9tZSBTZWN0aW9uIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidHJ5LWhvbWUtc2VjdGlvblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtc3RhcnQgdHJ5LWhvbWUtaXRlbVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJob21lLWljb25cIj7wn4+gPC9zcGFuPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRyeS1ob21lLWRldGFpbHNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyeS1ob21lLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHJ5LWhvbWUtdGV4dFwiPlRyeSBBdCBIb21lPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnJlZS10ZXh0XCI+IChJdCdzIEZyZWUpPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhvbWUtYXBwb2ludG1lbnQtdGV4dFwiPkhvbWUgQXBwb2ludG1lbnQgPHNwYW4+QXZhaWxhYmxlIHRvIHRyeSBmcm9tIDI5IEp1bDwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiYXBwb2ludG1lbnQtdGV4dFwiPlxyXG4gICAgICAgICAgICAgIEhvbWUgQXBwb2ludG1lbnQgPHNwYW4gY2xhc3M9XCJhcHBvaW50bWVudC1hdmFpbGFibGVcIj5BdmFpbGFibGUgdG8gdHJ5IGZyb20gMjggSnVuPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4LWFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHctMTAwXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYm9vay1hcHBvaW50bWVudC1idG5cIiAoY2xpY2spPVwiYWRkVG9UcmlhbENhcnQoKVwiICpuZ0lmPVwiIWlzSXRlbUFkZGVkQXNUcmlhbFwiPlRyeSBhdFxyXG4gICAgICAgICAgICBIT01FPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYm9vay1hcHBvaW50bWVudC1idG5cIiAqbmdJZj1cImlzSXRlbUFkZGVkQXNUcmlhbFwiPkhPTUUgQVBQT0lOVE1FTlQgQk9PS0VEPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPGRpdiBjbGFzcz1cIm9mZmNhbnZhcyBvZmZjYW52YXMtZW5kIG9mZmNhbnZhcy12YXJpYW50XCIgdGFiaW5kZXg9XCItMVwiIGlkPVwib2ZmY2FudmFzUmlnaHRWYXJpYW50XCJcclxuICBhcmlhLWxhYmVsbGVkYnk9XCJvZmZjYW52YXNSaWdodExhYmVsXCI+XHJcbiAgPGRpdiBjbGFzcz1cInZhcmllbnQtaGVhZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWVuZCBwLTJcIj5cclxuICAgIDxtYXQtaWNvbiBkYXRhLWJzLWRpc21pc3M9XCJvZmZjYW52YXNcIlxyXG4gICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBmLTE4XCI+Y2xvc2U8L21hdC1pY29uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJ2YXJpZW50LXByaWNlIHB4LTMgcGItMlwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInByaWNlLXRleHRcIj5QcmljZTwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCAgZy0zIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicHJpY2VcIiBbbmdDbGFzc109XCJ7J2Rpc2NvdW50LXByaWNlJzogcmVzcG9uc2VEYXRhPy5wcmljZT8uZGlzY291bnRlZFByaWNlfVwiXHJcbiAgICAgICAgKm5nSWY9XCJyZXNwb25zZURhdGE/LnByaWNlPy5kaXNjb3VudGVkUHJpY2UgJiYgcmVzcG9uc2VEYXRhLnByaWNlLmRpc2NvdW50ZWRQcmljZSA+IDBcIj48c3BhblxyXG4gICAgICAgICAgW2lubmVySFRNTF09J2N1cnJlbmN5Jz48L3NwYW4+XHJcbiAgICAgICAge3tyZXNwb25zZURhdGE/LnByaWNlPy5kaXNjb3VudGVkUHJpY2V9fTwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicHJpY2VcIlxyXG4gICAgICAgICpuZ0lmPVwicmVzcG9uc2VEYXRhPy5wcmljZT8uc2VsbGluZ1ByaWNlICYmIGdldERpZmZlcmVuY2UocmVzcG9uc2VEYXRhPy5wcmljZT8uc2VsbGluZ1ByaWNlLCByZXNwb25zZURhdGE/LnByaWNlPy5kaXNjb3VudGVkUHJpY2UpID4gMlwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieydzdHJpa2UtdGhyb3VnaCc6IHJlc3BvbnNlRGF0YT8ucHJpY2U/LmRpc2NvdW50ZWRQcmljZX1cIj48c3BhbiBbaW5uZXJIVE1MXT0nY3VycmVuY3knPjwvc3Bhbj5cclxuICAgICAgICB7e3Jlc3BvbnNlRGF0YT8ucHJpY2U/LnNlbGxpbmdQcmljZSB8IG51bWJlcjonMS4wLTAnfX08L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJ2YXJpZW50LWNvbnRhaW5lciBoLTEwMCBwLTNcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhcmllbnQgb2YgdmFyaWVudHMgfCBrZXl2YWx1ZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidmFyaWVudC1kYXRhXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZhcmllbnQta2V5XCI+e3t2YXJpZW50LmtleX19PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIHN0eWxlPVwiZ2FwOiA1cHg7XCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB2YXJpZW50VmFsdWUgb2YgdmFyaWVudC52YWx1ZVwiIGNsYXNzPVwidmFyaWVudC10YWdcIlxyXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwic2VsZWN0ZWRWYXJpZW50LmdldCh2YXJpZW50LmtleSkgPT0gdmFyaWVudFZhbHVlID8gJ3doaXRlJyA6IGRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIlxyXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cInNlbGVjdGVkVmFyaWVudC5nZXQodmFyaWVudC5rZXkpID09IHZhcmllbnRWYWx1ZSA/IGRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3IgOiAnJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RWYXJpZW50KHZhcmllbnQua2V5LCB2YXJpZW50VmFsdWUpXCI+e3t2YXJpZW50VmFsdWUgfCB0aXRsZWNhc2V9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJjb25maXJtLWJ0biB3LTEwMCBwLTMgdGV4dC1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIiBkYXRhLWJzLWRpc21pc3M9XCJvZmZjYW52YXNcIlxyXG4gICAgW3N0eWxlLmJhY2tncm91bmRdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIHN0eWxlPVwiY29sb3I6IHdoaXRlO1wiPkNvbmZpcm1cclxuICAgIEN1c3RvbWl6YXRpb248L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2RpYWxvZ0JveD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBkLWZsZXggYWxpZ24taXRlbS1jZW50ZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctdmlkZW8gdy0xMDAgcHktMiB0ZXh0LWNlbnRlclwiPkxpdmUgVmlkZW8gY2FsbCBhdCB5b3VyIGNvbnZlbmllbmNlITwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2NoZWR1bGUtaGVhZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWVuZCBwLTJcIj5cclxuICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cIm1hdENsb3NlRGlhbG9nKClcIlxyXG4gICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZi0xOFwiPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IGgtMTAwXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgaC0xMDAgdy0xMDAgdmlkZW8tY2FsbC1jb250YWluZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgaC0xMDBcIiAqbmdJZj1cIiFpc01vYmlsZVwiPlxyXG4gICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICBzcmM9XCJodHRwczovL2Qyejk0OTd4cDh4YjEyLmNsb3VkZnJvbnQubmV0L3Byb2QtaW1hZ2VzLzU1NzY5OWMxNzUzNzc5NTAzOTEzZnJlZXBpay1vdmVyaGVhZC1zaG90LWEtcGVyc29uLWhvbGRpbmctYS1zbWFydHBob25lLXdpdGgtYS0xMDI5X3ZtZzhHcUhqIChvbmxpbmUtdmlkZW8tY3V0dGVyLmNvbSkuZ2lmXCJcclxuICAgICAgICAgICAgYWx0PVwiXCIgY2xhc3M9XCJ3LTEwMCBoLTEwMFwiIHN0eWxlPVwib2JqZWN0LWZpdDogY292ZXI7XCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IHBvc2l0aW9uLXJlbGF0aXZlIGgtMTAwIGNhbGwtZGV0YWlsc1wiPlxyXG4gICAgICAgICAgPCEtLSBOYW1lIElucHV0IHdpdGggVmFsaWRhdGlvbiAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1maWVsZCBteS0zXCIgW2NsYXNzLmVycm9yLWJvcmRlcl09XCJ2YWxpZGF0aW9uRXJyb3JzLnVzZXJuYW1lXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgTmFtZSpcIiBbKG5nTW9kZWwpXT1cInZpZGVvQ2FsbFBheWxvYWQudXNlcm5hbWVcIlxyXG4gICAgICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0Q2hhbmdlKCd1c2VybmFtZScpXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZmllbGQgbXktM1wiIFtjbGFzcy5lcnJvci1ib3JkZXJdPVwidmFsaWRhdGlvbkVycm9ycy5lbWFpbFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImVtYWlsXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBFbWFpbCpcIiBbKG5nTW9kZWwpXT1cInZpZGVvQ2FsbFBheWxvYWQuZW1haWxcIlxyXG4gICAgICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0Q2hhbmdlKCdlbWFpbCcpXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIE1vYmlsZSBOdW1iZXIgSW5wdXQgd2l0aCBWYWxpZGF0aW9uIC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWZpZWxkIG15LTNcIiBbY2xhc3MuZXJyb3ItYm9yZGVyXT1cInZhbGlkYXRpb25FcnJvcnMubW9iaWxlTnVtYmVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dC1jYWxsXCI+SU4gKzkxPC9kaXY+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBNb2JpbGUqXCIgWyhuZ01vZGVsKV09XCJ2aWRlb0NhbGxQYXlsb2FkLm1vYmlsZU51bWJlclwiXHJcbiAgICAgICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJ21vYmlsZU51bWJlcicpXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgPCEtLSBQaW5jb2RlIElucHV0IHdpdGggVmFsaWRhdGlvbiAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1maWVsZCBteS0zXCIgW2NsYXNzLmVycm9yLWJvcmRlcl09XCJ2YWxpZGF0aW9uRXJyb3JzLnBpbmNvZGVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0LWNhbGwgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgdy0xMiBib3JkZXItdW5zZXRcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJmLTE4IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPmdwc19maXhlZDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgUGluIENvZGUqXCIgY2xhc3M9XCJ3LTg4XCIgWyhuZ01vZGVsKV09XCJ2aWRlb0NhbGxQYXlsb2FkLnBpbmNvZGVcIlxyXG4gICAgICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0Q2hhbmdlKCdwaW5jb2RlJylcIj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxhbmd1YWdlIG15LTNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pbmktdGV4dCBtYi0yXCI+TGFuZ3VhZ2UgUHJlZmVyZW5jZTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFuZ3VhZ2UtY29udGFpbmVyIGQtZmxleCBnYXAtMiBmbGV4LXdyYXAgbXQtMVwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGxhbmcgb2YgbGFuZ3VhZ2VzXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFuZyBweC0yIHB5LTEgcm91bmRlZCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImxhbmcgPT0gc2VsZWN0ZWRMYW5nID8gZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvciA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGVkTGFuZyA9IGxhbmdcIlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwibGFuZyA9PSBzZWxlY3RlZExhbmcgPyBnZXRUZXh0Q29sb3IoZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvcikgOiAnIzAwMDAwMCdcIj5cclxuICAgICAgICAgICAgICAgICAge3tsYW5nfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkTGFuZyA9PSAnT3RoZXJzJ1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZmllbGQgbXktM1wiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgT3RoZXIgTGFuZ3VhZ2VcIiBbKG5nTW9kZWwpXT1cIm90aGVyTGFuZ3VhZ2VcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ2aWRlby1idG4gbXQtMiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIiBbZGlzYWJsZWRdPVwiaXNTdWJtaXR0aW5nXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1N1Ym1pdHRpbmdcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc20gbWUtMlwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TG9hZGluZy4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICBTQ0hFRFVMSU5HLi4uXHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzU3VibWl0dGluZyAmJiAhc2NoZWR1bGVkXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwic2NoZWR1bGVWaWRlb0NhbGwoKVwiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPnZpZGVvX2NhbGw8L21hdC1pY29uPiZuYnNwO1xyXG4gICAgICAgICAgICAgICAgU0NIRURVTEUgQSBWSURFTyBDQUxMXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2NoZWR1bGVkXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmNoZWNrX2NpcmNsZTwvbWF0LWljb24+Jm5ic3A7XHJcbiAgICAgICAgICAgICAgU0NIRURVTEVEIFNVQ0NFU1NGVUxMWVxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPGRpdiBjbGFzcz1cIm9mZmNhbnZhcyBvZmZjYW52YXMtZW5kIG9mZmNhbnZhcy1zbWFsbCBvdmVyZmxvdy1zY3JvbGxcIiB0YWJpbmRleD1cIi0xXCIgaWQ9XCJvZmZjYW52YXNSaWdodFByaWNlQnJlYWt1cFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ2YXJpZW50LWhlYWRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1lbmQgcC0yXCI+XHJcbiAgICA8bWF0LWljb24gZGF0YS1icy1kaXNtaXNzPVwib2ZmY2FudmFzXCJcclxuICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZi0xOFwiPmNsb3NlPC9tYXQtaWNvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwidmFyaWVudC1wcmljZSBwLTEwLTIwXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHJpY2UtYnJlYWstaGVhZGVyXCI+e3tyZXNwb25zZURhdGE/Lm5hbWV9fTwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJwcmljZS1icmVha3VwIGgtMTAwIHctMTAwXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbGUgb2YgcmVzcG9uc2VEYXRhPy5tYXRlcmlhbHNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInByaWNlLWNvbnRhaW5lciBtYi0zIHAtMTAtMjBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJpY2UtY29udGFpbmVyLWhlYWRlclwiPlxyXG4gICAgICAgICAge3sgZWxlLm1hdGVyaWFsVHlwZSArIFwiIEJSRUFLVVBcIiB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgdy0xMDAgaGVhZGVyLXJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zIHRleHQtY2VudGVyXCI+Q09NUE9ORU5UPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTMgdGV4dC1jZW50ZXJcIj5SQVRFPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTMgdGV4dC1jZW50ZXJcIj5XRUlHSFQ8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMyB0ZXh0LWNlbnRlclwiPkZJTkFMIFZBTFVFPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyB3LTEwMCB2YWx1ZS1yb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMyB0ZXh0LWNlbnRlclwiPnt7IGVsZS5tYXRlcmlhbFB1cml0eSB8IHRpdGxlY2FzZSB9fTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zIHRleHQtY2VudGVyXCI+4oK5e3sgZ2V0UHJpY2VQZXJHcmFtKGVsZS5wcmltYXJ5TWF0ZXJpYWxXZWlnaHQsIGVsZS5tYXRlcmlhbFByaWNlKSB8XHJcbiAgICAgICAgICAgIG51bWJlcjonMS4yLTInIH19PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTMgdGV4dC1jZW50ZXJcIj57eyBlbGUucHJpbWFyeU1hdGVyaWFsV2VpZ2h0ICsgXCIgZ3JhbXNcIiB9fTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zIHRleHQtY2VudGVyIHRvdGFsXCI+4oK5e3sgZWxlLm1hdGVyaWFsUHJpY2UgfCBudW1iZXI6JzEuMi0yJyB9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJwcmljZS1jb250YWluZXIgbWItMyBwLTEwLTMwIHB5LTAgYm9yZGVyLXVuc2V0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgdy0xMDAgc3VtbWFyeS1yb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgdGV4dC1zdGFydFwiPk1ha2luZyBDaGFyZ2VzPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IHRleHQtZW5kIHRvdGFsXCI+4oK5e3sgcmVzcG9uc2VEYXRhPy5qZXdlbHJ5UHJpY2VCcmVha3VwPy5tYWtpbmdDaGFyZ2VBbW91bnQgfCBudW1iZXI6JzEuMi0yJyB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdyB3LTEwMCBzdW1tYXJ5LXJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiB0ZXh0LXN0YXJ0XCI+VGF4IEFtb3VudDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiB0ZXh0LWVuZCB0b3RhbFwiPuKCuXt7IHJlc3BvbnNlRGF0YT8uamV3ZWxyeVByaWNlQnJlYWt1cD8udGF4QW1vdW50IHwgbnVtYmVyOicxLjItMicgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgdy0xMDAgc3VtbWFyeS1yb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgdGV4dC1zdGFydFwiPlRvdGFsIEFtb3VudDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiB0ZXh0LWVuZCB0b3RhbFwiPlxyXG4gICAgICAgICAg4oK5e3socmVzcG9uc2VEYXRhPy5qZXdlbHJ5UHJpY2VCcmVha3VwPy5wcmljZVdpdGhvdXRUYXggKyByZXNwb25zZURhdGE/Lmpld2VscnlQcmljZUJyZWFrdXA/LnRheEFtb3VudCkgfFxyXG4gICAgICAgICAgbnVtYmVyOicxLjItMid9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI1Jldmlld3NTZWN0aW9uPlxyXG4gIDxkaXYgY2xhc3M9XCJ3LTEwMCByb3cgcmV2aWV3LXNlY3Rpb25cIiBbc3R5bGUuYmFja2dyb3VuZF09XCJnZXRSR0JBKHN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3IsIDEwKVwiXHJcbiAgICAqbmdJZj1cInJldmlld3NEYXRhICYmIHJldmlld3NEYXRhLmxlbmd0aCA+IDBcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBjb2wtc20tMTJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImN1c3QtaGVhZGVyXCI+Q3VzdG9tZXIgUmV2aWV3czwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0zIG1iLTFcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVzcG9uc2VEYXRhPy5hdmVyYWdlUmF0aW5nXCI+XHJcbiAgICAgICAgICA8cC1yYXRpbmcgWyhuZ01vZGVsKV09XCJyZXNwb25zZURhdGEuYXZlcmFnZVJhdGluZ1wiIFtjYW5jZWxdPVwiZmFsc2VcIiBbcmVhZG9ubHldPVwidHJ1ZVwiPjwvcC1yYXRpbmc+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJyYXRpbmctdGV4dFwiPnt7cmVzcG9uc2VEYXRhPy5hdmVyYWdlUmF0aW5nIHwgbnVtYmVyOicxLjEtMid9fSBvdXQgb2YgNTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbWItM1wiPnt7cmVzcG9uc2VEYXRhPy50b3RhbFJldmlld0NvdW50ICsgXCIgcmF0aW5nc1wifX08L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJhdGluZ3MtcGVyY2VudGFnZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJhdGluZyBvZiBbNSw0LDMsMiwxXVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBlcmNlbnRhZ2UgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBtYi0yXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7cmF0aW5nICsgXCIgc3RhclwifX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTUwIGJhclwiIFtzdHlsZS5ib3JkZXJDb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBbc3R5bGUud2lkdGguJV09XCJnZXRQZXJjZW50YWdlKHJhdGluZylcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgY2xhc3M9XCJoLTEwMFwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwZXJjZW50YWdlLXRleHRcIj57e2dldFBlcmNlbnRhZ2UocmF0aW5nKSArIFwiJVwifX08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOSBjb2wtc20tMTJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJldmlldy1oZWFkZXJcIj5MYXRlc3QgUmV2aWV3czwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmV2aWV3LWJvZHkgZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0zXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcmV2aWV3IG9mIHJldmlld3NEYXRhXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aWV3LWNvbnRhaW5lciB3LTc1XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpZXctbmFtZSBnYXAtMiBteS0yIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vbS5tZWRpYS1hbWF6b24uY29tL2ltYWdlcy9TL2FtYXpvbi1hdmF0YXJzLWdsb2JhbC9kZWZhdWx0LnBuZ1wiIGFsdD1cIlwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIndpZHRoLTMwIGgtMjUgbXItMlwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuPnt7cmV2aWV3Py51c2VyTmFtZSA/PyBcIi1cIn19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJldmlldz8ucmF0aW5nXCI+XHJcbiAgICAgICAgICAgICAgPHAtcmF0aW5nIFsobmdNb2RlbCldPVwicmV2aWV3LnJhdGluZ1wiIFtjYW5jZWxdPVwiZmFsc2VcIiBbcmVhZG9ubHldPVwidHJ1ZVwiPjwvcC1yYXRpbmc+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aWV3LWRlc2NcIj5cclxuICAgICAgICAgICAgICB7e3Jldmlldz8ucmV2aWV3ID8/IFwiLVwifX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpZXctaW1nXCI+XHJcbiAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImltZy5pbWdVcmxcIiBhbHQ9XCJcIiAqbmdGb3I9XCJsZXQgaW1nIG9mIHJldmlldz8ucmV2aWV3SW1hZ2VzID8/IFtdXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RGV0YWlsUmV2aWV3KHJldmlldylcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiBkYXRhLXRvZ2dsZT1cIm1vZGFsXCIgZGF0YS10YXJnZXQ9XCIjcmV2aWV3TW9kYWxcIlxyXG4gICAgICAgICAgICAgICAgaWQ9XCJvcGVuUmV2aWV3RGV0YWlsXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInctNzUgc2VlLW1vcmUgcHktM1wiIChjbGljayk9XCJsb2FkTW9yZVJldmlld3MoKVwiICpuZ0lmPVwiKHJldmlld3NEYXRhPy5sZW5ndGggPz8gMCkgPiAzXCJcclxuICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+XHJcbiAgICAgICAgICBTZWUgbW9yZSByZXZpZXdzIDxzcGFuPj48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxkaXYgY2xhc3M9XCJtb2RhbCBmYWRlXCIgaWQ9XCJleGFtcGxlTW9kYWxcIiB0YWJpbmRleD1cIi0xXCIgYXJpYS1sYWJlbGxlZGJ5PVwiZXhhbXBsZU1vZGFsTGFiZWxcIiByb2xlPVwiZGlhbG9nXCJcclxuICBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWRpYWxvZy1jZW50ZXJlZCB2aWRlby1tb2RhbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIiBzdHlsZT1cImhlaWdodDogMTAwJTtcIj5cclxuICAgICAgICA8dmlkZW8gY29udHJvbHMgbXV0ZWQgcGxheXNpbmxpbmUgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1wiPlxyXG4gICAgICAgICAgPHNvdXJjZVxyXG4gICAgICAgICAgICBzcmM9XCJodHRwczovL2Qyejk0OTd4cDh4YjEyLmNsb3VkZnJvbnQubmV0L3Byb2QtaW1hZ2VzLzM3MTY0N2MxNzUzOTYyMDg0MjY1Y2xpZGVvX2VkaXRvcl80OGJjOTNjMjRlMTg0NzA4ODhjNjYxYmIwOWU0MzdkYSAob25saW5lLXZpZGVvLWN1dHRlci5jb20pLm1wNFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJ2aWRlby9tcDRcIj5cclxuICAgICAgICAgIFlvdXIgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSB2aWRlbyB0YWcuXHJcbiAgICAgICAgPC92aWRlbz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwibW9kYWwgZmFkZVwiIGlkPVwicmV2aWV3TW9kYWxcIiB0YWJpbmRleD1cIi0xXCIgYXJpYS1sYWJlbGxlZGJ5PVwicmV2aWV3TW9kYWxMYWJlbFwiIHJvbGU9XCJkaWFsb2dcIlxyXG4gIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgcmV2aWV3LW1vZGFsXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgPGgxIGNsYXNzPVwibW9kYWwtdGl0bGUgZnMtNVwiPjwvaDE+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiBkYXRhLWJzLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiPjwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJldmlldy1jb250YWluZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LWltYWdlXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhY2t3YXJkLWFycm93IGFycm93XCIgKGNsaWNrKT1cImN1cnJlbnRJbWFnZUluZGV4ID0gY3VycmVudEltYWdlSW5kZXgtMVwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImN1cnJlbnRJbWFnZUluZGV4ID4gMFwiPuKWvDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJzZWxlY3RlZFJldmlldz8ucmV2aWV3SW1hZ2VzPy5bY3VycmVudEltYWdlSW5kZXhdPy5pbWdVcmxcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9yd2FyZC1hcnJvdyBhcnJvd1wiIChjbGljayk9XCJjdXJyZW50SW1hZ2VJbmRleCA9IGN1cnJlbnRJbWFnZUluZGV4KzFcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjdXJyZW50SW1hZ2VJbmRleCA8IHNlbGVjdGVkUmV2aWV3Py5pbWFnZXM/Lmxlbmd0aCAtIDFcIj7ilrI8L2Rpdj5cclxuICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJlYXJidWRzLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoYXJnaW5nLWNhc2VcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlYXJidWQgbGVmdFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVhcmJ1ZCByaWdodFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIm5hdmlnYXRpb24tYXJyb3dzXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpZXctc2VjdGlvblwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aWV3ZXItaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlld2VyLWF2YXRhclwiPvCfkaQ8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aWV3ZXItbmFtZVwiPnt7c2VsZWN0ZWRSZXZpZXc/LnVzZXJOYW1lID8/IFwiLVwifX08L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJhdGluZ1wiICpuZ0lmPVwic2VsZWN0ZWRSZXZpZXc/LnJhdGluZ1wiPlxyXG4gICAgICAgICAgICAgIDxwLXJhdGluZyBbKG5nTW9kZWwpXT1cInNlbGVjdGVkUmV2aWV3LnJhdGluZ1wiIFtjYW5jZWxdPVwiZmFsc2VcIiBbcmVhZG9ubHldPVwidHJ1ZVwiPjwvcC1yYXRpbmc+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlldy1kYXRlXCI+XHJcbiAgICAgICAgICAgICAgUmV2aWV3ZWQgaW4gSW5kaWEgb24gMjQgSnVseSAyMDI1XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlldy10ZXh0XCI+XHJcbiAgICAgICAgICAgICAge3tzZWxlY3RlZFJldmlldz8ucmV2aWV3ID8/IFwiLVwifX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2VzLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICA8aDM+SW1hZ2VzIGluIHRoaXMgcmV2aWV3PC9oMz5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aWV3LWltYWdlc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlldy1pbWFnZVwiIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWQnOiBjdXJyZW50SW1hZ2VJbmRleCA9PSBpfVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpbWcgb2Ygc2VsZWN0ZWRSZXZpZXc/LnJldmlld0ltYWdlcyA/PyBbXTtsZXQgaSA9IGluZGV4XCIgKGNsaWNrKT1cImN1cnJlbnRJbWFnZUluZGV4ID0gaVwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaW1nLmltZ1VybFwiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|