ngx-angular-qrcode
Version:
This library allow you to create beautiful QR Codes in Angular application.
221 lines • 22.8 kB
JavaScript
import { __decorate } from "tslib";
import { Component, Input, ViewChild } from '@angular/core';
import QRCodeStyling from 'qr-code-styling';
import { DefaultQrConfiguration, QrPreviewSize } from './default-qr-config';
let NgxAngularQrcodeComponent = class NgxAngularQrcodeComponent {
ngOnInit() {
}
ngOnChanges(changes) {
this.displayQr();
}
ngAfterContentInit() {
console.debug('🔥 this.qrData', this.qrData);
this.displayQr();
}
displayQr() {
var _a, _b, _c, _d, _e, _f, _g;
if (!QRCodeStyling) {
return;
}
this.qrCodeCanvas.nativeElement.innerHTML = '';
const dotsGradient = {
type: this.dotsGradientType,
rotation: this.dotsGradientRotation,
colorStops: [
{
offset: 0,
color: this.dotsStartColor
},
{
offset: 1,
color: this.dotsEndColor
}
]
};
const cornerSquareGradient = {
type: this.cornerSquareGradientType,
rotation: this.cornerSquareGradientRotation,
colorStops: [
{
offset: 0,
color: this.cornerSquareStartColor
},
{
offset: 1,
color: this.cornerSquareEndColor
}
]
};
const backgroundGradient = {
type: this.backgroundGradientType,
rotation: this.backgroundGradientRotation,
colorStops: [
{
offset: 0,
color: this.backgroundStartColor
},
{
offset: 1,
color: this.backgroundEndColor
}
]
};
const cornerDotGradient = {
type: this.cornerDotGradientType,
rotation: this.cornerDotGradientRotation,
colorStops: [
{
offset: 0,
color: this.cornerDotStartColor
},
{
offset: 1,
color: this.cornerDotEndColor
}
]
};
let config = Object.assign(Object.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: Object.assign({ type: this.dotsType || ((_a = DefaultQrConfiguration.dotsOptions) === null || _a === void 0 ? void 0 : _a.type), color: this.dotsColor }, (this.dotsGradient && { gradient: dotsGradient })), cornersSquareOptions: Object.assign({ type: this.cornerSquareType || ((_b = DefaultQrConfiguration.cornersSquareOptions) === null || _b === void 0 ? void 0 : _b.type), color: this.cornerSquareColor }, (this.cornerSquareGradient && { gradient: cornerSquareGradient })), cornersDotOptions: Object.assign({ type: this.cornerDotType || ((_c = DefaultQrConfiguration.cornersDotOptions) === null || _c === void 0 ? void 0 : _c.type), color: this.cornerDotColor }, (this.cornerDotGradient && { gradient: cornerDotGradient })), backgroundOptions: Object.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);
}
download(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: `
<div #qrCodeCanvas></div>
`
})
], NgxAngularQrcodeComponent);
export { NgxAngularQrcodeComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWFuZ3VsYXItcXJjb2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1hbmd1bGFyLXFyY29kZS8iLCJzb3VyY2VzIjpbImxpYi9uZ3gtYW5ndWxhci1xcmNvZGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBYyxLQUFLLEVBQTRCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLGFBQTJKLE1BQU0saUJBQWlCLENBQUM7QUFDMUwsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBVTVFLElBQWEseUJBQXlCLEdBQXRDLE1BQWEseUJBQXlCO0lBdURwQyxRQUFRO0lBQ1IsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELFNBQVM7O1FBQ1AsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNsQixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQy9DLE1BQU0sWUFBWSxHQUFhO1lBQzdCLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdDO1lBQzNDLFFBQVEsRUFBRSxJQUFJLENBQUMsb0JBQW9CO1lBQ25DLFVBQVUsRUFBRTtnQkFDVjtvQkFDRSxNQUFNLEVBQUUsQ0FBQztvQkFDVCxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWM7aUJBQzNCO2dCQUNEO29CQUNFLE1BQU0sRUFBRSxDQUFDO29CQUNULEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWTtpQkFDekI7YUFD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QztHQUNXLHlCQUF5QixDQW1MckM7U0FuTFkseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBRUkNvZGVTdHlsaW5nLCB7IENvcm5lckRvdFR5cGUsIENvcm5lclNxdWFyZVR5cGUsIERvdFR5cGUsIEVycm9yQ29ycmVjdGlvbkxldmVsLCBGaWxlRXh0ZW5zaW9uLCBHcmFkaWVudCwgR3JhZGllbnRUeXBlLCBncmFkaWVudFR5cGVzLCBPcHRpb25zLCBTaGFwZVR5cGUgfSBmcm9tICdxci1jb2RlLXN0eWxpbmcnO1xuaW1wb3J0IHsgRGVmYXVsdFFyQ29uZmlndXJhdGlvbiwgUXJQcmV2aWV3U2l6ZSB9IGZyb20gJy4vZGVmYXVsdC1xci1jb25maWcnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxci1jb2RlJyxcbiAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiAjcXJDb2RlQ2FudmFzPjwvZGl2PiAgICBcbiAgYCxcbiAgc3R5bGVzOiBbXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTmd4QW5ndWxhclFyY29kZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ3FyQ29kZUNhbnZhcycsIHsgc3RhdGljOiB0cnVlIH0pIHFyQ29kZUNhbnZhcyE6IEVsZW1lbnRSZWY7XG5cbiAgQElucHV0KCkgcXJEYXRhITogc3RyaW5nO1xuICBASW5wdXQoKSBpbWFnZVVybCE6IHN0cmluZztcbiAgQElucHV0KCkgc2hhcGUhOiBzdHJpbmcgfCBTaGFwZVR5cGU7XG4gIEBJbnB1dCgpIHdpZHRoITogbnVtYmVyO1xuICBASW5wdXQoKSBoZWlnaHQhOiBudW1iZXI7XG4gIEBJbnB1dCgpIG1hcmdpbiE6IG51bWJlcjtcblxuICAvLyBEb3RzIE9wdGlvbnNcbiAgQElucHV0KCkgZG90c1R5cGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRvdHNHcmFkaWVudCE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGRvdHNHcmFkaWVudFR5cGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRvdHNHcmFkaWVudFJvdGF0aW9uITogbnVtYmVyO1xuICBASW5wdXQoKSBkb3RzQ29sb3IhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRvdHNTdGFydENvbG9yITogc3RyaW5nO1xuICBASW5wdXQoKSBkb3RzRW5kQ29sb3IhOiBzdHJpbmc7XG5cbiAgLy8gQ29ybmVycyBTcXVhcmUgT3B0aW9uc1xuICBASW5wdXQoKSBjb3JuZXJTcXVhcmVUeXBlITogc3RyaW5nO1xuICBASW5wdXQoKSBjb3JuZXJTcXVhcmVHcmFkaWVudCE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNvcm5lclNxdWFyZUdyYWRpZW50VHlwZSE6IHN0cmluZztcbiAgQElucHV0KCkgY29ybmVyU3F1YXJlR3JhZGllbnRSb3RhdGlvbiE6IG51bWJlcjtcbiAgQElucHV0KCkgY29ybmVyU3F1YXJlQ29sb3IhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNvcm5lclNxdWFyZVN0YXJ0Q29sb3IhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNvcm5lclNxdWFyZUVuZENvbG9yITogc3RyaW5nO1xuXG4gIC8vIENvcm5lcnMgRG90IE9wdGlvbnNcbiAgQElucHV0KCkgY29ybmVyRG90VHlwZSE6IHN0cmluZztcbiAgQElucHV0KCkgY29ybmVyRG90R3JhZGllbnQhOiBib29sZWFuO1xuICBASW5wdXQoKSBjb3JuZXJEb3RHcmFkaWVudFR5cGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNvcm5lckRvdEdyYWRpZW50Um90YXRpb24hOiBudW1iZXI7XG4gIEBJbnB1dCgpIGNvcm5lckRvdENvbG9yITogc3RyaW5nO1xuICBASW5wdXQoKSBjb3JuZXJEb3RTdGFydENvbG9yITogc3RyaW5nO1xuICBASW5wdXQoKSBjb3JuZXJEb3RFbmRDb2xvciE6IHN0cmluZztcblxuICAvLyBCYWNrZ3JvdW5kIE9wdGlvbnNcbiAgQElucHV0KCkgYmFja2dyb3VuZFR5cGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJhY2tncm91bmRHcmFkaWVudCE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGJhY2tncm91bmRHcmFkaWVudFR5cGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJhY2tncm91bmRHcmFkaWVudFJvdGF0aW9uITogbnVtYmVyO1xuICBASW5wdXQoKSBiYWNrZ3JvdW5kQ29sb3IhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJhY2tncm91bmRTdGFydENvbG9yITogc3RyaW5nO1xuICBASW5wdXQoKSBiYWNrZ3JvdW5kRW5kQ29sb3IhOiBzdHJpbmc7XG5cbiAgLy8gSW1hZ2UgT3B0aW9uc1xuICBASW5wdXQoKSBpbWFnZVNpemUhOiBudW1iZXI7XG4gIEBJbnB1dCgpIGltYWdlTWFyZ2luITogbnVtYmVyO1xuICBASW5wdXQoKSBoaWRlSW1hZ2VCYWNrZ3JvdW5kRG90cyE6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgZXJyb3JDb3JyZWN0aW9uTGV2ZWwhOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBxckNvZGVTdHlsZSE6IFFSQ29kZVN0eWxpbmc7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwbGF5UXIoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zb2xlLmRlYnVnKCfwn5SlIHRoaXMucXJEYXRhJywgdGhpcy5xckRhdGEpO1xuICAgIHRoaXMuZGlzcGxheVFyKCk7XG4gIH1cblxuICBkaXNwbGF5UXIoKTogdm9pZCB7XG4gICAgaWYgKCFRUkNvZGVTdHlsaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucXJDb2RlQ2FudmFzLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJyc7XG4gICAgY29uc3QgZG90c0dyYWRpZW50OiBHcmFkaWVudCA9IHtcbiAgICAgIHR5cGU6IHRoaXMuZG90c0dyYWRpZW50VHlwZSBhcyBHcmFkaWVudFR5cGUsXG4gICAgICByb3RhdGlvbjogdGhpcy5kb3RzR3JhZGllbnRSb3RhdGlvbixcbiAgICAgIGNvbG9yU3RvcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBjb2xvcjogdGhpcy5kb3RzU3RhcnRDb2xvclxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgb2Zmc2V0OiAxLFxuICAgICAgICAgIGNvbG9yOiB0aGlzLmRvdHNFbmRDb2xvclxuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuXG4gICAgY29uc3QgY29ybmVyU3F1YXJlR3JhZGllbnQ6IEdyYWRpZW50ID0ge1xuICAgICAgdHlwZTogdGhpcy5jb3JuZXJTcXVhcmVHcmFkaWVudFR5cGUgYXMgR3JhZGllbnRUeXBlLFxuICAgICAgcm90YXRpb246IHRoaXMuY29ybmVyU3F1YXJlR3JhZGllbnRSb3RhdGlvbixcbiAgICAgIGNvbG9yU3RvcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBjb2xvcjogdGhpcy5jb3JuZXJTcXVhcmVTdGFydENvbG9yXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBvZmZzZXQ6IDEsXG4gICAgICAgICAgY29sb3I6IHRoaXMuY29ybmVyU3F1YXJlRW5kQ29sb3JcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH1cbiAgICBjb25zdCBiYWNrZ3JvdW5kR3JhZGllbnQ6IEdyYWRpZW50ID0ge1xuICAgICAgdHlwZTogdGhpcy5iYWNrZ3JvdW5kR3JhZGllbnRUeXBlIGFzIEdyYWRpZW50VHlwZSxcbiAgICAgIHJvdGF0aW9uOiB0aGlzLmJhY2tncm91bmRHcmFkaWVudFJvdGF0aW9uLFxuICAgICAgY29sb3JTdG9wczogW1xuICAgICAgICB7XG4gICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgIGNvbG9yOiB0aGlzLmJhY2tncm91bmRTdGFydENvbG9yXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBvZmZzZXQ6IDEsXG4gICAgICAgICAgY29sb3I6IHRoaXMuYmFja2dyb3VuZEVuZENvbG9yXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG4gICAgY29uc3QgY29ybmVyRG90R3JhZGllbnQ6IEdyYWRpZW50ID0ge1xuICAgICAgdHlwZTogdGhpcy5jb3JuZXJEb3RHcmFkaWVudFR5cGUgYXMgR3JhZGllbnRUeXBlLFxuICAgICAgcm90YXRpb246IHRoaXMuY29ybmVyRG90R3JhZGllbnRSb3RhdGlvbixcbiAgICAgIGNvbG9yU3RvcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBjb2xvcjogdGhpcy5jb3JuZXJEb3RTdGFydENvbG9yXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBvZmZzZXQ6IDEsXG4gICAgICAgICAgY29sb3I6IHRoaXMuY29ybmVyRG90RW5kQ29sb3JcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH1cblxuICAgIGxldCBjb25maWc6IE9wdGlvbnMgPSB7XG4gICAgICAuLi5EZWZhdWx0UXJDb25maWd1cmF0aW9uLFxuICAgICAgc2hhcGU6IHRoaXMuc2hhcGUgYXMgU2hhcGVUeXBlLFxuICAgICAgd2lkdGg6IHRoaXMud2lkdGggfHwgUXJQcmV2aWV3U2l6ZS53aWR0aCxcbiAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQgfHwgUXJQcmV2aWV3U2l6ZS5oZWlnaHQsXG4gICAgICBtYXJnaW46IHRoaXMubWFyZ2luIHx8IERlZmF1bHRRckNvbmZpZ3VyYXRpb24ubWFyZ2luLFxuICAgICAgZGF0YTogdGhpcy5xckRhdGEgfHwgJ2h0dHBzOi8vcXJ0cmFjLmNvbScsXG4gICAgICBpbWFnZTogdGhpcy5pbWFnZVVybCxcbiAgICAgIGRvdHNPcHRpb25zOiB7XG4gICAgICAgIHR5cGU6IHRoaXMuZG90c1R5cGUgYXMgRG90VHlwZSB8fCBEZWZhdWx0UXJDb25maWd1cmF0aW9uLmRvdHNPcHRpb25zPy50eXBlLFxuICAgICAgICBjb2xvcjogdGhpcy5kb3RzQ29sb3IsXG4gICAgICAgIC4uLih0aGlzLmRvdHNHcmFkaWVudCAmJiB7IGdyYWRpZW50OiBkb3RzR3JhZGllbnQgfSlcbiAgICAgIH0sXG4gICAgICBjb3JuZXJzU3F1YXJlT3B0aW9uczoge1xuICAgICAgICB0eXBlOiB0aGlzLmNvcm5lclNxdWFyZVR5cGUgYXMgQ29ybmVyU3F1YXJlVHlwZSB8fCBEZWZhdWx0UXJDb25maWd1cmF0aW9uLmNvcm5lcnNTcXVhcmVPcHRpb25zPy50eXBlLFxuICAgICAgICBjb2xvcjogdGhpcy5jb3JuZXJTcXVhcmVDb2xvcixcbiAgICAgICAgLi4uKHRoaXMuY29ybmVyU3F1YXJlR3JhZGllbnQgJiYgeyBncmFkaWVudDogY29ybmVyU3F1YXJlR3JhZGllbnQgfSlcbiAgICAgIH0sXG4gICAgICBjb3JuZXJzRG90T3B0aW9uczoge1xuICAgICAgICB0eXBlOiB0aGlzLmNvcm5lckRvdFR5cGUgYXMgQ29ybmVyRG90VHlwZSB8fCBEZWZhdWx0UXJDb25maWd1cmF0aW9uLmNvcm5lcnNEb3RPcHRpb25zPy50eXBlLFxuICAgICAgICBjb2xvcjogdGhpcy5jb3JuZXJEb3RDb2xvcixcbiAgICAgICAgLi4uKHRoaXMuY29ybmVyRG90R3JhZGllbnQgJiYgeyBncmFkaWVudDogY29ybmVyRG90R3JhZGllbnQgfSlcbiAgICAgIH0sXG4gICAgICBiYWNrZ3JvdW5kT3B0aW9uczoge1xuICAgICAgICBjb2xvcjogdGhpcy5iYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgIC4uLih0aGlzLmJhY2tncm91bmRHcmFkaWVudCAmJiB7IGdyYWRpZW50OiBiYWNrZ3JvdW5kR3JhZGllbnQgfSlcbiAgICAgIH0sXG4gICAgICBpbWFnZU9wdGlvbnM6IHtcbiAgICAgICAgaW1hZ2VTaXplOiB0aGlzLmltYWdlU2l6ZSB8fCBEZWZhdWx0UXJDb25maWd1cmF0aW9uLmltYWdlT3B0aW9ucz8uaW1hZ2VTaXplLFxuICAgICAgICBtYXJnaW46IHRoaXMuaW1hZ2VNYXJnaW4gfHwgRGVmYXVsdFFyQ29uZmlndXJhdGlvbi5pbWFnZU9wdGlvbnM/Lm1hcmdpbixcbiAgICAgICAgaGlkZUJhY2tncm91bmREb3RzOiB0aGlzLmhpZGVJbWFnZUJhY2tncm91bmREb3RzIHx8IERlZmF1bHRRckNvbmZpZ3VyYXRpb24uaW1hZ2VPcHRpb25zPy5oaWRlQmFja2dyb3VuZERvdHNcbiAgICAgIH0sXG4gICAgICBxck9wdGlvbnM6IHtcbiAgICAgICAgZXJyb3JDb3JyZWN0aW9uTGV2ZWw6IHRoaXMuZXJyb3JDb3JyZWN0aW9uTGV2ZWwgYXMgRXJyb3JDb3JyZWN0aW9uTGV2ZWwgfHwgRGVmYXVsdFFyQ29uZmlndXJhdGlvbi5xck9wdGlvbnM/LmVycm9yQ29ycmVjdGlvbkxldmVsXG4gICAgICB9XG4gICAgfTtcblxuICAgIHRoaXMucXJDb2RlU3R5bGUgPSBuZXcgUVJDb2RlU3R5bGluZyhjb25maWcpO1xuICAgIHRoaXMucXJDb2RlU3R5bGUuYXBwZW5kKHRoaXMucXJDb2RlQ2FudmFzLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgZG93bmxvYWQoZmlsZUV4dGVuc2lvbjogc3RyaW5nLCBxck5hbWU/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zb2xlLmRlYnVnKCfwn5SlIGRvd25sb2FkIGNhbGxlZCcsKTtcbiAgICB0aGlzLnFyQ29kZVN0eWxlLmRvd25sb2FkKHtcbiAgICAgIG5hbWU6IHFyTmFtZSB8fCAnbmd4cy1xcmNvZGUnLFxuICAgICAgZXh0ZW5zaW9uOiBmaWxlRXh0ZW5zaW9uIGFzIEZpbGVFeHRlbnNpb25cbiAgICB9KVxuICB9XG5cbn1cbiJdfQ==