UNPKG

@junte/ui

Version:

Quality Angular UI components kit

270 lines 23.3 kB
import { __decorate, __metadata } from "tslib"; import { Component, ContentChildren, HostBinding, Input, QueryList, ViewChild } from '@angular/core'; import { RouterLinkActive } from '@angular/router'; import { PropertyApi } from '../../core/decorators/api'; import { Context } from '../../core/enums/context'; import { Feature } from '../../core/enums/feature'; import { Outline } from '../../core/enums/outline'; import { Position } from '../../core/enums/position'; import { UI } from '../../core/enums/ui'; import { UrlMatching } from '../../core/enums/url'; import { BadgeComponent } from '../../elements/badge/badge.component'; import { LinkTarget } from './enums'; var LinkComponent = /** @class */ (function () { function LinkComponent() { this.host = 'jnt-link-host'; this.ui = UI; this._target = LinkTarget.self; this._matching = UrlMatching.fullMatch; this.externalLink = true; this._context = Context.text; this._outline = Outline.transparent; this.disabled = false; this._orphan = false; this.features = []; } Object.defineProperty(LinkComponent.prototype, "withTitle", { get: function () { return !!this.title; }, enumerable: true, configurable: true }); Object.defineProperty(LinkComponent.prototype, "linkActive", { // TODO: we must find better solution get: function () { return !!this.linkRef ? this.linkRef.isActive : false; }, enumerable: true, configurable: true }); Object.defineProperty(LinkComponent.prototype, "outline", { set: function (outline) { this._outline = outline || Outline.transparent; }, enumerable: true, configurable: true }); Object.defineProperty(LinkComponent.prototype, "__icon__", { set: function (icon) { this.icon = (typeof (icon) === 'string' ? { icon: icon, position: Position.left } : icon); }, enumerable: true, configurable: true }); Object.defineProperty(LinkComponent.prototype, "position", { get: function () { return !!this.icon ? this.icon.position : null; }, enumerable: true, configurable: true }); Object.defineProperty(LinkComponent.prototype, "source", { get: function () { return this._source; }, set: function (source) { if (!!source) { this.externalLink = !Array.isArray(source); this._source = source; } else { this._orphan = true; } }, enumerable: true, configurable: true }); Object.defineProperty(LinkComponent.prototype, "target", { get: function () { return this._target; }, set: function (target) { this._target = target || LinkTarget.self; }, enumerable: true, configurable: true }); Object.defineProperty(LinkComponent.prototype, "matching", { get: function () { return this._matching; }, set: function (matching) { this._matching = matching || UrlMatching.fullMatch; }, enumerable: true, configurable: true }); Object.defineProperty(LinkComponent.prototype, "context", { set: function (context) { this._context = context || Context.text; }, enumerable: true, configurable: true }); __decorate([ HostBinding('attr.host'), __metadata("design:type", Object) ], LinkComponent.prototype, "host", void 0); __decorate([ HostBinding('attr.data-context'), __metadata("design:type", String) ], LinkComponent.prototype, "_context", void 0); __decorate([ HostBinding('attr.data-outline'), __metadata("design:type", Object) ], LinkComponent.prototype, "_outline", void 0); __decorate([ HostBinding('attr.data-with-title'), __metadata("design:type", Object), __metadata("design:paramtypes", []) ], LinkComponent.prototype, "withTitle", null); __decorate([ Input(), __metadata("design:type", Boolean) ], LinkComponent.prototype, "collapsed", void 0); __decorate([ HostBinding('attr.data-active'), __metadata("design:type", Boolean), __metadata("design:paramtypes", []) ], LinkComponent.prototype, "linkActive", null); __decorate([ PropertyApi({ description: 'Disable link', type: 'boolean', default: 'false' }), HostBinding('attr.data-disabled'), Input(), __metadata("design:type", Object) ], LinkComponent.prototype, "disabled", void 0); __decorate([ PropertyApi({ description: 'Link outline', path: 'ui.outline', default: Outline.transparent, options: [Outline.transparent, Outline.ghost, Outline.fill] }), Input(), __metadata("design:type", String), __metadata("design:paramtypes", [String]) ], LinkComponent.prototype, "outline", null); __decorate([ PropertyApi({ description: 'Icon for link', type: 'string', name: 'icon' }), Input('icon'), __metadata("design:type", Object), __metadata("design:paramtypes", [Object]) ], LinkComponent.prototype, "__icon__", null); __decorate([ HostBinding('attr.data-position'), __metadata("design:type", Object), __metadata("design:paramtypes", []) ], LinkComponent.prototype, "position", null); __decorate([ PropertyApi({ description: 'Link title', type: 'string' }), Input(), __metadata("design:type", String) ], LinkComponent.prototype, "title", void 0); __decorate([ PropertyApi({ description: 'Link query params', type: '{[k: string]: any}' }), Input(), __metadata("design:type", Object) ], LinkComponent.prototype, "queryParams", void 0); __decorate([ PropertyApi({ description: 'Link source', type: 'string | string[]' }), Input(), __metadata("design:type", Object), __metadata("design:paramtypes", [Object]) ], LinkComponent.prototype, "source", null); __decorate([ HostBinding('attr.data-orphan'), __metadata("design:type", Object) ], LinkComponent.prototype, "_orphan", void 0); __decorate([ PropertyApi({ description: 'Link target', path: 'ui.target', default: LinkTarget.self, options: [LinkTarget.blank, LinkTarget.self, LinkTarget.parent, LinkTarget.top] }), Input(), __metadata("design:type", String), __metadata("design:paramtypes", [String]) ], LinkComponent.prototype, "target", null); __decorate([ PropertyApi({ description: 'Fragment for link #anchor', default: 'null', }), Input(), __metadata("design:type", String) ], LinkComponent.prototype, "fragment", void 0); __decorate([ PropertyApi({ description: 'Matching to activate link', path: 'ui.matching', default: UrlMatching.fullMatch, options: [UrlMatching.fullMatch, UrlMatching.wildcard] }), Input(), __metadata("design:type", String), __metadata("design:paramtypes", [String]) ], LinkComponent.prototype, "matching", null); __decorate([ PropertyApi({ description: 'Show chevron near link', path: 'ui.feature', options: [Feature.dropdown], }), HostBinding('attr.data-features'), Input(), __metadata("design:type", Array) ], LinkComponent.prototype, "features", void 0); __decorate([ PropertyApi({ description: 'Link context', path: 'ui.context', default: Context.text, options: [Context.text, Context.box] }), Input(), __metadata("design:type", String), __metadata("design:paramtypes", [String]) ], LinkComponent.prototype, "context", null); __decorate([ ViewChild(RouterLinkActive), __metadata("design:type", RouterLinkActive) ], LinkComponent.prototype, "linkRef", void 0); __decorate([ ContentChildren(BadgeComponent), __metadata("design:type", QueryList) ], LinkComponent.prototype, "badges", void 0); LinkComponent = __decorate([ Component({ selector: 'jnt-link', template: "<ng-container *ngIf=\"externalLink; else internalLinkTemplate\">\n <ng-container *ngIf=\"!!source; else emptySourceTemplate\">\n <a child-of=\"jnt-link-host\" data-link [href]=\"source\" [target]=\"'_' + target\">\n <ng-container *ngTemplateOutlet=\"linkTemplate\"></ng-container>\n </a>\n </ng-container>\n <ng-template #emptySourceTemplate>\n <a child-of=\"jnt-link-host\" data-link>\n <ng-container *ngTemplateOutlet=\"linkTemplate\"></ng-container>\n </a>\n </ng-template>\n</ng-container>\n\n<ng-template #internalLinkTemplate>\n <a child-of=\"jnt-link-host\" data-link #link=\"routerLinkActive\" routerLinkActive [attr.data-active]=\"link.isActive\"\n [routerLink]=\"source\"\n [routerLinkActiveOptions]=\"{exact: matching === ui.matching.fullMatch}\"\n [queryParams]=\"queryParams\"\n [fragment]=\"fragment\">\n <ng-container *ngTemplateOutlet=\"linkTemplate\"></ng-container>\n </a>\n</ng-template>\n\n<ng-template #linkTemplate>\n <span child-of=\"jnt-link-host\" data-title *ngIf=\"!!icon || !!title\">\n <jnt-icon child-of=\"jnt-link-host\" *ngIf=\"!!icon && icon.position === ui.position.left\" [icon]=\"icon?.icon\"></jnt-icon>\n <span child-of=\"jnt-link-host\" *ngIf=\"!!title\" [innerHTML]=\"title | sanitizeHtml\"></span>\n <jnt-icon child-of=\"jnt-link-host\" *ngIf=\"!!icon && icon.position === ui.position.right\" [icon]=\"icon?.icon\"></jnt-icon>\n </span>\n <div child-of=\"jnt-link-host\" data-empty *ngIf=\"collapsed && !icon\"></div>\n <ng-container *ngIf=\"!!badges.length\">\n <jnt-badge child-of=\"jnt-link-host\" data-badge *ngFor=\"let badge of badges\"\n [color]=\"badge.color\"\n [value]=\"badge.value\"\n [text]=\"badge.text\"\n [position]=\"ui.position.inline\">\n </jnt-badge>\n </ng-container>\n <jnt-icon child-of=\"jnt-link-host\" *ngIf=\"features | includes : ui.feature.dropdown\"\n [icon]=\"ui.icons.selectClose\" data-toggle>\n </jnt-icon>\n</ng-template>" }) ], LinkComponent); return LinkComponent; }()); export { LinkComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AanVudGUvdWkvIiwic291cmNlcyI6WyJsaWIvbmF2aWdhdGlvbi9saW5rL2xpbmsuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBV3JDO0lBQUE7UUFFcUMsU0FBSSxHQUFHLGVBQWUsQ0FBQztRQUUxRCxPQUFFLEdBQUcsRUFBRSxDQUFDO1FBSUEsWUFBTyxHQUFlLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDdEMsY0FBUyxHQUFnQixXQUFXLENBQUMsU0FBUyxDQUFDO1FBRXZELGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBR3BCLGFBQVEsR0FBWSxPQUFPLENBQUMsSUFBSSxDQUFDO1FBR2pDLGFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFD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O1lBQ3BCLDYvREFBdUM7U0FDeEMsQ0FBQztPQUNXLGFBQWEsQ0FzS3pCO0lBQUQsb0JBQUM7Q0FBQSxBQXRLRCxJQXNLQztTQXRLWSxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEhvc3RCaW5kaW5nLCBJbnB1dCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlckxpbmtBY3RpdmUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUHJvcGVydHlBcGkgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMvYXBpJztcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tICcuLi8uLi9jb3JlL2VudW1zL2NvbnRleHQnO1xuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gJy4uLy4uL2NvcmUvZW51bXMvZmVhdHVyZSc7XG5pbXBvcnQgeyBPdXRsaW5lIH0gZnJvbSAnLi4vLi4vY29yZS9lbnVtcy9vdXRsaW5lJztcbmltcG9ydCB7IFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vY29yZS9lbnVtcy9wb3NpdGlvbic7XG5pbXBvcnQgeyBVSSB9IGZyb20gJy4uLy4uL2NvcmUvZW51bXMvdWknO1xuaW1wb3J0IHsgVXJsTWF0Y2hpbmcgfSBmcm9tICcuLi8uLi9jb3JlL2VudW1zL3VybCc7XG5pbXBvcnQgeyBCYWRnZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL2JhZGdlL2JhZGdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMaW5rVGFyZ2V0IH0gZnJvbSAnLi9lbnVtcyc7XG5cbmludGVyZmFjZSBJY29uIHtcbiAgaWNvbjogc3RyaW5nO1xuICBwb3NpdGlvbjogUG9zaXRpb247XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2pudC1saW5rJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpbmsuZW5jYXBzdWxhdGVkLmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIExpbmtDb21wb25lbnQge1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5ob3N0JykgcmVhZG9ubHkgaG9zdCA9ICdqbnQtbGluay1ob3N0JztcblxuICB1aSA9IFVJO1xuICBpY29uOiBJY29uO1xuXG4gIHByaXZhdGUgX3NvdXJjZTogc3RyaW5nIHwgYW55W107XG4gIHByaXZhdGUgX3RhcmdldDogTGlua1RhcmdldCA9IExpbmtUYXJnZXQuc2VsZjtcbiAgcHJpdmF0ZSBfbWF0Y2hpbmc6IFVybE1hdGNoaW5nID0gVXJsTWF0Y2hpbmcuZnVsbE1hdGNoO1xuXG4gIGV4dGVybmFsTGluayA9IHRydWU7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtY29udGV4dCcpXG4gIF9jb250ZXh0OiBDb250ZXh0ID0gQ29udGV4dC50ZXh0O1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLW91dGxpbmUnKVxuICBfb3V0bGluZSA9IE91dGxpbmUudHJhbnNwYXJlbnQ7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtd2l0aC10aXRsZScpXG4gIGdldCB3aXRoVGl0bGUoKSB7XG4gICAgcmV0dXJuICEhdGhpcy50aXRsZTtcbiAgfVxuXG4gIEBJbnB1dCgpIGNvbGxhcHNlZDogYm9vbGVhbjtcblxuICAvLyBUT0RPOiB3ZSBtdXN0IGZpbmQgYmV0dGVyIHNvbHV0aW9uXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLWFjdGl2ZScpXG4gIGdldCBsaW5rQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMubGlua1JlZiA/IHRoaXMubGlua1JlZi5pc0FjdGl2ZSA6IGZhbHNlO1xuICB9XG5cbiAgQFByb3BlcnR5QXBpKHtcbiAgICBkZXNjcmlwdGlvbjogJ0Rpc2FibGUgbGluaycsXG4gICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIGRlZmF1bHQ6ICdmYWxzZSdcbiAgfSlcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtZGlzYWJsZWQnKVxuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBQcm9wZXJ0eUFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdMaW5rIG91dGxpbmUnLFxuICAgIHBhdGg6ICd1aS5vdXRsaW5lJyxcbiAgICBkZWZhdWx0OiBPdXRsaW5lLnRyYW5zcGFyZW50LFxuICAgIG9wdGlvbnM6IFtPdXRsaW5lLnRyYW5zcGFyZW50LFxuICAgICAgT3V0bGluZS5naG9zdCxcbiAgICAgIE91dGxpbmUuZmlsbF1cbiAgfSlcbiAgQElucHV0KCkgc2V0IG91dGxpbmUob3V0bGluZTogT3V0bGluZSkge1xuICAgIHRoaXMuX291dGxpbmUgPSBvdXRsaW5lIHx8IE91dGxpbmUudHJhbnNwYXJlbnQ7XG4gIH1cblxuICBAUHJvcGVydHlBcGkoe1xuICAgIGRlc2NyaXB0aW9uOiAnSWNvbiBmb3IgbGluaycsXG4gICAgdHlwZTogJ3N0cmluZycsXG4gICAgbmFtZTogJ2ljb24nXG4gIH0pXG4gIEBJbnB1dCgnaWNvbicpXG4gIHNldCBfX2ljb25fXyhpY29uOiBzdHJpbmcgfCBJY29uKSB7XG4gICAgdGhpcy5pY29uID0gKHR5cGVvZiAoaWNvbikgPT09ICdzdHJpbmcnXG4gICAgICA/IHtpY29uOiBpY29uLCBwb3NpdGlvbjogUG9zaXRpb24ubGVmdH0gOiBpY29uKSBhcyBJY29uO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtcG9zaXRpb24nKSBnZXQgcG9zaXRpb24oKSB7XG4gICAgcmV0dXJuICEhdGhpcy5pY29uID8gdGhpcy5pY29uLnBvc2l0aW9uIDogbnVsbDtcbiAgfVxuXG4gIEBQcm9wZXJ0eUFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdMaW5rIHRpdGxlJyxcbiAgICB0eXBlOiAnc3RyaW5nJ1xuICB9KVxuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuXG4gIEBQcm9wZXJ0eUFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdMaW5rIHF1ZXJ5IHBhcmFtcycsXG4gICAgdHlwZTogJ3tbazogc3RyaW5nXTogYW55fSdcbiAgfSlcbiAgQElucHV0KClcbiAgcXVlcnlQYXJhbXM6IHtbazogc3RyaW5nXTogYW55fTtcblxuICBAUHJvcGVydHlBcGkoe1xuICAgIGRlc2NyaXB0aW9uOiAnTGluayBzb3VyY2UnLFxuICAgIHR5cGU6ICdzdHJpbmcgfCBzdHJpbmdbXSdcbiAgfSlcbiAgQElucHV0KClcbiAgc2V0IHNvdXJjZShzb3VyY2U6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgaWYgKCEhc291cmNlKSB7XG4gICAgICB0aGlzLmV4dGVybmFsTGluayA9ICFBcnJheS5pc0FycmF5KHNvdXJjZSk7XG4gICAgICB0aGlzLl9zb3VyY2UgPSBzb3VyY2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX29ycGhhbiA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNvdXJjZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc291cmNlO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtb3JwaGFuJylcbiAgX29ycGhhbiA9IGZhbHNlO1xuXG4gIEBQcm9wZXJ0eUFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdMaW5rIHRhcmdldCcsXG4gICAgcGF0aDogJ3VpLnRhcmdldCcsXG4gICAgZGVmYXVsdDogTGlua1RhcmdldC5zZWxmLFxuICAgIG9wdGlvbnM6IFtMaW5rVGFyZ2V0LmJsYW5rLFxuICAgICAgTGlua1RhcmdldC5zZWxmLFxuICAgICAgTGlua1RhcmdldC5wYXJlbnQsXG4gICAgICBMaW5rVGFyZ2V0LnRvcF1cbiAgfSlcbiAgQElucHV0KClcbiAgc2V0IHRhcmdldCh0YXJnZXQ6IExpbmtUYXJnZXQpIHtcbiAgICB0aGlzLl90YXJnZXQgPSB0YXJnZXQgfHwgTGlua1RhcmdldC5zZWxmO1xuICB9XG5cbiAgZ2V0IHRhcmdldCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdGFyZ2V0O1xuICB9XG5cbiAgQFByb3BlcnR5QXBpKHtcbiAgICBkZXNjcmlwdGlvbjogJ0ZyYWdtZW50IGZvciBsaW5rICNhbmNob3InLFxuICAgIGRlZmF1bHQ6ICdudWxsJyxcbiAgfSlcbiAgQElucHV0KClcbiAgZnJhZ21lbnQ6IHN0cmluZztcblxuICBAUHJvcGVydHlBcGkoe1xuICAgIGRlc2NyaXB0aW9uOiAnTWF0Y2hpbmcgdG8gYWN0aXZhdGUgbGluaycsXG4gICAgcGF0aDogJ3VpLm1hdGNoaW5nJyxcbiAgICBkZWZhdWx0OiBVcmxNYXRjaGluZy5mdWxsTWF0Y2gsXG4gICAgb3B0aW9uczogW1VybE1hdGNoaW5nLmZ1bGxNYXRjaCwgVXJsTWF0Y2hpbmcud2lsZGNhcmRdXG4gIH0pXG4gIEBJbnB1dCgpXG4gIHNldCBtYXRjaGluZyhtYXRjaGluZzogVXJsTWF0Y2hpbmcpIHtcbiAgICB0aGlzLl9tYXRjaGluZyA9IG1hdGNoaW5nIHx8IFVybE1hdGNoaW5nLmZ1bGxNYXRjaDtcbiAgfVxuXG4gIGdldCBtYXRjaGluZygpIHtcbiAgICByZXR1cm4gdGhpcy5fbWF0Y2hpbmc7XG4gIH1cblxuICBAUHJvcGVydHlBcGkoe1xuICAgIGRlc2NyaXB0aW9uOiAnU2hvdyBjaGV2cm9uIG5lYXIgbGluaycsXG4gICAgcGF0aDogJ3VpLmZlYXR1cmUnLFxuICAgIG9wdGlvbnM6IFtGZWF0dXJlLmRyb3Bkb3duXSxcbiAgfSlcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtZmVhdHVyZXMnKVxuICBASW5wdXQoKVxuICBmZWF0dXJlczogRmVhdHVyZVtdID0gW107XG5cbiAgQFByb3BlcnR5QXBpKHtcbiAgICBkZXNjcmlwdGlvbjogJ0xpbmsgY29udGV4dCcsXG4gICAgcGF0aDogJ3VpLmNvbnRleHQnLFxuICAgIGRlZmF1bHQ6IENvbnRleHQudGV4dCxcbiAgICBvcHRpb25zOiBbQ29udGV4dC50ZXh0LCBDb250ZXh0LmJveF1cbiAgfSlcbiAgQElucHV0KClcbiAgc2V0IGNvbnRleHQoY29udGV4dDogQ29udGV4dCkge1xuICAgIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0IHx8IENvbnRleHQudGV4dDtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoUm91dGVyTGlua0FjdGl2ZSlcbiAgbGlua1JlZjogUm91dGVyTGlua0FjdGl2ZTtcblxuICBAQ29udGVudENoaWxkcmVuKEJhZGdlQ29tcG9uZW50KVxuICBiYWRnZXM6IFF1ZXJ5TGlzdDxCYWRnZUNvbXBvbmVudD47XG59XG4iXX0=