New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

angularx-qrcode

Package Overview
Dependencies
Maintainers
1
Versions
121
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

angularx-qrcode - npm Package Compare versions

Comparing version
18.0.1
to
18.0.2
+2
-1
esm2022/lib/angularx-qrcode.component.mjs

@@ -125,2 +125,3 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, } from "@angular/core";

if (centerImageSrc !== this.centerImage.src) {
this.centerImage.crossOrigin = "anonymous";
this.centerImage.src = centerImageSrc;

@@ -276,2 +277,2 @@ }

}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhcngtcXJjb2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXJ4LXFyY29kZS9zcmMvbGliL2FuZ3VsYXJ4LXFyY29kZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE9BQU8sRUFJTCxRQUFRLEVBQ1IsU0FBUyxFQUNULFFBQVEsR0FDVCxNQUFNLFFBQVEsQ0FBQTs7O0FBY2YsTUFBTSxPQUFPLGVBQWU7SUE2QjFCLFlBQ1UsUUFBbUIsRUFDbkIsU0FBdUI7UUFEdkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBOUJqQixxQkFBZ0IsR0FBRyxLQUFLLENBQUE7UUFDeEIsY0FBUyxHQUFHLFdBQVcsQ0FBQTtRQUN2QixlQUFVLEdBQUcsV0FBVyxDQUFBO1FBQ3hCLGFBQVEsR0FBRyxRQUFRLENBQUE7UUFDbkIsZ0JBQVcsR0FBc0IsUUFBUSxDQUFBO1FBRWxELHlCQUFvQixHQUErQixHQUFHLENBQUE7UUFJN0MsV0FBTSxHQUFHLENBQUMsQ0FBQTtRQUNWLFdBQU0sR0FBRyxFQUFFLENBQUE7UUFDWCxVQUFLLEdBQUcsQ0FBQyxDQUFBO1FBRVQsVUFBSyxHQUFHLEVBQUUsQ0FBQTtRQU9oQixjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQTtRQUkxQyxZQUFPLEdBQW9DLElBQUksQ0FBQTtJQU1uRCxDQUFDO0lBRUcsS0FBSyxDQUFDLFdBQVc7UUFDdEIsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7SUFDM0IsQ0FBQztJQUVTLGlCQUFpQixDQUFDLElBQW1CO1FBQzdDLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLEtB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QTtRQUNqRSxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQzdDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDbkUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDbkMsQ0FBQzs4R0FuVVUsZUFBZTtrR0FBZixlQUFlLDRuQkFGaEIsNENBQTRDOzsyRkFFM0MsZUFBZTtrQkFMM0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsUUFBUTtvQkFDbEIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFFBQVEsRUFBRSw0Q0FBNEM7aUJBQ3ZEO3lHQUVpQixnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFFQyxvQkFBb0I7c0JBRDFCLEtBQUs7Z0JBRVUsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUNVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxLQUFLO3NCQUFwQixLQUFLO2dCQUdVLEdBQUc7c0JBQWxCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxLQUFLO3NCQUFwQixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU07Z0JBRTJDLFVBQVU7c0JBQTNELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlVXJsIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIlxuaW1wb3J0IHtcbiAgUVJDb2RlUmVuZGVyZXJzT3B0aW9ucyxcbiAgUVJDb2RlVG9EYXRhVVJMT3B0aW9ucyxcbiAgUVJDb2RlVG9TdHJpbmdPcHRpb25zLFxuICB0b0NhbnZhcyxcbiAgdG9EYXRhVVJMLFxuICB0b1N0cmluZyxcbn0gZnJvbSBcInFyY29kZVwiXG5pbXBvcnQge1xuICBRUkNvZGVWZXJzaW9uLFxuICBRUkNvZGVFbGVtZW50VHlwZSxcbiAgRml4TWVMYXRlcixcbiAgUVJDb2RlQ29uZmlnVHlwZSxcbiAgUVJDb2RlRXJyb3JDb3JyZWN0aW9uTGV2ZWwsXG59IGZyb20gXCIuL3R5cGVzXCJcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcInFyY29kZVwiLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGA8ZGl2ICNxcmNFbGVtZW50IFtjbGFzc109XCJjc3NDbGFzc1wiPjwvZGl2PmAsXG59KVxuZXhwb3J0IGNsYXNzIFFSQ29kZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHB1YmxpYyBhbGxvd0VtcHR5U3RyaW5nID0gZmFsc2VcbiAgQElucHV0KCkgcHVibGljIGNvbG9yRGFyayA9IFwiIzAwMDAwMGZmXCJcbiAgQElucHV0KCkgcHVibGljIGNvbG9yTGlnaHQgPSBcIiNmZmZmZmZmZlwiXG4gIEBJbnB1dCgpIHB1YmxpYyBjc3NDbGFzcyA9IFwicXJjb2RlXCJcbiAgQElucHV0KCkgcHVibGljIGVsZW1lbnRUeXBlOiBRUkNvZGVFbGVtZW50VHlwZSA9IFwiY2FudmFzXCJcbiAgQElucHV0KClcbiAgcHVibGljIGVycm9yQ29ycmVjdGlvbkxldmVsOiBRUkNvZGVFcnJvckNvcnJlY3Rpb25MZXZlbCA9IFwiTVwiXG4gIEBJbnB1dCgpIHB1YmxpYyBpbWFnZVNyYz86IHN0cmluZ1xuICBASW5wdXQoKSBwdWJsaWMgaW1hZ2VIZWlnaHQ/OiBudW1iZXJcbiAgQElucHV0KCkgcHVibGljIGltYWdlV2lkdGg/OiBudW1iZXJcbiAgQElucHV0KCkgcHVibGljIG1hcmdpbiA9IDRcbiAgQElucHV0KCkgcHVibGljIHFyZGF0YSA9IFwiXCJcbiAgQElucHV0KCkgcHVibGljIHNjYWxlID0gNFxuICBASW5wdXQoKSBwdWJsaWMgdmVyc2lvbj86IFFSQ29kZVZlcnNpb25cbiAgQElucHV0KCkgcHVibGljIHdpZHRoID0gMTBcblxuICAvLyBBY2Nlc3NpYmlsaXR5IGZlYXR1cmVzIGludHJvZHVjZWQgaW4gMTMuMC40K1xuICBASW5wdXQoKSBwdWJsaWMgYWx0Pzogc3RyaW5nXG4gIEBJbnB1dCgpIHB1YmxpYyBhcmlhTGFiZWw/OiBzdHJpbmdcbiAgQElucHV0KCkgcHVibGljIHRpdGxlPzogc3RyaW5nXG5cbiAgQE91dHB1dCgpIHFyQ29kZVVSTCA9IG5ldyBFdmVudEVtaXR0ZXI8U2FmZVVybD4oKVxuXG4gIEBWaWV3Q2hpbGQoXCJxcmNFbGVtZW50XCIsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBxcmNFbGVtZW50ITogRWxlbWVudFJlZlxuXG4gIHB1YmxpYyBjb250ZXh0OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgfCBudWxsID0gbnVsbFxuICBwcml2YXRlIGNlbnRlckltYWdlPzogSFRNTEltYWdlRWxlbWVudFxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyXG4gICkge31cblxuICBwdWJsaWMgYXN5bmMgbmdPbkNoYW5nZXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5jcmVhdGVRUkNvZGUoKVxuICB9XG5cbiAgcHJvdGVjdGVkIGlzVmFsaWRRckNvZGVUZXh0KGRhdGE6IHN0cmluZyB8IG51bGwpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5hbGxvd0VtcHR5U3RyaW5nID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuICEoXG4gICAgICAgIHR5cGVvZiBkYXRhID09PSBcInVuZGVmaW5lZFwiIHx8XG4gICAgICAgIGRhdGEgPT09IFwiXCIgfHxcbiAgICAgICAgZGF0YSA9PT0gXCJudWxsXCIgfHxcbiAgICAgICAgZGF0YSA9PT0gbnVsbFxuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gISh0eXBlb2YgZGF0YSA9PT0gXCJ1bmRlZmluZWRcIilcbiAgfVxuXG4gIHByaXZhdGUgdG9EYXRhVVJMKHFyQ29kZUNvbmZpZzogUVJDb2RlVG9EYXRhVVJMT3B0aW9ucyk6IFByb21pc2U8Rml4TWVMYXRlcj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShcbiAgICAgIChcbiAgICAgICAgcmVzb2x2ZTogKGFyZzogRml4TWVMYXRlcikgPT4gRml4TWVMYXRlcixcbiAgICAgICAgcmVqZWN0OiAoYXJnOiBGaXhNZUxhdGVyKSA9PiBGaXhNZUxhdGVyXG4gICAgICApID0+IHtcbiAgICAgICAgdG9EYXRhVVJMKFxuICAgICAgICAgIHRoaXMucXJkYXRhLFxuICAgICAgICAgIHFyQ29kZUNvbmZpZyxcbiAgICAgICAgICAoZXJyOiBFcnJvciB8IG51bGwgfCB1bmRlZmluZWQsIHVybDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgIHJlamVjdChlcnIpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXNvbHZlKHVybClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgIH1cbiAgICApXG4gIH1cblxuICBwcml2YXRlIHRvQ2FudmFzKFxuICAgIGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQsXG4gICAgcXJDb2RlQ29uZmlnOiBRUkNvZGVSZW5kZXJlcnNPcHRpb25zXG4gICk6IFByb21pc2U8Rml4TWVMYXRlcj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShcbiAgICAgIChcbiAgICAgICAgcmVzb2x2ZTogKGFyZzogRml4TWVMYXRlcikgPT4gRml4TWVMYXRlcixcbiAgICAgICAgcmVqZWN0OiAoYXJnOiBGaXhNZUxhdGVyKSA9PiBGaXhNZUxhdGVyXG4gICAgICApID0+IHtcbiAgICAgICAgdG9DYW52YXMoXG4gICAgICAgICAgY2FudmFzLFxuICAgICAgICAgIHRoaXMucXJkYXRhLFxuICAgICAgICAgIHFyQ29kZUNvbmZpZyxcbiAgICAgICAgICAoZXJyb3I6IEVycm9yIHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgIHJlamVjdChlcnJvcilcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc29sdmUoXCJzdWNjZXNzXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICB9XG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSB0b1NWRyhxckNvZGVDb25maWc6IFFSQ29kZVRvU3RyaW5nT3B0aW9ucyk6IFByb21pc2U8Rml4TWVMYXRlcj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShcbiAgICAgIChcbiAgICAgICAgcmVzb2x2ZTogKGFyZzogRml4TWVMYXRlcikgPT4gRml4TWVMYXRlcixcbiAgICAgICAgcmVqZWN0OiAoYXJnOiBGaXhNZUxhdGVyKSA9PiBGaXhNZUxhdGVyXG4gICAgICApID0+IHtcbiAgICAgICAgdG9TdHJpbmcoXG4gICAgICAgICAgdGhpcy5xcmRhdGEsXG4gICAgICAgICAgcXJDb2RlQ29uZmlnLFxuICAgICAgICAgIChlcnI6IEVycm9yIHwgbnVsbCB8IHVuZGVmaW5lZCwgdXJsOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgcmVqZWN0KGVycilcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc29sdmUodXJsKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgfVxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyRWxlbWVudChlbGVtZW50OiBFbGVtZW50KTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBub2RlIG9mIHRoaXMucXJjRWxlbWVudC5uYXRpdmVFbGVtZW50LmNoaWxkTm9kZXMpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5xcmNFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIG5vZGUpXG4gICAgfVxuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5xcmNFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIGVsZW1lbnQpXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZVFSQ29kZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBTZXQgc2Vuc2l0aXZlIGRlZmF1bHRzXG4gICAgaWYgKHRoaXMudmVyc2lvbiAmJiB0aGlzLnZlcnNpb24gPiA0MCkge1xuICAgICAgY29uc29sZS53YXJuKFwiW2FuZ3VsYXJ4LXFyY29kZV0gbWF4IHZhbHVlIGZvciBgdmVyc2lvbmAgaXMgNDBcIilcbiAgICAgIHRoaXMudmVyc2lvbiA9IDQwXG4gICAgfSBlbHNlIGlmICh0aGlzLnZlcnNpb24gJiYgdGhpcy52ZXJzaW9uIDwgMSkge1xuICAgICAgY29uc29sZS53YXJuKFwiW2FuZ3VsYXJ4LXFyY29kZV1gbWluIHZhbHVlIGZvciBgdmVyc2lvbmAgaXMgMVwiKVxuICAgICAgdGhpcy52ZXJzaW9uID0gMVxuICAgIH0gZWxzZSBpZiAodGhpcy52ZXJzaW9uICE9PSB1bmRlZmluZWQgJiYgaXNOYU4odGhpcy52ZXJzaW9uKSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBcIlthbmd1bGFyeC1xcmNvZGVdIHZlcnNpb24gc2hvdWxkIGJlIGEgbnVtYmVyLCBkZWZhdWx0aW5nIHRvIGF1dG8uXCJcbiAgICAgIClcbiAgICAgIHRoaXMudmVyc2lvbiA9IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBpZiAoIXRoaXMuaXNWYWxpZFFyQ29kZVRleHQodGhpcy5xcmRhdGEpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBcIlthbmd1bGFyeC1xcmNvZGVdIEZpZWxkIGBxcmRhdGFgIGlzIGVtcHR5LCBzZXQgJ2FsbG93RW1wdHlTdHJpbmc9XFxcInRydWVcXFwiJyB0byBvdmVyd3JpdGUgdGhpcyBiZWhhdmlvdXIuXCJcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICAvLyBUaGlzIGlzIGEgd29ya2Fyb3VuZCB0byBhbGxvdyBhbiBlbXB0eSBzdHJpbmcgYXMgcXJkYXRhXG4gICAgICBpZiAodGhpcy5pc1ZhbGlkUXJDb2RlVGV4dCh0aGlzLnFyZGF0YSkgJiYgdGhpcy5xcmRhdGEgPT09IFwiXCIpIHtcbiAgICAgICAgdGhpcy5xcmRhdGEgPSBcIiBcIlxuICAgICAgfVxuXG4gICAgICBjb25zdCBjb25maWc6IFFSQ29kZUNvbmZpZ1R5cGUgPSB7XG4gICAgICAgIGNvbG9yOiB7XG4gICAgICAgICAgZGFyazogdGhpcy5jb2xvckRhcmssXG4gICAgICAgICAgbGlnaHQ6IHRoaXMuY29sb3JMaWdodCxcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3JDb3JyZWN0aW9uTGV2ZWw6IHRoaXMuZXJyb3JDb3JyZWN0aW9uTGV2ZWwsXG4gICAgICAgIG1hcmdpbjogdGhpcy5tYXJnaW4sXG4gICAgICAgIHNjYWxlOiB0aGlzLnNjYWxlLFxuICAgICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb24sXG4gICAgICAgIHdpZHRoOiB0aGlzLndpZHRoLFxuICAgICAgfVxuXG4gICAgICBjb25zdCBjZW50ZXJJbWFnZVNyYyA9IHRoaXMuaW1hZ2VTcmNcbiAgICAgIGNvbnN0IGNlbnRlckltYWdlSGVpZ2h0ID0gdGhpcy5pbWFnZUhlaWdodCB8fCA0MFxuICAgICAgY29uc3QgY2VudGVySW1hZ2VXaWR0aCA9IHRoaXMuaW1hZ2VXaWR0aCB8fCA0MFxuXG4gICAgICBzd2l0Y2ggKHRoaXMuZWxlbWVudFR5cGUpIHtcbiAgICAgICAgY2FzZSBcImNhbnZhc1wiOiB7XG4gICAgICAgICAgY29uc3QgY2FudmFzRWxlbWVudDogSFRNTENhbnZhc0VsZW1lbnQgPVxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpXG4gICAgICAgICAgdGhpcy5jb250ZXh0ID0gY2FudmFzRWxlbWVudC5nZXRDb250ZXh0KFwiMmRcIilcbiAgICAgICAgICB0aGlzLnRvQ2FudmFzKGNhbnZhc0VsZW1lbnQsIGNvbmZpZylcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYXJpYUxhYmVsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoXG4gICAgICAgICAgICAgICAgICBjYW52YXNFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCIsXG4gICAgICAgICAgICAgICAgICBgJHt0aGlzLmFyaWFMYWJlbH1gXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICh0aGlzLnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoXG4gICAgICAgICAgICAgICAgICBjYW52YXNFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgXCJ0aXRsZVwiLFxuICAgICAgICAgICAgICAgICAgYCR7dGhpcy50aXRsZX1gXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGNlbnRlckltYWdlU3JjICYmIHRoaXMuY29udGV4dCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2VudGVySW1hZ2UgPSBuZXcgSW1hZ2UoXG4gICAgICAgICAgICAgICAgICBjZW50ZXJJbWFnZVdpZHRoLFxuICAgICAgICAgICAgICAgICAgY2VudGVySW1hZ2VIZWlnaHRcbiAgICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgICBpZiAoY2VudGVySW1hZ2VTcmMgIT09IHRoaXMuY2VudGVySW1hZ2Uuc3JjKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmNlbnRlckltYWdlLnNyYyA9IGNlbnRlckltYWdlU3JjXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGNlbnRlckltYWdlSGVpZ2h0ICE9PSB0aGlzLmNlbnRlckltYWdlLmhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5jZW50ZXJJbWFnZS5oZWlnaHQgPSBjZW50ZXJJbWFnZUhlaWdodFxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjZW50ZXJJbWFnZVdpZHRoICE9PSB0aGlzLmNlbnRlckltYWdlLndpZHRoKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmNlbnRlckltYWdlLndpZHRoID0gY2VudGVySW1hZ2VXaWR0aFxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGNlbnRlckltYWdlID0gdGhpcy5jZW50ZXJJbWFnZVxuXG4gICAgICAgICAgICAgICAgaWYgKGNlbnRlckltYWdlKSB7XG4gICAgICAgICAgICAgICAgICBjZW50ZXJJbWFnZS5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dD8uZHJhd0ltYWdlKFxuICAgICAgICAgICAgICAgICAgICAgIGNlbnRlckltYWdlLFxuICAgICAgICAgICAgICAgICAgICAgIGNhbnZhc0VsZW1lbnQud2lkdGggLyAyIC0gY2VudGVySW1hZ2VXaWR0aCAvIDIsXG4gICAgICAgICAgICAgICAgICAgICAgY2FudmFzRWxlbWVudC5oZWlnaHQgLyAyIC0gY2VudGVySW1hZ2VIZWlnaHQgLyAyLFxuICAgICAgICAgICAgICAgICAgICAgIGNlbnRlckltYWdlV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgY2VudGVySW1hZ2VIZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMucmVuZGVyRWxlbWVudChjYW52YXNFbGVtZW50KVxuICAgICAgICAgICAgICB0aGlzLmVtaXRRUkNvZGVVUkwoY2FudmFzRWxlbWVudCBhcyBIVE1MQ2FudmFzRWxlbWVudClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIlthbmd1bGFyeC1xcmNvZGVdIGNhbnZhcyBlcnJvcjpcIiwgZSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwic3ZnXCI6IHtcbiAgICAgICAgICBjb25zdCBzdmdQYXJlbnRFbGVtZW50OiBIVE1MRWxlbWVudCA9XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIilcbiAgICAgICAgICB0aGlzLnRvU1ZHKGNvbmZpZylcbiAgICAgICAgICAgIC50aGVuKChzdmdTdHJpbmc6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KFxuICAgICAgICAgICAgICAgIHN2Z1BhcmVudEVsZW1lbnQsXG4gICAgICAgICAgICAgICAgXCJpbm5lckhUTUxcIixcbiAgICAgICAgICAgICAgICBzdmdTdHJpbmdcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBzdmdFbGVtZW50ID0gc3ZnUGFyZW50RWxlbWVudC5maXJzdENoaWxkIGFzIFNWR1NWR0VsZW1lbnRcbiAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoc3ZnRWxlbWVudCwgXCJoZWlnaHRcIiwgYCR7dGhpcy53aWR0aH1gKVxuICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShzdmdFbGVtZW50LCBcIndpZHRoXCIsIGAke3RoaXMud2lkdGh9YClcbiAgICAgICAgICAgICAgdGhpcy5yZW5kZXJFbGVtZW50KHN2Z0VsZW1lbnQpXG4gICAgICAgICAgICAgIHRoaXMuZW1pdFFSQ29kZVVSTChzdmdFbGVtZW50KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiW2FuZ3VsYXJ4LXFyY29kZV0gc3ZnIGVycm9yOlwiLCBlKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJ1cmxcIjpcbiAgICAgICAgY2FzZSBcImltZ1wiOlxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgY29uc3QgaW1nRWxlbWVudDogSFRNTEltYWdlRWxlbWVudCA9XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoXCJpbWdcIilcbiAgICAgICAgICB0aGlzLnRvRGF0YVVSTChjb25maWcpXG4gICAgICAgICAgICAudGhlbigoZGF0YVVybDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmFsdCkge1xuICAgICAgICAgICAgICAgIGltZ0VsZW1lbnQuc2V0QXR0cmlidXRlKFwiYWx0XCIsIHRoaXMuYWx0KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICh0aGlzLmFyaWFMYWJlbCkge1xuICAgICAgICAgICAgICAgIGltZ0VsZW1lbnQuc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLCB0aGlzLmFyaWFMYWJlbClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpbWdFbGVtZW50LnNldEF0dHJpYnV0ZShcInNyY1wiLCBkYXRhVXJsKVxuICAgICAgICAgICAgICBpZiAodGhpcy50aXRsZSkge1xuICAgICAgICAgICAgICAgIGltZ0VsZW1lbnQuc2V0QXR0cmlidXRlKFwidGl0bGVcIiwgdGhpcy50aXRsZSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLnJlbmRlckVsZW1lbnQoaW1nRWxlbWVudClcbiAgICAgICAgICAgICAgdGhpcy5lbWl0UVJDb2RlVVJMKGltZ0VsZW1lbnQpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJbYW5ndWxhcngtcXJjb2RlXSBpbWcvdXJsIGVycm9yOlwiLCBlKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGU6IEZpeE1lTGF0ZXIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJbYW5ndWxhcngtcXJjb2RlXSBFcnJvciBnZW5lcmF0aW5nIFFSIENvZGU6XCIsIGUubWVzc2FnZSlcbiAgICB9XG4gIH1cblxuICBjb252ZXJ0QmFzZTY0SW1hZ2VVcmxUb0Jsb2IoYmFzZTY0SW1hZ2VVcmw6IHN0cmluZykge1xuICAgIC8vIHNwbGl0IGludG8gdHdvIHBhcnRzXG4gICAgY29uc3QgcGFydHMgPSBiYXNlNjRJbWFnZVVybC5zcGxpdChcIjtiYXNlNjQsXCIpXG4gICAgLy8gaG9sZCB0aGUgY29udGVudC9taW1lIHR5cGUgZi5lLiBpbWFnZS9wbmdcbiAgICBjb25zdCBpbWFnZVR5cGUgPSBwYXJ0c1swXS5zcGxpdChcIjpcIilbMV1cbiAgICAvLyBkZWNvZGUgYmFzZTY0IHN0cmluZ1xuICAgIGNvbnN0IGRlY29kZWREYXRhID0gYXRvYihwYXJ0c1sxXSlcbiAgICAvLyBjcmVhdGUgdW5pdDhhcnJheSBvZiBzaXplIHNhbWUgYXMgcm93IGRhdGEgbGVuZ3RoXG4gICAgY29uc3QgdUludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KGRlY29kZWREYXRhLmxlbmd0aClcbiAgICAvLyBpbnNlcnQgYWxsIGNoYXJhY3RlciBjb2RlIGludG8gdWludDhhcnJheVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGVjb2RlZERhdGEubGVuZ3RoOyArK2kpIHtcbiAgICAgIHVJbnQ4QXJyYXlbaV0gPSBkZWNvZGVkRGF0YS5jaGFyQ29kZUF0KGkpXG4gICAgfVxuICAgIC8vIHJldHVybiBibG9iIGltYWdlIGFmdGVyIGNvbnZlcnNpb25cbiAgICByZXR1cm4gbmV3IEJsb2IoW3VJbnQ4QXJyYXldLCB7IHR5cGU6IGltYWdlVHlwZSB9KVxuICB9XG5cbiAgZW1pdFFSQ29kZVVSTChlbGVtZW50OiBIVE1MQ2FudmFzRWxlbWVudCB8IEhUTUxJbWFnZUVsZW1lbnQgfCBTVkdTVkdFbGVtZW50KSB7XG4gICAgY29uc3QgY2xhc3NOYW1lID0gZWxlbWVudC5jb25zdHJ1Y3Rvci5uYW1lXG4gICAgaWYgKGNsYXNzTmFtZSA9PT0gU1ZHU1ZHRWxlbWVudC5uYW1lKSB7XG4gICAgICBjb25zdCBzdmdIVE1MID0gZWxlbWVudC5vdXRlckhUTUxcbiAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbc3ZnSFRNTF0sIHsgdHlwZTogXCJpbWFnZS9zdmcreG1sXCIgfSlcbiAgICAgIGNvbnN0IHVybFN2ZyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYilcbiAgICAgIGNvbnN0IHVybFNhbml0aXplZCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwodXJsU3ZnKVxuICAgICAgdGhpcy5xckNvZGVVUkwuZW1pdCh1cmxTYW5pdGl6ZWQpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBsZXQgdXJsSW1hZ2UgPSBcIlwiXG5cbiAgICBpZiAoY2xhc3NOYW1lID09PSBIVE1MQ2FudmFzRWxlbWVudC5uYW1lKSB7XG4gICAgICB1cmxJbWFnZSA9IChlbGVtZW50IGFzIEhUTUxDYW52YXNFbGVtZW50KS50b0RhdGFVUkwoXCJpbWFnZS9wbmdcIilcbiAgICB9XG5cbiAgICBpZiAoY2xhc3NOYW1lID09PSBIVE1MSW1hZ2VFbGVtZW50Lm5hbWUpIHtcbiAgICAgIHVybEltYWdlID0gKGVsZW1lbnQgYXMgSFRNTEltYWdlRWxlbWVudCkuc3JjXG4gICAgfVxuXG4gICAgY29uc3QgYmxvYkRhdGE6IEJsb2IgPSB0aGlzLmNvbnZlcnRCYXNlNjRJbWFnZVVybFRvQmxvYih1cmxJbWFnZSlcbiAgICBjb25zdCB1cmxCbG9iID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iRGF0YSlcbiAgICBjb25zdCB1cmxTYW5pdGl6ZWQgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKHVybEJsb2IpXG4gICAgdGhpcy5xckNvZGVVUkwuZW1pdCh1cmxTYW5pdGl6ZWQpXG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhcngtcXJjb2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXJ4LXFyY29kZS9zcmMvbGliL2FuZ3VsYXJ4LXFyY29kZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE9BQU8sRUFJTCxRQUFRLEVBQ1IsU0FBUyxFQUNULFFBQVEsR0FDVCxNQUFNLFFBQVEsQ0FBQTs7O0FBY2YsTUFBTSxPQUFPLGVBQWU7SUE2QjFCLFlBQ1UsUUFBbUIsRUFDbkIsU0FBdUI7UUFEdkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBOUJqQixxQkFBZ0IsR0FBRyxLQUFLLENBQUE7UUFDeEIsY0FBUyxHQUFHLFdBQVcsQ0FBQTtRQUN2QixlQUFVLEdBQUcsV0FBVyxDQUFBO1FBQ3hCLGFBQVEsR0FBRyxRQUFRLENBQUE7UUFDbkIsZ0JBQVcsR0FBc0IsUUFBUSxDQUFBO1FBRWxELHlCQUFvQixHQUErQixHQUFHLENBQUE7UUFJN0MsV0FBTSxHQUFHLENBQUMsQ0FBQTtRQUNWLFdBQU0sR0FBRyxFQUFFLENBQUE7UUFDWCxVQUFLLEdBQUcsQ0FBQyxDQUFBO1FBRVQsVUFBSyxHQUFHLEVBQUUsQ0FBQTtRQU9oQixjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQTtRQUkxQyxZQUFPLEdBQW9DLElBQUksQ0FBQTtJQU1uRCxDQUFDO0lBRUcsS0FBSyxDQUFDLFdBQVc7UUFDdEIsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7SUFDM0IsQ0FBQztJQUVTLGlCQUFpQixDQUFDLElBQW1CO1FBQzdDLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLEtB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IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMixcbiAgVmlld0NoaWxkLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVVcmwgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiXG5pbXBvcnQge1xuICBRUkNvZGVSZW5kZXJlcnNPcHRpb25zLFxuICBRUkNvZGVUb0RhdGFVUkxPcHRpb25zLFxuICBRUkNvZGVUb1N0cmluZ09wdGlvbnMsXG4gIHRvQ2FudmFzLFxuICB0b0RhdGFVUkwsXG4gIHRvU3RyaW5nLFxufSBmcm9tIFwicXJjb2RlXCJcbmltcG9ydCB7XG4gIFFSQ29kZVZlcnNpb24sXG4gIFFSQ29kZUVsZW1lbnRUeXBlLFxuICBGaXhNZUxhdGVyLFxuICBRUkNvZGVDb25maWdUeXBlLFxuICBRUkNvZGVFcnJvckNvcnJlY3Rpb25MZXZlbCxcbn0gZnJvbSBcIi4vdHlwZXNcIlxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwicXJjb2RlXCIsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogYDxkaXYgI3FyY0VsZW1lbnQgW2NsYXNzXT1cImNzc0NsYXNzXCI+PC9kaXY+YCxcbn0pXG5leHBvcnQgY2xhc3MgUVJDb2RlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgcHVibGljIGFsbG93RW1wdHlTdHJpbmcgPSBmYWxzZVxuICBASW5wdXQoKSBwdWJsaWMgY29sb3JEYXJrID0gXCIjMDAwMDAwZmZcIlxuICBASW5wdXQoKSBwdWJsaWMgY29sb3JMaWdodCA9IFwiI2ZmZmZmZmZmXCJcbiAgQElucHV0KCkgcHVibGljIGNzc0NsYXNzID0gXCJxcmNvZGVcIlxuICBASW5wdXQoKSBwdWJsaWMgZWxlbWVudFR5cGU6IFFSQ29kZUVsZW1lbnRUeXBlID0gXCJjYW52YXNcIlxuICBASW5wdXQoKVxuICBwdWJsaWMgZXJyb3JDb3JyZWN0aW9uTGV2ZWw6IFFSQ29kZUVycm9yQ29ycmVjdGlvbkxldmVsID0gXCJNXCJcbiAgQElucHV0KCkgcHVibGljIGltYWdlU3JjPzogc3RyaW5nXG4gIEBJbnB1dCgpIHB1YmxpYyBpbWFnZUhlaWdodD86IG51bWJlclxuICBASW5wdXQoKSBwdWJsaWMgaW1hZ2VXaWR0aD86IG51bWJlclxuICBASW5wdXQoKSBwdWJsaWMgbWFyZ2luID0gNFxuICBASW5wdXQoKSBwdWJsaWMgcXJkYXRhID0gXCJcIlxuICBASW5wdXQoKSBwdWJsaWMgc2NhbGUgPSA0XG4gIEBJbnB1dCgpIHB1YmxpYyB2ZXJzaW9uPzogUVJDb2RlVmVyc2lvblxuICBASW5wdXQoKSBwdWJsaWMgd2lkdGggPSAxMFxuXG4gIC8vIEFjY2Vzc2liaWxpdHkgZmVhdHVyZXMgaW50cm9kdWNlZCBpbiAxMy4wLjQrXG4gIEBJbnB1dCgpIHB1YmxpYyBhbHQ/OiBzdHJpbmdcbiAgQElucHV0KCkgcHVibGljIGFyaWFMYWJlbD86IHN0cmluZ1xuICBASW5wdXQoKSBwdWJsaWMgdGl0bGU/OiBzdHJpbmdcblxuICBAT3V0cHV0KCkgcXJDb2RlVVJMID0gbmV3IEV2ZW50RW1pdHRlcjxTYWZlVXJsPigpXG5cbiAgQFZpZXdDaGlsZChcInFyY0VsZW1lbnRcIiwgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIHFyY0VsZW1lbnQhOiBFbGVtZW50UmVmXG5cbiAgcHVibGljIGNvbnRleHQ6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB8IG51bGwgPSBudWxsXG4gIHByaXZhdGUgY2VudGVySW1hZ2U/OiBIVE1MSW1hZ2VFbGVtZW50XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcbiAgKSB7fVxuXG4gIHB1YmxpYyBhc3luYyBuZ09uQ2hhbmdlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmNyZWF0ZVFSQ29kZSgpXG4gIH1cblxuICBwcm90ZWN0ZWQgaXNWYWxpZFFyQ29kZVRleHQoZGF0YTogc3RyaW5nIHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmFsbG93RW1wdHlTdHJpbmcgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gIShcbiAgICAgICAgdHlwZW9mIGRhdGEgPT09IFwidW5kZWZpbmVkXCIgfHxcbiAgICAgICAgZGF0YSA9PT0gXCJcIiB8fFxuICAgICAgICBkYXRhID09PSBcIm51bGxcIiB8fFxuICAgICAgICBkYXRhID09PSBudWxsXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiAhKHR5cGVvZiBkYXRhID09PSBcInVuZGVmaW5lZFwiKVxuICB9XG5cbiAgcHJpdmF0ZSB0b0RhdGFVUkwocXJDb2RlQ29uZmlnOiBRUkNvZGVUb0RhdGFVUkxPcHRpb25zKTogUHJvbWlzZTxGaXhNZUxhdGVyPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKFxuICAgICAgKFxuICAgICAgICByZXNvbHZlOiAoYXJnOiBGaXhNZUxhdGVyKSA9PiBGaXhNZUxhdGVyLFxuICAgICAgICByZWplY3Q6IChhcmc6IEZpeE1lTGF0ZXIpID0+IEZpeE1lTGF0ZXJcbiAgICAgICkgPT4ge1xuICAgICAgICB0b0RhdGFVUkwoXG4gICAgICAgICAgdGhpcy5xcmRhdGEsXG4gICAgICAgICAgcXJDb2RlQ29uZmlnLFxuICAgICAgICAgIChlcnI6IEVycm9yIHwgbnVsbCB8IHVuZGVmaW5lZCwgdXJsOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgcmVqZWN0KGVycilcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc29sdmUodXJsKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgfVxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgdG9DYW52YXMoXG4gICAgY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCxcbiAgICBxckNvZGVDb25maWc6IFFSQ29kZVJlbmRlcmVyc09wdGlvbnNcbiAgKTogUHJvbWlzZTxGaXhNZUxhdGVyPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKFxuICAgICAgKFxuICAgICAgICByZXNvbHZlOiAoYXJnOiBGaXhNZUxhdGVyKSA9PiBGaXhNZUxhdGVyLFxuICAgICAgICByZWplY3Q6IChhcmc6IEZpeE1lTGF0ZXIpID0+IEZpeE1lTGF0ZXJcbiAgICAgICkgPT4ge1xuICAgICAgICB0b0NhbnZhcyhcbiAgICAgICAgICBjYW52YXMsXG4gICAgICAgICAgdGhpcy5xcmRhdGEsXG4gICAgICAgICAgcXJDb2RlQ29uZmlnLFxuICAgICAgICAgIChlcnJvcjogRXJyb3IgfCBudWxsIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzb2x2ZShcInN1Y2Nlc3NcIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgIH1cbiAgICApXG4gIH1cblxuICBwcml2YXRlIHRvU1ZHKHFyQ29kZUNvbmZpZzogUVJDb2RlVG9TdHJpbmdPcHRpb25zKTogUHJvbWlzZTxGaXhNZUxhdGVyPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKFxuICAgICAgKFxuICAgICAgICByZXNvbHZlOiAoYXJnOiBGaXhNZUxhdGVyKSA9PiBGaXhNZUxhdGVyLFxuICAgICAgICByZWplY3Q6IChhcmc6IEZpeE1lTGF0ZXIpID0+IEZpeE1lTGF0ZXJcbiAgICAgICkgPT4ge1xuICAgICAgICB0b1N0cmluZyhcbiAgICAgICAgICB0aGlzLnFyZGF0YSxcbiAgICAgICAgICBxckNvZGVDb25maWcsXG4gICAgICAgICAgKGVycjogRXJyb3IgfCBudWxsIHwgdW5kZWZpbmVkLCB1cmw6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICByZWplY3QoZXJyKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzb2x2ZSh1cmwpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICB9XG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IG5vZGUgb2YgdGhpcy5xcmNFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2hpbGROb2Rlcykge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLnFyY0VsZW1lbnQubmF0aXZlRWxlbWVudCwgbm9kZSlcbiAgICB9XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLnFyY0VsZW1lbnQubmF0aXZlRWxlbWVudCwgZWxlbWVudClcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY3JlYXRlUVJDb2RlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIFNldCBzZW5zaXRpdmUgZGVmYXVsdHNcbiAgICBpZiAodGhpcy52ZXJzaW9uICYmIHRoaXMudmVyc2lvbiA+IDQwKSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJbYW5ndWxhcngtcXJjb2RlXSBtYXggdmFsdWUgZm9yIGB2ZXJzaW9uYCBpcyA0MFwiKVxuICAgICAgdGhpcy52ZXJzaW9uID0gNDBcbiAgICB9IGVsc2UgaWYgKHRoaXMudmVyc2lvbiAmJiB0aGlzLnZlcnNpb24gPCAxKSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJbYW5ndWxhcngtcXJjb2RlXWBtaW4gdmFsdWUgZm9yIGB2ZXJzaW9uYCBpcyAxXCIpXG4gICAgICB0aGlzLnZlcnNpb24gPSAxXG4gICAgfSBlbHNlIGlmICh0aGlzLnZlcnNpb24gIT09IHVuZGVmaW5lZCAmJiBpc05hTih0aGlzLnZlcnNpb24pKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIFwiW2FuZ3VsYXJ4LXFyY29kZV0gdmVyc2lvbiBzaG91bGQgYmUgYSBudW1iZXIsIGRlZmF1bHRpbmcgdG8gYXV0by5cIlxuICAgICAgKVxuICAgICAgdGhpcy52ZXJzaW9uID0gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGlmICghdGhpcy5pc1ZhbGlkUXJDb2RlVGV4dCh0aGlzLnFyZGF0YSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIFwiW2FuZ3VsYXJ4LXFyY29kZV0gRmllbGQgYHFyZGF0YWAgaXMgZW1wdHksIHNldCAnYWxsb3dFbXB0eVN0cmluZz1cXFwidHJ1ZVxcXCInIHRvIG92ZXJ3cml0ZSB0aGlzIGJlaGF2aW91ci5cIlxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIC8vIFRoaXMgaXMgYSB3b3JrYXJvdW5kIHRvIGFsbG93IGFuIGVtcHR5IHN0cmluZyBhcyBxcmRhdGFcbiAgICAgIGlmICh0aGlzLmlzVmFsaWRRckNvZGVUZXh0KHRoaXMucXJkYXRhKSAmJiB0aGlzLnFyZGF0YSA9PT0gXCJcIikge1xuICAgICAgICB0aGlzLnFyZGF0YSA9IFwiIFwiXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbmZpZzogUVJDb2RlQ29uZmlnVHlwZSA9IHtcbiAgICAgICAgY29sb3I6IHtcbiAgICAgICAgICBkYXJrOiB0aGlzLmNvbG9yRGFyayxcbiAgICAgICAgICBsaWdodDogdGhpcy5jb2xvckxpZ2h0LFxuICAgICAgICB9LFxuICAgICAgICBlcnJvckNvcnJlY3Rpb25MZXZlbDogdGhpcy5lcnJvckNvcnJlY3Rpb25MZXZlbCxcbiAgICAgICAgbWFyZ2luOiB0aGlzLm1hcmdpbixcbiAgICAgICAgc2NhbGU6IHRoaXMuc2NhbGUsXG4gICAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvbixcbiAgICAgICAgd2lkdGg6IHRoaXMud2lkdGgsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNlbnRlckltYWdlU3JjID0gdGhpcy5pbWFnZVNyY1xuICAgICAgY29uc3QgY2VudGVySW1hZ2VIZWlnaHQgPSB0aGlzLmltYWdlSGVpZ2h0IHx8IDQwXG4gICAgICBjb25zdCBjZW50ZXJJbWFnZVdpZHRoID0gdGhpcy5pbWFnZVdpZHRoIHx8IDQwXG5cbiAgICAgIHN3aXRjaCAodGhpcy5lbGVtZW50VHlwZSkge1xuICAgICAgICBjYXNlIFwiY2FudmFzXCI6IHtcbiAgICAgICAgICBjb25zdCBjYW52YXNFbGVtZW50OiBIVE1MQ2FudmFzRWxlbWVudCA9XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIilcbiAgICAgICAgICB0aGlzLmNvbnRleHQgPSBjYW52YXNFbGVtZW50LmdldENvbnRleHQoXCIyZFwiKVxuICAgICAgICAgIHRoaXMudG9DYW52YXMoY2FudmFzRWxlbWVudCwgY29uZmlnKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5hcmlhTGFiZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShcbiAgICAgICAgICAgICAgICAgIGNhbnZhc0VsZW1lbnQsXG4gICAgICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIixcbiAgICAgICAgICAgICAgICAgIGAke3RoaXMuYXJpYUxhYmVsfWBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHRoaXMudGl0bGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShcbiAgICAgICAgICAgICAgICAgIGNhbnZhc0VsZW1lbnQsXG4gICAgICAgICAgICAgICAgICBcInRpdGxlXCIsXG4gICAgICAgICAgICAgICAgICBgJHt0aGlzLnRpdGxlfWBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoY2VudGVySW1hZ2VTcmMgJiYgdGhpcy5jb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jZW50ZXJJbWFnZSA9IG5ldyBJbWFnZShcbiAgICAgICAgICAgICAgICAgIGNlbnRlckltYWdlV2lkdGgsXG4gICAgICAgICAgICAgICAgICBjZW50ZXJJbWFnZUhlaWdodFxuICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICAgIGlmIChjZW50ZXJJbWFnZVNyYyAhPT0gdGhpcy5jZW50ZXJJbWFnZS5zcmMpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2VudGVySW1hZ2UuY3Jvc3NPcmlnaW4gPSBcImFub255bW91c1wiXG4gICAgICAgICAgICAgICAgICB0aGlzLmNlbnRlckltYWdlLnNyYyA9IGNlbnRlckltYWdlU3JjXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGNlbnRlckltYWdlSGVpZ2h0ICE9PSB0aGlzLmNlbnRlckltYWdlLmhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5jZW50ZXJJbWFnZS5oZWlnaHQgPSBjZW50ZXJJbWFnZUhlaWdodFxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjZW50ZXJJbWFnZVdpZHRoICE9PSB0aGlzLmNlbnRlckltYWdlLndpZHRoKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmNlbnRlckltYWdlLndpZHRoID0gY2VudGVySW1hZ2VXaWR0aFxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGNlbnRlckltYWdlID0gdGhpcy5jZW50ZXJJbWFnZVxuXG4gICAgICAgICAgICAgICAgaWYgKGNlbnRlckltYWdlKSB7XG4gICAgICAgICAgICAgICAgICBjZW50ZXJJbWFnZS5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dD8uZHJhd0ltYWdlKFxuICAgICAgICAgICAgICAgICAgICAgIGNlbnRlckltYWdlLFxuICAgICAgICAgICAgICAgICAgICAgIGNhbnZhc0VsZW1lbnQud2lkdGggLyAyIC0gY2VudGVySW1hZ2VXaWR0aCAvIDIsXG4gICAgICAgICAgICAgICAgICAgICAgY2FudmFzRWxlbWVudC5oZWlnaHQgLyAyIC0gY2VudGVySW1hZ2VIZWlnaHQgLyAyLFxuICAgICAgICAgICAgICAgICAgICAgIGNlbnRlckltYWdlV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgY2VudGVySW1hZ2VIZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMucmVuZGVyRWxlbWVudChjYW52YXNFbGVtZW50KVxuICAgICAgICAgICAgICB0aGlzLmVtaXRRUkNvZGVVUkwoY2FudmFzRWxlbWVudCBhcyBIVE1MQ2FudmFzRWxlbWVudClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIlthbmd1bGFyeC1xcmNvZGVdIGNhbnZhcyBlcnJvcjpcIiwgZSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwic3ZnXCI6IHtcbiAgICAgICAgICBjb25zdCBzdmdQYXJlbnRFbGVtZW50OiBIVE1MRWxlbWVudCA9XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIilcbiAgICAgICAgICB0aGlzLnRvU1ZHKGNvbmZpZylcbiAgICAgICAgICAgIC50aGVuKChzdmdTdHJpbmc6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KFxuICAgICAgICAgICAgICAgIHN2Z1BhcmVudEVsZW1lbnQsXG4gICAgICAgICAgICAgICAgXCJpbm5lckhUTUxcIixcbiAgICAgICAgICAgICAgICBzdmdTdHJpbmdcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBzdmdFbGVtZW50ID0gc3ZnUGFyZW50RWxlbWVudC5maXJzdENoaWxkIGFzIFNWR1NWR0VsZW1lbnRcbiAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoc3ZnRWxlbWVudCwgXCJoZWlnaHRcIiwgYCR7dGhpcy53aWR0aH1gKVxuICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShzdmdFbGVtZW50LCBcIndpZHRoXCIsIGAke3RoaXMud2lkdGh9YClcbiAgICAgICAgICAgICAgdGhpcy5yZW5kZXJFbGVtZW50KHN2Z0VsZW1lbnQpXG4gICAgICAgICAgICAgIHRoaXMuZW1pdFFSQ29kZVVSTChzdmdFbGVtZW50KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiW2FuZ3VsYXJ4LXFyY29kZV0gc3ZnIGVycm9yOlwiLCBlKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJ1cmxcIjpcbiAgICAgICAgY2FzZSBcImltZ1wiOlxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgY29uc3QgaW1nRWxlbWVudDogSFRNTEltYWdlRWxlbWVudCA9XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoXCJpbWdcIilcbiAgICAgICAgICB0aGlzLnRvRGF0YVVSTChjb25maWcpXG4gICAgICAgICAgICAudGhlbigoZGF0YVVybDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmFsdCkge1xuICAgICAgICAgICAgICAgIGltZ0VsZW1lbnQuc2V0QXR0cmlidXRlKFwiYWx0XCIsIHRoaXMuYWx0KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICh0aGlzLmFyaWFMYWJlbCkge1xuICAgICAgICAgICAgICAgIGltZ0VsZW1lbnQuc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLCB0aGlzLmFyaWFMYWJlbClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpbWdFbGVtZW50LnNldEF0dHJpYnV0ZShcInNyY1wiLCBkYXRhVXJsKVxuICAgICAgICAgICAgICBpZiAodGhpcy50aXRsZSkge1xuICAgICAgICAgICAgICAgIGltZ0VsZW1lbnQuc2V0QXR0cmlidXRlKFwidGl0bGVcIiwgdGhpcy50aXRsZSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLnJlbmRlckVsZW1lbnQoaW1nRWxlbWVudClcbiAgICAgICAgICAgICAgdGhpcy5lbWl0UVJDb2RlVVJMKGltZ0VsZW1lbnQpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJbYW5ndWxhcngtcXJjb2RlXSBpbWcvdXJsIGVycm9yOlwiLCBlKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGU6IEZpeE1lTGF0ZXIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJbYW5ndWxhcngtcXJjb2RlXSBFcnJvciBnZW5lcmF0aW5nIFFSIENvZGU6XCIsIGUubWVzc2FnZSlcbiAgICB9XG4gIH1cblxuICBjb252ZXJ0QmFzZTY0SW1hZ2VVcmxUb0Jsb2IoYmFzZTY0SW1hZ2VVcmw6IHN0cmluZykge1xuICAgIC8vIHNwbGl0IGludG8gdHdvIHBhcnRzXG4gICAgY29uc3QgcGFydHMgPSBiYXNlNjRJbWFnZVVybC5zcGxpdChcIjtiYXNlNjQsXCIpXG4gICAgLy8gaG9sZCB0aGUgY29udGVudC9taW1lIHR5cGUgZi5lLiBpbWFnZS9wbmdcbiAgICBjb25zdCBpbWFnZVR5cGUgPSBwYXJ0c1swXS5zcGxpdChcIjpcIilbMV1cbiAgICAvLyBkZWNvZGUgYmFzZTY0IHN0cmluZ1xuICAgIGNvbnN0IGRlY29kZWREYXRhID0gYXRvYihwYXJ0c1sxXSlcbiAgICAvLyBjcmVhdGUgdW5pdDhhcnJheSBvZiBzaXplIHNhbWUgYXMgcm93IGRhdGEgbGVuZ3RoXG4gICAgY29uc3QgdUludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KGRlY29kZWREYXRhLmxlbmd0aClcbiAgICAvLyBpbnNlcnQgYWxsIGNoYXJhY3RlciBjb2RlIGludG8gdWludDhhcnJheVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGVjb2RlZERhdGEubGVuZ3RoOyArK2kpIHtcbiAgICAgIHVJbnQ4QXJyYXlbaV0gPSBkZWNvZGVkRGF0YS5jaGFyQ29kZUF0KGkpXG4gICAgfVxuICAgIC8vIHJldHVybiBibG9iIGltYWdlIGFmdGVyIGNvbnZlcnNpb25cbiAgICByZXR1cm4gbmV3IEJsb2IoW3VJbnQ4QXJyYXldLCB7IHR5cGU6IGltYWdlVHlwZSB9KVxuICB9XG5cbiAgZW1pdFFSQ29kZVVSTChlbGVtZW50OiBIVE1MQ2FudmFzRWxlbWVudCB8IEhUTUxJbWFnZUVsZW1lbnQgfCBTVkdTVkdFbGVtZW50KSB7XG4gICAgY29uc3QgY2xhc3NOYW1lID0gZWxlbWVudC5jb25zdHJ1Y3Rvci5uYW1lXG4gICAgaWYgKGNsYXNzTmFtZSA9PT0gU1ZHU1ZHRWxlbWVudC5uYW1lKSB7XG4gICAgICBjb25zdCBzdmdIVE1MID0gZWxlbWVudC5vdXRlckhUTUxcbiAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbc3ZnSFRNTF0sIHsgdHlwZTogXCJpbWFnZS9zdmcreG1sXCIgfSlcbiAgICAgIGNvbnN0IHVybFN2ZyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYilcbiAgICAgIGNvbnN0IHVybFNhbml0aXplZCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwodXJsU3ZnKVxuICAgICAgdGhpcy5xckNvZGVVUkwuZW1pdCh1cmxTYW5pdGl6ZWQpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBsZXQgdXJsSW1hZ2UgPSBcIlwiXG5cbiAgICBpZiAoY2xhc3NOYW1lID09PSBIVE1MQ2FudmFzRWxlbWVudC5uYW1lKSB7XG4gICAgICB1cmxJbWFnZSA9IChlbGVtZW50IGFzIEhUTUxDYW52YXNFbGVtZW50KS50b0RhdGFVUkwoXCJpbWFnZS9wbmdcIilcbiAgICB9XG5cbiAgICBpZiAoY2xhc3NOYW1lID09PSBIVE1MSW1hZ2VFbGVtZW50Lm5hbWUpIHtcbiAgICAgIHVybEltYWdlID0gKGVsZW1lbnQgYXMgSFRNTEltYWdlRWxlbWVudCkuc3JjXG4gICAgfVxuXG4gICAgY29uc3QgYmxvYkRhdGE6IEJsb2IgPSB0aGlzLmNvbnZlcnRCYXNlNjRJbWFnZVVybFRvQmxvYih1cmxJbWFnZSlcbiAgICBjb25zdCB1cmxCbG9iID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iRGF0YSlcbiAgICBjb25zdCB1cmxTYW5pdGl6ZWQgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKHVybEJsb2IpXG4gICAgdGhpcy5xckNvZGVVUkwuZW1pdCh1cmxTYW5pdGl6ZWQpXG4gIH1cbn1cbiJdfQ==

