ctt-babylon 0.1.151 → 0.1.152
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/esm2022/lib/directives/babylon-galleries/babylon-light-gallery.directive.mjs +16 -11
- package/esm2022/lib/directives/babylon-sliders/babylon-sliders.directive.mjs +17 -46
- package/fesm2022/ctt-babylon.mjs +31 -55
- package/fesm2022/ctt-babylon.mjs.map +1 -1
- package/lib/directives/babylon-sliders/babylon-sliders.directive.d.ts +0 -3
- package/package.json +1 -1
|
@@ -24,20 +24,25 @@ export class BabylonLightGalleryDirective {
|
|
|
24
24
|
Utils.loadScript$('assets/babylon/lightgallery/js/lightgallery.min.js'),
|
|
25
25
|
Utils.loadStyle$('assets/babylon/lightgallery/css/lightgallery.min.css'),
|
|
26
26
|
]).pipe(tap(() => {
|
|
27
|
-
|
|
28
|
-
this.executeInitLightGallery();
|
|
29
|
-
}, 400);
|
|
27
|
+
this.executeInitLightGallery();
|
|
30
28
|
}))))
|
|
31
29
|
.subscribe();
|
|
32
30
|
}
|
|
33
31
|
executeInitLightGallery() {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
32
|
+
try {
|
|
33
|
+
this.initLightGallery();
|
|
34
|
+
if (!this.observer) {
|
|
35
|
+
// Cuando el DOM cambie (Angular repinta al filtrar) refrescamos el plugin
|
|
36
|
+
this.observer = new MutationObserver(() => this.refresh());
|
|
37
|
+
this.observer.observe(this.el.nativeElement, {
|
|
38
|
+
childList: true,
|
|
39
|
+
subtree: true,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
this.executeInitLightGallery();
|
|
45
|
+
}
|
|
41
46
|
}
|
|
42
47
|
initLightGallery() {
|
|
43
48
|
if (typeof $ === 'undefined')
|
|
@@ -78,4 +83,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
78
83
|
standalone: true,
|
|
79
84
|
}]
|
|
80
85
|
}], ctorParameters: () => [{ type: i0.ElementRef }] });
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1saWdodC1nYWxsZXJ5LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9kaXJlY3RpdmVzL2JhYnlsb24tZ2FsbGVyaWVzL2JhYnlsb24tbGlnaHQtZ2FsbGVyeS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQU1wQyxNQUFNLE9BQU8sNEJBQTRCO0lBSXJDLFlBQW9CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO0lBQUcsQ0FBQztJQUV0QyxlQUFlO1FBQ1gsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksT0FBTyxDQUFDLEtBQUssVUFBVSxFQUFFO1lBQzFELElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1NBQ2xDO2FBQU07WUFDSCxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztTQUN4QztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVPLDZCQUE2QjtRQUNqQyxLQUFLLENBQUMsV0FBVyxDQUFDLGlDQUFpQyxDQUFDO2FBQy9DLElBQUksQ0FDRCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQ1gsUUFBUSxDQUFDO1lBQ0wsS0FBSyxDQUFDLFdBQVcsQ0FDYixvREFBb0QsQ0FDdkQ7WUFDRCxLQUFLLENBQUMsVUFBVSxDQUNaLHNEQUFzRCxDQUN6RDtTQUNKLENBQUMsQ0FBQyxJQUFJLENBQ0gsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNMLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUNMLENBQ0osQ0FDSjthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTyx1QkFBdUI7UUFDM0IsSUFBSTtZQUNBLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNoQiwwRUFBMEU7Z0JBQzFFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztnQkFDM0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUU7b0JBQ3pDLFNBQVMsRUFBRSxJQUFJO29CQUNmLE9BQU8sRUFBRSxJQUFJO2lCQUNoQixDQUFDLENBQUM7YUFDTjtTQUNKO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDWixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztTQUNsQztJQUNMLENBQUM7SUFFTyxnQkFBZ0I7UUFDcEIsSUFBSSxPQUFPLENBQUMsS0FBSyxXQUFXO1lBQUUsT0FBTztRQUNyQyxJQUFJLENBQUMsZUFBZSxHQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBUzthQUNuRCxZQUFZLENBQUM7WUFDVixRQUFRLEVBQUUsbUJBQW1CO1lBQzdCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsVUFBVSxFQUFFLElBQUk7WUFDaEIsS0FBSyxFQUFFLEtBQUs7WUFDWixVQUFVLEVBQUUsS0FBSztZQUNqQixRQUFRLEVBQUUsS0FBSztZQUNmLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLGdCQUFnQixFQUFFLEtBQUs7WUFDdkIsUUFBUSxFQUFFLEtBQUs7U0FDbEIsQ0FBQzthQUNELElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU8sT0FBTztRQUNYLHNFQUFzRTtRQUN0RSxJQUNJLElBQUksQ0FBQyxlQUFlO1lBQ3BCLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLE1BQU0sRUFDM0Q7WUFDRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDM0I7SUFDTCxDQUFDO0lBRU8sY0FBYztRQUNsQixJQUFJLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztJQUNoQyxDQUFDOytHQXZGUSw0QkFBNEI7bUdBQTVCLDRCQUE0Qjs7NEZBQTVCLDRCQUE0QjtrQkFKeEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxVQUFVLEVBQUUsSUFBSTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbQmFieWxvbkxpZ2h0R2FsbGVyeV0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEJhYnlsb25MaWdodEdhbGxlcnlEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgZ2FsbGVyeUluc3RhbmNlOiBhbnk7XG4gICAgcHJpdmF0ZSBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodHlwZW9mIGpRdWVyeSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mICQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUluaXRMaWdodEdhbGxlcnkoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubG9hZERlcGVuZGVuY2llc0FuZEluaXRpYWxpemUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lHYWxsZXJ5KCk7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWREZXBlbmRlbmNpZXNBbmRJbml0aWFsaXplKCk6IHZvaWQge1xuICAgICAgICBVdGlscy5sb2FkU2NyaXB0JCgnYXNzZXRzL2JhYnlsb24vanMvanF1ZXJ5Lm1pbi5qcycpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgZm9ya0pvaW4oW1xuICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMubG9hZFNjcmlwdCQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Fzc2V0cy9iYWJ5bG9uL2xpZ2h0Z2FsbGVyeS9qcy9saWdodGdhbGxlcnkubWluLmpzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLmxvYWRTdHlsZSQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Fzc2V0cy9iYWJ5bG9uL2xpZ2h0Z2FsbGVyeS9jc3MvbGlnaHRnYWxsZXJ5Lm1pbi5jc3MnXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBdKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmV4ZWN1dGVJbml0TGlnaHRHYWxsZXJ5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXhlY3V0ZUluaXRMaWdodEdhbGxlcnkoKTogdm9pZCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmluaXRMaWdodEdhbGxlcnkoKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5vYnNlcnZlcikge1xuICAgICAgICAgICAgICAgIC8vIEN1YW5kbyBlbCBET00gY2FtYmllIChBbmd1bGFyIHJlcGludGEgYWwgZmlsdHJhcikgcmVmcmVzY2Ftb3MgZWwgcGx1Z2luXG4gICAgICAgICAgICAgICAgdGhpcy5vYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHRoaXMucmVmcmVzaCgpKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUluaXRMaWdodEdhbGxlcnkoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdExpZ2h0R2FsbGVyeSgpIHtcbiAgICAgICAgaWYgKHR5cGVvZiAkID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuICAgICAgICB0aGlzLmdhbGxlcnlJbnN0YW5jZSA9ICgkKHRoaXMuZWwubmF0aXZlRWxlbWVudCkgYXMgYW55KVxuICAgICAgICAgICAgLmxpZ2h0R2FsbGVyeSh7XG4gICAgICAgICAgICAgICAgc2VsZWN0b3I6ICcuY3NfbGlnaHRib3hfaXRlbScsXG4gICAgICAgICAgICAgICAgdGh1bWJuYWlsOiB0cnVlLFxuICAgICAgICAgICAgICAgIG1vdXNld2hlZWw6IHRydWUsXG4gICAgICAgICAgICAgICAgc2hhcmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGZ1bGxTY3JlZW46IGZhbHNlLFxuICAgICAgICAgICAgICAgIGF1dG9wbGF5OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBhY3R1YWxTaXplOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBhdXRvcGxheUNvbnRyb2xzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkb3dubG9hZDogZmFsc2UsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmRhdGEoJ2xpZ2h0R2FsbGVyeScpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVmcmVzaCgpIHtcbiAgICAgICAgLy8gZXZpdGEgYnVjbGVzIGluZmluaXRvczogc29sbyBzaSBoYXkgZWxlbWVudG9zIHkgZWwgcGx1Z2luIGVzdMOhIHZpdm9cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5nYWxsZXJ5SW5zdGFuY2UgJiZcbiAgICAgICAgICAgICQodGhpcy5lbC5uYXRpdmVFbGVtZW50KS5maW5kKCcuY3NfbGlnaHRib3hfaXRlbScpLmxlbmd0aFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveUdhbGxlcnkoKTtcbiAgICAgICAgICAgIHRoaXMuaW5pdExpZ2h0R2FsbGVyeSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXN0cm95R2FsbGVyeSgpIHtcbiAgICAgICAgdGhpcy5nYWxsZXJ5SW5zdGFuY2U/LmRlc3Ryb3kodHJ1ZSk7XG4gICAgICAgIHRoaXMuZ2FsbGVyeUluc3RhbmNlID0gbnVsbDtcbiAgICB9XG59XG4iXX0=
|
|
@@ -31,53 +31,24 @@ export class BabylonSlidersDirective {
|
|
|
31
31
|
}))))
|
|
32
32
|
.subscribe();
|
|
33
33
|
}
|
|
34
|
-
/**
|
|
35
|
-
* Métodos para implementar mejora de tiempos de carga de jquery, TODO: mejorar métodos, seguían dando errores por consola
|
|
36
|
-
*/
|
|
37
|
-
// private waitForSlickAvailability(): Observable<void> {
|
|
38
|
-
// return timer(0, 50).pipe(
|
|
39
|
-
// // Polling cada 50ms
|
|
40
|
-
// takeWhile(
|
|
41
|
-
// () =>
|
|
42
|
-
// !(
|
|
43
|
-
// typeof $ !== 'undefined' &&
|
|
44
|
-
// $.fn &&
|
|
45
|
-
// typeof $.fn.slick !== 'undefined'
|
|
46
|
-
// ),
|
|
47
|
-
// true
|
|
48
|
-
// ),
|
|
49
|
-
// switchMap(() => of(undefined))
|
|
50
|
-
// );
|
|
51
|
-
// }
|
|
52
|
-
// private waitForJqueryAvailability(): Observable<void> {
|
|
53
|
-
// // Esta es la parte de "escucha" (polling) de jQuery
|
|
54
|
-
// return timer(0, 50) // Empezar inmediatamente, luego cada 50ms
|
|
55
|
-
// .pipe(
|
|
56
|
-
// // Continuar mientras jQuery no esté disponible, pero con un límite de tiempo
|
|
57
|
-
// takeWhile(() => !(typeof $ !== 'undefined'), true),
|
|
58
|
-
// // Cuando takeWhile completa (jQuery está listo o se excede el tiempo),
|
|
59
|
-
// // verifica si realmente jQuery está disponible
|
|
60
|
-
// switchMap(
|
|
61
|
-
// () => of(undefined) // Emite un valor para que el pipe continúe
|
|
62
|
-
// )
|
|
63
|
-
// );
|
|
64
|
-
// }
|
|
65
34
|
executeInitializeSlider() {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
this.resizeFn
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
this.
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
35
|
+
setTimeout(() => {
|
|
36
|
+
try {
|
|
37
|
+
this.initializeSlider();
|
|
38
|
+
if (!this.resizeFn) {
|
|
39
|
+
this.resizeFn = () => {
|
|
40
|
+
clearTimeout(this.resizeTimeout);
|
|
41
|
+
this.resizeTimeout = setTimeout(() => {
|
|
42
|
+
this.initializeSlider();
|
|
43
|
+
}, 200);
|
|
44
|
+
};
|
|
45
|
+
window.addEventListener('resize', this.resizeFn);
|
|
46
|
+
}
|
|
76
47
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
this.executeInitializeSlider();
|
|
50
|
+
}
|
|
51
|
+
}, 50);
|
|
81
52
|
}
|
|
82
53
|
initializeSlider() {
|
|
83
54
|
const $slider = $(this.el.nativeElement);
|
|
@@ -383,4 +354,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
383
354
|
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { sliders: [{
|
|
384
355
|
type: Input
|
|
385
356
|
}] } });
|
|
386
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1zbGlkZXJzLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9kaXJlY3RpdmVzL2JhYnlsb24tc2xpZGVycy9iYWJ5bG9uLXNsaWRlcnMuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsS0FBSyxHQUVSLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUtwQyxNQUFNLE9BQU8sdUJBQXVCO0lBZWhDLFlBQW9CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO0lBQUcsQ0FBQztJQUV0QyxlQUFlO1FBQ1gsSUFBSSxPQUFPLENBQUMsS0FBSyxXQUFXLEVBQUU7WUFDMUIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7U0FDbEM7YUFBTTtZQUNILElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1NBQ3hDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCw2RUFBNkU7UUFDN0UsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3BCLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDcEM7UUFDRCxNQUFNLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU8sNkJBQTZCO1FBQ2pDLEtBQUssQ0FBQyxXQUFXLENBQUMsaUNBQWlDLENBQUM7YUFDL0MsSUFBSSxDQUNELFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FDWCxRQUFRLENBQUM7WUFDTCxLQUFLLENBQUMsV0FBVyxDQUFDLG1DQUFtQyxDQUFDO1lBQ3RELEtBQUssQ0FBQyxVQUFV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SUFBSTtvQkFDWixJQUFJLEVBQUUsSUFBSTtvQkFDVixRQUFRLEVBQUUsV0FBVztpQkFDeEIsQ0FBQyxDQUFDO2FBQ047WUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO2dCQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDO29CQUNQLFlBQVksRUFBRSxDQUFDO29CQUNmLGNBQWMsRUFBRSxDQUFDO29CQUNqQixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsYUFBYSxFQUFFLElBQUk7b0JBQ25CLE1BQU0sRUFBRSxLQUFLO29CQUNiLFFBQVEsRUFBRSxJQUFJO29CQUNkLFVBQVUsRUFBRSxLQUFLO2lCQUNwQixDQUFDLENBQUM7YUFDTjtTQUNKO2FBQU07WUFDSCxPQUFPLENBQUMsSUFBSSxDQUNSLDBDQUEwQyxFQUMxQyxZQUFZLEVBQ1osV0FBVyxDQUNkLENBQUM7U0FDTDtJQUNMLENBQUM7SUFFRCxlQUFlO1FBQ1gsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDekMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ2hCLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDOUI7SUFDTCxDQUFDOytHQXBkUSx1QkFBdUI7bUdBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFKbkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsV0FBVztvQkFDckIsVUFBVSxFQUFFLElBQUk7aUJBQ25COytFQUVZLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzJztcbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3NsaWRlcnNdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBCYWJ5bG9uU2xpZGVyc0RpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgc2xpZGVycyE6XG4gICAgICAgIHwgJ2NzX3NsaWRlcl9jb250YWluZXInXG4gICAgICAgIHwgJ2NzX2dhbGxlcnlfc2xpZGVyX25hdidcbiAgICAgICAgfCAnY3NfZ2FsbGVyeV9zbGlkZXJfbmF2XzInXG4gICAgICAgIHwgJ2NzX2dhbGxlcnlfc2xpZGVyX3RodW1iJ1xuICAgICAgICB8ICdjc19nYWxsZXJ5X3NsaWRlcl90aHVtYl8yJ1xuICAgICAgICB8ICdjc19zbGlkZXJfY29udGFpbmVyMidcbiAgICAgICAgfCAnY3Nfc2xpZGVyX2NvbnRhaW5lcjMnXG4gICAgICAgIHwgJ2NzX3NsaWRlcl9jb250YWluZXI0JztcblxuICAgIHByaXZhdGUgcmVzaXplVGltZW91dCE6IE5vZGVKUy5UaW1lb3V0O1xuXG4gICAgcHJpdmF0ZSByZXNpemVGbiE6ICgpID0+IHZvaWQ7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodHlwZW9mICQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLmV4ZWN1dGVJbml0aWFsaXplU2xpZGVyKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxvYWREZXBlbmRlbmNpZXNBbmRJbml0aWFsaXplKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gTGltcGlhciBlbCBsaXN0ZW5lciBkZSByZWRpbWVuc2lvbmFtaWVudG8gY3VhbmRvIGVsIGNvbXBvbmVudGUgc2UgZGVzdHJ1eWVcbiAgICAgICAgaWYgKHRoaXMucmVzaXplVGltZW91dCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVzaXplVGltZW91dCk7XG4gICAgICAgIH1cbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucmVzaXplRm4pO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZERlcGVuZGVuY2llc0FuZEluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgICAgIFV0aWxzLmxvYWRTY3JpcHQkKCdhc3NldHMvYmFieWxvbi9qcy9qcXVlcnkubWluLmpzJylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAgICAgICAgICAgICBmb3JrSm9pbihbXG4gICAgICAgICAgICAgICAgICAgICAgICBVdGlscy5sb2FkU2NyaXB0JCgnYXNzZXRzL2JhYnlsb24vc2xpY2svc2xpY2subWluLmpzJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBVdGlscy5sb2FkU3R5bGUkKCdhc3NldHMvYmFieWxvbi9zbGljay9zbGljay5jc3MnKSxcbiAgICAgICAgICAgICAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leGVjdXRlSW5pdGlhbGl6ZVNsaWRlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcblxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE3DqXRvZG9zICBwYXJhIGltcGxlbWVudGFyIG1lam9yYSBkZSB0aWVtcG9zIGRlIGNhcmdhIGRlIGpxdWVyeSwgVE9ETzogbWVqb3JhciBtw6l0b2Rvcywgc2VndcOtYW4gZGFuZG8gZXJyb3JlcyBwb3IgY29uc29sYVxuICAgICAqL1xuXG4gICAgLy8gcHJpdmF0ZSB3YWl0Rm9yU2xpY2tBdmFpbGFiaWxpdHkoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgLy8gICAgIHJldHVybiB0aW1lcigwLCA1MCkucGlwZShcbiAgICAvLyAgICAgICAgIC8vIFBvbGxpbmcgY2FkYSA1MG1zXG4gICAgLy8gICAgICAgICB0YWtlV2hpbGUoXG4gICAgLy8gICAgICAgICAgICAgKCkgPT5cbiAgICAvLyAgICAgICAgICAgICAgICAgIShcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiAkICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgJC5mbiAmJlxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgdHlwZW9mICQuZm4uc2xpY2sgIT09ICd1bmRlZmluZWQnXG4gICAgLy8gICAgICAgICAgICAgICAgICksXG4gICAgLy8gICAgICAgICAgICAgdHJ1ZVxuICAgIC8vICAgICAgICAgKSxcbiAgICAvLyAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiBvZih1bmRlZmluZWQpKVxuICAgIC8vICAgICApO1xuICAgIC8vIH1cblxuICAgIC8vIHByaXZhdGUgd2FpdEZvckpxdWVyeUF2YWlsYWJpbGl0eSgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAvLyAgICAgLy8gRXN0YSBlcyBsYSBwYXJ0ZSBkZSBcImVzY3VjaGFcIiAocG9sbGluZykgZGUgalF1ZXJ5XG4gICAgLy8gICAgIHJldHVybiB0aW1lcigwLCA1MCkgLy8gRW1wZXphciBpbm1lZGlhdGFtZW50ZSwgbHVlZ28gY2FkYSA1MG1zXG4gICAgLy8gICAgICAgICAucGlwZShcbiAgICAvLyAgICAgICAgICAgICAvLyBDb250aW51YXIgbWllbnRyYXMgalF1ZXJ5IG5vIGVzdMOpIGRpc3BvbmlibGUsIHBlcm8gY29uIHVuIGzDrW1pdGUgZGUgdGllbXBvXG4gICAgLy8gICAgICAgICAgICAgdGFrZVdoaWxlKCgpID0+ICEodHlwZW9mICQgIT09ICd1bmRlZmluZWQnKSwgdHJ1ZSksXG4gICAgLy8gICAgICAgICAgICAgLy8gQ3VhbmRvIHRha2VXaGlsZSBjb21wbGV0YSAoalF1ZXJ5IGVzdMOhIGxpc3RvIG8gc2UgZXhjZWRlIGVsIHRpZW1wbyksXG4gICAgLy8gICAgICAgICAgICAgLy8gdmVyaWZpY2Egc2kgcmVhbG1lbnRlIGpRdWVyeSBlc3TDoSBkaXNwb25pYmxlXG4gICAgLy8gICAgICAgICAgICAgc3dpdGNoTWFwKFxuICAgIC8vICAgICAgICAgICAgICAgICAoKSA9PiBvZih1bmRlZmluZWQpIC8vIEVtaXRlIHVuIHZhbG9yIHBhcmEgcXVlIGVsIHBpcGUgY29udGluw7plXG4gICAgLy8gICAgICAgICAgICAgKVxuICAgIC8vICAgICAgICAgKTtcbiAgICAvLyB9XG5cbiAgICBwcml2YXRlIGV4ZWN1dGVJbml0aWFsaXplU2xpZGVyKCk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplU2xpZGVyKCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMucmVzaXplRm4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZUZuID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5yZXNpemVUaW1lb3V0KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNpemVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVTbGlkZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMjAwKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlc2l6ZUZuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUluaXRpYWxpemVTbGlkZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZVNsaWRlcigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgJHNsaWRlciA9ICQodGhpcy5lbC5uYXRpdmVFbGVtZW50KSBhcyBhbnk7XG5cbiAgICAgICAgaWYgKCEkc2xpZGVyLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0ICRzbGlja0FjdGl2ZSA9ICRzbGlkZXIuZmluZCgnLmNzX3NsaWRlcl93cmFwcGVyJyk7XG4gICAgICAgIGlmICgkc2xpY2tBY3RpdmUuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgICRzbGlja0FjdGl2ZS5zbGljaygndW5zbGljaycpOyAvLyBEZXN0cnV5ZSBlbCBzbGlkZXIgYWN0dWFsXG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKHRoaXMuc2xpZGVycykge1xuICAgICAgICAgICAgY2FzZSAnY3Nfc2xpZGVyX2NvbnRhaW5lcic6XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2xpY2tTbGlkZXIoJHNsaWRlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjc19nYWxsZXJ5X3NsaWRlcl9uYXYnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNsaWNrU2xpZGVyTmF2KCRzbGlkZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY3NfZ2FsbGVyeV9zbGlkZXJfbmF2XzInOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNsaWNrU2xpZGVyTmF2XzIoJHNsaWRlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjc19nYWxsZXJ5X3NsaWRlcl90aHVtYic6XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2xpY2tTbGlkZXJUaHVtYigkc2xpZGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN5bmNTbGlkZXJzKFxuICAgICAgICAgICAgICAgICAgICAnLmNzX2dhbGxlcnlfc2xpZGVyX3RodW1iJyxcbiAgICAgICAgICAgICAgICAgICAgJy5jc19nYWxsZXJ5X3NsaWRlcl9uYXYnXG4gICAgICAgICAgICAgICAgKTsgLy8gU2luY3Jvbml6YSBsb3Mgc2xpZGVycyBwb3IgdGVtYSBkZSByZW5kYXJpemFkbyBlbiBlbCBET01cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NzX2dhbGxlcnlfc2xpZGVyX3RodW1iXzInOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNsaWNrU2xpZGVyVGh1bWJfMigkc2xpZGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN5bmNTbGlkZXJzKFxuICAgICAgICAgICAgICAgICAgICAnLmNzX2dhbGxlcnlfc2xpZGVyX3RodW1iXzInLFxuICAgICAgICAgICAgICAgICAgICAnLmNzX2dhbGxlcnlfc2xpZGVyX25hdl8yJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjc19zbGlkZXJfY29udGFpbmVyMic6XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2xpY2tTbGlkZXIyKCRzbGlkZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY3Nfc2xpZGVyX2NvbnRhaW5lcjMnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNsaWNrU2xpZGVyMygkc2xpZGVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NzX3NsaWRlcl9jb250YWluZXI0JzpcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTbGlja1NsaWRlcjQoJHNsaWRlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXIoJHNsaWRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0ICRzbGlja0FjdGl2ZSA9ICRzbGlkZXIuZmluZCgnLmNzX3NsaWRlcl93cmFwcGVyJyk7XG5cbiAgICAgICAgaWYgKCRzbGlja0FjdGl2ZS5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdTbGlkZXIgeWEgZXN0w6EgaW5pY2lhbGl6YWRvJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcmV2QXJyb3cgPSAkc2xpZGVyLmNsb3Nlc3QoJy5jc19zbGlkZXInKS5maW5kKCcuY3NfbGVmdF9hcnJvdycpO1xuICAgICAgICBjb25zdCBuZXh0QXJyb3cgPSAkc2xpZGVyLmNsb3Nlc3QoJy5jc19zbGlkZXInKS5maW5kKCcuY3NfcmlnaHRfYXJyb3cnKTtcblxuICAgICAgICAoJHNsaWNrQWN0aXZlIGFzIGFueSkuc2xpY2soe1xuICAgICAgICAgICAgYXV0b3BsYXk6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1hdXRvcGxheScsIDEpLFxuICAgICAgICAgICAgYXV0b3BsYXlTcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKFxuICAgICAgICAgICAgICAgICRzbGlkZXIsXG4gICAgICAgICAgICAgICAgJ2RhdGEtYXV0b3BsYXknLFxuICAgICAgICAgICAgICAgIDMwMDBcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXNwZWVkJywgNjAwKSxcbiAgICAgICAgICAgIGluZmluaXRlOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtbG9vcCcsIDApID09PSAwLFxuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiB0aGlzLmdldFNsaWRlc1BlclZpZXcoJHNsaWRlciksXG4gICAgICAgICAgICBzd2lwZVRvU2xpZGU6IHRydWUsXG4gICAgICAgICAgICBwcmV2QXJyb3c6IHByZXZBcnJvdyxcbiAgICAgICAgICAgIG5leHRBcnJvdzogbmV4dEFycm93LFxuICAgICAgICAgICAgY2VudGVyTW9kZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWNlbnRlcicsIDEwKSA9PT0gMSxcbiAgICAgICAgICAgIHZhcmlhYmxlV2lkdGg6XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXZhcmlhYmxlLXdpZHRoJywgMTApID09PSAxLFxuICAgICAgICAgICAgZG90czogdHJ1ZSxcbiAgICAgICAgICAgIGFwcGVuZERvdHM6ICRzbGlkZXIucGFyZW50KCkuZmluZCgnLmNzX3BhZ2luYXRpb24nKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXIyKCRzbGlkZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCAkc2xpY2tBY3RpdmUgPSAkc2xpZGVyLmZpbmQoJy5jc19zbGlkZXJfd3JhcHBlcicpO1xuXG4gICAgICAgIGlmICgkc2xpY2tBY3RpdmUuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignU2xpZGVyIHlhIGVzdMOhIGluaWNpYWxpemFkbycpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJldkFycm93ID0gJHNsaWRlci5jbG9zZXN0KCcuY3Nfc2xpZGVyJykuZmluZCgnLmNzX2xlZnRfYXJyb3cnKTtcbiAgICAgICAgY29uc3QgbmV4dEFycm93ID0gJHNsaWRlci5jbG9zZXN0KCcuY3Nfc2xpZGVyJykuZmluZCgnLmNzX3JpZ2h0X2Fycm93Jyk7XG5cbiAgICAgICAgKCRzbGlja0FjdGl2ZSBhcyBhbnkpLnNsaWNrKHtcbiAgICAgICAgICAgIGF1dG9wbGF5OiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtYXV0b3BsYXknLCAxKSxcbiAgICAgICAgICAgIGF1dG9wbGF5U3BlZWQ6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZyhcbiAgICAgICAgICAgICAgICAkc2xpZGVyLFxuICAgICAgICAgICAgICAgICdkYXRhLWF1dG9wbGF5JyxcbiAgICAgICAgICAgICAgICAzMDAwXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3BlZWQ6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1zcGVlZCcsIDYwMCksXG4gICAgICAgICAgICBpbmZpbml0ZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWxvb3AnLCAwKSA9PT0gMCxcbiAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogdGhpcy5nZXRTbGlkZXNQZXJWaWV3KCRzbGlkZXIpLFxuICAgICAgICAgICAgc3dpcGVUb1NsaWRlOiB0cnVlLFxuICAgICAgICAgICAgcHJldkFycm93OiBwcmV2QXJyb3csXG4gICAgICAgICAgICBuZXh0QXJyb3c6IG5leHRBcnJvdyxcbiAgICAgICAgICAgIGNlbnRlck1vZGU6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1jZW50ZXInLCAxMCkgPT09IDEsXG4gICAgICAgICAgICB2YXJpYWJsZVdpZHRoOlxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS12YXJpYWJsZS13aWR0aCcsIDEwKSA9PT0gMSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXIzKCRzbGlkZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCAkc2xpY2tBY3RpdmUgPSAkc2xpZGVyLmZpbmQoJy5jc19zbGlkZXJfd3JhcHBlcicpO1xuXG4gICAgICAgIGlmICgkc2xpY2tBY3RpdmUuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignU2xpZGVyIHlhIGVzdMOhIGluaWNpYWxpemFkbycpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJldkFycm93ID0gJHNsaWRlclxuICAgICAgICAgICAgLnNpYmxpbmdzKCcuY3Nfc2xpZGVyX2Fycm93cycpXG4gICAgICAgICAgICAuZmluZCgnLmNzX2xlZnRfYXJyb3cnKTtcbiAgICAgICAgY29uc3QgbmV4dEFycm93ID0gJHNsaWRlclxuICAgICAgICAgICAgLnNpYmxpbmdzKCcuY3Nfc2xpZGVyX2Fycm93cycpXG4gICAgICAgICAgICAuZmluZCgnLmNzX3JpZ2h0X2Fycm93Jyk7XG5cbiAgICAgICAgKCRzbGlja0FjdGl2ZSBhcyBhbnkpLnNsaWNrKHtcbiAgICAgICAgICAgIGF1dG9wbGF5OiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtYXV0b3BsYXknLCAwKSxcbiAgICAgICAgICAgIGF1dG9wbGF5U3BlZWQ6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZyhcbiAgICAgICAgICAgICAgICAkc2xpZGVyLFxuICAgICAgICAgICAgICAgICdkYXRhLWF1dG9wbGF5JyxcbiAgICAgICAgICAgICAgICAzMDAwXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3BlZWQ6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1zcGVlZCcsIDYwMCksXG4gICAgICAgICAgICBpbmZpbml0ZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWxvb3AnLCAwKSA9PT0gMCxcbiAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogdGhpcy5nZXRTbGlkZXNQZXJWaWV3KCRzbGlkZXIpLFxuICAgICAgICAgICAgc3dpcGVUb1NsaWRlOiB0cnVlLFxuICAgICAgICAgICAgcHJldkFycm93OiBwcmV2QXJyb3csXG4gICAgICAgICAgICBuZXh0QXJyb3c6IG5leHRBcnJvdyxcbiAgICAgICAgICAgIGNlbnRlck1vZGU6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1jZW50ZXInLCAwKSA9PT0gMSxcbiAgICAgICAgICAgIHZhcmlhYmxlV2lkdGg6XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXZhcmlhYmxlLXdpZHRoJywgMCkgPT09IDEsXG4gICAgICAgICAgICBkb3RzOiBmYWxzZSxcbiAgICAgICAgICAgIGFwcGVuZERvdHM6ICRzbGlkZXIucGFyZW50KCkuZmluZCgnLmNzX3BhZ2luYXRpb25fc2VydmljZXMnKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXJOYXYoJHNsaWRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICgkc2xpZGVyLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgJ1NsaWRlciBOQVYgeWEgZXN0w6EgaW5pY2lhbGl6YWRvLCBldml0YW5kbyBkdXBsaWNhZG9zLidcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAkc2xpZGVyLnNsaWNrKHtcbiAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogMyxcbiAgICAgICAgICAgIHNsaWRlc1RvU2Nyb2xsOiAxLFxuICAgICAgICAgICAgYXNOYXZGb3I6ICQoJy5jc19nYWxsZXJ5X3NsaWRlcl90aHVtYl9taW5pJykubGVuZ3RoXG4gICAgICAgICAgICAgICAgPyAnLmNzX2dhbGxlcnlfc2xpZGVyX3RodW1iX21pbmknXG4gICAgICAgICAgICAgICAgOiAnLmNzX2dhbGxlcnlfc2xpZGVyX3RodW1iJyxcbiAgICAgICAgICAgIGZvY3VzT25TZWxlY3Q6IHRydWUsXG4gICAgICAgICAgICBhcnJvd3M6IGZhbHNlLFxuICAgICAgICAgICAgdmVydGljYWw6IHRydWUsXG4gICAgICAgICAgICBjZW50ZXJNb2RlOiB0cnVlLFxuICAgICAgICAgICAgY2VudGVyUGFkZGluZzogJzBweCcsXG4gICAgICAgICAgICBzcGVlZDogMTAwMCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXJOYXZfMigkc2xpZGVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCRzbGlkZXIuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAnU2xpZGVyIE5BViB5YSBlc3TDoSBpbmljaWFsaXphZG8sIGV2aXRhbmRvIGR1cGxpY2Fkb3MuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgICRzbGlkZXIuc2xpY2soe1xuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiAzLFxuICAgICAgICAgICAgc2xpZGVzVG9TY3JvbGw6IDEsXG4gICAgICAgICAgICBhc05hdkZvcjogJy5jc19nYWxsZXJ5X3NsaWRlcl90aHVtYl8yJyxcbiAgICAgICAgICAgIGZvY3VzT25TZWxlY3Q6IHRydWUsXG4gICAgICAgICAgICBhcnJvd3M6IGZhbHNlLFxuICAgICAgICAgICAgY2VudGVyTW9kZTogdHJ1ZSxcbiAgICAgICAgICAgIGNlbnRlclBhZGRpbmc6ICcwcHgnLFxuICAgICAgICAgICAgc3BlZWQ6IDEwMDAsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNsaWNrU2xpZGVyVGh1bWIoJHNsaWRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICgkc2xpZGVyLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgJ1NsaWRlciBUSFVNQlMgeWEgZXN0w6EgaW5pY2lhbGl6YWRvLCBldml0YW5kbyBkdXBsaWNhZG9zLidcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcmV2QXJyb3cgPSAkc2xpZGVyXG4gICAgICAgICAgICAuY2xvc2VzdCgnLmNzX2dhbGxlcnlfaG92ZXJfc2hvd19uYXYnKVxuICAgICAgICAgICAgLmZpbmQoJy5jc19sZWZ0X2Fycm93X2dhbGxlcnknKTtcbiAgICAgICAgY29uc3QgbmV4dEFycm93ID0gJHNsaWRlclxuICAgICAgICAgICAgLmNsb3Nlc3QoJy5jc19nYWxsZXJ5X2hvdmVyX3Nob3dfbmF2JylcbiAgICAgICAgICAgIC5maW5kKCcuY3NfcmlnaHRfYXJyb3dfZ2FsbGVyeScpO1xuXG4gICAgICAgICRzbGlkZXIuc2xpY2soe1xuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiAxLFxuICAgICAgICAgICAgc2xpZGVzVG9TY3JvbGw6IDEsXG4gICAgICAgICAgICBwcmV2QXJyb3c6IHByZXZBcnJvdyxcbiAgICAgICAgICAgIG5leHRBcnJvdzogbmV4dEFycm93LFxuICAgICAgICAgICAgYXNOYXZGb3I6ICcuY3NfZ2FsbGVyeV9zbGlkZXJfbmF2LnNsaWNrLXNsaWRlcicsXG4gICAgICAgICAgICBpbmZpbml0ZTogZmFsc2UsXG4gICAgICAgICAgICBzcGVlZDogNjAwLFxuICAgICAgICAgICAgYXV0b3BsYXk6IGZhbHNlLFxuICAgICAgICAgICAgZmFkZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXJUaHVtYl8yKCRzbGlkZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoJHNsaWRlci5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICdTbGlkZXIgVEhVTUJTIHlhIGVzdMOhIGluaWNpYWxpemFkbywgZXZpdGFuZG8gZHVwbGljYWRvcy4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJldkFycm93ID0gJHNsaWRlclxuICAgICAgICAgICAgLmNsb3Nlc3QoJy5jc19nYWxsZXJ5X2hvdmVyX3Nob3dfbmF2JylcbiAgICAgICAgICAgIC5maW5kKCcuY3NfbGVmdF9hcnJvd19nYWxsZXJ5XzIgLmNzX3N3aXBlcl9idXR0b25fcHJldicpO1xuICAgICAgICBjb25zdCBuZXh0QXJyb3cgPSAkc2xpZGVyXG4gICAgICAgICAgICAuY2xvc2VzdCgnLmNzX2dhbGxlcnlfaG92ZXJfc2hvd19uYXYnKVxuICAgICAgICAgICAgLmZpbmQoJy5jc19yaWdodF9hcnJvd19nYWxsZXJ5XzIgLmNzX3N3aXBlcl9idXR0b25fbmV4dCcpO1xuXG4gICAgICAgICRzbGlkZXIuc2xpY2soe1xuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiAxLFxuICAgICAgICAgICAgc2xpZGVzVG9TY3JvbGw6IDEsXG4gICAgICAgICAgICBwcmV2QXJyb3c6IHByZXZBcnJvdyxcbiAgICAgICAgICAgIG5leHRBcnJvdzogbmV4dEFycm93LFxuICAgICAgICAgICAgYXNOYXZGb3I6ICcuY3NfZ2FsbGVyeV9zbGlkZXJfbmF2XzIuc2xpY2stc2xpZGVyJyxcbiAgICAgICAgICAgIGluZmluaXRlOiBmYWxzZSxcbiAgICAgICAgICAgIHNwZWVkOiA2MDAsXG4gICAgICAgICAgICBhdXRvcGxheTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNsaWNrU2xpZGVyNCgkc2xpZGVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgJHNsaWNrQWN0aXZlID0gJHNsaWRlci5maW5kKCcuY3Nfc2xpZGVyX3dyYXBwZXInKTtcblxuICAgICAgICBpZiAoJHNsaWNrQWN0aXZlLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1NsaWRlciB5YSBlc3TDoSBpbmljaWFsaXphZG8nKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByZXZBcnJvdyA9ICRzbGlkZXIuY2xvc2VzdCgnLmNzX3NsaWRlcicpLmZpbmQoJy5jc19sZWZ0X2Fycm93Jyk7XG4gICAgICAgIGNvbnN0IG5leHRBcnJvdyA9ICRzbGlkZXIuY2xvc2VzdCgnLmNzX3NsaWRlcicpLmZpbmQoJy5jc19yaWdodF9hcnJvdycpO1xuXG4gICAgICAgIGNvbnN0IHNsaWRlc1RvU2hvdyA9IHRoaXMuZ2V0U2xpZGVzUGVyVmlldygkc2xpZGVyKTtcblxuICAgICAgICAoJHNsaWNrQWN0aXZlIGFzIGFueSkuc2xpY2soe1xuICAgICAgICAgICAgYXV0b3BsYXk6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1hdXRvcGxheScsIDEpLFxuICAgICAgICAgICAgYXV0b3BsYXlTcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKFxuICAgICAgICAgICAgICAgICRzbGlkZXIsXG4gICAgICAgICAgICAgICAgJ2RhdGEtYXV0b3BsYXknLFxuICAgICAgICAgICAgICAgIDMwMDBcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXNwZWVkJywgNjAwKSxcbiAgICAgICAgICAgIGluZmluaXRlOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtbG9vcCcsIDApID09PSAwLFxuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiBzbGlkZXNUb1Nob3csXG4gICAgICAgICAgICBzd2lwZVRvU2xpZGU6IHRydWUsXG4gICAgICAgICAgICBwcmV2QXJyb3c6IHByZXZBcnJvdyxcbiAgICAgICAgICAgIG5leHRBcnJvdzogbmV4dEFycm93LFxuICAgICAgICAgICAgY2VudGVyTW9kZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWNlbnRlcicsIDEwKSA9PT0gMSxcbiAgICAgICAgICAgIHZhcmlhYmxlV2lkdGg6XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXZhcmlhYmxlLXdpZHRoJywgMTApID09PSAxLFxuICAgICAgICAgICAgZG90czogdHJ1ZSxcbiAgICAgICAgICAgIGFwcGVuZERvdHM6ICRzbGlkZXIucGFyZW50KCkuZmluZCgnLmNzX3BhZ2luYXRpb24nKSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudG9nZ2xlU2xpZGVyQXJyb3dzKCRzbGlkZXIsIHNsaWRlc1RvU2hvdyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTbGlkZXJTZXR0aW5nKFxuICAgICAgICAkc2xpZGVyOiBhbnksXG4gICAgICAgIHNldHRpbmdOYW1lOiBzdHJpbmcsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogYW55XG4gICAgKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KCRzbGlkZXIuYXR0cihzZXR0aW5nTmFtZSksIDEwKSB8fCBkZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTbGlkZXNQZXJWaWV3KCRzbGlkZXI6IGFueSk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHNsaWRlc1BlclZpZXdUeXBlID0gJHNsaWRlci5hdHRyKCdkYXRhLXNsaWRlcy1wZXItdmlldycpO1xuICAgICAgICBjb25zdCB4c1NsaWRlcyA9IHBhcnNlSW50KCRzbGlkZXIuYXR0cignZGF0YS14cy1zbGlkZXMnKSwgMTApIHx8IDE7XG4gICAgICAgIGNvbnN0IHNtU2xpZGVzID0gcGFyc2VJbnQoJHNsaWRlci5hdHRyKCdkYXRhLXNtLXNsaWRlcycpLCAxMCkgfHwgMjtcbiAgICAgICAgY29uc3QgbWRTbGlkZXMgPSBwYXJzZUludCgkc2xpZGVyLmF0dHIoJ2RhdGEtbWQtc2xpZGVzJyksIDEwKSB8fCAyO1xuICAgICAgICBjb25zdCBtbGdTbGlkZXMgPSBwYXJzZUludCgkc2xpZGVyLmF0dHIoJ2RhdGEtbWxnLXNsaWRlcycpLCAxMCkgfHwgMztcbiAgICAgICAgY29uc3QgbGdTbGlkZXMgPSBwYXJzZUludCgkc2xpZGVyLmF0dHIoJ2RhdGEtbGctc2xpZGVzJyksIDEwKSB8fCAzO1xuICAgICAgICBjb25zdCB4bFNsaWRlcyA9XG4gICAgICAgICAgICBwYXJzZUludCgkc2xpZGVyLmF0dHIoJ2RhdGEteGwtc2xpZGVzJyksIDEwKSB8fCBsZ1NsaWRlcztcblxuICAgICAgICBpZiAoc2xpZGVzUGVyVmlld1R5cGUgPT09ICdyZXNwb25zaXZlJykge1xuICAgICAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNTc2KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHhzU2xpZGVzO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDc2OCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzbVNsaWRlcztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAod2luZG93LmlubmVyV2lkdGggPCAxMDI0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1kU2xpZGVzO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDEyODApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWxnU2xpZGVzO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDE0MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGdTbGlkZXM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB4bFNsaWRlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUludChzbGlkZXNQZXJWaWV3VHlwZSwgMTApIHx8IDE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHRvZ2dsZVNsaWRlckFycm93cygkc2xpZGVyOiBhbnksIHNsaWRlc1RvU2hvdzogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0ICRzbGlkZXMgPSAkc2xpZGVyLmZpbmQoJy5jc19zbGlkZScpO1xuICAgICAgICBjb25zdCB0b3RhbFNsaWRlcyA9ICRzbGlkZXMubGVuZ3RoO1xuXG4gICAgICAgIGNvbnN0ICRzbGlkZXJDb250YWluZXIgPSAkc2xpZGVyLmNsb3Nlc3QoJy5jc19zbGlkZXInKTtcbiAgICAgICAgY29uc3Qgc2hvdWxkSGlkZSA9IHRvdGFsU2xpZGVzIDw9IHNsaWRlc1RvU2hvdztcblxuICAgICAgICAkc2xpZGVyQ29udGFpbmVyLnRvZ2dsZUNsYXNzKCdoaWRlLWFycm93cycsIHNob3VsZEhpZGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3luY1NsaWRlcnMobWFpblNlbGVjdG9yOiBzdHJpbmcsIG5hdlNlbGVjdG9yOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgJG1haW4gPSAkKG1haW5TZWxlY3Rvcik7XG4gICAgICAgIGNvbnN0ICRuYXYgPSAkKG5hdlNlbGVjdG9yKTtcblxuICAgICAgICBpZiAoJG1haW4ubGVuZ3RoICYmICRuYXYubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoISRtYWluLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICAgICAgJG1haW4uc2xpY2soe1xuICAgICAgICAgICAgICAgICAgICBzbGlkZXNUb1Nob3c6IDEsXG4gICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2Nyb2xsOiAxLFxuICAgICAgICAgICAgICAgICAgICBhcnJvd3M6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGZhZGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGFzTmF2Rm9yOiBuYXZTZWxlY3RvcixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCEkbmF2Lmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICAgICAgJG5hdi5zbGljayh7XG4gICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogMyxcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVzVG9TY3JvbGw6IDEsXG4gICAgICAgICAgICAgICAgICAgIGFzTmF2Rm9yOiBtYWluU2VsZWN0b3IsXG4gICAgICAgICAgICAgICAgICAgIGZvY3VzT25TZWxlY3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGFycm93czogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBjZW50ZXJNb2RlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAnU2xpZGVycyBubyBlbmNvbnRyYWRvcyBwYXJhIHNpbmNyb25pemFyOicsXG4gICAgICAgICAgICAgICAgbWFpblNlbGVjdG9yLFxuICAgICAgICAgICAgICAgIG5hdlNlbGVjdG9yXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW92ZVRvTmV4dFNsaWRlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCAkc2xpZGVyID0gJCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICBpZiAoJHNsaWRlci5sZW5ndGgpIHtcbiAgICAgICAgICAgICRzbGlkZXIuc2xpY2soJ3NsaWNrTmV4dCcpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
357
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1zbGlkZXJzLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9kaXJlY3RpdmVzL2JhYnlsb24tc2xpZGVycy9iYWJ5bG9uLXNsaWRlcnMuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsS0FBSyxHQUVSLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUtwQyxNQUFNLE9BQU8sdUJBQXVCO0lBZWhDLFlBQW9CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO0lBQUcsQ0FBQztJQUV0QyxlQUFlO1FBQ1gsSUFBSSxPQUFPLENBQUMsS0FBSyxXQUFXLEVBQUU7WUFDMUIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7U0FDbEM7YUFBTTtZQUNILElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1NBQ3hDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCw2RUFBNkU7UUFDN0UsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3BCLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDcEM7UUFDRCxNQUFNLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU8sNkJBQTZCO1FBQ2pDLEtBQUssQ0FBQyxXQUFXLENBQUMsaUNBQWlDLENBQUM7YUFDL0MsSUFBSSxDQUNELFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FDWCxRQUFRLENBQUM7WUFDTCxLQUFLLENBQUMsV0FBVyxDQUFDLG1DQUFtQyxDQUFDO1lBQ3RELEtBQUssQ0FBQyxVQUFV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Q3BCLENBQUMsQ0FBQzthQUNOO1NBQ0o7YUFBTTtZQUNILE9BQU8sQ0FBQyxJQUFJLENBQ1IsMENBQTBDLEVBQzFDLFlBQVksRUFDWixXQUFXLENBQ2QsQ0FBQztTQUNMO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDWCxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN6QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDaEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUM5QjtJQUNMLENBQUM7K0dBcGJRLHVCQUF1QjttR0FBdkIsdUJBQXVCOzs0RkFBdkIsdUJBQXVCO2tCQUpuQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxXQUFXO29CQUNyQixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7K0VBRVksT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmb3JrSm9pbiwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbc2xpZGVyc10nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEJhYnlsb25TbGlkZXJzRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBzbGlkZXJzITpcbiAgICAgICAgfCAnY3Nfc2xpZGVyX2NvbnRhaW5lcidcbiAgICAgICAgfCAnY3NfZ2FsbGVyeV9zbGlkZXJfbmF2J1xuICAgICAgICB8ICdjc19nYWxsZXJ5X3NsaWRlcl9uYXZfMidcbiAgICAgICAgfCAnY3NfZ2FsbGVyeV9zbGlkZXJfdGh1bWInXG4gICAgICAgIHwgJ2NzX2dhbGxlcnlfc2xpZGVyX3RodW1iXzInXG4gICAgICAgIHwgJ2NzX3NsaWRlcl9jb250YWluZXIyJ1xuICAgICAgICB8ICdjc19zbGlkZXJfY29udGFpbmVyMydcbiAgICAgICAgfCAnY3Nfc2xpZGVyX2NvbnRhaW5lcjQnO1xuXG4gICAgcHJpdmF0ZSByZXNpemVUaW1lb3V0ITogTm9kZUpTLlRpbWVvdXQ7XG5cbiAgICBwcml2YXRlIHJlc2l6ZUZuITogKCkgPT4gdm9pZDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0eXBlb2YgJCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUluaXRpYWxpemVTbGlkZXIoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubG9hZERlcGVuZGVuY2llc0FuZEluaXRpYWxpemUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAvLyBMaW1waWFyIGVsIGxpc3RlbmVyIGRlIHJlZGltZW5zaW9uYW1pZW50byBjdWFuZG8gZWwgY29tcG9uZW50ZSBzZSBkZXN0cnV5ZVxuICAgICAgICBpZiAodGhpcy5yZXNpemVUaW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5yZXNpemVUaW1lb3V0KTtcbiAgICAgICAgfVxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5yZXNpemVGbik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkRGVwZW5kZW5jaWVzQW5kSW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgVXRpbHMubG9hZFNjcmlwdCQoJ2Fzc2V0cy9iYWJ5bG9uL2pzL2pxdWVyeS5taW4uanMnKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICAgICAgICAgIGZvcmtKb2luKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLmxvYWRTY3JpcHQkKCdhc3NldHMvYmFieWxvbi9zbGljay9zbGljay5taW4uanMnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLmxvYWRTdHlsZSQoJ2Fzc2V0cy9iYWJ5bG9uL3NsaWNrL3NsaWNrLmNzcycpLFxuICAgICAgICAgICAgICAgICAgICBdKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmV4ZWN1dGVJbml0aWFsaXplU2xpZGVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleGVjdXRlSW5pdGlhbGl6ZVNsaWRlcigpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVNsaWRlcigpO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5yZXNpemVGbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZUZuID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVzaXplVGltZW91dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVTbGlkZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDIwMCk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlc2l6ZUZuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHRoaXMuZXhlY3V0ZUluaXRpYWxpemVTbGlkZXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgNTApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZVNsaWRlcigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgJHNsaWRlciA9ICQodGhpcy5lbC5uYXRpdmVFbGVtZW50KSBhcyBhbnk7XG5cbiAgICAgICAgaWYgKCEkc2xpZGVyLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0ICRzbGlja0FjdGl2ZSA9ICRzbGlkZXIuZmluZCgnLmNzX3NsaWRlcl93cmFwcGVyJyk7XG4gICAgICAgIGlmICgkc2xpY2tBY3RpdmUuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgICRzbGlja0FjdGl2ZS5zbGljaygndW5zbGljaycpOyAvLyBEZXN0cnV5ZSBlbCBzbGlkZXIgYWN0dWFsXG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKHRoaXMuc2xpZGVycykge1xuICAgICAgICAgICAgY2FzZSAnY3Nfc2xpZGVyX2NvbnRhaW5lcic6XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2xpY2tTbGlkZXIoJHNsaWRlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjc19nYWxsZXJ5X3NsaWRlcl9uYXYnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNsaWNrU2xpZGVyTmF2KCRzbGlkZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY3NfZ2FsbGVyeV9zbGlkZXJfbmF2XzInOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNsaWNrU2xpZGVyTmF2XzIoJHNsaWRlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjc19nYWxsZXJ5X3NsaWRlcl90aHVtYic6XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2xpY2tTbGlkZXJUaHVtYigkc2xpZGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN5bmNTbGlkZXJzKFxuICAgICAgICAgICAgICAgICAgICAnLmNzX2dhbGxlcnlfc2xpZGVyX3RodW1iJyxcbiAgICAgICAgICAgICAgICAgICAgJy5jc19nYWxsZXJ5X3NsaWRlcl9uYXYnXG4gICAgICAgICAgICAgICAgKTsgLy8gU2luY3Jvbml6YSBsb3Mgc2xpZGVycyBwb3IgdGVtYSBkZSByZW5kYXJpemFkbyBlbiBlbCBET01cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NzX2dhbGxlcnlfc2xpZGVyX3RodW1iXzInOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNsaWNrU2xpZGVyVGh1bWJfMigkc2xpZGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN5bmNTbGlkZXJzKFxuICAgICAgICAgICAgICAgICAgICAnLmNzX2dhbGxlcnlfc2xpZGVyX3RodW1iXzInLFxuICAgICAgICAgICAgICAgICAgICAnLmNzX2dhbGxlcnlfc2xpZGVyX25hdl8yJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjc19zbGlkZXJfY29udGFpbmVyMic6XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U2xpY2tTbGlkZXIyKCRzbGlkZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY3Nfc2xpZGVyX2NvbnRhaW5lcjMnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNsaWNrU2xpZGVyMygkc2xpZGVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NzX3NsaWRlcl9jb250YWluZXI0JzpcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTbGlja1NsaWRlcjQoJHNsaWRlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXIoJHNsaWRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0ICRzbGlja0FjdGl2ZSA9ICRzbGlkZXIuZmluZCgnLmNzX3NsaWRlcl93cmFwcGVyJyk7XG5cbiAgICAgICAgaWYgKCRzbGlja0FjdGl2ZS5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdTbGlkZXIgeWEgZXN0w6EgaW5pY2lhbGl6YWRvJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcmV2QXJyb3cgPSAkc2xpZGVyLmNsb3Nlc3QoJy5jc19zbGlkZXInKS5maW5kKCcuY3NfbGVmdF9hcnJvdycpO1xuICAgICAgICBjb25zdCBuZXh0QXJyb3cgPSAkc2xpZGVyLmNsb3Nlc3QoJy5jc19zbGlkZXInKS5maW5kKCcuY3NfcmlnaHRfYXJyb3cnKTtcblxuICAgICAgICAoJHNsaWNrQWN0aXZlIGFzIGFueSkuc2xpY2soe1xuICAgICAgICAgICAgYXV0b3BsYXk6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1hdXRvcGxheScsIDEpLFxuICAgICAgICAgICAgYXV0b3BsYXlTcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKFxuICAgICAgICAgICAgICAgICRzbGlkZXIsXG4gICAgICAgICAgICAgICAgJ2RhdGEtYXV0b3BsYXknLFxuICAgICAgICAgICAgICAgIDMwMDBcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXNwZWVkJywgNjAwKSxcbiAgICAgICAgICAgIGluZmluaXRlOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtbG9vcCcsIDApID09PSAwLFxuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiB0aGlzLmdldFNsaWRlc1BlclZpZXcoJHNsaWRlciksXG4gICAgICAgICAgICBzd2lwZVRvU2xpZGU6IHRydWUsXG4gICAgICAgICAgICBwcmV2QXJyb3c6IHByZXZBcnJvdyxcbiAgICAgICAgICAgIG5leHRBcnJvdzogbmV4dEFycm93LFxuICAgICAgICAgICAgY2VudGVyTW9kZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWNlbnRlcicsIDEwKSA9PT0gMSxcbiAgICAgICAgICAgIHZhcmlhYmxlV2lkdGg6XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXZhcmlhYmxlLXdpZHRoJywgMTApID09PSAxLFxuICAgICAgICAgICAgZG90czogdHJ1ZSxcbiAgICAgICAgICAgIGFwcGVuZERvdHM6ICRzbGlkZXIucGFyZW50KCkuZmluZCgnLmNzX3BhZ2luYXRpb24nKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXIyKCRzbGlkZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCAkc2xpY2tBY3RpdmUgPSAkc2xpZGVyLmZpbmQoJy5jc19zbGlkZXJfd3JhcHBlcicpO1xuXG4gICAgICAgIGlmICgkc2xpY2tBY3RpdmUuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignU2xpZGVyIHlhIGVzdMOhIGluaWNpYWxpemFkbycpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJldkFycm93ID0gJHNsaWRlci5jbG9zZXN0KCcuY3Nfc2xpZGVyJykuZmluZCgnLmNzX2xlZnRfYXJyb3cnKTtcbiAgICAgICAgY29uc3QgbmV4dEFycm93ID0gJHNsaWRlci5jbG9zZXN0KCcuY3Nfc2xpZGVyJykuZmluZCgnLmNzX3JpZ2h0X2Fycm93Jyk7XG5cbiAgICAgICAgKCRzbGlja0FjdGl2ZSBhcyBhbnkpLnNsaWNrKHtcbiAgICAgICAgICAgIGF1dG9wbGF5OiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtYXV0b3BsYXknLCAxKSxcbiAgICAgICAgICAgIGF1dG9wbGF5U3BlZWQ6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZyhcbiAgICAgICAgICAgICAgICAkc2xpZGVyLFxuICAgICAgICAgICAgICAgICdkYXRhLWF1dG9wbGF5JyxcbiAgICAgICAgICAgICAgICAzMDAwXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3BlZWQ6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1zcGVlZCcsIDYwMCksXG4gICAgICAgICAgICBpbmZpbml0ZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWxvb3AnLCAwKSA9PT0gMCxcbiAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogdGhpcy5nZXRTbGlkZXNQZXJWaWV3KCRzbGlkZXIpLFxuICAgICAgICAgICAgc3dpcGVUb1NsaWRlOiB0cnVlLFxuICAgICAgICAgICAgcHJldkFycm93OiBwcmV2QXJyb3csXG4gICAgICAgICAgICBuZXh0QXJyb3c6IG5leHRBcnJvdyxcbiAgICAgICAgICAgIGNlbnRlck1vZGU6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1jZW50ZXInLCAxMCkgPT09IDEsXG4gICAgICAgICAgICB2YXJpYWJsZVdpZHRoOlxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS12YXJpYWJsZS13aWR0aCcsIDEwKSA9PT0gMSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXIzKCRzbGlkZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCAkc2xpY2tBY3RpdmUgPSAkc2xpZGVyLmZpbmQoJy5jc19zbGlkZXJfd3JhcHBlcicpO1xuXG4gICAgICAgIGlmICgkc2xpY2tBY3RpdmUuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignU2xpZGVyIHlhIGVzdMOhIGluaWNpYWxpemFkbycpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJldkFycm93ID0gJHNsaWRlclxuICAgICAgICAgICAgLnNpYmxpbmdzKCcuY3Nfc2xpZGVyX2Fycm93cycpXG4gICAgICAgICAgICAuZmluZCgnLmNzX2xlZnRfYXJyb3cnKTtcbiAgICAgICAgY29uc3QgbmV4dEFycm93ID0gJHNsaWRlclxuICAgICAgICAgICAgLnNpYmxpbmdzKCcuY3Nfc2xpZGVyX2Fycm93cycpXG4gICAgICAgICAgICAuZmluZCgnLmNzX3JpZ2h0X2Fycm93Jyk7XG5cbiAgICAgICAgKCRzbGlja0FjdGl2ZSBhcyBhbnkpLnNsaWNrKHtcbiAgICAgICAgICAgIGF1dG9wbGF5OiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtYXV0b3BsYXknLCAwKSxcbiAgICAgICAgICAgIGF1dG9wbGF5U3BlZWQ6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZyhcbiAgICAgICAgICAgICAgICAkc2xpZGVyLFxuICAgICAgICAgICAgICAgICdkYXRhLWF1dG9wbGF5JyxcbiAgICAgICAgICAgICAgICAzMDAwXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3BlZWQ6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1zcGVlZCcsIDYwMCksXG4gICAgICAgICAgICBpbmZpbml0ZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWxvb3AnLCAwKSA9PT0gMCxcbiAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogdGhpcy5nZXRTbGlkZXNQZXJWaWV3KCRzbGlkZXIpLFxuICAgICAgICAgICAgc3dpcGVUb1NsaWRlOiB0cnVlLFxuICAgICAgICAgICAgcHJldkFycm93OiBwcmV2QXJyb3csXG4gICAgICAgICAgICBuZXh0QXJyb3c6IG5leHRBcnJvdyxcbiAgICAgICAgICAgIGNlbnRlck1vZGU6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1jZW50ZXInLCAwKSA9PT0gMSxcbiAgICAgICAgICAgIHZhcmlhYmxlV2lkdGg6XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXZhcmlhYmxlLXdpZHRoJywgMCkgPT09IDEsXG4gICAgICAgICAgICBkb3RzOiBmYWxzZSxcbiAgICAgICAgICAgIGFwcGVuZERvdHM6ICRzbGlkZXIucGFyZW50KCkuZmluZCgnLmNzX3BhZ2luYXRpb25fc2VydmljZXMnKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXJOYXYoJHNsaWRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICgkc2xpZGVyLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgJ1NsaWRlciBOQVYgeWEgZXN0w6EgaW5pY2lhbGl6YWRvLCBldml0YW5kbyBkdXBsaWNhZG9zLidcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAkc2xpZGVyLnNsaWNrKHtcbiAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogMyxcbiAgICAgICAgICAgIHNsaWRlc1RvU2Nyb2xsOiAxLFxuICAgICAgICAgICAgYXNOYXZGb3I6ICQoJy5jc19nYWxsZXJ5X3NsaWRlcl90aHVtYl9taW5pJykubGVuZ3RoXG4gICAgICAgICAgICAgICAgPyAnLmNzX2dhbGxlcnlfc2xpZGVyX3RodW1iX21pbmknXG4gICAgICAgICAgICAgICAgOiAnLmNzX2dhbGxlcnlfc2xpZGVyX3RodW1iJyxcbiAgICAgICAgICAgIGZvY3VzT25TZWxlY3Q6IHRydWUsXG4gICAgICAgICAgICBhcnJvd3M6IGZhbHNlLFxuICAgICAgICAgICAgdmVydGljYWw6IHRydWUsXG4gICAgICAgICAgICBjZW50ZXJNb2RlOiB0cnVlLFxuICAgICAgICAgICAgY2VudGVyUGFkZGluZzogJzBweCcsXG4gICAgICAgICAgICBzcGVlZDogMTAwMCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXJOYXZfMigkc2xpZGVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCRzbGlkZXIuaGFzQ2xhc3MoJ3NsaWNrLWluaXRpYWxpemVkJykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAnU2xpZGVyIE5BViB5YSBlc3TDoSBpbmljaWFsaXphZG8sIGV2aXRhbmRvIGR1cGxpY2Fkb3MuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgICRzbGlkZXIuc2xpY2soe1xuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiAzLFxuICAgICAgICAgICAgc2xpZGVzVG9TY3JvbGw6IDEsXG4gICAgICAgICAgICBhc05hdkZvcjogJy5jc19nYWxsZXJ5X3NsaWRlcl90aHVtYl8yJyxcbiAgICAgICAgICAgIGZvY3VzT25TZWxlY3Q6IHRydWUsXG4gICAgICAgICAgICBhcnJvd3M6IGZhbHNlLFxuICAgICAgICAgICAgY2VudGVyTW9kZTogdHJ1ZSxcbiAgICAgICAgICAgIGNlbnRlclBhZGRpbmc6ICcwcHgnLFxuICAgICAgICAgICAgc3BlZWQ6IDEwMDAsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNsaWNrU2xpZGVyVGh1bWIoJHNsaWRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICgkc2xpZGVyLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgJ1NsaWRlciBUSFVNQlMgeWEgZXN0w6EgaW5pY2lhbGl6YWRvLCBldml0YW5kbyBkdXBsaWNhZG9zLidcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcmV2QXJyb3cgPSAkc2xpZGVyXG4gICAgICAgICAgICAuY2xvc2VzdCgnLmNzX2dhbGxlcnlfaG92ZXJfc2hvd19uYXYnKVxuICAgICAgICAgICAgLmZpbmQoJy5jc19sZWZ0X2Fycm93X2dhbGxlcnknKTtcbiAgICAgICAgY29uc3QgbmV4dEFycm93ID0gJHNsaWRlclxuICAgICAgICAgICAgLmNsb3Nlc3QoJy5jc19nYWxsZXJ5X2hvdmVyX3Nob3dfbmF2JylcbiAgICAgICAgICAgIC5maW5kKCcuY3NfcmlnaHRfYXJyb3dfZ2FsbGVyeScpO1xuXG4gICAgICAgICRzbGlkZXIuc2xpY2soe1xuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiAxLFxuICAgICAgICAgICAgc2xpZGVzVG9TY3JvbGw6IDEsXG4gICAgICAgICAgICBwcmV2QXJyb3c6IHByZXZBcnJvdyxcbiAgICAgICAgICAgIG5leHRBcnJvdzogbmV4dEFycm93LFxuICAgICAgICAgICAgYXNOYXZGb3I6ICcuY3NfZ2FsbGVyeV9zbGlkZXJfbmF2LnNsaWNrLXNsaWRlcicsXG4gICAgICAgICAgICBpbmZpbml0ZTogZmFsc2UsXG4gICAgICAgICAgICBzcGVlZDogNjAwLFxuICAgICAgICAgICAgYXV0b3BsYXk6IGZhbHNlLFxuICAgICAgICAgICAgZmFkZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2xpY2tTbGlkZXJUaHVtYl8yKCRzbGlkZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoJHNsaWRlci5oYXNDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICdTbGlkZXIgVEhVTUJTIHlhIGVzdMOhIGluaWNpYWxpemFkbywgZXZpdGFuZG8gZHVwbGljYWRvcy4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJldkFycm93ID0gJHNsaWRlclxuICAgICAgICAgICAgLmNsb3Nlc3QoJy5jc19nYWxsZXJ5X2hvdmVyX3Nob3dfbmF2JylcbiAgICAgICAgICAgIC5maW5kKCcuY3NfbGVmdF9hcnJvd19nYWxsZXJ5XzIgLmNzX3N3aXBlcl9idXR0b25fcHJldicpO1xuICAgICAgICBjb25zdCBuZXh0QXJyb3cgPSAkc2xpZGVyXG4gICAgICAgICAgICAuY2xvc2VzdCgnLmNzX2dhbGxlcnlfaG92ZXJfc2hvd19uYXYnKVxuICAgICAgICAgICAgLmZpbmQoJy5jc19yaWdodF9hcnJvd19nYWxsZXJ5XzIgLmNzX3N3aXBlcl9idXR0b25fbmV4dCcpO1xuXG4gICAgICAgICRzbGlkZXIuc2xpY2soe1xuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiAxLFxuICAgICAgICAgICAgc2xpZGVzVG9TY3JvbGw6IDEsXG4gICAgICAgICAgICBwcmV2QXJyb3c6IHByZXZBcnJvdyxcbiAgICAgICAgICAgIG5leHRBcnJvdzogbmV4dEFycm93LFxuICAgICAgICAgICAgYXNOYXZGb3I6ICcuY3NfZ2FsbGVyeV9zbGlkZXJfbmF2XzIuc2xpY2stc2xpZGVyJyxcbiAgICAgICAgICAgIGluZmluaXRlOiBmYWxzZSxcbiAgICAgICAgICAgIHNwZWVkOiA2MDAsXG4gICAgICAgICAgICBhdXRvcGxheTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNsaWNrU2xpZGVyNCgkc2xpZGVyOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgJHNsaWNrQWN0aXZlID0gJHNsaWRlci5maW5kKCcuY3Nfc2xpZGVyX3dyYXBwZXInKTtcblxuICAgICAgICBpZiAoJHNsaWNrQWN0aXZlLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1NsaWRlciB5YSBlc3TDoSBpbmljaWFsaXphZG8nKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByZXZBcnJvdyA9ICRzbGlkZXIuY2xvc2VzdCgnLmNzX3NsaWRlcicpLmZpbmQoJy5jc19sZWZ0X2Fycm93Jyk7XG4gICAgICAgIGNvbnN0IG5leHRBcnJvdyA9ICRzbGlkZXIuY2xvc2VzdCgnLmNzX3NsaWRlcicpLmZpbmQoJy5jc19yaWdodF9hcnJvdycpO1xuXG4gICAgICAgIGNvbnN0IHNsaWRlc1RvU2hvdyA9IHRoaXMuZ2V0U2xpZGVzUGVyVmlldygkc2xpZGVyKTtcblxuICAgICAgICAoJHNsaWNrQWN0aXZlIGFzIGFueSkuc2xpY2soe1xuICAgICAgICAgICAgYXV0b3BsYXk6IHRoaXMuZ2V0U2xpZGVyU2V0dGluZygkc2xpZGVyLCAnZGF0YS1hdXRvcGxheScsIDEpLFxuICAgICAgICAgICAgYXV0b3BsYXlTcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKFxuICAgICAgICAgICAgICAgICRzbGlkZXIsXG4gICAgICAgICAgICAgICAgJ2RhdGEtYXV0b3BsYXknLFxuICAgICAgICAgICAgICAgIDMwMDBcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzcGVlZDogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXNwZWVkJywgNjAwKSxcbiAgICAgICAgICAgIGluZmluaXRlOiB0aGlzLmdldFNsaWRlclNldHRpbmcoJHNsaWRlciwgJ2RhdGEtbG9vcCcsIDApID09PSAwLFxuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiBzbGlkZXNUb1Nob3csXG4gICAgICAgICAgICBzd2lwZVRvU2xpZGU6IHRydWUsXG4gICAgICAgICAgICBwcmV2QXJyb3c6IHByZXZBcnJvdyxcbiAgICAgICAgICAgIG5leHRBcnJvdzogbmV4dEFycm93LFxuICAgICAgICAgICAgY2VudGVyTW9kZTogdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLWNlbnRlcicsIDEwKSA9PT0gMSxcbiAgICAgICAgICAgIHZhcmlhYmxlV2lkdGg6XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTbGlkZXJTZXR0aW5nKCRzbGlkZXIsICdkYXRhLXZhcmlhYmxlLXdpZHRoJywgMTApID09PSAxLFxuICAgICAgICAgICAgZG90czogdHJ1ZSxcbiAgICAgICAgICAgIGFwcGVuZERvdHM6ICRzbGlkZXIucGFyZW50KCkuZmluZCgnLmNzX3BhZ2luYXRpb24nKSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudG9nZ2xlU2xpZGVyQXJyb3dzKCRzbGlkZXIsIHNsaWRlc1RvU2hvdyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTbGlkZXJTZXR0aW5nKFxuICAgICAgICAkc2xpZGVyOiBhbnksXG4gICAgICAgIHNldHRpbmdOYW1lOiBzdHJpbmcsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogYW55XG4gICAgKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KCRzbGlkZXIuYXR0cihzZXR0aW5nTmFtZSksIDEwKSB8fCBkZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTbGlkZXNQZXJWaWV3KCRzbGlkZXI6IGFueSk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHNsaWRlc1BlclZpZXdUeXBlID0gJHNsaWRlci5hdHRyKCdkYXRhLXNsaWRlcy1wZXItdmlldycpO1xuICAgICAgICBjb25zdCB4c1NsaWRlcyA9IHBhcnNlSW50KCRzbGlkZXIuYXR0cignZGF0YS14cy1zbGlkZXMnKSwgMTApIHx8IDE7XG4gICAgICAgIGNvbnN0IHNtU2xpZGVzID0gcGFyc2VJbnQoJHNsaWRlci5hdHRyKCdkYXRhLXNtLXNsaWRlcycpLCAxMCkgfHwgMjtcbiAgICAgICAgY29uc3QgbWRTbGlkZXMgPSBwYXJzZUludCgkc2xpZGVyLmF0dHIoJ2RhdGEtbWQtc2xpZGVzJyksIDEwKSB8fCAyO1xuICAgICAgICBjb25zdCBtbGdTbGlkZXMgPSBwYXJzZUludCgkc2xpZGVyLmF0dHIoJ2RhdGEtbWxnLXNsaWRlcycpLCAxMCkgfHwgMztcbiAgICAgICAgY29uc3QgbGdTbGlkZXMgPSBwYXJzZUludCgkc2xpZGVyLmF0dHIoJ2RhdGEtbGctc2xpZGVzJyksIDEwKSB8fCAzO1xuICAgICAgICBjb25zdCB4bFNsaWRlcyA9XG4gICAgICAgICAgICBwYXJzZUludCgkc2xpZGVyLmF0dHIoJ2RhdGEteGwtc2xpZGVzJyksIDEwKSB8fCBsZ1NsaWRlcztcblxuICAgICAgICBpZiAoc2xpZGVzUGVyVmlld1R5cGUgPT09ICdyZXNwb25zaXZlJykge1xuICAgICAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNTc2KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHhzU2xpZGVzO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDc2OCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzbVNsaWRlcztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAod2luZG93LmlubmVyV2lkdGggPCAxMDI0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1kU2xpZGVzO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDEyODApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWxnU2xpZGVzO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDE0MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGdTbGlkZXM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB4bFNsaWRlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUludChzbGlkZXNQZXJWaWV3VHlwZSwgMTApIHx8IDE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHRvZ2dsZVNsaWRlckFycm93cygkc2xpZGVyOiBhbnksIHNsaWRlc1RvU2hvdzogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0ICRzbGlkZXMgPSAkc2xpZGVyLmZpbmQoJy5jc19zbGlkZScpO1xuICAgICAgICBjb25zdCB0b3RhbFNsaWRlcyA9ICRzbGlkZXMubGVuZ3RoO1xuXG4gICAgICAgIGNvbnN0ICRzbGlkZXJDb250YWluZXIgPSAkc2xpZGVyLmNsb3Nlc3QoJy5jc19zbGlkZXInKTtcbiAgICAgICAgY29uc3Qgc2hvdWxkSGlkZSA9IHRvdGFsU2xpZGVzIDw9IHNsaWRlc1RvU2hvdztcblxuICAgICAgICAkc2xpZGVyQ29udGFpbmVyLnRvZ2dsZUNsYXNzKCdoaWRlLWFycm93cycsIHNob3VsZEhpZGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3luY1NsaWRlcnMobWFpblNlbGVjdG9yOiBzdHJpbmcsIG5hdlNlbGVjdG9yOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgJG1haW4gPSAkKG1haW5TZWxlY3Rvcik7XG4gICAgICAgIGNvbnN0ICRuYXYgPSAkKG5hdlNlbGVjdG9yKTtcblxuICAgICAgICBpZiAoJG1haW4ubGVuZ3RoICYmICRuYXYubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoISRtYWluLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICAgICAgJG1haW4uc2xpY2soe1xuICAgICAgICAgICAgICAgICAgICBzbGlkZXNUb1Nob3c6IDEsXG4gICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2Nyb2xsOiAxLFxuICAgICAgICAgICAgICAgICAgICBhcnJvd3M6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGZhZGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGFzTmF2Rm9yOiBuYXZTZWxlY3RvcixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCEkbmF2Lmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICAgICAgJG5hdi5zbGljayh7XG4gICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogMyxcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVzVG9TY3JvbGw6IDEsXG4gICAgICAgICAgICAgICAgICAgIGFzTmF2Rm9yOiBtYWluU2VsZWN0b3IsXG4gICAgICAgICAgICAgICAgICAgIGZvY3VzT25TZWxlY3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGFycm93czogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBjZW50ZXJNb2RlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAnU2xpZGVycyBubyBlbmNvbnRyYWRvcyBwYXJhIHNpbmNyb25pemFyOicsXG4gICAgICAgICAgICAgICAgbWFpblNlbGVjdG9yLFxuICAgICAgICAgICAgICAgIG5hdlNlbGVjdG9yXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW92ZVRvTmV4dFNsaWRlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCAkc2xpZGVyID0gJCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICBpZiAoJHNsaWRlci5sZW5ndGgpIHtcbiAgICAgICAgICAgICRzbGlkZXIuc2xpY2soJ3NsaWNrTmV4dCcpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
package/fesm2022/ctt-babylon.mjs
CHANGED
|
@@ -208,53 +208,24 @@ class BabylonSlidersDirective {
|
|
|
208
208
|
}))))
|
|
209
209
|
.subscribe();
|
|
210
210
|
}
|
|
211
|
-
/**
|
|
212
|
-
* Métodos para implementar mejora de tiempos de carga de jquery, TODO: mejorar métodos, seguían dando errores por consola
|
|
213
|
-
*/
|
|
214
|
-
// private waitForSlickAvailability(): Observable<void> {
|
|
215
|
-
// return timer(0, 50).pipe(
|
|
216
|
-
// // Polling cada 50ms
|
|
217
|
-
// takeWhile(
|
|
218
|
-
// () =>
|
|
219
|
-
// !(
|
|
220
|
-
// typeof $ !== 'undefined' &&
|
|
221
|
-
// $.fn &&
|
|
222
|
-
// typeof $.fn.slick !== 'undefined'
|
|
223
|
-
// ),
|
|
224
|
-
// true
|
|
225
|
-
// ),
|
|
226
|
-
// switchMap(() => of(undefined))
|
|
227
|
-
// );
|
|
228
|
-
// }
|
|
229
|
-
// private waitForJqueryAvailability(): Observable<void> {
|
|
230
|
-
// // Esta es la parte de "escucha" (polling) de jQuery
|
|
231
|
-
// return timer(0, 50) // Empezar inmediatamente, luego cada 50ms
|
|
232
|
-
// .pipe(
|
|
233
|
-
// // Continuar mientras jQuery no esté disponible, pero con un límite de tiempo
|
|
234
|
-
// takeWhile(() => !(typeof $ !== 'undefined'), true),
|
|
235
|
-
// // Cuando takeWhile completa (jQuery está listo o se excede el tiempo),
|
|
236
|
-
// // verifica si realmente jQuery está disponible
|
|
237
|
-
// switchMap(
|
|
238
|
-
// () => of(undefined) // Emite un valor para que el pipe continúe
|
|
239
|
-
// )
|
|
240
|
-
// );
|
|
241
|
-
// }
|
|
242
211
|
executeInitializeSlider() {
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
this.resizeFn
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
this.
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
212
|
+
setTimeout(() => {
|
|
213
|
+
try {
|
|
214
|
+
this.initializeSlider();
|
|
215
|
+
if (!this.resizeFn) {
|
|
216
|
+
this.resizeFn = () => {
|
|
217
|
+
clearTimeout(this.resizeTimeout);
|
|
218
|
+
this.resizeTimeout = setTimeout(() => {
|
|
219
|
+
this.initializeSlider();
|
|
220
|
+
}, 200);
|
|
221
|
+
};
|
|
222
|
+
window.addEventListener('resize', this.resizeFn);
|
|
223
|
+
}
|
|
253
224
|
}
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
this.executeInitializeSlider();
|
|
227
|
+
}
|
|
228
|
+
}, 50);
|
|
258
229
|
}
|
|
259
230
|
initializeSlider() {
|
|
260
231
|
const $slider = $(this.el.nativeElement);
|
|
@@ -702,20 +673,25 @@ class BabylonLightGalleryDirective {
|
|
|
702
673
|
Utils.loadScript$('assets/babylon/lightgallery/js/lightgallery.min.js'),
|
|
703
674
|
Utils.loadStyle$('assets/babylon/lightgallery/css/lightgallery.min.css'),
|
|
704
675
|
]).pipe(tap(() => {
|
|
705
|
-
|
|
706
|
-
this.executeInitLightGallery();
|
|
707
|
-
}, 400);
|
|
676
|
+
this.executeInitLightGallery();
|
|
708
677
|
}))))
|
|
709
678
|
.subscribe();
|
|
710
679
|
}
|
|
711
680
|
executeInitLightGallery() {
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
681
|
+
try {
|
|
682
|
+
this.initLightGallery();
|
|
683
|
+
if (!this.observer) {
|
|
684
|
+
// Cuando el DOM cambie (Angular repinta al filtrar) refrescamos el plugin
|
|
685
|
+
this.observer = new MutationObserver(() => this.refresh());
|
|
686
|
+
this.observer.observe(this.el.nativeElement, {
|
|
687
|
+
childList: true,
|
|
688
|
+
subtree: true,
|
|
689
|
+
});
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
catch (error) {
|
|
693
|
+
this.executeInitLightGallery();
|
|
694
|
+
}
|
|
719
695
|
}
|
|
720
696
|
initLightGallery() {
|
|
721
697
|
if (typeof $ === 'undefined')
|