ngx-angular-qrcode
Version:
This library allow you to create beautiful QR Codes in Angular application.
222 lines • 23.7 kB
JavaScript
import { __assign, __decorate } from "tslib";
import { Component, Input, ViewChild } from '@angular/core';
import QRCodeStyling from 'qr-code-styling';
import { DefaultQrConfiguration, QrPreviewSize } from './default-qr-config';
var NgxAngularQrcodeComponent = /** @class */ (function () {
function NgxAngularQrcodeComponent() {
}
NgxAngularQrcodeComponent.prototype.ngOnInit = function () {
};
NgxAngularQrcodeComponent.prototype.ngOnChanges = function (changes) {
this.displayQr();
};
NgxAngularQrcodeComponent.prototype.ngAfterContentInit = function () {
console.debug('🔥 this.qrData', this.qrData);
this.displayQr();
};
NgxAngularQrcodeComponent.prototype.displayQr = function () {
var _a, _b, _c, _d, _e, _f, _g;
if (!QRCodeStyling) {
return;
}
this.qrCodeCanvas.nativeElement.innerHTML = '';
var dotsGradient = {
type: this.dotsGradientType,
rotation: this.dotsGradientRotation,
colorStops: [
{
offset: 0,
color: this.dotsStartColor
},
{
offset: 1,
color: this.dotsEndColor
}
]
};
var cornerSquareGradient = {
type: this.cornerSquareGradientType,
rotation: this.cornerSquareGradientRotation,
colorStops: [
{
offset: 0,
color: this.cornerSquareStartColor
},
{
offset: 1,
color: this.cornerSquareEndColor
}
]
};
var backgroundGradient = {
type: this.backgroundGradientType,
rotation: this.backgroundGradientRotation,
colorStops: [
{
offset: 0,
color: this.backgroundStartColor
},
{
offset: 1,
color: this.backgroundEndColor
}
]
};
var cornerDotGradient = {
type: this.cornerDotGradientType,
rotation: this.cornerDotGradientRotation,
colorStops: [
{
offset: 0,
color: this.cornerDotStartColor
},
{
offset: 1,
color: this.cornerDotEndColor
}
]
};
var config = __assign(__assign({}, DefaultQrConfiguration), { shape: this.shape, width: this.width || QrPreviewSize.width, height: this.height || QrPreviewSize.height, margin: this.margin || DefaultQrConfiguration.margin, data: this.qrData || 'https://qrtrac.com', image: this.imageUrl, dotsOptions: __assign({ type: this.dotsType || ((_a = DefaultQrConfiguration.dotsOptions) === null || _a === void 0 ? void 0 : _a.type), color: this.dotsColor }, (this.dotsGradient && { gradient: dotsGradient })), cornersSquareOptions: __assign({ type: this.cornerSquareType || ((_b = DefaultQrConfiguration.cornersSquareOptions) === null || _b === void 0 ? void 0 : _b.type), color: this.cornerSquareColor }, (this.cornerSquareGradient && { gradient: cornerSquareGradient })), cornersDotOptions: __assign({ type: this.cornerDotType || ((_c = DefaultQrConfiguration.cornersDotOptions) === null || _c === void 0 ? void 0 : _c.type), color: this.cornerDotColor }, (this.cornerDotGradient && { gradient: cornerDotGradient })), backgroundOptions: __assign({ color: this.backgroundColor }, (this.backgroundGradient && { gradient: backgroundGradient })), imageOptions: {
imageSize: this.imageSize || ((_d = DefaultQrConfiguration.imageOptions) === null || _d === void 0 ? void 0 : _d.imageSize),
margin: this.imageMargin || ((_e = DefaultQrConfiguration.imageOptions) === null || _e === void 0 ? void 0 : _e.margin),
hideBackgroundDots: this.hideImageBackgroundDots || ((_f = DefaultQrConfiguration.imageOptions) === null || _f === void 0 ? void 0 : _f.hideBackgroundDots)
}, qrOptions: {
errorCorrectionLevel: this.errorCorrectionLevel || ((_g = DefaultQrConfiguration.qrOptions) === null || _g === void 0 ? void 0 : _g.errorCorrectionLevel)
} });
this.qrCodeStyle = new QRCodeStyling(config);
this.qrCodeStyle.append(this.qrCodeCanvas.nativeElement);
};
NgxAngularQrcodeComponent.prototype.download = function (fileExtension, qrName) {
console.debug('🔥 download called');
this.qrCodeStyle.download({
name: qrName || 'ngxs-qrcode',
extension: fileExtension
});
};
__decorate([
ViewChild('qrCodeCanvas', { static: true })
], NgxAngularQrcodeComponent.prototype, "qrCodeCanvas", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "qrData", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "imageUrl", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "shape", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "width", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "height", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "margin", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "dotsType", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "dotsGradient", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "dotsGradientType", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "dotsGradientRotation", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "dotsColor", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "dotsStartColor", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "dotsEndColor", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "cornerSquareType", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "cornerSquareGradient", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "cornerSquareGradientType", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "cornerSquareGradientRotation", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "cornerSquareColor", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "cornerSquareStartColor", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "cornerSquareEndColor", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "cornerDotType", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "cornerDotGradient", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "cornerDotGradientType", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "cornerDotGradientRotation", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "cornerDotColor", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "cornerDotStartColor", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "cornerDotEndColor", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "backgroundType", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "backgroundGradient", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "backgroundGradientType", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "backgroundGradientRotation", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "backgroundColor", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "backgroundStartColor", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "backgroundEndColor", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "imageSize", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "imageMargin", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "hideImageBackgroundDots", void 0);
__decorate([
Input()
], NgxAngularQrcodeComponent.prototype, "errorCorrectionLevel", void 0);
NgxAngularQrcodeComponent = __decorate([
Component({
selector: 'qr-code',
template: "\n <div #qrCodeCanvas></div> \n "
})
], NgxAngularQrcodeComponent);
return NgxAngularQrcodeComponent;
}());
export { NgxAngularQrcodeComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWFuZ3VsYXItcXJjb2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1hbmd1bGFyLXFyY29kZS8iLCJzb3VyY2VzIjpbImxpYi9uZ3gtYW5ndWxhci1xcmNvZGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBYyxLQUFLLEVBQTRCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLGFBQTJKLE1BQU0saUJBQWlCLENBQUM7QUFDMUwsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBVTVFO0lBQUE7SUFtTEEsQ0FBQztJQTVIQyw0Q0FBUSxHQUFSO0lBQ0EsQ0FBQztJQUVELCtDQUFXLEdBQVgsVUFBWSxPQUFzQjtRQUNoQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELHNEQUFrQixHQUFsQjtRQUNFLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsNkNBQVMsR0FBVDs7UUFDRSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2xCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDL0MsSUFBTSxZQUFZLEdBQWE7WUFDN0IsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0M7WUFDM0MsUUFBUSxFQUFFLElBQUksQ0FBQyxvQkFBb0I7WUFDbkMsVUFBVSxFQUFFO2dCQUNWO29CQUNFLE1BQU0sRUFBRSxDQUFDO29CQUNULEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYztpQkFDM0I7Z0JBQ0Q7b0JBQ0UsTUFBTSxFQUFFLENBQUM7b0JBQ1QsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZO2lC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QztPQUNXLHlCQUF5QixDQW1MckM7SUFBRCxnQ0FBQztDQUFBLEFBbkxELElBbUxDO1NBbkxZLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgUVJDb2RlU3R5bGluZywgeyBDb3JuZXJEb3RUeXBlLCBDb3JuZXJTcXVhcmVUeXBlLCBEb3RUeXBlLCBFcnJvckNvcnJlY3Rpb25MZXZlbCwgRmlsZUV4dGVuc2lvbiwgR3JhZGllbnQsIEdyYWRpZW50VHlwZSwgZ3JhZGllbnRUeXBlcywgT3B0aW9ucywgU2hhcGVUeXBlIH0gZnJvbSAncXItY29kZS1zdHlsaW5nJztcbmltcG9ydCB7IERlZmF1bHRRckNvbmZpZ3VyYXRpb24sIFFyUHJldmlld1NpemUgfSBmcm9tICcuL2RlZmF1bHQtcXItY29uZmlnJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncXItY29kZScsXG4gIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgI3FyQ29kZUNhbnZhcz48L2Rpdj4gICAgXG4gIGAsXG4gIHN0eWxlczogW1xuICBdXG59KVxuZXhwb3J0IGNsYXNzIE5neEFuZ3VsYXJRcmNvZGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyQ29udGVudEluaXQge1xuICBAVmlld0NoaWxkKCdxckNvZGVDYW52YXMnLCB7IHN0YXRpYzogdHJ1ZSB9KSBxckNvZGVDYW52YXMhOiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpIHFyRGF0YSE6IHN0cmluZztcbiAgQElucHV0KCkgaW1hZ2VVcmwhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNoYXBlITogc3RyaW5nIHwgU2hhcGVUeXBlO1xuICBASW5wdXQoKSB3aWR0aCE6IG51bWJlcjtcbiAgQElucHV0KCkgaGVpZ2h0ITogbnVtYmVyO1xuICBASW5wdXQoKSBtYXJnaW4hOiBudW1iZXI7XG5cbiAgLy8gRG90cyBPcHRpb25zXG4gIEBJbnB1dCgpIGRvdHNUeXBlITogc3RyaW5nO1xuICBASW5wdXQoKSBkb3RzR3JhZGllbnQhOiBib29sZWFuO1xuICBASW5wdXQoKSBkb3RzR3JhZGllbnRUeXBlITogc3RyaW5nO1xuICBASW5wdXQoKSBkb3RzR3JhZGllbnRSb3RhdGlvbiE6IG51bWJlcjtcbiAgQElucHV0KCkgZG90c0NvbG9yITogc3RyaW5nO1xuICBASW5wdXQoKSBkb3RzU3RhcnRDb2xvciE6IHN0cmluZztcbiAgQElucHV0KCkgZG90c0VuZENvbG9yITogc3RyaW5nO1xuXG4gIC8vIENvcm5lcnMgU3F1YXJlIE9wdGlvbnNcbiAgQElucHV0KCkgY29ybmVyU3F1YXJlVHlwZSE6IHN0cmluZztcbiAgQElucHV0KCkgY29ybmVyU3F1YXJlR3JhZGllbnQhOiBib29sZWFuO1xuICBASW5wdXQoKSBjb3JuZXJTcXVhcmVHcmFkaWVudFR5cGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNvcm5lclNxdWFyZUdyYWRpZW50Um90YXRpb24hOiBudW1iZXI7XG4gIEBJbnB1dCgpIGNvcm5lclNxdWFyZUNvbG9yITogc3RyaW5nO1xuICBASW5wdXQoKSBjb3JuZXJTcXVhcmVTdGFydENvbG9yITogc3RyaW5nO1xuICBASW5wdXQoKSBjb3JuZXJTcXVhcmVFbmRDb2xvciE6IHN0cmluZztcblxuICAvLyBDb3JuZXJzIERvdCBPcHRpb25zXG4gIEBJbnB1dCgpIGNvcm5lckRvdFR5cGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNvcm5lckRvdEdyYWRpZW50ITogYm9vbGVhbjtcbiAgQElucHV0KCkgY29ybmVyRG90R3JhZGllbnRUeXBlITogc3RyaW5nO1xuICBASW5wdXQoKSBjb3JuZXJEb3RHcmFkaWVudFJvdGF0aW9uITogbnVtYmVyO1xuICBASW5wdXQoKSBjb3JuZXJEb3RDb2xvciE6IHN0cmluZztcbiAgQElucHV0KCkgY29ybmVyRG90U3RhcnRDb2xvciE6IHN0cmluZztcbiAgQElucHV0KCkgY29ybmVyRG90RW5kQ29sb3IhOiBzdHJpbmc7XG5cbiAgLy8gQmFja2dyb3VuZCBPcHRpb25zXG4gIEBJbnB1dCgpIGJhY2tncm91bmRUeXBlITogc3RyaW5nO1xuICBASW5wdXQoKSBiYWNrZ3JvdW5kR3JhZGllbnQhOiBib29sZWFuO1xuICBASW5wdXQoKSBiYWNrZ3JvdW5kR3JhZGllbnRUeXBlITogc3RyaW5nO1xuICBASW5wdXQoKSBiYWNrZ3JvdW5kR3JhZGllbnRSb3RhdGlvbiE6IG51bWJlcjtcbiAgQElucHV0KCkgYmFja2dyb3VuZENvbG9yITogc3RyaW5nO1xuICBASW5wdXQoKSBiYWNrZ3JvdW5kU3RhcnRDb2xvciE6IHN0cmluZztcbiAgQElucHV0KCkgYmFja2dyb3VuZEVuZENvbG9yITogc3RyaW5nO1xuXG4gIC8vIEltYWdlIE9wdGlvbnNcbiAgQElucHV0KCkgaW1hZ2VTaXplITogbnVtYmVyO1xuICBASW5wdXQoKSBpbWFnZU1hcmdpbiE6IG51bWJlcjtcbiAgQElucHV0KCkgaGlkZUltYWdlQmFja2dyb3VuZERvdHMhOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIGVycm9yQ29ycmVjdGlvbkxldmVsITogc3RyaW5nO1xuXG4gIHByaXZhdGUgcXJDb2RlU3R5bGUhOiBRUkNvZGVTdHlsaW5nO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMuZGlzcGxheVFyKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgY29uc29sZS5kZWJ1Zygn8J+UpSB0aGlzLnFyRGF0YScsIHRoaXMucXJEYXRhKTtcbiAgICB0aGlzLmRpc3BsYXlRcigpO1xuICB9XG5cbiAgZGlzcGxheVFyKCk6IHZvaWQge1xuICAgIGlmICghUVJDb2RlU3R5bGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnFyQ29kZUNhbnZhcy5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICcnO1xuICAgIGNvbnN0IGRvdHNHcmFkaWVudDogR3JhZGllbnQgPSB7XG4gICAgICB0eXBlOiB0aGlzLmRvdHNHcmFkaWVudFR5cGUgYXMgR3JhZGllbnRUeXBlLFxuICAgICAgcm90YXRpb246IHRoaXMuZG90c0dyYWRpZW50Um90YXRpb24sXG4gICAgICBjb2xvclN0b3BzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgY29sb3I6IHRoaXMuZG90c1N0YXJ0Q29sb3JcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG9mZnNldDogMSxcbiAgICAgICAgICBjb2xvcjogdGhpcy5kb3RzRW5kQ29sb3JcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH1cblxuICAgIGNvbnN0IGNvcm5lclNxdWFyZUdyYWRpZW50OiBHcmFkaWVudCA9IHtcbiAgICAgIHR5cGU6IHRoaXMuY29ybmVyU3F1YXJlR3JhZGllbnRUeXBlIGFzIEdyYWRpZW50VHlwZSxcbiAgICAgIHJvdGF0aW9uOiB0aGlzLmNvcm5lclNxdWFyZUdyYWRpZW50Um90YXRpb24sXG4gICAgICBjb2xvclN0b3BzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgY29sb3I6IHRoaXMuY29ybmVyU3F1YXJlU3RhcnRDb2xvclxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgb2Zmc2V0OiAxLFxuICAgICAgICAgIGNvbG9yOiB0aGlzLmNvcm5lclNxdWFyZUVuZENvbG9yXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG4gICAgY29uc3QgYmFja2dyb3VuZEdyYWRpZW50OiBHcmFkaWVudCA9IHtcbiAgICAgIHR5cGU6IHRoaXMuYmFja2dyb3VuZEdyYWRpZW50VHlwZSBhcyBHcmFkaWVudFR5cGUsXG4gICAgICByb3RhdGlvbjogdGhpcy5iYWNrZ3JvdW5kR3JhZGllbnRSb3RhdGlvbixcbiAgICAgIGNvbG9yU3RvcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBjb2xvcjogdGhpcy5iYWNrZ3JvdW5kU3RhcnRDb2xvclxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgb2Zmc2V0OiAxLFxuICAgICAgICAgIGNvbG9yOiB0aGlzLmJhY2tncm91bmRFbmRDb2xvclxuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuICAgIGNvbnN0IGNvcm5lckRvdEdyYWRpZW50OiBHcmFkaWVudCA9IHtcbiAgICAgIHR5cGU6IHRoaXMuY29ybmVyRG90R3JhZGllbnRUeXBlIGFzIEdyYWRpZW50VHlwZSxcbiAgICAgIHJvdGF0aW9uOiB0aGlzLmNvcm5lckRvdEdyYWRpZW50Um90YXRpb24sXG4gICAgICBjb2xvclN0b3BzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgY29sb3I6IHRoaXMuY29ybmVyRG90U3RhcnRDb2xvclxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgb2Zmc2V0OiAxLFxuICAgICAgICAgIGNvbG9yOiB0aGlzLmNvcm5lckRvdEVuZENvbG9yXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG5cbiAgICBsZXQgY29uZmlnOiBPcHRpb25zID0ge1xuICAgICAgLi4uRGVmYXVsdFFyQ29uZmlndXJhdGlvbixcbiAgICAgIHNoYXBlOiB0aGlzLnNoYXBlIGFzIFNoYXBlVHlwZSxcbiAgICAgIHdpZHRoOiB0aGlzLndpZHRoIHx8IFFyUHJldmlld1NpemUud2lkdGgsXG4gICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0IHx8IFFyUHJldmlld1NpemUuaGVpZ2h0LFxuICAgICAgbWFyZ2luOiB0aGlzLm1hcmdpbiB8fCBEZWZhdWx0UXJDb25maWd1cmF0aW9uLm1hcmdpbixcbiAgICAgIGRhdGE6IHRoaXMucXJEYXRhIHx8ICdodHRwczovL3FydHJhYy5jb20nLFxuICAgICAgaW1hZ2U6IHRoaXMuaW1hZ2VVcmwsXG4gICAgICBkb3RzT3B0aW9uczoge1xuICAgICAgICB0eXBlOiB0aGlzLmRvdHNUeXBlIGFzIERvdFR5cGUgfHwgRGVmYXVsdFFyQ29uZmlndXJhdGlvbi5kb3RzT3B0aW9ucz8udHlwZSxcbiAgICAgICAgY29sb3I6IHRoaXMuZG90c0NvbG9yLFxuICAgICAgICAuLi4odGhpcy5kb3RzR3JhZGllbnQgJiYgeyBncmFkaWVudDogZG90c0dyYWRpZW50IH0pXG4gICAgICB9LFxuICAgICAgY29ybmVyc1NxdWFyZU9wdGlvbnM6IHtcbiAgICAgICAgdHlwZTogdGhpcy5jb3JuZXJTcXVhcmVUeXBlIGFzIENvcm5lclNxdWFyZVR5cGUgfHwgRGVmYXVsdFFyQ29uZmlndXJhdGlvbi5jb3JuZXJzU3F1YXJlT3B0aW9ucz8udHlwZSxcbiAgICAgICAgY29sb3I6IHRoaXMuY29ybmVyU3F1YXJlQ29sb3IsXG4gICAgICAgIC4uLih0aGlzLmNvcm5lclNxdWFyZUdyYWRpZW50ICYmIHsgZ3JhZGllbnQ6IGNvcm5lclNxdWFyZUdyYWRpZW50IH0pXG4gICAgICB9LFxuICAgICAgY29ybmVyc0RvdE9wdGlvbnM6IHtcbiAgICAgICAgdHlwZTogdGhpcy5jb3JuZXJEb3RUeXBlIGFzIENvcm5lckRvdFR5cGUgfHwgRGVmYXVsdFFyQ29uZmlndXJhdGlvbi5jb3JuZXJzRG90T3B0aW9ucz8udHlwZSxcbiAgICAgICAgY29sb3I6IHRoaXMuY29ybmVyRG90Q29sb3IsXG4gICAgICAgIC4uLih0aGlzLmNvcm5lckRvdEdyYWRpZW50ICYmIHsgZ3JhZGllbnQ6IGNvcm5lckRvdEdyYWRpZW50IH0pXG4gICAgICB9LFxuICAgICAgYmFja2dyb3VuZE9wdGlvbnM6IHtcbiAgICAgICAgY29sb3I6IHRoaXMuYmFja2dyb3VuZENvbG9yLFxuICAgICAgICAuLi4odGhpcy5iYWNrZ3JvdW5kR3JhZGllbnQgJiYgeyBncmFkaWVudDogYmFja2dyb3VuZEdyYWRpZW50IH0pXG4gICAgICB9LFxuICAgICAgaW1hZ2VPcHRpb25zOiB7XG4gICAgICAgIGltYWdlU2l6ZTogdGhpcy5pbWFnZVNpemUgfHwgRGVmYXVsdFFyQ29uZmlndXJhdGlvbi5pbWFnZU9wdGlvbnM/LmltYWdlU2l6ZSxcbiAgICAgICAgbWFyZ2luOiB0aGlzLmltYWdlTWFyZ2luIHx8IERlZmF1bHRRckNvbmZpZ3VyYXRpb24uaW1hZ2VPcHRpb25zPy5tYXJnaW4sXG4gICAgICAgIGhpZGVCYWNrZ3JvdW5kRG90czogdGhpcy5oaWRlSW1hZ2VCYWNrZ3JvdW5kRG90cyB8fCBEZWZhdWx0UXJDb25maWd1cmF0aW9uLmltYWdlT3B0aW9ucz8uaGlkZUJhY2tncm91bmREb3RzXG4gICAgICB9LFxuICAgICAgcXJPcHRpb25zOiB7XG4gICAgICAgIGVycm9yQ29ycmVjdGlvbkxldmVsOiB0aGlzLmVycm9yQ29ycmVjdGlvbkxldmVsIGFzIEVycm9yQ29ycmVjdGlvbkxldmVsIHx8IERlZmF1bHRRckNvbmZpZ3VyYXRpb24ucXJPcHRpb25zPy5lcnJvckNvcnJlY3Rpb25MZXZlbFxuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLnFyQ29kZVN0eWxlID0gbmV3IFFSQ29kZVN0eWxpbmcoY29uZmlnKTtcbiAgICB0aGlzLnFyQ29kZVN0eWxlLmFwcGVuZCh0aGlzLnFyQ29kZUNhbnZhcy5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIGRvd25sb2FkKGZpbGVFeHRlbnNpb246IHN0cmluZywgcXJOYW1lPzogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc29sZS5kZWJ1Zygn8J+UpSBkb3dubG9hZCBjYWxsZWQnLCk7XG4gICAgdGhpcy5xckNvZGVTdHlsZS5kb3dubG9hZCh7XG4gICAgICBuYW1lOiBxck5hbWUgfHwgJ25neHMtcXJjb2RlJyxcbiAgICAgIGV4dGVuc2lvbjogZmlsZUV4dGVuc2lvbiBhcyBGaWxlRXh0ZW5zaW9uXG4gICAgfSlcbiAgfVxuXG59XG4iXX0=