@@ -126,2 +126,3 @@ import * as i0 from '@angular/core';

if (centerImageSrc !== this.centerImage.src) {
this.centerImage.crossOrigin = "anonymous";
this.centerImage.src = centerImageSrc;

@@ -128,0 +129,0 @@ }

@@ -1,1 +0,1 @@

{"version":3,"file":"angularx-qrcode.mjs","sources":["../../../projects/angularx-qrcode/src/lib/angularx-qrcode.component.ts","../../../projects/angularx-qrcode/src/lib/angularx-qrcode.module.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n Renderer2,\n ViewChild,\n} from \"@angular/core\"\nimport { DomSanitizer, SafeUrl } from \"@angular/platform-browser\"\nimport {\n QRCodeRenderersOptions,\n QRCodeToDataURLOptions,\n QRCodeToStringOptions,\n toCanvas,\n toDataURL,\n toString,\n} from \"qrcode\"\nimport {\n QRCodeVersion,\n QRCodeElementType,\n FixMeLater,\n QRCodeConfigType,\n QRCodeErrorCorrectionLevel,\n} from \"./types\"\n\n@Component({\n selector: \"qrcode\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<div #qrcElement [class]=\"cssClass\"></div>`,\n})\nexport class QRCodeComponent implements OnChanges {\n @Input() public allowEmptyString = false\n @Input() public colorDark = \"#000000ff\"\n @Input() public colorLight = \"#ffffffff\"\n @Input() public cssClass = \"qrcode\"\n @Input() public elementType: QRCodeElementType = \"canvas\"\n @Input()\n public errorCorrectionLevel: QRCodeErrorCorrectionLevel = \"M\"\n @Input() public imageSrc?: string\n @Input() public imageHeight?: number\n @Input() public imageWidth?: number\n @Input() public margin = 4\n @Input() public qrdata = \"\"\n @Input() public scale = 4\n @Input() public version?: QRCodeVersion\n @Input() public width = 10\n\n // Accessibility features introduced in 13.0.4+\n @Input() public alt?: string\n @Input() public ariaLabel?: string\n @Input() public title?: string\n\n @Output() qrCodeURL = new EventEmitter<SafeUrl>()\n\n @ViewChild(\"qrcElement\", { static: true }) public qrcElement!: ElementRef\n\n public context: CanvasRenderingContext2D | null = null\n private centerImage?: HTMLImageElement\n\n constructor(\n private renderer: Renderer2,\n private sanitizer: DomSanitizer\n ) {}\n\n public async ngOnChanges(): Promise<void> {\n await this.createQRCode()\n }\n\n protected isValidQrCodeText(data: string | null): boolean {\n if (this.allowEmptyString === false) {\n return !(\n typeof data === \"undefined\" ||\n data === \"\" ||\n data === \"null\" ||\n data === null\n )\n }\n return !(typeof data === \"undefined\")\n }\n\n private toDataURL(qrCodeConfig: QRCodeToDataURLOptions): Promise<FixMeLater> {\n return new Promise(\n (\n resolve: (arg: FixMeLater) => FixMeLater,\n reject: (arg: FixMeLater) => FixMeLater\n ) => {\n toDataURL(\n this.qrdata,\n qrCodeConfig,\n (err: Error | null | undefined, url: string) => {\n if (err) {\n reject(err)\n } else {\n resolve(url)\n }\n }\n )\n }\n )\n }\n\n private toCanvas(\n canvas: HTMLCanvasElement,\n qrCodeConfig: QRCodeRenderersOptions\n ): Promise<FixMeLater> {\n return new Promise(\n (\n resolve: (arg: FixMeLater) => FixMeLater,\n reject: (arg: FixMeLater) => FixMeLater\n ) => {\n toCanvas(\n canvas,\n this.qrdata,\n qrCodeConfig,\n (error: Error | null | undefined) => {\n if (error) {\n reject(error)\n } else {\n resolve(\"success\")\n }\n }\n )\n }\n )\n }\n\n private toSVG(qrCodeConfig: QRCodeToStringOptions): Promise<FixMeLater> {\n return new Promise(\n (\n resolve: (arg: FixMeLater) => FixMeLater,\n reject: (arg: FixMeLater) => FixMeLater\n ) => {\n toString(\n this.qrdata,\n qrCodeConfig,\n (err: Error | null | undefined, url: string) => {\n if (err) {\n reject(err)\n } else {\n resolve(url)\n }\n }\n )\n }\n )\n }\n\n private renderElement(element: Element): void {\n for (const node of this.qrcElement.nativeElement.childNodes) {\n this.renderer.removeChild(this.qrcElement.nativeElement, node)\n }\n this.renderer.appendChild(this.qrcElement.nativeElement, element)\n }\n\n private async createQRCode(): Promise<void> {\n // Set sensitive defaults\n if (this.version && this.version > 40) {\n console.warn(\"[angularx-qrcode] max value for `version` is 40\")\n this.version = 40\n } else if (this.version && this.version < 1) {\n console.warn(\"[angularx-qrcode]`min value for `version` is 1\")\n this.version = 1\n } else if (this.version !== undefined && isNaN(this.version)) {\n console.warn(\n \"[angularx-qrcode] version should be a number, defaulting to auto.\"\n )\n this.version = undefined\n }\n\n try {\n if (!this.isValidQrCodeText(this.qrdata)) {\n throw new Error(\n \"[angularx-qrcode] Field `qrdata` is empty, set 'allowEmptyString=\\\"true\\\"' to overwrite this behaviour.\"\n )\n }\n\n // This is a workaround to allow an empty string as qrdata\n if (this.isValidQrCodeText(this.qrdata) && this.qrdata === \"\") {\n this.qrdata = \" \"\n }\n\n const config: QRCodeConfigType = {\n color: {\n dark: this.colorDark,\n light: this.colorLight,\n },\n errorCorrectionLevel: this.errorCorrectionLevel,\n margin: this.margin,\n scale: this.scale,\n version: this.version,\n width: this.width,\n }\n\n const centerImageSrc = this.imageSrc\n const centerImageHeight = this.imageHeight || 40\n const centerImageWidth = this.imageWidth || 40\n\n switch (this.elementType) {\n case \"canvas\": {\n const canvasElement: HTMLCanvasElement =\n this.renderer.createElement(\"canvas\")\n this.context = canvasElement.getContext(\"2d\")\n this.toCanvas(canvasElement, config)\n .then(() => {\n if (this.ariaLabel) {\n this.renderer.setAttribute(\n canvasElement,\n \"aria-label\",\n `${this.ariaLabel}`\n )\n }\n if (this.title) {\n this.renderer.setAttribute(\n canvasElement,\n \"title\",\n `${this.title}`\n )\n }\n\n if (centerImageSrc && this.context) {\n this.centerImage = new Image(\n centerImageWidth,\n centerImageHeight\n )\n\n if (centerImageSrc !== this.centerImage.src) {\n this.centerImage.src = centerImageSrc\n }\n\n if (centerImageHeight !== this.centerImage.height) {\n this.centerImage.height = centerImageHeight\n }\n\n if (centerImageWidth !== this.centerImage.width) {\n this.centerImage.width = centerImageWidth\n }\n\n const centerImage = this.centerImage\n\n if (centerImage) {\n centerImage.onload = () => {\n this.context?.drawImage(\n centerImage,\n canvasElement.width / 2 - centerImageWidth / 2,\n canvasElement.height / 2 - centerImageHeight / 2,\n centerImageWidth,\n centerImageHeight\n )\n }\n }\n }\n\n this.renderElement(canvasElement)\n this.emitQRCodeURL(canvasElement as HTMLCanvasElement)\n })\n .catch((e) => {\n console.error(\"[angularx-qrcode] canvas error:\", e)\n })\n break\n }\n case \"svg\": {\n const svgParentElement: HTMLElement =\n this.renderer.createElement(\"div\")\n this.toSVG(config)\n .then((svgString: string) => {\n this.renderer.setProperty(\n svgParentElement,\n \"innerHTML\",\n svgString\n )\n const svgElement = svgParentElement.firstChild as SVGSVGElement\n this.renderer.setAttribute(svgElement, \"height\", `${this.width}`)\n this.renderer.setAttribute(svgElement, \"width\", `${this.width}`)\n this.renderElement(svgElement)\n this.emitQRCodeURL(svgElement)\n })\n .catch((e) => {\n console.error(\"[angularx-qrcode] svg error:\", e)\n })\n break\n }\n case \"url\":\n case \"img\":\n default: {\n const imgElement: HTMLImageElement =\n this.renderer.createElement(\"img\")\n this.toDataURL(config)\n .then((dataUrl: string) => {\n if (this.alt) {\n imgElement.setAttribute(\"alt\", this.alt)\n }\n if (this.ariaLabel) {\n imgElement.setAttribute(\"aria-label\", this.ariaLabel)\n }\n imgElement.setAttribute(\"src\", dataUrl)\n if (this.title) {\n imgElement.setAttribute(\"title\", this.title)\n }\n this.renderElement(imgElement)\n this.emitQRCodeURL(imgElement)\n })\n .catch((e) => {\n console.error(\"[angularx-qrcode] img/url error:\", e)\n })\n }\n }\n } catch (e: FixMeLater) {\n console.error(\"[angularx-qrcode] Error generating QR Code:\", e.message)\n }\n }\n\n convertBase64ImageUrlToBlob(base64ImageUrl: string) {\n // split into two parts\n const parts = base64ImageUrl.split(\";base64,\")\n // hold the content/mime type f.e. image/png\n const imageType = parts[0].split(\":\")[1]\n // decode base64 string\n const decodedData = atob(parts[1])\n // create unit8array of size same as row data length\n const uInt8Array = new Uint8Array(decodedData.length)\n // insert all character code into uint8array\n for (let i = 0; i < decodedData.length; ++i) {\n uInt8Array[i] = decodedData.charCodeAt(i)\n }\n // return blob image after conversion\n return new Blob([uInt8Array], { type: imageType })\n }\n\n emitQRCodeURL(element: HTMLCanvasElement | HTMLImageElement | SVGSVGElement) {\n const className = element.constructor.name\n if (className === SVGSVGElement.name) {\n const svgHTML = element.outerHTML\n const blob = new Blob([svgHTML], { type: \"image/svg+xml\" })\n const urlSvg = URL.createObjectURL(blob)\n const urlSanitized = this.sanitizer.bypassSecurityTrustUrl(urlSvg)\n this.qrCodeURL.emit(urlSanitized)\n return\n }\n\n let urlImage = \"\"\n\n if (className === HTMLCanvasElement.name) {\n urlImage = (element as HTMLCanvasElement).toDataURL(\"image/png\")\n }\n\n if (className === HTMLImageElement.name) {\n urlImage = (element as HTMLImageElement).src\n }\n\n const blobData: Blob = this.convertBase64ImageUrlToBlob(urlImage)\n const urlBlob = URL.createObjectURL(blobData)\n const urlSanitized = this.sanitizer.bypassSecurityTrustUrl(urlBlob)\n this.qrCodeURL.emit(urlSanitized)\n }\n}\n","import { NgModule } from \"@angular/core\"\nimport { QRCodeComponent } from \"./angularx-qrcode.component\"\n\n@NgModule({\n providers: [],\n declarations: [QRCodeComponent],\n exports: [QRCodeComponent],\n})\nexport class QRCodeModule {}\n"],"names":[],"mappings":"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"}
{"version":3,"file":"angularx-qrcode.mjs","sources":["../../../projects/angularx-qrcode/src/lib/angularx-qrcode.component.ts","../../../projects/angularx-qrcode/src/lib/angularx-qrcode.module.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n Renderer2,\n ViewChild,\n} from \"@angular/core\"\nimport { DomSanitizer, SafeUrl } from \"@angular/platform-browser\"\nimport {\n QRCodeRenderersOptions,\n QRCodeToDataURLOptions,\n QRCodeToStringOptions,\n toCanvas,\n toDataURL,\n toString,\n} from \"qrcode\"\nimport {\n QRCodeVersion,\n QRCodeElementType,\n FixMeLater,\n QRCodeConfigType,\n QRCodeErrorCorrectionLevel,\n} from \"./types\"\n\n@Component({\n selector: \"qrcode\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<div #qrcElement [class]=\"cssClass\"></div>`,\n})\nexport class QRCodeComponent implements OnChanges {\n @Input() public allowEmptyString = false\n @Input() public colorDark = \"#000000ff\"\n @Input() public colorLight = \"#ffffffff\"\n @Input() public cssClass = \"qrcode\"\n @Input() public elementType: QRCodeElementType = \"canvas\"\n @Input()\n public errorCorrectionLevel: QRCodeErrorCorrectionLevel = \"M\"\n @Input() public imageSrc?: string\n @Input() public imageHeight?: number\n @Input() public imageWidth?: number\n @Input() public margin = 4\n @Input() public qrdata = \"\"\n @Input() public scale = 4\n @Input() public version?: QRCodeVersion\n @Input() public width = 10\n\n // Accessibility features introduced in 13.0.4+\n @Input() public alt?: string\n @Input() public ariaLabel?: string\n @Input() public title?: string\n\n @Output() qrCodeURL = new EventEmitter<SafeUrl>()\n\n @ViewChild(\"qrcElement\", { static: true }) public qrcElement!: ElementRef\n\n public context: CanvasRenderingContext2D | null = null\n private centerImage?: HTMLImageElement\n\n constructor(\n private renderer: Renderer2,\n private sanitizer: DomSanitizer\n ) {}\n\n public async ngOnChanges(): Promise<void> {\n await this.createQRCode()\n }\n\n protected isValidQrCodeText(data: string | null): boolean {\n if (this.allowEmptyString === false) {\n return !(\n typeof data === \"undefined\" ||\n data === \"\" ||\n data === \"null\" ||\n data === null\n )\n }\n return !(typeof data === \"undefined\")\n }\n\n private toDataURL(qrCodeConfig: QRCodeToDataURLOptions): Promise<FixMeLater> {\n return new Promise(\n (\n resolve: (arg: FixMeLater) => FixMeLater,\n reject: (arg: FixMeLater) => FixMeLater\n ) => {\n toDataURL(\n this.qrdata,\n qrCodeConfig,\n (err: Error | null | undefined, url: string) => {\n if (err) {\n reject(err)\n } else {\n resolve(url)\n }\n }\n )\n }\n )\n }\n\n private toCanvas(\n canvas: HTMLCanvasElement,\n qrCodeConfig: QRCodeRenderersOptions\n ): Promise<FixMeLater> {\n return new Promise(\n (\n resolve: (arg: FixMeLater) => FixMeLater,\n reject: (arg: FixMeLater) => FixMeLater\n ) => {\n toCanvas(\n canvas,\n this.qrdata,\n qrCodeConfig,\n (error: Error | null | undefined) => {\n if (error) {\n reject(error)\n } else {\n resolve(\"success\")\n }\n }\n )\n }\n )\n }\n\n private toSVG(qrCodeConfig: QRCodeToStringOptions): Promise<FixMeLater> {\n return new Promise(\n (\n resolve: (arg: FixMeLater) => FixMeLater,\n reject: (arg: FixMeLater) => FixMeLater\n ) => {\n toString(\n this.qrdata,\n qrCodeConfig,\n (err: Error | null | undefined, url: string) => {\n if (err) {\n reject(err)\n } else {\n resolve(url)\n }\n }\n )\n }\n )\n }\n\n private renderElement(element: Element): void {\n for (const node of this.qrcElement.nativeElement.childNodes) {\n this.renderer.removeChild(this.qrcElement.nativeElement, node)\n }\n this.renderer.appendChild(this.qrcElement.nativeElement, element)\n }\n\n private async createQRCode(): Promise<void> {\n // Set sensitive defaults\n if (this.version && this.version > 40) {\n console.warn(\"[angularx-qrcode] max value for `version` is 40\")\n this.version = 40\n } else if (this.version && this.version < 1) {\n console.warn(\"[angularx-qrcode]`min value for `version` is 1\")\n this.version = 1\n } else if (this.version !== undefined && isNaN(this.version)) {\n console.warn(\n \"[angularx-qrcode] version should be a number, defaulting to auto.\"\n )\n this.version = undefined\n }\n\n try {\n if (!this.isValidQrCodeText(this.qrdata)) {\n throw new Error(\n \"[angularx-qrcode] Field `qrdata` is empty, set 'allowEmptyString=\\\"true\\\"' to overwrite this behaviour.\"\n )\n }\n\n // This is a workaround to allow an empty string as qrdata\n if (this.isValidQrCodeText(this.qrdata) && this.qrdata === \"\") {\n this.qrdata = \" \"\n }\n\n const config: QRCodeConfigType = {\n color: {\n dark: this.colorDark,\n light: this.colorLight,\n },\n errorCorrectionLevel: this.errorCorrectionLevel,\n margin: this.margin,\n scale: this.scale,\n version: this.version,\n width: this.width,\n }\n\n const centerImageSrc = this.imageSrc\n const centerImageHeight = this.imageHeight || 40\n const centerImageWidth = this.imageWidth || 40\n\n switch (this.elementType) {\n case \"canvas\": {\n const canvasElement: HTMLCanvasElement =\n this.renderer.createElement(\"canvas\")\n this.context = canvasElement.getContext(\"2d\")\n this.toCanvas(canvasElement, config)\n .then(() => {\n if (this.ariaLabel) {\n this.renderer.setAttribute(\n canvasElement,\n \"aria-label\",\n `${this.ariaLabel}`\n )\n }\n if (this.title) {\n this.renderer.setAttribute(\n canvasElement,\n \"title\",\n `${this.title}`\n )\n }\n\n if (centerImageSrc && this.context) {\n this.centerImage = new Image(\n centerImageWidth,\n centerImageHeight\n )\n\n if (centerImageSrc !== this.centerImage.src) {\n this.centerImage.crossOrigin = \"anonymous\"\n this.centerImage.src = centerImageSrc\n }\n\n if (centerImageHeight !== this.centerImage.height) {\n this.centerImage.height = centerImageHeight\n }\n\n if (centerImageWidth !== this.centerImage.width) {\n this.centerImage.width = centerImageWidth\n }\n\n const centerImage = this.centerImage\n\n if (centerImage) {\n centerImage.onload = () => {\n this.context?.drawImage(\n centerImage,\n canvasElement.width / 2 - centerImageWidth / 2,\n canvasElement.height / 2 - centerImageHeight / 2,\n centerImageWidth,\n centerImageHeight\n )\n }\n }\n }\n\n this.renderElement(canvasElement)\n this.emitQRCodeURL(canvasElement as HTMLCanvasElement)\n })\n .catch((e) => {\n console.error(\"[angularx-qrcode] canvas error:\", e)\n })\n break\n }\n case \"svg\": {\n const svgParentElement: HTMLElement =\n this.renderer.createElement(\"div\")\n this.toSVG(config)\n .then((svgString: string) => {\n this.renderer.setProperty(\n svgParentElement,\n \"innerHTML\",\n svgString\n )\n const svgElement = svgParentElement.firstChild as SVGSVGElement\n this.renderer.setAttribute(svgElement, \"height\", `${this.width}`)\n this.renderer.setAttribute(svgElement, \"width\", `${this.width}`)\n this.renderElement(svgElement)\n this.emitQRCodeURL(svgElement)\n })\n .catch((e) => {\n console.error(\"[angularx-qrcode] svg error:\", e)\n })\n break\n }\n case \"url\":\n case \"img\":\n default: {\n const imgElement: HTMLImageElement =\n this.renderer.createElement(\"img\")\n this.toDataURL(config)\n .then((dataUrl: string) => {\n if (this.alt) {\n imgElement.setAttribute(\"alt\", this.alt)\n }\n if (this.ariaLabel) {\n imgElement.setAttribute(\"aria-label\", this.ariaLabel)\n }\n imgElement.setAttribute(\"src\", dataUrl)\n if (this.title) {\n imgElement.setAttribute(\"title\", this.title)\n }\n this.renderElement(imgElement)\n this.emitQRCodeURL(imgElement)\n })\n .catch((e) => {\n console.error(\"[angularx-qrcode] img/url error:\", e)\n })\n }\n }\n } catch (e: FixMeLater) {\n console.error(\"[angularx-qrcode] Error generating QR Code:\", e.message)\n }\n }\n\n convertBase64ImageUrlToBlob(base64ImageUrl: string) {\n // split into two parts\n const parts = base64ImageUrl.split(\";base64,\")\n // hold the content/mime type f.e. image/png\n const imageType = parts[0].split(\":\")[1]\n // decode base64 string\n const decodedData = atob(parts[1])\n // create unit8array of size same as row data length\n const uInt8Array = new Uint8Array(decodedData.length)\n // insert all character code into uint8array\n for (let i = 0; i < decodedData.length; ++i) {\n uInt8Array[i] = decodedData.charCodeAt(i)\n }\n // return blob image after conversion\n return new Blob([uInt8Array], { type: imageType })\n }\n\n emitQRCodeURL(element: HTMLCanvasElement | HTMLImageElement | SVGSVGElement) {\n const className = element.constructor.name\n if (className === SVGSVGElement.name) {\n const svgHTML = element.outerHTML\n const blob = new Blob([svgHTML], { type: \"image/svg+xml\" })\n const urlSvg = URL.createObjectURL(blob)\n const urlSanitized = this.sanitizer.bypassSecurityTrustUrl(urlSvg)\n this.qrCodeURL.emit(urlSanitized)\n return\n }\n\n let urlImage = \"\"\n\n if (className === HTMLCanvasElement.name) {\n urlImage = (element as HTMLCanvasElement).toDataURL(\"image/png\")\n }\n\n if (className === HTMLImageElement.name) {\n urlImage = (element as HTMLImageElement).src\n }\n\n const blobData: Blob = this.convertBase64ImageUrlToBlob(urlImage)\n const urlBlob = URL.createObjectURL(blobData)\n const urlSanitized = this.sanitizer.bypassSecurityTrustUrl(urlBlob)\n this.qrCodeURL.emit(urlSanitized)\n }\n}\n","import { NgModule } from \"@angular/core\"\nimport { QRCodeComponent } from \"./angularx-qrcode.component\"\n\n@NgModule({\n providers: [],\n declarations: [QRCodeComponent],\n exports: [QRCodeComponent],\n})\nexport class QRCodeModule {}\n"],"names":[],"mappings":"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"}
{
"name": "angularx-qrcode",
"version": "18.0.1",
"version": "18.0.2",
"author": {

@@ -5,0 +5,0 @@ "name": "Andreas Jacob <andreas@cordobo.de>",

+21
-25

@@ -16,3 +16,3 @@ # angularx-qrcode - Angular QR Code Generator

- Compatible with **Angular** and Ionic
- Compatible with **Angular** and **Ionic**
- Ivy compiler support, AOT, SSR (Server Side Rendering)

@@ -23,2 +23,3 @@ - Under active development

- Trusted and used by thousands of developers like you
- Easy to use, [sample web app](#demo-app) included

@@ -53,26 +54,19 @@ `angularx-qrcode` is compatible with Ionic 3/4/5/6/7/8 and Angular 4/5/6/7/8/9/10/11/12/13/14/15/16/17/18+ with support for the Ivy compiler. It is a drop-in replacement for the no-longer-maintained angular component ng2-qrcode and based on node-qrcode.

**Older supported angular versions**
**All supported angular versions**
```
# angular 15 and Ionic
npm install angularx-qrcode@15.0.1 --save
# angular 14 and Ionic
npm install angularx-qrcode@14.0.0 --save
# angular 13 and Ionic
npm install angularx-qrcode@13.0.15 --save
# angular 12 and Ionic
npm install angularx-qrcode@12.0.3 --save
# angular 11 and Ionic
npm install angularx-qrcode@11.0.0 --save
# angular 10 and Ionic
npm install angularx-qrcode@10.0.12 --save
# angular 9 and Ionic
npm install angularx-qrcode@~2.3.7 --save
# angular 8 and Ionic
npm install angularx-qrcode@~2.1.4 --save
# angular 5/6/7
npm install angularx-qrcode@1.6.4 --save
# Angular 4
npm install angularx-qrcode@1.0.3 --save
```
| Angular Version | angularx-qrcode Version |
| --------------- | ----------------------- |
| ^18 | ^18.0.2 |
| ^17 | ^17.0.1 |
| ^16 | ^16.0.2 |
| ^15 | ^15.0.1 |
| ^14 | ^14.0.0 |
| ^13 | ^13.0.15 |
| ^12 | ^12.0.3 |
| ^11 | ^11.0.0 |
| ^10 | ^10.0.12 |
| ^9 | ^2.3.7 |
| ^8 | ^2.1.4 |
| ^5 / ^6 / ^7 | ^1.6.4 |
| ^4 | ^1.0.3 |

@@ -83,4 +77,6 @@ # Demo App

The source for the demo angular app is available in [`projects/demo-app`](projects/demo-app). Run the command
The source for the working angular app is available in [`projects/demo-app`](projects/demo-app).
Run the command:
```

@@ -87,0 +83,0 @@ npm start