@sd-angular/core 1.1.95 → 1.1.98
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/sd-angular-core-grid-material.umd.js +44 -35
- package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
- package/bundles/sd-angular-core-grid-material.umd.min.js +2 -2
- package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-side-drawer.umd.js +2 -0
- package/bundles/sd-angular-core-side-drawer.umd.js.map +1 -1
- package/bundles/sd-angular-core-side-drawer.umd.min.js +2 -2
- package/bundles/sd-angular-core-side-drawer.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-upload-file.umd.js +27 -2
- package/bundles/sd-angular-core-upload-file.umd.js.map +1 -1
- package/bundles/sd-angular-core-upload-file.umd.min.js +1 -1
- package/bundles/sd-angular-core-upload-file.umd.min.js.map +1 -1
- package/esm2015/grid-material/src/lib/grid-material.component.js +8 -2
- package/esm2015/grid-material/src/lib/pipes/column-values.pipe.js +3 -3
- package/esm2015/side-drawer/src/lib/side-drawer/side-drawer.component.js +3 -1
- package/esm2015/upload-file/src/lib/upload-file.component.js +27 -3
- package/fesm2015/sd-angular-core-grid-material.js +27 -22
- package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
- package/fesm2015/sd-angular-core-side-drawer.js +2 -0
- package/fesm2015/sd-angular-core-side-drawer.js.map +1 -1
- package/fesm2015/sd-angular-core-upload-file.js +26 -2
- package/fesm2015/sd-angular-core-upload-file.js.map +1 -1
- package/package.json +1 -1
- package/{sd-angular-core-1.1.95.tgz → sd-angular-core-1.1.98.tgz} +0 -0
- package/side-drawer/sd-angular-core-side-drawer.metadata.json +1 -1
- package/side-drawer/src/lib/side-drawer/side-drawer.component.d.ts +1 -0
- package/upload-file/sd-angular-core-upload-file.metadata.json +1 -1
- package/upload-file/src/lib/upload-file.component.d.ts +1 -1
|
@@ -272,10 +272,34 @@ export class SdUploadFile {
|
|
|
272
272
|
}
|
|
273
273
|
}
|
|
274
274
|
set model(model) {
|
|
275
|
-
if (Array.isArray(model)) {
|
|
276
|
-
|
|
275
|
+
if (Array.isArray(model) && __classPrivateFieldGet(this, _model) !== model) {
|
|
276
|
+
let flag = false;
|
|
277
|
+
__classPrivateFieldSet(this, _model, model.map(src => {
|
|
278
|
+
if (typeof (src) === 'string') {
|
|
279
|
+
let extension = null;
|
|
280
|
+
const lastDot = src.lastIndexOf('.');
|
|
281
|
+
if (lastDot > 0) {
|
|
282
|
+
extension = src.substring(lastDot + 1);
|
|
283
|
+
}
|
|
284
|
+
flag = true;
|
|
285
|
+
return {
|
|
286
|
+
file: null,
|
|
287
|
+
previewSrc: null,
|
|
288
|
+
src,
|
|
289
|
+
isPreviewImage: this.type === 'image',
|
|
290
|
+
extension
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
return src;
|
|
294
|
+
}));
|
|
295
|
+
if (flag) {
|
|
296
|
+
this.modelChange.emit(__classPrivateFieldGet(this, _model));
|
|
297
|
+
}
|
|
277
298
|
__classPrivateFieldGet(this, _modelChanges).next(__classPrivateFieldGet(this, _model));
|
|
278
299
|
}
|
|
300
|
+
else {
|
|
301
|
+
__classPrivateFieldSet(this, _model, []);
|
|
302
|
+
}
|
|
279
303
|
}
|
|
280
304
|
ngOnInit() {
|
|
281
305
|
}
|
|
@@ -394,4 +418,4 @@ SdUploadFile.propDecorators = {
|
|
|
394
418
|
dropElements: [{ type: ViewChildren, args: ['dropElement',] }],
|
|
395
419
|
canvas: [{ type: ViewChild, args: ['canvas',] }]
|
|
396
420
|
};
|
|
397
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWZpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS91cGxvYWQtZmlsZS8iLCJzb3VyY2VzIjpbInNyYy9saWIvdXBsb2FkLWZpbGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixpQkFBaUIsRUFJakIsWUFBWSxFQUdaLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MscUZBQXFGO0FBTXJGLE1BQU0sT0FBTyxZQUFZO0lBeUN2QixZQUNFLGFBQW9DLEVBQzVCLEdBQXNCLEVBQ3RCLGFBQThCLEVBQzlCLGdCQUFvQztRQUZwQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFDOUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQjtRQTVDOUMsT0FBRSxHQUFHLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDckIsNEJBQW9CLEtBQUss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S0FBSyxDQUFDLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQzt3QkFDL0MsTUFBTSwrQ0FBQSxJQUFJLEVBQWEsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUMzQyxDQUFDLENBQUEsQ0FBQyxDQUFDO2lCQUNKO1lBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNMO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCw0Q0FBbUIsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7OztZQTFJRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsdTVIQUEyQzs7YUFFNUM7OztZQWJRLHFCQUFxQjtZQVY1QixpQkFBaUI7WUFhVixlQUFlO1lBQ2Ysa0JBQWtCOzs7b0JBaUJ4QixLQUFLO21CQUNMLEtBQUs7dUJBQ0wsS0FBSzt5QkFDTCxLQUFLO2tCQUNMLEtBQUs7c0JBQ0wsS0FBSzt1QkFDTCxLQUFLO3dCQUNMLEtBQUs7MkJBQ0wsS0FBSzttQkFFTCxLQUFLOzJCQU1MLEtBQUs7NEJBQ0wsS0FBSztvQkFDTCxLQUFLO29CQUVMLEtBQUs7MEJBTUwsTUFBTTt1QkFDTixNQUFNOzJCQUNOLFlBQVksU0FBQyxhQUFhO3FCQUMxQixTQUFTLFNBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBFbGVtZW50UmVmLFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgUXVlcnlMaXN0LFxyXG4gIE9uRGVzdHJveSxcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBEZXZpY2VEZXRlY3RvclNlcnZpY2UgfSBmcm9tICduZ3gtZGV2aWNlLWRldGVjdG9yJztcclxuaW1wb3J0ICogYXMgdXVpZCBmcm9tICd1dWlkJztcclxuaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JztcclxuaW1wb3J0IHsgU2ROb3RpZnlTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9ub3RpZnknO1xyXG5pbXBvcnQgeyBTZFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL3RyYW5zbGF0ZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80NDU5Mzc5L3ByZXZpZXctYW4taW1hZ2UtYmVmb3JlLWl0LWlzLXVwbG9hZGVkXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2QtdXBsb2FkLWZpbGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91cGxvYWQtZmlsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdXBsb2FkLWZpbGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RVcGxvYWRGaWxlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIGlkID0gYEkke3V1aWQudjQoKX1gO1xyXG4gICNpc01vYmlsZU9yVGFibGV0ID0gZmFsc2U7XHJcbiAgI2NhbnZhczEgPSBgQyR7dXVpZC52NCgpfWA7XHJcbiAgI2NhbnZhczIgPSBgQyR7dXVpZC52NCgpfWA7XHJcbiAgcHJldmlld0ZpbGVzOiBQcmV2aWV3RmlsZVtdID0gW107XHJcbiAgc2VsZWN0ZWRGaWxlOiBQcmV2aWV3RmlsZTtcclxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHR5cGU6ICdpbWFnZScgfCAnZmlsZScgPSAnZmlsZSc7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBleHRlbnNpb25zOiBzdHJpbmdbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIG1heCA9IDE7XHJcbiAgQElucHV0KCkgbWF4U2l6ZTogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIG1heFdpZHRoOiBudW1iZXI7XHJcbiAgQElucHV0KCkgbWF4SGVpZ2h0OiBudW1iZXI7XHJcbiAgQElucHV0KCkgc2NhbGVUb1BpeGVsOiBudW1iZXI7XHJcbiAgI3NyY3M6IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpIHNldCBzcmNzKHNyY3M6IHN0cmluZ1tdKSB7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzcmNzKSkge1xyXG4gICAgICB0aGlzLiNzcmNzID0gc3JjcztcclxuICAgICAgdGhpcy4jc3JjQ2hhbmdlcy5uZXh0KHRoaXMuI3NyY3MpO1xyXG4gICAgfVxyXG4gIH1cclxuICBASW5wdXQoKSBwcmV2aWV3V2lkdGg6IHN0cmluZyA9ICcxMDBweCc7XHJcbiAgQElucHV0KCkgcHJldmlld0hlaWdodDogc3RyaW5nID0gJzEwMHB4JztcclxuICBASW5wdXQoKSBhbGlnbjogJ2xlZnQnIHwgJ2NlbnRlcicgPSAnY2VudGVyJztcclxuICAjbW9kZWw6IFByZXZpZXdGaWxlW107XHJcbiAgQElucHV0KCkgc2V0IG1vZGVsKG1vZGVsOiBQcmV2aWV3RmlsZVtdKSB7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShtb2RlbCkpIHtcclxuICAgICAgdGhpcy4jbW9kZWwgPSBtb2RlbDtcclxuICAgICAgdGhpcy4jbW9kZWxDaGFuZ2VzLm5leHQodGhpcy4jbW9kZWwpO1xyXG4gICAgfVxyXG4gIH1cclxuICBAT3V0cHV0KCkgbW9kZWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFByZXZpZXdGaWxlW10+KCk7XHJcbiAgQE91dHB1dCgpIHNkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxQcmV2aWV3RmlsZVtdPigpO1xyXG4gIEBWaWV3Q2hpbGRyZW4oJ2Ryb3BFbGVtZW50JykgZHJvcEVsZW1lbnRzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XHJcbiAgQFZpZXdDaGlsZCgnY2FudmFzJykgY2FudmFzOiBFbGVtZW50UmVmO1xyXG4gICNzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgI2N1cnJlbnREcm9wQ29udGFpbmVyOiBhbnk7XHJcbiAgI3NyY0NoYW5nZXMgPSBuZXcgU3ViamVjdCgpO1xyXG4gICNtb2RlbENoYW5nZXMgPSBuZXcgU3ViamVjdCgpO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgZGV2aWNlU2VydmljZTogRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBub3RpZnlTZXJ2aWNlOiBTZE5vdGlmeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFNkVHJhbnNsYXRlU2VydmljZSkge1xyXG4gICAgdGhpcy4jaXNNb2JpbGVPclRhYmxldCA9ICFkZXZpY2VTZXJ2aWNlLmlzRGVza3RvcCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLiNzcmNDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuI3NyY3MpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy4jc3JjcykpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcHJldmlld0ZpbGVzID0gdGhpcy4jc3Jjcy5tYXAoc3JjID0+IHtcclxuICAgICAgICBsZXQgZXh0ZW5zaW9uID0gbnVsbDtcclxuICAgICAgICBjb25zdCBsYXN0RG90ID0gc3JjLmxhc3RJbmRleE9mKCcuJyk7XHJcbiAgICAgICAgaWYgKGxhc3REb3QgPiAwKSB7XHJcbiAgICAgICAgICBleHRlbnNpb24gPSBzcmMuc3Vic3RyaW5nKGxhc3REb3QgKyAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGZpbGU6IG51bGwsXHJcbiAgICAgICAgICBwcmV2aWV3U3JjOiBudWxsLFxyXG4gICAgICAgICAgc3JjLFxyXG4gICAgICAgICAgaXNQcmV2aWV3SW1hZ2U6IHRoaXMudHlwZSA9PT0gJ2ltYWdlJyxcclxuICAgICAgICAgIGV4dGVuc2lvblxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMucHJldmlld0ZpbGVzID0gcHJldmlld0ZpbGVzO1xyXG4gICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQocHJldmlld0ZpbGVzKTtcclxuICAgICAgLy8gdGhpcy5zZENoYW5nZS5lbWl0KHByZXZpZXdGaWxlcyk7XHJcbiAgICB9KSk7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKHRoaXMuI21vZGVsQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aChbXSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuI21vZGVsKSkge1xyXG4gICAgICAgIHRoaXMucHJldmlld0ZpbGVzID0gdGhpcy4jbW9kZWw7XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuICAgIGlmICghdGhpcy4jaXNNb2JpbGVPclRhYmxldCkge1xyXG4gICAgICBpZiAodGhpcy5kcm9wRWxlbWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbnN0IGRyb3BDb250YWluZXIgPSB0aGlzLmRyb3BFbGVtZW50cy5maXJzdC5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIHRoaXMuI2N1cnJlbnREcm9wQ29udGFpbmVyID0gZHJvcENvbnRhaW5lcjtcclxuICAgICAgICBkcm9wQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgKGV2dDogRXZlbnQpID0+IHtcclxuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgZHJvcENvbnRhaW5lci5zdHlsZS5vcGFjaXR5ID0gMC45O1xyXG4gICAgICAgICAgZHJvcENvbnRhaW5lci5zdHlsZS5ib3JkZXIgPSAnMnB4IHNvbGlkIGdyZXknO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGRyb3BDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2VudGVyJywgKGV2dDogRXZlbnQpID0+IHtcclxuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGRyb3BDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2xlYXZlJywgKGV2dDogRXZlbnQpID0+IHtcclxuICAgICAgICAgIGRyb3BDb250YWluZXIuc3R5bGUub3BhY2l0eSA9IDAuNjtcclxuICAgICAgICAgIGRyb3BDb250YWluZXIuc3R5bGUuYm9yZGVyID0gJzJweCBkYXNoZWQgZ3JleSc7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZHJvcENvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdkcm9wJywgYXN5bmMgKGV2dDogRHJhZ0V2ZW50KSA9PiB7XHJcbiAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIGRyb3BDb250YWluZXIuc3R5bGUub3BhY2l0eSA9IDAuNjtcclxuICAgICAgICAgIGRyb3BDb250YWluZXIuc3R5bGUuYm9yZGVyID0gJzJweCBkYXNoZWQgZ3JleSc7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLiN1cGxvYWRGaWxlKGV2dC5kYXRhVHJhbnNmZXIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5kcm9wRWxlbWVudHMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmRyb3BFbGVtZW50cy5sZW5ndGggPiAwICYmIHRoaXMuI2N1cnJlbnREcm9wQ29udGFpbmVyICE9PSB0aGlzLmRyb3BFbGVtZW50cy5maXJzdC5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgICBjb25zdCBkcm9wQ29udGFpbmVyID0gdGhpcy5kcm9wRWxlbWVudHMuZmlyc3QubmF0aXZlRWxlbWVudDtcclxuICAgICAgICAgIHRoaXMuI2N1cnJlbnREcm9wQ29udGFpbmVyID0gZHJvcENvbnRhaW5lcjtcclxuICAgICAgICAgIGRyb3BDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCAoZXZ0OiBFdmVudCkgPT4ge1xyXG4gICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZHJvcENvbnRhaW5lci5zdHlsZS5vcGFjaXR5ID0gMC45O1xyXG4gICAgICAgICAgICBkcm9wQ29udGFpbmVyLnN0eWxlLmJvcmRlciA9ICcycHggc29saWQgZ3JleSc7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGRyb3BDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2VudGVyJywgKGV2dDogRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGRyb3BDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2xlYXZlJywgKGV2dDogRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgZHJvcENvbnRhaW5lci5zdHlsZS5vcGFjaXR5ID0gMC42O1xyXG4gICAgICAgICAgICBkcm9wQ29udGFpbmVyLnN0eWxlLmJvcmRlciA9ICcycHggZGFzaGVkIGdyZXknO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBkcm9wQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCBhc3luYyAoZXZ0OiBEcmFnRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGRyb3BDb250YWluZXIuc3R5bGUub3BhY2l0eSA9IDAuNjtcclxuICAgICAgICAgICAgZHJvcENvbnRhaW5lci5zdHlsZS5ib3JkZXIgPSAnMnB4IGRhc2hlZCBncmV5JztcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy4jdXBsb2FkRmlsZShldnQuZGF0YVRyYW5zZmVyKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHJlbG9hZCA9IChwcmV2aWV3RmlsZXM6IFByZXZpZXdGaWxlW10pID0+IHtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHByZXZpZXdGaWxlcykpIHtcclxuICAgICAgdGhpcy5wcmV2aWV3RmlsZXMgPSBwcmV2aWV3RmlsZXM7XHJcbiAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdChwcmV2aWV3RmlsZXMpO1xyXG4gICAgICAvLyB0aGlzLnNkQ2hhbmdlLmVtaXQocHJldmlld0ZpbGVzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICN2YWxpZGF0ZSA9IGFzeW5jIChmaWxlOiBGaWxlKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdpbWFnZScpIHtcclxuICAgICAgaWYgKGZpbGUudHlwZS5zcGxpdCgnLycpWzBdICE9PSAnaW1hZ2UnKSB7XHJcbiAgICAgICAgcmV0dXJuIGBbJHtmaWxlLm5hbWV9XSAke3RoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ1VwbG9hZGVkIGZpbGUgaXMgbm90IGFuIGltYWdlJyl9YDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZXh0ZW5zaW9ucz8ubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IGxhc3REb3QgPSBmaWxlLm5hbWUubGFzdEluZGV4T2YoJy4nKTtcclxuICAgICAgY29uc3QgZXh0ZW5zaW9uID0gZmlsZS5uYW1lLnN1YnN0cmluZyhsYXN0RG90ICsgMSk7XHJcbiAgICAgIGlmICghdGhpcy5leHRlbnNpb25zLnNvbWUoZSA9PiBlLnRvVXBwZXJDYXNlKCkgPT09IGV4dGVuc2lvbi50b1VwcGVyQ2FzZSgpKSkge1xyXG4gICAgICAgIHJldHVybiBgWyR7ZmlsZS5uYW1lfV0gJHt0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdVcGxvYWRlZCBmaWxlIGlzIG5vdCBtYXRjaCBleHRlbnNpb24nKX0gJHt0aGlzLmV4dGVuc2lvbnMuam9pbignLCAnKX1gO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tYXhTaXplKSB7XHJcbiAgICAgIGlmICh0aGlzLm1heFNpemUgKiAxMDI0ICogMTAyNCA8IGZpbGUuc2l6ZSkge1xyXG4gICAgICAgIHJldHVybiBgWyR7ZmlsZS5uYW1lfV0gJHt0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdNYXggZmlsZSBzaXplJyl9ICR7dGhpcy5tYXhTaXplfSBNYnNgO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy50eXBlID09PSAnaW1hZ2UnICYmICh0aGlzLm1heFdpZHRoIHx8IHRoaXMubWF4SGVpZ2h0KSkge1xyXG4gICAgICBjb25zdCBtZXNzYWdlOiBzdHJpbmcgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgICBjb25zdCBVUkwgPSB3aW5kb3cuVVJMIHx8IHdpbmRvdy53ZWJraXRVUkw7XHJcbiAgICAgICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XHJcbiAgICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLm1heFdpZHRoICYmIGltZy53aWR0aCA+IHRoaXMubWF4V2lkdGgpIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShgWyR7ZmlsZS5uYW1lfV0gJHt0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdNYXggaW1hZ2Ugd2lkdGgnKX0gJHt0aGlzLm1heFdpZHRofXB4YCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy5tYXhIZWlnaHQgJiYgaW1nLmhlaWdodCA+IHRoaXMubWF4SGVpZ2h0KSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUoYFske2ZpbGUubmFtZX1dICR7dGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnTWF4IGltYWdlIGhlaWdodCcpfSAke3RoaXMubWF4SGVpZ2h0fXB4YCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXNvbHZlKG51bGwpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgaW1nLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAobWVzc2FnZSkge1xyXG4gICAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gICNwcmV2aWV3ID0gKCkgPT4ge1xyXG4gICAgZm9yIChjb25zdCBwcmV2aWV3RmlsZSBvZiB0aGlzLnByZXZpZXdGaWxlcy5maWx0ZXIoZSA9PiBlLmZpbGUpKSB7XHJcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZXZ0KSA9PiB7XHJcbiAgICAgICAgcHJldmlld0ZpbGUucHJldmlld1NyYyA9IGV2dC50YXJnZXQucmVzdWx0O1xyXG4gICAgICAgIHByZXZpZXdGaWxlLmlzUHJldmlld0ltYWdlID0gcHJldmlld0ZpbGUuZmlsZT8udHlwZS5zcGxpdCgnLycpWzBdID09PSAnaW1hZ2UnO1xyXG4gICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfTtcclxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwocHJldmlld0ZpbGUuZmlsZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblVwbG9hZCA9IChwcmV2aWV3RmlsZT86IFByZXZpZXdGaWxlKSA9PiB7XHJcbiAgICBpZiAoJChgIyR7dGhpcy5pZH1gKS5sZW5ndGgpIHtcclxuICAgICAgJCgnYm9keScpLmNoaWxkcmVuKGAjJHt0aGlzLmlkfWApLnJlbW92ZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZpZXdGaWxlIHx8IHRoaXMubWF4ID09PSAxKSB7XHJcbiAgICAgICQoJ2JvZHknKS5hcHBlbmQoYDxpbnB1dCBpZD1cIiR7dGhpcy5pZH1cIiBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIiB0eXBlPVwiZmlsZVwiIC8+YCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAkKCdib2R5JykuYXBwZW5kKGA8aW5wdXQgaWQ9XCIke3RoaXMuaWR9XCIgc3R5bGU9XCJkaXNwbGF5OiBub25lXCIgdHlwZT1cImZpbGVcIiBtdWx0aXBsZSAvPmApO1xyXG4gICAgfVxyXG4gICAgJChgIyR7dGhpcy5pZH1gKS5vbignY2hhbmdlJywgYXN5bmMgKGV2dDogYW55KSA9PiB7XHJcbiAgICAgIGF3YWl0IHRoaXMuI3VwbG9hZEZpbGUoZXZ0LnRhcmdldCwgcHJldmlld0ZpbGUpO1xyXG4gICAgICAkKCdib2R5JykuY2hpbGRyZW4oYCMke3RoaXMuaWR9YCkucmVtb3ZlKCk7XHJcbiAgICB9KTtcclxuICAgICQoYCMke3RoaXMuaWR9YCkudHJpZ2dlcignY2xpY2snKTtcclxuICB9XHJcblxyXG4gICN1cGxvYWRGaWxlID0gYXN5bmMgKHRhcmdldDogRGF0YVRyYW5zZmVyLCBwcmV2aWV3RmlsZT86IFByZXZpZXdGaWxlKSA9PiB7XHJcbiAgICBpZiAoIXRhcmdldC5maWxlcy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb3JpZ2luRmlsZXMgPSB0YXJnZXQuZmlsZXM7XHJcbiAgICBjb25zdCBmaWxlczogRmlsZVtdID0gW107XHJcbiAgICBpZiAoIXByZXZpZXdGaWxlKSB7XHJcbiAgICAgIGlmIChvcmlnaW5GaWxlcy5sZW5ndGggKyB0aGlzLnByZXZpZXdGaWxlcy5sZW5ndGggPiB0aGlzLm1heCkge1xyXG4gICAgICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZyhgJHt0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdNYXggbnVtYmVyIG9mIGZpbGVzJyl9ICR7dGhpcy5tYXh9YCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3JpZ2luRmlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgZmlsZSA9IG9yaWdpbkZpbGVzLml0ZW0oaSk7XHJcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ2ltYWdlJyAmJiB0aGlzLnNjYWxlVG9QaXhlbCA+IDApIHtcclxuICAgICAgICAgIGZpbGUgPSBhd2FpdCB0aGlzLiNyZXNpemUoZmlsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCB0aGlzLiN2YWxpZGF0ZShmaWxlKTtcclxuICAgICAgICBpZiAobWVzc2FnZSkge1xyXG4gICAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKG1lc3NhZ2UpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaWxlcy5wdXNoKGZpbGUpO1xyXG4gICAgICB9XHJcbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xyXG4gICAgICAgIGNvbnN0IGxhc3REb3QgPSBmaWxlLm5hbWUubGFzdEluZGV4T2YoJy4nKTtcclxuICAgICAgICBjb25zdCBleHRlbnNpb24gPSBmaWxlLm5hbWUuc3Vic3RyaW5nKGxhc3REb3QgKyAxKTtcclxuICAgICAgICB0aGlzLnByZXZpZXdGaWxlcy5wdXNoKHtcclxuICAgICAgICAgIGZpbGUsXHJcbiAgICAgICAgICBpc1ByZXZpZXdJbWFnZTogZmFsc2UsXHJcbiAgICAgICAgICBwcmV2aWV3U3JjOiBudWxsLFxyXG4gICAgICAgICAgc3JjOiBudWxsLFxyXG4gICAgICAgICAgZmlsZU5hbWU6IGZpbGUubmFtZSxcclxuICAgICAgICAgIGV4dGVuc2lvblxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBpZHggPSB0aGlzLnByZXZpZXdGaWxlcy5pbmRleE9mKHByZXZpZXdGaWxlKTtcclxuICAgICAgbGV0IGZpbGUgPSBvcmlnaW5GaWxlcy5pdGVtKDApO1xyXG4gICAgICBpZiAodGhpcy50eXBlID09PSAnaW1hZ2UnICYmIHRoaXMuc2NhbGVUb1BpeGVsID4gMCkge1xyXG4gICAgICAgIGZpbGUgPSBhd2FpdCB0aGlzLiNyZXNpemUoZmlsZSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgbGFzdERvdCA9IGZpbGUubmFtZS5sYXN0SW5kZXhPZignLicpO1xyXG4gICAgICBjb25zdCBleHRlbnNpb24gPSBmaWxlLm5hbWUuc3Vic3RyaW5nKGxhc3REb3QgKyAxKTtcclxuICAgICAgdGhpcy5wcmV2aWV3RmlsZXNbaWR4XSA9IHtcclxuICAgICAgICBmaWxlLFxyXG4gICAgICAgIGlzUHJldmlld0ltYWdlOiBmYWxzZSxcclxuICAgICAgICBwcmV2aWV3U3JjOiBudWxsLFxyXG4gICAgICAgIHNyYzogbnVsbCxcclxuICAgICAgICBmaWxlTmFtZTogZmlsZS5uYW1lLFxyXG4gICAgICAgIGV4dGVuc2lvblxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgdGhpcy4jcHJldmlldygpO1xyXG4gICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHRoaXMucHJldmlld0ZpbGVzKTtcclxuICAgIHRoaXMuc2RDaGFuZ2UuZW1pdCh0aGlzLnByZXZpZXdGaWxlcyk7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBvblJlbW92ZSA9IChwcmV2aWV3RmlsZTogUHJldmlld0ZpbGUpID0+IHtcclxuICAgIHRoaXMubm90aWZ5U2VydmljZS5jb25maXJtRGVsZXRlKCkudGhlbigoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGlkeCA9IHRoaXMucHJldmlld0ZpbGVzLmluZGV4T2YocHJldmlld0ZpbGUpO1xyXG4gICAgICB0aGlzLnByZXZpZXdGaWxlcy5zcGxpY2UoaWR4LCAxKTtcclxuICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHRoaXMucHJldmlld0ZpbGVzKTtcclxuICAgICAgdGhpcy5zZENoYW5nZS5lbWl0KHRoaXMucHJldmlld0ZpbGVzKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25Ecm9wID0gKGV2ZW50OiBDZGtEcmFnRHJvcDxzdHJpbmdbXT4pID0+IHtcclxuICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLnByZXZpZXdGaWxlcywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh0aGlzLnByZXZpZXdGaWxlcyk7XHJcbiAgICB0aGlzLnNkQ2hhbmdlLmVtaXQodGhpcy5wcmV2aWV3RmlsZXMpO1xyXG4gIH1cclxuXHJcbiAgI3Jlc2l6ZSA9IGFzeW5jIChmaWxlOiBGaWxlKTogUHJvbWlzZTxGaWxlPiA9PiB7XHJcbiAgICBpZiAoIXRoaXMuc2NhbGVUb1BpeGVsKSB7XHJcbiAgICAgIHJldHVybiBmaWxlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgbGFzdERvdCA9IGZpbGUubmFtZS5sYXN0SW5kZXhPZignLicpO1xyXG4gICAgaWYgKGxhc3REb3QgPT09IC0xKSB7XHJcbiAgICAgIHJldHVybiBmaWxlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgY29uc3QgVVJMID0gd2luZG93LlVSTCB8fCB3aW5kb3cud2Via2l0VVJMO1xyXG4gICAgICBjb25zdCBpbWcgPSBuZXcgSW1hZ2UoKTtcclxuICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgaWYgKGltZy53aWR0aCAqIGltZy5oZWlnaHQgPD0gdGhpcy5zY2FsZVRvUGl4ZWwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoZmlsZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBjYW52YXMxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XHJcbiAgICAgICAgICBjYW52YXMxLnNldEF0dHJpYnV0ZSgnaWQnLCB0aGlzLiNjYW52YXMxKTtcclxuICAgICAgICAgIGNvbnN0IGN0eDEgPSBjYW52YXMxLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IHRoaXMuI3NjYWxlKGltZy53aWR0aCwgaW1nLmhlaWdodCwgdGhpcy5zY2FsZVRvUGl4ZWwpO1xyXG4gICAgICAgICAgY2FudmFzMS53aWR0aCA9IHdpZHRoO1xyXG4gICAgICAgICAgY2FudmFzMS5oZWlnaHQgPSBoZWlnaHQ7XHJcblxyXG4gICAgICAgICAgY29uc3QgY2FudmFzMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG4gICAgICAgICAgY2FudmFzMi5zZXRBdHRyaWJ1dGUoJ2lkJywgdGhpcy4jY2FudmFzMik7XHJcbiAgICAgICAgICBjb25zdCBjdHgyID0gY2FudmFzMi5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgICAgICAgY2FudmFzMi53aWR0aCA9IHdpZHRoO1xyXG4gICAgICAgICAgY2FudmFzMi5oZWlnaHQgPSBoZWlnaHQ7XHJcbiAgICAgICAgICBjdHgyLmRyYXdJbWFnZShpbWcsIDAsIDAsIGNhbnZhczIud2lkdGgsIGNhbnZhczIuaGVpZ2h0KTtcclxuICAgICAgICAgIGN0eDIuZHJhd0ltYWdlKGNhbnZhczIsIDAsIDAsIGNhbnZhczIud2lkdGggKiAwLjUsIGNhbnZhczIuaGVpZ2h0ICogMC41KTtcclxuICAgICAgICAgIGN0eDEuZHJhd0ltYWdlKGNhbnZhczIsIDAsIDAsIGNhbnZhczIud2lkdGggKiAwLjUsIGNhbnZhczIuaGVpZ2h0ICogMC41LCAwLCAwLCBjYW52YXMxLndpZHRoLCBjYW52YXMxLmhlaWdodCk7XHJcbiAgICAgICAgICBjYW52YXMxLnRvQmxvYihibG9iID0+IHtcclxuICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLiNibG9iVG9GaWxlKGJsb2IsIGAke2ZpbGUubmFtZS5zdWJzdHJpbmcoMCwgbGFzdERvdCl9LnBuZ2ApKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgcmVqZWN0KGVycik7XHJcbiAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICQoYCMke3RoaXMuI2NhbnZhczF9YCkucmVtb3ZlKCk7XHJcbiAgICAgICAgICAkKGAjJHt0aGlzLiNjYW52YXMyfWApLnJlbW92ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgaW1nLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gICNzY2FsZSA9ICh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgc2NhbGVUb1BpeGNlbDogbnVtYmVyKSA9PiB7XHJcbiAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQgfHwgIXNjYWxlVG9QaXhjZWwpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICB3aWR0aCxcclxuICAgICAgICBoZWlnaHRcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJhdGlvID0gd2lkdGggLyBoZWlnaHQ7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdpZHRoOyBpKyspIHtcclxuICAgICAgd2lkdGggLT0gaTtcclxuICAgICAgaGVpZ2h0ID0gTWF0aC50cnVuYyh3aWR0aCAvIHJhdGlvKTtcclxuICAgICAgaWYgKHdpZHRoICogaGVpZ2h0IDw9IHNjYWxlVG9QaXhjZWwpIHtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgd2lkdGgsXHJcbiAgICAgIGhlaWdodFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ID0gKGZpbGU6IFByZXZpZXdGaWxlKSA9PiB7XHJcbiAgICBpZiAoIXRoaXMuI2lzTW9iaWxlT3JUYWJsZXQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWxlICE9PSBmaWxlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlID0gZmlsZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICNibG9iVG9GaWxlID0gKGJsb2I6IEJsb2IsIGZpbGVOYW1lOiBzdHJpbmcpOiBGaWxlID0+IHtcclxuICAgIGNvbnN0IHRlbXA6IGFueSA9IGJsb2I7XHJcbiAgICB0ZW1wLmxhc3RNb2RpZmllZERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgdGVtcC5uYW1lID0gZmlsZU5hbWU7XHJcbiAgICByZXR1cm4gYmxvYiBhcyBGaWxlO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQcmV2aWV3RmlsZSB7XHJcbiAgZmlsZTogRmlsZTtcclxuICBzcmM6IHN0cmluZztcclxuICBwcmV2aWV3U3JjOiBzdHJpbmcgfCBBcnJheUJ1ZmZlcjtcclxuICBpc1ByZXZpZXdJbWFnZTogYm9vbGVhbjtcclxuICBmaWxlTmFtZT86IHN0cmluZztcclxuICBleHRlbnNpb24/OiBzdHJpbmc7XHJcbn1cclxuIl19
|
|
421
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWZpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS91cGxvYWQtZmlsZS8iLCJzb3VyY2VzIjpbInNyYy9saWIvdXBsb2FkLWZpbGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixpQkFBaUIsRUFJakIsWUFBWSxFQUdaLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MscUZBQXFGO0FBTXJGLE1BQU0sT0FBTyxZQUFZO0lBZ0V2QixZQUNFLGFBQW9DLEVBQzVCLEdBQXNCLEVBQ3RCLGFBQThCLEVBQzlCLGdCQUFvQztRQUZwQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFDOUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQjtRQW5FOUMsT0FBRSxHQUFHLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDckIsNEJBQW9CLEtBQUss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QUFxQjtZQVY1QixpQkFBaUI7WUFhVixlQUFlO1lBQ2Ysa0JBQWtCOzs7b0JBaUJ4QixLQUFLO21CQUNMLEtBQUs7dUJBQ0wsS0FBSzt5QkFDTCxLQUFLO2tCQUNMLEtBQUs7c0JBQ0wsS0FBSzt1QkFDTCxLQUFLO3dCQUNMLEtBQUs7MkJBQ0wsS0FBSzttQkFFTCxLQUFLOzJCQU1MLEtBQUs7NEJBQ0wsS0FBSztvQkFDTCxLQUFLO29CQUVMLEtBQUs7MEJBNkJMLE1BQU07dUJBQ04sTUFBTTsyQkFDTixZQUFZLFNBQUMsYUFBYTtxQkFDMUIsU0FBUyxTQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgRWxlbWVudFJlZixcclxuICBPbkluaXQsXHJcbiAgVmlld0NoaWxkcmVuLFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlIH0gZnJvbSAnbmd4LWRldmljZS1kZXRlY3Rvcic7XHJcbmltcG9ydCAqIGFzIHV1aWQgZnJvbSAndXVpZCc7XHJcbmltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XHJcbmltcG9ydCB7IFNkTm90aWZ5U2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvbm90aWZ5JztcclxuaW1wb3J0IHsgU2RUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS90cmFuc2xhdGUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDQ1OTM3OS9wcmV2aWV3LWFuLWltYWdlLWJlZm9yZS1pdC1pcy11cGxvYWRlZFxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLXVwbG9hZC1maWxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdXBsb2FkLWZpbGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VwbG9hZC1maWxlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNkVXBsb2FkRmlsZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBpZCA9IGBJJHt1dWlkLnY0KCl9YDtcclxuICAjaXNNb2JpbGVPclRhYmxldCA9IGZhbHNlO1xyXG4gICNjYW52YXMxID0gYEMke3V1aWQudjQoKX1gO1xyXG4gICNjYW52YXMyID0gYEMke3V1aWQudjQoKX1gO1xyXG4gIHByZXZpZXdGaWxlczogUHJldmlld0ZpbGVbXSA9IFtdO1xyXG4gIHNlbGVjdGVkRmlsZTogUHJldmlld0ZpbGU7XHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcclxuICBASW5wdXQoKSB0eXBlOiAnaW1hZ2UnIHwgJ2ZpbGUnID0gJ2ZpbGUnO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZXh0ZW5zaW9uczogc3RyaW5nW10gPSBbXTtcclxuICBASW5wdXQoKSBtYXggPSAxO1xyXG4gIEBJbnB1dCgpIG1heFNpemU6IG51bWJlcjtcclxuICBASW5wdXQoKSBtYXhXaWR0aDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIG1heEhlaWdodDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHNjYWxlVG9QaXhlbDogbnVtYmVyO1xyXG4gICNzcmNzOiBzdHJpbmdbXTtcclxuICBASW5wdXQoKSBzZXQgc3JjcyhzcmNzOiBzdHJpbmdbXSkge1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc3JjcykpIHtcclxuICAgICAgdGhpcy4jc3JjcyA9IHNyY3M7XHJcbiAgICAgIHRoaXMuI3NyY0NoYW5nZXMubmV4dCh0aGlzLiNzcmNzKTtcclxuICAgIH1cclxuICB9XHJcbiAgQElucHV0KCkgcHJldmlld1dpZHRoOiBzdHJpbmcgPSAnMTAwcHgnO1xyXG4gIEBJbnB1dCgpIHByZXZpZXdIZWlnaHQ6IHN0cmluZyA9ICcxMDBweCc7XHJcbiAgQElucHV0KCkgYWxpZ246ICdsZWZ0JyB8ICdjZW50ZXInID0gJ2NlbnRlcic7XHJcbiAgI21vZGVsOiBQcmV2aWV3RmlsZVtdO1xyXG4gIEBJbnB1dCgpIHNldCBtb2RlbChtb2RlbDogKHN0cmluZyB8IFByZXZpZXdGaWxlKVtdKSB7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShtb2RlbCkgJiYgdGhpcy4jbW9kZWwgIT09IG1vZGVsKSB7XHJcbiAgICAgIGxldCBmbGFnID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuI21vZGVsID0gbW9kZWwubWFwKHNyYyA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiAoc3JjKSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgIGxldCBleHRlbnNpb24gPSBudWxsO1xyXG4gICAgICAgICAgY29uc3QgbGFzdERvdCA9IHNyYy5sYXN0SW5kZXhPZignLicpO1xyXG4gICAgICAgICAgaWYgKGxhc3REb3QgPiAwKSB7XHJcbiAgICAgICAgICAgIGV4dGVuc2lvbiA9IHNyYy5zdWJzdHJpbmcobGFzdERvdCArIDEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZmxhZyA9IHRydWU7XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBmaWxlOiBudWxsLFxyXG4gICAgICAgICAgICBwcmV2aWV3U3JjOiBudWxsLFxyXG4gICAgICAgICAgICBzcmMsXHJcbiAgICAgICAgICAgIGlzUHJldmlld0ltYWdlOiB0aGlzLnR5cGUgPT09ICdpbWFnZScsXHJcbiAgICAgICAgICAgIGV4dGVuc2lvblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc3JjO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy4jbW9kZWwpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuI21vZGVsQ2hhbmdlcy5uZXh0KHRoaXMuI21vZGVsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuI21vZGVsID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBPdXRwdXQoKSBtb2RlbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UHJldmlld0ZpbGVbXT4oKTtcclxuICBAT3V0cHV0KCkgc2RDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFByZXZpZXdGaWxlW10+KCk7XHJcbiAgQFZpZXdDaGlsZHJlbignZHJvcEVsZW1lbnQnKSBkcm9wRWxlbWVudHM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcclxuICBAVmlld0NoaWxkKCdjYW52YXMnKSBjYW52YXM6IEVsZW1lbnRSZWY7XHJcbiAgI3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICAjY3VycmVudERyb3BDb250YWluZXI6IGFueTtcclxuICAjc3JjQ2hhbmdlcyA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgI21vZGVsQ2hhbmdlcyA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBkZXZpY2VTZXJ2aWNlOiBEZXZpY2VEZXRlY3RvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIG5vdGlmeVNlcnZpY2U6IFNkTm90aWZ5U2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogU2RUcmFuc2xhdGVTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLiNpc01vYmlsZU9yVGFibGV0ID0gIWRldmljZVNlcnZpY2UuaXNEZXNrdG9wKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKHRoaXMuI3NyY0NoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy4jc3JjcykpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheSh0aGlzLiNzcmNzKSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBwcmV2aWV3RmlsZXMgPSB0aGlzLiNzcmNzLm1hcChzcmMgPT4ge1xyXG4gICAgICAgIGxldCBleHRlbnNpb24gPSBudWxsO1xyXG4gICAgICAgIGNvbnN0IGxhc3REb3QgPSBzcmMubGFzdEluZGV4T2YoJy4nKTtcclxuICAgICAgICBpZiAobGFzdERvdCA+IDApIHtcclxuICAgICAgICAgIGV4dGVuc2lvbiA9IHNyYy5zdWJzdHJpbmcobGFzdERvdCArIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgZmlsZTogbnVsbCxcclxuICAgICAgICAgIHByZXZpZXdTcmM6IG51bGwsXHJcbiAgICAgICAgICBzcmMsXHJcbiAgICAgICAgICBpc1ByZXZpZXdJbWFnZTogdGhpcy50eXBlID09PSAnaW1hZ2UnLFxyXG4gICAgICAgICAgZXh0ZW5zaW9uXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5wcmV2aWV3RmlsZXMgPSBwcmV2aWV3RmlsZXM7XHJcbiAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdChwcmV2aWV3RmlsZXMpO1xyXG4gICAgICAvLyB0aGlzLnNkQ2hhbmdlLmVtaXQocHJldmlld0ZpbGVzKTtcclxuICAgIH0pKTtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy4jbW9kZWxDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKFtdKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy4jbW9kZWwpKSB7XHJcbiAgICAgICAgdGhpcy5wcmV2aWV3RmlsZXMgPSB0aGlzLiNtb2RlbDtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gICAgaWYgKCF0aGlzLiNpc01vYmlsZU9yVGFibGV0KSB7XHJcbiAgICAgIGlmICh0aGlzLmRyb3BFbGVtZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgY29uc3QgZHJvcENvbnRhaW5lciA9IHRoaXMuZHJvcEVsZW1lbnRzLmZpcnN0Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgdGhpcy4jY3VycmVudERyb3BDb250YWluZXIgPSBkcm9wQ29udGFpbmVyO1xyXG4gICAgICAgIGRyb3BDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCAoZXZ0OiBFdmVudCkgPT4ge1xyXG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICBkcm9wQ29udGFpbmVyLnN0eWxlLm9wYWNpdHkgPSAwLjk7XHJcbiAgICAgICAgICBkcm9wQ29udGFpbmVyLnN0eWxlLmJvcmRlciA9ICcycHggc29saWQgZ3JleSc7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZHJvcENvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdkcmFnZW50ZXInLCAoZXZ0OiBFdmVudCkgPT4ge1xyXG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZHJvcENvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdkcmFnbGVhdmUnLCAoZXZ0OiBFdmVudCkgPT4ge1xyXG4gICAgICAgICAgZHJvcENvbnRhaW5lci5zdHlsZS5vcGFjaXR5ID0gMC42O1xyXG4gICAgICAgICAgZHJvcENvbnRhaW5lci5zdHlsZS5ib3JkZXIgPSAnMnB4IGRhc2hlZCBncmV5JztcclxuICAgICAgICB9KTtcclxuICAgICAgICBkcm9wQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCBhc3luYyAoZXZ0OiBEcmFnRXZlbnQpID0+IHtcclxuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgZHJvcENvbnRhaW5lci5zdHlsZS5vcGFjaXR5ID0gMC42O1xyXG4gICAgICAgICAgZHJvcENvbnRhaW5lci5zdHlsZS5ib3JkZXIgPSAnMnB4IGRhc2hlZCBncmV5JztcclxuICAgICAgICAgIGF3YWl0IHRoaXMuI3VwbG9hZEZpbGUoZXZ0LmRhdGFUcmFuc2Zlcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmRyb3BFbGVtZW50cy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZHJvcEVsZW1lbnRzLmxlbmd0aCA+IDAgJiYgdGhpcy4jY3VycmVudERyb3BDb250YWluZXIgIT09IHRoaXMuZHJvcEVsZW1lbnRzLmZpcnN0Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgIGNvbnN0IGRyb3BDb250YWluZXIgPSB0aGlzLmRyb3BFbGVtZW50cy5maXJzdC5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgICAgdGhpcy4jY3VycmVudERyb3BDb250YWluZXIgPSBkcm9wQ29udGFpbmVyO1xyXG4gICAgICAgICAgZHJvcENvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdkcmFnb3ZlcicsIChldnQ6IEV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBkcm9wQ29udGFpbmVyLnN0eWxlLm9wYWNpdHkgPSAwLjk7XHJcbiAgICAgICAgICAgIGRyb3BDb250YWluZXIuc3R5bGUuYm9yZGVyID0gJzJweCBzb2xpZCBncmV5JztcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgZHJvcENvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdkcmFnZW50ZXInLCAoZXZ0OiBFdmVudCkgPT4ge1xyXG4gICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgZHJvcENvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdkcmFnbGVhdmUnLCAoZXZ0OiBFdmVudCkgPT4ge1xyXG4gICAgICAgICAgICBkcm9wQ29udGFpbmVyLnN0eWxlLm9wYWNpdHkgPSAwLjY7XHJcbiAgICAgICAgICAgIGRyb3BDb250YWluZXIuc3R5bGUuYm9yZGVyID0gJzJweCBkYXNoZWQgZ3JleSc7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGRyb3BDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignZHJvcCcsIGFzeW5jIChldnQ6IERyYWdFdmVudCkgPT4ge1xyXG4gICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZHJvcENvbnRhaW5lci5zdHlsZS5vcGFjaXR5ID0gMC42O1xyXG4gICAgICAgICAgICBkcm9wQ29udGFpbmVyLnN0eWxlLmJvcmRlciA9ICcycHggZGFzaGVkIGdyZXknO1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLiN1cGxvYWRGaWxlKGV2dC5kYXRhVHJhbnNmZXIpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVsb2FkID0gKHByZXZpZXdGaWxlczogUHJldmlld0ZpbGVbXSkgPT4ge1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocHJldmlld0ZpbGVzKSkge1xyXG4gICAgICB0aGlzLnByZXZpZXdGaWxlcyA9IHByZXZpZXdGaWxlcztcclxuICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHByZXZpZXdGaWxlcyk7XHJcbiAgICAgIC8vIHRoaXMuc2RDaGFuZ2UuZW1pdChwcmV2aWV3RmlsZXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgI3ZhbGlkYXRlID0gYXN5bmMgKGZpbGU6IEZpbGUpOiBQcm9taXNlPHN0cmluZz4gPT4ge1xyXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ2ltYWdlJykge1xyXG4gICAgICBpZiAoZmlsZS50eXBlLnNwbGl0KCcvJylbMF0gIT09ICdpbWFnZScpIHtcclxuICAgICAgICByZXR1cm4gYFske2ZpbGUubmFtZX1dICR7dGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnVXBsb2FkZWQgZmlsZSBpcyBub3QgYW4gaW1hZ2UnKX1gO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5leHRlbnNpb25zPy5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgbGFzdERvdCA9IGZpbGUubmFtZS5sYXN0SW5kZXhPZignLicpO1xyXG4gICAgICBjb25zdCBleHRlbnNpb24gPSBmaWxlLm5hbWUuc3Vic3RyaW5nKGxhc3REb3QgKyAxKTtcclxuICAgICAgaWYgKCF0aGlzLmV4dGVuc2lvbnMuc29tZShlID0+IGUudG9VcHBlckNhc2UoKSA9PT0gZXh0ZW5zaW9uLnRvVXBwZXJDYXNlKCkpKSB7XHJcbiAgICAgICAgcmV0dXJuIGBbJHtmaWxlLm5hbWV9XSAke3RoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ1VwbG9hZGVkIGZpbGUgaXMgbm90IG1hdGNoIGV4dGVuc2lvbicpfSAke3RoaXMuZXh0ZW5zaW9ucy5qb2luKCcsICcpfWA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1heFNpemUpIHtcclxuICAgICAgaWYgKHRoaXMubWF4U2l6ZSAqIDEwMjQgKiAxMDI0IDwgZmlsZS5zaXplKSB7XHJcbiAgICAgICAgcmV0dXJuIGBbJHtmaWxlLm5hbWV9XSAke3RoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ01heCBmaWxlIHNpemUnKX0gJHt0aGlzLm1heFNpemV9IE1ic2A7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdpbWFnZScgJiYgKHRoaXMubWF4V2lkdGggfHwgdGhpcy5tYXhIZWlnaHQpKSB7XHJcbiAgICAgIGNvbnN0IG1lc3NhZ2U6IHN0cmluZyA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICAgIGNvbnN0IFVSTCA9IHdpbmRvdy5VUkwgfHwgd2luZG93LndlYmtpdFVSTDtcclxuICAgICAgICBjb25zdCBpbWcgPSBuZXcgSW1hZ2UoKTtcclxuICAgICAgICBpbWcub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMubWF4V2lkdGggJiYgaW1nLndpZHRoID4gdGhpcy5tYXhXaWR0aCkge1xyXG4gICAgICAgICAgICByZXNvbHZlKGBbJHtmaWxlLm5hbWV9XSAke3RoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ01heCBpbWFnZSB3aWR0aCcpfSAke3RoaXMubWF4V2lkdGh9cHhgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLm1heEhlaWdodCAmJiBpbWcuaGVpZ2h0ID4gdGhpcy5tYXhIZWlnaHQpIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShgWyR7ZmlsZS5uYW1lfV0gJHt0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdNYXggaW1hZ2UgaGVpZ2h0Jyl9ICR7dGhpcy5tYXhIZWlnaHR9cHhgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJlc29sdmUobnVsbCk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBpbWcuc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChtZXNzYWdlKSB7XHJcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgI3ByZXZpZXcgPSAoKSA9PiB7XHJcbiAgICBmb3IgKGNvbnN0IHByZXZpZXdGaWxlIG9mIHRoaXMucHJldmlld0ZpbGVzLmZpbHRlcihlID0+IGUuZmlsZSkpIHtcclxuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgcmVhZGVyLm9ubG9hZCA9IChldnQpID0+IHtcclxuICAgICAgICBwcmV2aWV3RmlsZS5wcmV2aWV3U3JjID0gZXZ0LnRhcmdldC5yZXN1bHQ7XHJcbiAgICAgICAgcHJldmlld0ZpbGUuaXNQcmV2aWV3SW1hZ2UgPSBwcmV2aWV3RmlsZS5maWxlPy50eXBlLnNwbGl0KCcvJylbMF0gPT09ICdpbWFnZSc7XHJcbiAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9O1xyXG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChwcmV2aWV3RmlsZS5maWxlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uVXBsb2FkID0gKHByZXZpZXdGaWxlPzogUHJldmlld0ZpbGUpID0+IHtcclxuICAgIGlmICgkKGAjJHt0aGlzLmlkfWApLmxlbmd0aCkge1xyXG4gICAgICAkKCdib2R5JykuY2hpbGRyZW4oYCMke3RoaXMuaWR9YCkucmVtb3ZlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAocHJldmlld0ZpbGUgfHwgdGhpcy5tYXggPT09IDEpIHtcclxuICAgICAgJCgnYm9keScpLmFwcGVuZChgPGlucHV0IGlkPVwiJHt0aGlzLmlkfVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiIHR5cGU9XCJmaWxlXCIgLz5gKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICQoJ2JvZHknKS5hcHBlbmQoYDxpbnB1dCBpZD1cIiR7dGhpcy5pZH1cIiBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIiB0eXBlPVwiZmlsZVwiIG11bHRpcGxlIC8+YCk7XHJcbiAgICB9XHJcbiAgICAkKGAjJHt0aGlzLmlkfWApLm9uKCdjaGFuZ2UnLCBhc3luYyAoZXZ0OiBhbnkpID0+IHtcclxuICAgICAgYXdhaXQgdGhpcy4jdXBsb2FkRmlsZShldnQudGFyZ2V0LCBwcmV2aWV3RmlsZSk7XHJcbiAgICAgICQoJ2JvZHknKS5jaGlsZHJlbihgIyR7dGhpcy5pZH1gKS5yZW1vdmUoKTtcclxuICAgIH0pO1xyXG4gICAgJChgIyR7dGhpcy5pZH1gKS50cmlnZ2VyKCdjbGljaycpO1xyXG4gIH1cclxuXHJcbiAgI3VwbG9hZEZpbGUgPSBhc3luYyAodGFyZ2V0OiBEYXRhVHJhbnNmZXIsIHByZXZpZXdGaWxlPzogUHJldmlld0ZpbGUpID0+IHtcclxuICAgIGlmICghdGFyZ2V0LmZpbGVzLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBvcmlnaW5GaWxlcyA9IHRhcmdldC5maWxlcztcclxuICAgIGNvbnN0IGZpbGVzOiBGaWxlW10gPSBbXTtcclxuICAgIGlmICghcHJldmlld0ZpbGUpIHtcclxuICAgICAgaWYgKG9yaWdpbkZpbGVzLmxlbmd0aCArIHRoaXMucHJldmlld0ZpbGVzLmxlbmd0aCA+IHRoaXMubWF4KSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKGAke3RoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ01heCBudW1iZXIgb2YgZmlsZXMnKX0gJHt0aGlzLm1heH1gKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcmlnaW5GaWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBmaWxlID0gb3JpZ2luRmlsZXMuaXRlbShpKTtcclxuICAgICAgICBpZiAodGhpcy50eXBlID09PSAnaW1hZ2UnICYmIHRoaXMuc2NhbGVUb1BpeGVsID4gMCkge1xyXG4gICAgICAgICAgZmlsZSA9IGF3YWl0IHRoaXMuI3Jlc2l6ZShmaWxlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHRoaXMuI3ZhbGlkYXRlKGZpbGUpO1xyXG4gICAgICAgIGlmIChtZXNzYWdlKSB7XHJcbiAgICAgICAgICB0aGlzLm5vdGlmeVNlcnZpY2Uubm90aWZ5Lndhcm5pbmcobWVzc2FnZSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbGVzLnB1c2goZmlsZSk7XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XHJcbiAgICAgICAgY29uc3QgbGFzdERvdCA9IGZpbGUubmFtZS5sYXN0SW5kZXhPZignLicpO1xyXG4gICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbGUubmFtZS5zdWJzdHJpbmcobGFzdERvdCArIDEpO1xyXG4gICAgICAgIHRoaXMucHJldmlld0ZpbGVzLnB1c2goe1xyXG4gICAgICAgICAgZmlsZSxcclxuICAgICAgICAgIGlzUHJldmlld0ltYWdlOiBmYWxzZSxcclxuICAgICAgICAgIHByZXZpZXdTcmM6IG51bGwsXHJcbiAgICAgICAgICBzcmM6IG51bGwsXHJcbiAgICAgICAgICBmaWxlTmFtZTogZmlsZS5uYW1lLFxyXG4gICAgICAgICAgZXh0ZW5zaW9uXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGlkeCA9IHRoaXMucHJldmlld0ZpbGVzLmluZGV4T2YocHJldmlld0ZpbGUpO1xyXG4gICAgICBsZXQgZmlsZSA9IG9yaWdpbkZpbGVzLml0ZW0oMCk7XHJcbiAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdpbWFnZScgJiYgdGhpcy5zY2FsZVRvUGl4ZWwgPiAwKSB7XHJcbiAgICAgICAgZmlsZSA9IGF3YWl0IHRoaXMuI3Jlc2l6ZShmaWxlKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBsYXN0RG90ID0gZmlsZS5uYW1lLmxhc3RJbmRleE9mKCcuJyk7XHJcbiAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbGUubmFtZS5zdWJzdHJpbmcobGFzdERvdCArIDEpO1xyXG4gICAgICB0aGlzLnByZXZpZXdGaWxlc1tpZHhdID0ge1xyXG4gICAgICAgIGZpbGUsXHJcbiAgICAgICAgaXNQcmV2aWV3SW1hZ2U6IGZhbHNlLFxyXG4gICAgICAgIHByZXZpZXdTcmM6IG51bGwsXHJcbiAgICAgICAgc3JjOiBudWxsLFxyXG4gICAgICAgIGZpbGVOYW1lOiBmaWxlLm5hbWUsXHJcbiAgICAgICAgZXh0ZW5zaW9uXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICB0aGlzLiNwcmV2aWV3KCk7XHJcbiAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy5wcmV2aWV3RmlsZXMpO1xyXG4gICAgdGhpcy5zZENoYW5nZS5lbWl0KHRoaXMucHJldmlld0ZpbGVzKTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG9uUmVtb3ZlID0gKHByZXZpZXdGaWxlOiBQcmV2aWV3RmlsZSkgPT4ge1xyXG4gICAgdGhpcy5ub3RpZnlTZXJ2aWNlLmNvbmZpcm1EZWxldGUoKS50aGVuKCgpID0+IHtcclxuICAgICAgY29uc3QgaWR4ID0gdGhpcy5wcmV2aWV3RmlsZXMuaW5kZXhPZihwcmV2aWV3RmlsZSk7XHJcbiAgICAgIHRoaXMucHJldmlld0ZpbGVzLnNwbGljZShpZHgsIDEpO1xyXG4gICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy5wcmV2aWV3RmlsZXMpO1xyXG4gICAgICB0aGlzLnNkQ2hhbmdlLmVtaXQodGhpcy5wcmV2aWV3RmlsZXMpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkRyb3AgPSAoZXZlbnQ6IENka0RyYWdEcm9wPHN0cmluZ1tdPikgPT4ge1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMucHJldmlld0ZpbGVzLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHRoaXMucHJldmlld0ZpbGVzKTtcclxuICAgIHRoaXMuc2RDaGFuZ2UuZW1pdCh0aGlzLnByZXZpZXdGaWxlcyk7XHJcbiAgfVxyXG5cclxuICAjcmVzaXplID0gYXN5bmMgKGZpbGU6IEZpbGUpOiBQcm9taXNlPEZpbGU+ID0+IHtcclxuICAgIGlmICghdGhpcy5zY2FsZVRvUGl4ZWwpIHtcclxuICAgICAgcmV0dXJuIGZpbGU7XHJcbiAgICB9XHJcbiAgICBjb25zdCBsYXN0RG90ID0gZmlsZS5uYW1lLmxhc3RJbmRleE9mKCcuJyk7XHJcbiAgICBpZiAobGFzdERvdCA9PT0gLTEpIHtcclxuICAgICAgcmV0dXJuIGZpbGU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBjb25zdCBVUkwgPSB3aW5kb3cuVVJMIHx8IHdpbmRvdy53ZWJraXRVUkw7XHJcbiAgICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xyXG4gICAgICBpbWcub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBpZiAoaW1nLndpZHRoICogaW1nLmhlaWdodCA8PSB0aGlzLnNjYWxlVG9QaXhlbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShmaWxlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGNhbnZhczEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgICAgICAgIGNhbnZhczEuc2V0QXR0cmlidXRlKCdpZCcsIHRoaXMuI2NhbnZhczEpO1xyXG4gICAgICAgICAgY29uc3QgY3R4MSA9IGNhbnZhczEuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgICAgICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gdGhpcy4jc2NhbGUoaW1nLndpZHRoLCBpbWcuaGVpZ2h0LCB0aGlzLnNjYWxlVG9QaXhlbCk7XHJcbiAgICAgICAgICBjYW52YXMxLndpZHRoID0gd2lkdGg7XHJcbiAgICAgICAgICBjYW52YXMxLmhlaWdodCA9IGhlaWdodDtcclxuXHJcbiAgICAgICAgICBjb25zdCBjYW52YXMyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XHJcbiAgICAgICAgICBjYW52YXMyLnNldEF0dHJpYnV0ZSgnaWQnLCB0aGlzLiNjYW52YXMyKTtcclxuICAgICAgICAgIGNvbnN0IGN0eDIgPSBjYW52YXMyLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgICAgICBjYW52YXMyLndpZHRoID0gd2lkdGg7XHJcbiAgICAgICAgICBjYW52YXMyLmhlaWdodCA9IGhlaWdodDtcclxuICAgICAgICAgIGN0eDIuZHJhd0ltYWdlKGltZywgMCwgMCwgY2FudmFzMi53aWR0aCwgY2FudmFzMi5oZWlnaHQpO1xyXG4gICAgICAgICAgY3R4Mi5kcmF3SW1hZ2UoY2FudmFzMiwgMCwgMCwgY2FudmFzMi53aWR0aCAqIDAuNSwgY2FudmFzMi5oZWlnaHQgKiAwLjUpO1xyXG4gICAgICAgICAgY3R4MS5kcmF3SW1hZ2UoY2FudmFzMiwgMCwgMCwgY2FudmFzMi53aWR0aCAqIDAuNSwgY2FudmFzMi5oZWlnaHQgKiAwLjUsIDAsIDAsIGNhbnZhczEud2lkdGgsIGNhbnZhczEuaGVpZ2h0KTtcclxuICAgICAgICAgIGNhbnZhczEudG9CbG9iKGJsb2IgPT4ge1xyXG4gICAgICAgICAgICByZXNvbHZlKHRoaXMuI2Jsb2JUb0ZpbGUoYmxvYiwgYCR7ZmlsZS5uYW1lLnN1YnN0cmluZygwLCBsYXN0RG90KX0ucG5nYCkpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgJChgIyR7dGhpcy4jY2FudmFzMX1gKS5yZW1vdmUoKTtcclxuICAgICAgICAgICQoYCMke3RoaXMuI2NhbnZhczJ9YCkucmVtb3ZlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgICBpbWcuc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgI3NjYWxlID0gKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBzY2FsZVRvUGl4Y2VsOiBudW1iZXIpID0+IHtcclxuICAgIGlmICghd2lkdGggfHwgIWhlaWdodCB8fCAhc2NhbGVUb1BpeGNlbCkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHdpZHRoLFxyXG4gICAgICAgIGhlaWdodFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmF0aW8gPSB3aWR0aCAvIGhlaWdodDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgd2lkdGg7IGkrKykge1xyXG4gICAgICB3aWR0aCAtPSBpO1xyXG4gICAgICBoZWlnaHQgPSBNYXRoLnRydW5jKHdpZHRoIC8gcmF0aW8pO1xyXG4gICAgICBpZiAod2lkdGggKiBoZWlnaHQgPD0gc2NhbGVUb1BpeGNlbCkge1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB3aWR0aCxcclxuICAgICAgaGVpZ2h0XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3QgPSAoZmlsZTogUHJldmlld0ZpbGUpID0+IHtcclxuICAgIGlmICghdGhpcy4jaXNNb2JpbGVPclRhYmxldCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZpbGUgIT09IGZpbGUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpbGUgPSBmaWxlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpbGUgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgI2Jsb2JUb0ZpbGUgPSAoYmxvYjogQmxvYiwgZmlsZU5hbWU6IHN0cmluZyk6IEZpbGUgPT4ge1xyXG4gICAgY29uc3QgdGVtcDogYW55ID0gYmxvYjtcclxuICAgIHRlbXAubGFzdE1vZGlmaWVkRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICB0ZW1wLm5hbWUgPSBmaWxlTmFtZTtcclxuICAgIHJldHVybiBibG9iIGFzIEZpbGU7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFByZXZpZXdGaWxlIHtcclxuICBmaWxlOiBGaWxlO1xyXG4gIHNyYzogc3RyaW5nO1xyXG4gIHByZXZpZXdTcmM6IHN0cmluZyB8IEFycmF5QnVmZmVyO1xyXG4gIGlzUHJldmlld0ltYWdlOiBib29sZWFuO1xyXG4gIGZpbGVOYW1lPzogc3RyaW5nO1xyXG4gIGV4dGVuc2lvbj86IHN0cmluZztcclxufVxyXG4iXX0=
|
|
@@ -10,8 +10,7 @@ import { Subject, Subscription, isObservable } from 'rxjs';
|
|
|
10
10
|
import { SdNotifyService } from '@sd-angular/core/notify';
|
|
11
11
|
import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
|
|
12
12
|
import { startWith, debounceTime, map, switchMap } from 'rxjs/operators';
|
|
13
|
-
import
|
|
14
|
-
import hash__default from 'object-hash';
|
|
13
|
+
import hash from 'object-hash';
|
|
15
14
|
import { SdSettingService } from '@sd-angular/core/setting';
|
|
16
15
|
import { DeviceDetectorService } from 'ngx-device-detector';
|
|
17
16
|
import { SdLoadingService } from '@sd-angular/core/loading';
|
|
@@ -237,7 +236,7 @@ class SdGridFilterService {
|
|
|
237
236
|
prefix: __classPrivateFieldGet(this, _prefix),
|
|
238
237
|
key
|
|
239
238
|
});
|
|
240
|
-
key =
|
|
239
|
+
key = hash({
|
|
241
240
|
prefix: __classPrivateFieldGet(this, _prefix),
|
|
242
241
|
key
|
|
243
242
|
});
|
|
@@ -694,7 +693,7 @@ class SdPopupExport {
|
|
|
694
693
|
if (!((_b = (_a = this.gridOption) === null || _a === void 0 ? void 0 : _a.export) === null || _b === void 0 ? void 0 : _b.key)) {
|
|
695
694
|
return null;
|
|
696
695
|
}
|
|
697
|
-
return
|
|
696
|
+
return hash({
|
|
698
697
|
prefix,
|
|
699
698
|
key: (_d = (_c = this.gridOption) === null || _c === void 0 ? void 0 : _c.export) === null || _d === void 0 ? void 0 : _d.key
|
|
700
699
|
});
|
|
@@ -766,7 +765,7 @@ class SdGridConfigurationService {
|
|
|
766
765
|
if (!((_a = gridOption === null || gridOption === void 0 ? void 0 : gridOption.config) === null || _a === void 0 ? void 0 : _a.key) && !(gridOption === null || gridOption === void 0 ? void 0 : gridOption.key)) {
|
|
767
766
|
return null;
|
|
768
767
|
}
|
|
769
|
-
return
|
|
768
|
+
return hash({
|
|
770
769
|
prefix,
|
|
771
770
|
key: ((_b = gridOption === null || gridOption === void 0 ? void 0 : gridOption.config) === null || _b === void 0 ? void 0 : _b.key) || !(gridOption === null || gridOption === void 0 ? void 0 : gridOption.key)
|
|
772
771
|
});
|
|
@@ -1120,7 +1119,7 @@ class SdColumnValuesPipe {
|
|
|
1120
1119
|
return value;
|
|
1121
1120
|
}
|
|
1122
1121
|
const _f = column.option, { items, valueField, displayField } = _f, remain = __rest(_f, ["items", "valueField", "displayField"]);
|
|
1123
|
-
|
|
1122
|
+
const key = hash({
|
|
1124
1123
|
prefix: __classPrivateFieldGet(this, _prefix$1),
|
|
1125
1124
|
valueField,
|
|
1126
1125
|
displayField,
|
|
@@ -1172,7 +1171,7 @@ class SdEditorHandlerColumnPipe {
|
|
|
1172
1171
|
}
|
|
1173
1172
|
transform(value, item, gridOption) {
|
|
1174
1173
|
const { sdId, editorHandlerColumn, expandDetail, isExpanded, isExpanding, isSelected, sdGroup, selectable, actions, groupedActions, originItem, editorErrorMessage, editorHandlerRow } = item, remain = __rest(item, ["sdId", "editorHandlerColumn", "expandDetail", "isExpanded", "isExpanding", "isSelected", "sdGroup", "selectable", "actions", "groupedActions", "originItem", "editorErrorMessage", "editorHandlerRow"]);
|
|
1175
|
-
const key =
|
|
1174
|
+
const key = hash(remain);
|
|
1176
1175
|
if (sdId === key && editorHandlerColumn) {
|
|
1177
1176
|
return true;
|
|
1178
1177
|
}
|
|
@@ -1588,7 +1587,13 @@ class SdGridMaterial {
|
|
|
1588
1587
|
return;
|
|
1589
1588
|
}
|
|
1590
1589
|
if (column.transform) {
|
|
1591
|
-
|
|
1590
|
+
const transform = column.transform(item[column.field], item);
|
|
1591
|
+
if (transform instanceof Promise) {
|
|
1592
|
+
obj[column.field] = yield transform;
|
|
1593
|
+
}
|
|
1594
|
+
else {
|
|
1595
|
+
obj[column.field] = transform;
|
|
1596
|
+
}
|
|
1592
1597
|
}
|
|
1593
1598
|
else if (item[column.field] === undefined || item[column.field] === null || item[column.field] === '') {
|
|
1594
1599
|
obj[column.field] = '';
|
|
@@ -2639,7 +2644,7 @@ class SdSelectionActionFilterPipe {
|
|
|
2639
2644
|
if ('children' in action) {
|
|
2640
2645
|
const children = [];
|
|
2641
2646
|
for (const childAction of action.children) {
|
|
2642
|
-
const key =
|
|
2647
|
+
const key = hash(childAction);
|
|
2643
2648
|
if (selectedItems.every(e => e.actions.includes(key))) {
|
|
2644
2649
|
children.push(childAction);
|
|
2645
2650
|
}
|
|
@@ -2649,7 +2654,7 @@ class SdSelectionActionFilterPipe {
|
|
|
2649
2654
|
}
|
|
2650
2655
|
}
|
|
2651
2656
|
else {
|
|
2652
|
-
const key =
|
|
2657
|
+
const key = hash(action);
|
|
2653
2658
|
if (selectedItems.every(e => e.actions.includes(key))) {
|
|
2654
2659
|
results.push(action);
|
|
2655
2660
|
}
|
|
@@ -2682,7 +2687,7 @@ class SdSelectionDisablePipe {
|
|
|
2682
2687
|
const availableActions = actions.filter(action => {
|
|
2683
2688
|
if ('children' in action) {
|
|
2684
2689
|
for (const childAction of action.children) {
|
|
2685
|
-
const key =
|
|
2690
|
+
const key = hash(childAction);
|
|
2686
2691
|
if (selectedItems.every(e => e.actions.includes(key))) {
|
|
2687
2692
|
return true;
|
|
2688
2693
|
}
|
|
@@ -2690,7 +2695,7 @@ class SdSelectionDisablePipe {
|
|
|
2690
2695
|
return false;
|
|
2691
2696
|
}
|
|
2692
2697
|
else {
|
|
2693
|
-
const key =
|
|
2698
|
+
const key = hash(action);
|
|
2694
2699
|
return selectedItems.every(e => e.actions.includes(key));
|
|
2695
2700
|
}
|
|
2696
2701
|
});
|
|
@@ -2698,13 +2703,13 @@ class SdSelectionDisablePipe {
|
|
|
2698
2703
|
for (const action of availableActions) {
|
|
2699
2704
|
if ('children' in action) {
|
|
2700
2705
|
for (const childAction of action.children) {
|
|
2701
|
-
if (rowData.actions.includes(
|
|
2706
|
+
if (rowData.actions.includes(hash(childAction))) {
|
|
2702
2707
|
return false;
|
|
2703
2708
|
}
|
|
2704
2709
|
}
|
|
2705
2710
|
}
|
|
2706
2711
|
else {
|
|
2707
|
-
if (rowData.actions.includes(
|
|
2712
|
+
if (rowData.actions.includes(hash(action))) {
|
|
2708
2713
|
return false;
|
|
2709
2714
|
}
|
|
2710
2715
|
}
|
|
@@ -2760,7 +2765,7 @@ class SdGeneratedColumnService {
|
|
|
2760
2765
|
if (!(configuration === null || configuration === void 0 ? void 0 : configuration.key)) {
|
|
2761
2766
|
return null;
|
|
2762
2767
|
}
|
|
2763
|
-
const key =
|
|
2768
|
+
const key = hash({
|
|
2764
2769
|
prefix: '260f5e94-5865-4425-8ced-b9c083c390dd',
|
|
2765
2770
|
key: configuration.key
|
|
2766
2771
|
});
|
|
@@ -2789,7 +2794,7 @@ class SdGeneratedColumnService {
|
|
|
2789
2794
|
if (!(configuration === null || configuration === void 0 ? void 0 : configuration.systemColumn)) {
|
|
2790
2795
|
return null;
|
|
2791
2796
|
}
|
|
2792
|
-
const key =
|
|
2797
|
+
const key = hash({
|
|
2793
2798
|
prefix: '8b8050ca-1f44-4860-bad3-20e646c0d68f',
|
|
2794
2799
|
key: configuration.key
|
|
2795
2800
|
});
|
|
@@ -3004,7 +3009,7 @@ class SdEditorHandlerRowPipe {
|
|
|
3004
3009
|
}
|
|
3005
3010
|
// const { sdId, editorHandlerColumn, ...remain } = item;
|
|
3006
3011
|
const { sdId, editorHandlerColumn, expandDetail, isExpanded, isExpanding, isSelected, sdGroup, selectable, actions, groupedActions, originItem, editorErrorMessage, editorHandlerRow } = item, remain = __rest(item, ["sdId", "editorHandlerColumn", "expandDetail", "isExpanded", "isExpanding", "isSelected", "sdGroup", "selectable", "actions", "groupedActions", "originItem", "editorErrorMessage", "editorHandlerRow"]);
|
|
3007
|
-
item.sdId =
|
|
3012
|
+
item.sdId = hash(remain);
|
|
3008
3013
|
item.editorHandlerColumn = item.editorHandlerColumn || {};
|
|
3009
3014
|
const { columns } = gridOption;
|
|
3010
3015
|
for (const col of columns) {
|
|
@@ -3158,7 +3163,7 @@ class SdSelectionVisiblePipe {
|
|
|
3158
3163
|
let hasGroup = false;
|
|
3159
3164
|
for (const childAction of action.children) {
|
|
3160
3165
|
const { hidden, isGrouped } = childAction;
|
|
3161
|
-
const key =
|
|
3166
|
+
const key = hash(childAction);
|
|
3162
3167
|
if (isGrouped) {
|
|
3163
3168
|
hasGroup = true;
|
|
3164
3169
|
}
|
|
@@ -3180,15 +3185,15 @@ class SdSelectionVisiblePipe {
|
|
|
3180
3185
|
}
|
|
3181
3186
|
}
|
|
3182
3187
|
if (flag) {
|
|
3183
|
-
rowData.actions.push(
|
|
3188
|
+
rowData.actions.push(hash(action));
|
|
3184
3189
|
if (hasGroup) {
|
|
3185
|
-
groupedActions.push(
|
|
3190
|
+
groupedActions.push(hash(action));
|
|
3186
3191
|
}
|
|
3187
3192
|
}
|
|
3188
3193
|
}
|
|
3189
3194
|
else {
|
|
3190
3195
|
const { hidden, isGrouped } = action;
|
|
3191
|
-
const key =
|
|
3196
|
+
const key = hash(action);
|
|
3192
3197
|
if (typeof (hidden) === 'function') {
|
|
3193
3198
|
if (!hidden(rowData)) {
|
|
3194
3199
|
rowData.actions.push(key);
|
|
@@ -3429,7 +3434,7 @@ class SdGroupPipe {
|
|
|
3429
3434
|
for (const field of fields) {
|
|
3430
3435
|
obj = Object.assign(Object.assign({}, obj), ((_a = item[field]) !== null && _a !== void 0 ? _a : { [field]: item[field] }));
|
|
3431
3436
|
}
|
|
3432
|
-
const key =
|
|
3437
|
+
const key = hash(obj);
|
|
3433
3438
|
if (!groupItem[key]) {
|
|
3434
3439
|
groupItem[key] = [];
|
|
3435
3440
|
}
|