@eui/ecl 18.2.8 → 18.2.9-snapshot-1740138913059
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/docs/components/EclSiteHeaderComponent.html +21 -1
- package/docs/dependencies.html +2 -2
- package/docs/js/search/search_index.js +2 -2
- package/esm2022/lib/components/ecl-site-header/ecl-site-header.component.mjs +12 -3
- package/fesm2022/eui-ecl.mjs +11 -2
- package/fesm2022/eui-ecl.mjs.map +1 -1
- package/lib/components/ecl-site-header/ecl-site-header.component.d.ts +2 -0
- package/lib/components/ecl-site-header/ecl-site-header.component.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -53,6 +53,7 @@ export class EclSiteHeaderComponent extends ECLBaseDirective {
|
|
|
53
53
|
this.isMobileBreakpoint = false;
|
|
54
54
|
this.isRtl = false;
|
|
55
55
|
this.TIMEOUT_INTERVAL = 100;
|
|
56
|
+
this.AVAILABLE_NON_EU_LOGO_COUNTRY_CODES = ['ar', 'ca', 'is', 'jp', 'lb', 'no', 'ru', 'sw', 'tr', 'uk', 'zh'];
|
|
56
57
|
this.destroy$ = new Subject();
|
|
57
58
|
afterNextRender(() => {
|
|
58
59
|
this.observeBreakpointChanges();
|
|
@@ -101,6 +102,14 @@ export class EclSiteHeaderComponent extends ECLBaseDirective {
|
|
|
101
102
|
this.destroy$.next(true);
|
|
102
103
|
this.destroy$.unsubscribe();
|
|
103
104
|
}
|
|
105
|
+
get partOfLogoName() {
|
|
106
|
+
if (this.AVAILABLE_NON_EU_LOGO_COUNTRY_CODES.includes(this.languageCode)) {
|
|
107
|
+
return this.languageCode;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
return this.eclLanguageService.getEULanguageOrFallback(this.languageCode).code;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
104
113
|
onECLogoClick(evt) {
|
|
105
114
|
const event = new EclSiteHeaderLogoClickEvent();
|
|
106
115
|
this.logoClick.next(event);
|
|
@@ -190,11 +199,11 @@ export class EclSiteHeaderComponent extends ECLBaseDirective {
|
|
|
190
199
|
this.eclMenuComponent.positionMenuOverlay(bottomSpaceY);
|
|
191
200
|
}
|
|
192
201
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EclSiteHeaderComponent, deps: [{ token: i1.EclSiteHeaderAreaDataService }, { token: i2.EclLanguageService }, { token: i3.BreakpointObserver }, { token: i4.TranslateService }, { token: i0.ElementRef }, { token: i5.EclThemeService }, { token: i6.EclMegaMenuDataService }, { token: i5.EclRtlService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
193
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: EclSiteHeaderComponent, selector: "ecl-site-header", inputs: { siteName: "siteName", languageCode: "languageCode", logoUrl: "logoUrl", logoSize: "logoSize" }, outputs: { logoClick: "logoClick", languageClick: "languageClick" }, host: { properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "eclLoginComponent", first: true, predicate: EclSiteHeaderLoginComponent, descendants: true }, { propertyName: "eclMenuComponent", first: true, predicate: EclMenuComponent, descendants: true }, { propertyName: "eclMegaMenuComponent", first: true, predicate: EclMegaMenuComponent, descendants: true }, { propertyName: "eclSearchComponent", first: true, predicate: EclSiteHeaderSearchComponent, descendants: true }, { propertyName: "eclLanguageComponent", first: true, predicate: EclSiteHeaderLanguageComponent, descendants: true }, { propertyName: "eclNotificationComponent", first: true, predicate: EclSiteHeaderNotificationComponent, descendants: true }, { propertyName: "eclHeaderLink", first: true, predicate: i0.forwardRef(() => EclSiteHeaderLinkDirective), descendants: true }, { propertyName: "eclHeaderImage", first: true, predicate: i0.forwardRef(() => EclSiteHeaderImageDirective), descendants: true }], viewQueries: [{ propertyName: "topContainerElement", first: true, predicate: ["topContainer"], descendants: true }, { propertyName: "siteHeaderHeader", first: true, predicate: ["siteHeaderHeader"], descendants: true }, { propertyName: "bannerHeader", first: true, predicate: ["bannerHeader"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ecl-site-header__background\">\n <div class=\"ecl-site-header__header\" #siteHeaderHeader>\n <div class=\"ecl-site-header__container ecl-container\">\n <div #topContainer class=\"ecl-site-header__top\">\n @if(hasCustomLink()) {\n <ng-content select=\"[eclSiteHeaderLink]\"></ng-content>\n } @else {\n <a eclLink variant=\"standalone\" class=\"ecl-site-header__logo-link\"\n href=\"https://ec.europa.eu/info/index_{{ getEULanguageCode() }}\" (click)=\"onECLogoClick($event)\"\n [attr.aria-label]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\">\n <ng-content select=\"[eclSiteHeaderEnvironment]\"></ng-content>\n\n @if (eclThemeService.isEC$ | async) {\n <picture eclSiteHeaderPicture\n [attr.title]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\">\n <source\n srcset=\"./assets/images/ecl/ec/logo/positive/logo-ec--{{
|
|
202
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: EclSiteHeaderComponent, selector: "ecl-site-header", inputs: { siteName: "siteName", languageCode: "languageCode", logoUrl: "logoUrl", logoSize: "logoSize" }, outputs: { logoClick: "logoClick", languageClick: "languageClick" }, host: { properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "eclLoginComponent", first: true, predicate: EclSiteHeaderLoginComponent, descendants: true }, { propertyName: "eclMenuComponent", first: true, predicate: EclMenuComponent, descendants: true }, { propertyName: "eclMegaMenuComponent", first: true, predicate: EclMegaMenuComponent, descendants: true }, { propertyName: "eclSearchComponent", first: true, predicate: EclSiteHeaderSearchComponent, descendants: true }, { propertyName: "eclLanguageComponent", first: true, predicate: EclSiteHeaderLanguageComponent, descendants: true }, { propertyName: "eclNotificationComponent", first: true, predicate: EclSiteHeaderNotificationComponent, descendants: true }, { propertyName: "eclHeaderLink", first: true, predicate: i0.forwardRef(() => EclSiteHeaderLinkDirective), descendants: true }, { propertyName: "eclHeaderImage", first: true, predicate: i0.forwardRef(() => EclSiteHeaderImageDirective), descendants: true }], viewQueries: [{ propertyName: "topContainerElement", first: true, predicate: ["topContainer"], descendants: true }, { propertyName: "siteHeaderHeader", first: true, predicate: ["siteHeaderHeader"], descendants: true }, { propertyName: "bannerHeader", first: true, predicate: ["bannerHeader"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ecl-site-header__background\">\n <div class=\"ecl-site-header__header\" #siteHeaderHeader>\n <div class=\"ecl-site-header__container ecl-container\">\n <div #topContainer class=\"ecl-site-header__top\">\n @if(hasCustomLink()) {\n <ng-content select=\"[eclSiteHeaderLink]\"></ng-content>\n } @else {\n <a eclLink variant=\"standalone\" class=\"ecl-site-header__logo-link\"\n href=\"https://ec.europa.eu/info/index_{{ getEULanguageCode() }}\" (click)=\"onECLogoClick($event)\"\n [attr.aria-label]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\">\n <ng-content select=\"[eclSiteHeaderEnvironment]\"></ng-content>\n\n @if (eclThemeService.isEC$ | async) {\n <picture eclSiteHeaderPicture\n [attr.title]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\">\n <source\n srcset=\"./assets/images/ecl/ec/logo/positive/logo-ec--{{ partOfLogoName }}.svg\"\n media=\"(min-width: 996px)\" />\n <img class=\"ecl-site-header__logo-image ecl-site-header__logo-image--{{logoSize}}\"\n src=\"./assets/images/ecl/ec/logo/logo-ec--mute.svg\"\n [attr.alt]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\" />\n </picture>\n }\n @if (eclThemeService.isEU$ | async) {\n <picture eclSiteHeaderPicture\n [attr.title]=\"'ecl.footer.EUROPEAN-UNION' | translate\">\n <source\n srcset=\"./assets/images/ecl/eu/logo/standard-version/positive/logo-eu--{{ partOfLogoName }}.svg\"\n media=\"(min-width: 996px)\" />\n <img class=\"ecl-site-header__logo-image ecl-site-header__logo-image--{{logoSize}}\"\n src=\"./assets/images/ecl/eu/logo/condensed-version/positive/logo-eu--{{ partOfLogoName }}.svg\"\n [attr.alt]=\"'ecl.footer.EUROPEAN-UNION' | translate\" />\n </picture>\n }\n </a>\n }\n <ng-content select=\"ecl-site-header-action\"></ng-content>\n </div>\n </div>\n </div>\n <ng-content select=\"ecl-site-header-notification\"></ng-content>\n</div>\n\n\n<ng-content select=\"ecl-site-header-banner-top\"></ng-content>\n@if (siteName) {\n <div class=\"ecl-site-header__banner\" #bannerHeader>\n <div class=\"ecl-container\">\n <div class=\"ecl-site-header__site-name\">{{ siteName }}</div>\n <ng-content select=\"[eclSiteHeaderCta]\"></ng-content>\n </div>\n </div>\n}\n\n<ng-content select=\"ecl-menu\"></ng-content>\n<ng-content select=\"[eclMegaMenu]\"></ng-content>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i7.EclLinkDirective, selector: "[eclLink]", inputs: ["isInverted", "isIconOnly", "isNoVisited", "variant"] }, { kind: "directive", type: i8.EclSiteHeaderPictureDirective, selector: "[eclSiteHeaderPicture]" }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
194
203
|
}
|
|
195
204
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EclSiteHeaderComponent, decorators: [{
|
|
196
205
|
type: Component,
|
|
197
|
-
args: [{ selector: 'ecl-site-header', template: "<div class=\"ecl-site-header__background\">\n <div class=\"ecl-site-header__header\" #siteHeaderHeader>\n <div class=\"ecl-site-header__container ecl-container\">\n <div #topContainer class=\"ecl-site-header__top\">\n @if(hasCustomLink()) {\n <ng-content select=\"[eclSiteHeaderLink]\"></ng-content>\n } @else {\n <a eclLink variant=\"standalone\" class=\"ecl-site-header__logo-link\"\n href=\"https://ec.europa.eu/info/index_{{ getEULanguageCode() }}\" (click)=\"onECLogoClick($event)\"\n [attr.aria-label]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\">\n <ng-content select=\"[eclSiteHeaderEnvironment]\"></ng-content>\n\n @if (eclThemeService.isEC$ | async) {\n <picture eclSiteHeaderPicture\n [attr.title]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\">\n <source\n srcset=\"./assets/images/ecl/ec/logo/positive/logo-ec--{{
|
|
206
|
+
args: [{ selector: 'ecl-site-header', template: "<div class=\"ecl-site-header__background\">\n <div class=\"ecl-site-header__header\" #siteHeaderHeader>\n <div class=\"ecl-site-header__container ecl-container\">\n <div #topContainer class=\"ecl-site-header__top\">\n @if(hasCustomLink()) {\n <ng-content select=\"[eclSiteHeaderLink]\"></ng-content>\n } @else {\n <a eclLink variant=\"standalone\" class=\"ecl-site-header__logo-link\"\n href=\"https://ec.europa.eu/info/index_{{ getEULanguageCode() }}\" (click)=\"onECLogoClick($event)\"\n [attr.aria-label]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\">\n <ng-content select=\"[eclSiteHeaderEnvironment]\"></ng-content>\n\n @if (eclThemeService.isEC$ | async) {\n <picture eclSiteHeaderPicture\n [attr.title]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\">\n <source\n srcset=\"./assets/images/ecl/ec/logo/positive/logo-ec--{{ partOfLogoName }}.svg\"\n media=\"(min-width: 996px)\" />\n <img class=\"ecl-site-header__logo-image ecl-site-header__logo-image--{{logoSize}}\"\n src=\"./assets/images/ecl/ec/logo/logo-ec--mute.svg\"\n [attr.alt]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\" />\n </picture>\n }\n @if (eclThemeService.isEU$ | async) {\n <picture eclSiteHeaderPicture\n [attr.title]=\"'ecl.footer.EUROPEAN-UNION' | translate\">\n <source\n srcset=\"./assets/images/ecl/eu/logo/standard-version/positive/logo-eu--{{ partOfLogoName }}.svg\"\n media=\"(min-width: 996px)\" />\n <img class=\"ecl-site-header__logo-image ecl-site-header__logo-image--{{logoSize}}\"\n src=\"./assets/images/ecl/eu/logo/condensed-version/positive/logo-eu--{{ partOfLogoName }}.svg\"\n [attr.alt]=\"'ecl.footer.EUROPEAN-UNION' | translate\" />\n </picture>\n }\n </a>\n }\n <ng-content select=\"ecl-site-header-action\"></ng-content>\n </div>\n </div>\n </div>\n <ng-content select=\"ecl-site-header-notification\"></ng-content>\n</div>\n\n\n<ng-content select=\"ecl-site-header-banner-top\"></ng-content>\n@if (siteName) {\n <div class=\"ecl-site-header__banner\" #bannerHeader>\n <div class=\"ecl-container\">\n <div class=\"ecl-site-header__site-name\">{{ siteName }}</div>\n <ng-content select=\"[eclSiteHeaderCta]\"></ng-content>\n </div>\n </div>\n}\n\n<ng-content select=\"ecl-menu\"></ng-content>\n<ng-content select=\"[eclMegaMenu]\"></ng-content>\n", styles: [":host{display:block}\n"] }]
|
|
198
207
|
}], ctorParameters: () => [{ type: i1.EclSiteHeaderAreaDataService }, { type: i2.EclLanguageService }, { type: i3.BreakpointObserver }, { type: i4.TranslateService }, { type: i0.ElementRef }, { type: i5.EclThemeService }, { type: i6.EclMegaMenuDataService }, { type: i5.EclRtlService }], propDecorators: { siteName: [{
|
|
199
208
|
type: Input
|
|
200
209
|
}], languageCode: [{
|
|
@@ -244,4 +253,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
244
253
|
type: ContentChild,
|
|
245
254
|
args: [forwardRef(() => EclSiteHeaderImageDirective), { descendants: true }]
|
|
246
255
|
}] } });
|
|
247
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLXNpdGUtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtc2l0ZS1oZWFkZXIvZWNsLXNpdGUtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtc2l0ZS1oZWFkZXIvZWNsLXNpdGUtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFFLFlBQVksRUFBYyxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsU0FBUyxFQUM3SCxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3BELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUcxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNoSSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0SCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUUxRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUVoRixPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxn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dCwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgVmlld0NoaWxkLFxuXHRhZnRlck5leHRSZW5kZXIsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFY2xCYXNlRXZlbnQgfSBmcm9tICcuLi8uLi9tb2RlbC9lY2wtYmFzZS5ldmVudCc7XG5pbXBvcnQgeyBFY2xSdGxTZXJ2aWNlLCBFY2xUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBFY2xMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lY2wtbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBFQ0xCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZWNsLWJhc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IEVjbFNpdGVIZWFkZXJMYW5ndWFnZUNsaWNrRXZlbnQsIEVjbFNpdGVIZWFkZXJMYW5ndWFnZUNvbXBvbmVudCB9IGZyb20gJy4vbGFuZ3VhZ2UvZWNsLXNpdGUtaGVhZGVyLWxhbmd1YWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFY2xTaXRlSGVhZGVyTG9naW5Db21wb25lbnQgfSBmcm9tICcuL2xvZ2luL2VjbC1zaXRlLWhlYWRlci1sb2dpbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWNsU2l0ZUhlYWRlclNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4vc2VhcmNoL2VjbC1zaXRlLWhlYWRlci1zZWFyY2guY29tcG9uZW50JztcbmltcG9ydCB7IEVjbFNpdGVIZWFkZXJJbWFnZURpcmVjdGl2ZSwgRWNsU2l0ZUhlYWRlckxpbmtEaXJlY3RpdmUgfSBmcm9tICcuL3BpY3R1cmUvZWNsLXNpdGUtaGVhZGVyLXBpY3R1cmUuZGlyZWN0aXZlJztcbmltcG9ydCB7IEVjbE1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9lY2wtbWVudS9lY2wtbWVudS9lY2wtbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWNsU2l0ZUhlYWRlckFyZWFDaGFuZ2VFdmVudCB9IGZyb20gJy4vY29tbW9uL2VjbC1zaXRlLWhlYWRlci1hcmVhLWNoYW5nZS1ldmVudCc7XG5pbXBvcnQgeyBFY2xTaXRlSGVhZGVyQXJlYURhdGFTZXJ2aWNlIH0gZnJvbSAnLi9jb21tb24vZWNsLXNpdGUtaGVhZGVyLWFyZWEtZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IEVjbE1lZ2FNZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vZWNsLW1lZ2EtbWVudS9lY2wtbWVnYS1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFY2xNZWdhTWVudURhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vZWNsLW1lZ2EtbWVudS9jb21tb24vZWNsLW1lZ2EtbWVudS1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgRWNsU2l0ZUhlYWRlck5vdGlmaWNhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vbm90aWZpY2F0aW9uJztcblxuZXhwb3J0IGNsYXNzIEVjbFNpdGVIZWFkZXJMb2dvQ2xpY2tFdmVudCBleHRlbmRzIEVjbEJhc2VFdmVudCB7fVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VjbC1zaXRlLWhlYWRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VjbC1zaXRlLWhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVzOiBbXG4gICAgICAgIGBcbiAgICAgICAgICAgIDpob3N0IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgYCxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFY2xTaXRlSGVhZGVyQ29tcG9uZW50IGV4dGVuZHMgRUNMQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgc2l0ZU5hbWU6IHN0cmluZztcbiAgICBASW5wdXQoKSBsYW5ndWFnZUNvZGUgPSAnZW4nO1xuICAgIEBJbnB1dCgpIGxvZ29Vcmw6IHN0cmluZztcbiAgICBASW5wdXQoKSBsb2dvU2l6ZTogJ3MnIHwgJ20nIHwgJ2wnID0gJ20nO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHN1cGVyLmdldENzc0NsYXNzZXMoJ2VjbC1zaXRlLWhlYWRlcicpLFxuICAgICAgICAgICAgYGVjbC1zaXRlLWhlYWRlci13aXRoLWxvZ28tJHt0aGlzLmxvZ29TaXplfWAsXG4gICAgICAgICAgICB0aGlzLmVjbE1lbnVDb21wb25lbnQgPyAnZWNsLXNpdGUtaGVhZGVyLS1oYXMtbWVudScgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuZWNsTWVnYU1lbnVDb21wb25lbnQgPyAnZWNsLXNpdGUtaGVhZGVyLS1oYXMtbWVnYS1tZW51JyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5pc0VjbE1lZ2FNZW51T3BlbiA/ICdlY2wtc2l0ZS1oZWFkZXItLW9wZW4tbWVudScgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuaXNFY2xNZWdhTWVudVN0YXJ0ID8gJ2VjbC1zaXRlLWhlYWRlci0tb3Blbi1tZW51LXN0YXJ0JyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5pc1J0bCA/ICdlY2wtc2l0ZS1oZWFkZXItLXJ0bCcgOiAnJyxcbiAgICAgICAgXS5qb2luKCcgJykudHJpbSgpO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKSBsb2dvQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEVjbFNpdGVIZWFkZXJMb2dvQ2xpY2tFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgbGFuZ3VhZ2VDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RWNsU2l0ZUhlYWRlckxhbmd1YWdlQ2xpY2tFdmVudD4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ3RvcENvbnRhaW5lcicpIHRvcENvbnRhaW5lckVsZW1lbnQ6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgnc2l0ZUhlYWRlckhlYWRlcicpIHNpdGVIZWFkZXJIZWFkZXI6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgnYmFubmVySGVhZGVyJykgYmFubmVySGVhZGVyOiBFbGVtZW50UmVmO1xuICAgIEBDb250ZW50Q2hpbGQoRWNsU2l0ZUhlYWRlckxvZ2luQ29tcG9uZW50KSBlY2xMb2dpbkNvbXBvbmVudDogRWNsU2l0ZUhlYWRlckxvZ2luQ29tcG9uZW50O1xuICAgIEBDb250ZW50Q2hpbGQoRWNsTWVudUNvbXBvbmVudCkgZWNsTWVudUNvbXBvbmVudDogRWNsTWVudUNvbXBvbmVudDtcbiAgICBAQ29udGVudENoaWxkKEVjbE1lZ2FNZW51Q29tcG9uZW50KSBlY2xNZWdhTWVudUNvbXBvbmVudDogRWNsTWVnYU1lbnVDb21wb25lbnQ7XG4gICAgQENvbnRlbnRDaGlsZChFY2xTaXRlSGVhZGVyU2VhcmNoQ29tcG9uZW50KSBlY2xTZWFyY2hDb21wb25lbnQ6IEVjbFNpdGVIZWFkZXJTZWFyY2hDb21wb25lbnQ7XG4gICAgQENvbnRlbnRDaGlsZChFY2xTaXRlSGVhZGVyTGFuZ3VhZ2VDb21wb25lbnQpIGVjbExhbmd1YWdlQ29tcG9uZW50OiBFY2xTaXRlSGVhZGVyTGFuZ3VhZ2VDb21wb25lbnQ7XG4gICAgQENvbnRlbnRDaGlsZChFY2xTaXRlSGVhZGVyTm90aWZpY2F0aW9uQ29tcG9uZW50KSBlY2xOb3RpZmljYXRpb25Db21wb25lbnQ6IEVjbFNpdGVIZWFkZXJOb3RpZmljYXRpb25Db21wb25lbnQ7XG4gICAgQENvbnRlbnRDaGlsZChmb3J3YXJkUmVmKCgpID0+IEVjbFNpdGVIZWFkZXJMaW5rRGlyZWN0aXZlKSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBlY2xIZWFkZXJMaW5rOiBFY2xTaXRlSGVhZGVyTGlua0RpcmVjdGl2ZTtcbiAgICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gRWNsU2l0ZUhlYWRlckltYWdlRGlyZWN0aXZlKSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBlY2xIZWFkZXJJbWFnZTogRWNsU2l0ZUhlYWRlckltYWdlRGlyZWN0aXZlO1xuXG4gICAgcHJpdmF0ZSBpc0VjbE1lZ2FNZW51T3BlbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgaXNFY2xNZWdhTWVudVN0YXJ0ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBpc01vYmlsZUJyZWFrcG9pbnQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGlzUnRsID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZWFkb25seSBUSU1FT1VUX0lOVEVSVkFMID0gMTAwO1xuICAgIHByb3RlY3RlZCBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlY2xTaXRlSGVhZGVyQXJlYURhdGFTZXJ2aWNlOiBFY2xTaXRlSGVhZGVyQXJlYURhdGFTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgZWNsTGFuZ3VhZ2VTZXJ2aWNlOiBFY2xMYW5ndWFnZVNlcnZpY2UsIHByaXZhdGUgY2RrQnJlYWtwb2ludE9ic2VydmVyOiBCcmVha3BvaW50T2JzZXJ2ZXIsXG4gICAgICAgIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLCBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgICAgICBwdWJsaWMgZWNsVGhlbWVTZXJ2aWNlOiBFY2xUaGVtZVNlcnZpY2UsIHByaXZhdGUgZWNsTWVnYU1lbnVEYXRhU2VydmljZTogRWNsTWVnYU1lbnVEYXRhU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBlY2xSdGxTZXJ2aWNlOiBFY2xSdGxTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9ic2VydmVCcmVha3BvaW50Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVUb01lZ2FNZW51RXZlbnRzKCk7XG4gICAgICAgICAgICBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbmRSZXNpemVFdmVudFRvQ2hpbGRDb21wb25lbnRzKCk7XG4gICAgICAgICAgICAgICAgfSwgdGhpcy5USU1FT1VUX0lOVEVSVkFMKVxuICAgICAgICAgICAgfSkub2JzZXJ2ZSh0aGlzLnRvcENvbnRhaW5lckVsZW1lbnQubmF0aXZlRWxlbWVudClcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhbmRsZVJ0bENoYW5nZVN0YXRlKCk7XG4gICAgICAgIGlmICh0aGlzLmVjbEhlYWRlckltYWdlKSB7XG4gICAgICAgICAgICB0aGlzLmVjbEhlYWRlckltYWdlLmxvZ29TaXplID0gdGhpcy5sb2dvU2l6ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmVjbExvZ2luQ29tcG9uZW50ICYmIHRoaXMuZWNsU2VhcmNoQ29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLmVjbExvZ2luQ29tcG9uZW50LmxvZ2luQm94VG9nZ2xlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZWNsU2VhcmNoQ29tcG9uZW50LmlzU2VhcmNoQm94QWN0aXZlID0gZmFsc2U7XG5cdCAgICAgICAgICAgICAgdGhpcy5zZW5kUmVzaXplRXZlbnRUb0NoaWxkQ29tcG9uZW50cygpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuZWNsU2VhcmNoQ29tcG9uZW50LnNlYXJjaFRvZ2dsZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChldnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVjbExvZ2luQ29tcG9uZW50LmlzTG9naW5Cb3hBY3RpdmUgPSBmYWxzZTtcblx0ICAgICAgICAgICAgICB0aGlzLnNlbmRSZXNpemVFdmVudFRvQ2hpbGRDb21wb25lbnRzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmVjbExhbmd1YWdlQ29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLmVjbExhbmd1YWdlQ29tcG9uZW50Lmxhbmd1YWdlQ2xpY2sucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYW5ndWFnZUNsaWNrLm5leHQobmV3IEVjbFNpdGVIZWFkZXJMYW5ndWFnZUNsaWNrRXZlbnQoKSk7XG5cdCAgICAgICAgICAgICAgdGhpcy5zZW5kUmVzaXplRXZlbnRUb0NoaWxkQ29tcG9uZW50cygpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuZWNsTGFuZ3VhZ2VDb21wb25lbnQubGFuZ3VhZ2VTZWxlY3RlZC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChldnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxhbmd1YWdlQ29kZSA9IGV2dC5sYW5ndWFnZT8uY29kZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZWNsTGFuZ3VhZ2VDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2VDb2RlID0gdGhpcy5lY2xMYW5ndWFnZUNvbXBvbmVudD8ubGFuZ3VhZ2VDb2RlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZWNsTWVudUNvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy5lY2xNZW51Q29tcG9uZW50Lm9wZW5IYW1idXJnZXJNZW51LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb25NZW51KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBvbkVDTG9nb0NsaWNrKGV2dDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBldmVudCA9IG5ldyBFY2xTaXRlSGVhZGVyTG9nb0NsaWNrRXZlbnQoKTtcbiAgICAgICAgdGhpcy5sb2dvQ2xpY2submV4dChldmVudCk7XG4gICAgICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhc0N1c3RvbUxpbmsoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuZWNsSGVhZGVyTGluaztcbiAgICB9XG5cbiAgICBnZXRFVUxhbmd1YWdlQ29kZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5lY2xMYW5ndWFnZVNlcnZpY2UuZ2V0RVVMYW5ndWFnZU9yRmFsbGJhY2sodGhpcy5sYW5ndWFnZUNvZGUpLmNvZGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVSdGxDaGFuZ2VTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lY2xSdGxTZXJ2aWNlLmN1cnJlbnRSdGxTdGF0ZSQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocnRsU3RhdGUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNSdGwgPSBydGxTdGF0ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZW5kUmVzaXplRXZlbnRUb0NoaWxkQ29tcG9uZW50cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudG9wQ29udGFpbmVyRWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHRvcENvbnRhaW5lclJlY3QgPSB0aGlzLnRvcENvbnRhaW5lckVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGNvbnN0IHNpdGVIZWFkZXJBcmVhQ2hhbmdlRXZlbnQgPSBuZXcgRWNsU2l0ZUhlYWRlckFyZWFDaGFuZ2VFdmVudChcbiAgICAgICAgICAgICAgICB0b3BDb250YWluZXJSZWN0LndpZHRoLFxuICAgICAgICAgICAgICAgIHRvcENvbnRhaW5lclJlY3QubGVmdCxcbiAgICAgICAgICAgICAgICB0b3BDb250YWluZXJSZWN0LnJpZ2h0KTtcblxuICAgICAgICAgICAgdGhpcy5lY2xTaXRlSGVhZGVyQXJlYURhdGFTZXJ2aWNlLnB1Ymxpc2hFdmVudChzaXRlSGVhZGVyQXJlYUNoYW5nZUV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3Vic2NyaWJlVG9NZWdhTWVudUV2ZW50cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lY2xTaXRlSGVhZGVyQXJlYURhdGFTZXJ2aWNlLmlzTWVnYU1lbnVNb2JpbGVPcGVuJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKGlzRXhwYW5kZWQgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGVCcmVha3BvaW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0VjbE1lZ2FNZW51U3RhcnQgPSBpc0V4cGFuZGVkO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNFY2xNZWdhTWVudU9wZW4gPSBpc0V4cGFuZGVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzRXhwYW5kZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBib3R0b21TcGFjZVkgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tO1xuICAgICAgICAgICAgICAgIHRoaXMuZWNsTWVnYU1lbnVDb21wb25lbnQucG9zaXRpb25NZW51T3ZlcmxheShib3R0b21TcGFjZVkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmVjbFNpdGVIZWFkZXJBcmVhRGF0YVNlcnZpY2UuaXNNZWdhTWVudUl0ZW1FeHBhbmRlZCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZShpc0V4cGFuZGVkID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCkge1xuICAgICAgICAgICAgICAgIGlmIChpc0V4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25NZWdhTWVudUl0ZW1FeHBhbmRNb2JpbGUoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTWVnYU1lbnVJdGVtQ29sbGFwc2VNb2JpbGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNFY2xNZWdhTWVudU9wZW4gPSBpc0V4cGFuZGVkO1xuICAgICAgICAgICAgICAgIGlmIChpc0V4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvdHRvbVNwYWNlWSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b207XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWNsTWVnYU1lbnVDb21wb25lbnQucG9zaXRpb25NZW51T3ZlcmxheShib3R0b21TcGFjZVkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25NZWdhTWVudUl0ZW1FeHBhbmRNb2JpbGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNFY2xNZWdhTWVudVN0YXJ0ID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLmVjbE5vdGlmaWNhdGlvbkNvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy5lY2xOb3RpZmljYXRpb25Db21wb25lbnQub25IaWRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYmFubmVySGVhZGVyKSB7XG4gICAgICAgICAgICB0aGlzLmJhbm5lckhlYWRlci5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYm90dG9tU3BhY2VZID0gdGhpcy5zaXRlSGVhZGVySGVhZGVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tO1xuICAgICAgICB0aGlzLmVjbE1lZ2FNZW51Q29tcG9uZW50LnBvc2l0aW9uTWVudU92ZXJsYXkoYm90dG9tU3BhY2VZKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTWVnYU1lbnVJdGVtQ29sbGFwc2VNb2JpbGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNFY2xNZWdhTWVudVN0YXJ0ID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuZWNsTm90aWZpY2F0aW9uQ29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLmVjbE5vdGlmaWNhdGlvbkNvbXBvbmVudC5vblNob3coKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5iYW5uZXJIZWFkZXIpIHtcbiAgICAgICAgICAgIHRoaXMuYmFubmVySGVhZGVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJvdHRvbVNwYWNlWSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b207XG4gICAgICAgIHRoaXMuZWNsTWVnYU1lbnVDb21wb25lbnQucG9zaXRpb25NZW51T3ZlcmxheShib3R0b21TcGFjZVkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb2JzZXJ2ZUJyZWFrcG9pbnRDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNka0JyZWFrcG9pbnRPYnNlcnZlclxuICAgICAgICAgICAgLm9ic2VydmUoWycobWF4LXdpZHRoOiA5OTZweCknXSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNNb2JpbGVCcmVha3BvaW50ID0gcmVzdWx0Lm1hdGNoZXM7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBvc2l0aW9uTWVudSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYm90dG9tU3BhY2VZID0gdGhpcy5zaXRlSGVhZGVySGVhZGVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tO1xuICAgICAgICB0aGlzLmVjbE1lbnVDb21wb25lbnQucG9zaXRpb25NZW51T3ZlcmxheShib3R0b21TcGFjZVkpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJlY2wtc2l0ZS1oZWFkZXJfX2JhY2tncm91bmRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZWNsLXNpdGUtaGVhZGVyX19oZWFkZXJcIiAjc2l0ZUhlYWRlckhlYWRlcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVjbC1zaXRlLWhlYWRlcl9fY29udGFpbmVyIGVjbC1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgI3RvcENvbnRhaW5lciBjbGFzcz1cImVjbC1zaXRlLWhlYWRlcl9fdG9wXCI+XG4gICAgICAgICAgICAgICAgQGlmKGhhc0N1c3RvbUxpbmsoKSkge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZWNsU2l0ZUhlYWRlckxpbmtdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxhIGVjbExpbmsgdmFyaWFudD1cInN0YW5kYWxvbmVcIiBjbGFzcz1cImVjbC1zaXRlLWhlYWRlcl9fbG9nby1saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgaHJlZj1cImh0dHBzOi8vZWMuZXVyb3BhLmV1L2luZm8vaW5kZXhfe3sgZ2V0RVVMYW5ndWFnZUNvZGUoKSB9fVwiIChjbGljayk9XCJvbkVDTG9nb0NsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidlY2wuZm9vdGVyLkVVUk9QRUFOLUNPTU1JU1NJT04nIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltlY2xTaXRlSGVhZGVyRW52aXJvbm1lbnRdXCI+PC9uZy1jb250ZW50PlxuXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZWNsVGhlbWVTZXJ2aWNlLmlzRUMkIHwgYXN5bmMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwaWN0dXJlIGVjbFNpdGVIZWFkZXJQaWN0dXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCInZWNsLmZvb3Rlci5FVVJPUEVBTi1DT01NSVNTSU9OJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Jjc2V0PVwiLi9hc3NldHMvaW1hZ2VzL2VjbC9lYy9sb2dvL3Bvc2l0aXZlL2xvZ28tZWMtLXt7ICBnZXRFVUxhbmd1YWdlQ29kZSgpIH19LnN2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhPVwiKG1pbi13aWR0aDogOTk2cHgpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiZWNsLXNpdGUtaGVhZGVyX19sb2dvLWltYWdlIGVjbC1zaXRlLWhlYWRlcl9fbG9nby1pbWFnZS0te3tsb2dvU2l6ZX19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cIi4vYXNzZXRzL2ltYWdlcy9lY2wvZWMvbG9nby9sb2dvLWVjLS1tdXRlLnN2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hbHRdPVwiJ2VjbC5mb290ZXIuRVVST1BFQU4tQ09NTUlTU0lPTicgfCB0cmFuc2xhdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9waWN0dXJlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZWNsVGhlbWVTZXJ2aWNlLmlzRVUkIHwgYXN5bmMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwaWN0dXJlIGVjbFNpdGVIZWFkZXJQaWN0dXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCInZWNsLmZvb3Rlci5FVVJPUEVBTi1VTklPTicgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY3NldD1cIi4vYXNzZXRzL2ltYWdlcy9lY2wvZXUvbG9nby9zdGFuZGFyZC12ZXJzaW9uL3Bvc2l0aXZlL2xvZ28tZXUtLXt7IGdldEVVTGFuZ3VhZ2VDb2RlKCkgfX0uc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWE9XCIobWluLXdpZHRoOiA5OTZweClcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJlY2wtc2l0ZS1oZWFkZXJfX2xvZ28taW1hZ2UgZWNsLXNpdGUtaGVhZGVyX19sb2dvLWltYWdlLS17e2xvZ29TaXplfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiLi9hc3NldHMvaW1hZ2VzL2VjbC9ldS9sb2dvL2NvbmRlbnNlZC12ZXJzaW9uL3Bvc2l0aXZlL2xvZ28tZXUtLXt7IGdldEVVTGFuZ3VhZ2VDb2RlKCkgfX0uc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFsdF09XCInZWNsLmZvb3Rlci5FVVJPUEVBTi1VTklPTicgfCB0cmFuc2xhdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9waWN0dXJlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJlY2wtc2l0ZS1oZWFkZXItYWN0aW9uXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImVjbC1zaXRlLWhlYWRlci1ub3RpZmljYXRpb25cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cblxuXG48bmctY29udGVudCBzZWxlY3Q9XCJlY2wtc2l0ZS1oZWFkZXItYmFubmVyLXRvcFwiPjwvbmctY29udGVudD5cbkBpZiAoc2l0ZU5hbWUpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZWNsLXNpdGUtaGVhZGVyX19iYW5uZXJcIiAjYmFubmVySGVhZGVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZWNsLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVjbC1zaXRlLWhlYWRlcl9fc2l0ZS1uYW1lXCI+e3sgc2l0ZU5hbWUgfX08L2Rpdj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltlY2xTaXRlSGVhZGVyQ3RhXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG59XG5cbjxuZy1jb250ZW50IHNlbGVjdD1cImVjbC1tZW51XCI+PC9uZy1jb250ZW50PlxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2VjbE1lZ2FNZW51XVwiPjwvbmctY29udGVudD5cbiJdfQ==
|
|
256
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLXNpdGUtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtc2l0ZS1oZWFkZXIvZWNsLXNpdGUtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtc2l0ZS1oZWFkZXIvZWNsLXNpdGUtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFFLFlBQVksRUFBYyxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsU0FBUyxFQUM3SCxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3BELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUcxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNoSSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0SCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUUxRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUVoRixPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxn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O3NCQUF2RCxZQUFZO3VCQUFDLG9CQUFvQjtnQkFDVSxrQkFBa0I7c0JBQTdELFlBQVk7dUJBQUMsNEJBQTRCO2dCQUNJLG9CQUFvQjtzQkFBakUsWUFBWTt1QkFBQyw4QkFBOEI7Z0JBQ00sd0JBQXdCO3NCQUF6RSxZQUFZO3VCQUFDLGtDQUFrQztnQkFDbUMsYUFBYTtzQkFBL0YsWUFBWTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsMEJBQTBCLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBQ0csY0FBYztzQkFBakcsWUFBWTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsMkJBQTJCLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0LCBWaWV3Q2hpbGQsXG5cdGFmdGVyTmV4dFJlbmRlciwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVjbEJhc2VFdmVudCB9IGZyb20gJy4uLy4uL21vZGVsL2VjbC1iYXNlLmV2ZW50JztcbmltcG9ydCB7IEVjbFJ0bFNlcnZpY2UsIEVjbFRoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IEVjbExhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VjbC1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IEVDTEJhc2VEaXJlY3RpdmUgfSBmcm9tICcuLi9lY2wtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRWNsU2l0ZUhlYWRlckxhbmd1YWdlQ2xpY2tFdmVudCwgRWNsU2l0ZUhlYWRlckxhbmd1YWdlQ29tcG9uZW50IH0gZnJvbSAnLi9sYW5ndWFnZS9lY2wtc2l0ZS1oZWFkZXItbGFuZ3VhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IEVjbFNpdGVIZWFkZXJMb2dpbkNvbXBvbmVudCB9IGZyb20gJy4vbG9naW4vZWNsLXNpdGUtaGVhZGVyLWxvZ2luLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFY2xTaXRlSGVhZGVyU2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnLi9zZWFyY2gvZWNsLXNpdGUtaGVhZGVyLXNlYXJjaC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWNsU2l0ZUhlYWRlckltYWdlRGlyZWN0aXZlLCBFY2xTaXRlSGVhZGVyTGlua0RpcmVjdGl2ZSB9IGZyb20gJy4vcGljdHVyZS9lY2wtc2l0ZS1oZWFkZXItcGljdHVyZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRWNsTWVudUNvbXBvbmVudCB9IGZyb20gJy4uL2VjbC1tZW51L2VjbC1tZW51L2VjbC1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFY2xTaXRlSGVhZGVyQXJlYUNoYW5nZUV2ZW50IH0gZnJvbSAnLi9jb21tb24vZWNsLXNpdGUtaGVhZGVyLWFyZWEtY2hhbmdlLWV2ZW50JztcbmltcG9ydCB7IEVjbFNpdGVIZWFkZXJBcmVhRGF0YVNlcnZpY2UgfSBmcm9tICcuL2NvbW1vbi9lY2wtc2l0ZS1oZWFkZXItYXJlYS1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgRWNsTWVnYU1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9lY2wtbWVnYS1tZW51L2VjbC1tZWdhLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IEVjbE1lZ2FNZW51RGF0YVNlcnZpY2UgfSBmcm9tICcuLi9lY2wtbWVnYS1tZW51L2NvbW1vbi9lY2wtbWVnYS1tZW51LWRhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBFY2xTaXRlSGVhZGVyTm90aWZpY2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9ub3RpZmljYXRpb24nO1xuXG5leHBvcnQgY2xhc3MgRWNsU2l0ZUhlYWRlckxvZ29DbGlja0V2ZW50IGV4dGVuZHMgRWNsQmFzZUV2ZW50IHt9XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZWNsLXNpdGUtaGVhZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWNsLXNpdGUtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZXM6IFtcbiAgICAgICAgYFxuICAgICAgICAgICAgOmhvc3Qge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgfVxuICAgICAgICBgLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEVjbFNpdGVIZWFkZXJDb21wb25lbnQgZXh0ZW5kcyBFQ0xCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBzaXRlTmFtZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGxhbmd1YWdlQ29kZSA9ICdlbic7XG4gICAgQElucHV0KCkgbG9nb1VybDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGxvZ29TaXplOiAncycgfCAnbScgfCAnbCcgPSAnbSc7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBnZXQgY3NzQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgc3VwZXIuZ2V0Q3NzQ2xhc3NlcygnZWNsLXNpdGUtaGVhZGVyJyksXG4gICAgICAgICAgICBgZWNsLXNpdGUtaGVhZGVyLXdpdGgtbG9nby0ke3RoaXMubG9nb1NpemV9YCxcbiAgICAgICAgICAgIHRoaXMuZWNsTWVudUNvbXBvbmVudCA/ICdlY2wtc2l0ZS1oZWFkZXItLWhhcy1tZW51JyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5lY2xNZWdhTWVudUNvbXBvbmVudCA/ICdlY2wtc2l0ZS1oZWFkZXItLWhhcy1tZWdhLW1lbnUnIDogJycsXG4gICAgICAgICAgICB0aGlzLmlzRWNsTWVnYU1lbnVPcGVuID8gJ2VjbC1zaXRlLWhlYWRlci0tb3Blbi1tZW51JyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5pc0VjbE1lZ2FNZW51U3RhcnQgPyAnZWNsLXNpdGUtaGVhZGVyLS1vcGVuLW1lbnUtc3RhcnQnIDogJycsXG4gICAgICAgICAgICB0aGlzLmlzUnRsID8gJ2VjbC1zaXRlLWhlYWRlci0tcnRsJyA6ICcnLFxuICAgICAgICBdLmpvaW4oJyAnKS50cmltKCk7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIGxvZ29DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RWNsU2l0ZUhlYWRlckxvZ29DbGlja0V2ZW50PigpO1xuICAgIEBPdXRwdXQoKSBsYW5ndWFnZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxFY2xTaXRlSGVhZGVyTGFuZ3VhZ2VDbGlja0V2ZW50PigpO1xuXG4gICAgQFZpZXdDaGlsZCgndG9wQ29udGFpbmVyJykgdG9wQ29udGFpbmVyRWxlbWVudDogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdzaXRlSGVhZGVySGVhZGVyJykgc2l0ZUhlYWRlckhlYWRlcjogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdiYW5uZXJIZWFkZXInKSBiYW5uZXJIZWFkZXI6IEVsZW1lbnRSZWY7XG4gICAgQENvbnRlbnRDaGlsZChFY2xTaXRlSGVhZGVyTG9naW5Db21wb25lbnQpIGVjbExvZ2luQ29tcG9uZW50OiBFY2xTaXRlSGVhZGVyTG9naW5Db21wb25lbnQ7XG4gICAgQENvbnRlbnRDaGlsZChFY2xNZW51Q29tcG9uZW50KSBlY2xNZW51Q29tcG9uZW50OiBFY2xNZW51Q29tcG9uZW50O1xuICAgIEBDb250ZW50Q2hpbGQoRWNsTWVnYU1lbnVDb21wb25lbnQpIGVjbE1lZ2FNZW51Q29tcG9uZW50OiBFY2xNZWdhTWVudUNvbXBvbmVudDtcbiAgICBAQ29udGVudENoaWxkKEVjbFNpdGVIZWFkZXJTZWFyY2hDb21wb25lbnQpIGVjbFNlYXJjaENvbXBvbmVudDogRWNsU2l0ZUhlYWRlclNlYXJjaENvbXBvbmVudDtcbiAgICBAQ29udGVudENoaWxkKEVjbFNpdGVIZWFkZXJMYW5ndWFnZUNvbXBvbmVudCkgZWNsTGFuZ3VhZ2VDb21wb25lbnQ6IEVjbFNpdGVIZWFkZXJMYW5ndWFnZUNvbXBvbmVudDtcbiAgICBAQ29udGVudENoaWxkKEVjbFNpdGVIZWFkZXJOb3RpZmljYXRpb25Db21wb25lbnQpIGVjbE5vdGlmaWNhdGlvbkNvbXBvbmVudDogRWNsU2l0ZUhlYWRlck5vdGlmaWNhdGlvbkNvbXBvbmVudDtcbiAgICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gRWNsU2l0ZUhlYWRlckxpbmtEaXJlY3RpdmUpLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIGVjbEhlYWRlckxpbms6IEVjbFNpdGVIZWFkZXJMaW5rRGlyZWN0aXZlO1xuICAgIEBDb250ZW50Q2hpbGQoZm9yd2FyZFJlZigoKSA9PiBFY2xTaXRlSGVhZGVySW1hZ2VEaXJlY3RpdmUpLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIGVjbEhlYWRlckltYWdlOiBFY2xTaXRlSGVhZGVySW1hZ2VEaXJlY3RpdmU7XG5cbiAgICBwcml2YXRlIGlzRWNsTWVnYU1lbnVPcGVuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBpc0VjbE1lZ2FNZW51U3RhcnQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGlzTW9iaWxlQnJlYWtwb2ludCA9IGZhbHNlO1xuICAgIHByaXZhdGUgaXNSdGwgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IFRJTUVPVVRfSU5URVJWQUwgPSAxMDA7XG4gICAgcHJpdmF0ZSByZWFkb25seSBBVkFJTEFCTEVfTk9OX0VVX0xPR09fQ09VTlRSWV9DT0RFUyA9IFsnYXInLCAnY2EnLCAnaXMnLCAnanAnLCAnbGInLCAnbm8nLCAncnUnLCAnc3cnLCAndHInLCAndWsnLCAnemgnXTtcbiAgICBwcm90ZWN0ZWQgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWNsU2l0ZUhlYWRlckFyZWFEYXRhU2VydmljZTogRWNsU2l0ZUhlYWRlckFyZWFEYXRhU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIGVjbExhbmd1YWdlU2VydmljZTogRWNsTGFuZ3VhZ2VTZXJ2aWNlLCBwcml2YXRlIGNka0JyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyLFxuICAgICAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSwgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICAgICAgcHVibGljIGVjbFRoZW1lU2VydmljZTogRWNsVGhlbWVTZXJ2aWNlLCBwcml2YXRlIGVjbE1lZ2FNZW51RGF0YVNlcnZpY2U6IEVjbE1lZ2FNZW51RGF0YVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZWNsUnRsU2VydmljZTogRWNsUnRsU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vYnNlcnZlQnJlYWtwb2ludENoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaWJlVG9NZWdhTWVudUV2ZW50cygpO1xuICAgICAgICAgICAgbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZW5kUmVzaXplRXZlbnRUb0NoaWxkQ29tcG9uZW50cygpO1xuICAgICAgICAgICAgICAgIH0sIHRoaXMuVElNRU9VVF9JTlRFUlZBTClcbiAgICAgICAgICAgIH0pLm9ic2VydmUodGhpcy50b3BDb250YWluZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oYW5kbGVSdGxDaGFuZ2VTdGF0ZSgpO1xuICAgICAgICBpZiAodGhpcy5lY2xIZWFkZXJJbWFnZSkge1xuICAgICAgICAgICAgdGhpcy5lY2xIZWFkZXJJbWFnZS5sb2dvU2l6ZSA9IHRoaXMubG9nb1NpemU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5lY2xMb2dpbkNvbXBvbmVudCAmJiB0aGlzLmVjbFNlYXJjaENvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy5lY2xMb2dpbkNvbXBvbmVudC5sb2dpbkJveFRvZ2dsZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChldnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVjbFNlYXJjaENvbXBvbmVudC5pc1NlYXJjaEJveEFjdGl2ZSA9IGZhbHNlO1xuXHQgICAgICAgICAgICAgIHRoaXMuc2VuZFJlc2l6ZUV2ZW50VG9DaGlsZENvbXBvbmVudHMoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmVjbFNlYXJjaENvbXBvbmVudC5zZWFyY2hUb2dnbGUucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lY2xMb2dpbkNvbXBvbmVudC5pc0xvZ2luQm94QWN0aXZlID0gZmFsc2U7XG5cdCAgICAgICAgICAgICAgdGhpcy5zZW5kUmVzaXplRXZlbnRUb0NoaWxkQ29tcG9uZW50cygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5lY2xMYW5ndWFnZUNvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy5lY2xMYW5ndWFnZUNvbXBvbmVudC5sYW5ndWFnZUNsaWNrLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2VDbGljay5uZXh0KG5ldyBFY2xTaXRlSGVhZGVyTGFuZ3VhZ2VDbGlja0V2ZW50KCkpO1xuXHQgICAgICAgICAgICAgIHRoaXMuc2VuZFJlc2l6ZUV2ZW50VG9DaGlsZENvbXBvbmVudHMoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmVjbExhbmd1YWdlQ29tcG9uZW50Lmxhbmd1YWdlU2VsZWN0ZWQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYW5ndWFnZUNvZGUgPSBldnQubGFuZ3VhZ2U/LmNvZGU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmVjbExhbmd1YWdlQ29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLmxhbmd1YWdlQ29kZSA9IHRoaXMuZWNsTGFuZ3VhZ2VDb21wb25lbnQ/Lmxhbmd1YWdlQ29kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmVjbE1lbnVDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZWNsTWVudUNvbXBvbmVudC5vcGVuSGFtYnVyZ2VyTWVudS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uTWVudSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgZ2V0IHBhcnRPZkxvZ29OYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLkFWQUlMQUJMRV9OT05fRVVfTE9HT19DT1VOVFJZX0NPREVTLmluY2x1ZGVzKHRoaXMubGFuZ3VhZ2VDb2RlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VDb2RlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWNsTGFuZ3VhZ2VTZXJ2aWNlLmdldEVVTGFuZ3VhZ2VPckZhbGxiYWNrKHRoaXMubGFuZ3VhZ2VDb2RlKS5jb2RlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25FQ0xvZ29DbGljayhldnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgRWNsU2l0ZUhlYWRlckxvZ29DbGlja0V2ZW50KCk7XG4gICAgICAgIHRoaXMubG9nb0NsaWNrLm5leHQoZXZlbnQpO1xuICAgICAgICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYXNDdXN0b21MaW5rKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmVjbEhlYWRlckxpbms7XG4gICAgfVxuXG4gICAgZ2V0RVVMYW5ndWFnZUNvZGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWNsTGFuZ3VhZ2VTZXJ2aWNlLmdldEVVTGFuZ3VhZ2VPckZhbGxiYWNrKHRoaXMubGFuZ3VhZ2VDb2RlKS5jb2RlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlUnRsQ2hhbmdlU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWNsUnRsU2VydmljZS5jdXJyZW50UnRsU3RhdGUkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJ0bFN0YXRlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzUnRsID0gcnRsU3RhdGU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2VuZFJlc2l6ZUV2ZW50VG9DaGlsZENvbXBvbmVudHMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRvcENvbnRhaW5lckVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCB0b3BDb250YWluZXJSZWN0ID0gdGhpcy50b3BDb250YWluZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBjb25zdCBzaXRlSGVhZGVyQXJlYUNoYW5nZUV2ZW50ID0gbmV3IEVjbFNpdGVIZWFkZXJBcmVhQ2hhbmdlRXZlbnQoXG4gICAgICAgICAgICAgICAgdG9wQ29udGFpbmVyUmVjdC53aWR0aCxcbiAgICAgICAgICAgICAgICB0b3BDb250YWluZXJSZWN0LmxlZnQsXG4gICAgICAgICAgICAgICAgdG9wQ29udGFpbmVyUmVjdC5yaWdodCk7XG5cbiAgICAgICAgICAgIHRoaXMuZWNsU2l0ZUhlYWRlckFyZWFEYXRhU2VydmljZS5wdWJsaXNoRXZlbnQoc2l0ZUhlYWRlckFyZWFDaGFuZ2VFdmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN1YnNjcmliZVRvTWVnYU1lbnVFdmVudHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWNsU2l0ZUhlYWRlckFyZWFEYXRhU2VydmljZS5pc01lZ2FNZW51TW9iaWxlT3BlbiQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZShpc0V4cGFuZGVkID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNFY2xNZWdhTWVudVN0YXJ0ID0gaXNFeHBhbmRlZDtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRWNsTWVnYU1lbnVPcGVuID0gaXNFeHBhbmRlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0V4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYm90dG9tU3BhY2VZID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbTtcbiAgICAgICAgICAgICAgICB0aGlzLmVjbE1lZ2FNZW51Q29tcG9uZW50LnBvc2l0aW9uTWVudU92ZXJsYXkoYm90dG9tU3BhY2VZKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5lY2xTaXRlSGVhZGVyQXJlYURhdGFTZXJ2aWNlLmlzTWVnYU1lbnVJdGVtRXhwYW5kZWQkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoaXNFeHBhbmRlZCA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc01vYmlsZUJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNFeHBhbmRlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTWVnYU1lbnVJdGVtRXhwYW5kTW9iaWxlKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk1lZ2FNZW51SXRlbUNvbGxhcHNlTW9iaWxlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRWNsTWVnYU1lbnVPcGVuID0gaXNFeHBhbmRlZDtcbiAgICAgICAgICAgICAgICBpZiAoaXNFeHBhbmRlZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBib3R0b21TcGFjZVkgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVjbE1lZ2FNZW51Q29tcG9uZW50LnBvc2l0aW9uTWVudU92ZXJsYXkoYm90dG9tU3BhY2VZKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25NZWdhTWVudUl0ZW1FeHBhbmRNb2JpbGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNFY2xNZWdhTWVudVN0YXJ0ID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLmVjbE5vdGlmaWNhdGlvbkNvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy5lY2xOb3RpZmljYXRpb25Db21wb25lbnQub25IaWRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYmFubmVySGVhZGVyKSB7XG4gICAgICAgICAgICB0aGlzLmJhbm5lckhlYWRlci5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYm90dG9tU3BhY2VZID0gdGhpcy5zaXRlSGVhZGVySGVhZGVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tO1xuICAgICAgICB0aGlzLmVjbE1lZ2FNZW51Q29tcG9uZW50LnBvc2l0aW9uTWVudU92ZXJsYXkoYm90dG9tU3BhY2VZKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTWVnYU1lbnVJdGVtQ29sbGFwc2VNb2JpbGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNFY2xNZWdhTWVudVN0YXJ0ID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuZWNsTm90aWZpY2F0aW9uQ29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLmVjbE5vdGlmaWNhdGlvbkNvbXBvbmVudC5vblNob3coKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5iYW5uZXJIZWFkZXIpIHtcbiAgICAgICAgICAgIHRoaXMuYmFubmVySGVhZGVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJvdHRvbVNwYWNlWSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b207XG4gICAgICAgIHRoaXMuZWNsTWVnYU1lbnVDb21wb25lbnQucG9zaXRpb25NZW51T3ZlcmxheShib3R0b21TcGFjZVkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb2JzZXJ2ZUJyZWFrcG9pbnRDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNka0JyZWFrcG9pbnRPYnNlcnZlclxuICAgICAgICAgICAgLm9ic2VydmUoWycobWF4LXdpZHRoOiA5OTZweCknXSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNNb2JpbGVCcmVha3BvaW50ID0gcmVzdWx0Lm1hdGNoZXM7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBvc2l0aW9uTWVudSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYm90dG9tU3BhY2VZID0gdGhpcy5zaXRlSGVhZGVySGVhZGVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tO1xuICAgICAgICB0aGlzLmVjbE1lbnVDb21wb25lbnQucG9zaXRpb25NZW51T3ZlcmxheShib3R0b21TcGFjZVkpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJlY2wtc2l0ZS1oZWFkZXJfX2JhY2tncm91bmRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZWNsLXNpdGUtaGVhZGVyX19oZWFkZXJcIiAjc2l0ZUhlYWRlckhlYWRlcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVjbC1zaXRlLWhlYWRlcl9fY29udGFpbmVyIGVjbC1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgI3RvcENvbnRhaW5lciBjbGFzcz1cImVjbC1zaXRlLWhlYWRlcl9fdG9wXCI+XG4gICAgICAgICAgICAgICAgQGlmKGhhc0N1c3RvbUxpbmsoKSkge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZWNsU2l0ZUhlYWRlckxpbmtdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxhIGVjbExpbmsgdmFyaWFudD1cInN0YW5kYWxvbmVcIiBjbGFzcz1cImVjbC1zaXRlLWhlYWRlcl9fbG9nby1saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgaHJlZj1cImh0dHBzOi8vZWMuZXVyb3BhLmV1L2luZm8vaW5kZXhfe3sgZ2V0RVVMYW5ndWFnZUNvZGUoKSB9fVwiIChjbGljayk9XCJvbkVDTG9nb0NsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidlY2wuZm9vdGVyLkVVUk9QRUFOLUNPTU1JU1NJT04nIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltlY2xTaXRlSGVhZGVyRW52aXJvbm1lbnRdXCI+PC9uZy1jb250ZW50PlxuXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZWNsVGhlbWVTZXJ2aWNlLmlzRUMkIHwgYXN5bmMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwaWN0dXJlIGVjbFNpdGVIZWFkZXJQaWN0dXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCInZWNsLmZvb3Rlci5FVVJPUEVBTi1DT01NSVNTSU9OJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Jjc2V0PVwiLi9hc3NldHMvaW1hZ2VzL2VjbC9lYy9sb2dvL3Bvc2l0aXZlL2xvZ28tZWMtLXt7ICBwYXJ0T2ZMb2dvTmFtZSB9fS5zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpYT1cIihtaW4td2lkdGg6IDk5NnB4KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImVjbC1zaXRlLWhlYWRlcl9fbG9nby1pbWFnZSBlY2wtc2l0ZS1oZWFkZXJfX2xvZ28taW1hZ2UtLXt7bG9nb1NpemV9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCIuL2Fzc2V0cy9pbWFnZXMvZWNsL2VjL2xvZ28vbG9nby1lYy0tbXV0ZS5zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYWx0XT1cIidlY2wuZm9vdGVyLkVVUk9QRUFOLUNPTU1JU1NJT04nIHwgdHJhbnNsYXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGljdHVyZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKGVjbFRoZW1lU2VydmljZS5pc0VVJCB8IGFzeW5jKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGljdHVyZSBlY2xTaXRlSGVhZGVyUGljdHVyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiJ2VjbC5mb290ZXIuRVVST1BFQU4tVU5JT04nIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNzZXQ9XCIuL2Fzc2V0cy9pbWFnZXMvZWNsL2V1L2xvZ28vc3RhbmRhcmQtdmVyc2lvbi9wb3NpdGl2ZS9sb2dvLWV1LS17eyBwYXJ0T2ZMb2dvTmFtZSB9fS5zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpYT1cIihtaW4td2lkdGg6IDk5NnB4KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImVjbC1zaXRlLWhlYWRlcl9fbG9nby1pbWFnZSBlY2wtc2l0ZS1oZWFkZXJfX2xvZ28taW1hZ2UtLXt7bG9nb1NpemV9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCIuL2Fzc2V0cy9pbWFnZXMvZWNsL2V1L2xvZ28vY29uZGVuc2VkLXZlcnNpb24vcG9zaXRpdmUvbG9nby1ldS0te3sgcGFydE9mTG9nb05hbWUgfX0uc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFsdF09XCInZWNsLmZvb3Rlci5FVVJPUEVBTi1VTklPTicgfCB0cmFuc2xhdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9waWN0dXJlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJlY2wtc2l0ZS1oZWFkZXItYWN0aW9uXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImVjbC1zaXRlLWhlYWRlci1ub3RpZmljYXRpb25cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cblxuXG48bmctY29udGVudCBzZWxlY3Q9XCJlY2wtc2l0ZS1oZWFkZXItYmFubmVyLXRvcFwiPjwvbmctY29udGVudD5cbkBpZiAoc2l0ZU5hbWUpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZWNsLXNpdGUtaGVhZGVyX19iYW5uZXJcIiAjYmFubmVySGVhZGVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZWNsLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVjbC1zaXRlLWhlYWRlcl9fc2l0ZS1uYW1lXCI+e3sgc2l0ZU5hbWUgfX08L2Rpdj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltlY2xTaXRlSGVhZGVyQ3RhXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG59XG5cbjxuZy1jb250ZW50IHNlbGVjdD1cImVjbC1tZW51XCI+PC9uZy1jb250ZW50PlxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2VjbE1lZ2FNZW51XVwiPjwvbmctY29udGVudD5cbiJdfQ==
|
package/fesm2022/eui-ecl.mjs
CHANGED
|
@@ -4968,6 +4968,7 @@ class EclSiteHeaderComponent extends ECLBaseDirective {
|
|
|
4968
4968
|
this.isMobileBreakpoint = false;
|
|
4969
4969
|
this.isRtl = false;
|
|
4970
4970
|
this.TIMEOUT_INTERVAL = 100;
|
|
4971
|
+
this.AVAILABLE_NON_EU_LOGO_COUNTRY_CODES = ['ar', 'ca', 'is', 'jp', 'lb', 'no', 'ru', 'sw', 'tr', 'uk', 'zh'];
|
|
4971
4972
|
this.destroy$ = new Subject();
|
|
4972
4973
|
afterNextRender(() => {
|
|
4973
4974
|
this.observeBreakpointChanges();
|
|
@@ -5016,6 +5017,14 @@ class EclSiteHeaderComponent extends ECLBaseDirective {
|
|
|
5016
5017
|
this.destroy$.next(true);
|
|
5017
5018
|
this.destroy$.unsubscribe();
|
|
5018
5019
|
}
|
|
5020
|
+
get partOfLogoName() {
|
|
5021
|
+
if (this.AVAILABLE_NON_EU_LOGO_COUNTRY_CODES.includes(this.languageCode)) {
|
|
5022
|
+
return this.languageCode;
|
|
5023
|
+
}
|
|
5024
|
+
else {
|
|
5025
|
+
return this.eclLanguageService.getEULanguageOrFallback(this.languageCode).code;
|
|
5026
|
+
}
|
|
5027
|
+
}
|
|
5019
5028
|
onECLogoClick(evt) {
|
|
5020
5029
|
const event = new EclSiteHeaderLogoClickEvent();
|
|
5021
5030
|
this.logoClick.next(event);
|
|
@@ -5105,11 +5114,11 @@ class EclSiteHeaderComponent extends ECLBaseDirective {
|
|
|
5105
5114
|
this.eclMenuComponent.positionMenuOverlay(bottomSpaceY);
|
|
5106
5115
|
}
|
|
5107
5116
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EclSiteHeaderComponent, deps: [{ token: EclSiteHeaderAreaDataService }, { token: EclLanguageService }, { token: i1$4.BreakpointObserver }, { token: i1$2.TranslateService }, { token: i0.ElementRef }, { token: EclThemeService }, { token: EclMegaMenuDataService }, { token: EclRtlService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5108
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: EclSiteHeaderComponent, selector: "ecl-site-header", inputs: { siteName: "siteName", languageCode: "languageCode", logoUrl: "logoUrl", logoSize: "logoSize" }, outputs: { logoClick: "logoClick", languageClick: "languageClick" }, host: { properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "eclLoginComponent", first: true, predicate: EclSiteHeaderLoginComponent, descendants: true }, { propertyName: "eclMenuComponent", first: true, predicate: EclMenuComponent, descendants: true }, { propertyName: "eclMegaMenuComponent", first: true, predicate: EclMegaMenuComponent, descendants: true }, { propertyName: "eclSearchComponent", first: true, predicate: EclSiteHeaderSearchComponent, descendants: true }, { propertyName: "eclLanguageComponent", first: true, predicate: EclSiteHeaderLanguageComponent, descendants: true }, { propertyName: "eclNotificationComponent", first: true, predicate: EclSiteHeaderNotificationComponent, descendants: true }, { propertyName: "eclHeaderLink", first: true, predicate: i0.forwardRef(() => EclSiteHeaderLinkDirective), descendants: true }, { propertyName: "eclHeaderImage", first: true, predicate: i0.forwardRef(() => EclSiteHeaderImageDirective), descendants: true }], viewQueries: [{ propertyName: "topContainerElement", first: true, predicate: ["topContainer"], descendants: true }, { propertyName: "siteHeaderHeader", first: true, predicate: ["siteHeaderHeader"], descendants: true }, { propertyName: "bannerHeader", first: true, predicate: ["bannerHeader"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ecl-site-header__background\">\n <div class=\"ecl-site-header__header\" #siteHeaderHeader>\n <div class=\"ecl-site-header__container ecl-container\">\n <div #topContainer class=\"ecl-site-header__top\">\n @if(hasCustomLink()) {\n <ng-content select=\"[eclSiteHeaderLink]\"></ng-content>\n } @else {\n <a eclLink variant=\"standalone\" class=\"ecl-site-header__logo-link\"\n href=\"https://ec.europa.eu/info/index_{{ getEULanguageCode() }}\" (click)=\"onECLogoClick($event)\"\n [attr.aria-label]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\">\n <ng-content select=\"[eclSiteHeaderEnvironment]\"></ng-content>\n\n @if (eclThemeService.isEC$ | async) {\n <picture eclSiteHeaderPicture\n [attr.title]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\">\n <source\n srcset=\"./assets/images/ecl/ec/logo/positive/logo-ec--{{
|
|
5117
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: EclSiteHeaderComponent, selector: "ecl-site-header", inputs: { siteName: "siteName", languageCode: "languageCode", logoUrl: "logoUrl", logoSize: "logoSize" }, outputs: { logoClick: "logoClick", languageClick: "languageClick" }, host: { properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "eclLoginComponent", first: true, predicate: EclSiteHeaderLoginComponent, descendants: true }, { propertyName: "eclMenuComponent", first: true, predicate: EclMenuComponent, descendants: true }, { propertyName: "eclMegaMenuComponent", first: true, predicate: EclMegaMenuComponent, descendants: true }, { propertyName: "eclSearchComponent", first: true, predicate: EclSiteHeaderSearchComponent, descendants: true }, { propertyName: "eclLanguageComponent", first: true, predicate: EclSiteHeaderLanguageComponent, descendants: true }, { propertyName: "eclNotificationComponent", first: true, predicate: EclSiteHeaderNotificationComponent, descendants: true }, { propertyName: "eclHeaderLink", first: true, predicate: i0.forwardRef(() => EclSiteHeaderLinkDirective), descendants: true }, { propertyName: "eclHeaderImage", first: true, predicate: i0.forwardRef(() => EclSiteHeaderImageDirective), descendants: true }], viewQueries: [{ propertyName: "topContainerElement", first: true, predicate: ["topContainer"], descendants: true }, { propertyName: "siteHeaderHeader", first: true, predicate: ["siteHeaderHeader"], descendants: true }, { propertyName: "bannerHeader", first: true, predicate: ["bannerHeader"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ecl-site-header__background\">\n <div class=\"ecl-site-header__header\" #siteHeaderHeader>\n <div class=\"ecl-site-header__container ecl-container\">\n <div #topContainer class=\"ecl-site-header__top\">\n @if(hasCustomLink()) {\n <ng-content select=\"[eclSiteHeaderLink]\"></ng-content>\n } @else {\n <a eclLink variant=\"standalone\" class=\"ecl-site-header__logo-link\"\n href=\"https://ec.europa.eu/info/index_{{ getEULanguageCode() }}\" (click)=\"onECLogoClick($event)\"\n [attr.aria-label]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\">\n <ng-content select=\"[eclSiteHeaderEnvironment]\"></ng-content>\n\n @if (eclThemeService.isEC$ | async) {\n <picture eclSiteHeaderPicture\n [attr.title]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\">\n <source\n srcset=\"./assets/images/ecl/ec/logo/positive/logo-ec--{{ partOfLogoName }}.svg\"\n media=\"(min-width: 996px)\" />\n <img class=\"ecl-site-header__logo-image ecl-site-header__logo-image--{{logoSize}}\"\n src=\"./assets/images/ecl/ec/logo/logo-ec--mute.svg\"\n [attr.alt]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\" />\n </picture>\n }\n @if (eclThemeService.isEU$ | async) {\n <picture eclSiteHeaderPicture\n [attr.title]=\"'ecl.footer.EUROPEAN-UNION' | translate\">\n <source\n srcset=\"./assets/images/ecl/eu/logo/standard-version/positive/logo-eu--{{ partOfLogoName }}.svg\"\n media=\"(min-width: 996px)\" />\n <img class=\"ecl-site-header__logo-image ecl-site-header__logo-image--{{logoSize}}\"\n src=\"./assets/images/ecl/eu/logo/condensed-version/positive/logo-eu--{{ partOfLogoName }}.svg\"\n [attr.alt]=\"'ecl.footer.EUROPEAN-UNION' | translate\" />\n </picture>\n }\n </a>\n }\n <ng-content select=\"ecl-site-header-action\"></ng-content>\n </div>\n </div>\n </div>\n <ng-content select=\"ecl-site-header-notification\"></ng-content>\n</div>\n\n\n<ng-content select=\"ecl-site-header-banner-top\"></ng-content>\n@if (siteName) {\n <div class=\"ecl-site-header__banner\" #bannerHeader>\n <div class=\"ecl-container\">\n <div class=\"ecl-site-header__site-name\">{{ siteName }}</div>\n <ng-content select=\"[eclSiteHeaderCta]\"></ng-content>\n </div>\n </div>\n}\n\n<ng-content select=\"ecl-menu\"></ng-content>\n<ng-content select=\"[eclMegaMenu]\"></ng-content>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: EclLinkDirective, selector: "[eclLink]", inputs: ["isInverted", "isIconOnly", "isNoVisited", "variant"] }, { kind: "directive", type: EclSiteHeaderPictureDirective, selector: "[eclSiteHeaderPicture]" }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] }); }
|
|
5109
5118
|
}
|
|
5110
5119
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EclSiteHeaderComponent, decorators: [{
|
|
5111
5120
|
type: Component,
|
|
5112
|
-
args: [{ selector: 'ecl-site-header', template: "<div class=\"ecl-site-header__background\">\n <div class=\"ecl-site-header__header\" #siteHeaderHeader>\n <div class=\"ecl-site-header__container ecl-container\">\n <div #topContainer class=\"ecl-site-header__top\">\n @if(hasCustomLink()) {\n <ng-content select=\"[eclSiteHeaderLink]\"></ng-content>\n } @else {\n <a eclLink variant=\"standalone\" class=\"ecl-site-header__logo-link\"\n href=\"https://ec.europa.eu/info/index_{{ getEULanguageCode() }}\" (click)=\"onECLogoClick($event)\"\n [attr.aria-label]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\">\n <ng-content select=\"[eclSiteHeaderEnvironment]\"></ng-content>\n\n @if (eclThemeService.isEC$ | async) {\n <picture eclSiteHeaderPicture\n [attr.title]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\">\n <source\n srcset=\"./assets/images/ecl/ec/logo/positive/logo-ec--{{
|
|
5121
|
+
args: [{ selector: 'ecl-site-header', template: "<div class=\"ecl-site-header__background\">\n <div class=\"ecl-site-header__header\" #siteHeaderHeader>\n <div class=\"ecl-site-header__container ecl-container\">\n <div #topContainer class=\"ecl-site-header__top\">\n @if(hasCustomLink()) {\n <ng-content select=\"[eclSiteHeaderLink]\"></ng-content>\n } @else {\n <a eclLink variant=\"standalone\" class=\"ecl-site-header__logo-link\"\n href=\"https://ec.europa.eu/info/index_{{ getEULanguageCode() }}\" (click)=\"onECLogoClick($event)\"\n [attr.aria-label]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\">\n <ng-content select=\"[eclSiteHeaderEnvironment]\"></ng-content>\n\n @if (eclThemeService.isEC$ | async) {\n <picture eclSiteHeaderPicture\n [attr.title]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\">\n <source\n srcset=\"./assets/images/ecl/ec/logo/positive/logo-ec--{{ partOfLogoName }}.svg\"\n media=\"(min-width: 996px)\" />\n <img class=\"ecl-site-header__logo-image ecl-site-header__logo-image--{{logoSize}}\"\n src=\"./assets/images/ecl/ec/logo/logo-ec--mute.svg\"\n [attr.alt]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\" />\n </picture>\n }\n @if (eclThemeService.isEU$ | async) {\n <picture eclSiteHeaderPicture\n [attr.title]=\"'ecl.footer.EUROPEAN-UNION' | translate\">\n <source\n srcset=\"./assets/images/ecl/eu/logo/standard-version/positive/logo-eu--{{ partOfLogoName }}.svg\"\n media=\"(min-width: 996px)\" />\n <img class=\"ecl-site-header__logo-image ecl-site-header__logo-image--{{logoSize}}\"\n src=\"./assets/images/ecl/eu/logo/condensed-version/positive/logo-eu--{{ partOfLogoName }}.svg\"\n [attr.alt]=\"'ecl.footer.EUROPEAN-UNION' | translate\" />\n </picture>\n }\n </a>\n }\n <ng-content select=\"ecl-site-header-action\"></ng-content>\n </div>\n </div>\n </div>\n <ng-content select=\"ecl-site-header-notification\"></ng-content>\n</div>\n\n\n<ng-content select=\"ecl-site-header-banner-top\"></ng-content>\n@if (siteName) {\n <div class=\"ecl-site-header__banner\" #bannerHeader>\n <div class=\"ecl-container\">\n <div class=\"ecl-site-header__site-name\">{{ siteName }}</div>\n <ng-content select=\"[eclSiteHeaderCta]\"></ng-content>\n </div>\n </div>\n}\n\n<ng-content select=\"ecl-menu\"></ng-content>\n<ng-content select=\"[eclMegaMenu]\"></ng-content>\n", styles: [":host{display:block}\n"] }]
|
|
5113
5122
|
}], ctorParameters: () => [{ type: EclSiteHeaderAreaDataService }, { type: EclLanguageService }, { type: i1$4.BreakpointObserver }, { type: i1$2.TranslateService }, { type: i0.ElementRef }, { type: EclThemeService }, { type: EclMegaMenuDataService }, { type: EclRtlService }], propDecorators: { siteName: [{
|
|
5114
5123
|
type: Input
|
|
5115
5124
|
}], languageCode: [{
|