@eui/ecl 18.2.1 → 18.2.2-snapshot-1729246724590
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/EclAccordionComponent.html +1 -1
- package/docs/components/EclAccordionItemComponent.html +1 -1
- package/docs/components/EclAppComponent.html +1 -1
- package/docs/components/EclBannerComponent.html +1 -1
- package/docs/components/EclBlockquoteComponent.html +1 -1
- package/docs/components/EclBreadcrumbComponent.html +1 -1
- package/docs/components/EclBreadcrumbSegmentComponent.html +1 -1
- package/docs/components/EclButtonComponent.html +1 -1
- package/docs/components/EclCardBodyComponent.html +1 -1
- package/docs/components/EclCardComponent.html +1 -1
- package/docs/components/EclCarouselComponent.html +2 -66
- package/docs/components/EclCarouselItemComponent.html +1 -1
- package/docs/components/EclCategoryFilterComponent.html +1 -1
- package/docs/components/EclCategoryFilterItemComponent.html +1 -1
- package/docs/components/EclCategoryFilterListComponent.html +1 -1
- package/docs/components/EclCheckboxHelpComponent.html +1 -1
- package/docs/components/EclCheckboxLabelComponent.html +1 -1
- package/docs/components/EclContentBlockComponent.html +1 -1
- package/docs/components/EclContentItemComponent.html +1 -1
- package/docs/components/EclDateBlockComponent.html +1 -1
- package/docs/components/EclDescriptionListDefinitionComponent.html +1 -1
- package/docs/components/EclExpandableComponent.html +1 -1
- package/docs/components/EclFactFiguresComponent.html +1 -1
- package/docs/components/EclFactFiguresDescriptionComponent.html +1 -1
- package/docs/components/EclFactFiguresItemComponent.html +1 -1
- package/docs/components/EclFactFiguresTitleComponent.html +1 -1
- package/docs/components/EclFactFiguresValueComponent.html +1 -1
- package/docs/components/EclFactFiguresViewAllComponent.html +1 -1
- package/docs/components/EclFeaturedComponent.html +1 -1
- package/docs/components/EclFeaturedItemComponent.html +1 -1
- package/docs/components/EclFeaturedItemDescriptionComponent.html +1 -1
- package/docs/components/EclFeaturedItemFooterComponent.html +1 -1
- package/docs/components/EclFileComponent.html +2 -2
- package/docs/components/EclFileItemComponent.html +2 -2
- package/docs/components/EclFileItemsComponent.html +1 -1
- package/docs/components/EclFileTaxonomyComponent.html +1 -1
- package/docs/components/EclFormGroupComponent.html +1 -1
- package/docs/components/EclFormLabelComponent.html +1 -1
- package/docs/components/EclGalleryComponent.html +28 -4
- package/docs/components/EclGalleryFooterComponent.html +1 -1
- package/docs/components/EclGalleryItemComponent.html +2 -2
- package/docs/components/EclIconComponent.html +1 -1
- package/docs/components/EclInpageNavigationComponent.html +37 -2
- package/docs/components/EclInpageNavigationItemComponent.html +1 -1
- package/docs/components/EclListIllustrationComponent.html +1 -1
- package/docs/components/EclListIllustrationItemComponent.html +1 -1
- package/docs/components/EclLoadingIndicatorComponent.html +1 -1
- package/docs/components/EclMediaContainerComponent.html +322 -2
- package/docs/components/EclMegaMenuComponent.html +1 -1
- package/docs/components/EclMegaMenuFeaturedComponent.html +1 -1
- package/docs/components/EclMegaMenuInfoComponent.html +1 -1
- package/docs/components/EclMegaMenuItemComponent.html +1 -1
- package/docs/components/EclMegaMenuSubitemComponent.html +1 -1
- package/docs/components/EclMenuComponent.html +1 -1
- package/docs/components/EclMenuItemComponent.html +1 -1
- package/docs/components/EclMenuMegaComponent.html +1 -1
- package/docs/components/EclMenuMegaItemComponent.html +1 -1
- package/docs/components/EclModalBodyComponent.html +1 -1
- package/docs/components/EclModalComponent.html +1 -1
- package/docs/components/EclModalFooterComponent.html +1 -1
- package/docs/components/EclModalHeaderComponent.html +1 -1
- package/docs/components/EclMultiselectComponent.html +1 -1
- package/docs/components/EclMultiselectDropdownComponent.html +1 -1
- package/docs/components/EclMultiselectInputComponent.html +1 -1
- package/docs/components/EclMultiselectOptgroupComponent.html +1 -1
- package/docs/components/EclMultiselectOptionComponent.html +1 -1
- package/docs/components/EclNavigationListComponent.html +1 -1
- package/docs/components/EclNavigationListImageComponent.html +1 -1
- package/docs/components/EclNavigationListItemComponent.html +1 -1
- package/docs/components/EclNewsTickerComponent.html +1 -1
- package/docs/components/EclNewsTickerItemComponent.html +1 -1
- package/docs/components/EclNotificationComponent.html +1 -1
- package/docs/components/EclPageHeaderComponent.html +1 -1
- package/docs/components/EclPaginationComponent.html +1 -1
- package/docs/components/EclPaginationItemComponent.html +1 -1
- package/docs/components/EclPopoverComponent.html +1 -1
- package/docs/components/EclRadioHelpComponent.html +1 -1
- package/docs/components/EclRadioLabelComponent.html +1 -1
- package/docs/components/EclRangeBubbleComponent.html +1 -1
- package/docs/components/EclRangeValueComponent.html +1 -1
- package/docs/components/EclRatingFieldComponent.html +1 -1
- package/docs/components/EclSearchFormComponent.html +1 -1
- package/docs/components/EclSelectContainerComponent.html +1 -1
- package/docs/components/EclSiteFooterComponent.html +1 -1
- package/docs/components/EclSiteFooterFixedContentECComponent.html +1 -1
- package/docs/components/EclSiteFooterFixedContentEUComponent.html +1 -1
- package/docs/components/EclSiteHeaderActionComponent.html +1 -1
- package/docs/components/EclSiteHeaderBannerTopComponent.html +1 -1
- package/docs/components/EclSiteHeaderComponent.html +1 -1
- package/docs/components/EclSiteHeaderEnvironmentComponent.html +1 -1
- package/docs/components/EclSiteHeaderLanguageComponent.html +1 -1
- package/docs/components/EclSiteHeaderLanguagePopoverComponent.html +1 -1
- package/docs/components/EclSiteHeaderLoginComponent.html +1 -1
- package/docs/components/EclSiteHeaderNotificationComponent.html +1 -1
- package/docs/components/EclSiteHeaderSearchComponent.html +1 -1
- package/docs/components/EclSocialMediaFollowComponent.html +1 -1
- package/docs/components/EclSocialMediaFollowItemComponent.html +1 -1
- package/docs/components/EclSocialMediaShareComponent.html +1 -1
- package/docs/components/EclSocialMediaShareItemComponent.html +1 -1
- package/docs/components/EclSplashPageComponent.html +1 -1
- package/docs/components/EclSplashPageLanguageCategoryComponent.html +1 -1
- package/docs/components/EclSplashPageLanguageContainerComponent.html +1 -1
- package/docs/components/EclSplashPageLanguageLinkComponent.html +1 -1
- package/docs/components/EclStickyContainerComponent.html +1 -1
- package/docs/components/EclTabComponent.html +1 -1
- package/docs/components/EclTabLabelComponent.html +1 -1
- package/docs/components/EclTabMoreComponent.html +1 -1
- package/docs/components/EclTableSortButtonComponent.html +1 -1
- package/docs/components/EclTabsComponent.html +1 -1
- package/docs/components/EclTagComponent.html +1 -1
- package/docs/components/EclTimelineComponent.html +1 -1
- package/docs/components/EclTimelineItemComponent.html +1 -1
- package/docs/components/EclTimelineItemTogglerComponent.html +1 -1
- package/docs/dependencies.html +2 -2
- package/docs/directives/EclCardPictureDirective.html +24 -0
- package/docs/directives/EclContentItemPictureDirective.html +25 -1
- package/docs/directives/EclFilePreviewDirective.html +559 -0
- package/docs/directives/EclGalleryMediaDirective.html +24 -0
- package/docs/directives/EclGalleryThumbnailDirective.html +24 -0
- package/docs/directives/EclMediaContainerItemDirective.html +51 -0
- package/docs/directives/EclSeparatorDirective.html +496 -0
- package/docs/index.html +2 -2
- package/docs/js/menu-wc.js +38 -18
- package/docs/js/menu-wc_es5.js +1 -1
- package/docs/js/search/search_index.js +2 -2
- package/docs/miscellaneous/variables.html +2 -0
- package/docs/modules/EclAllModule.html +6 -0
- package/docs/modules/EclSeparatorModule.html +232 -0
- package/docs/modules.html +12 -0
- package/esm2022/lib/components/ecl-card/ecl-card-picture.directive.mjs +13 -3
- package/esm2022/lib/components/ecl-carousel/ecl-carousel.component.mjs +7 -8
- package/esm2022/lib/components/ecl-content-item/ecl-content-item-image.directive.mjs +10 -3
- package/esm2022/lib/components/ecl-file/ecl-file-download.directive.mjs +25 -1
- package/esm2022/lib/components/ecl-file/ecl-file-item/ecl-file-item.component.mjs +3 -3
- package/esm2022/lib/components/ecl-file/ecl-file.component.mjs +3 -3
- package/esm2022/lib/components/ecl-file/ecl-file.module.mjs +7 -4
- package/esm2022/lib/components/ecl-gallery/ecl-gallery-item.component.mjs +4 -4
- package/esm2022/lib/components/ecl-gallery/ecl-gallery-media.directive.mjs +23 -5
- package/esm2022/lib/components/ecl-gallery/ecl-gallery.component.mjs +7 -4
- package/esm2022/lib/components/ecl-inpage-navigation/ecl-inpage-navigation.component.mjs +13 -5
- package/esm2022/lib/components/ecl-media-container/ecl-media-container-item.directive.mjs +2 -3
- package/esm2022/lib/components/ecl-media-container/ecl-media-container.component.mjs +73 -10
- package/esm2022/lib/components/ecl-media-container/ecl-media-container.module.mjs +6 -4
- package/esm2022/lib/components/ecl-separator/ecl-separator.directive.mjs +21 -0
- package/esm2022/lib/components/ecl-separator/ecl-separator.module.mjs +18 -0
- package/esm2022/lib/components/ecl-separator/index.mjs +3 -0
- package/esm2022/lib/components/index.mjs +2 -1
- package/esm2022/lib/shared/ecl-all.module.mjs +6 -1
- package/fesm2022/eui-ecl.mjs +228 -64
- package/fesm2022/eui-ecl.mjs.map +1 -1
- package/lib/components/ecl-card/ecl-card-picture.directive.d.ts +3 -1
- package/lib/components/ecl-card/ecl-card-picture.directive.d.ts.map +1 -1
- package/lib/components/ecl-carousel/ecl-carousel.component.d.ts +0 -1
- package/lib/components/ecl-carousel/ecl-carousel.component.d.ts.map +1 -1
- package/lib/components/ecl-content-item/ecl-content-item-image.directive.d.ts +4 -2
- package/lib/components/ecl-content-item/ecl-content-item-image.directive.d.ts.map +1 -1
- package/lib/components/ecl-file/ecl-file-download.directive.d.ts +6 -0
- package/lib/components/ecl-file/ecl-file-download.directive.d.ts.map +1 -1
- package/lib/components/ecl-file/ecl-file-item/ecl-file-item.component.d.ts +1 -1
- package/lib/components/ecl-file/ecl-file.component.d.ts +1 -1
- package/lib/components/ecl-file/ecl-file.module.d.ts +1 -1
- package/lib/components/ecl-file/ecl-file.module.d.ts.map +1 -1
- package/lib/components/ecl-gallery/ecl-gallery-item.component.d.ts.map +1 -1
- package/lib/components/ecl-gallery/ecl-gallery-media.directive.d.ts +6 -2
- package/lib/components/ecl-gallery/ecl-gallery-media.directive.d.ts.map +1 -1
- package/lib/components/ecl-gallery/ecl-gallery.component.d.ts +4 -3
- package/lib/components/ecl-gallery/ecl-gallery.component.d.ts.map +1 -1
- package/lib/components/ecl-inpage-navigation/ecl-inpage-navigation.component.d.ts +2 -0
- package/lib/components/ecl-inpage-navigation/ecl-inpage-navigation.component.d.ts.map +1 -1
- package/lib/components/ecl-media-container/ecl-media-container-item.directive.d.ts +2 -2
- package/lib/components/ecl-media-container/ecl-media-container-item.directive.d.ts.map +1 -1
- package/lib/components/ecl-media-container/ecl-media-container.component.d.ts +18 -2
- package/lib/components/ecl-media-container/ecl-media-container.component.d.ts.map +1 -1
- package/lib/components/ecl-media-container/ecl-media-container.module.d.ts +3 -1
- package/lib/components/ecl-media-container/ecl-media-container.module.d.ts.map +1 -1
- package/lib/components/ecl-separator/ecl-separator.directive.d.ts +8 -0
- package/lib/components/ecl-separator/ecl-separator.directive.d.ts.map +1 -0
- package/lib/components/ecl-separator/ecl-separator.module.d.ts +9 -0
- package/lib/components/ecl-separator/ecl-separator.module.d.ts.map +1 -0
- package/lib/components/ecl-separator/index.d.ts +3 -0
- package/lib/components/ecl-separator/index.d.ts.map +1 -0
- package/lib/components/index.d.ts +1 -0
- package/lib/components/index.d.ts.map +1 -1
- package/lib/shared/ecl-all.module.d.ts +15 -14
- package/lib/shared/ecl-all.module.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -27,7 +27,6 @@ export class EclGalleryItemComponent extends ECLBaseDirective {
|
|
|
27
27
|
if (this.isExternalVideo) {
|
|
28
28
|
const iframeUrl = new URL(this.src);
|
|
29
29
|
if (iframeUrl.host.includes('youtube')) {
|
|
30
|
-
iframeUrl.searchParams.set('disablekb', '1');
|
|
31
30
|
this.externalVideoUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(iframeUrl.toString());
|
|
32
31
|
}
|
|
33
32
|
else {
|
|
@@ -38,6 +37,7 @@ export class EclGalleryItemComponent extends ECLBaseDirective {
|
|
|
38
37
|
this.itemId = crypto.randomUUID();
|
|
39
38
|
}
|
|
40
39
|
}
|
|
40
|
+
// TODO: to be removed in v19. Thumbnail should be added by user.
|
|
41
41
|
ngAfterContentInit() {
|
|
42
42
|
if (this.galleryPicture && !this.galleryThumbnail && !this.isImage) {
|
|
43
43
|
this.galleryPicture.isThumbnail = true;
|
|
@@ -84,11 +84,11 @@ export class EclGalleryItemComponent extends ECLBaseDirective {
|
|
|
84
84
|
this.renderer.selectRootElement(this.el.nativeElement.children[0], true).focus();
|
|
85
85
|
}
|
|
86
86
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: EclGalleryItemComponent, deps: [{ token: i1.DomSanitizer }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
87
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: EclGalleryItemComponent, selector: "ecl-gallery-item", inputs: { isShareable: ["isShareable", "isShareable", booleanAttribute], mediaType: "mediaType", src: "src", label: "label", meta: "meta", description: "description", srVideoAudioDescription: "srVideoAudioDescription", icon: "icon", title: "title", itemId: "itemId" }, outputs: { itemClick: "itemClick" }, host: { listeners: { "click": "onItemClick($event)" }, properties: { "class": "this.cssClasses", "attr.role": "this.role" } }, queries: [{ propertyName: "mediaChild", first: true, predicate: EclGalleryMediaDirective, descendants: true }, { propertyName: "galleryThumbnail", first: true, predicate: EclGalleryThumbnailDirective, descendants: true }, { propertyName: "galleryPicture", first: true, predicate: EclGalleryPictureDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<a [href]=\"src\" class=\"ecl-gallery__item-link\" [class.ecl-gallery__item__link--frozen]=\"isNoOverlay\" [id]=\"itemId\">\n <figure class=\"ecl-gallery__image-container\">\n @if(mediaType !== 'image') {\n <div class=\"ecl-gallery__item-icon-wrapper\">\n <ecl-icon isInverted class=\"ecl-gallery__item-icon ecl-icon--inverted\" icon=\"play-filled\" size=\"l\"></ecl-icon>\n </div>\n }\n @if(hasGalleryThumbnail) {
|
|
87
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: EclGalleryItemComponent, selector: "ecl-gallery-item", inputs: { isShareable: ["isShareable", "isShareable", booleanAttribute], mediaType: "mediaType", src: "src", label: "label", meta: "meta", description: "description", srVideoAudioDescription: "srVideoAudioDescription", icon: "icon", title: "title", itemId: "itemId" }, outputs: { itemClick: "itemClick" }, host: { listeners: { "click": "onItemClick($event)" }, properties: { "class": "this.cssClasses", "attr.role": "this.role" } }, queries: [{ propertyName: "mediaChild", first: true, predicate: EclGalleryMediaDirective, descendants: true }, { propertyName: "galleryThumbnail", first: true, predicate: EclGalleryThumbnailDirective, descendants: true }, { propertyName: "galleryPicture", first: true, predicate: EclGalleryPictureDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<a [href]=\"src\" class=\"ecl-gallery__item-link\" [class.ecl-gallery__item__link--frozen]=\"isNoOverlay\" [id]=\"itemId\">\n <figure class=\"ecl-gallery__image-container\">\n @if(mediaType !== 'image') {\n <div class=\"ecl-gallery__item-icon-wrapper\">\n <ecl-icon isInverted class=\"ecl-gallery__item-icon ecl-icon--inverted\" icon=\"play-filled\" size=\"l\"></ecl-icon>\n </div>\n } \n @if(hasGalleryThumbnail) { <!-- TODO: to be removed in v19. Thumbnail should be added by user. -->\n <picture class=\"ecl-picture ecl-gallery__thumbnail\">\n @for(el of galleryPicture?.sources; track el.srcset ) {\n <source [attr.srcset]=\"el.srcset\" [attr.media]=\" el.media\">\n }\n <img class=\"ecl-gallery__image\"\n [attr.src]=\"galleryPicture?.img.src\"\n [attr.alt]=\"galleryPicture?.img.alt\" />\n </picture>\n }\n <ng-content select=\"[eclGalleryPicture], [eclGalleryThumbnail], [eclGalleryMedia], [eclGalleryImage]\"></ng-content>\n <figcaption class=\"ecl-gallery__description\">\n @if(title) {\n <span class=\"ecl-gallery__title\" [id]=\"titleId\">{{title}}</span>\n }\n @if(description) {\n <span class=\"ecl-gallery__caption\">{{ description }}</span>\n }\n @if(icon) {\n <ecl-icon class=\"ecl-gallery__description-icon\" [icon]=\"icon\"></ecl-icon>\n }\n <span class=\"ecl-gallery__meta\">\n {{ meta }}\n </span>\n </figcaption>\n </figure>\n</a>", dependencies: [{ kind: "component", type: i2.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }] }); }
|
|
88
88
|
}
|
|
89
89
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: EclGalleryItemComponent, decorators: [{
|
|
90
90
|
type: Component,
|
|
91
|
-
args: [{ selector: 'ecl-gallery-item', template: "<a [href]=\"src\" class=\"ecl-gallery__item-link\" [class.ecl-gallery__item__link--frozen]=\"isNoOverlay\" [id]=\"itemId\">\n <figure class=\"ecl-gallery__image-container\">\n @if(mediaType !== 'image') {\n <div class=\"ecl-gallery__item-icon-wrapper\">\n <ecl-icon isInverted class=\"ecl-gallery__item-icon ecl-icon--inverted\" icon=\"play-filled\" size=\"l\"></ecl-icon>\n </div>\n }\n @if(hasGalleryThumbnail) {
|
|
91
|
+
args: [{ selector: 'ecl-gallery-item', template: "<a [href]=\"src\" class=\"ecl-gallery__item-link\" [class.ecl-gallery__item__link--frozen]=\"isNoOverlay\" [id]=\"itemId\">\n <figure class=\"ecl-gallery__image-container\">\n @if(mediaType !== 'image') {\n <div class=\"ecl-gallery__item-icon-wrapper\">\n <ecl-icon isInverted class=\"ecl-gallery__item-icon ecl-icon--inverted\" icon=\"play-filled\" size=\"l\"></ecl-icon>\n </div>\n } \n @if(hasGalleryThumbnail) { <!-- TODO: to be removed in v19. Thumbnail should be added by user. -->\n <picture class=\"ecl-picture ecl-gallery__thumbnail\">\n @for(el of galleryPicture?.sources; track el.srcset ) {\n <source [attr.srcset]=\"el.srcset\" [attr.media]=\" el.media\">\n }\n <img class=\"ecl-gallery__image\"\n [attr.src]=\"galleryPicture?.img.src\"\n [attr.alt]=\"galleryPicture?.img.alt\" />\n </picture>\n }\n <ng-content select=\"[eclGalleryPicture], [eclGalleryThumbnail], [eclGalleryMedia], [eclGalleryImage]\"></ng-content>\n <figcaption class=\"ecl-gallery__description\">\n @if(title) {\n <span class=\"ecl-gallery__title\" [id]=\"titleId\">{{title}}</span>\n }\n @if(description) {\n <span class=\"ecl-gallery__caption\">{{ description }}</span>\n }\n @if(icon) {\n <ecl-icon class=\"ecl-gallery__description-icon\" [icon]=\"icon\"></ecl-icon>\n }\n <span class=\"ecl-gallery__meta\">\n {{ meta }}\n </span>\n </figcaption>\n </figure>\n</a>" }]
|
|
92
92
|
}], ctorParameters: () => [{ type: i1.DomSanitizer }, { type: i0.Renderer2 }, { type: i0.ElementRef }], propDecorators: { isShareable: [{
|
|
93
93
|
type: Input,
|
|
94
94
|
args: [{ transform: booleanAttribute }]
|
|
@@ -131,4 +131,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
131
131
|
type: HostListener,
|
|
132
132
|
args: ['click', ['$event']]
|
|
133
133
|
}] } });
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLWdhbGxlcnktaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLWdhbGxlcnkvZWNsLWdhbGxlcnktaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLWdhbGxlcnkvZWNsLWdhbGxlcnktaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUFFLFlBQVksRUFBYyxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQTRCLE1BQU0sRUFDMUcsZ0JBQWdCLEdBQzlCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQ0gsd0JBQXdCLEVBQ3hCLDBCQUEwQixFQUMxQiw0QkFBNEIsR0FDL0IsTUFBTSwrQkFBK0IsQ0FBQzs7OztBQUV2QyxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsWUFBWTtDQUFHO0FBTTdELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxnQkFBZ0I7SUFtQnpELElBQ0ksVUFBVTtRQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxSCxDQUFDO0lBU0QsWUFDWSxZQUEwQixFQUFVLFFBQW1CLEVBQ3ZELEVBQWM7UUFFdEIsS0FBSyxFQUFFLENBQUM7UUFIQSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUFVLGFBQVEsR0FBUixR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O1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDckYsQ0FBQzs4R0FoSFEsdUJBQXVCO2tHQUF2Qix1QkFBdUIsc0ZBQ1osZ0JBQWdCLDJhQWN0Qix3QkFBd0IsbUZBQ3hCLDRCQUE0QixpRkFDNUIsMEJBQTBCLHVFQ3JDNUMsOGxEQWlDSTs7MkZEYlMsdUJBQXVCO2tCQUpuQyxTQUFTOytCQUNJLGtCQUFrQjtrSUFJWSxXQUFXO3NCQUFsRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUM3QixTQUFTO3NCQUFqQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFJRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ2lDLFVBQVU7c0JBQWpELFlBQVk7dUJBQUMsd0JBQXdCO2dCQUNNLGdCQUFnQjtzQkFBM0QsWUFBWTt1QkFBQyw0QkFBNEI7Z0JBQ0EsY0FBYztzQkFBdkQsWUFBWTt1QkFBQywwQkFBMEI7Z0JBR3BDLFVBQVU7c0JBRGIsV0FBVzt1QkFBQyxPQUFPO2dCQUlNLElBQUk7c0JBQTdCLFdBQVc7dUJBQUMsV0FBVztnQkEwQ3hCLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIE91dHB1dCxcbiAgICBSZW5kZXJlcjIsIGJvb2xlYW5BdHRyaWJ1dGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IEVjbEJhc2VFdmVudCB9IGZyb20gJy4uLy4uL21vZGVsL2VjbC1iYXNlLmV2ZW50JztcbmltcG9ydCB7IEVjbEdhbGxlcnlJdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWwvZWNsLWdhbGxlcnktaXRlbS5tb2RlbCc7XG5pbXBvcnQgeyBFQ0xCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZWNsLWJhc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7XG4gICAgRWNsR2FsbGVyeU1lZGlhRGlyZWN0aXZlLFxuICAgIEVjbEdhbGxlcnlQaWN0dXJlRGlyZWN0aXZlLFxuICAgIEVjbEdhbGxlcnlUaHVtYm5haWxEaXJlY3RpdmUsXG59IGZyb20gJy4vZWNsLWdhbGxlcnktbWVkaWEuZGlyZWN0aXZlJztcblxuZXhwb3J0IGNsYXNzIEVjbEdhbGxlcnlJdGVtQ2xpY2tFdmVudCBleHRlbmRzIEVjbEJhc2VFdmVudCB7fVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VjbC1nYWxsZXJ5LWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9lY2wtZ2FsbGVyeS1pdGVtLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgRWNsR2FsbGVyeUl0ZW1Db21wb25lbnQgZXh0ZW5kcyBFQ0xCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgRWNsR2FsbGVyeUl0ZW0sIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzU2hhcmVhYmxlID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBtZWRpYVR5cGU6ICdpbWFnZScgfCAndmlkZW8nIHwgJ2V4dGVybmFsVmlkZW8nID0gJ2ltYWdlJztcbiAgICBASW5wdXQoKSBzcmM6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBOb3QgdXNlZCBhbnltb3JlLiBUbyBiZSByZW1vdmVkIGluIHYxOS5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIG1ldGE6IHN0cmluZztcbiAgICBASW5wdXQoKSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHNyVmlkZW9BdWRpb0Rlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgQElucHV0KCkgaWNvbjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XG4gICAgQElucHV0KCkgaXRlbUlkOiBzdHJpbmc7XG4gICAgQE91dHB1dCgpIGl0ZW1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RWNsR2FsbGVyeUl0ZW1DbGlja0V2ZW50PigpO1xuICAgIEBDb250ZW50Q2hpbGQoRWNsR2FsbGVyeU1lZGlhRGlyZWN0aXZlKSBtZWRpYUNoaWxkOiBFY2xHYWxsZXJ5TWVkaWFEaXJlY3RpdmU7XG4gICAgQENvbnRlbnRDaGlsZChFY2xHYWxsZXJ5VGh1bWJuYWlsRGlyZWN0aXZlKSBnYWxsZXJ5VGh1bWJuYWlsOiBFY2xHYWxsZXJ5VGh1bWJuYWlsRGlyZWN0aXZlO1xuICAgIEBDb250ZW50Q2hpbGQoRWNsR2FsbGVyeVBpY3R1cmVEaXJlY3RpdmUpIGdhbGxlcnlQaWN0dXJlOiBFY2xHYWxsZXJ5UGljdHVyZURpcmVjdGl2ZTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbc3VwZXIuZ2V0Q3NzQ2xhc3NlcygnZWNsLWdhbGxlcnlfX2l0ZW0nKSwgdGhpcy5faXNIaWRkZW4gPyAnZWNsLWdhbGxlcnlfX2l0ZW0tLWhpZGRlbicgOiAnJ10uam9pbignICcpLnRyaW0oKTtcbiAgICB9XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKSByb2xlID0gJ2xpc3RpdGVtJztcblxuICAgIHZpZGVvTGFiZWw6IHN0cmluZztcblxuICAgIHByaXZhdGUgX2lzTm9PdmVybGF5ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaXNIaWRkZW4gPSBmYWxzZTtcbiAgICBwcml2YXRlIGV4dGVybmFsVmlkZW9Vcmw6IFNhZmVSZXNvdXJjZVVybDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzRXh0ZXJuYWxWaWRlbykge1xuICAgICAgICAgICAgY29uc3QgaWZyYW1lVXJsID0gbmV3IFVSTCh0aGlzLnNyYyk7XG4gICAgICAgICAgICBpZiAoaWZyYW1lVXJsLmhvc3QuaW5jbHVkZXMoJ3lvdXR1YmUnKSkge1xuICAgICAgICAgICAgICAgIGlmcmFtZVVybC5zZWFyY2hQYXJhbXMuc2V0KCdkaXNhYmxla2InLCAnMScpO1xuICAgICAgICAgICAgICAgIHRoaXMuZXh0ZXJuYWxWaWRlb1VybCA9IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChpZnJhbWVVcmwudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZXh0ZXJuYWxWaWRlb1VybCA9IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh0aGlzLnNyYyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuaXRlbUlkKSB7XG4gICAgICAgICAgICB0aGlzLml0ZW1JZCA9IGNyeXB0by5yYW5kb21VVUlEKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmdhbGxlcnlQaWN0dXJlICYmICF0aGlzLmdhbGxlcnlUaHVtYm5haWwgJiYgIXRoaXMuaXNJbWFnZSkge1xuICAgICAgICAgICAgdGhpcy5nYWxsZXJ5UGljdHVyZS5pc1RodW1ibmFpbCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXQgaXNIaWRkZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5faXNIaWRkZW4gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgb25JdGVtQ2xpY2soZXZ0OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXRlbUNsaWNrLm5leHQobmV3IEVjbEdhbGxlcnlJdGVtQ2xpY2tFdmVudCgpKTtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgZ2V0RG93bmxvYWRMaW5rKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnNyYztcbiAgICB9XG5cbiAgICBnZXRVcmxFeHRlcm5hbFZpZGVvKCk6IFNhZmVSZXNvdXJjZVVybCB7XG4gICAgICAgIHJldHVybiB0aGlzLmV4dGVybmFsVmlkZW9Vcmw7XG4gICAgfVxuXG4gICAgZ2V0IGlzTm9PdmVybGF5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNOb092ZXJsYXk7XG4gICAgfVxuXG4gICAgc2V0IGlzTm9PdmVybGF5KHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2lzTm9PdmVybGF5ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGlzSW1hZ2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1lZGlhVHlwZSA9PT0gJ2ltYWdlJztcbiAgICB9XG5cbiAgICBnZXQgaXNWaWRlbygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWVkaWFUeXBlID09PSAndmlkZW8nO1xuICAgIH1cblxuICAgIGdldCBpc0V4dGVybmFsVmlkZW8oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1lZGlhVHlwZSA9PT0gJ2V4dGVybmFsVmlkZW8nO1xuICAgIH1cblxuICAgIGdldCBpc09wZW5JbkZ1bGxTY3JlZW5Qb3NzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWVkaWFUeXBlICE9PSAnZXh0ZXJuYWxWaWRlbyc7XG4gICAgfVxuXG4gICAgZ2V0IHRpdGxlSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuaXRlbUlkfS10aXRsZWA7XG4gICAgfVxuXG4gICAgZ2V0IGhhc0dhbGxlcnlUaHVtYm5haWwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5nYWxsZXJ5VGh1bWJuYWlsICYmIHRoaXMuaXNJbWFnZTtcbiAgICB9XG5cbiAgICBvbkZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNlbGVjdFJvb3RFbGVtZW50KHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXSwgdHJ1ZSkuZm9jdXMoKTtcbiAgICB9XG59XG4iLCI8YSBbaHJlZl09XCJzcmNcIiBjbGFzcz1cImVjbC1nYWxsZXJ5X19pdGVtLWxpbmtcIiBbY2xhc3MuZWNsLWdhbGxlcnlfX2l0ZW1fX2xpbmstLWZyb3plbl09XCJpc05vT3ZlcmxheVwiIFtpZF09XCJpdGVtSWRcIj5cbiAgICA8ZmlndXJlIGNsYXNzPVwiZWNsLWdhbGxlcnlfX2ltYWdlLWNvbnRhaW5lclwiPlxuICAgICAgICBAaWYobWVkaWFUeXBlICE9PSAnaW1hZ2UnKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlY2wtZ2FsbGVyeV9faXRlbS1pY29uLXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxlY2wtaWNvbiBpc0ludmVydGVkIGNsYXNzPVwiZWNsLWdhbGxlcnlfX2l0ZW0taWNvbiBlY2wtaWNvbi0taW52ZXJ0ZWRcIiBpY29uPVwicGxheS1maWxsZWRcIiBzaXplPVwibFwiPjwvZWNsLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIEBpZihoYXNHYWxsZXJ5VGh1bWJuYWlsKSB7XG4gICAgICAgICAgICA8cGljdHVyZSBjbGFzcz1cImVjbC1waWN0dXJlIGVjbC1nYWxsZXJ5X190aHVtYm5haWxcIj5cbiAgICAgICAgICAgICAgICBAZm9yKGVsIG9mIGdhbGxlcnlQaWN0dXJlPy5zb3VyY2VzOyB0cmFjayBlbC5zcmNzZXQgKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzb3VyY2UgW2F0dHIuc3Jjc2V0XT1cImVsLnNyY3NldFwiIFthdHRyLm1lZGlhXT1cIiBlbC5tZWRpYVwiPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiZWNsLWdhbGxlcnlfX2ltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgIFthdHRyLnNyY109XCJnYWxsZXJ5UGljdHVyZT8uaW1nLnNyY1wiXG4gICAgICAgICAgICAgICAgICAgICBbYXR0ci5hbHRdPVwiZ2FsbGVyeVBpY3R1cmU/LmltZy5hbHRcIiAvPlxuICAgICAgICAgICAgPC9waWN0dXJlPlxuICAgICAgICB9XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltlY2xHYWxsZXJ5UGljdHVyZV0sIFtlY2xHYWxsZXJ5VGh1bWJuYWlsXSwgW2VjbEdhbGxlcnlNZWRpYV0sIFtlY2xHYWxsZXJ5SW1hZ2VdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8ZmlnY2FwdGlvbiBjbGFzcz1cImVjbC1nYWxsZXJ5X19kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgQGlmKHRpdGxlKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlY2wtZ2FsbGVyeV9fdGl0bGVcIiBbaWRdPVwidGl0bGVJZFwiPnt7dGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZihkZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZWNsLWdhbGxlcnlfX2NhcHRpb25cIj57eyBkZXNjcmlwdGlvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZihpY29uKSB7XG4gICAgICAgICAgICA8ZWNsLWljb24gY2xhc3M9XCJlY2wtZ2FsbGVyeV9fZGVzY3JpcHRpb24taWNvblwiIFtpY29uXT1cImljb25cIj48L2VjbC1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlY2wtZ2FsbGVyeV9fbWV0YVwiPlxuICAgICAgICAgICAgICAgIHt7IG1ldGEgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9maWdjYXB0aW9uPlxuICAgIDwvZmlndXJlPlxuPC9hPiJdfQ==
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLWdhbGxlcnktaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLWdhbGxlcnkvZWNsLWdhbGxlcnktaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLWdhbGxlcnkvZWNsLWdhbGxlcnktaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUFFLFlBQVksRUFBYyxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQTRCLE1BQU0sRUFDMUcsZ0JBQWdCLEdBQzlCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQ0gsd0JBQXdCLEVBQ3hCLDBCQUEwQixFQUMxQiw0QkFBNEIsR0FDL0IsTUFBTSwrQkFBK0IsQ0FBQzs7OztBQUV2QyxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsWUFBWTtDQUFHO0FBTTdELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxnQkFBZ0I7SUFtQnpELElBQ0ksVUFBVTtRQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxSCxDQUFDO0lBU0QsWUFDWSxZQUEwQixFQUFVLFFBQW1CLEVBQ3ZELEVBQWM7UUFFdEIsS0FBSyxFQUFFLENBQUM7UUFIQSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUFVLGFBQVEsR0FBUixR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QUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyRixDQUFDOzhHQWhIUSx1QkFBdUI7a0dBQXZCLHVCQUF1QixzRkFDWixnQkFBZ0IsMmFBY3RCLHdCQUF3QixtRkFDeEIsNEJBQTRCLGlGQUM1QiwwQkFBMEIsdUVDckM1Qyx1cURBaUNJOzsyRkRiUyx1QkFBdUI7a0JBSm5DLFNBQVM7K0JBQ0ksa0JBQWtCO2tJQUlZLFdBQVc7c0JBQWxELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQzdCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUlHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0ksU0FBUztzQkFBbEIsTUFBTTtnQkFDaUMsVUFBVTtzQkFBakQsWUFBWTt1QkFBQyx3QkFBd0I7Z0JBQ00sZ0JBQWdCO3NCQUEzRCxZQUFZO3VCQUFDLDRCQUE0QjtnQkFDQSxjQUFjO3NCQUF2RCxZQUFZO3VCQUFDLDBCQUEwQjtnQkFHcEMsVUFBVTtzQkFEYixXQUFXO3VCQUFDLE9BQU87Z0JBSU0sSUFBSTtzQkFBN0IsV0FBVzt1QkFBQyxXQUFXO2dCQTBDeEIsV0FBVztzQkFEVixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT3V0cHV0LFxuICAgIFJlbmRlcmVyMiwgYm9vbGVhbkF0dHJpYnV0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVSZXNvdXJjZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgRWNsQmFzZUV2ZW50IH0gZnJvbSAnLi4vLi4vbW9kZWwvZWNsLWJhc2UuZXZlbnQnO1xuaW1wb3J0IHsgRWNsR2FsbGVyeUl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbC9lY2wtZ2FsbGVyeS1pdGVtLm1vZGVsJztcbmltcG9ydCB7IEVDTEJhc2VEaXJlY3RpdmUgfSBmcm9tICcuLi9lY2wtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtcbiAgICBFY2xHYWxsZXJ5TWVkaWFEaXJlY3RpdmUsXG4gICAgRWNsR2FsbGVyeVBpY3R1cmVEaXJlY3RpdmUsXG4gICAgRWNsR2FsbGVyeVRodW1ibmFpbERpcmVjdGl2ZSxcbn0gZnJvbSAnLi9lY2wtZ2FsbGVyeS1tZWRpYS5kaXJlY3RpdmUnO1xuXG5leHBvcnQgY2xhc3MgRWNsR2FsbGVyeUl0ZW1DbGlja0V2ZW50IGV4dGVuZHMgRWNsQmFzZUV2ZW50IHt9XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZWNsLWdhbGxlcnktaXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VjbC1nYWxsZXJ5LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBFY2xHYWxsZXJ5SXRlbUNvbXBvbmVudCBleHRlbmRzIEVDTEJhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBFY2xHYWxsZXJ5SXRlbSwgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0IHtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNTaGFyZWFibGUgPSB0cnVlO1xuICAgIEBJbnB1dCgpIG1lZGlhVHlwZTogJ2ltYWdlJyB8ICd2aWRlbycgfCAnZXh0ZXJuYWxWaWRlbycgPSAnaW1hZ2UnO1xuICAgIEBJbnB1dCgpIHNyYzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIE5vdCB1c2VkIGFueW1vcmUuIFRvIGJlIHJlbW92ZWQgaW4gdjE5LlxuICAgICAqL1xuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG4gICAgQElucHV0KCkgbWV0YTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgQElucHV0KCkgc3JWaWRlb0F1ZGlvRGVzY3JpcHRpb246IHN0cmluZztcbiAgICBASW5wdXQoKSBpY29uOiBzdHJpbmc7XG4gICAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgICBASW5wdXQoKSBpdGVtSWQ6IHN0cmluZztcbiAgICBAT3V0cHV0KCkgaXRlbUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxFY2xHYWxsZXJ5SXRlbUNsaWNrRXZlbnQ+KCk7XG4gICAgQENvbnRlbnRDaGlsZChFY2xHYWxsZXJ5TWVkaWFEaXJlY3RpdmUpIG1lZGlhQ2hpbGQ6IEVjbEdhbGxlcnlNZWRpYURpcmVjdGl2ZTtcbiAgICBAQ29udGVudENoaWxkKEVjbEdhbGxlcnlUaHVtYm5haWxEaXJlY3RpdmUpIGdhbGxlcnlUaHVtYm5haWw6IEVjbEdhbGxlcnlUaHVtYm5haWxEaXJlY3RpdmU7XG4gICAgQENvbnRlbnRDaGlsZChFY2xHYWxsZXJ5UGljdHVyZURpcmVjdGl2ZSkgZ2FsbGVyeVBpY3R1cmU6IEVjbEdhbGxlcnlQaWN0dXJlRGlyZWN0aXZlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtzdXBlci5nZXRDc3NDbGFzc2VzKCdlY2wtZ2FsbGVyeV9faXRlbScpLCB0aGlzLl9pc0hpZGRlbiA/ICdlY2wtZ2FsbGVyeV9faXRlbS0taGlkZGVuJyA6ICcnXS5qb2luKCcgJykudHJpbSgpO1xuICAgIH1cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpIHJvbGUgPSAnbGlzdGl0ZW0nO1xuXG4gICAgdmlkZW9MYWJlbDogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBfaXNOb092ZXJsYXkgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9pc0hpZGRlbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgZXh0ZXJuYWxWaWRlb1VybDogU2FmZVJlc291cmNlVXJsO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFeHRlcm5hbFZpZGVvKSB7XG4gICAgICAgICAgICBjb25zdCBpZnJhbWVVcmwgPSBuZXcgVVJMKHRoaXMuc3JjKTtcbiAgICAgICAgICAgIGlmIChpZnJhbWVVcmwuaG9zdC5pbmNsdWRlcygneW91dHViZScpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5leHRlcm5hbFZpZGVvVXJsID0gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKGlmcmFtZVVybC50b1N0cmluZygpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5leHRlcm5hbFZpZGVvVXJsID0gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHRoaXMuc3JjKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5pdGVtSWQpIHtcbiAgICAgICAgICAgIHRoaXMuaXRlbUlkID0gY3J5cHRvLnJhbmRvbVVVSUQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE86IHRvIGJlIHJlbW92ZWQgaW4gdjE5LiBUaHVtYm5haWwgc2hvdWxkIGJlIGFkZGVkIGJ5IHVzZXIuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5nYWxsZXJ5UGljdHVyZSAmJiAhdGhpcy5nYWxsZXJ5VGh1bWJuYWlsICYmICF0aGlzLmlzSW1hZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuZ2FsbGVyeVBpY3R1cmUuaXNUaHVtYm5haWwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0IGlzSGlkZGVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2lzSGlkZGVuID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIG9uSXRlbUNsaWNrKGV2dDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLml0ZW1DbGljay5uZXh0KG5ldyBFY2xHYWxsZXJ5SXRlbUNsaWNrRXZlbnQoKSk7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIGdldERvd25sb2FkTGluaygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5zcmM7XG4gICAgfVxuXG4gICAgZ2V0VXJsRXh0ZXJuYWxWaWRlbygpOiBTYWZlUmVzb3VyY2VVcmwge1xuICAgICAgICByZXR1cm4gdGhpcy5leHRlcm5hbFZpZGVvVXJsO1xuICAgIH1cblxuICAgIGdldCBpc05vT3ZlcmxheSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTm9PdmVybGF5O1xuICAgIH1cblxuICAgIHNldCBpc05vT3ZlcmxheSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9pc05vT3ZlcmxheSA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBpc0ltYWdlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tZWRpYVR5cGUgPT09ICdpbWFnZSc7XG4gICAgfVxuXG4gICAgZ2V0IGlzVmlkZW8oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1lZGlhVHlwZSA9PT0gJ3ZpZGVvJztcbiAgICB9XG5cbiAgICBnZXQgaXNFeHRlcm5hbFZpZGVvKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tZWRpYVR5cGUgPT09ICdleHRlcm5hbFZpZGVvJztcbiAgICB9XG5cbiAgICBnZXQgaXNPcGVuSW5GdWxsU2NyZWVuUG9zc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1lZGlhVHlwZSAhPT0gJ2V4dGVybmFsVmlkZW8nO1xuICAgIH1cblxuICAgIGdldCB0aXRsZUlkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLml0ZW1JZH0tdGl0bGVgO1xuICAgIH1cblxuICAgIGdldCBoYXNHYWxsZXJ5VGh1bWJuYWlsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuZ2FsbGVyeVRodW1ibmFpbCAmJiB0aGlzLmlzSW1hZ2U7XG4gICAgfVxuXG4gICAgb25Gb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZWxlY3RSb290RWxlbWVudCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0sIHRydWUpLmZvY3VzKCk7XG4gICAgfVxufVxuIiwiPGEgW2hyZWZdPVwic3JjXCIgY2xhc3M9XCJlY2wtZ2FsbGVyeV9faXRlbS1saW5rXCIgW2NsYXNzLmVjbC1nYWxsZXJ5X19pdGVtX19saW5rLS1mcm96ZW5dPVwiaXNOb092ZXJsYXlcIiBbaWRdPVwiaXRlbUlkXCI+XG4gICAgPGZpZ3VyZSBjbGFzcz1cImVjbC1nYWxsZXJ5X19pbWFnZS1jb250YWluZXJcIj5cbiAgICAgICAgQGlmKG1lZGlhVHlwZSAhPT0gJ2ltYWdlJykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZWNsLWdhbGxlcnlfX2l0ZW0taWNvbi13cmFwcGVyXCI+XG4gICAgICAgICAgICA8ZWNsLWljb24gaXNJbnZlcnRlZCBjbGFzcz1cImVjbC1nYWxsZXJ5X19pdGVtLWljb24gZWNsLWljb24tLWludmVydGVkXCIgaWNvbj1cInBsYXktZmlsbGVkXCIgc2l6ZT1cImxcIj48L2VjbC1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSBcbiAgICAgICAgQGlmKGhhc0dhbGxlcnlUaHVtYm5haWwpIHsgPCEtLSBUT0RPOiB0byBiZSByZW1vdmVkIGluIHYxOS4gVGh1bWJuYWlsIHNob3VsZCBiZSBhZGRlZCBieSB1c2VyLiAtLT5cbiAgICAgICAgICAgIDxwaWN0dXJlIGNsYXNzPVwiZWNsLXBpY3R1cmUgZWNsLWdhbGxlcnlfX3RodW1ibmFpbFwiPlxuICAgICAgICAgICAgICAgIEBmb3IoZWwgb2YgZ2FsbGVyeVBpY3R1cmU/LnNvdXJjZXM7IHRyYWNrIGVsLnNyY3NldCApIHtcbiAgICAgICAgICAgICAgICAgICAgPHNvdXJjZSBbYXR0ci5zcmNzZXRdPVwiZWwuc3Jjc2V0XCIgW2F0dHIubWVkaWFdPVwiIGVsLm1lZGlhXCI+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJlY2wtZ2FsbGVyeV9faW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3JjXT1cImdhbGxlcnlQaWN0dXJlPy5pbWcuc3JjXCJcbiAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFsdF09XCJnYWxsZXJ5UGljdHVyZT8uaW1nLmFsdFwiIC8+XG4gICAgICAgICAgICA8L3BpY3R1cmU+XG4gICAgICAgIH1cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2VjbEdhbGxlcnlQaWN0dXJlXSwgW2VjbEdhbGxlcnlUaHVtYm5haWxdLCBbZWNsR2FsbGVyeU1lZGlhXSwgW2VjbEdhbGxlcnlJbWFnZV1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDxmaWdjYXB0aW9uIGNsYXNzPVwiZWNsLWdhbGxlcnlfX2Rlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICBAaWYodGl0bGUpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVjbC1nYWxsZXJ5X190aXRsZVwiIFtpZF09XCJ0aXRsZUlkXCI+e3t0aXRsZX19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmKGRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlY2wtZ2FsbGVyeV9fY2FwdGlvblwiPnt7IGRlc2NyaXB0aW9uIH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmKGljb24pIHtcbiAgICAgICAgICAgIDxlY2wtaWNvbiBjbGFzcz1cImVjbC1nYWxsZXJ5X19kZXNjcmlwdGlvbi1pY29uXCIgW2ljb25dPVwiaWNvblwiPjwvZWNsLWljb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVjbC1nYWxsZXJ5X19tZXRhXCI+XG4gICAgICAgICAgICAgICAge3sgbWV0YSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2ZpZ2NhcHRpb24+XG4gICAgPC9maWd1cmU+XG48L2E+Il19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Directive, HostBinding, Input, afterNextRender } from '@angular/core';
|
|
1
|
+
import { Directive, HostBinding, Input, afterNextRender, booleanAttribute } from '@angular/core';
|
|
2
2
|
import { ECLBaseDirective } from '../ecl-base.directive';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class EclGalleryMediaSource {
|
|
@@ -11,11 +11,15 @@ export class EclGalleryPictureImage {
|
|
|
11
11
|
}
|
|
12
12
|
export class EclGalleryMediaDirective extends ECLBaseDirective {
|
|
13
13
|
get cssClasses() {
|
|
14
|
-
return [
|
|
14
|
+
return [
|
|
15
|
+
super.getCssClasses('ecl-gallery__image'),
|
|
16
|
+
this.hasZoom && this.isVideo ? 'ecl-video--zoom' : '',
|
|
17
|
+
].join(' ').trim();
|
|
15
18
|
}
|
|
16
19
|
constructor(el) {
|
|
17
20
|
super();
|
|
18
21
|
this.el = el;
|
|
22
|
+
this.hasZoom = false;
|
|
19
23
|
this.sources = [];
|
|
20
24
|
this.tracks = [];
|
|
21
25
|
this.isVideo = false;
|
|
@@ -55,7 +59,7 @@ export class EclGalleryMediaDirective extends ECLBaseDirective {
|
|
|
55
59
|
return this.el.nativeElement;
|
|
56
60
|
}
|
|
57
61
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: EclGalleryMediaDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
58
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
62
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.8", type: EclGalleryMediaDirective, selector: "[eclGalleryMedia], [eclGalleryImage]", inputs: { poster: "poster", hasZoom: ["hasZoom", "hasZoom", booleanAttribute] }, host: { properties: { "class": "this.cssClasses", "class.ecl-video": "this.isVideo" } }, usesInheritance: true, ngImport: i0 }); }
|
|
59
63
|
}
|
|
60
64
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: EclGalleryMediaDirective, decorators: [{
|
|
61
65
|
type: Directive,
|
|
@@ -64,6 +68,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
64
68
|
}]
|
|
65
69
|
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { poster: [{
|
|
66
70
|
type: Input
|
|
71
|
+
}], hasZoom: [{
|
|
72
|
+
type: Input,
|
|
73
|
+
args: [{ transform: booleanAttribute }]
|
|
67
74
|
}], cssClasses: [{
|
|
68
75
|
type: HostBinding,
|
|
69
76
|
args: ['class']
|
|
@@ -79,6 +86,7 @@ export class EclGalleryPictureDirective extends ECLBaseDirective {
|
|
|
79
86
|
super();
|
|
80
87
|
this.el = el;
|
|
81
88
|
this.cd = cd;
|
|
89
|
+
// TODO: to be removed in v19. Thumbnail should be added by user.
|
|
82
90
|
this.isThumbnail = false;
|
|
83
91
|
this.sources = [];
|
|
84
92
|
this.img = {};
|
|
@@ -125,11 +133,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
125
133
|
args: ['class']
|
|
126
134
|
}] } });
|
|
127
135
|
export class EclGalleryThumbnailDirective extends ECLBaseDirective {
|
|
136
|
+
constructor() {
|
|
137
|
+
super(...arguments);
|
|
138
|
+
this.hasZoom = false;
|
|
139
|
+
}
|
|
128
140
|
get cssClasses() {
|
|
129
141
|
return [super.getCssClasses('ecl-picture ecl-gallery__thumbnail')].join(' ').trim();
|
|
130
142
|
}
|
|
131
143
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: EclGalleryThumbnailDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
132
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
144
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.8", type: EclGalleryThumbnailDirective, selector: "picture[eclGalleryThumbnail]", inputs: { hasZoom: ["hasZoom", "hasZoom", booleanAttribute] }, host: { properties: { "class": "this.cssClasses", "class.ecl-picture--zoom": "this.hasZoom" } }, usesInheritance: true, ngImport: i0 }); }
|
|
133
145
|
}
|
|
134
146
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: EclGalleryThumbnailDirective, decorators: [{
|
|
135
147
|
type: Directive,
|
|
@@ -139,5 +151,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
139
151
|
}], propDecorators: { cssClasses: [{
|
|
140
152
|
type: HostBinding,
|
|
141
153
|
args: ['class']
|
|
154
|
+
}], hasZoom: [{
|
|
155
|
+
type: Input,
|
|
156
|
+
args: [{ transform: booleanAttribute }]
|
|
157
|
+
}, {
|
|
158
|
+
type: HostBinding,
|
|
159
|
+
args: ['class.ecl-picture--zoom']
|
|
142
160
|
}] } });
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLWdhbGxlcnktbWVkaWEuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2VjbC1nYWxsZXJ5L2VjbC1nYWxsZXJ5LW1lZGlhLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBYyxXQUFXLEVBQUUsS0FBSyxFQUFVLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFFekQsTUFBTSxPQUFPLHFCQUFxQjtDQUdqQztBQUVELE1BQU0sT0FBTyxvQkFBb0I7Q0FLaEM7QUFFRCxNQUFNLE9BQU8sdUJBQXVCO0NBR25DO0FBRUQsTUFBTSxPQUFPLHNCQUFzQjtDQUlsQztBQUtELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxnQkFBZ0I7SUFLMUQsSUFDSSxVQUFVO1FBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4RSxDQUFDO0lBR0QsWUFBb0IsRUFBYztRQUM5QixLQUFLLEVBQUUsQ0FBQztRQURRLE9BQUUsR0FBRixFQUFFLENBQVk7UUFUbEMsWUFBTyxHQUFpQyxFQUFFLENBQUM7UUFDM0MsV0FBTSxHQUFnQyxFQUFFLENBQUM7UUFNVCxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBSTVDLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDakIsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU8sWUFBWTtRQUNoQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxD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QWEsQ0FBQztJQUNqQyxDQUFDOzhHQTVDUSwwQkFBMEI7a0dBQTFCLDBCQUEwQjs7MkZBQTFCLDBCQUEwQjtrQkFIdEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsNEJBQTRCO2lCQUN6QzsrR0FRTyxVQUFVO3NCQURiLFdBQVc7dUJBQUMsT0FBTzs7QUE0Q3hCLE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxnQkFBZ0I7SUFDOUQsSUFDSSxVQUFVO1FBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsb0NBQW9DLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4RixDQUFDOzhHQUpRLDRCQUE0QjtrR0FBNUIsNEJBQTRCOzsyRkFBNUIsNEJBQTRCO2tCQUh4QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSw4QkFBOEI7aUJBQzNDOzhCQUdPLFVBQVU7c0JBRGIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIGFmdGVyTmV4dFJlbmRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRUNMQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4uL2VjbC1iYXNlLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCBjbGFzcyBFY2xHYWxsZXJ5TWVkaWFTb3VyY2Uge1xuICAgIHNyYz86IHN0cmluZztcbiAgICB0eXBlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgRWNsR2FsbGVyeU1lZGlhVHJhY2sge1xuICAgIHNyYz86IHN0cmluZztcbiAgICBraW5kPzogc3RyaW5nO1xuICAgIHNyY0xhbmc/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBFY2xHYWxsZXJ5UGljdHVyZVNvdXJjZSB7XG4gICAgc3Jjc2V0PyA6IHN0cmluZztcbiAgICBtZWRpYT8gOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBFY2xHYWxsZXJ5UGljdHVyZUltYWdlIHtcbiAgICBzcmM/IDogc3RyaW5nO1xuICAgIGFsdD8gOiBzdHJpbmc7XG4gICAgbG9hZGluZz86IHN0cmluZztcbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZWNsR2FsbGVyeU1lZGlhXSwgW2VjbEdhbGxlcnlJbWFnZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBFY2xHYWxsZXJ5TWVkaWFEaXJlY3RpdmUgZXh0ZW5kcyBFQ0xCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBwb3N0ZXI6IHN0cmluZztcbiAgICBzb3VyY2VzOiBBcnJheTxFY2xHYWxsZXJ5TWVkaWFTb3VyY2U+ID0gW107XG4gICAgdHJhY2tzOiBBcnJheTxFY2xHYWxsZXJ5TWVkaWFUcmFjaz4gPSBbXTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbc3VwZXIuZ2V0Q3NzQ2xhc3NlcygnZWNsLWdhbGxlcnlfX2ltYWdlJyldLmpvaW4oJyAnKS50cmltKCk7XG4gICAgfVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZWNsLXZpZGVvJykgaXNWaWRlbyA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVHYWxsZXJ5TWVkaWFDaGlsZHJlbigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGVja0lzVmlkZW8oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrSXNWaWRlbygpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0b3IgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQudGFnTmFtZTtcbiAgICAgICAgdGhpcy5pc1ZpZGVvID0gc2VsZWN0b3IgPT09ICdWSURFTyc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVHYWxsZXJ5TWVkaWFDaGlsZHJlbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmdldEhvc3RFbGVtZW50KCkuaGFzQ2hpbGROb2Rlcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5jaGlsZE5vZGVzLmZvckVhY2goKGVsOiBIVE1MSW5wdXRFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoZWwubm9kZU5hbWUgPT09ICdTT1VSQ0UnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVkaWFTb3VyY2UgPSBuZXcgRWNsR2FsbGVyeU1lZGlhU291cmNlKCk7XG4gICAgICAgICAgICAgICAgbWVkaWFTb3VyY2Uuc3JjID0gZWwuZ2V0QXR0cmlidXRlKCdzcmMnKTtcbiAgICAgICAgICAgICAgICBtZWRpYVNvdXJjZS50eXBlID0gZWwuZ2V0QXR0cmlidXRlKCd0eXBlJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zb3VyY2VzLnB1c2gobWVkaWFTb3VyY2UpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChlbC5ub2RlTmFtZSA9PT0gJ1RSQUNLJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lZGlhVHJhY2sgPSBuZXcgRWNsR2FsbGVyeU1lZGlhVHJhY2soKTtcbiAgICAgICAgICAgICAgICBtZWRpYVRyYWNrLnNyYyA9IGVsLmdldEF0dHJpYnV0ZSgnc3JjJyk7XG4gICAgICAgICAgICAgICAgbWVkaWFUcmFjay5raW5kID0gZWwuZ2V0QXR0cmlidXRlKCdraW5kJyk7XG4gICAgICAgICAgICAgICAgbWVkaWFUcmFjay5zcmNMYW5nID0gZWwuZ2V0QXR0cmlidXRlKCdzcmNMYW5nJyk7XG4gICAgICAgICAgICAgICAgbWVkaWFUcmFjay5sYWJlbCA9IGVsLmdldEF0dHJpYnV0ZSgnbGFiZWwnKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYWNrcy5wdXNoKG1lZGlhVHJhY2spO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEhvc3RFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICAgIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdwaWN0dXJlW2VjbEdhbGxlcnlQaWN0dXJlXScsXG59KVxuZXhwb3J0IGNsYXNzIEVjbEdhbGxlcnlQaWN0dXJlRGlyZWN0aXZlIGV4dGVuZHMgRUNMQmFzZURpcmVjdGl2ZSB7XG5cbiAgICBpc1RodW1ibmFpbCA9IGZhbHNlO1xuICAgIHNvdXJjZXM6IEFycmF5PEVjbEdhbGxlcnlQaWN0dXJlU291cmNlPiA9IFtdO1xuICAgIGltZzogRWNsR2FsbGVyeVBpY3R1cmVJbWFnZSA9e307XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBnZXQgY3NzQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gW3N1cGVyLmdldENzc0NsYXNzZXMoJ2VjbC1waWN0dXJlJyksIHRoaXMuaXNUaHVtYm5haWwgPyAnZWNsLWdhbGxlcnlfX3RodW1ibmFpbCc6ICdlY2wtZ2FsbGVyeV9fcGljdHVyZSddLmpvaW4oJyAnKS50cmltKCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlR2FsbGVyeVBpY3R1cmVDaGlsZHJlbigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUdhbGxlcnlQaWN0dXJlQ2hpbGRyZW4oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5nZXRIb3N0RWxlbWVudCgpLmhhc0NoaWxkTm9kZXMoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5jaGlsZE5vZGVzLmZvckVhY2goKGVsOiBIVE1MU291cmNlRWxlbWVudCB8IEhUTUxJbWFnZUVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChlbC5ub2RlTmFtZSA9PT0gJ1NPVVJDRScpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwaWN0dXJlU291cmNlID0gbmV3IEVjbEdhbGxlcnlQaWN0dXJlU291cmNlKCk7XG4gICAgICAgICAgICAgICAgcGljdHVyZVNvdXJjZS5zcmNzZXQgPSBlbC5nZXRBdHRyaWJ1dGUoJ3NyY3NldCcpO1xuICAgICAgICAgICAgICAgIHBpY3R1cmVTb3VyY2UubWVkaWEgPSBlbC5nZXRBdHRyaWJ1dGUoJ21lZGlhJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zb3VyY2VzLnB1c2gocGljdHVyZVNvdXJjZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGVsLm5vZGVOYW1lID09PSAnSU1HJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGltYWdlU291cmNlID0gbmV3IEVjbEdhbGxlcnlQaWN0dXJlSW1hZ2UoKTtcbiAgICAgICAgICAgICAgICBpbWFnZVNvdXJjZS5zcmMgPSBlbC5nZXRBdHRyaWJ1dGUoJ3NyYycpO1xuICAgICAgICAgICAgICAgIGltYWdlU291cmNlLmFsdCA9IGVsLmdldEF0dHJpYnV0ZSgnYWx0Jyk7XG4gICAgICAgICAgICAgICAgaW1hZ2VTb3VyY2UubG9hZGluZyA9IGVsLmdldEF0dHJpYnV0ZSgnbG9hZGluZycpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW1nLnNyYyA9IGltYWdlU291cmNlLnNyYztcbiAgICAgICAgICAgICAgICB0aGlzLmltZy5hbHQgPSBpbWFnZVNvdXJjZS5hbHQ7XG4gICAgICAgICAgICAgICAgdGhpcy5pbWcubG9hZGluZyA9IGltYWdlU291cmNlLmxvYWRpbmc7XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEhvc3RFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudDtcbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAncGljdHVyZVtlY2xHYWxsZXJ5VGh1bWJuYWlsXScsXG59KVxuZXhwb3J0IGNsYXNzIEVjbEdhbGxlcnlUaHVtYm5haWxEaXJlY3RpdmUgZXh0ZW5kcyBFQ0xCYXNlRGlyZWN0aXZlIHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBnZXQgY3NzQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gW3N1cGVyLmdldENzc0NsYXNzZXMoJ2VjbC1waWN0dXJlIGVjbC1nYWxsZXJ5X190aHVtYm5haWwnKV0uam9pbignICcpLnRyaW0oKTtcbiAgICB9XG59XG4iXX0=
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLWdhbGxlcnktbWVkaWEuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2VjbC1nYWxsZXJ5L2VjbC1nYWxsZXJ5LW1lZGlhLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBYyxXQUFXLEVBQUUsS0FBSyxFQUFVLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFFekQsTUFBTSxPQUFPLHFCQUFxQjtDQUdqQztBQUVELE1BQU0sT0FBTyxvQkFBb0I7Q0FLaEM7QUFFRCxNQUFNLE9BQU8sdUJBQXVCO0NBR25DO0FBRUQsTUFBTSxPQUFPLHNCQUFzQjtDQUlsQztBQUtELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxnQkFBZ0I7SUFNMUQsSUFDSSxVQUFVO1FBQ1YsT0FBTztZQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUM7WUFDekMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUN4RCxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBR0QsWUFBb0IsRUFBYztRQUM5QixLQUFLLEVBQUUsQ0FBQztRQURRLE9BQUUsR0FBRixFQUFFLENBQVk7UUFiTSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3hELFlBQU8sR0FBaUMsRUFBRSxDQUFDO1FBQzNDLFdBQU0sR0FBZ0MsRUFBRSxDQUFDO1FBU1QsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUk1QyxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ2pCLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ3RDLENB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QUcsV0FBVyxDQUFDLEdBQUcsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQztZQUUzQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxjQUFjO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7SUFDakMsQ0FBQzs4R0E3Q1EsMEJBQTBCO2tHQUExQiwwQkFBMEI7OzJGQUExQiwwQkFBMEI7a0JBSHRDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDRCQUE0QjtpQkFDekM7K0dBU08sVUFBVTtzQkFEYixXQUFXO3VCQUFDLE9BQU87O0FBNEN4QixNQUFNLE9BQU8sNEJBQTZCLFNBQVEsZ0JBQWdCO0lBSGxFOztRQVFvRixZQUFPLEdBQUcsS0FBSyxDQUFDO0tBQ25HO0lBTEcsSUFDSSxVQUFVO1FBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsb0NBQW9DLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4RixDQUFDOzhHQUpRLDRCQUE0QjtrR0FBNUIsNEJBQTRCLHNGQUtqQixnQkFBZ0I7OzJGQUwzQiw0QkFBNEI7a0JBSHhDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDhCQUE4QjtpQkFDM0M7OEJBR08sVUFBVTtzQkFEYixXQUFXO3VCQUFDLE9BQU87Z0JBSTRELE9BQU87c0JBQXRGLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7O3NCQUFHLFdBQVc7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIGFmdGVyTmV4dFJlbmRlciwgYm9vbGVhbkF0dHJpYnV0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRUNMQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4uL2VjbC1iYXNlLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCBjbGFzcyBFY2xHYWxsZXJ5TWVkaWFTb3VyY2Uge1xuICAgIHNyYz86IHN0cmluZztcbiAgICB0eXBlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgRWNsR2FsbGVyeU1lZGlhVHJhY2sge1xuICAgIHNyYz86IHN0cmluZztcbiAgICBraW5kPzogc3RyaW5nO1xuICAgIHNyY0xhbmc/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBFY2xHYWxsZXJ5UGljdHVyZVNvdXJjZSB7XG4gICAgc3Jjc2V0PyA6IHN0cmluZztcbiAgICBtZWRpYT8gOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBFY2xHYWxsZXJ5UGljdHVyZUltYWdlIHtcbiAgICBzcmM/IDogc3RyaW5nO1xuICAgIGFsdD8gOiBzdHJpbmc7XG4gICAgbG9hZGluZz86IHN0cmluZztcbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZWNsR2FsbGVyeU1lZGlhXSwgW2VjbEdhbGxlcnlJbWFnZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBFY2xHYWxsZXJ5TWVkaWFEaXJlY3RpdmUgZXh0ZW5kcyBFQ0xCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBwb3N0ZXI6IHN0cmluZztcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGFzWm9vbSA9IGZhbHNlO1xuICAgIHNvdXJjZXM6IEFycmF5PEVjbEdhbGxlcnlNZWRpYVNvdXJjZT4gPSBbXTtcbiAgICB0cmFja3M6IEFycmF5PEVjbEdhbGxlcnlNZWRpYVRyYWNrPiA9IFtdO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHN1cGVyLmdldENzc0NsYXNzZXMoJ2VjbC1nYWxsZXJ5X19pbWFnZScpLFxuICAgICAgICAgICAgdGhpcy5oYXNab29tICYmIHRoaXMuaXNWaWRlbyA/ICdlY2wtdmlkZW8tLXpvb20nIDogJycsXG4gICAgICAgIF0uam9pbignICcpLnRyaW0oKTtcbiAgICB9XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5lY2wtdmlkZW8nKSBpc1ZpZGVvID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUdhbGxlcnlNZWRpYUNoaWxkcmVuKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoZWNrSXNWaWRlbygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tJc1ZpZGVvKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWxlY3RvciA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC50YWdOYW1lO1xuICAgICAgICB0aGlzLmlzVmlkZW8gPSBzZWxlY3RvciA9PT0gJ1ZJREVPJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUdhbGxlcnlNZWRpYUNoaWxkcmVuKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5oYXNDaGlsZE5vZGVzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nZXRIb3N0RWxlbWVudCgpLmNoaWxkTm9kZXMuZm9yRWFjaCgoZWw6IEhUTUxJbnB1dEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChlbC5ub2RlTmFtZSA9PT0gJ1NPVVJDRScpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZWRpYVNvdXJjZSA9IG5ldyBFY2xHYWxsZXJ5TWVkaWFTb3VyY2UoKTtcbiAgICAgICAgICAgICAgICBtZWRpYVNvdXJjZS5zcmMgPSBlbC5nZXRBdHRyaWJ1dGUoJ3NyYycpO1xuICAgICAgICAgICAgICAgIG1lZGlhU291cmNlLnR5cGUgPSBlbC5nZXRBdHRyaWJ1dGUoJ3R5cGUnKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZXMucHVzaChtZWRpYVNvdXJjZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGVsLm5vZGVOYW1lID09PSAnVFJBQ0snKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVkaWFUcmFjayA9IG5ldyBFY2xHYWxsZXJ5TWVkaWFUcmFjaygpO1xuICAgICAgICAgICAgICAgIG1lZGlhVHJhY2suc3JjID0gZWwuZ2V0QXR0cmlidXRlKCdzcmMnKTtcbiAgICAgICAgICAgICAgICBtZWRpYVRyYWNrLmtpbmQgPSBlbC5nZXRBdHRyaWJ1dGUoJ2tpbmQnKTtcbiAgICAgICAgICAgICAgICBtZWRpYVRyYWNrLnNyY0xhbmcgPSBlbC5nZXRBdHRyaWJ1dGUoJ3NyY0xhbmcnKTtcbiAgICAgICAgICAgICAgICBtZWRpYVRyYWNrLmxhYmVsID0gZWwuZ2V0QXR0cmlidXRlKCdsYWJlbCcpO1xuICAgICAgICAgICAgICAgIHRoaXMudHJhY2tzLnB1c2gobWVkaWFUcmFjayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SG9zdEVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ3BpY3R1cmVbZWNsR2FsbGVyeVBpY3R1cmVdJyxcbn0pXG5leHBvcnQgY2xhc3MgRWNsR2FsbGVyeVBpY3R1cmVEaXJlY3RpdmUgZXh0ZW5kcyBFQ0xCYXNlRGlyZWN0aXZlIHtcblxuICAgIC8vIFRPRE86IHRvIGJlIHJlbW92ZWQgaW4gdjE5LiBUaHVtYm5haWwgc2hvdWxkIGJlIGFkZGVkIGJ5IHVzZXIuXG4gICAgaXNUaHVtYm5haWwgPSBmYWxzZTtcbiAgICBzb3VyY2VzOiBBcnJheTxFY2xHYWxsZXJ5UGljdHVyZVNvdXJjZT4gPSBbXTtcbiAgICBpbWc6IEVjbEdhbGxlcnlQaWN0dXJlSW1hZ2UgPXt9O1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtzdXBlci5nZXRDc3NDbGFzc2VzKCdlY2wtcGljdHVyZScpLCB0aGlzLmlzVGh1bWJuYWlsID8gJ2VjbC1nYWxsZXJ5X190aHVtYm5haWwnOiAnZWNsLWdhbGxlcnlfX3BpY3R1cmUnXS5qb2luKCcgJykudHJpbSgpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUdhbGxlcnlQaWN0dXJlQ2hpbGRyZW4oKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVHYWxsZXJ5UGljdHVyZUNoaWxkcmVuKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5oYXNDaGlsZE5vZGVzKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdldEhvc3RFbGVtZW50KCkuY2hpbGROb2Rlcy5mb3JFYWNoKChlbDogSFRNTFNvdXJjZUVsZW1lbnQgfCBIVE1MSW1hZ2VFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoZWwubm9kZU5hbWUgPT09ICdTT1VSQ0UnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGljdHVyZVNvdXJjZSA9IG5ldyBFY2xHYWxsZXJ5UGljdHVyZVNvdXJjZSgpO1xuICAgICAgICAgICAgICAgIHBpY3R1cmVTb3VyY2Uuc3Jjc2V0ID0gZWwuZ2V0QXR0cmlidXRlKCdzcmNzZXQnKTtcbiAgICAgICAgICAgICAgICBwaWN0dXJlU291cmNlLm1lZGlhID0gZWwuZ2V0QXR0cmlidXRlKCdtZWRpYScpO1xuICAgICAgICAgICAgICAgIHRoaXMuc291cmNlcy5wdXNoKHBpY3R1cmVTb3VyY2UpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChlbC5ub2RlTmFtZSA9PT0gJ0lNRycpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbWFnZVNvdXJjZSA9IG5ldyBFY2xHYWxsZXJ5UGljdHVyZUltYWdlKCk7XG4gICAgICAgICAgICAgICAgaW1hZ2VTb3VyY2Uuc3JjID0gZWwuZ2V0QXR0cmlidXRlKCdzcmMnKTtcbiAgICAgICAgICAgICAgICBpbWFnZVNvdXJjZS5hbHQgPSBlbC5nZXRBdHRyaWJ1dGUoJ2FsdCcpO1xuICAgICAgICAgICAgICAgIGltYWdlU291cmNlLmxvYWRpbmcgPSBlbC5nZXRBdHRyaWJ1dGUoJ2xvYWRpbmcnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmltZy5zcmMgPSBpbWFnZVNvdXJjZS5zcmM7XG4gICAgICAgICAgICAgICAgdGhpcy5pbWcuYWx0ID0gaW1hZ2VTb3VyY2UuYWx0O1xuICAgICAgICAgICAgICAgIHRoaXMuaW1nLmxvYWRpbmcgPSBpbWFnZVNvdXJjZS5sb2FkaW5nO1xuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRIb3N0RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ3BpY3R1cmVbZWNsR2FsbGVyeVRodW1ibmFpbF0nLFxufSlcbmV4cG9ydCBjbGFzcyBFY2xHYWxsZXJ5VGh1bWJuYWlsRGlyZWN0aXZlIGV4dGVuZHMgRUNMQmFzZURpcmVjdGl2ZSB7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtzdXBlci5nZXRDc3NDbGFzc2VzKCdlY2wtcGljdHVyZSBlY2wtZ2FsbGVyeV9fdGh1bWJuYWlsJyldLmpvaW4oJyAnKS50cmltKCk7XG4gICAgfVxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBASG9zdEJpbmRpbmcoJ2NsYXNzLmVjbC1waWN0dXJlLS16b29tJykgaGFzWm9vbSA9IGZhbHNlO1xufVxuIl19
|
|
@@ -43,7 +43,7 @@ export class EclGalleryComponent extends ECLBaseDirective {
|
|
|
43
43
|
return [super.getCssClasses('ecl-gallery'),
|
|
44
44
|
this.isFullWidth ? 'ecl-gallery--full-width' : '',
|
|
45
45
|
this.isGrid ? 'ecl-gallery--grid' : '',
|
|
46
|
-
this.isGrid ? `ecl-gallery--
|
|
46
|
+
this.isGrid ? `ecl-gallery--template-${this.gridTemplate}` : '',
|
|
47
47
|
this.isGrid ? `ecl-gallery--ratio-${this.ratio}` : '',
|
|
48
48
|
!this.isShowTitleOnHover ? 'ecl-gallery--no-hover' : '',
|
|
49
49
|
].join(' ').trim();
|
|
@@ -58,10 +58,11 @@ export class EclGalleryComponent extends ECLBaseDirective {
|
|
|
58
58
|
this.isNoOverlay = false;
|
|
59
59
|
this.isShowTitleOnHover = true;
|
|
60
60
|
this.isGrid = false;
|
|
61
|
-
this.column = 3;
|
|
62
61
|
/**
|
|
63
62
|
* @deprecated Not used anymore. To be removed in v19.
|
|
64
63
|
*/
|
|
64
|
+
this.column = 3;
|
|
65
|
+
this.gridTemplate = '0';
|
|
65
66
|
this.ratio = '3-2';
|
|
66
67
|
/**
|
|
67
68
|
* @deprecated Not used anymore. To be removed in v19.
|
|
@@ -289,7 +290,7 @@ export class EclGalleryComponent extends ECLBaseDirective {
|
|
|
289
290
|
.map(item => item.videoLabel = this.videoLabel);
|
|
290
291
|
}
|
|
291
292
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: EclGalleryComponent, deps: [{ token: i1.BreakpointObserver }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
292
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: EclGalleryComponent, selector: "ecl-gallery", inputs: { isOpenInFullScreenPossible: ["isOpenInFullScreenPossible", "isOpenInFullScreenPossible", booleanAttribute], isShareable: ["isShareable", "isShareable", booleanAttribute], isFullWidth: ["isFullWidth", "isFullWidth", booleanAttribute], isNoOverlay: ["isNoOverlay", "isNoOverlay", booleanAttribute], isShowTitleOnHover: ["isShowTitleOnHover", "isShowTitleOnHover", booleanAttribute], maxVisibleItems: ["maxVisibleItems", "maxVisibleItems", numberAttribute], isGrid: ["isGrid", "isGrid", booleanAttribute], column: ["column", "column", numberAttribute], ratio: "ratio", galleryPlayerTitle: "galleryPlayerTitle", videoAriaLabel: "videoAriaLabel", videoLabel: "videoLabel" }, outputs: { show: "show", hide: "hide", openFullScreen: "openFullScreen", share: "share", itemSwitch: "itemSwitch" }, host: { listeners: { "document:keydown.escape": "onEscapeKeydownHandler($event)", "window:resize": "iframeResize($event)" }, properties: { "class": "this.cssClasses", "attr.role": "this.role" } }, queries: [{ propertyName: "galleryFooter", first: true, predicate: EclGalleryFooterComponent, descendants: true }, { propertyName: "galleryItems", predicate: EclGalleryItemComponent }], viewQueries: [{ propertyName: "overlayChild", first: true, predicate: ["overlay"], descendants: true }, { propertyName: "headerChild", first: true, predicate: ["header"], descendants: true }, { propertyName: "footerChild", first: true, predicate: ["footer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ul class=\"ecl-gallery__list\">\n <ng-content></ng-content>\n</ul>\n\n<ng-content select=\"ecl-gallery-footer\"></ng-content>\n\n<dialog #overlay [attr.open]=\"isDialogVisible || null\" class=\"ecl-gallery__overlay\"\n [attr.aria-label]=\"'ecl.gallery.FULL-SIZE-DISPLAY' | translate\">\n <header #header class=\"ecl-gallery__close\">\n <button (click)=\"onClose($event)\" eclButton class=\"ecl-gallery__close-button\" isIconOnly variant=\"ghost\">\n <span eclButtonLabel>\n {{ 'ecl.common.CLOSE' | translate }}\n </span>\n <ecl-icon icon=\"close\" size=\"m\"></ecl-icon>\n </button>\n </header>\n <section class=\"ecl-gallery__slider\">\n <div class=\"ecl-gallery__slider-media-container\">\n @if(item?.isExternalVideo) {\n <div class=\"ecl-gallery__slider-embed\">\n @if (item?.srVideoAudioDescription) {\n <div class=\"ecl-gallery__slider-embed-audio\">{{item?.srVideoAudioDescription}}</div>\n }\n <iframe [src]=\"item?.getUrlExternalVideo()\" [style.width.px]=\"getIframeWidth()\"\n [style.height.px]=\"getIframeHeight()\" [attr.title]=\"item.title + ' - Video player'\" frameborder=\"0\">\n </iframe>\n </div>\n }\n @if(item?.isImage) {\n <picture class=\"ecl-picture ecl-gallery__picture ecl-gallery__slider-image\">\n @for(el of item.galleryPicture?.sources; track el.srcset) {\n <source [attr.srcset]=\"el.srcset\" [attr.media]=\" el.media\">\n }\n <img [attr.alt]=\"item?.galleryPicture?.img.alt || null\"\n [src]=\"item?.galleryPicture?.img.src\"\n [attr.loading]=\"item?.galleryPicture?.img.loading || null\" />\n </picture>\n }\n @if(item?.isVideo) {\n <video controls=\"controls\" class=\"ecl-gallery__slider-video\" [attr.aria-label]=\"item.title + ' - Video player'\"\n [attr.poster]=\"item.mediaChild?.poster\">\n @for (el of item.mediaChild?.sources; track el.src) {\n <source [attr.src]=\"el.src\" [attr.type]=\"el.type\" />\n }\n @for (elem of item.mediaChild?.tracks; track elem.src) {\n <track [attr.src]=\"elem.src\" [attr.kind]=\"elem.kind\" [attr.srcLang]=\"elem.srcLang\"\n [attr.label]=\"elem.label\" />\n }\n </video>\n }\n </div>\n </section>\n <footer #footer class=\"ecl-gallery__detail\">\n <div class=\"ecl-container\">\n <div class=\"ecl-gallery__detail-container\">\n <div class=\"ecl-gallery__pager\">\n <div class=\"ecl-gallery__detail-counter\">\n <span>{{ itemIndex }}</span> {{ 'ecl.common.OF' | translate }} <span>{{ itemsCount }}</span>\n </div>\n <div class=\"ecl-gallery__controls\">\n <button eclButton class=\"ecl-gallery__slider-previous\" variant=\"tertiary\" isIconOnly\n (click)=\"onPrevious($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"m\" transform=\"rotate-270\"></ecl-icon>\n <span eclButtonLabel>\n {{ 'ecl.common.PREVIOUS' | translate }}\n </span>\n </button>\n <button eclButton class=\"ecl-gallery__slider-next\" variant=\"tertiary\" isIconOnly\n (click)=\"onNext($event)\">\n <span eclButtonLabel>\n {{ 'ecl.common.NEXT' | translate }}\n </span>\n <ecl-icon icon=\"corner-arrow\" size=\"m\" transform=\"rotate-90\"></ecl-icon>\n </button>\n </div>\n </div>\n <div class=\"ecl-gallery__detail-actions\">\n <ng-container *ngTemplateOutlet=\"links\"></ng-container>\n </div>\n </div>\n <div class=\"ecl-gallery__detail-description\">\n @if(isMobile) {\n <div class=\"ecl-gallery__detail-actions-mobile\">\n <ng-container *ngTemplateOutlet=\"links\"></ng-container>\n </div>\n }\n @if(item?.title) {\n <span class=\"ecl-gallery__title\" [id]=\"item?.itemId\">{{ item?.title }}</span>\n }\n @if(item?.description) {\n <span class=\"ecl-gallery__caption\">{{ item?.description }}</span>\n }\n @if(item?.meta) {\n <span class=\"ecl-gallery__meta\">{{ item?.meta }}</span>\n }\n </div>\n </div>\n </footer>\n</dialog>\n\n<ng-template #links>\n @if(canBeOpenInFullScreen()) {\n <a eclLink [attr.aria-describedby]=\"item?.titleId\" variant=\"standalone\"\n class=\"ecl-gallery__download\" [href]=\"item?.getDownloadLink()\" target=\"_blank\"\n (click)=\"onFullScreenOpen($event)\" isInverted>\n <span eclLinkLabel>{{ 'ecl.gallery.VIEW-ORIGINAL' | translate }}</span>\n <ecl-icon icon=\"fullscreen\" size=\"fluid\" focusable=\"false\"></ecl-icon>\n </a>\n }\n @if(canBeShared()) {\n <a [attr.aria-describedby]=\"item?.titleId\" eclLink variant=\"standalone\" isInverted\n class=\"ecl-gallery__share\" href=\"\" (click)=\"onShare($event)\">\n <span eclLinkLabel>{{ 'ecl.common.SHARE' | translate }}</span>\n <ecl-icon icon=\"share\" size=\"fluid\" focusable=\"false\"></ecl-icon>\n </a>\n }\n</ng-template>", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["isIconOnly", "variant", "containerStyleClass"] }, { kind: "directive", type: i4.EclButtonLabelDirective, selector: "[eclButtonLabel]" }, { kind: "component", type: i5.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }, { kind: "directive", type: i6.EclLinkDirective, selector: "[eclLink]", inputs: ["isInverted", "isIconOnly", "isNoVisited", "variant"] }, { kind: "directive", type: i7.EclLinkLabelDirective, selector: "[eclLinkLabel]" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] }); }
|
|
293
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: EclGalleryComponent, selector: "ecl-gallery", inputs: { isOpenInFullScreenPossible: ["isOpenInFullScreenPossible", "isOpenInFullScreenPossible", booleanAttribute], isShareable: ["isShareable", "isShareable", booleanAttribute], isFullWidth: ["isFullWidth", "isFullWidth", booleanAttribute], isNoOverlay: ["isNoOverlay", "isNoOverlay", booleanAttribute], isShowTitleOnHover: ["isShowTitleOnHover", "isShowTitleOnHover", booleanAttribute], maxVisibleItems: ["maxVisibleItems", "maxVisibleItems", numberAttribute], isGrid: ["isGrid", "isGrid", booleanAttribute], column: ["column", "column", numberAttribute], gridTemplate: "gridTemplate", ratio: "ratio", galleryPlayerTitle: "galleryPlayerTitle", videoAriaLabel: "videoAriaLabel", videoLabel: "videoLabel" }, outputs: { show: "show", hide: "hide", openFullScreen: "openFullScreen", share: "share", itemSwitch: "itemSwitch" }, host: { listeners: { "document:keydown.escape": "onEscapeKeydownHandler($event)", "window:resize": "iframeResize($event)" }, properties: { "class": "this.cssClasses", "attr.role": "this.role" } }, queries: [{ propertyName: "galleryFooter", first: true, predicate: EclGalleryFooterComponent, descendants: true }, { propertyName: "galleryItems", predicate: EclGalleryItemComponent }], viewQueries: [{ propertyName: "overlayChild", first: true, predicate: ["overlay"], descendants: true }, { propertyName: "headerChild", first: true, predicate: ["header"], descendants: true }, { propertyName: "footerChild", first: true, predicate: ["footer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ul class=\"ecl-gallery__list\">\n <ng-content></ng-content>\n</ul>\n\n<ng-content select=\"ecl-gallery-footer\"></ng-content>\n\n<dialog #overlay [attr.open]=\"isDialogVisible || null\" class=\"ecl-gallery__overlay\"\n [attr.aria-label]=\"'ecl.gallery.FULL-SIZE-DISPLAY' | translate\">\n <header #header class=\"ecl-gallery__close\">\n <button (click)=\"onClose($event)\" eclButton class=\"ecl-gallery__close-button\" isIconOnly variant=\"ghost\">\n <span eclButtonLabel>\n {{ 'ecl.common.CLOSE' | translate }}\n </span>\n <ecl-icon icon=\"close\" size=\"m\"></ecl-icon>\n </button>\n </header>\n <section class=\"ecl-gallery__slider\">\n <div class=\"ecl-gallery__slider-media-container\">\n @if(item?.isExternalVideo) {\n <div class=\"ecl-gallery__slider-embed\">\n @if (item?.srVideoAudioDescription) {\n <div class=\"ecl-gallery__slider-embed-audio\">{{item?.srVideoAudioDescription}}</div>\n }\n <iframe [src]=\"item?.getUrlExternalVideo()\" [style.width.px]=\"getIframeWidth()\"\n [style.height.px]=\"getIframeHeight()\" [attr.title]=\"item.title + ' - Video player'\" frameborder=\"0\">\n </iframe>\n </div>\n }\n @if(item?.isImage) {\n <picture class=\"ecl-picture ecl-gallery__picture ecl-gallery__slider-image\">\n @for(el of item.galleryPicture?.sources; track el.srcset) {\n <source [attr.srcset]=\"el.srcset\" [attr.media]=\" el.media\">\n }\n <img [attr.alt]=\"item?.galleryPicture?.img.alt || null\"\n [src]=\"item?.galleryPicture?.img.src\"\n [attr.loading]=\"item?.galleryPicture?.img.loading || null\" />\n </picture>\n }\n @if(item?.isVideo) {\n <video controls=\"controls\" class=\"ecl-gallery__slider-video\" [attr.aria-label]=\"item.title + ' - Video player'\"\n [attr.poster]=\"item.mediaChild?.poster\">\n @for (el of item.mediaChild?.sources; track el.src) {\n <source [attr.src]=\"el.src\" [attr.type]=\"el.type\" />\n }\n @for (elem of item.mediaChild?.tracks; track elem.src) {\n <track [attr.src]=\"elem.src\" [attr.kind]=\"elem.kind\" [attr.srcLang]=\"elem.srcLang\"\n [attr.label]=\"elem.label\" />\n }\n </video>\n }\n </div>\n </section>\n <footer #footer class=\"ecl-gallery__detail\">\n <div class=\"ecl-container\">\n <div class=\"ecl-gallery__detail-container\">\n <div class=\"ecl-gallery__pager\">\n <div class=\"ecl-gallery__detail-counter\">\n <span>{{ itemIndex }}</span> {{ 'ecl.common.OF' | translate }} <span>{{ itemsCount }}</span>\n </div>\n <div class=\"ecl-gallery__controls\">\n <button eclButton class=\"ecl-gallery__slider-previous\" variant=\"tertiary\" isIconOnly\n (click)=\"onPrevious($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"m\" transform=\"rotate-270\"></ecl-icon>\n <span eclButtonLabel>\n {{ 'ecl.common.PREVIOUS' | translate }}\n </span>\n </button>\n <button eclButton class=\"ecl-gallery__slider-next\" variant=\"tertiary\" isIconOnly\n (click)=\"onNext($event)\">\n <span eclButtonLabel>\n {{ 'ecl.common.NEXT' | translate }}\n </span>\n <ecl-icon icon=\"corner-arrow\" size=\"m\" transform=\"rotate-90\"></ecl-icon>\n </button>\n </div>\n </div>\n <div class=\"ecl-gallery__detail-actions\">\n <ng-container *ngTemplateOutlet=\"links\"></ng-container>\n </div>\n </div>\n <div class=\"ecl-gallery__detail-description\">\n @if(isMobile) {\n <div class=\"ecl-gallery__detail-actions-mobile\">\n <ng-container *ngTemplateOutlet=\"links\"></ng-container>\n </div>\n }\n @if(item?.title) {\n <span class=\"ecl-gallery__title\" [id]=\"item?.itemId\">{{ item?.title }}</span>\n }\n @if(item?.description) {\n <span class=\"ecl-gallery__caption\">{{ item?.description }}</span>\n }\n @if(item?.meta) {\n <span class=\"ecl-gallery__meta\">{{ item?.meta }}</span>\n }\n </div>\n </div>\n </footer>\n</dialog>\n\n<ng-template #links>\n @if(canBeOpenInFullScreen()) {\n <a eclLink [attr.aria-describedby]=\"item?.titleId\" variant=\"standalone\"\n class=\"ecl-gallery__download\" [href]=\"item?.getDownloadLink()\" target=\"_blank\"\n (click)=\"onFullScreenOpen($event)\" isInverted>\n <span eclLinkLabel>{{ 'ecl.gallery.VIEW-ORIGINAL' | translate }}</span>\n <ecl-icon icon=\"fullscreen\" size=\"fluid\" focusable=\"false\"></ecl-icon>\n </a>\n }\n @if(canBeShared()) {\n <a [attr.aria-describedby]=\"item?.titleId\" eclLink variant=\"standalone\" isInverted\n class=\"ecl-gallery__share\" href=\"\" (click)=\"onShare($event)\">\n <span eclLinkLabel>{{ 'ecl.common.SHARE' | translate }}</span>\n <ecl-icon icon=\"share\" size=\"fluid\" focusable=\"false\"></ecl-icon>\n </a>\n }\n</ng-template>", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["isIconOnly", "variant", "containerStyleClass"] }, { kind: "directive", type: i4.EclButtonLabelDirective, selector: "[eclButtonLabel]" }, { kind: "component", type: i5.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }, { kind: "directive", type: i6.EclLinkDirective, selector: "[eclLink]", inputs: ["isInverted", "isIconOnly", "isNoVisited", "variant"] }, { kind: "directive", type: i7.EclLinkLabelDirective, selector: "[eclLinkLabel]" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] }); }
|
|
293
294
|
}
|
|
294
295
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: EclGalleryComponent, decorators: [{
|
|
295
296
|
type: Component,
|
|
@@ -321,6 +322,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
321
322
|
}], column: [{
|
|
322
323
|
type: Input,
|
|
323
324
|
args: [{ transform: numberAttribute }]
|
|
325
|
+
}], gridTemplate: [{
|
|
326
|
+
type: Input
|
|
324
327
|
}], ratio: [{
|
|
325
328
|
type: Input
|
|
326
329
|
}], galleryPlayerTitle: [{
|
|
@@ -367,4 +370,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
367
370
|
type: HostListener,
|
|
368
371
|
args: ['window:resize', ['$event']]
|
|
369
372
|
}] } });
|
|
370
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLWdhbGxlcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2VjbC1nYWxsZXJ5L2VjbC1nYWxsZXJ5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtZ2FsbGVyeS9lY2wtZ2FsbGVyeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXNCLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFFSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFFZixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFDTixXQUFXLEVBRVgsU0FBUyxFQUNULGdCQUFnQixFQUNoQixlQUFlLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7QUFFcEQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFlBQVk7Q0FBRztBQUN4RCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsWUFBWTtDQUFHO0FBQ3hELE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxZQUFZO0lBQ3ZELFlBQW1C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QUEvQixTQUFTO3VCQUFDLFFBQVE7Z0JBQ0UsV0FBVztzQkFBL0IsU0FBUzt1QkFBQyxRQUFRO2dCQUdmLFVBQVU7c0JBRGIsV0FBVzt1QkFBQyxPQUFPO2dCQVVNLElBQUk7c0JBQTdCLFdBQVc7dUJBQUMsV0FBVztnQkEyRnhCLHNCQUFzQjtzQkFEckIsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFzQ25ELFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBQTEFURk9STV9JRCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgbnVtYmVyQXR0cmlidXRlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIGRlbGF5IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFY2xCYXNlRXZlbnQgfSBmcm9tICcuLi8uLi9tb2RlbC9lY2wtYmFzZS5ldmVudCc7XG5pbXBvcnQgeyBFY2xHYWxsZXJ5SXRlbSB9IGZyb20gJy4uLy4uL21vZGVsL2VjbC1nYWxsZXJ5LWl0ZW0ubW9kZWwnO1xuaW1wb3J0IHsgRUNMQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4uL2VjbC1iYXNlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBFY2xHYWxsZXJ5Rm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9lY2wtZ2FsbGVyeS1mb290ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEVjbEdhbGxlcnlJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9lY2wtZ2FsbGVyeS1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmV4cG9ydCBjbGFzcyBFY2xHYWxsZXJ5U2hvd0V2ZW50IGV4dGVuZHMgRWNsQmFzZUV2ZW50IHt9XG5leHBvcnQgY2xhc3MgRWNsR2FsbGVyeUhpZGVFdmVudCBleHRlbmRzIEVjbEJhc2VFdmVudCB7fVxuZXhwb3J0IGNsYXNzIEVjbEdhbGxlcnlGdWxsU2NyZWVuRXZlbnQgZXh0ZW5kcyBFY2xCYXNlRXZlbnQge1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBnYWxsZXJ5SXRlbTogRWNsR2FsbGVyeUl0ZW0pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRWNsR2FsbGVyeVNoYXJlRXZlbnQgZXh0ZW5kcyBFY2xCYXNlRXZlbnQge1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBnYWxsZXJ5SXRlbTogRWNsR2FsbGVyeUl0ZW0pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFY2xHYWxsZXJ5SXRlbUV2ZW50IGV4dGVuZHMgRWNsQmFzZUV2ZW50IHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZ2FsbGVyeUl0ZW06IEVjbEdhbGxlcnlJdGVtKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VjbC1nYWxsZXJ5JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWNsLWdhbGxlcnkuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlczogW1xuICAgICAgICBgXG4gICAgICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgIGAsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRWNsR2FsbGVyeUNvbXBvbmVudCBleHRlbmRzIEVDTEJhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3ksIE9uSW5pdCB7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNPcGVuSW5GdWxsU2NyZWVuUG9zc2libGUgPSB0cnVlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc1NoYXJlYWJsZSA9IHRydWU7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzRnVsbFdpZHRoID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzTm9PdmVybGF5ID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzU2hvd1RpdGxlT25Ib3ZlciA9IHRydWU7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgbWF4VmlzaWJsZUl0ZW1zOiBudW1iZXI7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzR3JpZCA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIGNvbHVtbjogMiB8IDMgfCA0ID0gMztcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBOb3QgdXNlZCBhbnltb3JlLiBUbyBiZSByZW1vdmVkIGluIHYxOS5cbiAgICAgKi9cbiAgICBASW5wdXQoKSByYXRpbzogJzMtMScgfCAnMy0yJyA9ICczLTInO1xuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIE5vdCB1c2VkIGFueW1vcmUuIFRvIGJlIHJlbW92ZWQgaW4gdjE5LlxuICAgICAqL1xuICAgIEBJbnB1dCgpIGdhbGxlcnlQbGF5ZXJUaXRsZSA9ICdWaWRlbyBQbGF5ZXInO1xuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIE5vdCB1c2VkIGFueW1vcmUuIFRvIGJlIHJlbW92ZWQgaW4gdjE5LlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHZpZGVvQXJpYUxhYmVsID0gJ1ZpZGVvJztcbiAgICBASW5wdXQoKSB2aWRlb0xhYmVsID0gJ1ZpZGVvJztcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICAgIEBPdXRwdXQoKSBzaG93ID0gbmV3IEV2ZW50RW1pdHRlcjxFY2xHYWxsZXJ5U2hvd0V2ZW50PigpO1xuICAgIEBPdXRwdXQoKSBoaWRlID0gbmV3IEV2ZW50RW1pdHRlcjxFY2xHYWxsZXJ5SGlkZUV2ZW50PigpO1xuICAgIEBPdXRwdXQoKSBvcGVuRnVsbFNjcmVlbiA9IG5ldyBFdmVudEVtaXR0ZXI8RWNsR2FsbGVyeUZ1bGxTY3JlZW5FdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgc2hhcmUgPSBuZXcgRXZlbnRFbWl0dGVyPEVjbEdhbGxlcnlTaGFyZUV2ZW50PigpO1xuICAgIEBPdXRwdXQoKSBpdGVtU3dpdGNoID0gbmV3IEV2ZW50RW1pdHRlcjxFY2xHYWxsZXJ5SXRlbUV2ZW50PigpO1xuICAgIEBDb250ZW50Q2hpbGRyZW4oRWNsR2FsbGVyeUl0ZW1Db21wb25lbnQpIGdhbGxlcnlJdGVtczogUXVlcnlMaXN0PEVjbEdhbGxlcnlJdGVtQ29tcG9uZW50PjtcbiAgICBAQ29udGVudENoaWxkKEVjbEdhbGxlcnlGb290ZXJDb21wb25lbnQpIGdhbGxlcnlGb290ZXI6IEVjbEdhbGxlcnlGb290ZXJDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgnb3ZlcmxheScpIG92ZXJsYXlDaGlsZDogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdoZWFkZXInKSBoZWFkZXJDaGlsZDogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdmb290ZXInKSBmb290ZXJDaGlsZDogRWxlbWVudFJlZjtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbc3VwZXIuZ2V0Q3NzQ2xhc3NlcygnZWNsLWdhbGxlcnknKSxcbiAgICAgICAgICAgIHRoaXMuaXNGdWxsV2lkdGggPyAnZWNsLWdhbGxlcnktLWZ1bGwtd2lkdGgnIDogJycsXG4gICAgICAgICAgICB0aGlzLmlzR3JpZCA/ICdlY2wtZ2FsbGVyeS0tZ3JpZCcgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuaXNHcmlkID8gYGVjbC1nYWxsZXJ5LS1jb2wtJHt0aGlzLmNvbHVtbn1gOiAnJyxcbiAgICAgICAgICAgIHRoaXMuaXNHcmlkID8gYGVjbC1nYWxsZXJ5LS1yYXRpby0ke3RoaXMucmF0aW99YDogJycsXG4gICAgICAgICAgICAhdGhpcy5pc1Nob3dUaXRsZU9uSG92ZXIgPyAnZWNsLWdhbGxlcnktLW5vLWhvdmVyJyA6ICcnLFxuICAgICAgICBdLmpvaW4oJyAnKS50cmltKCk7XG4gICAgfVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJykgcm9sZSA9ICdyZWdpb24nO1xuXG4gICAgaXNEaWFsb2dWaXNpYmxlID0gZmFsc2U7XG4gICAgaXNNb2JpbGUgPSBmYWxzZTtcbiAgICBpdGVtc0NvdW50OiBudW1iZXI7XG4gICAgaXRlbUluZGV4OiBudW1iZXI7XG4gICAgaXRlbTogRWNsR2FsbGVyeUl0ZW1Db21wb25lbnQ7XG4gICAgcHJpdmF0ZSBpZnJhbWVXaWR0aDogbnVtYmVyO1xuICAgIHByaXZhdGUgaWZyYW1lSGVpZ2h0OiBudW1iZXI7XG4gICAgcHJpdmF0ZSBCUkVBS1BPSU5UX0NIQU5HRVNfVElNRU9VVCA9IDUwMDtcbiAgICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgICBwcml2YXRlIHZpc2libGVJdGVtczogbnVtYmVyO1xuICAgIHByaXZhdGUgTUFYX1ZJU0lCTEVfSVRFTVNfTU9CSUxFID0gMztcbiAgICBwcml2YXRlIFJFU09MVVRJT05fMTZfOV9QUk9QT1RJT04gPSAxNiAvIDk7XG4gICAgcHJpdmF0ZSBSRVNPTFVUSU9OXzRfM19QUk9QT1RJT04gPSA0IC8gMztcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RrQnJlYWtwb2ludE9ic2VydmVyOiBCcmVha3BvaW50T2JzZXJ2ZXIsIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogb2JqZWN0KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICB0aGlzLm9ic2VydmVCcmVha3BvaW50Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFzc2lnbkxhYmVsVG9WaWRlb0l0ZW1zKCk7XG4gICAgICAgIHRoaXMuaXRlbXNDb3VudCA9IHRoaXMuZ2FsbGVyeUl0ZW1zLmxlbmd0aDtcbiAgICAgICAgdGhpcy52aXNpYmxlSXRlbXMgPSB0aGlzLm1heFZpc2libGVJdGVtcyA/IHRoaXMubWF4VmlzaWJsZUl0ZW1zIDogdGhpcy5pdGVtc0NvdW50O1xuICAgICAgICBpZiAodGhpcy5nYWxsZXJ5Rm9vdGVyKSB7XG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb290ZXIuaXRlbXNDb3VudCA9IHRoaXMuaXRlbXNDb3VudDtcbiAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvb3Rlci5pc1Nob3dUb2dnbGVCdG4gPSB0aGlzLmhhc0hpZGRlbkdhbGVyeUl0ZW1zKCk7XG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb290ZXIudG9nZ2xlSXRlbXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGV2dC5leHBhbmRBbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93QWxsSXRlbXMoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbGxhcHNlSXRlbXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5pc05vT3ZlcmxheSkge1xuICAgICAgICAgICAgdGhpcy5nYWxsZXJ5SXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGl0ZW0uaXRlbUNsaWNrLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0RpYWxvZ1Zpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW0gPSBpdGVtO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1JbmRleCA9IHRoaXMuZmluZEl0ZW1JbmRleCh0aGlzLmdhbGxlcnlJdGVtcy50b0FycmF5KCksIGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3cubmV4dChuZXcgRWNsR2FsbGVyeVNob3dFdmVudCgpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zZXRJZnJhbWVEaW1lbnNpb25zKCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IChpdGVtLmlzTm9PdmVybGF5ID0gdHJ1ZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzSGlkZGVuR2FsZXJ5SXRlbXMoKSkge1xuICAgICAgICAgICAgdGhpcy5jb2xsYXBzZUl0ZW1zKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgb25QcmV2aW91cyhldnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pdGVtID0gdGhpcy5maW5kUHJldmlvdXNJdGVtKHRoaXMuZ2FsbGVyeUl0ZW1zLnRvQXJyYXkoKSwgdGhpcy5pdGVtKTtcblxuICAgICAgICB0aGlzLml0ZW1JbmRleCA9IHRoaXMuZmluZEl0ZW1JbmRleCh0aGlzLmdhbGxlcnlJdGVtcy50b0FycmF5KCksIHRoaXMuaXRlbSk7XG5cbiAgICAgICAgdGhpcy5pdGVtU3dpdGNoLm5leHQobmV3IEVjbEdhbGxlcnlJdGVtRXZlbnQodGhpcy5pdGVtKSk7XG4gICAgfVxuXG4gICAgb25OZXh0KGV2dDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLml0ZW0gPSB0aGlzLmZpbmROZXh0SXRlbSh0aGlzLmdhbGxlcnlJdGVtcy50b0FycmF5KCksIHRoaXMuaXRlbSk7XG4gICAgICAgIHRoaXMuaXRlbUluZGV4ID0gdGhpcy5maW5kSXRlbUluZGV4KHRoaXMuZ2FsbGVyeUl0ZW1zLnRvQXJyYXkoKSwgdGhpcy5pdGVtKTtcblxuICAgICAgICB0aGlzLml0ZW1Td2l0Y2gubmV4dChuZXcgRWNsR2FsbGVyeUl0ZW1FdmVudCh0aGlzLml0ZW0pKTtcbiAgICB9XG5cbiAgICBvbkNsb3NlKGV2dDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLml0ZW0gPSBudWxsO1xuICAgICAgICB0aGlzLml0ZW1JbmRleCA9IC0xO1xuICAgICAgICB0aGlzLmlzRGlhbG9nVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmhpZGUubmV4dChuZXcgRWNsR2FsbGVyeUhpZGVFdmVudCgpKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScsIFsnJGV2ZW50J10pXG4gICAgb25Fc2NhcGVLZXlkb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRGlhbG9nVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmhpZGUubmV4dChuZXcgRWNsR2FsbGVyeUhpZGVFdmVudCgpKTtcbiAgICB9XG5cbiAgICBvbkZ1bGxTY3JlZW5PcGVuKGV2dDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW5GdWxsU2NyZWVuLm5leHQobmV3IEVjbEdhbGxlcnlGdWxsU2NyZWVuRXZlbnQodGhpcy5pdGVtKSk7XG4gICAgfVxuXG4gICAgb25TaGFyZShldnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaGFyZS5uZXh0KG5ldyBFY2xHYWxsZXJ5U2hhcmVFdmVudCh0aGlzLml0ZW0pKTtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgY2FuQmVPcGVuSW5GdWxsU2NyZWVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc09wZW5JbkZ1bGxTY3JlZW5Qb3NzaWJsZSAmJiB0aGlzLml0ZW0/LmlzT3BlbkluRnVsbFNjcmVlblBvc3NpYmxlO1xuICAgIH1cblxuICAgIGNhbkJlU2hhcmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1NoYXJlYWJsZSAmJiB0aGlzLml0ZW0/LmlzU2hhcmVhYmxlO1xuICAgIH1cblxuICAgIGdldElmcmFtZVdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmlmcmFtZVdpZHRoO1xuICAgIH1cblxuICAgIGdldElmcmFtZUhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5pZnJhbWVIZWlnaHQ7XG4gICAgfVxuXG4gICAgc2V0SWZyYW1lRGltZW5zaW9ucygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSB0aGlzLmdldENhbGN1bGF0ZWRJZnJhbWVEaW1lbnNpb25zKCk7XG4gICAgICAgIHRoaXMuaWZyYW1lV2lkdGggPSB3aWR0aDtcbiAgICAgICAgdGhpcy5pZnJhbWVIZWlnaHQgPSBoZWlnaHQ7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gICAgaWZyYW1lUmVzaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldElmcmFtZURpbWVuc2lvbnMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENhbGN1bGF0ZWRJZnJhbWVEaW1lbnNpb25zKCk6IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSB7XG4gICAgICAgIGxldCB3aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICBsZXQgaGVpZ2h0ID1cbiAgICAgICAgICAgIHRoaXMub3ZlcmxheUNoaWxkLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0IC1cbiAgICAgICAgICAgIHRoaXMuaGVhZGVyQ2hpbGQubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgLVxuICAgICAgICAgICAgdGhpcy5mb290ZXJDaGlsZC5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICAgICAgaWYgKHdpZHRoID4gaGVpZ2h0KSB7XG4gICAgICAgICAgICBjb25zdCBzY2FsZWRIZWlnaHQgPSBoZWlnaHQgKiB0aGlzLlJFU09MVVRJT05fMTZfOV9QUk9QT1RJT047XG4gICAgICAgICAgICBpZiAoc2NhbGVkSGVpZ2h0ID4gd2lkdGgpIHtcbiAgICAgICAgICAgICAgICB3aWR0aCA9IHdpZHRoICogMC45NTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgd2lkdGggPSBzY2FsZWRIZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBzY2FsZWRXaXRoID0gd2lkdGggKiB0aGlzLlJFU09MVVRJT05fNF8zX1BST1BPVElPTjtcbiAgICAgICAgICAgIGlmIChzY2FsZWRXaXRoID4gaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0ID0gaGVpZ2h0ICogMC45NTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0ID0gc2NhbGVkV2l0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kSXRlbUluZGV4KGl0ZW1zOiBBcnJheTxFY2xHYWxsZXJ5SXRlbUNvbXBvbmVudD4sIGl0ZW06IEVjbEdhbGxlcnlJdGVtQ29tcG9uZW50KTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbmRJbmRleCgoaXQpID0+IGl0ID09PSBpdGVtKSArIDE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kUHJldmlvdXNJdGVtKGl0ZW1zOiBBcnJheTxFY2xHYWxsZXJ5SXRlbUNvbXBvbmVudD4sIGl0ZW06IEVjbEdhbGxlcnlJdGVtQ29tcG9uZW50KTogRWNsR2FsbGVyeUl0ZW1Db21wb25lbnQge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZmluZFByZXZpb3VzSXRlbUluZGV4KGl0ZW1zLCBpdGVtKTtcbiAgICAgICAgcmV0dXJuIGl0ZW1zW2luZGV4XTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmROZXh0SXRlbShpdGVtczogQXJyYXk8RWNsR2FsbGVyeUl0ZW1Db21wb25lbnQ+LCBpdGVtOiBFY2xHYWxsZXJ5SXRlbUNvbXBvbmVudCk6IEVjbEdhbGxlcnlJdGVtQ29tcG9uZW50IHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmZpbmROZXh0SXRlbUluZGV4KGl0ZW1zLCBpdGVtKTtcbiAgICAgICAgcmV0dXJuIGl0ZW1zW2luZGV4XTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRQcmV2aW91c0l0ZW1JbmRleChpdGVtczogQXJyYXk8RWNsR2FsbGVyeUl0ZW1Db21wb25lbnQ+LCBpdGVtOiBFY2xHYWxsZXJ5SXRlbUNvbXBvbmVudCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGl0ZW1zLmZpbmRJbmRleCgoaXQpID0+IGl0ID09PSBpdGVtKTtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRJbmRleCA9PT0gMCA/IGl0ZW1zLmxlbmd0aCAtIDEgOiBjdXJyZW50SW5kZXggLSAxO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmluZE5leHRJdGVtSW5kZXgoaXRlbXM6IEFycmF5PEVjbEdhbGxlcnlJdGVtQ29tcG9uZW50PiwgaXRlbTogRWNsR2FsbGVyeUl0ZW1Db21wb25lbnQpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSBpdGVtcy5maW5kSW5kZXgoKGl0KSA9PiBpdCA9PT0gaXRlbSk7XG4gICAgICAgIHJldHVybiBjdXJyZW50SW5kZXggPj0gaXRlbXMubGVuZ3RoIC0gMSA/IDAgOiBjdXJyZW50SW5kZXggKyAxO1xuICAgIH1cblxuICAgIHByaXZhdGUgb2JzZXJ2ZUJyZWFrcG9pbnRDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNka0JyZWFrcG9pbnRPYnNlcnZlclxuICAgICAgICAgICAgLm9ic2VydmUoW0JyZWFrcG9pbnRzLkhhbmRzZXQsIEJyZWFrcG9pbnRzLlRhYmxldF0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIGRlbGF5KHRoaXMuQlJFQUtQT0lOVF9DSEFOR0VTX1RJTUVPVVQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc01vYmlsZSA9IHJlc3VsdC5tYXRjaGVzO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFuYWdlSXRlbXNNb2JpbGUoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hbmFnZUl0ZW1zRGVza3RvcCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFuYWdlSXRlbXNNb2JpbGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWF4VmlzaWJsZUl0ZW1zID0gdGhpcy5NQVhfVklTSUJMRV9JVEVNU19NT0JJTEU7XG4gICAgICAgIHRoaXMuY29sbGFwc2VJdGVtcygpO1xuICAgICAgICBpZiAodGhpcy5nYWxsZXJ5Rm9vdGVyKSB7XG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb290ZXIuaXNTaG93VG9nZ2xlQnRuID0gdGhpcy5oYXNIaWRkZW5HYWxlcnlJdGVtcygpO1xuICAgICAgICB9IFxuICAgIH1cblxuICAgIHByaXZhdGUgbWFuYWdlSXRlbXNEZXNrdG9wKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1heFZpc2libGVJdGVtcyA9IHRoaXMudmlzaWJsZUl0ZW1zO1xuICAgICAgICB0aGlzLmdldFZpc2libGVJdGVtcygpLmZvckVhY2goKGVsZW0pID0+IHRoaXMuc2hvd0dhbGVyeUl0ZW0oZWxlbSkpO1xuICAgICAgICB0aGlzLmNvbGxhcHNlSXRlbXMoKTtcbiAgICAgICAgaWYgKHRoaXMuZ2FsbGVyeUZvb3Rlcikge1xuICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9vdGVyLmlzU2hvd1RvZ2dsZUJ0biA9IHRoaXMuaGFzSGlkZGVuR2FsZXJ5SXRlbXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFzSGlkZGVuR2FsZXJ5SXRlbXMoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLm1heFZpc2libGVJdGVtcyAmJiB0aGlzLml0ZW1zQ291bnQgPiAwICYmIHRoaXMubWF4VmlzaWJsZUl0ZW1zIDwgdGhpcy5pdGVtc0NvdW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY29sbGFwc2VJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nZXRIaWRkZW5JdGVtcygpLmZvckVhY2goKGVsZW0pID0+IHRoaXMuaGlkZUdhbGVyeUl0ZW0oZWxlbSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hvd0FsbEl0ZW1zKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBoaWRkZW5JdGVtcyA9IHRoaXMuZ2V0SGlkZGVuSXRlbXMoKTtcbiAgICAgICAgaGlkZGVuSXRlbXMuZm9yRWFjaCgoZWxlbSkgPT4gdGhpcy5zaG93R2FsZXJ5SXRlbShlbGVtKSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gaGlkZGVuSXRlbXNbMF0ub25Gb2N1cygpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhpZGVHYWxlcnlJdGVtKGl0ZW06IEVjbEdhbGxlcnlJdGVtQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGl0ZW0uaXNIaWRkZW4gPSB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hvd0dhbGVyeUl0ZW0oaXRlbTogRWNsR2FsbGVyeUl0ZW1Db21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgaXRlbS5pc0hpZGRlbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SGlkZGVuSXRlbXMoKTogRWNsR2FsbGVyeUl0ZW1Db21wb25lbnRbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdhbGxlcnlJdGVtcy5maWx0ZXIoKGl0ZW0sIGNudCkgPT4gY250ID49IHRoaXMubWF4VmlzaWJsZUl0ZW1zKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBnZXRWaXNpYmxlSXRlbXMoKTogRWNsR2FsbGVyeUl0ZW1Db21wb25lbnRbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdhbGxlcnlJdGVtcy5maWx0ZXIoKGl0ZW0sIGNudCkgPT4gY250IDwgdGhpcy5tYXhWaXNpYmxlSXRlbXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXNzaWduTGFiZWxUb1ZpZGVvSXRlbXMoKTogdm9pZCB7XG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlJdGVtc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoaXRlbSA9PiBpdGVtLm1lZGlhVHlwZSA9PT0gJ3ZpZGVvJylcbiAgICAgICAgICAgICAgICAubWFwKGl0ZW0gPT4gaXRlbS52aWRlb0xhYmVsID0gdGhpcy52aWRlb0xhYmVsKTtcbiAgICAgICAgfVxufVxuIiwiPHVsIGNsYXNzPVwiZWNsLWdhbGxlcnlfX2xpc3RcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L3VsPlxuXG48bmctY29udGVudCBzZWxlY3Q9XCJlY2wtZ2FsbGVyeS1mb290ZXJcIj48L25nLWNvbnRlbnQ+XG5cbjxkaWFsb2cgI292ZXJsYXkgW2F0dHIub3Blbl09XCJpc0RpYWxvZ1Zpc2libGUgfHwgbnVsbFwiIGNsYXNzPVwiZWNsLWdhbGxlcnlfX292ZXJsYXlcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ2VjbC5nYWxsZXJ5LkZVTEwtU0laRS1ESVNQTEFZJyB8IHRyYW5zbGF0ZVwiPlxuICAgIDxoZWFkZXIgI2hlYWRlciBjbGFzcz1cImVjbC1nYWxsZXJ5X19jbG9zZVwiPlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvbkNsb3NlKCRldmVudClcIiBlY2xCdXR0b24gY2xhc3M9XCJlY2wtZ2FsbGVyeV9fY2xvc2UtYnV0dG9uXCIgaXNJY29uT25seSB2YXJpYW50PVwiZ2hvc3RcIj5cbiAgICAgICAgICAgIDxzcGFuIGVjbEJ1dHRvbkxhYmVsPlxuICAgICAgICAgICAgICAgIHt7ICdlY2wuY29tbW9uLkNMT1NFJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGVjbC1pY29uIGljb249XCJjbG9zZVwiIHNpemU9XCJtXCI+PC9lY2wtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9oZWFkZXI+XG4gICAgPHNlY3Rpb24gY2xhc3M9XCJlY2wtZ2FsbGVyeV9fc2xpZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlY2wtZ2FsbGVyeV9fc2xpZGVyLW1lZGlhLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgQGlmKGl0ZW0/LmlzRXh0ZXJuYWxWaWRlbykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVjbC1nYWxsZXJ5X19zbGlkZXItZW1iZWRcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW0/LnNyVmlkZW9BdWRpb0Rlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlY2wtZ2FsbGVyeV9fc2xpZGVyLWVtYmVkLWF1ZGlvXCI+e3tpdGVtPy5zclZpZGVvQXVkaW9EZXNjcmlwdGlvbn19PC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxpZnJhbWUgW3NyY109XCJpdGVtPy5nZXRVcmxFeHRlcm5hbFZpZGVvKClcIiBbc3R5bGUud2lkdGgucHhdPVwiZ2V0SWZyYW1lV2lkdGgoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiZ2V0SWZyYW1lSGVpZ2h0KClcIiBbYXR0ci50aXRsZV09XCJpdGVtLnRpdGxlICsgJyAtIFZpZGVvIHBsYXllcidcIiBmcmFtZWJvcmRlcj1cIjBcIj5cbiAgICAgICAgICAgICAgICA8L2lmcmFtZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmKGl0ZW0/LmlzSW1hZ2UpIHtcbiAgICAgICAgICAgIDxwaWN0dXJlIGNsYXNzPVwiZWNsLXBpY3R1cmUgZWNsLWdhbGxlcnlfX3BpY3R1cmUgZWNsLWdhbGxlcnlfX3NsaWRlci1pbWFnZVwiPlxuICAgICAgICAgICAgICAgIEBmb3IoZWwgb2YgaXRlbS5nYWxsZXJ5UGljdHVyZT8uc291cmNlczsgdHJhY2sgZWwuc3Jjc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIDxzb3VyY2UgW2F0dHIuc3Jjc2V0XT1cImVsLnNyY3NldFwiIFthdHRyLm1lZGlhXT1cIiBlbC5tZWRpYVwiPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8aW1nIFthdHRyLmFsdF09XCJpdGVtPy5nYWxsZXJ5UGljdHVyZT8uaW1nLmFsdCB8fCBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaXRlbT8uZ2FsbGVyeVBpY3R1cmU/LmltZy5zcmNcIlxuICAgICAgICAgICAgICAgICAgICAgW2F0dHIubG9hZGluZ109XCJpdGVtPy5nYWxsZXJ5UGljdHVyZT8uaW1nLmxvYWRpbmcgfHwgbnVsbFwiIC8+XG4gICAgICAgICAgICA8L3BpY3R1cmU+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYoaXRlbT8uaXNWaWRlbykge1xuICAgICAgICAgICAgPHZpZGVvIGNvbnRyb2xzPVwiY29udHJvbHNcIiBjbGFzcz1cImVjbC1nYWxsZXJ5X19zbGlkZXItdmlkZW9cIiBbYXR0ci5hcmlhLWxhYmVsXT1cIml0ZW0udGl0bGUgKyAnIC0gVmlkZW8gcGxheWVyJ1wiXG4gICAgICAgICAgICAgICAgW2F0dHIucG9zdGVyXT1cIml0ZW0ubWVkaWFDaGlsZD8ucG9zdGVyXCI+XG4gICAgICAgICAgICAgICAgQGZvciAoZWwgb2YgaXRlbS5tZWRpYUNoaWxkPy5zb3VyY2VzOyB0cmFjayBlbC5zcmMpIHtcbiAgICAgICAgICAgICAgICA8c291cmNlIFthdHRyLnNyY109XCJlbC5zcmNcIiBbYXR0ci50eXBlXT1cImVsLnR5cGVcIiAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAZm9yIChlbGVtIG9mIGl0ZW0ubWVkaWFDaGlsZD8udHJhY2tzOyB0cmFjayBlbGVtLnNyYykge1xuICAgICAgICAgICAgICAgIDx0cmFjayBbYXR0ci5zcmNdPVwiZWxlbS5zcmNcIiBbYXR0ci5raW5kXT1cImVsZW0ua2luZFwiIFthdHRyLnNyY0xhbmddPVwiZWxlbS5zcmNMYW5nXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIubGFiZWxdPVwiZWxlbS5sYWJlbFwiIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC92aWRlbz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuICAgIDxmb290ZXIgI2Zvb3RlciBjbGFzcz1cImVjbC1nYWxsZXJ5X19kZXRhaWxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVjbC1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlY2wtZ2FsbGVyeV9fZGV0YWlsLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlY2wtZ2FsbGVyeV9fcGFnZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVjbC1nYWxsZXJ5X19kZXRhaWwtY291bnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbUluZGV4IH19PC9zcGFuPiB7eyAnZWNsLmNvbW1vbi5PRicgfCB0cmFuc2xhdGUgfX0gPHNwYW4+e3sgaXRlbXNDb3VudCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlY2wtZ2FsbGVyeV9fY29udHJvbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gZWNsQnV0dG9uIGNsYXNzPVwiZWNsLWdhbGxlcnlfX3NsaWRlci1wcmV2aW91c1wiIHZhcmlhbnQ9XCJ0ZXJ0aWFyeVwiIGlzSWNvbk9ubHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25QcmV2aW91cygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVjbC1pY29uIGljb249XCJjb3JuZXItYXJyb3dcIiBzaXplPVwibVwiIHRyYW5zZm9ybT1cInJvdGF0ZS0yNzBcIj48L2VjbC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGVjbEJ1dHRvbkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZWNsLmNvbW1vbi5QUkVWSU9VUycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gZWNsQnV0dG9uIGNsYXNzPVwiZWNsLWdhbGxlcnlfX3NsaWRlci1uZXh0XCIgdmFyaWFudD1cInRlcnRpYXJ5XCIgaXNJY29uT25seVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk5leHQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGVjbEJ1dHRvbkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZWNsLmNvbW1vbi5ORVhUJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZWNsLWljb24gaWNvbj1cImNvcm5lci1hcnJvd1wiIHNpemU9XCJtXCIgdHJhbnNmb3JtPVwicm90YXRlLTkwXCI+PC9lY2wtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWNsLWdhbGxlcnlfX2RldGFpbC1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsaW5rc1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWNsLWdhbGxlcnlfX2RldGFpbC1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgIEBpZihpc01vYmlsZSkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWNsLWdhbGxlcnlfX2RldGFpbC1hY3Rpb25zLW1vYmlsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxpbmtzXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYoaXRlbT8udGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlY2wtZ2FsbGVyeV9fdGl0bGVcIiBbaWRdPVwiaXRlbT8uaXRlbUlkXCI+e3sgaXRlbT8udGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZihpdGVtPy5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVjbC1nYWxsZXJ5X19jYXB0aW9uXCI+e3sgaXRlbT8uZGVzY3JpcHRpb24gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZihpdGVtPy5tZXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZWNsLWdhbGxlcnlfX21ldGFcIj57eyBpdGVtPy5tZXRhIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Zvb3Rlcj5cbjwvZGlhbG9nPlxuXG48bmctdGVtcGxhdGUgI2xpbmtzPlxuICAgIEBpZihjYW5CZU9wZW5JbkZ1bGxTY3JlZW4oKSkge1xuICAgICAgICA8YSBlY2xMaW5rIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaXRlbT8udGl0bGVJZFwiIHZhcmlhbnQ9XCJzdGFuZGFsb25lXCJcbiAgICAgICAgICAgY2xhc3M9XCJlY2wtZ2FsbGVyeV9fZG93bmxvYWRcIiBbaHJlZl09XCJpdGVtPy5nZXREb3dubG9hZExpbmsoKVwiIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgIChjbGljayk9XCJvbkZ1bGxTY3JlZW5PcGVuKCRldmVudClcIiBpc0ludmVydGVkPlxuICAgICAgICAgICAgPHNwYW4gZWNsTGlua0xhYmVsPnt7ICdlY2wuZ2FsbGVyeS5WSUVXLU9SSUdJTkFMJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxlY2wtaWNvbiBpY29uPVwiZnVsbHNjcmVlblwiIHNpemU9XCJmbHVpZFwiIGZvY3VzYWJsZT1cImZhbHNlXCI+PC9lY2wtaWNvbj5cbiAgICAgICAgPC9hPlxuICAgIH1cbiAgICBAaWYoY2FuQmVTaGFyZWQoKSkge1xuICAgICAgICA8YSBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIml0ZW0/LnRpdGxlSWRcIiBlY2xMaW5rIHZhcmlhbnQ9XCJzdGFuZGFsb25lXCIgaXNJbnZlcnRlZFxuICAgICAgICAgICBjbGFzcz1cImVjbC1nYWxsZXJ5X19zaGFyZVwiIGhyZWY9XCJcIiAoY2xpY2spPVwib25TaGFyZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8c3BhbiBlY2xMaW5rTGFiZWw+e3sgJ2VjbC5jb21tb24uU0hBUkUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPGVjbC1pY29uIGljb249XCJzaGFyZVwiIHNpemU9XCJmbHVpZFwiIGZvY3VzYWJsZT1cImZhbHNlXCI+PC9lY2wtaWNvbj5cbiAgICAgICAgPC9hPlxuICAgIH1cbjwvbmctdGVtcGxhdGU+Il19
|
|
373
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLWdhbGxlcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2VjbC1nYWxsZXJ5L2VjbC1nYWxsZXJ5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtZ2FsbGVyeS9lY2wtZ2FsbGVyeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXNCLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFFSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFFZixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFDTixXQUFXLEVBRVgsU0FBUyxFQUNULGdCQUFnQixFQUNoQixlQUFlLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7QUFFcEQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFlBQVk7Q0FBRztBQUN4RCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsWUFBWTtDQUFHO0FBQ3hELE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxZQUFZO0lBQ3ZELFlBQW1C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QUF5QjtnQkFDakIsWUFBWTtzQkFBakMsU0FBUzt1QkFBQyxTQUFTO2dCQUNDLFdBQVc7c0JBQS9CLFNBQVM7dUJBQUMsUUFBUTtnQkFDRSxXQUFXO3NCQUEvQixTQUFTO3VCQUFDLFFBQVE7Z0JBR2YsVUFBVTtzQkFEYixXQUFXO3VCQUFDLE9BQU87Z0JBVU0sSUFBSTtzQkFBN0IsV0FBVzt1QkFBQyxXQUFXO2dCQTJGeEIsc0JBQXNCO3NCQURyQixZQUFZO3VCQUFDLHlCQUF5QixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQXNDbkQsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludHMgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFBMQVRGT1JNX0lELFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBudW1iZXJBdHRyaWJ1dGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgZGVsYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVjbEJhc2VFdmVudCB9IGZyb20gJy4uLy4uL21vZGVsL2VjbC1iYXNlLmV2ZW50JztcbmltcG9ydCB7IEVjbEdhbGxlcnlJdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWwvZWNsLWdhbGxlcnktaXRlbS5tb2RlbCc7XG5pbXBvcnQgeyBFQ0xCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZWNsLWJhc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IEVjbEdhbGxlcnlGb290ZXJDb21wb25lbnQgfSBmcm9tICcuL2VjbC1nYWxsZXJ5LWZvb3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWNsR2FsbGVyeUl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2VjbC1nYWxsZXJ5LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuZXhwb3J0IGNsYXNzIEVjbEdhbGxlcnlTaG93RXZlbnQgZXh0ZW5kcyBFY2xCYXNlRXZlbnQge31cbmV4cG9ydCBjbGFzcyBFY2xHYWxsZXJ5SGlkZUV2ZW50IGV4dGVuZHMgRWNsQmFzZUV2ZW50IHt9XG5leHBvcnQgY2xhc3MgRWNsR2FsbGVyeUZ1bGxTY3JlZW5FdmVudCBleHRlbmRzIEVjbEJhc2VFdmVudCB7XG4gICAgY29uc3RydWN0b3IocHVibGljIGdhbGxlcnlJdGVtOiBFY2xHYWxsZXJ5SXRlbSkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBFY2xHYWxsZXJ5U2hhcmVFdmVudCBleHRlbmRzIEVjbEJhc2VFdmVudCB7XG4gICAgY29uc3RydWN0b3IocHVibGljIGdhbGxlcnlJdGVtOiBFY2xHYWxsZXJ5SXRlbSkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVjbEdhbGxlcnlJdGVtRXZlbnQgZXh0ZW5kcyBFY2xCYXNlRXZlbnQge1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBnYWxsZXJ5SXRlbTogRWNsR2FsbGVyeUl0ZW0pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZWNsLWdhbGxlcnknLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9lY2wtZ2FsbGVyeS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVzOiBbXG4gICAgICAgIGBcbiAgICAgICAgICAgIDpob3N0IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgYCxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFY2xHYWxsZXJ5Q29tcG9uZW50IGV4dGVuZHMgRUNMQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSwgT25Jbml0IHtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc09wZW5JbkZ1bGxTY3JlZW5Qb3NzaWJsZSA9IHRydWU7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzU2hhcmVhYmxlID0gdHJ1ZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNGdWxsV2lkdGggPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNOb092ZXJsYXkgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNTaG93VGl0bGVPbkhvdmVyID0gdHJ1ZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBtYXhWaXNpYmxlSXRlbXM6IG51bWJlcjtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNHcmlkID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgTm90IHVzZWQgYW55bW9yZS4gVG8gYmUgcmVtb3ZlZCBpbiB2MTkuXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgY29sdW1uOiAyIHwgMyB8IDQgPSAzO1xuICAgIEBJbnB1dCgpIGdyaWRUZW1wbGF0ZTogJzAnIHwgJzEnIHwgJzInIHwgJzMnIHwgJzQnIHwgc3RyaW5nID0gJzAnO1xuICAgIEBJbnB1dCgpIHJhdGlvOiAnMy0xJyB8ICczLTInIHwgc3RyaW5nID0gJzMtMic7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgTm90IHVzZWQgYW55bW9yZS4gVG8gYmUgcmVtb3ZlZCBpbiB2MTkuXG4gICAgICovXG4gICAgQElucHV0KCkgZ2FsbGVyeVBsYXllclRpdGxlID0gJ1ZpZGVvIFBsYXllcic7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgTm90IHVzZWQgYW55bW9yZS4gVG8gYmUgcmVtb3ZlZCBpbiB2MTkuXG4gICAgICovXG4gICAgQElucHV0KCkgdmlkZW9BcmlhTGFiZWwgPSAnVmlkZW8nO1xuICAgIEBJbnB1dCgpIHZpZGVvTGFiZWwgPSAnVmlkZW8nO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gICAgQE91dHB1dCgpIHNob3cgPSBuZXcgRXZlbnRFbWl0dGVyPEVjbEdhbGxlcnlTaG93RXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIGhpZGUgPSBuZXcgRXZlbnRFbWl0dGVyPEVjbEdhbGxlcnlIaWRlRXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIG9wZW5GdWxsU2NyZWVuID0gbmV3IEV2ZW50RW1pdHRlcjxFY2xHYWxsZXJ5RnVsbFNjcmVlbkV2ZW50PigpO1xuICAgIEBPdXRwdXQoKSBzaGFyZSA9IG5ldyBFdmVudEVtaXR0ZXI8RWNsR2FsbGVyeVNoYXJlRXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIGl0ZW1Td2l0Y2ggPSBuZXcgRXZlbnRFbWl0dGVyPEVjbEdhbGxlcnlJdGVtRXZlbnQ+KCk7XG4gICAgQENvbnRlbnRDaGlsZHJlbihFY2xHYWxsZXJ5SXRlbUNvbXBvbmVudCkgZ2FsbGVyeUl0ZW1zOiBRdWVyeUxpc3Q8RWNsR2FsbGVyeUl0ZW1Db21wb25lbnQ+O1xuICAgIEBDb250ZW50Q2hpbGQoRWNsR2FsbGVyeUZvb3RlckNvbXBvbmVudCkgZ2FsbGVyeUZvb3RlcjogRWNsR2FsbGVyeUZvb3RlckNvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCdvdmVybGF5Jykgb3ZlcmxheUNoaWxkOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ2hlYWRlcicpIGhlYWRlckNoaWxkOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ2Zvb3RlcicpIGZvb3RlckNoaWxkOiBFbGVtZW50UmVmO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtzdXBlci5nZXRDc3NDbGFzc2VzKCdlY2wtZ2FsbGVyeScpLFxuICAgICAgICAgICAgdGhpcy5pc0Z1bGxXaWR0aCA/ICdlY2wtZ2FsbGVyeS0tZnVsbC13aWR0aCcgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuaXNHcmlkID8gJ2VjbC1nYWxsZXJ5LS1ncmlkJyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5pc0dyaWQgPyBgZWNsLWdhbGxlcnktLXRlbXBsYXRlLSR7dGhpcy5ncmlkVGVtcGxhdGV9YDogJycsXG4gICAgICAgICAgICB0aGlzLmlzR3JpZCA/IGBlY2wtZ2FsbGVyeS0tcmF0aW8tJHt0aGlzLnJhdGlvfWA6ICcnLFxuICAgICAgICAgICAgIXRoaXMuaXNTaG93VGl0bGVPbkhvdmVyID8gJ2VjbC1nYWxsZXJ5LS1uby1ob3ZlcicgOiAnJyxcbiAgICAgICAgXS5qb2luKCcgJykudHJpbSgpO1xuICAgIH1cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpIHJvbGUgPSAncmVnaW9uJztcblxuICAgIGlzRGlhbG9nVmlzaWJsZSA9IGZhbHNlO1xuICAgIGlzTW9iaWxlID0gZmFsc2U7XG4gICAgaXRlbXNDb3VudDogbnVtYmVyO1xuICAgIGl0ZW1JbmRleDogbnVtYmVyO1xuICAgIGl0ZW06IEVjbEdhbGxlcnlJdGVtQ29tcG9uZW50O1xuICAgIHByaXZhdGUgaWZyYW1lV2lkdGg6IG51bWJlcjtcbiAgICBwcml2YXRlIGlmcmFtZUhlaWdodDogbnVtYmVyO1xuICAgIHByaXZhdGUgQlJFQUtQT0lOVF9DSEFOR0VTX1RJTUVPVVQgPSA1MDA7XG4gICAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSB2aXNpYmxlSXRlbXM6IG51bWJlcjtcbiAgICBwcml2YXRlIE1BWF9WSVNJQkxFX0lURU1TX01PQklMRSA9IDM7XG4gICAgcHJpdmF0ZSBSRVNPTFVUSU9OXzE2XzlfUFJPUE9USU9OID0gMTYgLyA5O1xuICAgIHByaXZhdGUgUkVTT0xVVElPTl80XzNfUFJPUE9USU9OID0gNCAvIDM7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNka0JyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyLCBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IG9iamVjdCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgdGhpcy5vYnNlcnZlQnJlYWtwb2ludENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hc3NpZ25MYWJlbFRvVmlkZW9JdGVtcygpO1xuICAgICAgICB0aGlzLml0ZW1zQ291bnQgPSB0aGlzLmdhbGxlcnlJdGVtcy5sZW5ndGg7XG4gICAgICAgIHRoaXMudmlzaWJsZUl0ZW1zID0gdGhpcy5tYXhWaXNpYmxlSXRlbXMgPyB0aGlzLm1heFZpc2libGVJdGVtcyA6IHRoaXMuaXRlbXNDb3VudDtcbiAgICAgICAgaWYgKHRoaXMuZ2FsbGVyeUZvb3Rlcikge1xuICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9vdGVyLml0ZW1zQ291bnQgPSB0aGlzLml0ZW1zQ291bnQ7XG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlGb290ZXIuaXNTaG93VG9nZ2xlQnRuID0gdGhpcy5oYXNIaWRkZW5HYWxlcnlJdGVtcygpO1xuICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9vdGVyLnRvZ2dsZUl0ZW1zLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldnQuZXhwYW5kQWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0FsbEl0ZW1zKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2xsYXBzZUl0ZW1zKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuaXNOb092ZXJsYXkpIHtcbiAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtLml0ZW1DbGljay5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNEaWFsb2dWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtID0gaXRlbTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtSW5kZXggPSB0aGlzLmZpbmRJdGVtSW5kZXgodGhpcy5nYWxsZXJ5SXRlbXMudG9BcnJheSgpLCBpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93Lm5leHQobmV3IEVjbEdhbGxlcnlTaG93RXZlbnQoKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2V0SWZyYW1lRGltZW5zaW9ucygpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmdhbGxlcnlJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiAoaXRlbS5pc05vT3ZlcmxheSA9IHRydWUpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmhhc0hpZGRlbkdhbGVyeUl0ZW1zKCkpIHtcbiAgICAgICAgICAgIHRoaXMuY29sbGFwc2VJdGVtcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIG9uUHJldmlvdXMoZXZ0OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXRlbSA9IHRoaXMuZmluZFByZXZpb3VzSXRlbSh0aGlzLmdhbGxlcnlJdGVtcy50b0FycmF5KCksIHRoaXMuaXRlbSk7XG5cbiAgICAgICAgdGhpcy5pdGVtSW5kZXggPSB0aGlzLmZpbmRJdGVtSW5kZXgodGhpcy5nYWxsZXJ5SXRlbXMudG9BcnJheSgpLCB0aGlzLml0ZW0pO1xuXG4gICAgICAgIHRoaXMuaXRlbVN3aXRjaC5uZXh0KG5ldyBFY2xHYWxsZXJ5SXRlbUV2ZW50KHRoaXMuaXRlbSkpO1xuICAgIH1cblxuICAgIG9uTmV4dChldnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pdGVtID0gdGhpcy5maW5kTmV4dEl0ZW0odGhpcy5nYWxsZXJ5SXRlbXMudG9BcnJheSgpLCB0aGlzLml0ZW0pO1xuICAgICAgICB0aGlzLml0ZW1JbmRleCA9IHRoaXMuZmluZEl0ZW1JbmRleCh0aGlzLmdhbGxlcnlJdGVtcy50b0FycmF5KCksIHRoaXMuaXRlbSk7XG5cbiAgICAgICAgdGhpcy5pdGVtU3dpdGNoLm5leHQobmV3IEVjbEdhbGxlcnlJdGVtRXZlbnQodGhpcy5pdGVtKSk7XG4gICAgfVxuXG4gICAgb25DbG9zZShldnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pdGVtID0gbnVsbDtcbiAgICAgICAgdGhpcy5pdGVtSW5kZXggPSAtMTtcbiAgICAgICAgdGhpcy5pc0RpYWxvZ1Zpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5oaWRlLm5leHQobmV3IEVjbEdhbGxlcnlIaWRlRXZlbnQoKSk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKVxuICAgIG9uRXNjYXBlS2V5ZG93bkhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0RpYWxvZ1Zpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5oaWRlLm5leHQobmV3IEVjbEdhbGxlcnlIaWRlRXZlbnQoKSk7XG4gICAgfVxuXG4gICAgb25GdWxsU2NyZWVuT3BlbihldnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuRnVsbFNjcmVlbi5uZXh0KG5ldyBFY2xHYWxsZXJ5RnVsbFNjcmVlbkV2ZW50KHRoaXMuaXRlbSkpO1xuICAgIH1cblxuICAgIG9uU2hhcmUoZXZ0OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hhcmUubmV4dChuZXcgRWNsR2FsbGVyeVNoYXJlRXZlbnQodGhpcy5pdGVtKSk7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIGNhbkJlT3BlbkluRnVsbFNjcmVlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNPcGVuSW5GdWxsU2NyZWVuUG9zc2libGUgJiYgdGhpcy5pdGVtPy5pc09wZW5JbkZ1bGxTY3JlZW5Qb3NzaWJsZTtcbiAgICB9XG5cbiAgICBjYW5CZVNoYXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNTaGFyZWFibGUgJiYgdGhpcy5pdGVtPy5pc1NoYXJlYWJsZTtcbiAgICB9XG5cbiAgICBnZXRJZnJhbWVXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5pZnJhbWVXaWR0aDtcbiAgICB9XG5cbiAgICBnZXRJZnJhbWVIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWZyYW1lSGVpZ2h0O1xuICAgIH1cblxuICAgIHNldElmcmFtZURpbWVuc2lvbnMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gdGhpcy5nZXRDYWxjdWxhdGVkSWZyYW1lRGltZW5zaW9ucygpO1xuICAgICAgICB0aGlzLmlmcmFtZVdpZHRoID0gd2lkdGg7XG4gICAgICAgIHRoaXMuaWZyYW1lSGVpZ2h0ID0gaGVpZ2h0O1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICAgIGlmcmFtZVJlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRJZnJhbWVEaW1lbnNpb25zKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDYWxjdWxhdGVkSWZyYW1lRGltZW5zaW9ucygpOiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0ge1xuICAgICAgICBsZXQgd2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgbGV0IGhlaWdodCA9XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlDaGlsZC5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCAtXG4gICAgICAgICAgICB0aGlzLmhlYWRlckNoaWxkLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0IC1cbiAgICAgICAgICAgIHRoaXMuZm9vdGVyQ2hpbGQubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgICAgIGlmICh3aWR0aCA+IGhlaWdodCkge1xuICAgICAgICAgICAgY29uc3Qgc2NhbGVkSGVpZ2h0ID0gaGVpZ2h0ICogdGhpcy5SRVNPTFVUSU9OXzE2XzlfUFJPUE9USU9OO1xuICAgICAgICAgICAgaWYgKHNjYWxlZEhlaWdodCA+IHdpZHRoKSB7XG4gICAgICAgICAgICAgICAgd2lkdGggPSB3aWR0aCAqIDAuOTU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHdpZHRoID0gc2NhbGVkSGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgc2NhbGVkV2l0aCA9IHdpZHRoICogdGhpcy5SRVNPTFVUSU9OXzRfM19QUk9QT1RJT047XG4gICAgICAgICAgICBpZiAoc2NhbGVkV2l0aCA+IGhlaWdodCkge1xuICAgICAgICAgICAgICAgIGhlaWdodCA9IGhlaWdodCAqIDAuOTU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGhlaWdodCA9IHNjYWxlZFdpdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgZmluZEl0ZW1JbmRleChpdGVtczogQXJyYXk8RWNsR2FsbGVyeUl0ZW1Db21wb25lbnQ+LCBpdGVtOiBFY2xHYWxsZXJ5SXRlbUNvbXBvbmVudCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpdGVtcy5maW5kSW5kZXgoKGl0KSA9PiBpdCA9PT0gaXRlbSkgKyAxO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmluZFByZXZpb3VzSXRlbShpdGVtczogQXJyYXk8RWNsR2FsbGVyeUl0ZW1Db21wb25lbnQ+LCBpdGVtOiBFY2xHYWxsZXJ5SXRlbUNvbXBvbmVudCk6IEVjbEdhbGxlcnlJdGVtQ29tcG9uZW50IHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmZpbmRQcmV2aW91c0l0ZW1JbmRleChpdGVtcywgaXRlbSk7XG4gICAgICAgIHJldHVybiBpdGVtc1tpbmRleF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kTmV4dEl0ZW0oaXRlbXM6IEFycmF5PEVjbEdhbGxlcnlJdGVtQ29tcG9uZW50PiwgaXRlbTogRWNsR2FsbGVyeUl0ZW1Db21wb25lbnQpOiBFY2xHYWxsZXJ5SXRlbUNvbXBvbmVudCB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maW5kTmV4dEl0ZW1JbmRleChpdGVtcywgaXRlbSk7XG4gICAgICAgIHJldHVybiBpdGVtc1tpbmRleF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kUHJldmlvdXNJdGVtSW5kZXgoaXRlbXM6IEFycmF5PEVjbEdhbGxlcnlJdGVtQ29tcG9uZW50PiwgaXRlbTogRWNsR2FsbGVyeUl0ZW1Db21wb25lbnQpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSBpdGVtcy5maW5kSW5kZXgoKGl0KSA9PiBpdCA9PT0gaXRlbSk7XG4gICAgICAgIHJldHVybiBjdXJyZW50SW5kZXggPT09IDAgPyBpdGVtcy5sZW5ndGggLSAxIDogY3VycmVudEluZGV4IC0gMTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmROZXh0SXRlbUluZGV4KGl0ZW1zOiBBcnJheTxFY2xHYWxsZXJ5SXRlbUNvbXBvbmVudD4sIGl0ZW06IEVjbEdhbGxlcnlJdGVtQ29tcG9uZW50KTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gaXRlbXMuZmluZEluZGV4KChpdCkgPT4gaXQgPT09IGl0ZW0pO1xuICAgICAgICByZXR1cm4gY3VycmVudEluZGV4ID49IGl0ZW1zLmxlbmd0aCAtIDEgPyAwIDogY3VycmVudEluZGV4ICsgMTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9ic2VydmVCcmVha3BvaW50Q2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jZGtCcmVha3BvaW50T2JzZXJ2ZXJcbiAgICAgICAgICAgIC5vYnNlcnZlKFtCcmVha3BvaW50cy5IYW5kc2V0LCBCcmVha3BvaW50cy5UYWJsZXRdKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkZWxheSh0aGlzLkJSRUFLUE9JTlRfQ0hBTkdFU19USU1FT1VUKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNNb2JpbGUgPSByZXN1bHQubWF0Y2hlcztcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc01vYmlsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hbmFnZUl0ZW1zTW9iaWxlKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYW5hZ2VJdGVtc0Rlc2t0b3AoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hbmFnZUl0ZW1zTW9iaWxlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1heFZpc2libGVJdGVtcyA9IHRoaXMuTUFYX1ZJU0lCTEVfSVRFTVNfTU9CSUxFO1xuICAgICAgICB0aGlzLmNvbGxhcHNlSXRlbXMoKTtcbiAgICAgICAgaWYgKHRoaXMuZ2FsbGVyeUZvb3Rlcikge1xuICAgICAgICAgICAgdGhpcy5nYWxsZXJ5Rm9vdGVyLmlzU2hvd1RvZ2dsZUJ0biA9IHRoaXMuaGFzSGlkZGVuR2FsZXJ5SXRlbXMoKTtcbiAgICAgICAgfSBcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hbmFnZUl0ZW1zRGVza3RvcCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tYXhWaXNpYmxlSXRlbXMgPSB0aGlzLnZpc2libGVJdGVtcztcbiAgICAgICAgdGhpcy5nZXRWaXNpYmxlSXRlbXMoKS5mb3JFYWNoKChlbGVtKSA9PiB0aGlzLnNob3dHYWxlcnlJdGVtKGVsZW0pKTtcbiAgICAgICAgdGhpcy5jb2xsYXBzZUl0ZW1zKCk7XG4gICAgICAgIGlmICh0aGlzLmdhbGxlcnlGb290ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZ2FsbGVyeUZvb3Rlci5pc1Nob3dUb2dnbGVCdG4gPSB0aGlzLmhhc0hpZGRlbkdhbGVyeUl0ZW1zKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc0hpZGRlbkdhbGVyeUl0ZW1zKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5tYXhWaXNpYmxlSXRlbXMgJiYgdGhpcy5pdGVtc0NvdW50ID4gMCAmJiB0aGlzLm1heFZpc2libGVJdGVtcyA8IHRoaXMuaXRlbXNDb3VudCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbGxhcHNlSXRlbXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ2V0SGlkZGVuSXRlbXMoKS5mb3JFYWNoKChlbGVtKSA9PiB0aGlzLmhpZGVHYWxlcnlJdGVtKGVsZW0pKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3dBbGxJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaGlkZGVuSXRlbXMgPSB0aGlzLmdldEhpZGRlbkl0ZW1zKCk7XG4gICAgICAgIGhpZGRlbkl0ZW1zLmZvckVhY2goKGVsZW0pID0+IHRoaXMuc2hvd0dhbGVyeUl0ZW0oZWxlbSkpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGhpZGRlbkl0ZW1zWzBdLm9uRm9jdXMoKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWRlR2FsZXJ5SXRlbShpdGVtOiBFY2xHYWxsZXJ5SXRlbUNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBpdGVtLmlzSGlkZGVuID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3dHYWxlcnlJdGVtKGl0ZW06IEVjbEdhbGxlcnlJdGVtQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGl0ZW0uaXNIaWRkZW4gPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEhpZGRlbkl0ZW1zKCk6IEVjbEdhbGxlcnlJdGVtQ29tcG9uZW50W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5nYWxsZXJ5SXRlbXMuZmlsdGVyKChpdGVtLCBjbnQpID0+IGNudCA+PSB0aGlzLm1heFZpc2libGVJdGVtcyk7XG4gICAgfVxuICAgIHByaXZhdGUgZ2V0VmlzaWJsZUl0ZW1zKCk6IEVjbEdhbGxlcnlJdGVtQ29tcG9uZW50W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5nYWxsZXJ5SXRlbXMuZmlsdGVyKChpdGVtLCBjbnQpID0+IGNudCA8IHRoaXMubWF4VmlzaWJsZUl0ZW1zKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzc2lnbkxhYmVsVG9WaWRlb0l0ZW1zKCk6IHZvaWQge1xuICAgICAgICAgICAgdGhpcy5nYWxsZXJ5SXRlbXNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbS5tZWRpYVR5cGUgPT09ICd2aWRlbycpXG4gICAgICAgICAgICAgICAgLm1hcChpdGVtID0+IGl0ZW0udmlkZW9MYWJlbCA9IHRoaXMudmlkZW9MYWJlbCk7XG4gICAgICAgIH1cbn1cbiIsIjx1bCBjbGFzcz1cImVjbC1nYWxsZXJ5X19saXN0XCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC91bD5cblxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiZWNsLWdhbGxlcnktZm9vdGVyXCI+PC9uZy1jb250ZW50PlxuXG48ZGlhbG9nICNvdmVybGF5IFthdHRyLm9wZW5dPVwiaXNEaWFsb2dWaXNpYmxlIHx8IG51bGxcIiBjbGFzcz1cImVjbC1nYWxsZXJ5X19vdmVybGF5XCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidlY2wuZ2FsbGVyeS5GVUxMLVNJWkUtRElTUExBWScgfCB0cmFuc2xhdGVcIj5cbiAgICA8aGVhZGVyICNoZWFkZXIgY2xhc3M9XCJlY2wtZ2FsbGVyeV9fY2xvc2VcIj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25DbG9zZSgkZXZlbnQpXCIgZWNsQnV0dG9uIGNsYXNzPVwiZWNsLWdhbGxlcnlfX2Nsb3NlLWJ1dHRvblwiIGlzSWNvbk9ubHkgdmFyaWFudD1cImdob3N0XCI+XG4gICAgICAgICAgICA8c3BhbiBlY2xCdXR0b25MYWJlbD5cbiAgICAgICAgICAgICAgICB7eyAnZWNsLmNvbW1vbi5DTE9TRScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxlY2wtaWNvbiBpY29uPVwiY2xvc2VcIiBzaXplPVwibVwiPjwvZWNsLWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvaGVhZGVyPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwiZWNsLWdhbGxlcnlfX3NsaWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZWNsLWdhbGxlcnlfX3NsaWRlci1tZWRpYS1jb250YWluZXJcIj5cbiAgICAgICAgICAgIEBpZihpdGVtPy5pc0V4dGVybmFsVmlkZW8pIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlY2wtZ2FsbGVyeV9fc2xpZGVyLWVtYmVkXCI+XG4gICAgICAgICAgICAgICAgQGlmIChpdGVtPy5zclZpZGVvQXVkaW9EZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWNsLWdhbGxlcnlfX3NsaWRlci1lbWJlZC1hdWRpb1wiPnt7aXRlbT8uc3JWaWRlb0F1ZGlvRGVzY3JpcHRpb259fTwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8aWZyYW1lIFtzcmNdPVwiaXRlbT8uZ2V0VXJsRXh0ZXJuYWxWaWRlbygpXCIgW3N0eWxlLndpZHRoLnB4XT1cImdldElmcmFtZVdpZHRoKClcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImdldElmcmFtZUhlaWdodCgpXCIgW2F0dHIudGl0bGVdPVwiaXRlbS50aXRsZSArICcgLSBWaWRlbyBwbGF5ZXInXCIgZnJhbWVib3JkZXI9XCIwXCI+XG4gICAgICAgICAgICAgICAgPC9pZnJhbWU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZihpdGVtPy5pc0ltYWdlKSB7XG4gICAgICAgICAgICA8cGljdHVyZSBjbGFzcz1cImVjbC1waWN0dXJlIGVjbC1nYWxsZXJ5X19waWN0dXJlIGVjbC1nYWxsZXJ5X19zbGlkZXItaW1hZ2VcIj5cbiAgICAgICAgICAgICAgICBAZm9yKGVsIG9mIGl0ZW0uZ2FsbGVyeVBpY3R1cmU/LnNvdXJjZXM7IHRyYWNrIGVsLnNyY3NldCkge1xuICAgICAgICAgICAgICAgICAgICA8c291cmNlIFthdHRyLnNyY3NldF09XCJlbC5zcmNzZXRcIiBbYXR0ci5tZWRpYV09XCIgZWwubWVkaWFcIj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPGltZyBbYXR0ci5hbHRdPVwiaXRlbT8uZ2FsbGVyeVBpY3R1cmU/LmltZy5hbHQgfHwgbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIml0ZW0/LmdhbGxlcnlQaWN0dXJlPy5pbWcuc3JjXCJcbiAgICAgICAgICAgICAgICAgICAgIFthdHRyLmxvYWRpbmddPVwiaXRlbT8uZ2FsbGVyeVBpY3R1cmU/LmltZy5sb2FkaW5nIHx8IG51bGxcIiAvPlxuICAgICAgICAgICAgPC9waWN0dXJlPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmKGl0ZW0/LmlzVmlkZW8pIHtcbiAgICAgICAgICAgIDx2aWRlbyBjb250cm9scz1cImNvbnRyb2xzXCIgY2xhc3M9XCJlY2wtZ2FsbGVyeV9fc2xpZGVyLXZpZGVvXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJpdGVtLnRpdGxlICsgJyAtIFZpZGVvIHBsYXllcidcIlxuICAgICAgICAgICAgICAgIFthdHRyLnBvc3Rlcl09XCJpdGVtLm1lZGlhQ2hpbGQ/LnBvc3RlclwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGVsIG9mIGl0ZW0ubWVkaWFDaGlsZD8uc291cmNlczsgdHJhY2sgZWwuc3JjKSB7XG4gICAgICAgICAgICAgICAgPHNvdXJjZSBbYXR0ci5zcmNdPVwiZWwuc3JjXCIgW2F0dHIudHlwZV09XCJlbC50eXBlXCIgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGZvciAoZWxlbSBvZiBpdGVtLm1lZGlhQ2hpbGQ/LnRyYWNrczsgdHJhY2sgZWxlbS5zcmMpIHtcbiAgICAgICAgICAgICAgICA8dHJhY2sgW2F0dHIuc3JjXT1cImVsZW0uc3JjXCIgW2F0dHIua2luZF09XCJlbGVtLmtpbmRcIiBbYXR0ci5zcmNMYW5nXT1cImVsZW0uc3JjTGFuZ1wiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmxhYmVsXT1cImVsZW0ubGFiZWxcIiAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdmlkZW8+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbiAgICA8Zm9vdGVyICNmb290ZXIgY2xhc3M9XCJlY2wtZ2FsbGVyeV9fZGV0YWlsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlY2wtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWNsLWdhbGxlcnlfX2RldGFpbC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWNsLWdhbGxlcnlfX3BhZ2VyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlY2wtZ2FsbGVyeV9fZGV0YWlsLWNvdW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW1JbmRleCB9fTwvc3Bhbj4ge3sgJ2VjbC5jb21tb24uT0YnIHwgdHJhbnNsYXRlIH19IDxzcGFuPnt7IGl0ZW1zQ291bnQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWNsLWdhbGxlcnlfX2NvbnRyb2xzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGVjbEJ1dHRvbiBjbGFzcz1cImVjbC1nYWxsZXJ5X19zbGlkZXItcHJldmlvdXNcIiB2YXJpYW50PVwidGVydGlhcnlcIiBpc0ljb25Pbmx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUHJldmlvdXMoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlY2wtaWNvbiBpY29uPVwiY29ybmVyLWFycm93XCIgc2l6ZT1cIm1cIiB0cmFuc2Zvcm09XCJyb3RhdGUtMjcwXCI+PC9lY2wtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBlY2xCdXR0b25MYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VjbC5jb21tb24uUFJFVklPVVMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGVjbEJ1dHRvbiBjbGFzcz1cImVjbC1nYWxsZXJ5X19zbGlkZXItbmV4dFwiIHZhcmlhbnQ9XCJ0ZXJ0aWFyeVwiIGlzSWNvbk9ubHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25OZXh0KCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBlY2xCdXR0b25MYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VjbC5jb21tb24uTkVYVCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVjbC1pY29uIGljb249XCJjb3JuZXItYXJyb3dcIiBzaXplPVwibVwiIHRyYW5zZm9ybT1cInJvdGF0ZS05MFwiPjwvZWNsLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVjbC1nYWxsZXJ5X19kZXRhaWwtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGlua3NcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVjbC1nYWxsZXJ5X19kZXRhaWwtZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICBAaWYoaXNNb2JpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVjbC1nYWxsZXJ5X19kZXRhaWwtYWN0aW9ucy1tb2JpbGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsaW5rc1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmKGl0ZW0/LnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZWNsLWdhbGxlcnlfX3RpdGxlXCIgW2lkXT1cIml0ZW0/Lml0ZW1JZFwiPnt7IGl0ZW0/LnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYoaXRlbT8uZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlY2wtZ2FsbGVyeV9fY2FwdGlvblwiPnt7IGl0ZW0/LmRlc2NyaXB0aW9uIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYoaXRlbT8ubWV0YSkge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVjbC1nYWxsZXJ5X19tZXRhXCI+e3sgaXRlbT8ubWV0YSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9mb290ZXI+XG48L2RpYWxvZz5cblxuPG5nLXRlbXBsYXRlICNsaW5rcz5cbiAgICBAaWYoY2FuQmVPcGVuSW5GdWxsU2NyZWVuKCkpIHtcbiAgICAgICAgPGEgZWNsTGluayBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIml0ZW0/LnRpdGxlSWRcIiB2YXJpYW50PVwic3RhbmRhbG9uZVwiXG4gICAgICAgICAgIGNsYXNzPVwiZWNsLWdhbGxlcnlfX2Rvd25sb2FkXCIgW2hyZWZdPVwiaXRlbT8uZ2V0RG93bmxvYWRMaW5rKClcIiB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAoY2xpY2spPVwib25GdWxsU2NyZWVuT3BlbigkZXZlbnQpXCIgaXNJbnZlcnRlZD5cbiAgICAgICAgICAgIDxzcGFuIGVjbExpbmtMYWJlbD57eyAnZWNsLmdhbGxlcnkuVklFVy1PUklHSU5BTCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8ZWNsLWljb24gaWNvbj1cImZ1bGxzY3JlZW5cIiBzaXplPVwiZmx1aWRcIiBmb2N1c2FibGU9XCJmYWxzZVwiPjwvZWNsLWljb24+XG4gICAgICAgIDwvYT5cbiAgICB9XG4gICAgQGlmKGNhbkJlU2hhcmVkKCkpIHtcbiAgICAgICAgPGEgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJpdGVtPy50aXRsZUlkXCIgZWNsTGluayB2YXJpYW50PVwic3RhbmRhbG9uZVwiIGlzSW52ZXJ0ZWRcbiAgICAgICAgICAgY2xhc3M9XCJlY2wtZ2FsbGVyeV9fc2hhcmVcIiBocmVmPVwiXCIgKGNsaWNrKT1cIm9uU2hhcmUoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPHNwYW4gZWNsTGlua0xhYmVsPnt7ICdlY2wuY29tbW9uLlNIQVJFJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxlY2wtaWNvbiBpY29uPVwic2hhcmVcIiBzaXplPVwiZmx1aWRcIiBmb2N1c2FibGU9XCJmYWxzZVwiPjwvZWNsLWljb24+XG4gICAgICAgIDwvYT5cbiAgICB9XG48L25nLXRlbXBsYXRlPiJdfQ==
|