@softheon/armature 17.16.5 → 17.17.0
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/ag-grid-components/src/sof-table/sof-table.component.d.ts +2 -2
- package/assets/styles/_variables.scss +2 -0
- package/assets/styles/sof-styles.scss +273 -198
- package/esm2022/ag-grid-components/src/sof-table/sof-table.component.mjs +6 -7
- package/esm2022/lib/alert-banner/alert-banner.module.mjs +2 -1
- package/esm2022/lib/alert-banner/components/alert-banner/alert-banner.component.mjs +2 -3
- package/esm2022/lib/base-components/base-component-api.mjs +1 -3
- package/esm2022/lib/base-components/base-component.module.mjs +1 -5
- package/esm2022/lib/forms/components/sof-address/sof-address.component.mjs +5 -2
- package/esm2022/lib/header/components/sof-header-portal/sof-header-portal.component.mjs +137 -0
- package/esm2022/lib/header/components/sof-header-portal/user-initials-pipe/user-initials.pipe.mjs +22 -0
- package/esm2022/lib/header/header-api.mjs +3 -1
- package/esm2022/lib/navigation/components/navigation/navigation.component.mjs +2 -2
- package/esm2022/lib/navigation/components/sof-breadcrumbs/sof-breadcrumbs-hierarchy/sof-breadcrumbs-hierarchy.component.mjs +8 -4
- package/esm2022/lib/navigation/components/sof-breadcrumbs/sof-breadcrumbs-history/sof-breadcrumbs-history.component.mjs +8 -4
- package/esm2022/lib/navigation/components/sof-navigation-panel/sof-nav-panel.component.mjs +54 -24
- package/esm2022/lib/navigation/navigation.module.mjs +1 -9
- package/fesm2022/softheon-armature-ag-grid-components.mjs +5 -6
- package/fesm2022/softheon-armature-ag-grid-components.mjs.map +1 -1
- package/fesm2022/softheon-armature.mjs +329 -176
- package/fesm2022/softheon-armature.mjs.map +1 -1
- package/lib/alert-banner/alert-banner.module.d.ts +1 -0
- package/lib/alert-banner/components/alert-banner/alert-banner.component.d.ts +1 -0
- package/lib/base-components/base-component-api.d.ts +0 -2
- package/lib/base-components/base-component.module.d.ts +25 -26
- package/lib/forms/components/sof-address/sof-address.component.d.ts +4 -1
- package/lib/header/components/sof-header-portal/sof-header-portal.component.d.ts +73 -0
- package/lib/header/components/sof-header-portal/user-initials-pipe/user-initials.pipe.d.ts +10 -0
- package/lib/header/header-api.d.ts +2 -0
- package/lib/navigation/components/navigation/navigation.component.d.ts +1 -0
- package/lib/navigation/components/sof-breadcrumbs/sof-breadcrumbs-hierarchy/sof-breadcrumbs-hierarchy.component.d.ts +1 -1
- package/lib/navigation/components/sof-breadcrumbs/sof-breadcrumbs-history/sof-breadcrumbs-history.component.d.ts +1 -1
- package/lib/navigation/components/sof-navigation-panel/sof-nav-panel.component.d.ts +28 -13
- package/lib/navigation/navigation.module.d.ts +21 -23
- package/package.json +1 -1
- package/esm2022/lib/base-components/sof-links/sof-link.component.mjs +0 -27
- package/lib/base-components/sof-links/sof-link.component.d.ts +0 -14
|
@@ -21,9 +21,9 @@ import * as i14 from "@angular/material/menu";
|
|
|
21
21
|
import * as i15 from "@angular/material/stepper";
|
|
22
22
|
import * as i16 from "@angular/material/progress-bar";
|
|
23
23
|
import * as i17 from "@ngx-translate/core";
|
|
24
|
-
// TODO: see how this can fit with the `sof-progress-bar` component. Possibly combine them
|
|
25
24
|
/**
|
|
26
25
|
* The Navigation Component
|
|
26
|
+
* @deprecated please use `SofNavPanelComponent` moving forward
|
|
27
27
|
*/
|
|
28
28
|
export class ArmatureNavigationComponent {
|
|
29
29
|
/** gets the non used language */
|
|
@@ -557,4 +557,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImpor
|
|
|
557
557
|
}], setLanguage$: [{
|
|
558
558
|
type: Output
|
|
559
559
|
}] } });
|
|
560
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcm1hdHVyZS9zcmMvbGliL25hdmlnYXRpb24vY29tcG9uZW50cy9uYXZpZ2F0aW9uL25hdmlnYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJtYXR1cmUvc3JjL2xpYi9uYXZpZ2F0aW9uL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlELE9BQU8sRUFBb0MsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLFFBQVEsRUFBRSxNQUFNLEVBQWEsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkxSyxPQUFPLEVBQUUsYUFBYSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVeEMsMEZBQTBGO0FBRTFGOztHQUVHO0FBU0gsTUFBTSxPQUFPLDJCQUEyQjtJQXNDdEMsaUNBQWlDO0lBQ2pDLElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBZ0ZEOzs7Ozs7OztPQVFHO0lBQ0gsWUFDVyxpQkFBb0MsRUFDcEMsS0FBbUIsRUFDWCxNQUFjLEVBQ3ZCLGFBQTRCLEVBQ25CLG9CQUEwQyxFQUM5QixhQUFnQztR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R1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUdVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBR1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUdVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBR1UsVUFBVTtzQkFBekIsS0FBSztnQkFHVyxZQUFZO3NCQUE1QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWVkaWFNYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XHJcbmltcG9ydCB7IFNURVBQRVJfR0xPQkFMX09QVElPTlMgfSBmcm9tICdAYW5ndWxhci9jZGsvc3RlcHBlcic7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdEV4cGFuc2lvblBhbmVsIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcclxuaW1wb3J0IHsgTWF0U2lkZW5hdiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xyXG5pbXBvcnQgeyBNYXRTdGVwcGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc3RlcHBlcic7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEJhc2VDb25maWcgfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy9iYXNlLWNvbmZpZyc7XHJcbmltcG9ydCB7IEF1dGhvcml6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9hdXRob3JpemF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYW5uZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9iYW5uZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9iYXNlLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGVhZGVyTGFuZ3VhZ2VTZXR0aW5ncyB9IGZyb20gJy4uLy4uLy4uL2hlYWRlci9tb2RlbHMvaGVhZGVyLWxhbmd1YWdlLnNldHRpbmdzJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvblRoZW1lU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9tb2RlbHMvbmF2LXRoZW1lLnNldHRpbmdzJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkFkdmFuY2VkU2V0dGluZ3MsIE5hdmlnYXRpb25TZXR0aW5ncyB9IGZyb20gJy4uLy4uL21vZGVscy9uYXYuc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBOYXZOb2RlLCBTdWJOYXZOb2RlcyB9IGZyb20gJy4uLy4uL21vZGVscy9uYXZpZ2F0aW9uJztcclxuXHJcbi8vIFRPRE86IHNlZSBob3cgdGhpcyBjYW4gZml0IHdpdGggdGhlIGBzb2YtcHJvZ3Jlc3MtYmFyYCBjb21wb25lbnQuIFBvc3NpYmx5IGNvbWJpbmUgdGhlbVxyXG5cclxuLyoqXHJcbiAqIFRoZSBOYXZpZ2F0aW9uIENvbXBvbmVudFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzb2YtYXItbmF2aWdhdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25hdmlnYXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25hdmlnYXRpb24uY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFt7XHJcbiAgICBwcm92aWRlOiBTVEVQUEVSX0dMT0JBTF9PUFRJT05TLCB1c2VWYWx1ZTogeyBkaXNwbGF5RGVmYXVsdEluZGljYXRvclR5cGU6IGZhbHNlIH1cclxuICB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXJtYXR1cmVOYXZpZ2F0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICAvKiogVGhlIHBhcmVudCBzdGVwcGVyICovXHJcbiAgQFZpZXdDaGlsZCgndmVydFN0ZXBwZXInKSBwdWJsaWMgc3RlcHBlcjogTWF0U3RlcHBlcjtcclxuXHJcbiAgLyoqIFRoZSBzaWRlIG1vYmlsZSBuYXYgKi9cclxuICBAVmlld0NoaWxkKCdzbmF2JykgcHVibGljIHNpZGVuYXY6IE1hdFNpZGVuYXY7XHJcblxyXG4gIC8qKiBUaGUgbW9iaWxlIGV4cGFuc2lvbiBwYW5lbCBmb3IgcHJvZ3Jlc3MgbWVudSAqL1xyXG4gIEBWaWV3Q2hpbGQoJ3BhbmVsJykgcHVibGljIGV4cGFuc2lvblBhbmVsOiBNYXRFeHBhbnNpb25QYW5lbDtcclxuXHJcbiAgLyoqIFRoZSBjaGlsZCBzdGVwcGVycyAqL1xyXG4gIEBWaWV3Q2hpbGRyZW4oJ3ZlcnRTdGVwcGVySW5uZXInKSBwdWJsaWMgaW5uZXJTdGVwcGVyczogUXVlcnlMaXN0PE1hdFN0ZXBwZXI+O1xyXG5cclxuICAvKiogQ29tcG9uZW50IElucHV0IC0gdGhlIG5hdmlnYXRpb24gZGF0YSAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBuYXZpZ2F0aW9uRGF0YTogTmF2Tm9kZVtdO1xyXG5cclxuICAvKiogQ29tcG9uZW50IElucHV0IC0gdGhlIG5hdmlnYXRpb24gc2V0dGluZ3MgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgc2V0dGluZ3M6IE5hdmlnYXRpb25TZXR0aW5ncyA9IHt9O1xyXG5cclxuICAvKiogQ29tcG9uZW50IElucHV0IC0gdGhlIG5hdmlnYXRpb24gc2V0dGluZ3MgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgYWR2YW5jZWRTZXR0aW5nczogTmF2aWdhdGlvbkFkdmFuY2VkU2V0dGluZ3MgPSB7fTtcclxuXHJcbiAgLyoqIENvbXBvbmVudCBJbnB1dCAtIHRoZSBuYXZpZ2F0aW9uIHNldHRpbmdzICovXHJcbiAgQElucHV0KCkgcHVibGljIHRoZW1lU2V0dGluZ3M6IE5hdmlnYXRpb25UaGVtZVNldHRpbmdzID0ge307XHJcblxyXG4gIC8qKiBDb21wb25lbnQgSW5wdXQgLSB0aGUgbmF2aWdhdGlvbiBsYW5ndWFnZSBzZXR0aW5ncyAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBsYW5ndWFnZVNldHRpbmdzOiBIZWFkZXJMYW5ndWFnZVNldHRpbmdzID0ge307XHJcblxyXG4gIC8qKiBDdXJyZW50IGxhbmd1YWdlICoqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXJyZW50TGFuZzogc3RyaW5nO1xyXG5cclxuICAvKiogbG9nT3V0IHRleHQgKiovXHJcbiAgQElucHV0KCkgcHVibGljIGxvZ091dFRleHQ6IHN0cmluZztcclxuXHJcbiAgLyoqIFNldHMgbGFuZ3VhZ2UgKiovXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBzZXRMYW5ndWFnZSQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIC8qKiBnZXRzIHRoZSBub24gdXNlZCBsYW5ndWFnZSAqL1xyXG4gIHB1YmxpYyBnZXQgb3RoZXJMYW5nVGV4dCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VTZXR0aW5ncz8ubGFuZ3VhZ2VzPy5maW5kKHggPT4geCAhPT0gdGhpcy5jdXJyZW50TGFuZyk7XHJcbiAgfVxyXG5cclxuICAvKiogV2hldGhlciBzaWRlIG5hdiBpcyBvcGVuIG9yIG5vdCAqL1xyXG4gIHB1YmxpYyBpc05hdk9wZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIE1vYmlsZSBTdWJOYXYgLSB3aGV0aGVyIG9yIG5vdCB0aGUgbW9iaWxlIFN1Yk5hdiBpcyBvcGVuICovXHJcbiAgcHVibGljIGlzTW9iaWxlU3ViTmF2T3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogTW9iaWxlIFN1Yk5hdiAtdGhlIGRhdGEgdG8gYmUgcGFzc2VkIHRvIHRoZSBtb2JpbGUgU3ViTmF2ICovXHJcbiAgcHVibGljIGN1cnJlbnRNb2JpbGVOYXY6IE5hdk5vZGU7XHJcblxyXG4gIC8qKiBTZXR0aW5ncyAtIHRoZSBtYWluIG1lbnUgdGV4dCB0aGF0IGFwcGVhcnMgaW4gdGhlIG1vYmlsZSBTdWJOYXYgKi9cclxuICBwdWJsaWMgbWFpbk1lbnVUZXh0OiBzdHJpbmc7XHJcblxyXG4gIC8qKiB0aGUgbW9iaWxlIHF1ZXJ5ICovXHJcbiAgcHVibGljIG1vYmlsZVF1ZXJ5OiBNZWRpYVF1ZXJ5TGlzdDtcclxuXHJcbiAgLyoqIFRoZSBzZWxlY3RlZCBwYXJlbnQgaW5kZXggKi9cclxuICBwdWJsaWMgc2VsZWN0ZWRQYXJlbnRJbmRleDogbnVtYmVyID0gMDtcclxuXHJcbiAgLyoqIFRoZSBzZWxlY3RlZCBjaGlsZCBpbmRleCAqL1xyXG4gIHB1YmxpYyBzZWxlY3RlZENoaWxkSW5kZXhlczogeyBba2V5OiBudW1iZXJdOiBudW1iZXIgfSA9IHt9O1xyXG5cclxuICAvKiogVGhlIG5hdmlnYXRpb24gcHJvZ3Jlc3MgY291bnQgKi9cclxuICBwdWJsaWMgbmF2UHJvZ3Jlc3NDb3VudDogbnVtYmVyID0gMDtcclxuXHJcbiAgLyoqIFRoZSBjdXJyZW50IGFjdGl2ZSBwYXJlbnQgbm9kZSAqL1xyXG4gIHB1YmxpYyBhY3RpdmVQYXJlbnROb2RlOiBOYXZOb2RlO1xyXG5cclxuICAvKiogVGhlIGN1cnJlbnQgYWN0aXZlIHN1YiBub2RlICovXHJcbiAgcHVibGljIGFjdGl2ZVN1Yk5vZGU6IFN1Yk5hdk5vZGVzO1xyXG5cclxuICAvKiogVHJ1ZSBpZiB0aGUgZXhwYW5zaW9uIHBhbmVsIGlzIG9wZW4gKi9cclxuICBwdWJsaWMgcGFuZWxPcGVuU3RhdGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIFRoZSBmb290ZXIgbmF2aWdhdGlvbiBkYXRhICovXHJcbiAgcHVibGljIGZvb3Rlck5hdmlnYXRpb25EYXRhOiBOYXZOb2RlW11cclxuXHJcbiAgLyoqIHVzZXIgbmFtZSAqKi9cclxuICBwdWJsaWMgdXNlck5hbWU6IHN0cmluZztcclxuXHJcbiAgLyoqIFRoZSBjb25maWcgb2JzZXJ2YWJsZSAqL1xyXG4gIHB1YmxpYyBjb25maWckOiBPYnNlcnZhYmxlPEJhc2VDb25maWc+O1xyXG5cclxuICAvKiogVGhlIHBhcmVudCBub2RlIGluZGV4IHRvIGJlIHNldCB3aGVuIG5hdiBpcyB0b2dnbGVkIHRvIHByb2dyZXNzIG1lbnUgc3R5bGUgKi9cclxuICBwdWJsaWMgdG9nZ2xlUHJvZ3Jlc3NOYXZQYXJlbnRJbmRleDogbnVtYmVyO1xyXG5cclxuICAvKiogVGhlIGNoaWxkIG5vZGUgaW5kZXggdG8gYmUgc2V0IHdoZW4gbmF2IGlzIHRvZ2dsZWQgdG8gcHJvZ3Jlc3MgbWVudSBzdHlsZSAqL1xyXG4gIHB1YmxpYyB0b2dnbGVQcm9ncmVzc05hdkNoaWxkSW5kZXg6IG51bWJlcjtcclxuXHJcbiAgLyoqIHRoZSBtb2JpbGUgcXVlcnkgbGlzdGVuZXIyICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfbW9iaWxlUXVlcnlMaXN0ZW5lcjogKCkgPT4gdm9pZDtcclxuXHJcbiAgLyoqIFRoZSBuYXYgYmluZCBzdWJzY3JpcHRpb24gKi9cclxuICBwcml2YXRlIG5hdkJpbmRTdWI6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHJcbiAgLyoqIFRoZSBtZXNzYWdlIHRvIGRpc3BsYXkgKi9cclxuICBwdWJsaWMgbWVzc2FnZTogc3RyaW5nO1xyXG5cclxuICAvKiogV2hldGhlciB3ZSBzaG91bGQgdGhlIG1lc3NhZ2UgKi9cclxuICBwdWJsaWMgc2hvd01lc3NhZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIFdoZXRoZXIgc2hvdWxkIHNob3cgY2hlY2sgbWFyayBvciBub3QgKi9cclxuICBwdWJsaWMgc2hvd0NoZWNrTWFyazogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8qKiBUaGUgbmF2IGJpbmQgc3Vic2NyaXB0aW9uICovXHJcbiAgcHJpdmF0ZSBsb2dJblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuICAvKiogVGhlIGNvdW50IG9mIGZvb3RlciBpdGVtcyovXHJcbiAgcHVibGljIGZvb3Rlckl0ZW1Db3VudDogbnVtYmVyO1xyXG5cclxuICAvKiogVGhlIGJhbm5lciBzdWJzY3JpcHRpb24gKi9cclxuICBwcml2YXRlIGJhbm5lclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuICAvKiogVGhlIGNvbmZpZyBzdWJzY3JpcHRpb24gKi9cclxuICBwdWJsaWMgY29uZmlnU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcblxyXG4gIC8qKiBUaGUgc2lkZW5hdiBzdWJzY3JpcHRpb24gKi9cclxuICBwcml2YXRlIHNpZGVOYXZTdWI6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogdGhlIGNvbnN0cnVjdG9yXHJcbiAgICogQHBhcmFtIGNoYW5nZURldGVjdG9yUmVmIHRoZSBjaGFuZ2UgZGV0ZWN0b3IgcmVmZXJlbmNlXHJcbiAgICogQHBhcmFtIG1lZGlhIHRoZSBtZWRpYSBtYXRjaGVyXHJcbiAgICogQHBhcmFtIHJvdXRlciBUaGUgcm91dGVyXHJcbiAgICogQHBhcmFtIGJhbm5lclNlcnZpY2UgVGhlIEJhbm5lciBTZXJ2aWNlXHJcbiAgICogQHBhcmFtIGFjdGl2YXRlZFJvdXRlIFRoZSBhY3RpdmF0ZWQgcm91dGVcclxuICAgKiBAcGFyYW0gY29uZmlnU2VydmljZSBUaGUgY29uZmlnIHNlcnZpY2VcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHJlYWRvbmx5IG1lZGlhOiBNZWRpYU1hdGNoZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBiYW5uZXJTZXJ2aWNlOiBCYW5uZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdXRob3JpemF0aW9uU2VydmljZTogQXV0aG9yaXphdGlvblNlcnZpY2UsXHJcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IEJhc2VDb25maWdTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLm1vYmlsZVF1ZXJ5ID0gbWVkaWEubWF0Y2hNZWRpYSgnKG1heC13aWR0aDogOTU5cHgpJyk7XHJcbiAgICB0aGlzLl9tb2JpbGVRdWVyeUxpc3RlbmVyID0gKCkgPT4ge1xyXG4gICAgICBjaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIC8vIGNsb3NlIHRoZSBzaWRlbmF2IHdoZW4gc2NyZWVuIHNpemUgaXMgY2hhbmdlZFxyXG4gICAgICBpZiAoIXRoaXMubW9iaWxlUXVlcnkubWF0Y2hlcyAmJiB0aGlzLnNldHRpbmdzLm1lbnVTdHlsZSA9PT0gJ3Byb2dyZXNzJykge1xyXG4gICAgICAgIHRoaXMuc2lkZW5hdi5jbG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgLy8gYmVsb3cgaWYgc3RhdGVtZW50IGlzIGZvciBlZGdlIHN1cHBvcnQgc2luY2UgYWRkRXZlbnRMaXN0ZW5lciBkb2Vzbid0IGV4aXN0IGZvciBNZWRpYVF1ZXJ5TGlzdHNcclxuICAgIGlmICh0aGlzLm1vYmlsZVF1ZXJ5LmFkZEV2ZW50TGlzdGVuZXIpIHtcclxuICAgICAgdGhpcy5tb2JpbGVRdWVyeS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB0aGlzLl9tb2JpbGVRdWVyeUxpc3RlbmVyKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLm1vYmlsZVF1ZXJ5LmFkZExpc3RlbmVyKHRoaXMuX21vYmlsZVF1ZXJ5TGlzdGVuZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIE9uIEluaXQgLSBjb25maWd1cmUgdGhlIHNldHRpbmdzICovXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuYmFubmVyU3Vic2NyaXB0aW9uLmFkZCh0aGlzLmJhbm5lclNlcnZpY2Uuc2hvd0Jhbm5lciQuc3Vic2NyaWJlKHZhbCA9PiB0aGlzLnNob3dNZXNzYWdlID0gdmFsKSk7XHJcbiAgICB0aGlzLmJhbm5lclN1YnNjcmlwdGlvbi5hZGQodGhpcy5iYW5uZXJTZXJ2aWNlLm1lc3NhZ2UkLnN1YnNjcmliZSh2YWwgPT4gdGhpcy5tZXNzYWdlID0gdmFsKSk7XHJcbiAgICB0aGlzLmJhbm5lclN1YnNjcmlwdGlvbi5hZGQodGhpcy5iYW5uZXJTZXJ2aWNlLnNob3dDaGVja01hcmskLnN1YnNjcmliZSh2YWwgPT4gdGhpcy5zaG93Q2hlY2tNYXJrID0gdmFsKSk7XHJcblxyXG4gICAgdGhpcy5mb290ZXJOYXZpZ2F0aW9uRGF0YSA9IHRoaXMubmF2aWdhdGlvbkRhdGE/LmZpbHRlcihub2RlID0+IG5vZGU/LmFsdExvY2F0aW9uID09IHRydWUpO1xyXG4gICAgdGhpcy5mb290ZXJJdGVtQ291bnQgPSB0aGlzLmZvb3Rlck5hdmlnYXRpb25EYXRhID8gdGhpcy5mb290ZXJOYXZpZ2F0aW9uRGF0YS5sZW5ndGggOiAwO1xyXG4gICAgdGhpcy5uYXZpZ2F0aW9uRGF0YSA9IHRoaXMubmF2aWdhdGlvbkRhdGE/LmZpbHRlcihub2RlID0+IG5vZGU/LmFsdExvY2F0aW9uICE9IHRydWUpO1xyXG5cclxuICAgIC8vIGlmIHBhcmVudHMgaGF2ZSBubyByb3V0ZSwgZ3JhYiBmaXJzdCByb3V0ZSBvZiBjaGlsZFxyXG4gICAgdGhpcy5uYXZpZ2F0aW9uRGF0YT8uZm9yRWFjaChuID0+IHtcclxuICAgICAgaWYgKCFuLnJvdXRlKSB7XHJcbiAgICAgICAgbi5yb3V0ZSA9IG4uc3ViTm9kZXMgJiYgbi5zdWJOb2Rlcy5sZW5ndGggPiAwID8gbi5zdWJOb2Rlc1swXS5yb3V0ZSA6IHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgICAvLyBlbmFibGUgYWxsIHBhZ2VzIGJ5IGRlZmF1bHRcclxuICAgICAgaWYgKG4uaXNEaXNhYmxlZCA9PSBudWxsKSB7XHJcbiAgICAgICAgbi5pc0Rpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuaW5pdEJhc2ljU2V0dGluZ3MoKTtcclxuICAgIHRoaXMuaW5pdEFkdmFuY2VkU2V0dGluZ3MoKTtcclxuICAgIHRoaXMuaW5pdFRoZW1lU2V0dGluZ3MoKTtcclxuXHJcbiAgICAvLyBpbml0IGJpbmRpbmcgZm9yIHByb2dyZXNzIG5hdlxyXG4gICAgaWYgKHRoaXMuc2V0dGluZ3MubWVudVN0eWxlID09PSAncHJvZ3Jlc3MnKSB7XHJcbiAgICAgIC8vIHNldCB0aGUgZmlyc3Qgbm9kZSBhbmQgY2hpbGQgbm9kZSBhcyB2aXNpdGVkXHJcbiAgICAgIGlmICh0aGlzLm5hdmlnYXRpb25EYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLm5hdmlnYXRpb25EYXRhWzBdLnZpc2l0ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubmF2aWdhdGUodGhpcy5uYXZpZ2F0aW9uRGF0YVswXS5yb3V0ZSk7XHJcbiAgICAgICAgaWYgKHRoaXMubmF2aWdhdGlvbkRhdGFbMF0uc3ViTm9kZXMgJiYgdGhpcy5uYXZpZ2F0aW9uRGF0YVswXS5zdWJOb2Rlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLm5hdmlnYXRpb25EYXRhWzBdLnN1Yk5vZGVzWzBdLnZpc2l0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZSh0aGlzLm5hdmlnYXRpb25EYXRhWzBdLnN1Yk5vZGVzWzBdLnJvdXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIHNldCBpbml0aWFsIHByb2dyZXNzIGJhclxyXG4gICAgICB0aGlzLm5hdlByb2dyZXNzQ291bnQgPSAodGhpcy5zZWxlY3RlZFBhcmVudEluZGV4ICsgMSkgLyB0aGlzLm5hdmlnYXRpb25EYXRhLmxlbmd0aCAqIDEwMDtcclxuXHJcblxyXG4gICAgICB0aGlzLm5hdkJpbmRTdWIuYWRkKFxyXG4gICAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE5hdmlnYXRpb25FbmQpID0+IHtcclxuICAgICAgICAgICAgLy8gZmluZCBwYXJlbnQgaW5kZXggd2l0aCBhY3RpdmUgY2hpbGRcclxuICAgICAgICAgICAgdGhpcy5nZXRBY3RpdmVQYXJlbnRBbmRDaGlsZChldmVudC51cmwpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuc2V0dGluZ3MuYWxsb3dOYXZUb2dnbGUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMubG9nSW5TdWJzY3JpcHRpb24gPSB0aGlzLmF1dGhvcml6YXRpb25TZXJ2aWNlLmlzTG9nZ2VkSW4kLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMudXNlck5hbWUgPSB0aGlzLmF1dGhvcml6YXRpb25TZXJ2aWNlLnVzZXJOYW1lKClcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlnU2VydmljZSkge1xyXG4gICAgICB0aGlzLmNvbmZpZ1N1YnNjcmlwdGlvbiA9IHRoaXMuY29uZmlnU2VydmljZS5jb25maWckLnN1YnNjcmliZShjb25maWcgPT4ge1xyXG4gICAgICAgIGlmIChjb25maWcgJiYgY29uZmlnPy5uYXZpZ2F0aW9uPy5ub2Rlcykge1xyXG4gICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uRGF0YSA9IGNvbmZpZz8ubmF2aWdhdGlvbj8ubm9kZXM7XHJcbiAgICAgICAgICBpZiAoY29uZmlnPy5uYXZpZ2F0aW9uPy5zZXR0aW5ncz8ucmVzZXROYXYpIHtcclxuICAgICAgICAgICAgdGhpcy5uYXZQcm9ncmVzc0NvdW50ID0gMDtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudEluZGV4ID0gMDtcclxuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZSh0aGlzLm5hdmlnYXRpb25EYXRhWzBdLnJvdXRlKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc3RlcHBlcikge1xyXG4gICAgICAgICAgICAgIHRoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4ID0gMDtcclxuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RlcHBlci5yZXNldCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbm5lclN0ZXBwZXJzPy5mb3JFYWNoKHN0ZXBwZXIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBzdGVwcGVyLnNlbGVjdGVkSW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgICBzdGVwcGVyLnJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25EYXRhLmZvckVhY2gobiA9PiB7XHJcbiAgICAgICAgICAgICAgbi52aXNpdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgbi5jb21wbGV0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIG4uc3ViTm9kZXM/LmZvckVhY2gocyA9PiB7XHJcbiAgICAgICAgICAgICAgICBzLnZpc2l0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHMuY29tcGxldGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgLy8gcmVzZXQgYmFjayB0byBmYWxzZSB0byBhdm9pZCBtdWx0aXBsZSB0cmlnZ2VycyBvbiBmdXR1cmUgY2FsbHNcclxuICAgICAgICAgICAgY29uZmlnLm5hdmlnYXRpb24uc2V0dGluZ3MucmVzZXROYXYgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZyA9IGNvbmZpZztcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBpZiB0aGUgdmFsdWVzIHdlcmUgY2hhbmdlZCBhbmQgbm90IG51bGwsIGl0IG1lYW5zIHRoYXQgdGhlIG5hdiB3YXMgdG9nZ2xlZCB0byBwcm9ncmVzc1xyXG4gICAgICAgICAgaWYgKGNvbmZpZz8ubmF2aWdhdGlvbj8uc2V0dGluZ3M/LnRvZ2dsZVByb2dyZXNzTmF2UGFyZW50SW5kZXggIT0gbnVsbFxyXG4gICAgICAgICAgICAmJiB0aGlzLnRvZ2dsZVByb2dyZXNzTmF2UGFyZW50SW5kZXggIT0gY29uZmlnPy5uYXZpZ2F0aW9uPy5zZXR0aW5ncz8udG9nZ2xlUHJvZ3Jlc3NOYXZQYXJlbnRJbmRleFxyXG4gICAgICAgICAgICAmJiB0aGlzLnRvZ2dsZVByb2dyZXNzTmF2Q2hpbGRJbmRleCAhPSBjb25maWc/Lm5hdmlnYXRpb24/LnNldHRpbmdzPy50b2dnbGVQcm9ncmVzc05hdkNoaWxkSW5kZXhcclxuICAgICAgICAgICAgJiYgY29uZmlnPy5uYXZpZ2F0aW9uPy5zZXR0aW5ncz8udG9nZ2xlUHJvZ3Jlc3NOYXZDaGlsZEluZGV4ICE9IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlUHJvZ3Jlc3NOYXZQYXJlbnRJbmRleCA9IGNvbmZpZy5uYXZpZ2F0aW9uLnNldHRpbmdzLnRvZ2dsZVByb2dyZXNzTmF2UGFyZW50SW5kZXg7XHJcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlUHJvZ3Jlc3NOYXZDaGlsZEluZGV4ID0gY29uZmlnLm5hdmlnYXRpb24uc2V0dGluZ3MudG9nZ2xlUHJvZ3Jlc3NOYXZDaGlsZEluZGV4O1xyXG5cclxuICAgICAgICAgICAgLy8gYWRkIHRoZSByb3V0ZXIgc3ViXHJcbiAgICAgICAgICAgIHRoaXMubmF2QmluZFN1Yi5hZGQoXHJcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogTmF2aWdhdGlvbkVuZCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAvLyBmaW5kIHBhcmVudCBpbmRleCB3aXRoIGFjdGl2ZSBjaGlsZFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmdldEFjdGl2ZVBhcmVudEFuZENoaWxkKGV2ZW50LnVybCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAvLyBpZiB0aGUgY2hpbGQgbm9kZSBpbmRleCBpcyB2YWxpZFxyXG4gICAgICAgICAgICBpZiAoY29uZmlnLm5hdmlnYXRpb24ubm9kZXNbdGhpcy50b2dnbGVQcm9ncmVzc05hdlBhcmVudEluZGV4XS5zdWJOb2Rlcz8ubGVuZ3RoID4gdGhpcy50b2dnbGVQcm9ncmVzc05hdkNoaWxkSW5kZXgpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldE5vZGVTdGF0ZXMoY29uZmlnLm5hdmlnYXRpb24ubm9kZXNbdGhpcy50b2dnbGVQcm9ncmVzc05hdlBhcmVudEluZGV4XSxcclxuICAgICAgICAgICAgICAgIGNvbmZpZy5uYXZpZ2F0aW9uLm5vZGVzW3RoaXMudG9nZ2xlUHJvZ3Jlc3NOYXZQYXJlbnRJbmRleF0uc3ViTm9kZXNbdGhpcy50b2dnbGVQcm9ncmVzc05hdkNoaWxkSW5kZXhdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldE5vZGVTdGF0ZXMoY29uZmlnLm5hdmlnYXRpb24ubm9kZXNbdGhpcy50b2dnbGVQcm9ncmVzc05hdlBhcmVudEluZGV4XSwgbnVsbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGluZGV4ZXNcclxuICAgICAgICAgICAgdGhpcy50b2dnbGVQcm9ncmVzc05hdlBhcmVudEluZGV4ID0gY29uZmlnPy5uYXZpZ2F0aW9uPy5zZXR0aW5ncz8udG9nZ2xlUHJvZ3Jlc3NOYXZQYXJlbnRJbmRleFxyXG4gICAgICAgICAgICB0aGlzLnRvZ2dsZVByb2dyZXNzTmF2Q2hpbGRJbmRleCA9IGNvbmZpZz8ubmF2aWdhdGlvbj8uc2V0dGluZ3M/LnRvZ2dsZVByb2dyZXNzTmF2Q2hpbGRJbmRleDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIExpZmUgY3ljbGUgaG9vayBmb3IgYWZ0ZXIgY29tcG9uZW50IHZpZXcgaW5pdGlhbGl6YXRpb24gKi9cclxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2V0dGluZ3MubWVudVN0eWxlID09PSAnc3RlcHBlcicpIHtcclxuICAgICAgdGhpcy5iaW5kU3RlcHBlclRvUm91dGVzKCk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3RlcHBlci5zdGVwcy5mb3JFYWNoKChzdGVwLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgc3RlcC5zZWxlY3QgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQYXJlbnRJbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRlKHRoaXMubmF2aWdhdGlvbkRhdGFbaW5kZXhdLnJvdXRlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmlubmVyU3RlcHBlcnMuZm9yRWFjaCgoc3RlcHBlciwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIHN0ZXBwZXIuc3RlcHMuZm9yRWFjaCgoc3RlcCwgamluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIHN0ZXAuc2VsZWN0ID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGlsZEluZGV4ZXNbaW5kZXhdID0gamluZGV4O1xyXG4gICAgICAgICAgICAgIHRoaXMubmF2aWdhdGUodGhpcy5uYXZpZ2F0aW9uRGF0YVtpbmRleF0uc3ViTm9kZXNbamluZGV4XS5yb3V0ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuc2lkZU5hdlN1YiA9IHRoaXMuc2lkZW5hdi5vcGVuZWRDaGFuZ2Uuc3Vic2NyaWJlKGRyYXdlclN0YXRlID0+IHtcclxuICAgICAgdGhpcy5pc05hdk9wZW4gPSBkcmF3ZXJTdGF0ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIE9uIERlc3Ryb3kgKi9cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLm1vYmlsZVF1ZXJ5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMuX21vYmlsZVF1ZXJ5TGlzdGVuZXIpO1xyXG4gICAgdGhpcy5uYXZCaW5kU3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmxvZ0luU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmJhbm5lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5jb25maWdTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuc2lkZU5hdlN1Yi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTW9iaWxlIFN1Yk5hdiAtIG9wZW4gdGhlIFN1Yk5hdlxyXG4gICAqIEBwYXJhbSBuYXYgdGhlIG5hdiBkYXRhIHRvIGJlIHBhc3NlZCB0byB0aGUgU3ViTmF2XHJcbiAgICovXHJcbiAgcHVibGljIG9wZW5Nb2JpbGVTdWJOYXYobmF2OiBOYXZOb2RlKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzTW9iaWxlU3ViTmF2T3BlbiA9IHRydWU7XHJcbiAgICB0aGlzLmN1cnJlbnRNb2JpbGVOYXYgPSBuYXY7XHJcbiAgICB0aGlzLnNpZGVuYXYub3BlbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTW9iaWxlIFN1Yk5hdiAtIGNsb3NlcyB0aGUgU3ViTmF2XHJcbiAgICovXHJcbiAgcHVibGljIGNsb3NlTW9iaWxlU3ViTmF2KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc01vYmlsZVN1Yk5hdk9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuc2lkZW5hdi5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgdGhlbWUgY29sb3JcclxuICAgKiBAcGFyYW0gdmFyaWFibGUgdGhlIGNzcyB2YXJpYWJsZSBuYW1lXHJcbiAgICogQHBhcmFtIGNvbG9yIHRoZSBjb2xvclxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRUaGVtZUNvbG9yKHZhcmlhYmxlOiBzdHJpbmcsIGNvbG9yOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShgLS1zb2YtbmF2LSR7dmFyaWFibGV9YCwgY29sb3IpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGV0ZXJtaW5lcyB0aGUgc3RlcCBzdGF0ZVxyXG4gICAqIEBwYXJhbSBwYXJlbnRJbmRleCBUaGUgcGFyZW50IGluZGV4XHJcbiAgICogQHBhcmFtIGNoaWxkSW5kZXggVGhlIGNoaWxkIGluZGV4XHJcbiAgICogQHJldHVybnMgVGhlIHN0ZXAgc3RhdGVcclxuICAgKi9cclxuICBwdWJsaWMgZGV0ZXJtaW5lU3RlcFN0YXRlKHBhcmVudEluZGV4OiBudW1iZXIsIGNoaWxkSW5kZXg6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICAvLyBub3QgcGFzc2VkICYmIG5vdCBhY3RpdmVcclxuICAgIGlmIChjaGlsZEluZGV4ID09PSAtMSkge1xyXG4gICAgICBpZiAoIXRoaXMuc3RlcHBlcikge1xyXG4gICAgICAgIHJldHVybiAnbnVtYmVyJztcclxuICAgICAgfVxyXG4gICAgICAvLyBub3QgcGFzc2VkICYmIGFjdGl2ZVxyXG4gICAgICBpZiAocGFyZW50SW5kZXggPT09IHRoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4KSB7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uRGF0YVtwYXJlbnRJbmRleF0udmlzaXRlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIHJldHVybiAnYWN0aXZlJztcclxuICAgICAgfVxyXG4gICAgICAvLyBwYXNzZWQgYnV0IG5hdiBiYWNrXHJcbiAgICAgIGVsc2UgaWYgKHBhcmVudEluZGV4ID4gdGhpcy5zdGVwcGVyLnNlbGVjdGVkSW5kZXggJiYgdGhpcy5uYXZpZ2F0aW9uRGF0YVtwYXJlbnRJbmRleF0udmlzaXRlZCkge1xyXG4gICAgICAgIHRoaXMuc3RlcHBlci5zdGVwcy5maW5kKChzLCBpbmRleCkgPT4gaW5kZXggPT09IHBhcmVudEluZGV4KVxyXG4gICAgICAgICAgLnJlc2V0KCk7XHJcblxyXG4gICAgICAgIHJldHVybiAnYWN0aXZlJztcclxuICAgICAgfVxyXG4gICAgICAvLyBwYXNzZWQgJiYgbm90IGFjdGl2ZVxyXG4gICAgICBlbHNlIGlmIChwYXJlbnRJbmRleCA8IHRoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4KSB7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uRGF0YVtwYXJlbnRJbmRleF0udmlzaXRlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIHJldHVybiAnZG9uZSc7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuICdudW1iZXInO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKCF0aGlzLmlubmVyU3RlcHBlcnMpIHtcclxuICAgICAgICByZXR1cm4gJ25vbmUnO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGlubmVyU3RlcHBlciA9IHRoaXMuaW5uZXJTdGVwcGVycy5maW5kKChzLCBpbmRleCkgPT4gaW5kZXggPT09IHBhcmVudEluZGV4KTtcclxuICAgICAgaWYgKGNoaWxkSW5kZXggPT09IGlubmVyU3RlcHBlci5zZWxlY3RlZEluZGV4KSB7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uRGF0YVtwYXJlbnRJbmRleF0uc3ViTm9kZXNbY2hpbGRJbmRleF0udmlzaXRlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIHJldHVybiAnYWN0aXZlJztcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChjaGlsZEluZGV4ID4gaW5uZXJTdGVwcGVyLnNlbGVjdGVkSW5kZXggJiYgdGhpcy5uYXZpZ2F0aW9uRGF0YVtwYXJlbnRJbmRleF0uc3ViTm9kZXNbY2hpbGRJbmRleF0udmlzaXRlZCkge1xyXG4gICAgICAgIGlubmVyU3RlcHBlci5zdGVwcy5maW5kKChzLCBpbmRleCkgPT4gaW5kZXggPT09IGNoaWxkSW5kZXgpXHJcbiAgICAgICAgICAucmVzZXQoKTtcclxuXHJcbiAgICAgICAgcmV0dXJuICdhY3RpdmUnO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGNoaWxkSW5kZXggPCBpbm5lclN0ZXBwZXIuc2VsZWN0ZWRJbmRleCkge1xyXG4gICAgICAgIHRoaXMubmF2aWdhdGlvbkRhdGFbcGFyZW50SW5kZXhdLnN1Yk5vZGVzW2NoaWxkSW5kZXhdLnZpc2l0ZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICByZXR1cm4gJ2RvbmUnO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAnbm9uZSc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgcHJvdmlkZWQgcm91dGVcclxuICAgKiBAcGFyYW0gcm91dGUgVGhlIHJvdXRlXHJcbiAgICovXHJcbiAgcHVibGljIG5hdmlnYXRlKHJvdXRlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tZmxvYXRpbmctcHJvbWlzZXNcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwocm91dGUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmF2aWdhdGVzIHRvIGdpdmVuIHN0ZXBcclxuICAgKiBAcGFyYW0gc3RlcE51bWJlciBUaGUgc3RlcCBudW1iZXIgdG8gbmF2aWdhdGUgdG9cclxuICAgKi9cclxuICBwdWJsaWMgbmF2aWdhdGVUb1N0ZXAoc3RlcE51bWJlcjogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoc3RlcE51bWJlciA8IHRoaXMuc2VsZWN0ZWRQYXJlbnRJbmRleCkge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWZsb2F0aW5nLXByb21pc2VzXHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5uYXZpZ2F0aW9uRGF0YVtzdGVwTnVtYmVyXS5yb3V0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBhY3RpdmUgcGFyZW50IGFuZCBjaGlsZCBub2RlcyBcclxuICAgKiBAcGFyYW0gdXJsIFRoZSByb3V0ZXIgdXJsXHJcbiAgICovXHJcbiAgcHVibGljIGdldEFjdGl2ZVBhcmVudEFuZENoaWxkKHVybDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBsZXQgY2hpbGRJbmRleDtcclxuICAgIGxldCBwYXJlbnRJbmRleCA9IHRoaXMubmF2aWdhdGlvbkRhdGEuZmluZEluZGV4KG4gPT4ge1xyXG4gICAgICBjaGlsZEluZGV4ID0gbi5zdWJOb2Rlcz8uZmluZEluZGV4KHMgPT4gdXJsLmluY2x1ZGVzKHMucm91dGUucmVwbGFjZSgnLicsICcnKSkpO1xyXG4gICAgICByZXR1cm4gY2hpbGRJbmRleCA+IC0xIHx8IHRoaXMucm91dGVyLnVybC5pbmNsdWRlcyhuLnJvdXRlLnJlcGxhY2UoJy4nLCAnJykpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHBhcmVudEluZGV4ID09IC0xKSB7XHJcbiAgICAgIHBhcmVudEluZGV4ID0gMFxyXG4gICAgfVxyXG5cclxuICAgIC8vIHNldCB0aGUgYWN0aXZlIHBhcmVudCBub2RlIGFuZCBzdWIgbm9kZVxyXG4gICAgdGhpcy5hY3RpdmVQYXJlbnROb2RlID0gdGhpcy5uYXZpZ2F0aW9uRGF0YVtwYXJlbnRJbmRleF07XHJcbiAgICB0aGlzLmFjdGl2ZVN1Yk5vZGUgPSBjaGlsZEluZGV4ID4gLTEgJiYgdGhpcy5hY3RpdmVQYXJlbnROb2RlLnN1Yk5vZGVzLmxlbmd0aCA+IDAgPyB0aGlzLmFjdGl2ZVBhcmVudE5vZGUuc3ViTm9kZXNbY2hpbGRJbmRleF0gOiBudWxsO1xyXG5cclxuICAgIC8vIGlmIHRoZXJlIGFyZSBzdWJub2RlcyBhbmQgd2UgYXJlIG9uIHRoZSBmaXJzdCBub2RlLCBzZXQgdGhlIGFjdGl2ZSBzdWIgbm9kZSB0byBiZSB0aGUgZmlyc3Qgb25lLCBpZiB0aGVyZSBpc250IG9uZSBcclxuICAgIGlmICh0aGlzLmFjdGl2ZVBhcmVudE5vZGUuc3ViTm9kZXMubGVuZ3RoID4gMCAmJiBwYXJlbnRJbmRleCA9PSAwICYmIGNoaWxkSW5kZXggPT0gLTEpIHtcclxuICAgICAgdGhpcy5hY3RpdmVTdWJOb2RlID0gdGhpcy5hY3RpdmVQYXJlbnROb2RlLnN1Yk5vZGVzWzBdO1xyXG4gICAgfVxyXG4gICAgLy8gY29tcHV0ZSB0aGUgcHJvZ3Jlc3MgYmFyXHJcbiAgICB0aGlzLm5hdlByb2dyZXNzQ291bnQgPSAocGFyZW50SW5kZXggKyAxKSAvIHRoaXMubmF2aWdhdGlvbkRhdGEubGVuZ3RoICogMTAwO1xyXG5cclxuICAgIC8vIHNldCB0aGUgbm9kZSBzdGF0ZXNcclxuICAgIHRoaXMuc2V0Tm9kZVN0YXRlcyh0aGlzLmFjdGl2ZVBhcmVudE5vZGUsIHRoaXMuYWN0aXZlU3ViTm9kZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBjb21wbGV0ZSBhbmQgdmlzaXRlZCBzdGF0ZXMgZm9yIGFsbCBOYXZOb2RlcyBcclxuICAgKiBAcGFyYW0gcGFyZW50Tm9kZSBUaGUgcGFyZW50IG5vZGVcclxuICAgKiBAcGFyYW0gY2hpbGROb2RlIFRoZSBjaGlsZCBub2RlXHJcbiAgICovXHJcbiAgcHVibGljIHNldE5vZGVTdGF0ZXMocGFyZW50Tm9kZTogTmF2Tm9kZSwgY2hpbGROb2RlOiBTdWJOYXZOb2Rlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoaWxkTm9kZSkge1xyXG4gICAgICB0aGlzLmFjdGl2ZVN1Yk5vZGUgPSBjaGlsZE5vZGU7XHJcbiAgICAgIGxldCBjaGlsZEluZGV4ID0gcGFyZW50Tm9kZS5zdWJOb2Rlcy5pbmRleE9mKGNoaWxkTm9kZSkgPiAtMSA/IHBhcmVudE5vZGUuc3ViTm9kZXMuaW5kZXhPZihjaGlsZE5vZGUpIDogMDtcclxuICAgICAgLy8gYWxsIHN1Ym5vZGVzIGJlZm9yZSB0aGlzIHdlcmUgY29tcGxldGVkIGFuZCB2aXNpdGVkXHJcbiAgICAgIHBhcmVudE5vZGUuc3ViTm9kZXMuc2xpY2UoMCwgY2hpbGRJbmRleCkuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICBlbGVtZW50LmNvbXBsZXRlID0gdHJ1ZTtcclxuICAgICAgICBlbGVtZW50LnZpc2l0ZWQgPSB0cnVlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZlUGFyZW50Tm9kZSA9IHBhcmVudE5vZGU7XHJcbiAgICAvLyBzZXQgYWxsIHByZXZpb3VzIG5vZGVzIHRvIGNvbXBsZXRlXHJcbiAgICBsZXQgcGFyZW50SW5kZXggPSB0aGlzLm5hdmlnYXRpb25EYXRhLmluZGV4T2YocGFyZW50Tm9kZSkgPiAtMSA/IHRoaXMubmF2aWdhdGlvbkRhdGEuaW5kZXhPZihwYXJlbnROb2RlKSA6IDA7XHJcbiAgICB0aGlzLm5hdmlnYXRpb25EYXRhLnNsaWNlKDAsIHBhcmVudEluZGV4KS5mb3JFYWNoKGQgPT4ge1xyXG4gICAgICBkLmNvbXBsZXRlID0gdHJ1ZTtcclxuXHJcbiAgICAgIC8vIHNldCBhbGwgc3Vibm9kZXMgb2YgcHJldmlvdXMgbm9kZXMgdG8gY29tcGxldGUgb25seSBpZiB0aGUgbm9kZSB3YXMgbm90IGRpc2FibGVkXHJcbiAgICAgIGlmICghZC5pc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgZC5zdWJOb2Rlcy5mb3JFYWNoKHMgPT4ge1xyXG4gICAgICAgICAgcy5jb21wbGV0ZSA9IHRydWU7XHJcbiAgICAgICAgICBzLnZpc2l0ZWQgPSB0cnVlO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICAvLyBzZXQgdGhlIGN1cnJlbnQgbm9kZXMgYXMgdmlzaXRlZFxyXG4gICAgcGFyZW50Tm9kZS52aXNpdGVkID0gdHJ1ZTtcclxuICAgIGlmIChjaGlsZE5vZGUpIHtcclxuICAgICAgY2hpbGROb2RlLnZpc2l0ZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xvc2VzIHRoZSBleHBhbnNpb24gcGFuZWwgYW5kIG5hdmlnYXRlcyB0byB0aGUgZ2l2ZW4gbm9kZVxyXG4gICAqIEBwYXJhbSBlbCBUaGUgbWF0IGV4cGFuc2lvbiBwYW5lbCBcclxuICAgKiBAcGFyYW0gaW5kZXggVGhlIHBhcmVudCBub2RlIGluZGV4IFxyXG4gICAqL1xyXG4gIHB1YmxpYyBkaXNhYmxlUGFuZWwoZWwsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGVsLmNsb3NlKCk7XHJcbiAgICB0aGlzLm5hdmlnYXRlKHRoaXMubmF2aWdhdGlvbkRhdGFbaW5kZXhdLnJvdXRlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogSGlkZXMgdGhlIG1lc3NhZ2VcclxuICAqL1xyXG4gIHB1YmxpYyBoaWRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93TWVzc2FnZSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9ncyBvdXQgb25jZSB1c2VyIGlzIGF1dGhvcml6ZWRcclxuICAgKiAqL1xyXG4gIHB1YmxpYyBsb2dPdXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmF1dGhvcml6YXRpb25TZXJ2aWNlLmF1dGhvcml6ZVVzZXIoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsb3NlcyBtb2JpbGUgbmF2aWdhdGlvbiBhZnRlciBzZWxlY3Rpb24uXHJcbiAgICovXHJcbiAgcHVibGljIGNsb3NlTmF2aWdhdGlvbkZvck1vYmlsZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm1vYmlsZVF1ZXJ5Lm1hdGNoZXMpIHtcclxuICAgICAgdGhpcy5zaWRlbmF2LmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJcyB0aGUgbmF2aWdhdGlvbiBzZWxlY3RlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBpc05hdlNlbGVjdGVkKG5vZGU6IE5hdk5vZGUgfCBTdWJOYXZOb2Rlcyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucm91dGVyLmlzQWN0aXZlKG5vZGUucm91dGUsIHsgcGF0aHM6ICdleGFjdCcsIHF1ZXJ5UGFyYW1zOiAnZXhhY3QnLCBmcmFnbWVudDogJ2lnbm9yZWQnLCBtYXRyaXhQYXJhbXM6ICdpZ25vcmVkJyB9KTtcclxuICB9XHJcblxyXG4gIC8qKiBTZXRzIHRoZSB3aWR0aCBmb3IgdGhlIHNpZGUgbmF2ICovXHJcbiAgcHVibGljIHNldE5hdldpZHRoKHdpZHRoOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHdpZHRoLmluY2x1ZGVzKCclJykgfHwgd2lkdGguaW5jbHVkZXMoJ3B4JykgPyB3aWR0aCA6IHdpZHRoICsgJ3B4JztcclxuICB9XHJcblxyXG4gIC8qKiBCaW5kcyB0aGUgc3RlcHBlciB0byB0aGUgcm91dGVyICovXHJcbiAgcHJpdmF0ZSBiaW5kU3RlcHBlclRvUm91dGVzKCk6IHZvaWQge1xyXG4gICAgLy8gZmluZCBwYXJlbnRzXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgLy8gZmluZCBwYXJlbnQgaW5kZXggd2l0aCBhY3RpdmUgY2hpbGRcclxuICAgICAgbGV0IGNoaWxkSW5kZXg7XHJcbiAgICAgIGxldCBwYXJlbnRJbmRleCA9IHRoaXMubmF2aWdhdGlvbkRhdGEuZmluZEluZGV4KG4gPT4ge1xyXG4gICAgICAgIGNoaWxkSW5kZXggPSBuLnN1Yk5vZGVzPy5maW5kSW5kZXgocyA9PiB0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMocy5yb3V0ZS5yZXBsYWNlKCcuJywgJycpKSk7XHJcblxyXG4gICAgICAgIHJldHVybiBjaGlsZEluZGV4ID4gLTEgfHwgdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKG4ucm91dGUucmVwbGFjZSgnLicsICcnKSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICAvLyBpZiBubyBjaGlsZHJlbiBvciBubyBpbmRleGVzIGFjdGl2YXRlIGZpcnN0IHBhcmVudFxyXG4gICAgICBpZiAocGFyZW50SW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgcGFyZW50SW5kZXggPSAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkUGFyZW50SW5kZXggPSBwYXJlbnRJbmRleDtcclxuICAgICAgaWYgKGNoaWxkSW5kZXggPiAtMSkge1xyXG4gICAgICAgIHRoaXMuaW5uZXJTdGVwcGVycy5maW5kKChpcywgaW5kZXgpID0+IGluZGV4ID09PSBwYXJlbnRJbmRleCkuc2VsZWN0ZWRJbmRleCA9IGNoaWxkSW5kZXg7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIGZpbmQgcGFyZW50c1xyXG4gICAgdGhpcy5uYXZCaW5kU3ViLmFkZChcclxuICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE5hdmlnYXRpb25FbmQpID0+IHtcclxuICAgICAgICAgIC8vIGZpbmQgcGFyZW50IGluZGV4IHdpdGggYWN0aXZlIGNoaWxkXHJcbiAgICAgICAgICBsZXQgY2hpbGRJbmRleDtcclxuICAgICAgICAgIGxldCBwYXJlbnRJbmRleCA9IHRoaXMubmF2aWdhdGlvbkRhdGEuZmluZEluZGV4KG4gPT4ge1xyXG4gICAgICAgICAgICBjaGlsZEluZGV4ID0gbi5zdWJOb2Rlcz8uZmluZEluZGV4KHMgPT4gZXZlbnQudXJsQWZ0ZXJSZWRpcmVjdHMuaW5jbHVkZXMocy5yb3V0ZS5yZXBsYWNlKCcuJywgJycpKSk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gY2hpbGRJbmRleCA+IC0xIHx8IGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzLmluY2x1ZGVzKG4ucm91dGUucmVwbGFjZSgnLicsICcnKSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIC8vIGlmIG5vIGNoaWxkcmVuIG9yIG5vIGluZGV4ZXMgYWN0aXZhdGUgZmlyc3QgcGFyZW50XHJcbiAgICAgICAgICBpZiAocGFyZW50SW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgICAgIHBhcmVudEluZGV4ID0gMDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUGFyZW50SW5kZXggPSBwYXJlbnRJbmRleDtcclxuICAgICAgICAgIGlmIChjaGlsZEluZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5pbm5lclN0ZXBwZXJzLmZpbmQoKGlzLCBpbmRleCkgPT4gaW5kZXggPT09IHBhcmVudEluZGV4KS5zZWxlY3RlZEluZGV4ID0gY2hpbGRJbmRleDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKiBJbml0aWFsaXplcyB0aGUgYWR2YW5jZWQgbmF2IHNldHRpbmdzICovXHJcbiAgcHJpdmF0ZSBpbml0QWR2YW5jZWRTZXR0aW5ncygpOiB2b2lkIHtcclxuICAgIHRoaXMuYWR2YW5jZWRTZXR0aW5ncy50b3BHYXBEZXNrdG9wID0gdGhpcy5hZHZhbmNlZFNldHRpbmdzLnRvcEdhcERlc2t0b3AgfHwgMDtcclxuICAgIHRoaXMuYWR2YW5jZWRTZXR0aW5ncy50b3BHYXBNb2JpbGUgPSB0aGlzLmFkdmFuY2VkU2V0dGluZ3MudG9wR2FwTW9iaWxlIHx8IHRoaXMuc2V0dGluZ3MuaGVhZGVySGVpZ2h0O1xyXG4gICAgdGhpcy5hZHZhbmNlZFNldHRpbmdzLm1hcmdpblRvcERlc2t0b3AgPSB0aGlzLmFkdmFuY2VkU2V0dGluZ3MubWFyZ2luVG9wRGVza3RvcCB8fCAwO1xyXG4gICAgdGhpcy5hZHZhbmNlZFNldHRpbmdzLm1hcmdpblRvcE1vYmlsZSA9IHRoaXMuYWR2YW5jZWRTZXR0aW5ncy5tYXJnaW5Ub3BNb2JpbGUgfHwgMDtcclxuXHJcbiAgfVxyXG5cclxuICAvKiogSW5pdGlhbGl6ZXMgdGhlIG5hdiB0aGVtZSBzZXR0aW5ncyAqL1xyXG4gIHByaXZhdGUgaW5pdFRoZW1lU2V0dGluZ3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRoZW1lU2V0dGluZ3MuY29udGVudEJnQ29sb3IgPyB0aGlzLnNldFRoZW1lQ29sb3IoJ2NvbnRlbnQtYmctY29sb3InLCB0aGlzLnRoZW1lU2V0dGluZ3MuY29udGVudEJnQ29sb3IpIDogdW5kZWZpbmVkO1xyXG4gICAgdGhpcy50aGVtZVNldHRpbmdzLmZvbnRDb2xvciA/IHRoaXMuc2V0VGhlbWVDb2xvcignZm9udC1jb2xvcicsIHRoaXMudGhlbWVTZXR0aW5ncy5mb250Q29sb3IpIDogdW5kZWZpbmVkO1xyXG4gICAgdGhpcy50aGVtZVNldHRpbmdzLmZvbnRDb2xvciA9IHRoaXMudGhlbWVTZXR0aW5ncy5mb250Q29sb3IgfHwgJyMwMDAnO1xyXG4gICAgdGhpcy50aGVtZVNldHRpbmdzLm1vYmlsZUJnQ29sb3IgPSB0aGlzLnRoZW1lU2V0dGluZ3MubW9iaWxlQmdDb2xvciB8fCAnI2ZmZmZmZic7XHJcbiAgICB0aGlzLnRoZW1lU2V0dGluZ3MuYmdHcmFkaWVudENvbG9yMSA/IHRoaXMuc2V0VGhlbWVDb2xvcignYmctZ3JhZGllbnQtY29sb3ItMScsIHRoaXMudGhlbWVTZXR0aW5ncy5iZ0dyYWRpZW50Q29sb3IxKSA6IHVuZGVmaW5lZDtcclxuICAgIHRoaXMudGhlbWVTZXR0aW5ncy5iZ0dyYWRpZW50Q29sb3IyID8gdGhpcy5zZXRUaGVtZUNvbG9yKCdiZy1ncmFkaWVudC1jb2xvci0yJywgdGhpcy50aGVtZVNldHRpbmdzLmJnR3JhZGllbnRDb2xvcjIpIDogdW5kZWZpbmVkO1xyXG4gICAgdGhpcy50aGVtZVNldHRpbmdzLmJvcmRlclJpZ2h0Q29sb3IgPyB0aGlzLnNldFRoZW1lQ29sb3IoJ2JvcmRlci1yaWdodC1jb2xvcicsIHRoaXMudGhlbWVTZXR0aW5ncy5ib3JkZXJSaWdodENvbG9yKSA6IHVuZGVmaW5lZDtcclxuICAgIHRoaXMudGhlbWVTZXR0aW5ncy5saXN0Qm9yZGVyQ29sb3IgPyB0aGlzLnNldFRoZW1lQ29sb3IoJ2xpc3QtYm9yZGVyLWNvbG9yJywgdGhpcy50aGVtZVNldHRpbmdzLmxpc3RCb3JkZXJDb2xvcikgOiB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnRoZW1lU2V0dGluZ3MuaGlnaGxpZ2h0R3JhZGllbnQxID8gdGhpcy5zZXRUaGVtZUNvbG9yKCdoaWdobGlnaHQtZ3JhZGllbnQtMScsIHRoaXMudGhlbWVTZXR0aW5ncy5oaWdobGlnaHRHcmFkaWVudDEpIDogdW5kZWZpbmVkO1xyXG4gICAgdGhpcy50aGVtZVNldHRpbmdzLmhpZ2hsaWdodEdyYWRpZW50MiA/IHRoaXMuc2V0VGhlbWVDb2xvcignaGlnaGxpZ2h0LWdyYWRpZW50LTInLCB0aGlzLnRoZW1lU2V0dGluZ3MuaGlnaGxpZ2h0R3JhZGllbnQyKSA6IHVuZGVmaW5lZDtcclxuICAgIHRoaXMudGhlbWVTZXR0aW5ncy5zdWJIaWdobGlnaHRCb3JkZXJDb2xvciA/XHJcbiAgICAgIHRoaXMuc2V0VGhlbWVDb2xvcignc3ViLWhpZ2hsaWdodC1ib3JkZXItY29sb3InLCB0aGlzLnRoZW1lU2V0dGluZ3Muc3ViSGlnaGxpZ2h0Qm9yZGVyQ29sb3IpIDogdW5kZWZpbmVkO1xyXG4gICAgdGhpcy50aGVtZVNldHRpbmdzLnN1YkhpZ2hsaWdodEJnQ29sb3IgP1xyXG4gICAgICB0aGlzLnNldFRoZW1lQ29sb3IoJ3N1Yi1oaWdobGlnaHQtYmctY29sb3InLCB0aGlzLnRoZW1lU2V0dGluZ3Muc3ViSGlnaGxpZ2h0QmdDb2xvcikgOiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICAvKiogSW5pdGlhbGl6ZXMgdGhlIGJhc2ljIG5hdiBzZXR0aW5ncyAqL1xyXG4gIHByaXZhdGUgaW5pdEJhc2ljU2V0dGluZ3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldHRpbmdzLmZvbnRBd2Vzb21lTWVudUljb24gPSB0aGlzLnNldHRpbmdzLmZvbnRBd2Vzb21lTWVudUljb24gfHwgJ2ZhcyBmYS1hbmdsZS1kb3VibGUtbGVmdCc7XHJcbiAgICB0aGlzLnNldHRpbmdzLmZvbnRBd2Vzb21lTWVudUljb25DbG9zZWQgPSB0aGlzLnNldHRpbmdzLmZvbnRBd2Vzb21lTWVudUljb25DbG9zZWQgfHwgJ2ZhcyBmYS1hbmdsZS1kb3VibGUtcmlnaHQnO1xyXG4gICAgdGhpcy5zZXR0aW5ncy5hbGxvd05hdlRvZ2dsZSA9IHRoaXMuc2V0dGluZ3MuYWxsb3dOYXZUb2dnbGUgPT0gbnVsbCA/IHRydWUgOiB0aGlzLnNldHRpbmdzLmFsbG93TmF2VG9nZ2xlO1xyXG4gICAgdGhpcy5zZXR0aW5ncy5tYWluTWVudVRleHQgPyB0aGlzLm1haW5NZW51VGV4dCA9IHRoaXMuc2V0dGluZ3MubWFpbk1lbnVUZXh0IDogdGhpcy5tYWluTWVudVRleHQgPSAnTWFpbiBNZW51JztcclxuICAgIHRoaXMuc2V0dGluZ3MuaGVhZGVySGVpZ2h0ID0gdGhpcy5zZXR0aW5ncy5oZWFkZXJIZWlnaHQgfHwgNjA7XHJcbiAgICB0aGlzLnNldHRpbmdzLm1lbnVCdXR0b25TUlRleHQgPSB0aGlzLnNldHRpbmdzLm1lbnVCdXR0b25TUlRleHQgfHwgJ01lbnUgQnV0dG9uJztcclxuICAgIHRoaXMuc2V0dGluZ3MubWVudVN0eWxlID0gdGhpcy5zZXR0aW5ncy5tZW51U3R5bGUgfHwgJ3N0YXRpYyc7XHJcbiAgICB0aGlzLnNldHRpbmdzLmRpc3BsYXlOdW1iZXJzID0gdGhpcy5zZXR0aW5ncy5kaXNwbGF5TnVtYmVycyA9PSBudWxsID8gdHJ1ZSA6IHRoaXMuc2V0dGluZ3MuZGlzcGxheU51bWJlcnM7XHJcbiAgICB0aGlzLnNldHRpbmdzLnByb2dyZXNzU2VjdGlvbkNvbXBsZXRlSWNvbiA9IHRoaXMuc2V0dGluZ3MucHJvZ3Jlc3NTZWN0aW9uQ29tcGxldGVJY29uIHx8ICdmYXMgZmEtY2hlY2stY2lyY2xlJztcclxuICAgIHRoaXMuc2V0dGluZ3MucHJvZ3Jlc3NTZWN0aW9uRnV0dXJlSWNvbiA9IHRoaXMuc2V0dGluZ3MucHJvZ3Jlc3NTZWN0aW9uRnV0dXJlSWNvbiB8fCAnZmFyIGZhLWNpcmNsZSc7XHJcbiAgICB0aGlzLnNldHRpbmdzLnByb2dyZXNzU2VjdGlvbkN1cnJlbnRJY29uID0gdGhpcy5zZXR0aW5ncy5wcm9ncmVzc1NlY3Rpb25DdXJyZW50SWNvbiB8fCAnZmFzIGZhLWNpcmNsZSc7XHJcbiAgICB0aGlzLnNldHRpbmdzLnByb2dyZXNzTWVudUNvbXBsZXRlSWNvbiA9IHRoaXMuc2V0dGluZ3MucHJvZ3Jlc3NNZW51Q29tcGxldGVJY29uIHx8ICdmYXIgZmEtY2hlY2snO1xyXG4gICAgdGhpcy5zZXR0aW5ncy5zaG93UHJvZ3Jlc3NCYXIgPSB0aGlzLnNldHRpbmdzLnNob3dQcm9ncmVzc0JhciA9PSBudWxsID8gdHJ1ZSA6IHRoaXMuc2V0dGluZ3Muc2hvd1Byb2dyZXNzQmFyXHJcbiAgICB0aGlzLnNldHRpbmdzLnNpZGVOYXZXaWR0aERlc2t0b3AgPSB0aGlzLnNldHRpbmdzLnNpZGVOYXZXaWR0aERlc2t0b3AgfHwgJzM1MCc7XHJcbiAgICB0aGlzLnNldHRpbmdzLnNpZGVOYXZXaWR0aE1vYmlsZSA9IHRoaXMuc2V0dGluZ3Muc2lkZU5hdldpZHRoTW9iaWxlIHx8ICczNTAnO1xyXG4gICAgdGhpcy5zZXR0aW5ncy5vdmVycmlkZU5hdmlnYXRpb24gPSB0aGlzLnNldHRpbmdzLm92ZXJyaWRlTmF2aWdhdGlvbiB8fCBmYWxzZTtcclxuICAgIHRoaXMuc2V0dGluZ3MucHJvZ3Jlc3NNZW51V2lkdGggPSB0aGlzLnNldHRpbmdzLnByb2dyZXNzTWVudVdpZHRoIHx8ICcyODAnO1xyXG4gICAgdGhpcy5zZXR0aW5ncy51c2VDdXN0b21Nb2JpbGVGb290ZXIgPSB0aGlzLnNldHRpbmdzLnVzZUN1c3RvbU1vYmlsZUZvb3RlciAhPSBudWxsID8gdGhpcy5zZXR0aW5ncy51c2VDdXN0b21Nb2JpbGVGb290ZXIgOiBmYWxzZTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInNvZi1hci1uYXYtY29udGFpbmVyXCJcclxuICBbc3R5bGUudG9wXT1cIm1vYmlsZVF1ZXJ5Lm1hdGNoZXMgJiYgYWR2YW5jZWRTZXR0aW5ncy50b3BHYXBNb2JpbGUgPyBhZHZhbmNlZFNldHRpbmdzLnRvcEdhcE1vYmlsZSArICdweCcgOiBzZXR0aW5ncy5oZWFkZXJIZWlnaHQgKyAncHgnXCJcclxuICBbY2xhc3Muc29mLWFyLW5hdi1tb2JpbGVdPVwibW9iaWxlUXVlcnkubWF0Y2hlc1wiPlxyXG4gIDxkaXYgKm5nSWY9XCJzaG93TWVzc2FnZVwiIG0tYS0wIGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW4gY2VudGVyXCIgc3dzLWFsZXJ0LS1zZWNvbmRhcnkgcm9sZT1cImFsZXJ0XCI+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgIDxpICpuZ0lmPVwic2hvd0NoZWNrTWFya1wiIG0tci01IG0tbC01IGNsYXNzPVwiZmFzIGZhLWNoZWNrLWNpcmNsZSBpY29uLWNvbnRhaW5lclwiPjwvaT5cclxuICAgICAgPHAgY2xhc3M9XCJtZXNzYWdlLWNvbnRhaW5lclwiIG0tci01IG0tbC01IFtpbm5lckh0bWxdPVwibWVzc2FnZSB8IHRyYW5zbGF0ZVwiPjwvcD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiPlxyXG4gICAgICA8YnV0dG9uIGlkPVwiYnRuQ2xvc2VcIiAoY2xpY2spPVwiaGlkZSgpXCIgbWF0LWljb24tYnV0dG9uIFthdHRyLmFyaWEtbGFiZWxdPVwiJ2NvbW1vbi5jbG9zZScgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmFsIGZhLXRpbWVzIGZhLWxnXCI+PC9pPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8YnV0dG9uIGlkPVwic29mLWFyLW5hdi1idG4tbWVudVwiIGFyaWEtbGFiZWw9XCJNZW51IEJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCJcclxuICAgIChjbGljayk9XCJzbmF2LnRvZ2dsZSgpXCIgY2xhc3M9XCJzb2YtYXItbmF2LW1lbnUtYnRuXCJcclxuICAgIFtjbGFzcy5oaWRkZW5dPVwiIShtb2JpbGVRdWVyeS5tYXRjaGVzIHx8IHNldHRpbmdzLmFsbG93TmF2VG9nZ2xlKSB8fCBzZXR0aW5ncy5oaWRlTmF2aWdhdGlvblwiPlxyXG4gICAgPHNwYW4gKm5nSWY9XCJpc05hdk9wZW47IGVsc2UgY2xvc2VkSWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwic29mLWFyLW5hdi1tZW51LWljb25cIj5cclxuICAgICAgPGkgY2xhc3M9XCJ7e3NldHRpbmdzLmZvbnRBd2Vzb21lTWVudUljb259fSBtZW51LWljb25cIj48L2k+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8bmctdGVtcGxhdGUgI2Nsb3NlZEljb24+XHJcbiAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwic29mLWFyLW5hdi1tZW51LWljb25cIj5cclxuICAgICAgICA8aSBjbGFzcz1cInt7c2V0dGluZ3MuZm9udEF3ZXNvbWVNZW51SWNvbkNsb3NlZH19IG1lbnUtaWNvblwiPjwvaT5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPnt7c2V0dGluZ3MubWVudUJ1dHRvblNSVGV4dCB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gIDwvYnV0dG9uPlxyXG5cclxuICA8bWF0LXNpZGVuYXYtY29udGFpbmVyIGF1dG9zaXplIGNsYXNzPVwic29mLWFyLW5hdi1zaWRlbmF2LWNvbnRhaW5lclwiIFtzdHlsZS5tYXJnaW5Ub3AucHhdPVwiXHJcbiAgICAgIG1vYmlsZVF1ZXJ5Lm1hdGNoZXMgPyBhZHZhbmNlZFNldHRpbmdzLm1hcmdpblRvcE1vYmlsZSA6IGFkdmFuY2VkU2V0dGluZ3MubWFyZ2luVG9wRGVza3RvcFwiPlxyXG4gICAgPG1hdC1zaWRlbmF2IFtkaXNhYmxlQ2xvc2VdPVwiIW1vYmlsZVF1ZXJ5Lm1hdGNoZXNcIiBjbGFzcz1cInNvZi1hci1uYXYtc2lkZW5hdlwiICNzbmF2XHJcbiAgICAgIFttb2RlXT1cIm1vYmlsZVF1ZXJ5Lm1hdGNoZXMgPyAnb3ZlcicgOiAnc2lkZSdcIiBbZml4ZWRJblZpZXdwb3J0XT1cIm1vYmlsZVF1ZXJ5Lm1hdGNoZXNcIlxyXG4gICAgICBbZml4ZWRUb3BHYXBdPVwibW9iaWxlUXVlcnkubWF0Y2hlcyA/IGFkdmFuY2VkU2V0dGluZ3MudG9wR2FwTW9iaWxlIDogYWR2YW5jZWRTZXR0aW5ncy50b3BHYXBEZXNrdG9wXCJcclxuICAgICAgW29wZW5lZF09XCIhbW9iaWxlUXVlcnkubWF0Y2hlcyAmJiAhc2V0dGluZ3MuaGlkZU5hdmlnYXRpb24gJiYgc2V0dGluZ3MubWVudVN0eWxlIT09J3Byb2dyZXNzJyBcIlxyXG4gICAgICBbc3R5bGUud2lkdGhdPVwibW9iaWxlUXVlcnkubWF0Y2hlcyA/IHNldE5hdldpZHRoKHNldHRpbmdzLnNpZGVOYXZXaWR0aE1vYmlsZSkgOiBzZXROYXZXaWR0aChzZXR0aW5ncy5zaWRlTmF2V2lkdGhEZXNrdG9wKVwiXHJcbiAgICAgIFtuZ1N0eWxlXT1cIntiYWNrZ3JvdW5kOm1vYmlsZVF1ZXJ5Lm1hdGNoZXMgPyB0aGVtZVNldHRpbmdzPy5tb2JpbGVCZ0NvbG9yIDogdW5kZWZpbmVkfVwiPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiIXNldHRpbmdzLmRpc2FibGVVc2VybmFtZU1vYmlsZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2JpbGVRdWVyeS5tYXRjaGVzICYmIHVzZXJOYW1lICYmICFzZXR0aW5ncy5jdXN0b21Vc2VyTmFtZVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1c2VyLW5hbWVcIj5cclxuICAgICAgICAgICAge3t1c2VyTmFtZX19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vYmlsZVF1ZXJ5Lm1hdGNoZXMgJiYgc2V0dGluZ3MuY3VzdG9tVXNlck5hbWVcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXNlci1uYW1lXCI+XHJcbiAgICAgICAgICAgIHt7c2V0dGluZ3MuY3VzdG9tVXNlck5hbWUgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSBOYXYgSGVhZGVyIENvbnRlbnQgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJuYXYtaGVhZGVyLWNvbnRlbnRcIj5cclxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc29mLWFyLW5hdi1oZWFkZXJdXCI+IDwvbmctY29udGVudD5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIFN0YXRpYyBOYXZpZ2F0aW9uIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibmF2LWNvbnRlbnQtaXRlbSBzaWRlbmF2LWJhY2tncm91bmRcIiAqbmdJZj1cInNldHRpbmdzLm1lbnVTdHlsZSA9PT0gJ3N0YXRpYydcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cInsncGFkZGluZy1ib3R0b20ucHgnOiAoZm9vdGVySXRlbUNvdW50KjY0KSsxMjh9XCI+XHJcbiAgICAgICAgPG5hdiAqbmdJZj1cInNldHRpbmdzLm1lbnVTdHlsZSA9PT0gJ3N0YXRpYydcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidtYWluJ1wiPlxyXG4gICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IG5hdiBvZiBuYXZpZ2F0aW9uRGF0YVwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJuYXY/LnN1Yk5vZGVzPy5sZW5ndGggJiYgIW5hdi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtYWNjb3JkaW9uPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBbZXhwYW5kZWRdPVwibmF2LmV4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIFtuZ0NsYXNzXT1cInsgJ3NvZi1hci1uYXYtc2VsZWN0ZWQnOiBpc05hdlNlbGVjdGVkKG5hdikgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBOYXZpZ2F0aW9uIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBJZiB0aGVyZSBpcyBhIHJvdXRlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibmF2Py5yb3V0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbmF2LWxpc3QgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiIFthdHRyLnJvbGVdPVwibnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJuYXYtaXRlbVwiIG1hdC1saXN0LWl0ZW0gW3JvdXRlckxpbmtdPVwibmF2Py5yb3V0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIlsnc29mLWFyLW5hdi1hY3RpdmUtcm91dGUnXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibmF2Py5mb250QXdlc29tZUljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cImljb24tc3R5bGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ7e25hdj8uZm9udEF3ZXNvbWVJY29ufX1cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzb2YtYXItbmF2LWhlYWRlci10ZXh0XCI+e3tuYXYudGV4dCB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW5hdi1saXN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBJZiB0aGVyZSBpcyBub3QgYSByb3V0ZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFuYXY/LnJvdXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1uYXYtbGlzdCBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCIgW2F0dHIucm9sZV09XCJudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cIm5hdi1pdGVtXCIgbWF0LWxpc3QtaXRlbSBbcm91dGVyTGlua0FjdGl2ZV09XCJbJ3NvZi1hci1uYXYtYWN0aXZlLXJvdXRlJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5hdj8uZm9udEF3ZXNvbWVJY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJpY29uLXN0eWxpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwie3tuYXY/LmZvbnRBd2Vzb21lSWNvbn19XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic29mLWFyLW5hdi1oZWFkZXItdGV4dFwiPnt7bmF2LnRleHQgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1uYXYtbGlzdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gU3ViTmF2IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LW5hdi1saXN0IFtuZ0NsYXNzXT1cInsgJ3NvZi1hci1uYXYtc2VsZWN0ZWQnOiBpc05hdlNlbGVjdGVkKHN1Ym5hdikgfVwiIGNsYXNzPVwic3VibmF2LWNvbnRlbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCIgKm5nRm9yPVwibGV0IHN1Ym5hdiBvZiBuYXY/LnN1Yk5vZGVzXCIgKGNsaWNrKT1cImNsb3NlTmF2aWdhdGlvbkZvck1vYmlsZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIucm9sZV09XCJudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWl0ZW0gbmF2LWl0ZW0tbWFyZ2luXCIgbWF0LWxpc3QtaXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIlsnc29mLWFyLW5hdi1zdWItYWN0aXZlLXJvdXRlJ11cIiBbcm91dGVyTGlua109XCJzdWJuYXYucm91dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiKG5hdi50ZXh0IHwgdHJhbnNsYXRlKSArICcgJyArIChzdWJuYXYudGV4dCB8IHRyYW5zbGF0ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNvZi1hci1uYXYtaGVhZGVyLXRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIobmF2LnRleHQgfCB0cmFuc2xhdGUpICsgJyAnICsgKHN1Ym5hdi50ZXh0IHwgdHJhbnNsYXRlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzdWJuYXYudGV4dCB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1uYXYtbGlzdD5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtYWNjb3JkaW9uPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwhLS0gSWYgc3Vibm9kZXMgYXJlIG5vdCB0aGVyZSAtLT5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFuYXY/LnN1Yk5vZGVzPy5sZW5ndGggJiYgIW5hdj8uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gSWYgdGhlcmUgaXMgYSByb3V0ZSAtLT5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5hdj8ucm91dGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LW5hdi1saXN0IFtuZ0NsYXNzXT1cInsgJ3NvZi1hci1uYXYtc2VsZWN0ZWQnOiBpc05hdlNlbGVjdGVkKG5hdikgfVwiIGNsYXNzPVwibmF2LWhlYWRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCIgKGNsaWNrKT1cImNsb3NlTmF2aWdhdGlvbkZvck1vYmlsZSgpXCIgW2F0dHIucm9sZV09XCJudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cIm5hdi1pdGVtIG5hdi1pdGVtLW1hcmdpblwiIG1hdC1saXN0LWl0ZW0gW3JvdXRlckxpbmtdPVwibmF2Py5yb3V0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIlsnc29mLWFyLW5hdi1hY3RpdmUtcm91dGUnXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibmF2Py5mb250QXdlc29tZUljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cImljb24tc3R5bGluZ1wiPjxpIGNsYXNzPVwie3tuYXY/LmZvbnRBd2Vzb21lSWNvbn19XCI+PC9pPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic29mLWFyLW5hdi1oZWFkZXItdGV4dFwiPnt7bmF2LnRleHQgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1uYXYtbGlzdD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gSWYgdGhlcmUgaXMgbm90IGEgcm91dGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbmF2Py5yb3V0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtbmF2LWxpc3QgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiIFthdHRyLnJvbGVdPVwibnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJuYXYtaXRlbVwiIG1hdC1saXN0LWl0ZW0gW3JvdXRlckxpbmtBY3RpdmVdPVwiWydzb2YtYXItbmF2LWFjdGl2ZS1yb3V0ZSddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJuYXY/LmZvbnRBd2Vzb21lSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiaWNvbi1zdHlsaW5nXCI+PGkgY2xhc3M9XCJ7e25hdj8uZm9udEF3ZXNvbWVJY29ufX1cIj48L2k+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzb2YtYXItbmF2LWhlYWRlci10ZXh0XCI+e3tuYXYudGV4dCB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW5hdi1saXN0PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgPC91bD5cclxuICAgICAgICA8L25hdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIFN0ZXBwZXIgLS0+XHJcbiAgICAgIDxtYXQtdmVydGljYWwtc3RlcHBlciAqbmdJZj1cInNldHRpbmdzLm1lbnVTdHlsZSA9PT0gJ3N0ZXBwZXInXCIgW3NlbGVjdGVkSW5kZXhdPVwic2VsZWN0ZWRQYXJlbnRJbmRleFwiICN2ZXJ0U3RlcHBlclxyXG4gICAgICAgIFtsaW5lYXJdPVwiZmFsc2VcIiBjbGFzcz1cInNpZGVuYXYtYmFja2dyb3VuZFwiPlxyXG4gICAgICAgIDwhLS0gQWx0ZXJuYXRlIHN0ZXAgc3RhdGVzIGZvciBuYXYsIGljYW9ucyBzaG91bGQgYWx3YXlzIGJlIHdoaXRlIG9ubHkgd29ya2VkIHdpdGggc3R5bGVzIC0tPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwcGVySWNvbj1cImNyZWF0ZVwiPlxyXG4gICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFkIGZhLXBlbmNpbC1hbHRcIiBzdHlsZT1cImNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50XCI+PC9pPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBwZXJJY29uPVwiZWRpdFwiPlxyXG4gICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFkIGZhLXBlbmNpbC1hbHRcIiBzdHlsZT1cImNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50XCI+PC9pPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBwZXJJY29uPVwiYWN0aXZlXCI+XHJcbiAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYWQgZmEtcGVuY2lsLWFsdFwiIHN0eWxlPVwiY29sb3I6IHdoaXRlICFpbXBvcnRhbnRcIj48L2k+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcHBlckljb249XCJkb25lXCI+XHJcbiAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2hlY2tcIiBzdHlsZT1cImNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50XCI+PC9pPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDwhLS0gbmF2IHN0ZXBzIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG5hdiBvZiBuYXZpZ2F0aW9uRGF0YTsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgPG1hdC1zdGVwICpuZ0lmPVwiIW5hdj8uaGlkZGVuXCIgc3RhdGU9XCJ7eyBkZXRlcm1pbmVTdGVwU3RhdGUoaSwgLTEpIH19XCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwTGFiZWwgKm5nSWY9XCIhbmF2LmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgaWQ9XCJkaXZTdGVwe3sgaSB9fVwiIHN0eWxlPVwiaGVpZ2h0OiA3MnB4XCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCJcclxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyBuYXYudGV4dCB8IHRyYW5zbGF0ZSB9fVwiIFttYXRUb29sdGlwUG9zaXRpb25dPVwiJ2FmdGVyJ1wiIGZ4RmxleD1cIjEwMCVcIj5cclxuICAgICAgICAgICAgICAgIDxhIGlkPVwic3RlcHt7IGkgfX1cIiBmeEZsZXg9XCIxMDAlXCIgY2xhc3M9XCJtYXQtYnV0dG9uIHN0ZXAtbGlua1wiIFtyb3V0ZXJMaW5rXT1cIm5hdi5yb3V0ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgY29sb3I6IHRoZW1lU2V0dGluZ3M/LmZvbnRDb2xvciB9XCIgW3JvdXRlckxpbmtBY3RpdmVdPVwiWydzdGVwLWFjdGl2ZSddXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IG5hdi50ZXh0IHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwibmF2LnN0ZXBDb250ZW50IHwgdHJhbnNsYXRlXCI+PC9wPlxyXG4gICAgICAgICAgICA8IS0tIHN1YiBuYXYgLS0+XHJcbiAgICAgICAgICAgIDxtYXQtdmVydGljYWwtc3RlcHBlciAqbmdJZj1cIm5hdj8uc3ViTm9kZXNcIiBbc2VsZWN0ZWRJbmRleF09XCJzZWxlY3RlZENoaWxkSW5kZXhlc1tpXVwiIFtsaW5lYXJdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICN2ZXJ0U3RlcHBlcklubmVyPlxyXG4gICAgICAgICAgICAgIDwhLS0gQWx0ZXJuYXRlIHN0ZXAgc3RhdGVzIGZvciBzdWIgbmF2LCBpY29ucyBzaG91bGQgYWx3YXlzIGJlIHdoaXRlIG9ubHkgd29ya2VkIHdpdGggc3R5bGVzIC0tPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwcGVySWNvbj1cImNyZWF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFkIGZhLXBlbmNpbC1hbHRcIiBzdHlsZT1cImNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBwZXJJY29uPVwiZWRpdFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFkIGZhLXBlbmNpbC1hbHRcIiBzdHlsZT1cImNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBwZXJJY29uPVwiZG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZWNrXCIgc3R5bGU9XCJjb2xvcjogd2hpdGUgIWltcG9ydGFudFwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwcGVySWNvbj1cImFjdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBlbmNpbC1hbHRcIiBzdHlsZT1cImNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBwZXJJY29uPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPCEtLSBzdWIgbmF2IHN0ZXBzIC0tPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1Ym5hdiBvZiBuYXY/LnN1Yk5vZGVzOyBsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LXN0ZXAgc3RhdGU9XCJ7eyBkZXRlcm1pbmVTdGVwU3RhdGUoaSwgaikgfX1cIiAqbmdJZj1cIiFzdWJuYXYuaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwTGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImRpdlN1YlN0ZXB7eyBpIH19LXt7IGogfX1cIiBzdHlsZT1cImhlaWdodDogNzJweFwiIGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3sgc3VibmF2LnRleHQgfCB0cmFuc2xhdGUgfX1cIiBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cIidhZnRlcidcIiBmeEZsZXg9XCIxMDAlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YSBpZD1cInN1YlN0ZXB7eyBpIH19LXt7IGogfX1cIiBjbGFzcz1cIm1hdC1idXR0b24gc3RlcC1saW5rXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyBjb2xvcjogdGhlbWVTZXR0aW5ncz8uZm9udENvbG9yIH1cIiBbcm91dGVyTGlua109XCJzdWJuYXYucm91dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZV09XCJbJ3N0ZXAtYWN0aXZlJ11cIj57eyBzdWJuYXYudGV4dCB8IHRyYW5zbGF0ZSB9fTwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPHAgW2lubmVySFRNTF09XCJzdWJuYXYuc3RlcENvbnRlbnQgfCB0cmFuc2xhdGVcIj48L3A+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1zdGVwPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPC9tYXQtdmVydGljYWwtc3RlcHBlcj5cclxuICAgICAgICAgIDwvbWF0LXN0ZXA+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8L21hdC12ZXJ0aWNhbC1zdGVwcGVyPlxyXG5cclxuICAgICAgPCEtLSBOYXYgRm9vdGVyIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibmF2LWZvb3Rlci1pdGVtXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNldHRpbmdzLm1lbnVTdHlsZSA9PT0gJ3N0YXRpYydcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG5hdiBvZiBmb290ZXJOYXZpZ2F0aW9uRGF0YVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwhLS0gRGVza3RvcCBOYXYgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFuYXY/LnN1Yk5vZGVzPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gSWYgdGhlcmUgaXMgYSByb3V0ZSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJuYXY/LnJvdXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtbmF2LWxpc3QgY2xhc3M9XCJuYXYtaGVhZGVyXCIgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWl0ZW0gbmF2LWl0ZW0tbWFyZ2luXCIgbWF0LWxpc3QtaXRlbSBbcm91dGVyTGlua109XCJuYXY/LnJvdXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIlsnc29mLWFyLW5hdi1hY3RpdmUtcm91dGUnXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5hdj8uZm9udEF3ZXNvbWVJY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiaWNvbi1zdHlsaW5nXCI+PGkgY2xhc3M9XCJ7e25hdj8uZm9udEF3ZXNvbWVJY29ufX1cIj48L2k+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e25hdi50ZXh0IHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LW5hdi1saXN0PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIElmIHRoZXJlIGlzIG5vdCBhIHJvdXRlIC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFuYXY/LnJvdXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtbmF2LWxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD1cInNvZi1hci1uYXYtYnRuLW5vZGVcIiBjbGFzcz1cIm5hdi1pdGVtXCIgbWF0LWxpc3QtaXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVdPVwiWydzb2YtYXItbmF2LWFjdGl2ZS1yb3V0ZSddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibmF2Py5mb250QXdlc29tZUljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJpY29uLXN0eWxpbmdcIj48aSBjbGFzcz1cInt7bmF2Py5mb250QXdlc29tZUljb259fVwiPjwvaT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7bmF2LnRleHQgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L21hdC1uYXYtbGlzdD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5hdmlnYXRpb25Gb290ZXJcIj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSB0aGUgbW9iaWxlIHByb2dyZXNzIG1lbnUtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNldHRpbmdzPy5tZW51U3R5bGUgPT09ICdwcm9ncmVzcydcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZW5hdi1iYWNrZ3JvdW5kXCIgW25nU3R5bGVdPVwieydwYWRkaW5nLWJvdHRvbS5weCc6IChmb290ZXJJdGVtQ291bnQqNjQpKzEyOH1cIj5cclxuICAgICAgICAgIDxtYXQtYWNjb3JkaW9uPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzdGVwIG9mIG5hdmlnYXRpb25EYXRhOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0ZXAuc3ViTm9kZXMgJiYgc3RlcC5zdWJOb2Rlcy5sZW5ndGggPiAwICYmICFzdGVwLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwgaGlkZVRvZ2dsZSBjbGFzcz1cInByb2dyZXNzLW1vYmlsZS1leHBhbnNpb24tcGFuZWxcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiKCFzdGVwLnZpc2l0ZWQgfHwgc3RlcC5pc0Rpc2FibGVkKSAmJiAhc2V0dGluZ3Mub3ZlcnJpZGVOYXZpZ2F0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgKG9wZW5lZCk9XCJwYW5lbE9wZW5TdGF0ZSA9IHRydWVcIiAoY2xvc2VkKT1cInBhbmVsT3BlblN0YXRlID0gZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGUgY2xhc3M9XCJwcm9ncmVzcy1tb2JpbGUtcGFuZWwtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDogLXdlYmtpdC1maWxsLWF2YWlsYWJsZTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzooIXN0ZXAudmlzaXRlZCB8fCBzdGVwLmlzRGlzYWJsZWQpICYmICFzZXR0aW5ncy5vdmVycmlkZU5hdmlnYXRpb24gJiYgIXN0ZXAuY29tcGxldGUsJ2NvbG9yLXByaW1hcnknOnN0ZXAuY29tcGxldGUgJiYgc3RlcCE9PWFjdGl2ZVBhcmVudE5vZGUsJ3Byb2dyZXNzLW1lbnUtYWN0aXZlJzpzdGVwPT09YWN0aXZlUGFyZW50Tm9kZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInByb2dyZXNzUGFyZW50Tm9kZUljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3N0ZXA6c3RlcH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZXR0aW5ncz8uZGlzcGxheU51bWJlcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2kgPCAxMCA/IFwiMFwiICsgKGkgKyAxKSArIFwiLiBcIiA6IGkgKyBcIiAuIFwiIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmF2LWJ0bi10ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHN0ZXAudGV4dCB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhcGFuZWxPcGVuU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1kb3duIHBhbmVsLWljb25cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBhbmVsT3BlblN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tdXAgcGFuZWwtaWNvblwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtcGFuZWwtZGVzY3JpcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtcGFuZWwtZGVzY3JpcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gbW9iaWxlIHN1YiBtZW51IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtbmF2LW1lbnVcIiAqbmdGb3I9XCJsZXQgc3ViTm9kZSBvZiBzdGVwLnN1Yk5vZGVzOyBsZXQgaWR4ID0gaW5kZXg7XCJcclxuICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cInN0ZXAuc3ViTm9kZXNbaWR4XS5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHJvbGU9XCJsaW5rXCIgaWQ9XCJtb2JpbGVNZW51e3sgaWR4IH19XCIgbWF0LWJ1dHRvbiBjbGFzcz1cInN0ZXAtbGluayBwcm9ncmVzcy1tZW51LW1vYmlsZS1idG5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydjb2xvci1wcmltYXJ5JzpzdWJOb2RlLmNvbXBsZXRlICYmIHN1Yk5vZGUhPT1hY3RpdmVTdWJOb2RlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZV09XCJbJ3Byb2dyZXNzLW1lbnUtYWN0aXZlJ11cIiBbbmdTdHlsZV09XCJ7ICcgY29sb3InOiB0aGVtZVNldHRpbmdzPy5mb250Q29sb3IgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJzdWJOb2RlLnJvdXRlXCIgW2Rpc2FibGVkXT1cIiFzdWJOb2RlLnZpc2l0ZWQgJiYgIXNldHRpbmdzLm92ZXJyaWRlTmF2aWdhdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInByb2dyZXNzU3ViTm9kZUljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntzdWJOb2RlOnN1Yk5vZGV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYXYtbWVudS1idG4tdGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOighc3ViTm9kZS52aXNpdGVkKSAmJiAhc2V0dGluZ3Mub3ZlcnJpZGVOYXZpZ2F0aW9uICYmICFzdWJOb2RlLmNvbXBsZXRlLCdjb2xvci1wcmltYXJ5JzpzdWJOb2RlLmNvbXBsZXRlICYmIHN1Yk5vZGUhPT1hY3RpdmVTdWJOb2RlLCdwcm9ncmVzcy1tZW51LWFjdGl2ZSc6c3ViTm9kZT09PWFjdGl2ZVN1Yk5vZGV9XCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3ViTm9kZS50ZXh0IHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8IS0tIGlmIHRoZXJlIGFyZSBubyBzdWJOb2RlcyAtLT5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKCFzdGVwLnN1Yk5vZGVzIHx8IHN0ZXAuc3ViTm9kZXMubGVuZ3RoPT09MCkgJiYgIXN0ZXAuaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCAjcGFuZWwgaGlkZVRvZ2dsZSAob3BlbmVkKT1cImRpc2FibGVQYW5lbChwYW5lbCxpKVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZ3Jlc3MtbW9iaWxlLWV4cGFuc2lvbi1wYW5lbFwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIoIXN0ZXAudmlzaXRlZCB8fCBzdGVwLmlzRGlzYWJsZWQpICYmICFzZXR0aW5ncy5vdmVycmlkZU5hdmlnYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGUgY2xhc3M9XCJwcm9ncmVzcy1tb2JpbGUtcGFuZWwtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6KCFzdGVwLnZpc2l0ZWQgfHwgc3RlcC5pc0Rpc2FibGVkKSAmJiAhc2V0dGluZ3Mub3ZlcnJpZGVOYXZpZ2F0aW9uICYmICFzdGVwLmNvbXBsZXRlLCdjb2xvci1wcmltYXJ5JzpzdGVwLmNvbXBsZXRlICYmIHN0ZXAhPT1hY3RpdmVQYXJlbnROb2RlLCdwcm9ncmVzcy1tZW51LWFjdGl2ZSc6c3RlcD09PWFjdGl2ZVBhcmVudE5vZGV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJwcm9ncmVzc1BhcmVudE5vZGVJY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntzdGVwOnN0ZXB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2V0dGluZ3M/LmRpc3BsYXlOdW1iZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tpIDwgMTAgPyBcIjBcIiArIChpICsgMSkgKyBcIi4gXCIgOiBpICsgXCIgLiBcIiB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hdi1idG4tdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzdGVwLnRleHQgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtcGFuZWwtZGVzY3JpcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtcGFuZWwtZGVzY3JpcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9tYXQtYWNjb3JkaW9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIHRoZSBwcm9ncmVzcyBtZW51IGxhbmd1YWdlIGFuZCBsb2dvdXQgYnV0dG9ucy0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtZm9vdGVyLWl0ZW0gcHJvZ3Jlc3MtZm9vdGVyXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibmF2aWdhdGlvbkZvb3RlclwiPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L21hdC1zaWRlbmF2PlxyXG4gICAgPG1hdC1zaWRlbmF2LWNvbnRlbnQ+XHJcbiAgICAgIDwhLS0gSG9yaXpvbnRhbCBQcm9ncmVzcyAtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNldHRpbmdzPy5tZW51U3R5bGUgPT09ICdwcm9ncmVzcydcIj5cclxuICAgICAgICA8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cInNldHRpbmdzPy5zaG93UHJvZ3Jlc3NCYXJcIiBtb2RlPVwiZGV0ZXJtaW5hdGVcIiBbdmFsdWVdPVwibmF2UHJvZ3Jlc3NDb3VudFwiXHJcbiAgICAgICAgICBzdHlsZT1cImhlaWdodDogOXB4XCIgY29sb3I9XCJhY2NlbnRcIj5cclxuICAgICAgICA8L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICAgICAgPG5hdiBbYXR0ci5hcmlhLWxhYmVsXT1cIidtYWluJ1wiIGZ4SGlkZS5sdC1tZCBjbGFzcz1cInN0ZXAtdGl0bGVzIGNlbnRlclwiIGZ4TGF5b3V0PVwicm93XCIgc3R5bGU9XCJqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyICFpbXBvcnRhbnRcIlxyXG4gICAgICAgICAgW2NsYXNzLmhpZGRlbl09XCJzZXR0aW5ncy5oaWRlTmF2aWdhdGlvblwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzdGVwIG9mIG5hdmlnYXRpb25EYXRhOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJob3Jpem9udGFsLXByb2dyZXNzLWRpdlwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc3RlcC5zdWJOb2Rlcz8ubGVuZ3RoICYmICFzdGVwLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFtyb3V0ZXJMaW5rXT1cInN0ZXAucm91dGVcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiKCFzdGVwLnZpc2l0ZWQgfHwgc3RlcC5pc0Rpc2FibGVkKSAmJiAhc2V0dGluZ3Mub3ZlcnJpZGVOYXZpZ2F0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9ncmVzcy1tZW51LWJ0blwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY29sb3ItcHJpbWFyeSc6c3RlcC5jb21wbGV0ZSAmJiBzdGVwIT09YWN0aXZlUGFyZW50Tm9kZSwncHJvZ3Jlc3MtbWVudS1hY3RpdmUnOnN0ZXA9PT1hY3RpdmVQYXJlbnROb2RlfVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwicHJvZ3Jlc3NQYXJlbnROb2RlSWNvbnNcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3N0ZXA6c3RlcH1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZXR0aW5ncz8uZGlzcGxheU51bWJlcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e2kgPCAxMCA/IFwiMFwiICsgKGkgKyAxKSArIFwiLiBcIiA6IGkgKyBcIiAuIFwiIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmF2LWJ0bi10ZXh0XCI+e3sgc3RlcC50ZXh0IHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPCEtLSBpZiB0aGVyZSBhcmUgc3Vibm9kZXMgY3JlYXRlIG1lbnVzIGZvciBlYWNoIHN0ZXAgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0ZXAuc3ViTm9kZXMgJiYgc3RlcC5zdWJOb2Rlcy5sZW5ndGggJiYgIXN0ZXAuaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY29sb3ItcHJpbWFyeSc6c3RlcC5jb21wbGV0ZSAmJiBzdGVwIT09YWN0aXZlUGFyZW50Tm9kZSwncHJvZ3Jlc3MtbWVudS1hY3RpdmUnOnN0ZXA9PT1hY3RpdmVQYXJlbnROb2RlfVwiXHJcbiAgICAgICAgICAgICAgICAgIG1hdC1idXR0b24gW2Rpc2FibGVkXT1cIighc3RlcC52aXNpdGVkIHx8IHN0ZXAuaXNEaXNhYmxlZCkgJiYgIXNldHRpbmdzLm92ZXJyaWRlTmF2aWdhdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZ3Jlc3MtbWVudS1idG5cIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwicHJvZ3Jlc3NQYXJlbnROb2RlSWNvbnNcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3N0ZXA6c3RlcH1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZXR0aW5ncz8uZGlzcGxheU51bWJlcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e2kgPCAxMCA/IFwiMFwiICsgKGkgKyAxKSArIFwiLiBcIiA6IGkgKyBcIiAuIFwiIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmF2LWJ0bi10ZXh0XCI+e3sgc3RlcC50ZXh0IHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJzb2YtYXItbWF0LW1lbnUgcHJvZ3Jlc3MtbWVudS1wYW5lbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtbmF2LW1lbnVcIiAqbmdGb3I9XCJsZXQgc3ViTm9kZSBvZiBzdGVwLnN1Yk5vZGVzOyBsZXQgaWR4ID0gaW5kZXg7XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7d2lkdGg6c2V0dGluZ3MucHJvZ3Jlc3NNZW51V2lkdGgrJ3B4J31cIiBbaGlkZGVuXT1cInN0ZXAuc3ViTm9kZXNbaWR4XS5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHJvbGU9XCJsaW5rXCIgaWQ9XCJzdWJtZW51e3sgaWR4IH19XCIgY2xhc3M9XCJzdGVwLWxpbmsgcHJvZ3Jlc3MtbWVudS1idG5cIiBtYXQtbWVudS1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2NvbG9yLXByaW1hcnknOnN1Yk5vZGUuY29tcGxldGUgJiYgc3ViTm9kZSE9PWFjdGl2ZVN1Yk5vZGUsJ2Rpc2FibGVkJzohc3ViTm9kZS52aXNpdGVkICYmICFzZXR0aW5ncy5vdmVycmlkZU5hdmlnYXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIlsncHJvZ3Jlc3MtbWVudS1hY3RpdmUnXVwiIFtuZ1N0eWxlXT1cInsgJyBjb2xvcic6IHRoZW1lU2V0dGluZ3M/LmZvbnRDb2xvciB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cInN1Yk5vZGUucm91dGVcIiBbZGlzYWJsZWRdPVwiIXN1Yk5vZGUudmlzaXRlZCAmJiAhc2V0dGluZ3Mub3ZlcnJpZGVOYXZpZ2F0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LW1lbnUtYnRuLWRpdlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwicHJvZ3Jlc3NTdWJOb2RlSWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7c3ViTm9kZTpzdWJOb2RlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hdi1tZW51LWJ0bi10ZXh0XCI+e3sgc3ViTm9kZS50ZXh0IHx0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmF2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2JpbGUtcHJvZ3Jlc3MtY29udGFpbmVyXCIgZnhIaWRlLmd0LXNtPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy1jb250ZW50IHNvZi1hci1uYXYtY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICA8L21hdC1zaWRlbmF2LWNvbnRlbnQ+XHJcbiAgPC9tYXQtc2lkZW5hdi1jb250YWluZXI+XHJcbiAgPCEtLSBUaGUgcHJvZ3Jlc3MgbWVudSBwYXJlbnQgbm9kZSBpY29uIHRlbXBsYXRlLS0+XHJcbiAgPG5nLXRlbXBsYXRlICNwcm9ncmVzc1BhcmVudE5vZGVJY29ucyBsZXQtc3RlcD0nc3RlcCc+XHJcbiAgICA8c3BhbiAqbmdJZj1cInN0ZXAuY29tcGxldGUgJiYgc3RlcCAhPT0gYWN0aXZlUGFyZW50Tm9kZVwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ2FybWF0dXJlLnNvZi1wcm9ncmVzcy1iYXIuc3RlcC1sYWJlbHMuY29tcGxldGUnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwie3sgc2V0dGluZ3MucHJvZ3Jlc3NTZWN0aW9uQ29tcGxldGVJY29uIH19IGNvbG9yLXByaW1hcnkgcHJvZ3Jlc3MtbmF2LWljb25cIlxyXG4gICAgICAgIFt0aXRsZV09XCInYXJtYXR1cmUuc29mLXByb2dyZXNzLWJhci5zdGVwLWxhYmVscy5jb21wbGV0ZScgfCB0cmFuc2xhdGVcIj48L2k+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c3BhbiAqbmdJZj1cInN0ZXAgPT09IGFjdGl2ZVBhcmVudE5vZGVcIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidhcm1hdHVyZS5zb2YtcHJvZ3Jlc3MtYmFyLnN0ZXAtbGFiZWxzLmluLXByb2dyZXNzJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICA8aSBjbGFzcz1cInt7IHNldHRpbmdzLnByb2dyZXNzU2VjdGlvbkN1cnJlbnRJY29uIH19IGNvbG9yLXByaW1hcnkgcHJvZ3Jlc3MtbmF2LWljb25cIlxyXG4gICAgICAgIFt0aXRsZV09XCInYXJtYXR1cmUuc29mLXByb2dyZXNzLWJhci5zdGVwLWxhYmVscy5pbi1wcm9ncmVzcycgfCB0cmFuc2xhdGVcIj48L2k+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c3BhbiAqbmdJZj1cIiFzdGVwLmNvbXBsZXRlICYmIHN0ZXAgIT09IGFjdGl2ZVBhcmVudE5vZGVcIlxyXG4gICAgICBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzohc3RlcC52aXNpdGVkICYmICFzZXR0aW5ncy5vdmVycmlkZU5hdmlnYXRpb259XCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInYXJtYXR1cmUuc29mLXByb2dyZXNzLWJhci5zdGVwLWxhYmVscy5ub3QtZG9uZScgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgPGkgY2xhc3M9XCJ7eyBzZXR0aW5ncy5wcm9ncmVzc1NlY3Rpb25GdXR1cmVJY29uIH19IHByb2dyZXNzLW5hdi1pY29uXCJcclxuICAgICAgICBbdGl0bGVdPVwiJ2FybWF0dXJlLnNvZi1wcm9ncmVzcy1iYXIuc3RlcC1sYWJlbHMubm90LWRvbmUnIHwgdHJhbnNsYXRlXCI+PC9pPlxyXG4gICAgPC9zcGFuPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPCEtLSBUaGUgcHJvZ3Jlc3MgbWVudSBzdWIgbm9kZSBpY29uIHRlbXBsYXRlLS0+XHJcbiAgPG5nLXRlbXBsYXRlICNwcm9ncmVzc1N1Yk5vZGVJY29ucyBsZXQtc3ViTm9kZT0nc3ViTm9kZSc+XHJcbiAgICA8c3BhbiBjbGFzcz1cInByb2dyZXNzLW1lbnUtaWNvblwiICpuZ0lmPVwic3ViTm9kZS5jb21wbGV0ZSAmJiBhY3RpdmVTdWJOb2RlICE9PSBzdWJOb2RlXCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInYXJtYXR1cmUuc29mLXByb2dyZXNzLWJhci5zdGVwLWxhYmVscy5jb21wbGV0ZScgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgPGkgY2xhc3M9XCJ7e3NldHRpbmdzLnByb2dyZXNzTWVudUNvbXBsZXRlSWNvbn19IGNvbG9yLXByaW1hcnkgcHJvZ3Jlc3MtbmF2LWljb25cIlxyXG4gICAgICAgIFt0aXRsZV09XCInYXJtYXR1cmUuc29mLXByb2dyZXNzLWJhci5zdGVwLWxhYmVscy5jb21wbGV0ZScgfCB0cmFuc2xhdGVcIj48L2k+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c3BhbiBjbGFzcz1cInByb2dyZXNzLW1lbnUtaWNvblwiICpuZ0lmPVwiYWN0aXZlU3ViTm9kZSA9PT0gc3ViTm9kZVwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ2FybWF0dXJlLnNvZi1wcm9ncmVzcy1iYXIuc3RlcC1sYWJlbHMuaW4tcHJvZ3Jlc3MnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwie3sgc2V0dGluZ3MucHJvZ3Jlc3NTZWN0aW9uQ3VycmVudEljb24gfX0gY29sb3ItcHJpbWFyeSBwcm9ncmVzcy1uYXYtaWNvblwiXHJcbiAgICAgICAgW3RpdGxlXT1cIidhcm1hdHVyZS5zb2YtcHJvZ3Jlc3MtYmFyLnN0ZXAtbGFiZWxzLmluLXByb2dyZXNzJyB8IHRyYW5zbGF0ZVwiPjwvaT5cclxuICAgIDwvc3Bhbj5cclxuICAgIDxzcGFuIGNsYXNzPVwicHJvZ3Jlc3MtbWVudS1pY29uXCIgKm5nSWY9XCIhc3ViTm9kZS5jb21wbGV0ZSAmJiBhY3RpdmVTdWJOb2RlICE9PSBzdWJOb2RlXCJcclxuICAgICAgW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6IXN1Yk5vZGUudmlzaXRlZCAmJiAhc2V0dGluZ3Mub3ZlcnJpZGVOYXZpZ2F0aW9ufVwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ2FybWF0dXJlLnNvZi1wcm9ncmVzcy1iYXIuc3RlcC1sYWJlbHMubm90LWRvbmUnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwie3sgc2V0dGluZ3MucHJvZ3Jlc3NTZWN0aW9uRnV0dXJlSWNvbiB9fSBwcm9ncmVzcy1uYXYtaWNvblwiXHJcbiAgICAgICAgW3RpdGxlXT1cIidhcm1hdHVyZS5zb2YtcHJvZ3Jlc3MtYmFyLnN0ZXAtbGFiZWxzLm5vdC1kb25lJyB8IHRyYW5zbGF0ZVwiPjwvaT5cclxuICAgIDwvc3Bhbj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDwhLS0gVGhlIG5hdmlnYXRpb24gZm9vdGVyIHRlbXBsYXRlIGZvciBsYW5ndWFnZSBhbmQgbG9nb3V0IGJ1dHRvbnMgLS0+XHJcbiAgPG5nLXRlbXBsYXRlICNuYXZpZ2F0aW9uRm9vdGVyPlxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NvZi1hci1uYXYtbW9iaWxlLWZvb3Rlcl1cIj4gPC9uZy1jb250ZW50PlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzZXR0aW5ncy51c2VDdXN0b21Nb2JpbGVGb290ZXJcIj5cclxuICAgICAgPCEtLSBUaGUgbGFuZ3VhZ2UgYnV0dG9uIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nSWY9XCJsYW5ndWFnZVNldHRpbmdzPy5kaXNwbGF5TGFuZ3VhZ2VPcHRpb25zICYmIGxhbmd1YWdlU2V0dGluZ3M/Lmxhbmd1YWdlcy5sZW5ndGggPiAyICYmIG1vYmlsZVF1ZXJ5Lm1hdGNoZXNcIj5cclxuICAgICAgICA8YnV0dG9uIGlkPVwic29mLWFyLW5hdi1sYW5nLWRyb3Bkb3duXCIgbWF0LXN0cm9rZWQtYnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cImZhZGVkLWJ1dHRvbi01MCBsYW5ndWFnZS1idXR0b24gbmF2aWdhdGlvbkZvb3RlclwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJoZWFkZXJMYW5ndWFnZU1lbnVcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYW5ndWFnZVNldHRpbmdzLmJ1dHRvblRleHQgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiaWNvbi1zdHlsaW5nXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWdsb2JlIGxhbmd1YWdlLWdsb2JlXCI+PC9pPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAge3tsYW5ndWFnZVNldHRpbmdzLmJ1dHRvblRleHQgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxtYXQtbWVudSAjaGVhZGVyTGFuZ3VhZ2VNZW51PVwibWF0TWVudVwiIGNsYXNzPVwic29mLWFyLW1hdC1tZW51XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IGxhbmcgb2YgbGFuZ3VhZ2VTZXR0aW5ncy5sYW5ndWFnZXNcIiAoY2xpY2spPVwic2V0TGFuZ3VhZ2UkLmVtaXQobGFuZylcIlxyXG4gICAgICAgICAgICBpZD1cImFwcGx5LWxhbmctYnRuLXt7bGFuZ319XCI+XHJcbiAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCJhdXRvXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBsYW5nIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCJhdXRvXCIgZnhMYXlvdXRBbGlnbj1cImVuZCBlbmRcIj5cclxuICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY3VycmVudExhbmcgPT09IGxhbmdcIiBjbGFzcz1cImZhZCBmYS1jaGVjayBzZWxlY3RlZC1sYW5ndWFnZS1pY29uXCI+PC9pPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nSWY9XCJsYW5ndWFnZVNldHRpbmdzPy5kaXNwbGF5TGFuZ3VhZ2VPcHRpb25zICYmIGxhbmd1YWdlU2V0dGluZ3M/Lmxhbmd1YWdlcy5sZW5ndGggPT09IDIgJiYgbW9iaWxlUXVlcnkubWF0Y2hlc1wiPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJsYW5ndWFnZVNldHRpbmdzPy5sYW5ndWFnZXMubGVuZ3RoID09PSAyXCIgaWQ9XCJzb2YtYXItbmF2LWxhbmctYnV0dG9uXCIgbWF0LXN0cm9rZWQtYnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cImZhZGVkLWJ1dHRvbi01MCBsYW5ndWFnZS1idXR0b24gbmF2aWdhdGlvbkZvb3RlclwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxhbmd1YWdlU2V0dGluZ3MuYnV0dG9uVGV4dCB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJzZXRMYW5ndWFnZSQuZW1pdCgpXCI+XHJcbiAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cImljb24tc3R5bGluZ1wiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1nbG9iZSBsYW5ndWFnZS1nbG9iZVwiPjwvaT5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIHt7b3RoZXJMYW5nVGV4dCB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8IS0tIFRoZSBsb2dvdXQgYnV0dG9uLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2JpbGVRdWVyeS5tYXRjaGVzICYmIHVzZXJOYW1lXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBpZD1cInNvZi1hci1oZWFkZXItbGFuZy1idXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJuYXZpZ2F0aW9uRm9vdGVyXCIgKGNsaWNrKT1cImxvZ091dCgpXCI+XHJcbiAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cImljb24tc3R5bGluZ1wiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1zaWduLW91dC1hbHRcIj48L2k+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICB7e2xvZ091dFRleHQgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvZGl2PiJdfQ==
|
|
560
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcm1hdHVyZS9zcmMvbGliL25hdmlnYXRpb24vY29tcG9uZW50cy9uYXZpZ2F0aW9uL25hdmlnYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJtYXR1cmUvc3JjL2xpYi9uYXZpZ2F0aW9uL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlELE9BQU8sRUFBb0MsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLFFBQVEsRUFBRSxNQUFNLEVBQWEsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkxSyxPQUFPLEVBQUUsYUFBYSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVeEM7OztHQUdHO0FBU0gsTUFBTSxPQUFPLDJCQUEyQjtJQXNDdEMsaUNBQWlDO0lBQ2pDLElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBZ0ZEOzs7Ozs7OztPQVFHO0lBQ0gsWUFDVyxpQkFBb0MsRUFDcEMsS0FBbUIsRUFDWCxNQUFjLEVBQ3ZCLGFBQTRCLEVBQ25CLG9CQUEwQyxFQUM5QixhQUFnQztRQUxwRCxzQkFBaUIs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QUEvQixLQUFLO2dCQUdVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBR1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUdVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBR1UsVUFBVTtzQkFBekIsS0FBSztnQkFHVyxZQUFZO3NCQUE1QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWVkaWFNYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XHJcbmltcG9ydCB7IFNURVBQRVJfR0xPQkFMX09QVElPTlMgfSBmcm9tICdAYW5ndWxhci9jZGsvc3RlcHBlcic7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdEV4cGFuc2lvblBhbmVsIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcclxuaW1wb3J0IHsgTWF0U2lkZW5hdiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xyXG5pbXBvcnQgeyBNYXRTdGVwcGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc3RlcHBlcic7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEJhc2VDb25maWcgfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy9iYXNlLWNvbmZpZyc7XHJcbmltcG9ydCB7IEF1dGhvcml6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9hdXRob3JpemF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYW5uZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9iYW5uZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9iYXNlLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGVhZGVyTGFuZ3VhZ2VTZXR0aW5ncyB9IGZyb20gJy4uLy4uLy4uL2hlYWRlci9tb2RlbHMvaGVhZGVyLWxhbmd1YWdlLnNldHRpbmdzJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvblRoZW1lU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9tb2RlbHMvbmF2LXRoZW1lLnNldHRpbmdzJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkFkdmFuY2VkU2V0dGluZ3MsIE5hdmlnYXRpb25TZXR0aW5ncyB9IGZyb20gJy4uLy4uL21vZGVscy9uYXYuc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBOYXZOb2RlLCBTdWJOYXZOb2RlcyB9IGZyb20gJy4uLy4uL21vZGVscy9uYXZpZ2F0aW9uJztcclxuXHJcbi8qKlxyXG4gKiBUaGUgTmF2aWdhdGlvbiBDb21wb25lbnRcclxuICogQGRlcHJlY2F0ZWQgcGxlYXNlIHVzZSBgU29mTmF2UGFuZWxDb21wb25lbnRgIG1vdmluZyBmb3J3YXJkIFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzb2YtYXItbmF2aWdhdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25hdmlnYXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25hdmlnYXRpb24uY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFt7XHJcbiAgICBwcm92aWRlOiBTVEVQUEVSX0dMT0JBTF9PUFRJT05TLCB1c2VWYWx1ZTogeyBkaXNwbGF5RGVmYXVsdEluZGljYXRvclR5cGU6IGZhbHNlIH1cclxuICB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXJtYXR1cmVOYXZpZ2F0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICAvKiogVGhlIHBhcmVudCBzdGVwcGVyICovXHJcbiAgQFZpZXdDaGlsZCgndmVydFN0ZXBwZXInKSBwdWJsaWMgc3RlcHBlcjogTWF0U3RlcHBlcjtcclxuXHJcbiAgLyoqIFRoZSBzaWRlIG1vYmlsZSBuYXYgKi9cclxuICBAVmlld0NoaWxkKCdzbmF2JykgcHVibGljIHNpZGVuYXY6IE1hdFNpZGVuYXY7XHJcblxyXG4gIC8qKiBUaGUgbW9iaWxlIGV4cGFuc2lvbiBwYW5lbCBmb3IgcHJvZ3Jlc3MgbWVudSAqL1xyXG4gIEBWaWV3Q2hpbGQoJ3BhbmVsJykgcHVibGljIGV4cGFuc2lvblBhbmVsOiBNYXRFeHBhbnNpb25QYW5lbDtcclxuXHJcbiAgLyoqIFRoZSBjaGlsZCBzdGVwcGVycyAqL1xyXG4gIEBWaWV3Q2hpbGRyZW4oJ3ZlcnRTdGVwcGVySW5uZXInKSBwdWJsaWMgaW5uZXJTdGVwcGVyczogUXVlcnlMaXN0PE1hdFN0ZXBwZXI+O1xyXG5cclxuICAvKiogQ29tcG9uZW50IElucHV0IC0gdGhlIG5hdmlnYXRpb24gZGF0YSAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBuYXZpZ2F0aW9uRGF0YTogTmF2Tm9kZVtdO1xyXG5cclxuICAvKiogQ29tcG9uZW50IElucHV0IC0gdGhlIG5hdmlnYXRpb24gc2V0dGluZ3MgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgc2V0dGluZ3M6IE5hdmlnYXRpb25TZXR0aW5ncyA9IHt9O1xyXG5cclxuICAvKiogQ29tcG9uZW50IElucHV0IC0gdGhlIG5hdmlnYXRpb24gc2V0dGluZ3MgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgYWR2YW5jZWRTZXR0aW5nczogTmF2aWdhdGlvbkFkdmFuY2VkU2V0dGluZ3MgPSB7fTtcclxuXHJcbiAgLyoqIENvbXBvbmVudCBJbnB1dCAtIHRoZSBuYXZpZ2F0aW9uIHNldHRpbmdzICovXHJcbiAgQElucHV0KCkgcHVibGljIHRoZW1lU2V0dGluZ3M6IE5hdmlnYXRpb25UaGVtZVNldHRpbmdzID0ge307XHJcblxyXG4gIC8qKiBDb21wb25lbnQgSW5wdXQgLSB0aGUgbmF2aWdhdGlvbiBsYW5ndWFnZSBzZXR0aW5ncyAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBsYW5ndWFnZVNldHRpbmdzOiBIZWFkZXJMYW5ndWFnZVNldHRpbmdzID0ge307XHJcblxyXG4gIC8qKiBDdXJyZW50IGxhbmd1YWdlICoqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXJyZW50TGFuZzogc3RyaW5nO1xyXG5cclxuICAvKiogbG9nT3V0IHRleHQgKiovXHJcbiAgQElucHV0KCkgcHVibGljIGxvZ091dFRleHQ6IHN0cmluZztcclxuXHJcbiAgLyoqIFNldHMgbGFuZ3VhZ2UgKiovXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBzZXRMYW5ndWFnZSQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIC8qKiBnZXRzIHRoZSBub24gdXNlZCBsYW5ndWFnZSAqL1xyXG4gIHB1YmxpYyBnZXQgb3RoZXJMYW5nVGV4dCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VTZXR0aW5ncz8ubGFuZ3VhZ2VzPy5maW5kKHggPT4geCAhPT0gdGhpcy5jdXJyZW50TGFuZyk7XHJcbiAgfVxyXG5cclxuICAvKiogV2hldGhlciBzaWRlIG5hdiBpcyBvcGVuIG9yIG5vdCAqL1xyXG4gIHB1YmxpYyBpc05hdk9wZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIE1vYmlsZSBTdWJOYXYgLSB3aGV0aGVyIG9yIG5vdCB0aGUgbW9iaWxlIFN1Yk5hdiBpcyBvcGVuICovXHJcbiAgcHVibGljIGlzTW9iaWxlU3ViTmF2T3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogTW9iaWxlIFN1Yk5hdiAtdGhlIGRhdGEgdG8gYmUgcGFzc2VkIHRvIHRoZSBtb2JpbGUgU3ViTmF2ICovXHJcbiAgcHVibGljIGN1cnJlbnRNb2JpbGVOYXY6IE5hdk5vZGU7XHJcblxyXG4gIC8qKiBTZXR0aW5ncyAtIHRoZSBtYWluIG1lbnUgdGV4dCB0aGF0IGFwcGVhcnMgaW4gdGhlIG1vYmlsZSBTdWJOYXYgKi9cclxuICBwdWJsaWMgbWFpbk1lbnVUZXh0OiBzdHJpbmc7XHJcblxyXG4gIC8qKiB0aGUgbW9iaWxlIHF1ZXJ5ICovXHJcbiAgcHVibGljIG1vYmlsZVF1ZXJ5OiBNZWRpYVF1ZXJ5TGlzdDtcclxuXHJcbiAgLyoqIFRoZSBzZWxlY3RlZCBwYXJlbnQgaW5kZXggKi9cclxuICBwdWJsaWMgc2VsZWN0ZWRQYXJlbnRJbmRleDogbnVtYmVyID0gMDtcclxuXHJcbiAgLyoqIFRoZSBzZWxlY3RlZCBjaGlsZCBpbmRleCAqL1xyXG4gIHB1YmxpYyBzZWxlY3RlZENoaWxkSW5kZXhlczogeyBba2V5OiBudW1iZXJdOiBudW1iZXIgfSA9IHt9O1xyXG5cclxuICAvKiogVGhlIG5hdmlnYXRpb24gcHJvZ3Jlc3MgY291bnQgKi9cclxuICBwdWJsaWMgbmF2UHJvZ3Jlc3NDb3VudDogbnVtYmVyID0gMDtcclxuXHJcbiAgLyoqIFRoZSBjdXJyZW50IGFjdGl2ZSBwYXJlbnQgbm9kZSAqL1xyXG4gIHB1YmxpYyBhY3RpdmVQYXJlbnROb2RlOiBOYXZOb2RlO1xyXG5cclxuICAvKiogVGhlIGN1cnJlbnQgYWN0aXZlIHN1YiBub2RlICovXHJcbiAgcHVibGljIGFjdGl2ZVN1Yk5vZGU6IFN1Yk5hdk5vZGVzO1xyXG5cclxuICAvKiogVHJ1ZSBpZiB0aGUgZXhwYW5zaW9uIHBhbmVsIGlzIG9wZW4gKi9cclxuICBwdWJsaWMgcGFuZWxPcGVuU3RhdGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIFRoZSBmb290ZXIgbmF2aWdhdGlvbiBkYXRhICovXHJcbiAgcHVibGljIGZvb3Rlck5hdmlnYXRpb25EYXRhOiBOYXZOb2RlW11cclxuXHJcbiAgLyoqIHVzZXIgbmFtZSAqKi9cclxuICBwdWJsaWMgdXNlck5hbWU6IHN0cmluZztcclxuXHJcbiAgLyoqIFRoZSBjb25maWcgb2JzZXJ2YWJsZSAqL1xyXG4gIHB1YmxpYyBjb25maWckOiBPYnNlcnZhYmxlPEJhc2VDb25maWc+O1xyXG5cclxuICAvKiogVGhlIHBhcmVudCBub2RlIGluZGV4IHRvIGJlIHNldCB3aGVuIG5hdiBpcyB0b2dnbGVkIHRvIHByb2dyZXNzIG1lbnUgc3R5bGUgKi9cclxuICBwdWJsaWMgdG9nZ2xlUHJvZ3Jlc3NOYXZQYXJlbnRJbmRleDogbnVtYmVyO1xyXG5cclxuICAvKiogVGhlIGNoaWxkIG5vZGUgaW5kZXggdG8gYmUgc2V0IHdoZW4gbmF2IGlzIHRvZ2dsZWQgdG8gcHJvZ3Jlc3MgbWVudSBzdHlsZSAqL1xyXG4gIHB1YmxpYyB0b2dnbGVQcm9ncmVzc05hdkNoaWxkSW5kZXg6IG51bWJlcjtcclxuXHJcbiAgLyoqIHRoZSBtb2JpbGUgcXVlcnkgbGlzdGVuZXIyICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfbW9iaWxlUXVlcnlMaXN0ZW5lcjogKCkgPT4gdm9pZDtcclxuXHJcbiAgLyoqIFRoZSBuYXYgYmluZCBzdWJzY3JpcHRpb24gKi9cclxuICBwcml2YXRlIG5hdkJpbmRTdWI6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHJcbiAgLyoqIFRoZSBtZXNzYWdlIHRvIGRpc3BsYXkgKi9cclxuICBwdWJsaWMgbWVzc2FnZTogc3RyaW5nO1xyXG5cclxuICAvKiogV2hldGhlciB3ZSBzaG91bGQgdGhlIG1lc3NhZ2UgKi9cclxuICBwdWJsaWMgc2hvd01lc3NhZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIFdoZXRoZXIgc2hvdWxkIHNob3cgY2hlY2sgbWFyayBvciBub3QgKi9cclxuICBwdWJsaWMgc2hvd0NoZWNrTWFyazogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8qKiBUaGUgbmF2IGJpbmQgc3Vic2NyaXB0aW9uICovXHJcbiAgcHJpdmF0ZSBsb2dJblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuICAvKiogVGhlIGNvdW50IG9mIGZvb3RlciBpdGVtcyovXHJcbiAgcHVibGljIGZvb3Rlckl0ZW1Db3VudDogbnVtYmVyO1xyXG5cclxuICAvKiogVGhlIGJhbm5lciBzdWJzY3JpcHRpb24gKi9cclxuICBwcml2YXRlIGJhbm5lclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuICAvKiogVGhlIGNvbmZpZyBzdWJzY3JpcHRpb24gKi9cclxuICBwdWJsaWMgY29uZmlnU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcblxyXG4gIC8qKiBUaGUgc2lkZW5hdiBzdWJzY3JpcHRpb24gKi9cclxuICBwcml2YXRlIHNpZGVOYXZTdWI6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogdGhlIGNvbnN0cnVjdG9yXHJcbiAgICogQHBhcmFtIGNoYW5nZURldGVjdG9yUmVmIHRoZSBjaGFuZ2UgZGV0ZWN0b3IgcmVmZXJlbmNlXHJcbiAgICogQHBhcmFtIG1lZGlhIHRoZSBtZWRpYSBtYXRjaGVyXHJcbiAgICogQHBhcmFtIHJvdXRlciBUaGUgcm91dGVyXHJcbiAgICogQHBhcmFtIGJhbm5lclNlcnZpY2UgVGhlIEJhbm5lciBTZXJ2aWNlXHJcbiAgICogQHBhcmFtIGFjdGl2YXRlZFJvdXRlIFRoZSBhY3RpdmF0ZWQgcm91dGVcclxuICAgKiBAcGFyYW0gY29uZmlnU2VydmljZSBUaGUgY29uZmlnIHNlcnZpY2VcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHJlYWRvbmx5IG1lZGlhOiBNZWRpYU1hdGNoZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBiYW5uZXJTZXJ2aWNlOiBCYW5uZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdXRob3JpemF0aW9uU2VydmljZTogQXV0aG9yaXphdGlvblNlcnZpY2UsXHJcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IEJhc2VDb25maWdTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLm1vYmlsZVF1ZXJ5ID0gbWVkaWEubWF0Y2hNZWRpYSgnKG1heC13aWR0aDogOTU5cHgpJyk7XHJcbiAgICB0aGlzLl9tb2JpbGVRdWVyeUxpc3RlbmVyID0gKCkgPT4ge1xyXG4gICAgICBjaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIC8vIGNsb3NlIHRoZSBzaWRlbmF2IHdoZW4gc2NyZWVuIHNpemUgaXMgY2hhbmdlZFxyXG4gICAgICBpZiAoIXRoaXMubW9iaWxlUXVlcnkubWF0Y2hlcyAmJiB0aGlzLnNldHRpbmdzLm1lbnVTdHlsZSA9PT0gJ3Byb2dyZXNzJykge1xyXG4gICAgICAgIHRoaXMuc2lkZW5hdi5jbG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgLy8gYmVsb3cgaWYgc3RhdGVtZW50IGlzIGZvciBlZGdlIHN1cHBvcnQgc2luY2UgYWRkRXZlbnRMaXN0ZW5lciBkb2Vzbid0IGV4aXN0IGZvciBNZWRpYVF1ZXJ5TGlzdHNcclxuICAgIGlmICh0aGlzLm1vYmlsZVF1ZXJ5LmFkZEV2ZW50TGlzdGVuZXIpIHtcclxuICAgICAgdGhpcy5tb2JpbGVRdWVyeS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB0aGlzLl9tb2JpbGVRdWVyeUxpc3RlbmVyKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLm1vYmlsZVF1ZXJ5LmFkZExpc3RlbmVyKHRoaXMuX21vYmlsZVF1ZXJ5TGlzdGVuZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIE9uIEluaXQgLSBjb25maWd1cmUgdGhlIHNldHRpbmdzICovXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuYmFubmVyU3Vic2NyaXB0aW9uLmFkZCh0aGlzLmJhbm5lclNlcnZpY2Uuc2hvd0Jhbm5lciQuc3Vic2NyaWJlKHZhbCA9PiB0aGlzLnNob3dNZXNzYWdlID0gdmFsKSk7XHJcbiAgICB0aGlzLmJhbm5lclN1YnNjcmlwdGlvbi5hZGQodGhpcy5iYW5uZXJTZXJ2aWNlLm1lc3NhZ2UkLnN1YnNjcmliZSh2YWwgPT4gdGhpcy5tZXNzYWdlID0gdmFsKSk7XHJcbiAgICB0aGlzLmJhbm5lclN1YnNjcmlwdGlvbi5hZGQodGhpcy5iYW5uZXJTZXJ2aWNlLnNob3dDaGVja01hcmskLnN1YnNjcmliZSh2YWwgPT4gdGhpcy5zaG93Q2hlY2tNYXJrID0gdmFsKSk7XHJcblxyXG4gICAgdGhpcy5mb290ZXJOYXZpZ2F0aW9uRGF0YSA9IHRoaXMubmF2aWdhdGlvbkRhdGE/LmZpbHRlcihub2RlID0+IG5vZGU/LmFsdExvY2F0aW9uID09IHRydWUpO1xyXG4gICAgdGhpcy5mb290ZXJJdGVtQ291bnQgPSB0aGlzLmZvb3Rlck5hdmlnYXRpb25EYXRhID8gdGhpcy5mb290ZXJOYXZpZ2F0aW9uRGF0YS5sZW5ndGggOiAwO1xyXG4gICAgdGhpcy5uYXZpZ2F0aW9uRGF0YSA9IHRoaXMubmF2aWdhdGlvbkRhdGE/LmZpbHRlcihub2RlID0+IG5vZGU/LmFsdExvY2F0aW9uICE9IHRydWUpO1xyXG5cclxuICAgIC8vIGlmIHBhcmVudHMgaGF2ZSBubyByb3V0ZSwgZ3JhYiBmaXJzdCByb3V0ZSBvZiBjaGlsZFxyXG4gICAgdGhpcy5uYXZpZ2F0aW9uRGF0YT8uZm9yRWFjaChuID0+IHtcclxuICAgICAgaWYgKCFuLnJvdXRlKSB7XHJcbiAgICAgICAgbi5yb3V0ZSA9IG4uc3ViTm9kZXMgJiYgbi5zdWJOb2Rlcy5sZW5ndGggPiAwID8gbi5zdWJOb2Rlc1swXS5yb3V0ZSA6IHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgICAvLyBlbmFibGUgYWxsIHBhZ2VzIGJ5IGRlZmF1bHRcclxuICAgICAgaWYgKG4uaXNEaXNhYmxlZCA9PSBudWxsKSB7XHJcbiAgICAgICAgbi5pc0Rpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuaW5pdEJhc2ljU2V0dGluZ3MoKTtcclxuICAgIHRoaXMuaW5pdEFkdmFuY2VkU2V0dGluZ3MoKTtcclxuICAgIHRoaXMuaW5pdFRoZW1lU2V0dGluZ3MoKTtcclxuXHJcbiAgICAvLyBpbml0IGJpbmRpbmcgZm9yIHByb2dyZXNzIG5hdlxyXG4gICAgaWYgKHRoaXMuc2V0dGluZ3MubWVudVN0eWxlID09PSAncHJvZ3Jlc3MnKSB7XHJcbiAgICAgIC8vIHNldCB0aGUgZmlyc3Qgbm9kZSBhbmQgY2hpbGQgbm9kZSBhcyB2aXNpdGVkXHJcbiAgICAgIGlmICh0aGlzLm5hdmlnYXRpb25EYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLm5hdmlnYXRpb25EYXRhWzBdLnZpc2l0ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubmF2aWdhdGUodGhpcy5uYXZpZ2F0aW9uRGF0YVswXS5yb3V0ZSk7XHJcbiAgICAgICAgaWYgKHRoaXMubmF2aWdhdGlvbkRhdGFbMF0uc3ViTm9kZXMgJiYgdGhpcy5uYXZpZ2F0aW9uRGF0YVswXS5zdWJOb2Rlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLm5hdmlnYXRpb25EYXRhWzBdLnN1Yk5vZGVzWzBdLnZpc2l0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZSh0aGlzLm5hdmlnYXRpb25EYXRhWzBdLnN1Yk5vZGVzWzBdLnJvdXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIHNldCBpbml0aWFsIHByb2dyZXNzIGJhclxyXG4gICAgICB0aGlzLm5hdlByb2dyZXNzQ291bnQgPSAodGhpcy5zZWxlY3RlZFBhcmVudEluZGV4ICsgMSkgLyB0aGlzLm5hdmlnYXRpb25EYXRhLmxlbmd0aCAqIDEwMDtcclxuXHJcblxyXG4gICAgICB0aGlzLm5hdkJpbmRTdWIuYWRkKFxyXG4gICAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE5hdmlnYXRpb25FbmQpID0+IHtcclxuICAgICAgICAgICAgLy8gZmluZCBwYXJlbnQgaW5kZXggd2l0aCBhY3RpdmUgY2hpbGRcclxuICAgICAgICAgICAgdGhpcy5nZXRBY3RpdmVQYXJlbnRBbmRDaGlsZChldmVudC51cmwpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuc2V0dGluZ3MuYWxsb3dOYXZUb2dnbGUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMubG9nSW5TdWJzY3JpcHRpb24gPSB0aGlzLmF1dGhvcml6YXRpb25TZXJ2aWNlLmlzTG9nZ2VkSW4kLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMudXNlck5hbWUgPSB0aGlzLmF1dGhvcml6YXRpb25TZXJ2aWNlLnVzZXJOYW1lKClcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlnU2VydmljZSkge1xyXG4gICAgICB0aGlzLmNvbmZpZ1N1YnNjcmlwdGlvbiA9IHRoaXMuY29uZmlnU2VydmljZS5jb25maWckLnN1YnNjcmliZShjb25maWcgPT4ge1xyXG4gICAgICAgIGlmIChjb25maWcgJiYgY29uZmlnPy5uYXZpZ2F0aW9uPy5ub2Rlcykge1xyXG4gICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uRGF0YSA9IGNvbmZpZz8ubmF2aWdhdGlvbj8ubm9kZXM7XHJcbiAgICAgICAgICBpZiAoY29uZmlnPy5uYXZpZ2F0aW9uPy5zZXR0aW5ncz8ucmVzZXROYXYpIHtcclxuICAgICAgICAgICAgdGhpcy5uYXZQcm9ncmVzc0NvdW50ID0gMDtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudEluZGV4ID0gMDtcclxuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZSh0aGlzLm5hdmlnYXRpb25EYXRhWzBdLnJvdXRlKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc3RlcHBlcikge1xyXG4gICAgICAgICAgICAgIHRoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4ID0gMDtcclxuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RlcHBlci5yZXNldCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbm5lclN0ZXBwZXJzPy5mb3JFYWNoKHN0ZXBwZXIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBzdGVwcGVyLnNlbGVjdGVkSW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgICBzdGVwcGVyLnJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25EYXRhLmZvckVhY2gobiA9PiB7XHJcbiAgICAgICAgICAgICAgbi52aXNpdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgbi5jb21wbGV0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIG4uc3ViTm9kZXM/LmZvckVhY2gocyA9PiB7XHJcbiAgICAgICAgICAgICAgICBzLnZpc2l0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHMuY29tcGxldGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgLy8gcmVzZXQgYmFjayB0byBmYWxzZSB0byBhdm9pZCBtdWx0aXBsZSB0cmlnZ2VycyBvbiBmdXR1cmUgY2FsbHNcclxuICAgICAgICAgICAgY29uZmlnLm5hdmlnYXRpb24uc2V0dGluZ3MucmVzZXROYXYgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZyA9IGNvbmZpZztcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBpZiB0aGUgdmFsdWVzIHdlcmUgY2hhbmdlZCBhbmQgbm90IG51bGwsIGl0IG1lYW5zIHRoYXQgdGhlIG5hdiB3YXMgdG9nZ2xlZCB0byBwcm9ncmVzc1xyXG4gICAgICAgICAgaWYgKGNvbmZpZz8ubmF2aWdhdGlvbj8uc2V0dGluZ3M/LnRvZ2dsZVByb2dyZXNzTmF2UGFyZW50SW5kZXggIT0gbnVsbFxyXG4gICAgICAgICAgICAmJiB0aGlzLnRvZ2dsZVByb2dyZXNzTmF2UGFyZW50SW5kZXggIT0gY29uZmlnPy5uYXZpZ2F0aW9uPy5zZXR0aW5ncz8udG9nZ2xlUHJvZ3Jlc3NOYXZQYXJlbnRJbmRleFxyXG4gICAgICAgICAgICAmJiB0aGlzLnRvZ2dsZVByb2dyZXNzTmF2Q2hpbGRJbmRleCAhPSBjb25maWc/Lm5hdmlnYXRpb24/LnNldHRpbmdzPy50b2dnbGVQcm9ncmVzc05hdkNoaWxkSW5kZXhcclxuICAgICAgICAgICAgJiYgY29uZmlnPy5uYXZpZ2F0aW9uPy5zZXR0aW5ncz8udG9nZ2xlUHJvZ3Jlc3NOYXZDaGlsZEluZGV4ICE9IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlUHJvZ3Jlc3NOYXZQYXJlbnRJbmRleCA9IGNvbmZpZy5uYXZpZ2F0aW9uLnNldHRpbmdzLnRvZ2dsZVByb2dyZXNzTmF2UGFyZW50SW5kZXg7XHJcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlUHJvZ3Jlc3NOYXZDaGlsZEluZGV4ID0gY29uZmlnLm5hdmlnYXRpb24uc2V0dGluZ3MudG9nZ2xlUHJvZ3Jlc3NOYXZDaGlsZEluZGV4O1xyXG5cclxuICAgICAgICAgICAgLy8gYWRkIHRoZSByb3V0ZXIgc3ViXHJcbiAgICAgICAgICAgIHRoaXMubmF2QmluZFN1Yi5hZGQoXHJcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogTmF2aWdhdGlvbkVuZCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAvLyBmaW5kIHBhcmVudCBpbmRleCB3aXRoIGFjdGl2ZSBjaGlsZFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmdldEFjdGl2ZVBhcmVudEFuZENoaWxkKGV2ZW50LnVybCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAvLyBpZiB0aGUgY2hpbGQgbm9kZSBpbmRleCBpcyB2YWxpZFxyXG4gICAgICAgICAgICBpZiAoY29uZmlnLm5hdmlnYXRpb24ubm9kZXNbdGhpcy50b2dnbGVQcm9ncmVzc05hdlBhcmVudEluZGV4XS5zdWJOb2Rlcz8ubGVuZ3RoID4gdGhpcy50b2dnbGVQcm9ncmVzc05hdkNoaWxkSW5kZXgpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldE5vZGVTdGF0ZXMoY29uZmlnLm5hdmlnYXRpb24ubm9kZXNbdGhpcy50b2dnbGVQcm9ncmVzc05hdlBhcmVudEluZGV4XSxcclxuICAgICAgICAgICAgICAgIGNvbmZpZy5uYXZpZ2F0aW9uLm5vZGVzW3RoaXMudG9nZ2xlUHJvZ3Jlc3NOYXZQYXJlbnRJbmRleF0uc3ViTm9kZXNbdGhpcy50b2dnbGVQcm9ncmVzc05hdkNoaWxkSW5kZXhdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldE5vZGVTdGF0ZXMoY29uZmlnLm5hdmlnYXRpb24ubm9kZXNbdGhpcy50b2dnbGVQcm9ncmVzc05hdlBhcmVudEluZGV4XSwgbnVsbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGluZGV4ZXNcclxuICAgICAgICAgICAgdGhpcy50b2dnbGVQcm9ncmVzc05hdlBhcmVudEluZGV4ID0gY29uZmlnPy5uYXZpZ2F0aW9uPy5zZXR0aW5ncz8udG9nZ2xlUHJvZ3Jlc3NOYXZQYXJlbnRJbmRleFxyXG4gICAgICAgICAgICB0aGlzLnRvZ2dsZVByb2dyZXNzTmF2Q2hpbGRJbmRleCA9IGNvbmZpZz8ubmF2aWdhdGlvbj8uc2V0dGluZ3M/LnRvZ2dsZVByb2dyZXNzTmF2Q2hpbGRJbmRleDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIExpZmUgY3ljbGUgaG9vayBmb3IgYWZ0ZXIgY29tcG9uZW50IHZpZXcgaW5pdGlhbGl6YXRpb24gKi9cclxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2V0dGluZ3MubWVudVN0eWxlID09PSAnc3RlcHBlcicpIHtcclxuICAgICAgdGhpcy5iaW5kU3RlcHBlclRvUm91dGVzKCk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3RlcHBlci5zdGVwcy5mb3JFYWNoKChzdGVwLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgc3RlcC5zZWxlY3QgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQYXJlbnRJbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRlKHRoaXMubmF2aWdhdGlvbkRhdGFbaW5kZXhdLnJvdXRlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmlubmVyU3RlcHBlcnMuZm9yRWFjaCgoc3RlcHBlciwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIHN0ZXBwZXIuc3RlcHMuZm9yRWFjaCgoc3RlcCwgamluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIHN0ZXAuc2VsZWN0ID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGlsZEluZGV4ZXNbaW5kZXhdID0gamluZGV4O1xyXG4gICAgICAgICAgICAgIHRoaXMubmF2aWdhdGUodGhpcy5uYXZpZ2F0aW9uRGF0YVtpbmRleF0uc3ViTm9kZXNbamluZGV4XS5yb3V0ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuc2lkZU5hdlN1YiA9IHRoaXMuc2lkZW5hdi5vcGVuZWRDaGFuZ2Uuc3Vic2NyaWJlKGRyYXdlclN0YXRlID0+IHtcclxuICAgICAgdGhpcy5pc05hdk9wZW4gPSBkcmF3ZXJTdGF0ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIE9uIERlc3Ryb3kgKi9cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLm1vYmlsZVF1ZXJ5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMuX21vYmlsZVF1ZXJ5TGlzdGVuZXIpO1xyXG4gICAgdGhpcy5uYXZCaW5kU3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmxvZ0luU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmJhbm5lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5jb25maWdTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuc2lkZU5hdlN1Yi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTW9iaWxlIFN1Yk5hdiAtIG9wZW4gdGhlIFN1Yk5hdlxyXG4gICAqIEBwYXJhbSBuYXYgdGhlIG5hdiBkYXRhIHRvIGJlIHBhc3NlZCB0byB0aGUgU3ViTmF2XHJcbiAgICovXHJcbiAgcHVibGljIG9wZW5Nb2JpbGVTdWJOYXYobmF2OiBOYXZOb2RlKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzTW9iaWxlU3ViTmF2T3BlbiA9IHRydWU7XHJcbiAgICB0aGlzLmN1cnJlbnRNb2JpbGVOYXYgPSBuYXY7XHJcbiAgICB0aGlzLnNpZGVuYXYub3BlbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTW9iaWxlIFN1Yk5hdiAtIGNsb3NlcyB0aGUgU3ViTmF2XHJcbiAgICovXHJcbiAgcHVibGljIGNsb3NlTW9iaWxlU3ViTmF2KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc01vYmlsZVN1Yk5hdk9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuc2lkZW5hdi5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgdGhlbWUgY29sb3JcclxuICAgKiBAcGFyYW0gdmFyaWFibGUgdGhlIGNzcyB2YXJpYWJsZSBuYW1lXHJcbiAgICogQHBhcmFtIGNvbG9yIHRoZSBjb2xvclxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRUaGVtZUNvbG9yKHZhcmlhYmxlOiBzdHJpbmcsIGNvbG9yOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShgLS1zb2YtbmF2LSR7dmFyaWFibGV9YCwgY29sb3IpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGV0ZXJtaW5lcyB0aGUgc3RlcCBzdGF0ZVxyXG4gICAqIEBwYXJhbSBwYXJlbnRJbmRleCBUaGUgcGFyZW50IGluZGV4XHJcbiAgICogQHBhcmFtIGNoaWxkSW5kZXggVGhlIGNoaWxkIGluZGV4XHJcbiAgICogQHJldHVybnMgVGhlIHN0ZXAgc3RhdGVcclxuICAgKi9cclxuICBwdWJsaWMgZGV0ZXJtaW5lU3RlcFN0YXRlKHBhcmVudEluZGV4OiBudW1iZXIsIGNoaWxkSW5kZXg6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICAvLyBub3QgcGFzc2VkICYmIG5vdCBhY3RpdmVcclxuICAgIGlmIChjaGlsZEluZGV4ID09PSAtMSkge1xyXG4gICAgICBpZiAoIXRoaXMuc3RlcHBlcikge1xyXG4gICAgICAgIHJldHVybiAnbnVtYmVyJztcclxuICAgICAgfVxyXG4gICAgICAvLyBub3QgcGFzc2VkICYmIGFjdGl2ZVxyXG4gICAgICBpZiAocGFyZW50SW5kZXggPT09IHRoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4KSB7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uRGF0YVtwYXJlbnRJbmRleF0udmlzaXRlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIHJldHVybiAnYWN0aXZlJztcclxuICAgICAgfVxyXG4gICAgICAvLyBwYXNzZWQgYnV0IG5hdiBiYWNrXHJcbiAgICAgIGVsc2UgaWYgKHBhcmVudEluZGV4ID4gdGhpcy5zdGVwcGVyLnNlbGVjdGVkSW5kZXggJiYgdGhpcy5uYXZpZ2F0aW9uRGF0YVtwYXJlbnRJbmRleF0udmlzaXRlZCkge1xyXG4gICAgICAgIHRoaXMuc3RlcHBlci5zdGVwcy5maW5kKChzLCBpbmRleCkgPT4gaW5kZXggPT09IHBhcmVudEluZGV4KVxyXG4gICAgICAgICAgLnJlc2V0KCk7XHJcblxyXG4gICAgICAgIHJldHVybiAnYWN0aXZlJztcclxuICAgICAgfVxyXG4gICAgICAvLyBwYXNzZWQgJiYgbm90IGFjdGl2ZVxyXG4gICAgICBlbHNlIGlmIChwYXJlbnRJbmRleCA8IHRoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4KSB7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uRGF0YVtwYXJlbnRJbmRleF0udmlzaXRlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIHJldHVybiAnZG9uZSc7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuICdudW1iZXInO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKCF0aGlzLmlubmVyU3RlcHBlcnMpIHtcclxuICAgICAgICByZXR1cm4gJ25vbmUnO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGlubmVyU3RlcHBlciA9IHRoaXMuaW5uZXJTdGVwcGVycy5maW5kKChzLCBpbmRleCkgPT4gaW5kZXggPT09IHBhcmVudEluZGV4KTtcclxuICAgICAgaWYgKGNoaWxkSW5kZXggPT09IGlubmVyU3RlcHBlci5zZWxlY3RlZEluZGV4KSB7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uRGF0YVtwYXJlbnRJbmRleF0uc3ViTm9kZXNbY2hpbGRJbmRleF0udmlzaXRlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIHJldHVybiAnYWN0aXZlJztcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChjaGlsZEluZGV4ID4gaW5uZXJTdGVwcGVyLnNlbGVjdGVkSW5kZXggJiYgdGhpcy5uYXZpZ2F0aW9uRGF0YVtwYXJlbnRJbmRleF0uc3ViTm9kZXNbY2hpbGRJbmRleF0udmlzaXRlZCkge1xyXG4gICAgICAgIGlubmVyU3RlcHBlci5zdGVwcy5maW5kKChzLCBpbmRleCkgPT4gaW5kZXggPT09IGNoaWxkSW5kZXgpXHJcbiAgICAgICAgICAucmVzZXQoKTtcclxuXHJcbiAgICAgICAgcmV0dXJuICdhY3RpdmUnO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGNoaWxkSW5kZXggPCBpbm5lclN0ZXBwZXIuc2VsZWN0ZWRJbmRleCkge1xyXG4gICAgICAgIHRoaXMubmF2aWdhdGlvbkRhdGFbcGFyZW50SW5kZXhdLnN1Yk5vZGVzW2NoaWxkSW5kZXhdLnZpc2l0ZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICByZXR1cm4gJ2RvbmUnO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAnbm9uZSc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgcHJvdmlkZWQgcm91dGVcclxuICAgKiBAcGFyYW0gcm91dGUgVGhlIHJvdXRlXHJcbiAgICovXHJcbiAgcHVibGljIG5hdmlnYXRlKHJvdXRlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tZmxvYXRpbmctcHJvbWlzZXNcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwocm91dGUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmF2aWdhdGVzIHRvIGdpdmVuIHN0ZXBcclxuICAgKiBAcGFyYW0gc3RlcE51bWJlciBUaGUgc3RlcCBudW1iZXIgdG8gbmF2aWdhdGUgdG9cclxuICAgKi9cclxuICBwdWJsaWMgbmF2aWdhdGVUb1N0ZXAoc3RlcE51bWJlcjogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoc3RlcE51bWJlciA8IHRoaXMuc2VsZWN0ZWRQYXJlbnRJbmRleCkge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWZsb2F0aW5nLXByb21pc2VzXHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5uYXZpZ2F0aW9uRGF0YVtzdGVwTnVtYmVyXS5yb3V0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBhY3RpdmUgcGFyZW50IGFuZCBjaGlsZCBub2RlcyBcclxuICAgKiBAcGFyYW0gdXJsIFRoZSByb3V0ZXIgdXJsXHJcbiAgICovXHJcbiAgcHVibGljIGdldEFjdGl2ZVBhcmVudEFuZENoaWxkKHVybDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBsZXQgY2hpbGRJbmRleDtcclxuICAgIGxldCBwYXJlbnRJbmRleCA9IHRoaXMubmF2aWdhdGlvbkRhdGEuZmluZEluZGV4KG4gPT4ge1xyXG4gICAgICBjaGlsZEluZGV4ID0gbi5zdWJOb2Rlcz8uZmluZEluZGV4KHMgPT4gdXJsLmluY2x1ZGVzKHMucm91dGUucmVwbGFjZSgnLicsICcnKSkpO1xyXG4gICAgICByZXR1cm4gY2hpbGRJbmRleCA+IC0xIHx8IHRoaXMucm91dGVyLnVybC5pbmNsdWRlcyhuLnJvdXRlLnJlcGxhY2UoJy4nLCAnJykpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHBhcmVudEluZGV4ID09IC0xKSB7XHJcbiAgICAgIHBhcmVudEluZGV4ID0gMFxyXG4gICAgfVxyXG5cclxuICAgIC8vIHNldCB0aGUgYWN0aXZlIHBhcmVudCBub2RlIGFuZCBzdWIgbm9kZVxyXG4gICAgdGhpcy5hY3RpdmVQYXJlbnROb2RlID0gdGhpcy5uYXZpZ2F0aW9uRGF0YVtwYXJlbnRJbmRleF07XHJcbiAgICB0aGlzLmFjdGl2ZVN1Yk5vZGUgPSBjaGlsZEluZGV4ID4gLTEgJiYgdGhpcy5hY3RpdmVQYXJlbnROb2RlLnN1Yk5vZGVzLmxlbmd0aCA+IDAgPyB0aGlzLmFjdGl2ZVBhcmVudE5vZGUuc3ViTm9kZXNbY2hpbGRJbmRleF0gOiBudWxsO1xyXG5cclxuICAgIC8vIGlmIHRoZXJlIGFyZSBzdWJub2RlcyBhbmQgd2UgYXJlIG9uIHRoZSBmaXJzdCBub2RlLCBzZXQgdGhlIGFjdGl2ZSBzdWIgbm9kZSB0byBiZSB0aGUgZmlyc3Qgb25lLCBpZiB0aGVyZSBpc250IG9uZSBcclxuICAgIGlmICh0aGlzLmFjdGl2ZVBhcmVudE5vZGUuc3ViTm9kZXMubGVuZ3RoID4gMCAmJiBwYXJlbnRJbmRleCA9PSAwICYmIGNoaWxkSW5kZXggPT0gLTEpIHtcclxuICAgICAgdGhpcy5hY3RpdmVTdWJOb2RlID0gdGhpcy5hY3RpdmVQYXJlbnROb2RlLnN1Yk5vZGVzWzBdO1xyXG4gICAgfVxyXG4gICAgLy8gY29tcHV0ZSB0aGUgcHJvZ3Jlc3MgYmFyXHJcbiAgICB0aGlzLm5hdlByb2dyZXNzQ291bnQgPSAocGFyZW50SW5kZXggKyAxKSAvIHRoaXMubmF2aWdhdGlvbkRhdGEubGVuZ3RoICogMTAwO1xyXG5cclxuICAgIC8vIHNldCB0aGUgbm9kZSBzdGF0ZXNcclxuICAgIHRoaXMuc2V0Tm9kZVN0YXRlcyh0aGlzLmFjdGl2ZVBhcmVudE5vZGUsIHRoaXMuYWN0aXZlU3ViTm9kZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBjb21wbGV0ZSBhbmQgdmlzaXRlZCBzdGF0ZXMgZm9yIGFsbCBOYXZOb2RlcyBcclxuICAgKiBAcGFyYW0gcGFyZW50Tm9kZSBUaGUgcGFyZW50IG5vZGVcclxuICAgKiBAcGFyYW0gY2hpbGROb2RlIFRoZSBjaGlsZCBub2RlXHJcbiAgICovXHJcbiAgcHVibGljIHNldE5vZGVTdGF0ZXMocGFyZW50Tm9kZTogTmF2Tm9kZSwgY2hpbGROb2RlOiBTdWJOYXZOb2Rlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoaWxkTm9kZSkge1xyXG4gICAgICB0aGlzLmFjdGl2ZVN1Yk5vZGUgPSBjaGlsZE5vZGU7XHJcbiAgICAgIGxldCBjaGlsZEluZGV4ID0gcGFyZW50Tm9kZS5zdWJOb2Rlcy5pbmRleE9mKGNoaWxkTm9kZSkgPiAtMSA/IHBhcmVudE5vZGUuc3ViTm9kZXMuaW5kZXhPZihjaGlsZE5vZGUpIDogMDtcclxuICAgICAgLy8gYWxsIHN1Ym5vZGVzIGJlZm9yZSB0aGlzIHdlcmUgY29tcGxldGVkIGFuZCB2aXNpdGVkXHJcbiAgICAgIHBhcmVudE5vZGUuc3ViTm9kZXMuc2xpY2UoMCwgY2hpbGRJbmRleCkuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICBlbGVtZW50LmNvbXBsZXRlID0gdHJ1ZTtcclxuICAgICAgICBlbGVtZW50LnZpc2l0ZWQgPSB0cnVlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZlUGFyZW50Tm9kZSA9IHBhcmVudE5vZGU7XHJcbiAgICAvLyBzZXQgYWxsIHByZXZpb3VzIG5vZGVzIHRvIGNvbXBsZXRlXHJcbiAgICBsZXQgcGFyZW50SW5kZXggPSB0aGlzLm5hdmlnYXRpb25EYXRhLmluZGV4T2YocGFyZW50Tm9kZSkgPiAtMSA/IHRoaXMubmF2aWdhdGlvbkRhdGEuaW5kZXhPZihwYXJlbnROb2RlKSA6IDA7XHJcbiAgICB0aGlzLm5hdmlnYXRpb25EYXRhLnNsaWNlKDAsIHBhcmVudEluZGV4KS5mb3JFYWNoKGQgPT4ge1xyXG4gICAgICBkLmNvbXBsZXRlID0gdHJ1ZTtcclxuXHJcbiAgICAgIC8vIHNldCBhbGwgc3Vibm9kZXMgb2YgcHJldmlvdXMgbm9kZXMgdG8gY29tcGxldGUgb25seSBpZiB0aGUgbm9kZSB3YXMgbm90IGRpc2FibGVkXHJcbiAgICAgIGlmICghZC5pc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgZC5zdWJOb2Rlcy5mb3JFYWNoKHMgPT4ge1xyXG4gICAgICAgICAgcy5jb21wbGV0ZSA9IHRydWU7XHJcbiAgICAgICAgICBzLnZpc2l0ZWQgPSB0cnVlO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICAvLyBzZXQgdGhlIGN1cnJlbnQgbm9kZXMgYXMgdmlzaXRlZFxyXG4gICAgcGFyZW50Tm9kZS52aXNpdGVkID0gdHJ1ZTtcclxuICAgIGlmIChjaGlsZE5vZGUpIHtcclxuICAgICAgY2hpbGROb2RlLnZpc2l0ZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xvc2VzIHRoZSBleHBhbnNpb24gcGFuZWwgYW5kIG5hdmlnYXRlcyB0byB0aGUgZ2l2ZW4gbm9kZVxyXG4gICAqIEBwYXJhbSBlbCBUaGUgbWF0IGV4cGFuc2lvbiBwYW5lbCBcclxuICAgKiBAcGFyYW0gaW5kZXggVGhlIHBhcmVudCBub2RlIGluZGV4IFxyXG4gICAqL1xyXG4gIHB1YmxpYyBkaXNhYmxlUGFuZWwoZWwsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGVsLmNsb3NlKCk7XHJcbiAgICB0aGlzLm5hdmlnYXRlKHRoaXMubmF2aWdhdGlvbkRhdGFbaW5kZXhdLnJvdXRlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogSGlkZXMgdGhlIG1lc3NhZ2VcclxuICAqL1xyXG4gIHB1YmxpYyBoaWRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93TWVzc2FnZSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9ncyBvdXQgb25jZSB1c2VyIGlzIGF1dGhvcml6ZWRcclxuICAgKiAqL1xyXG4gIHB1YmxpYyBsb2dPdXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmF1dGhvcml6YXRpb25TZXJ2aWNlLmF1dGhvcml6ZVVzZXIoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsb3NlcyBtb2JpbGUgbmF2aWdhdGlvbiBhZnRlciBzZWxlY3Rpb24uXHJcbiAgICovXHJcbiAgcHVibGljIGNsb3NlTmF2aWdhdGlvbkZvck1vYmlsZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm1vYmlsZVF1ZXJ5Lm1hdGNoZXMpIHtcclxuICAgICAgdGhpcy5zaWRlbmF2LmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJcyB0aGUgbmF2aWdhdGlvbiBzZWxlY3RlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBpc05hdlNlbGVjdGVkKG5vZGU6IE5hdk5vZGUgfCBTdWJOYXZOb2Rlcyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucm91dGVyLmlzQWN0aXZlKG5vZGUucm91dGUsIHsgcGF0aHM6ICdleGFjdCcsIHF1ZXJ5UGFyYW1zOiAnZXhhY3QnLCBmcmFnbWVudDogJ2lnbm9yZWQnLCBtYXRyaXhQYXJhbXM6ICdpZ25vcmVkJyB9KTtcclxuICB9XHJcblxyXG4gIC8qKiBTZXRzIHRoZSB3aWR0aCBmb3IgdGhlIHNpZGUgbmF2ICovXHJcbiAgcHVibGljIHNldE5hdldpZHRoKHdpZHRoOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHdpZHRoLmluY2x1ZGVzKCclJykgfHwgd2lkdGguaW5jbHVkZXMoJ3B4JykgPyB3aWR0aCA6IHdpZHRoICsgJ3B4JztcclxuICB9XHJcblxyXG4gIC8qKiBCaW5kcyB0aGUgc3RlcHBlciB0byB0aGUgcm91dGVyICovXHJcbiAgcHJpdmF0ZSBiaW5kU3RlcHBlclRvUm91dGVzKCk6IHZvaWQge1xyXG4gICAgLy8gZmluZCBwYXJlbnRzXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgLy8gZmluZCBwYXJlbnQgaW5kZXggd2l0aCBhY3RpdmUgY2hpbGRcclxuICAgICAgbGV0IGNoaWxkSW5kZXg7XHJcbiAgICAgIGxldCBwYXJlbnRJbmRleCA9IHRoaXMubmF2aWdhdGlvbkRhdGEuZmluZEluZGV4KG4gPT4ge1xyXG4gICAgICAgIGNoaWxkSW5kZXggPSBuLnN1Yk5vZGVzPy5maW5kSW5kZXgocyA9PiB0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMocy5yb3V0ZS5yZXBsYWNlKCcuJywgJycpKSk7XHJcblxyXG4gICAgICAgIHJldHVybiBjaGlsZEluZGV4ID4gLTEgfHwgdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKG4ucm91dGUucmVwbGFjZSgnLicsICcnKSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICAvLyBpZiBubyBjaGlsZHJlbiBvciBubyBpbmRleGVzIGFjdGl2YXRlIGZpcnN0IHBhcmVudFxyXG4gICAgICBpZiAocGFyZW50SW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgcGFyZW50SW5kZXggPSAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkUGFyZW50SW5kZXggPSBwYXJlbnRJbmRleDtcclxuICAgICAgaWYgKGNoaWxkSW5kZXggPiAtMSkge1xyXG4gICAgICAgIHRoaXMuaW5uZXJTdGVwcGVycy5maW5kKChpcywgaW5kZXgpID0+IGluZGV4ID09PSBwYXJlbnRJbmRleCkuc2VsZWN0ZWRJbmRleCA9IGNoaWxkSW5kZXg7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIGZpbmQgcGFyZW50c1xyXG4gICAgdGhpcy5uYXZCaW5kU3ViLmFkZChcclxuICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE5hdmlnYXRpb25FbmQpID0+IHtcclxuICAgICAgICAgIC8vIGZpbmQgcGFyZW50IGluZGV4IHdpdGggYWN0aXZlIGNoaWxkXHJcbiAgICAgICAgICBsZXQgY2hpbGRJbmRleDtcclxuICAgICAgICAgIGxldCBwYXJlbnRJbmRleCA9IHRoaXMubmF2aWdhdGlvbkRhdGEuZmluZEluZGV4KG4gPT4ge1xyXG4gICAgICAgICAgICBjaGlsZEluZGV4ID0gbi5zdWJOb2Rlcz8uZmluZEluZGV4KHMgPT4gZXZlbnQudXJsQWZ0ZXJSZWRpcmVjdHMuaW5jbHVkZXMocy5yb3V0ZS5yZXBsYWNlKCcuJywgJycpKSk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gY2hpbGRJbmRleCA+IC0xIHx8IGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzLmluY2x1ZGVzKG4ucm91dGUucmVwbGFjZSgnLicsICcnKSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIC8vIGlmIG5vIGNoaWxkcmVuIG9yIG5vIGluZGV4ZXMgYWN0aXZhdGUgZmlyc3QgcGFyZW50XHJcbiAgICAgICAgICBpZiAocGFyZW50SW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgICAgIHBhcmVudEluZGV4ID0gMDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUGFyZW50SW5kZXggPSBwYXJlbnRJbmRleDtcclxuICAgICAgICAgIGlmIChjaGlsZEluZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5pbm5lclN0ZXBwZXJzLmZpbmQoKGlzLCBpbmRleCkgPT4gaW5kZXggPT09IHBhcmVudEluZGV4KS5zZWxlY3RlZEluZGV4ID0gY2hpbGRJbmRleDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKiBJbml0aWFsaXplcyB0aGUgYWR2YW5jZWQgbmF2IHNldHRpbmdzICovXHJcbiAgcHJpdmF0ZSBpbml0QWR2YW5jZWRTZXR0aW5ncygpOiB2b2lkIHtcclxuICAgIHRoaXMuYWR2YW5jZWRTZXR0aW5ncy50b3BHYXBEZXNrdG9wID0gdGhpcy5hZHZhbmNlZFNldHRpbmdzLnRvcEdhcERlc2t0b3AgfHwgMDtcclxuICAgIHRoaXMuYWR2YW5jZWRTZXR0aW5ncy50b3BHYXBNb2JpbGUgPSB0aGlzLmFkdmFuY2VkU2V0dGluZ3MudG9wR2FwTW9iaWxlIHx8IHRoaXMuc2V0dGluZ3MuaGVhZGVySGVpZ2h0O1xyXG4gICAgdGhpcy5hZHZhbmNlZFNldHRpbmdzLm1hcmdpblRvcERlc2t0b3AgPSB0aGlzLmFkdmFuY2VkU2V0dGluZ3MubWFyZ2luVG9wRGVza3RvcCB8fCAwO1xyXG4gICAgdGhpcy5hZHZhbmNlZFNldHRpbmdzLm1hcmdpblRvcE1vYmlsZSA9IHRoaXMuYWR2YW5jZWRTZXR0aW5ncy5tYXJnaW5Ub3BNb2JpbGUgfHwgMDtcclxuXHJcbiAgfVxyXG5cclxuICAvKiogSW5pdGlhbGl6ZXMgdGhlIG5hdiB0aGVtZSBzZXR0aW5ncyAqL1xyXG4gIHByaXZhdGUgaW5pdFRoZW1lU2V0dGluZ3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRoZW1lU2V0dGluZ3MuY29udGVudEJnQ29sb3IgPyB0aGlzLnNldFRoZW1lQ29sb3IoJ2NvbnRlbnQtYmctY29sb3InLCB0aGlzLnRoZW1lU2V0dGluZ3MuY29udGVudEJnQ29sb3IpIDogdW5kZWZpbmVkO1xyXG4gICAgdGhpcy50aGVtZVNldHRpbmdzLmZvbnRDb2xvciA/IHRoaXMuc2V0VGhlbWVDb2xvcignZm9udC1jb2xvcicsIHRoaXMudGhlbWVTZXR0aW5ncy5mb250Q29sb3IpIDogdW5kZWZpbmVkO1xyXG4gICAgdGhpcy50aGVtZVNldHRpbmdzLmZvbnRDb2xvciA9IHRoaXMudGhlbWVTZXR0aW5ncy5mb250Q29sb3IgfHwgJyMwMDAnO1xyXG4gICAgdGhpcy50aGVtZVNldHRpbmdzLm1vYmlsZUJnQ29sb3IgPSB0aGlzLnRoZW1lU2V0dGluZ3MubW9iaWxlQmdDb2xvciB8fCAnI2ZmZmZmZic7XHJcbiAgICB0aGlzLnRoZW1lU2V0dGluZ3MuYmdHcmFkaWVudENvbG9yMSA/IHRoaXMuc2V0VGhlbWVDb2xvcignYmctZ3JhZGllbnQtY29sb3ItMScsIHRoaXMudGhlbWVTZXR0aW5ncy5iZ0dyYWRpZW50Q29sb3IxKSA6IHVuZGVmaW5lZDtcclxuICAgIHRoaXMudGhlbWVTZXR0aW5ncy5iZ0dyYWRpZW50Q29sb3IyID8gdGhpcy5zZXRUaGVtZUNvbG9yKCdiZy1ncmFkaWVudC1jb2xvci0yJywgdGhpcy50aGVtZVNldHRpbmdzLmJnR3JhZGllbnRDb2xvcjIpIDogdW5kZWZpbmVkO1xyXG4gICAgdGhpcy50aGVtZVNldHRpbmdzLmJvcmRlclJpZ2h0Q29sb3IgPyB0aGlzLnNldFRoZW1lQ29sb3IoJ2JvcmRlci1yaWdodC1jb2xvcicsIHRoaXMudGhlbWVTZXR0aW5ncy5ib3JkZXJSaWdodENvbG9yKSA6IHVuZGVmaW5lZDtcclxuICAgIHRoaXMudGhlbWVTZXR0aW5ncy5saXN0Qm9yZGVyQ29sb3IgPyB0aGlzLnNldFRoZW1lQ29sb3IoJ2xpc3QtYm9yZGVyLWNvbG9yJywgdGhpcy50aGVtZVNldHRpbmdzLmxpc3RCb3JkZXJDb2xvcikgOiB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnRoZW1lU2V0dGluZ3MuaGlnaGxpZ2h0R3JhZGllbnQxID8gdGhpcy5zZXRUaGVtZUNvbG9yKCdoaWdobGlnaHQtZ3JhZGllbnQtMScsIHRoaXMudGhlbWVTZXR0aW5ncy5oaWdobGlnaHRHcmFkaWVudDEpIDogdW5kZWZpbmVkO1xyXG4gICAgdGhpcy50aGVtZVNldHRpbmdzLmhpZ2hsaWdodEdyYWRpZW50MiA/IHRoaXMuc2V0VGhlbWVDb2xvcignaGlnaGxpZ2h0LWdyYWRpZW50LTInLCB0aGlzLnRoZW1lU2V0dGluZ3MuaGlnaGxpZ2h0R3JhZGllbnQyKSA6IHVuZGVmaW5lZDtcclxuICAgIHRoaXMudGhlbWVTZXR0aW5ncy5zdWJIaWdobGlnaHRCb3JkZXJDb2xvciA/XHJcbiAgICAgIHRoaXMuc2V0VGhlbWVDb2xvcignc3ViLWhpZ2hsaWdodC1ib3JkZXItY29sb3InLCB0aGlzLnRoZW1lU2V0dGluZ3Muc3ViSGlnaGxpZ2h0Qm9yZGVyQ29sb3IpIDogdW5kZWZpbmVkO1xyXG4gICAgdGhpcy50aGVtZVNldHRpbmdzLnN1YkhpZ2hsaWdodEJnQ29sb3IgP1xyXG4gICAgICB0aGlzLnNldFRoZW1lQ29sb3IoJ3N1Yi1oaWdobGlnaHQtYmctY29sb3InLCB0aGlzLnRoZW1lU2V0dGluZ3Muc3ViSGlnaGxpZ2h0QmdDb2xvcikgOiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICAvKiogSW5pdGlhbGl6ZXMgdGhlIGJhc2ljIG5hdiBzZXR0aW5ncyAqL1xyXG4gIHByaXZhdGUgaW5pdEJhc2ljU2V0dGluZ3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldHRpbmdzLmZvbnRBd2Vzb21lTWVudUljb24gPSB0aGlzLnNldHRpbmdzLmZvbnRBd2Vzb21lTWVudUljb24gfHwgJ2ZhcyBmYS1hbmdsZS1kb3VibGUtbGVmdCc7XHJcbiAgICB0aGlzLnNldHRpbmdzLmZvbnRBd2Vzb21lTWVudUljb25DbG9zZWQgPSB0aGlzLnNldHRpbmdzLmZvbnRBd2Vzb21lTWVudUljb25DbG9zZWQgfHwgJ2ZhcyBmYS1hbmdsZS1kb3VibGUtcmlnaHQnO1xyXG4gICAgdGhpcy5zZXR0aW5ncy5hbGxvd05hdlRvZ2dsZSA9IHRoaXMuc2V0dGluZ3MuYWxsb3dOYXZUb2dnbGUgPT0gbnVsbCA/IHRydWUgOiB0aGlzLnNldHRpbmdzLmFsbG93TmF2VG9nZ2xlO1xyXG4gICAgdGhpcy5zZXR0aW5ncy5tYWluTWVudVRleHQgPyB0aGlzLm1haW5NZW51VGV4dCA9IHRoaXMuc2V0dGluZ3MubWFpbk1lbnVUZXh0IDogdGhpcy5tYWluTWVudVRleHQgPSAnTWFpbiBNZW51JztcclxuICAgIHRoaXMuc2V0dGluZ3MuaGVhZGVySGVpZ2h0ID0gdGhpcy5zZXR0aW5ncy5oZWFkZXJIZWlnaHQgfHwgNjA7XHJcbiAgICB0aGlzLnNldHRpbmdzLm1lbnVCdXR0b25TUlRleHQgPSB0aGlzLnNldHRpbmdzLm1lbnVCdXR0b25TUlRleHQgfHwgJ01lbnUgQnV0dG9uJztcclxuICAgIHRoaXMuc2V0dGluZ3MubWVudVN0eWxlID0gdGhpcy5zZXR0aW5ncy5tZW51U3R5bGUgfHwgJ3N0YXRpYyc7XHJcbiAgICB0aGlzLnNldHRpbmdzLmRpc3BsYXlOdW1iZXJzID0gdGhpcy5zZXR0aW5ncy5kaXNwbGF5TnVtYmVycyA9PSBudWxsID8gdHJ1ZSA6IHRoaXMuc2V0dGluZ3MuZGlzcGxheU51bWJlcnM7XHJcbiAgICB0aGlzLnNldHRpbmdzLnByb2dyZXNzU2VjdGlvbkNvbXBsZXRlSWNvbiA9IHRoaXMuc2V0dGluZ3MucHJvZ3Jlc3NTZWN0aW9uQ29tcGxldGVJY29uIHx8ICdmYXMgZmEtY2hlY2stY2lyY2xlJztcclxuICAgIHRoaXMuc2V0dGluZ3MucHJvZ3Jlc3NTZWN0aW9uRnV0dXJlSWNvbiA9IHRoaXMuc2V0dGluZ3MucHJvZ3Jlc3NTZWN0aW9uRnV0dXJlSWNvbiB8fCAnZmFyIGZhLWNpcmNsZSc7XHJcbiAgICB0aGlzLnNldHRpbmdzLnByb2dyZXNzU2VjdGlvbkN1cnJlbnRJY29uID0gdGhpcy5zZXR0aW5ncy5wcm9ncmVzc1NlY3Rpb25DdXJyZW50SWNvbiB8fCAnZmFzIGZhLWNpcmNsZSc7XHJcbiAgICB0aGlzLnNldHRpbmdzLnByb2dyZXNzTWVudUNvbXBsZXRlSWNvbiA9IHRoaXMuc2V0dGluZ3MucHJvZ3Jlc3NNZW51Q29tcGxldGVJY29uIHx8ICdmYXIgZmEtY2hlY2snO1xyXG4gICAgdGhpcy5zZXR0aW5ncy5zaG93UHJvZ3Jlc3NCYXIgPSB0aGlzLnNldHRpbmdzLnNob3dQcm9ncmVzc0JhciA9PSBudWxsID8gdHJ1ZSA6IHRoaXMuc2V0dGluZ3Muc2hvd1Byb2dyZXNzQmFyXHJcbiAgICB0aGlzLnNldHRpbmdzLnNpZGVOYXZXaWR0aERlc2t0b3AgPSB0aGlzLnNldHRpbmdzLnNpZGVOYXZXaWR0aERlc2t0b3AgfHwgJzM1MCc7XHJcbiAgICB0aGlzLnNldHRpbmdzLnNpZGVOYXZXaWR0aE1vYmlsZSA9IHRoaXMuc2V0dGluZ3Muc2lkZU5hdldpZHRoTW9iaWxlIHx8ICczNTAnO1xyXG4gICAgdGhpcy5zZXR0aW5ncy5vdmVycmlkZU5hdmlnYXRpb24gPSB0aGlzLnNldHRpbmdzLm92ZXJyaWRlTmF2aWdhdGlvbiB8fCBmYWxzZTtcclxuICAgIHRoaXMuc2V0dGluZ3MucHJvZ3Jlc3NNZW51V2lkdGggPSB0aGlzLnNldHRpbmdzLnByb2dyZXNzTWVudVdpZHRoIHx8ICcyODAnO1xyXG4gICAgdGhpcy5zZXR0aW5ncy51c2VDdXN0b21Nb2JpbGVGb290ZXIgPSB0aGlzLnNldHRpbmdzLnVzZUN1c3RvbU1vYmlsZUZvb3RlciAhPSBudWxsID8gdGhpcy5zZXR0aW5ncy51c2VDdXN0b21Nb2JpbGVGb290ZXIgOiBmYWxzZTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInNvZi1hci1uYXYtY29udGFpbmVyXCJcclxuICBbc3R5bGUudG9wXT1cIm1vYmlsZVF1ZXJ5Lm1hdGNoZXMgJiYgYWR2YW5jZWRTZXR0aW5ncy50b3BHYXBNb2JpbGUgPyBhZHZhbmNlZFNldHRpbmdzLnRvcEdhcE1vYmlsZSArICdweCcgOiBzZXR0aW5ncy5oZWFkZXJIZWlnaHQgKyAncHgnXCJcclxuICBbY2xhc3Muc29mLWFyLW5hdi1tb2JpbGVdPVwibW9iaWxlUXVlcnkubWF0Y2hlc1wiPlxyXG4gIDxkaXYgKm5nSWY9XCJzaG93TWVzc2FnZVwiIG0tYS0wIGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW4gY2VudGVyXCIgc3dzLWFsZXJ0LS1zZWNvbmRhcnkgcm9sZT1cImFsZXJ0XCI+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgIDxpICpuZ0lmPVwic2hvd0NoZWNrTWFya1wiIG0tci01IG0tbC01IGNsYXNzPVwiZmFzIGZhLWNoZWNrLWNpcmNsZSBpY29uLWNvbnRhaW5lclwiPjwvaT5cclxuICAgICAgPHAgY2xhc3M9XCJtZXNzYWdlLWNvbnRhaW5lclwiIG0tci01IG0tbC01IFtpbm5lckh0bWxdPVwibWVzc2FnZSB8IHRyYW5zbGF0ZVwiPjwvcD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiPlxyXG4gICAgICA8YnV0dG9uIGlkPVwiYnRuQ2xvc2VcIiAoY2xpY2spPVwiaGlkZSgpXCIgbWF0LWljb24tYnV0dG9uIFthdHRyLmFyaWEtbGFiZWxdPVwiJ2NvbW1vbi5jbG9zZScgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmFsIGZhLXRpbWVzIGZhLWxnXCI+PC9pPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8YnV0dG9uIGlkPVwic29mLWFyLW5hdi1idG4tbWVudVwiIGFyaWEtbGFiZWw9XCJNZW51IEJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCJcclxuICAgIChjbGljayk9XCJzbmF2LnRvZ2dsZSgpXCIgY2xhc3M9XCJzb2YtYXItbmF2LW1lbnUtYnRuXCJcclxuICAgIFtjbGFzcy5oaWRkZW5dPVwiIShtb2JpbGVRdWVyeS5tYXRjaGVzIHx8IHNldHRpbmdzLmFsbG93TmF2VG9nZ2xlKSB8fCBzZXR0aW5ncy5oaWRlTmF2aWdhdGlvblwiPlxyXG4gICAgPHNwYW4gKm5nSWY9XCJpc05hdk9wZW47IGVsc2UgY2xvc2VkSWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwic29mLWFyLW5hdi1tZW51LWljb25cIj5cclxuICAgICAgPGkgY2xhc3M9XCJ7e3NldHRpbmdzLmZvbnRBd2Vzb21lTWVudUljb259fSBtZW51LWljb25cIj48L2k+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8bmctdGVtcGxhdGUgI2Nsb3NlZEljb24+XHJcbiAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwic29mLWFyLW5hdi1tZW51LWljb25cIj5cclxuICAgICAgICA8aSBjbGFzcz1cInt7c2V0dGluZ3MuZm9udEF3ZXNvbWVNZW51SWNvbkNsb3NlZH19IG1lbnUtaWNvblwiPjwvaT5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPnt7c2V0dGluZ3MubWVudUJ1dHRvblNSVGV4dCB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gIDwvYnV0dG9uPlxyXG5cclxuICA8bWF0LXNpZGVuYXYtY29udGFpbmVyIGF1dG9zaXplIGNsYXNzPVwic29mLWFyLW5hdi1zaWRlbmF2LWNvbnRhaW5lclwiIFtzdHlsZS5tYXJnaW5Ub3AucHhdPVwiXHJcbiAgICAgIG1vYmlsZVF1ZXJ5Lm1hdGNoZXMgPyBhZHZhbmNlZFNldHRpbmdzLm1hcmdpblRvcE1vYmlsZSA6IGFkdmFuY2VkU2V0dGluZ3MubWFyZ2luVG9wRGVza3RvcFwiPlxyXG4gICAgPG1hdC1zaWRlbmF2IFtkaXNhYmxlQ2xvc2VdPVwiIW1vYmlsZVF1ZXJ5Lm1hdGNoZXNcIiBjbGFzcz1cInNvZi1hci1uYXYtc2lkZW5hdlwiICNzbmF2XHJcbiAgICAgIFttb2RlXT1cIm1vYmlsZVF1ZXJ5Lm1hdGNoZXMgPyAnb3ZlcicgOiAnc2lkZSdcIiBbZml4ZWRJblZpZXdwb3J0XT1cIm1vYmlsZVF1ZXJ5Lm1hdGNoZXNcIlxyXG4gICAgICBbZml4ZWRUb3BHYXBdPVwibW9iaWxlUXVlcnkubWF0Y2hlcyA/IGFkdmFuY2VkU2V0dGluZ3MudG9wR2FwTW9iaWxlIDogYWR2YW5jZWRTZXR0aW5ncy50b3BHYXBEZXNrdG9wXCJcclxuICAgICAgW29wZW5lZF09XCIhbW9iaWxlUXVlcnkubWF0Y2hlcyAmJiAhc2V0dGluZ3MuaGlkZU5hdmlnYXRpb24gJiYgc2V0dGluZ3MubWVudVN0eWxlIT09J3Byb2dyZXNzJyBcIlxyXG4gICAgICBbc3R5bGUud2lkdGhdPVwibW9iaWxlUXVlcnkubWF0Y2hlcyA/IHNldE5hdldpZHRoKHNldHRpbmdzLnNpZGVOYXZXaWR0aE1vYmlsZSkgOiBzZXROYXZXaWR0aChzZXR0aW5ncy5zaWRlTmF2V2lkdGhEZXNrdG9wKVwiXHJcbiAgICAgIFtuZ1N0eWxlXT1cIntiYWNrZ3JvdW5kOm1vYmlsZVF1ZXJ5Lm1hdGNoZXMgPyB0aGVtZVNldHRpbmdzPy5tb2JpbGVCZ0NvbG9yIDogdW5kZWZpbmVkfVwiPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiIXNldHRpbmdzLmRpc2FibGVVc2VybmFtZU1vYmlsZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2JpbGVRdWVyeS5tYXRjaGVzICYmIHVzZXJOYW1lICYmICFzZXR0aW5ncy5jdXN0b21Vc2VyTmFtZVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1c2VyLW5hbWVcIj5cclxuICAgICAgICAgICAge3t1c2VyTmFtZX19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vYmlsZVF1ZXJ5Lm1hdGNoZXMgJiYgc2V0dGluZ3MuY3VzdG9tVXNlck5hbWVcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXNlci1uYW1lXCI+XHJcbiAgICAgICAgICAgIHt7c2V0dGluZ3MuY3VzdG9tVXNlck5hbWUgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSBOYXYgSGVhZGVyIENvbnRlbnQgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJuYXYtaGVhZGVyLWNvbnRlbnRcIj5cclxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc29mLWFyLW5hdi1oZWFkZXJdXCI+IDwvbmctY29udGVudD5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIFN0YXRpYyBOYXZpZ2F0aW9uIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibmF2LWNvbnRlbnQtaXRlbSBzaWRlbmF2LWJhY2tncm91bmRcIiAqbmdJZj1cInNldHRpbmdzLm1lbnVTdHlsZSA9PT0gJ3N0YXRpYydcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cInsncGFkZGluZy1ib3R0b20ucHgnOiAoZm9vdGVySXRlbUNvdW50KjY0KSsxMjh9XCI+XHJcbiAgICAgICAgPG5hdiAqbmdJZj1cInNldHRpbmdzLm1lbnVTdHlsZSA9PT0gJ3N0YXRpYydcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidtYWluJ1wiPlxyXG4gICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IG5hdiBvZiBuYXZpZ2F0aW9uRGF0YVwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJuYXY/LnN1Yk5vZGVzPy5sZW5ndGggJiYgIW5hdi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtYWNjb3JkaW9uPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBbZXhwYW5kZWRdPVwibmF2LmV4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIFtuZ0NsYXNzXT1cInsgJ3NvZi1hci1uYXYtc2VsZWN0ZWQnOiBpc05hdlNlbGVjdGVkKG5hdikgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBOYXZpZ2F0aW9uIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBJZiB0aGVyZSBpcyBhIHJvdXRlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibmF2Py5yb3V0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbmF2LWxpc3QgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiIFthdHRyLnJvbGVdPVwibnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJuYXYtaXRlbVwiIG1hdC1saXN0LWl0ZW0gW3JvdXRlckxpbmtdPVwibmF2Py5yb3V0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIlsnc29mLWFyLW5hdi1hY3RpdmUtcm91dGUnXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibmF2Py5mb250QXdlc29tZUljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cImljb24tc3R5bGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ7e25hdj8uZm9udEF3ZXNvbWVJY29ufX1cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzb2YtYXItbmF2LWhlYWRlci10ZXh0XCI+e3tuYXYudGV4dCB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW5hdi1saXN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBJZiB0aGVyZSBpcyBub3QgYSByb3V0ZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFuYXY/LnJvdXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1uYXYtbGlzdCBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCIgW2F0dHIucm9sZV09XCJudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cIm5hdi1pdGVtXCIgbWF0LWxpc3QtaXRlbSBbcm91dGVyTGlua0FjdGl2ZV09XCJbJ3NvZi1hci1uYXYtYWN0aXZlLXJvdXRlJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5hdj8uZm9udEF3ZXNvbWVJY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJpY29uLXN0eWxpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwie3tuYXY/LmZvbnRBd2Vzb21lSWNvbn19XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic29mLWFyLW5hdi1oZWFkZXItdGV4dFwiPnt7bmF2LnRleHQgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1uYXYtbGlzdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gU3ViTmF2IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LW5hdi1saXN0IFtuZ0NsYXNzXT1cInsgJ3NvZi1hci1uYXYtc2VsZWN0ZWQnOiBpc05hdlNlbGVjdGVkKHN1Ym5hdikgfVwiIGNsYXNzPVwic3VibmF2LWNvbnRlbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCIgKm5nRm9yPVwibGV0IHN1Ym5hdiBvZiBuYXY/LnN1Yk5vZGVzXCIgKGNsaWNrKT1cImNsb3NlTmF2aWdhdGlvbkZvck1vYmlsZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIucm9sZV09XCJudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWl0ZW0gbmF2LWl0ZW0tbWFyZ2luXCIgbWF0LWxpc3QtaXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIlsnc29mLWFyLW5hdi1zdWItYWN0aXZlLXJvdXRlJ11cIiBbcm91dGVyTGlua109XCJzdWJuYXYucm91dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiKG5hdi50ZXh0IHwgdHJhbnNsYXRlKSArICcgJyArIChzdWJuYXYudGV4dCB8IHRyYW5zbGF0ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNvZi1hci1uYXYtaGVhZGVyLXRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIobmF2LnRleHQgfCB0cmFuc2xhdGUpICsgJyAnICsgKHN1Ym5hdi50ZXh0IHwgdHJhbnNsYXRlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzdWJuYXYudGV4dCB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1uYXYtbGlzdD5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtYWNjb3JkaW9uPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwhLS0gSWYgc3Vibm9kZXMgYXJlIG5vdCB0aGVyZSAtLT5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFuYXY/LnN1Yk5vZGVzPy5sZW5ndGggJiYgIW5hdj8uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gSWYgdGhlcmUgaXMgYSByb3V0ZSAtLT5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5hdj8ucm91dGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LW5hdi1saXN0IFtuZ0NsYXNzXT1cInsgJ3NvZi1hci1uYXYtc2VsZWN0ZWQnOiBpc05hdlNlbGVjdGVkKG5hdikgfVwiIGNsYXNzPVwibmF2LWhlYWRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCIgKGNsaWNrKT1cImNsb3NlTmF2aWdhdGlvbkZvck1vYmlsZSgpXCIgW2F0dHIucm9sZV09XCJudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cIm5hdi1pdGVtIG5hdi1pdGVtLW1hcmdpblwiIG1hdC1saXN0LWl0ZW0gW3JvdXRlckxpbmtdPVwibmF2Py5yb3V0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIlsnc29mLWFyLW5hdi1hY3RpdmUtcm91dGUnXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibmF2Py5mb250QXdlc29tZUljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cImljb24tc3R5bGluZ1wiPjxpIGNsYXNzPVwie3tuYXY/LmZvbnRBd2Vzb21lSWNvbn19XCI+PC9pPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic29mLWFyLW5hdi1oZWFkZXItdGV4dFwiPnt7bmF2LnRleHQgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1uYXYtbGlzdD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gSWYgdGhlcmUgaXMgbm90IGEgcm91dGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbmF2Py5yb3V0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtbmF2LWxpc3QgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiIFthdHRyLnJvbGVdPVwibnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJuYXYtaXRlbVwiIG1hdC1saXN0LWl0ZW0gW3JvdXRlckxpbmtBY3RpdmVdPVwiWydzb2YtYXItbmF2LWFjdGl2ZS1yb3V0ZSddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJuYXY/LmZvbnRBd2Vzb21lSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiaWNvbi1zdHlsaW5nXCI+PGkgY2xhc3M9XCJ7e25hdj8uZm9udEF3ZXNvbWVJY29ufX1cIj48L2k+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzb2YtYXItbmF2LWhlYWRlci10ZXh0XCI+e3tuYXYudGV4dCB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW5hdi1saXN0PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgPC91bD5cclxuICAgICAgICA8L25hdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIFN0ZXBwZXIgLS0+XHJcbiAgICAgIDxtYXQtdmVydGljYWwtc3RlcHBlciAqbmdJZj1cInNldHRpbmdzLm1lbnVTdHlsZSA9PT0gJ3N0ZXBwZXInXCIgW3NlbGVjdGVkSW5kZXhdPVwic2VsZWN0ZWRQYXJlbnRJbmRleFwiICN2ZXJ0U3RlcHBlclxyXG4gICAgICAgIFtsaW5lYXJdPVwiZmFsc2VcIiBjbGFzcz1cInNpZGVuYXYtYmFja2dyb3VuZFwiPlxyXG4gICAgICAgIDwhLS0gQWx0ZXJuYXRlIHN0ZXAgc3RhdGVzIGZvciBuYXYsIGljYW9ucyBzaG91bGQgYWx3YXlzIGJlIHdoaXRlIG9ubHkgd29ya2VkIHdpdGggc3R5bGVzIC0tPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwcGVySWNvbj1cImNyZWF0ZVwiPlxyXG4gICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFkIGZhLXBlbmNpbC1hbHRcIiBzdHlsZT1cImNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50XCI+PC9pPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBwZXJJY29uPVwiZWRpdFwiPlxyXG4gICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFkIGZhLXBlbmNpbC1hbHRcIiBzdHlsZT1cImNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50XCI+PC9pPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBwZXJJY29uPVwiYWN0aXZlXCI+XHJcbiAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYWQgZmEtcGVuY2lsLWFsdFwiIHN0eWxlPVwiY29sb3I6IHdoaXRlICFpbXBvcnRhbnRcIj48L2k+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcHBlckljb249XCJkb25lXCI+XHJcbiAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2hlY2tcIiBzdHlsZT1cImNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50XCI+PC9pPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDwhLS0gbmF2IHN0ZXBzIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG5hdiBvZiBuYXZpZ2F0aW9uRGF0YTsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgPG1hdC1zdGVwICpuZ0lmPVwiIW5hdj8uaGlkZGVuXCIgc3RhdGU9XCJ7eyBkZXRlcm1pbmVTdGVwU3RhdGUoaSwgLTEpIH19XCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwTGFiZWwgKm5nSWY9XCIhbmF2LmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgaWQ9XCJkaXZTdGVwe3sgaSB9fVwiIHN0eWxlPVwiaGVpZ2h0OiA3MnB4XCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCJcclxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyBuYXYudGV4dCB8IHRyYW5zbGF0ZSB9fVwiIFttYXRUb29sdGlwUG9zaXRpb25dPVwiJ2FmdGVyJ1wiIGZ4RmxleD1cIjEwMCVcIj5cclxuICAgICAgICAgICAgICAgIDxhIGlkPVwic3RlcHt7IGkgfX1cIiBmeEZsZXg9XCIxMDAlXCIgY2xhc3M9XCJtYXQtYnV0dG9uIHN0ZXAtbGlua1wiIFtyb3V0ZXJMaW5rXT1cIm5hdi5yb3V0ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgY29sb3I6IHRoZW1lU2V0dGluZ3M/LmZvbnRDb2xvciB9XCIgW3JvdXRlckxpbmtBY3RpdmVdPVwiWydzdGVwLWFjdGl2ZSddXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IG5hdi50ZXh0IHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwibmF2LnN0ZXBDb250ZW50IHwgdHJhbnNsYXRlXCI+PC9wPlxyXG4gICAgICAgICAgICA8IS0tIHN1YiBuYXYgLS0+XHJcbiAgICAgICAgICAgIDxtYXQtdmVydGljYWwtc3RlcHBlciAqbmdJZj1cIm5hdj8uc3ViTm9kZXNcIiBbc2VsZWN0ZWRJbmRleF09XCJzZWxlY3RlZENoaWxkSW5kZXhlc1tpXVwiIFtsaW5lYXJdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICN2ZXJ0U3RlcHBlcklubmVyPlxyXG4gICAgICAgICAgICAgIDwhLS0gQWx0ZXJuYXRlIHN0ZXAgc3RhdGVzIGZvciBzdWIgbmF2LCBpY29ucyBzaG91bGQgYWx3YXlzIGJlIHdoaXRlIG9ubHkgd29ya2VkIHdpdGggc3R5bGVzIC0tPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwcGVySWNvbj1cImNyZWF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFkIGZhLXBlbmNpbC1hbHRcIiBzdHlsZT1cImNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBwZXJJY29uPVwiZWRpdFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFkIGZhLXBlbmNpbC1hbHRcIiBzdHlsZT1cImNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBwZXJJY29uPVwiZG9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZWNrXCIgc3R5bGU9XCJjb2xvcjogd2hpdGUgIWltcG9ydGFudFwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwcGVySWNvbj1cImFjdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBlbmNpbC1hbHRcIiBzdHlsZT1cImNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBwZXJJY29uPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPCEtLSBzdWIgbmF2IHN0ZXBzIC0tPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1Ym5hdiBvZiBuYXY/LnN1Yk5vZGVzOyBsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LXN0ZXAgc3RhdGU9XCJ7eyBkZXRlcm1pbmVTdGVwU3RhdGUoaSwgaikgfX1cIiAqbmdJZj1cIiFzdWJuYXYuaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwTGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImRpdlN1YlN0ZXB7eyBpIH19LXt7IGogfX1cIiBzdHlsZT1cImhlaWdodDogNzJweFwiIGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3sgc3VibmF2LnRleHQgfCB0cmFuc2xhdGUgfX1cIiBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cIidhZnRlcidcIiBmeEZsZXg9XCIxMDAlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YSBpZD1cInN1YlN0ZXB7eyBpIH19LXt7IGogfX1cIiBjbGFzcz1cIm1hdC1idXR0b24gc3RlcC1saW5rXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyBjb2xvcjogdGhlbWVTZXR0aW5ncz8uZm9udENvbG9yIH1cIiBbcm91dGVyTGlua109XCJzdWJuYXYucm91dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZV09XCJbJ3N0ZXAtYWN0aXZlJ11cIj57eyBzdWJuYXYudGV4dCB8IHRyYW5zbGF0ZSB9fTwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPHAgW2lubmVySFRNTF09XCJzdWJuYXYuc3RlcENvbnRlbnQgfCB0cmFuc2xhdGVcIj48L3A+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1zdGVwPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPC9tYXQtdmVydGljYWwtc3RlcHBlcj5cclxuICAgICAgICAgIDwvbWF0LXN0ZXA+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8L21hdC12ZXJ0aWNhbC1zdGVwcGVyPlxyXG5cclxuICAgICAgPCEtLSBOYXYgRm9vdGVyIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibmF2LWZvb3Rlci1pdGVtXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNldHRpbmdzLm1lbnVTdHlsZSA9PT0gJ3N0YXRpYydcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG5hdiBvZiBmb290ZXJOYXZpZ2F0aW9uRGF0YVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwhLS0gRGVza3RvcCBOYXYgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFuYXY/LnN1Yk5vZGVzPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gSWYgdGhlcmUgaXMgYSByb3V0ZSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJuYXY/LnJvdXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtbmF2LWxpc3QgY2xhc3M9XCJuYXYtaGVhZGVyXCIgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWl0ZW0gbmF2LWl0ZW0tbWFyZ2luXCIgbWF0LWxpc3QtaXRlbSBbcm91dGVyTGlua109XCJuYXY/LnJvdXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIlsnc29mLWFyLW5hdi1hY3RpdmUtcm91dGUnXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5hdj8uZm9udEF3ZXNvbWVJY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiaWNvbi1zdHlsaW5nXCI+PGkgY2xhc3M9XCJ7e25hdj8uZm9udEF3ZXNvbWVJY29ufX1cIj48L2k+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e25hdi50ZXh0IHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LW5hdi1saXN0PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIElmIHRoZXJlIGlzIG5vdCBhIHJvdXRlIC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFuYXY/LnJvdXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtbmF2LWxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD1cInNvZi1hci1uYXYtYnRuLW5vZGVcIiBjbGFzcz1cIm5hdi1pdGVtXCIgbWF0LWxpc3QtaXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVdPVwiWydzb2YtYXItbmF2LWFjdGl2ZS1yb3V0ZSddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibmF2Py5mb250QXdlc29tZUljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJpY29uLXN0eWxpbmdcIj48aSBjbGFzcz1cInt7bmF2Py5mb250QXdlc29tZUljb259fVwiPjwvaT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7bmF2LnRleHQgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L21hdC1uYXYtbGlzdD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5hdmlnYXRpb25Gb290ZXJcIj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSB0aGUgbW9iaWxlIHByb2dyZXNzIG1lbnUtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNldHRpbmdzPy5tZW51U3R5bGUgPT09ICdwcm9ncmVzcydcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZW5hdi1iYWNrZ3JvdW5kXCIgW25nU3R5bGVdPVwieydwYWRkaW5nLWJvdHRvbS5weCc6IChmb290ZXJJdGVtQ291bnQqNjQpKzEyOH1cIj5cclxuICAgICAgICAgIDxtYXQtYWNjb3JkaW9uPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzdGVwIG9mIG5hdmlnYXRpb25EYXRhOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0ZXAuc3ViTm9kZXMgJiYgc3RlcC5zdWJOb2Rlcy5sZW5ndGggPiAwICYmICFzdGVwLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwgaGlkZVRvZ2dsZSBjbGFzcz1cInByb2dyZXNzLW1vYmlsZS1leHBhbnNpb24tcGFuZWxcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiKCFzdGVwLnZpc2l0ZWQgfHwgc3RlcC5pc0Rpc2FibGVkKSAmJiAhc2V0dGluZ3Mub3ZlcnJpZGVOYXZpZ2F0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgKG9wZW5lZCk9XCJwYW5lbE9wZW5TdGF0ZSA9IHRydWVcIiAoY2xvc2VkKT1cInBhbmVsT3BlblN0YXRlID0gZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGUgY2xhc3M9XCJwcm9ncmVzcy1tb2JpbGUtcGFuZWwtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDogLXdlYmtpdC1maWxsLWF2YWlsYWJsZTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzooIXN0ZXAudmlzaXRlZCB8fCBzdGVwLmlzRGlzYWJsZWQpICYmICFzZXR0aW5ncy5vdmVycmlkZU5hdmlnYXRpb24gJiYgIXN0ZXAuY29tcGxldGUsJ2NvbG9yLXByaW1hcnknOnN0ZXAuY29tcGxldGUgJiYgc3RlcCE9PWFjdGl2ZVBhcmVudE5vZGUsJ3Byb2dyZXNzLW1lbnUtYWN0aXZlJzpzdGVwPT09YWN0aXZlUGFyZW50Tm9kZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInByb2dyZXNzUGFyZW50Tm9kZUljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3N0ZXA6c3RlcH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZXR0aW5ncz8uZGlzcGxheU51bWJlcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2kgPCAxMCA/IFwiMFwiICsgKGkgKyAxKSArIFwiLiBcIiA6IGkgKyBcIiAuIFwiIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmF2LWJ0bi10ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHN0ZXAudGV4dCB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhcGFuZWxPcGVuU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1kb3duIHBhbmVsLWljb25cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBhbmVsT3BlblN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tdXAgcGFuZWwtaWNvblwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtcGFuZWwtZGVzY3JpcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtcGFuZWwtZGVzY3JpcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gbW9iaWxlIHN1YiBtZW51IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtbmF2LW1lbnVcIiAqbmdGb3I9XCJsZXQgc3ViTm9kZSBvZiBzdGVwLnN1Yk5vZGVzOyBsZXQgaWR4ID0gaW5kZXg7XCJcclxuICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cInN0ZXAuc3ViTm9kZXNbaWR4XS5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHJvbGU9XCJsaW5rXCIgaWQ9XCJtb2JpbGVNZW51e3sgaWR4IH19XCIgbWF0LWJ1dHRvbiBjbGFzcz1cInN0ZXAtbGluayBwcm9ncmVzcy1tZW51LW1vYmlsZS1idG5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydjb2xvci1wcmltYXJ5JzpzdWJOb2RlLmNvbXBsZXRlICYmIHN1Yk5vZGUhPT1hY3RpdmVTdWJOb2RlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZV09XCJbJ3Byb2dyZXNzLW1lbnUtYWN0aXZlJ11cIiBbbmdTdHlsZV09XCJ7ICcgY29sb3InOiB0aGVtZVNldHRpbmdzPy5mb250Q29sb3IgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJzdWJOb2RlLnJvdXRlXCIgW2Rpc2FibGVkXT1cIiFzdWJOb2RlLnZpc2l0ZWQgJiYgIXNldHRpbmdzLm92ZXJyaWRlTmF2aWdhdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInByb2dyZXNzU3ViTm9kZUljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntzdWJOb2RlOnN1Yk5vZGV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYXYtbWVudS1idG4tdGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOighc3ViTm9kZS52aXNpdGVkKSAmJiAhc2V0dGluZ3Mub3ZlcnJpZGVOYXZpZ2F0aW9uICYmICFzdWJOb2RlLmNvbXBsZXRlLCdjb2xvci1wcmltYXJ5JzpzdWJOb2RlLmNvbXBsZXRlICYmIHN1Yk5vZGUhPT1hY3RpdmVTdWJOb2RlLCdwcm9ncmVzcy1tZW51LWFjdGl2ZSc6c3ViTm9kZT09PWFjdGl2ZVN1Yk5vZGV9XCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3ViTm9kZS50ZXh0IHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8IS0tIGlmIHRoZXJlIGFyZSBubyBzdWJOb2RlcyAtLT5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKCFzdGVwLnN1Yk5vZGVzIHx8IHN0ZXAuc3ViTm9kZXMubGVuZ3RoPT09MCkgJiYgIXN0ZXAuaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCAjcGFuZWwgaGlkZVRvZ2dsZSAob3BlbmVkKT1cImRpc2FibGVQYW5lbChwYW5lbCxpKVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZ3Jlc3MtbW9iaWxlLWV4cGFuc2lvbi1wYW5lbFwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIoIXN0ZXAudmlzaXRlZCB8fCBzdGVwLmlzRGlzYWJsZWQpICYmICFzZXR0aW5ncy5vdmVycmlkZU5hdmlnYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGUgY2xhc3M9XCJwcm9ncmVzcy1tb2JpbGUtcGFuZWwtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6KCFzdGVwLnZpc2l0ZWQgfHwgc3RlcC5pc0Rpc2FibGVkKSAmJiAhc2V0dGluZ3Mub3ZlcnJpZGVOYXZpZ2F0aW9uICYmICFzdGVwLmNvbXBsZXRlLCdjb2xvci1wcmltYXJ5JzpzdGVwLmNvbXBsZXRlICYmIHN0ZXAhPT1hY3RpdmVQYXJlbnROb2RlLCdwcm9ncmVzcy1tZW51LWFjdGl2ZSc6c3RlcD09PWFjdGl2ZVBhcmVudE5vZGV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJwcm9ncmVzc1BhcmVudE5vZGVJY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntzdGVwOnN0ZXB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2V0dGluZ3M/LmRpc3BsYXlOdW1iZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tpIDwgMTAgPyBcIjBcIiArIChpICsgMSkgKyBcIi4gXCIgOiBpICsgXCIgLiBcIiB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hdi1idG4tdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzdGVwLnRleHQgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtcGFuZWwtZGVzY3JpcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtcGFuZWwtZGVzY3JpcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9tYXQtYWNjb3JkaW9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIHRoZSBwcm9ncmVzcyBtZW51IGxhbmd1YWdlIGFuZCBsb2dvdXQgYnV0dG9ucy0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtZm9vdGVyLWl0ZW0gcHJvZ3Jlc3MtZm9vdGVyXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibmF2aWdhdGlvbkZvb3RlclwiPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L21hdC1zaWRlbmF2PlxyXG4gICAgPG1hdC1zaWRlbmF2LWNvbnRlbnQ+XHJcbiAgICAgIDwhLS0gSG9yaXpvbnRhbCBQcm9ncmVzcyAtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNldHRpbmdzPy5tZW51U3R5bGUgPT09ICdwcm9ncmVzcydcIj5cclxuICAgICAgICA8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cInNldHRpbmdzPy5zaG93UHJvZ3Jlc3NCYXJcIiBtb2RlPVwiZGV0ZXJtaW5hdGVcIiBbdmFsdWVdPVwibmF2UHJvZ3Jlc3NDb3VudFwiXHJcbiAgICAgICAgICBzdHlsZT1cImhlaWdodDogOXB4XCIgY29sb3I9XCJhY2NlbnRcIj5cclxuICAgICAgICA8L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICAgICAgPG5hdiBbYXR0ci5hcmlhLWxhYmVsXT1cIidtYWluJ1wiIGZ4SGlkZS5sdC1tZCBjbGFzcz1cInN0ZXAtdGl0bGVzIGNlbnRlclwiIGZ4TGF5b3V0PVwicm93XCIgc3R5bGU9XCJqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyICFpbXBvcnRhbnRcIlxyXG4gICAgICAgICAgW2NsYXNzLmhpZGRlbl09XCJzZXR0aW5ncy5oaWRlTmF2aWdhdGlvblwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzdGVwIG9mIG5hdmlnYXRpb25EYXRhOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJob3Jpem9udGFsLXByb2dyZXNzLWRpdlwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc3RlcC5zdWJOb2Rlcz8ubGVuZ3RoICYmICFzdGVwLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFtyb3V0ZXJMaW5rXT1cInN0ZXAucm91dGVcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiKCFzdGVwLnZpc2l0ZWQgfHwgc3RlcC5pc0Rpc2FibGVkKSAmJiAhc2V0dGluZ3Mub3ZlcnJpZGVOYXZpZ2F0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9ncmVzcy1tZW51LWJ0blwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY29sb3ItcHJpbWFyeSc6c3RlcC5jb21wbGV0ZSAmJiBzdGVwIT09YWN0aXZlUGFyZW50Tm9kZSwncHJvZ3Jlc3MtbWVudS1hY3RpdmUnOnN0ZXA9PT1hY3RpdmVQYXJlbnROb2RlfVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwicHJvZ3Jlc3NQYXJlbnROb2RlSWNvbnNcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3N0ZXA6c3RlcH1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZXR0aW5ncz8uZGlzcGxheU51bWJlcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e2kgPCAxMCA/IFwiMFwiICsgKGkgKyAxKSArIFwiLiBcIiA6IGkgKyBcIiAuIFwiIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmF2LWJ0bi10ZXh0XCI+e3sgc3RlcC50ZXh0IHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPCEtLSBpZiB0aGVyZSBhcmUgc3Vibm9kZXMgY3JlYXRlIG1lbnVzIGZvciBlYWNoIHN0ZXAgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0ZXAuc3ViTm9kZXMgJiYgc3RlcC5zdWJOb2Rlcy5sZW5ndGggJiYgIXN0ZXAuaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY29sb3ItcHJpbWFyeSc6c3RlcC5jb21wbGV0ZSAmJiBzdGVwIT09YWN0aXZlUGFyZW50Tm9kZSwncHJvZ3Jlc3MtbWVudS1hY3RpdmUnOnN0ZXA9PT1hY3RpdmVQYXJlbnROb2RlfVwiXHJcbiAgICAgICAgICAgICAgICAgIG1hdC1idXR0b24gW2Rpc2FibGVkXT1cIighc3RlcC52aXNpdGVkIHx8IHN0ZXAuaXNEaXNhYmxlZCkgJiYgIXNldHRpbmdzLm92ZXJyaWRlTmF2aWdhdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZ3Jlc3MtbWVudS1idG5cIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwicHJvZ3Jlc3NQYXJlbnROb2RlSWNvbnNcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3N0ZXA6c3RlcH1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZXR0aW5ncz8uZGlzcGxheU51bWJlcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e2kgPCAxMCA/IFwiMFwiICsgKGkgKyAxKSArIFwiLiBcIiA6IGkgKyBcIiAuIFwiIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmF2LWJ0bi10ZXh0XCI+e3sgc3RlcC50ZXh0IHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJzb2YtYXItbWF0LW1lbnUgcHJvZ3Jlc3MtbWVudS1wYW5lbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtbmF2LW1lbnVcIiAqbmdGb3I9XCJsZXQgc3ViTm9kZSBvZiBzdGVwLnN1Yk5vZGVzOyBsZXQgaWR4ID0gaW5kZXg7XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7d2lkdGg6c2V0dGluZ3MucHJvZ3Jlc3NNZW51V2lkdGgrJ3B4J31cIiBbaGlkZGVuXT1cInN0ZXAuc3ViTm9kZXNbaWR4XS5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHJvbGU9XCJsaW5rXCIgaWQ9XCJzdWJtZW51e3sgaWR4IH19XCIgY2xhc3M9XCJzdGVwLWxpbmsgcHJvZ3Jlc3MtbWVudS1idG5cIiBtYXQtbWVudS1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2NvbG9yLXByaW1hcnknOnN1Yk5vZGUuY29tcGxldGUgJiYgc3ViTm9kZSE9PWFjdGl2ZVN1Yk5vZGUsJ2Rpc2FibGVkJzohc3ViTm9kZS52aXNpdGVkICYmICFzZXR0aW5ncy5vdmVycmlkZU5hdmlnYXRpb259XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIlsncHJvZ3Jlc3MtbWVudS1hY3RpdmUnXVwiIFtuZ1N0eWxlXT1cInsgJyBjb2xvcic6IHRoZW1lU2V0dGluZ3M/LmZvbnRDb2xvciB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cInN1Yk5vZGUucm91dGVcIiBbZGlzYWJsZWRdPVwiIXN1Yk5vZGUudmlzaXRlZCAmJiAhc2V0dGluZ3Mub3ZlcnJpZGVOYXZpZ2F0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LW1lbnUtYnRuLWRpdlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwicHJvZ3Jlc3NTdWJOb2RlSWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7c3ViTm9kZTpzdWJOb2RlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hdi1tZW51LWJ0bi10ZXh0XCI+e3sgc3ViTm9kZS50ZXh0IHx0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmF2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2JpbGUtcHJvZ3Jlc3MtY29udGFpbmVyXCIgZnhIaWRlLmd0LXNtPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy1jb250ZW50IHNvZi1hci1uYXYtY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICA8L21hdC1zaWRlbmF2LWNvbnRlbnQ+XHJcbiAgPC9tYXQtc2lkZW5hdi1jb250YWluZXI+XHJcbiAgPCEtLSBUaGUgcHJvZ3Jlc3MgbWVudSBwYXJlbnQgbm9kZSBpY29uIHRlbXBsYXRlLS0+XHJcbiAgPG5nLXRlbXBsYXRlICNwcm9ncmVzc1BhcmVudE5vZGVJY29ucyBsZXQtc3RlcD0nc3RlcCc+XHJcbiAgICA8c3BhbiAqbmdJZj1cInN0ZXAuY29tcGxldGUgJiYgc3RlcCAhPT0gYWN0aXZlUGFyZW50Tm9kZVwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ2FybWF0dXJlLnNvZi1wcm9ncmVzcy1iYXIuc3RlcC1sYWJlbHMuY29tcGxldGUnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwie3sgc2V0dGluZ3MucHJvZ3Jlc3NTZWN0aW9uQ29tcGxldGVJY29uIH19IGNvbG9yLXByaW1hcnkgcHJvZ3Jlc3MtbmF2LWljb25cIlxyXG4gICAgICAgIFt0aXRsZV09XCInYXJtYXR1cmUuc29mLXByb2dyZXNzLWJhci5zdGVwLWxhYmVscy5jb21wbGV0ZScgfCB0cmFuc2xhdGVcIj48L2k+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c3BhbiAqbmdJZj1cInN0ZXAgPT09IGFjdGl2ZVBhcmVudE5vZGVcIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidhcm1hdHVyZS5zb2YtcHJvZ3Jlc3MtYmFyLnN0ZXAtbGFiZWxzLmluLXByb2dyZXNzJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICA8aSBjbGFzcz1cInt7IHNldHRpbmdzLnByb2dyZXNzU2VjdGlvbkN1cnJlbnRJY29uIH19IGNvbG9yLXByaW1hcnkgcHJvZ3Jlc3MtbmF2LWljb25cIlxyXG4gICAgICAgIFt0aXRsZV09XCInYXJtYXR1cmUuc29mLXByb2dyZXNzLWJhci5zdGVwLWxhYmVscy5pbi1wcm9ncmVzcycgfCB0cmFuc2xhdGVcIj48L2k+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c3BhbiAqbmdJZj1cIiFzdGVwLmNvbXBsZXRlICYmIHN0ZXAgIT09IGFjdGl2ZVBhcmVudE5vZGVcIlxyXG4gICAgICBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzohc3RlcC52aXNpdGVkICYmICFzZXR0aW5ncy5vdmVycmlkZU5hdmlnYXRpb259XCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInYXJtYXR1cmUuc29mLXByb2dyZXNzLWJhci5zdGVwLWxhYmVscy5ub3QtZG9uZScgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgPGkgY2xhc3M9XCJ7eyBzZXR0aW5ncy5wcm9ncmVzc1NlY3Rpb25GdXR1cmVJY29uIH19IHByb2dyZXNzLW5hdi1pY29uXCJcclxuICAgICAgICBbdGl0bGVdPVwiJ2FybWF0dXJlLnNvZi1wcm9ncmVzcy1iYXIuc3RlcC1sYWJlbHMubm90LWRvbmUnIHwgdHJhbnNsYXRlXCI+PC9pPlxyXG4gICAgPC9zcGFuPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPCEtLSBUaGUgcHJvZ3Jlc3MgbWVudSBzdWIgbm9kZSBpY29uIHRlbXBsYXRlLS0+XHJcbiAgPG5nLXRlbXBsYXRlICNwcm9ncmVzc1N1Yk5vZGVJY29ucyBsZXQtc3ViTm9kZT0nc3ViTm9kZSc+XHJcbiAgICA8c3BhbiBjbGFzcz1cInByb2dyZXNzLW1lbnUtaWNvblwiICpuZ0lmPVwic3ViTm9kZS5jb21wbGV0ZSAmJiBhY3RpdmVTdWJOb2RlICE9PSBzdWJOb2RlXCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInYXJtYXR1cmUuc29mLXByb2dyZXNzLWJhci5zdGVwLWxhYmVscy5jb21wbGV0ZScgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgPGkgY2xhc3M9XCJ7e3NldHRpbmdzLnByb2dyZXNzTWVudUNvbXBsZXRlSWNvbn19IGNvbG9yLXByaW1hcnkgcHJvZ3Jlc3MtbmF2LWljb25cIlxyXG4gICAgICAgIFt0aXRsZV09XCInYXJtYXR1cmUuc29mLXByb2dyZXNzLWJhci5zdGVwLWxhYmVscy5jb21wbGV0ZScgfCB0cmFuc2xhdGVcIj48L2k+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c3BhbiBjbGFzcz1cInByb2dyZXNzLW1lbnUtaWNvblwiICpuZ0lmPVwiYWN0aXZlU3ViTm9kZSA9PT0gc3ViTm9kZVwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ2FybWF0dXJlLnNvZi1wcm9ncmVzcy1iYXIuc3RlcC1sYWJlbHMuaW4tcHJvZ3Jlc3MnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwie3sgc2V0dGluZ3MucHJvZ3Jlc3NTZWN0aW9uQ3VycmVudEljb24gfX0gY29sb3ItcHJpbWFyeSBwcm9ncmVzcy1uYXYtaWNvblwiXHJcbiAgICAgICAgW3RpdGxlXT1cIidhcm1hdHVyZS5zb2YtcHJvZ3Jlc3MtYmFyLnN0ZXAtbGFiZWxzLmluLXByb2dyZXNzJyB8IHRyYW5zbGF0ZVwiPjwvaT5cclxuICAgIDwvc3Bhbj5cclxuICAgIDxzcGFuIGNsYXNzPVwicHJvZ3Jlc3MtbWVudS1pY29uXCIgKm5nSWY9XCIhc3ViTm9kZS5jb21wbGV0ZSAmJiBhY3RpdmVTdWJOb2RlICE9PSBzdWJOb2RlXCJcclxuICAgICAgW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6IXN1Yk5vZGUudmlzaXRlZCAmJiAhc2V0dGluZ3Mub3ZlcnJpZGVOYXZpZ2F0aW9ufVwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ2FybWF0dXJlLnNvZi1wcm9ncmVzcy1iYXIuc3RlcC1sYWJlbHMubm90LWRvbmUnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwie3sgc2V0dGluZ3MucHJvZ3Jlc3NTZWN0aW9uRnV0dXJlSWNvbiB9fSBwcm9ncmVzcy1uYXYtaWNvblwiXHJcbiAgICAgICAgW3RpdGxlXT1cIidhcm1hdHVyZS5zb2YtcHJvZ3Jlc3MtYmFyLnN0ZXAtbGFiZWxzLm5vdC1kb25lJyB8IHRyYW5zbGF0ZVwiPjwvaT5cclxuICAgIDwvc3Bhbj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDwhLS0gVGhlIG5hdmlnYXRpb24gZm9vdGVyIHRlbXBsYXRlIGZvciBsYW5ndWFnZSBhbmQgbG9nb3V0IGJ1dHRvbnMgLS0+XHJcbiAgPG5nLXRlbXBsYXRlICNuYXZpZ2F0aW9uRm9vdGVyPlxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NvZi1hci1uYXYtbW9iaWxlLWZvb3Rlcl1cIj4gPC9uZy1jb250ZW50PlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzZXR0aW5ncy51c2VDdXN0b21Nb2JpbGVGb290ZXJcIj5cclxuICAgICAgPCEtLSBUaGUgbGFuZ3VhZ2UgYnV0dG9uIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nSWY9XCJsYW5ndWFnZVNldHRpbmdzPy5kaXNwbGF5TGFuZ3VhZ2VPcHRpb25zICYmIGxhbmd1YWdlU2V0dGluZ3M/Lmxhbmd1YWdlcy5sZW5ndGggPiAyICYmIG1vYmlsZVF1ZXJ5Lm1hdGNoZXNcIj5cclxuICAgICAgICA8YnV0dG9uIGlkPVwic29mLWFyLW5hdi1sYW5nLWRyb3Bkb3duXCIgbWF0LXN0cm9rZWQtYnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cImZhZGVkLWJ1dHRvbi01MCBsYW5ndWFnZS1idXR0b24gbmF2aWdhdGlvbkZvb3RlclwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJoZWFkZXJMYW5ndWFnZU1lbnVcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYW5ndWFnZVNldHRpbmdzLmJ1dHRvblRleHQgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiaWNvbi1zdHlsaW5nXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWdsb2JlIGxhbmd1YWdlLWdsb2JlXCI+PC9pPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAge3tsYW5ndWFnZVNldHRpbmdzLmJ1dHRvblRleHQgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxtYXQtbWVudSAjaGVhZGVyTGFuZ3VhZ2VNZW51PVwibWF0TWVudVwiIGNsYXNzPVwic29mLWFyLW1hdC1tZW51XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IGxhbmcgb2YgbGFuZ3VhZ2VTZXR0aW5ncy5sYW5ndWFnZXNcIiAoY2xpY2spPVwic2V0TGFuZ3VhZ2UkLmVtaXQobGFuZylcIlxyXG4gICAgICAgICAgICBpZD1cImFwcGx5LWxhbmctYnRuLXt7bGFuZ319XCI+XHJcbiAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCJhdXRvXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBsYW5nIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCJhdXRvXCIgZnhMYXlvdXRBbGlnbj1cImVuZCBlbmRcIj5cclxuICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY3VycmVudExhbmcgPT09IGxhbmdcIiBjbGFzcz1cImZhZCBmYS1jaGVjayBzZWxlY3RlZC1sYW5ndWFnZS1pY29uXCI+PC9pPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nSWY9XCJsYW5ndWFnZVNldHRpbmdzPy5kaXNwbGF5TGFuZ3VhZ2VPcHRpb25zICYmIGxhbmd1YWdlU2V0dGluZ3M/Lmxhbmd1YWdlcy5sZW5ndGggPT09IDIgJiYgbW9iaWxlUXVlcnkubWF0Y2hlc1wiPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJsYW5ndWFnZVNldHRpbmdzPy5sYW5ndWFnZXMubGVuZ3RoID09PSAyXCIgaWQ9XCJzb2YtYXItbmF2LWxhbmctYnV0dG9uXCIgbWF0LXN0cm9rZWQtYnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cImZhZGVkLWJ1dHRvbi01MCBsYW5ndWFnZS1idXR0b24gbmF2aWdhdGlvbkZvb3RlclwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxhbmd1YWdlU2V0dGluZ3MuYnV0dG9uVGV4dCB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJzZXRMYW5ndWFnZSQuZW1pdCgpXCI+XHJcbiAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cImljb24tc3R5bGluZ1wiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1nbG9iZSBsYW5ndWFnZS1nbG9iZVwiPjwvaT5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIHt7b3RoZXJMYW5nVGV4dCB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8IS0tIFRoZSBsb2dvdXQgYnV0dG9uLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2JpbGVRdWVyeS5tYXRjaGVzICYmIHVzZXJOYW1lXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBpZD1cInNvZi1hci1oZWFkZXItbGFuZy1idXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJuYXZpZ2F0aW9uRm9vdGVyXCIgKGNsaWNrKT1cImxvZ091dCgpXCI+XHJcbiAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cImljb24tc3R5bGluZ1wiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1zaWduLW91dC1hbHRcIj48L2k+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICB7e2xvZ091dFRleHQgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvZGl2PiJdfQ==
|