@yuuvis/client-shell-core 2.18.0 → 2.20.0
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.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { inject, Injectable } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { AVAILABLE_BACKEND_APPS, BackendService, CLIENT_APP_REQUIREMENTS } from '@yuuvis/client-core';
|
|
3
3
|
import { YUV_USER } from '@yuuvis/client-core';
|
|
4
4
|
import { of, switchMap, tap } from 'rxjs';
|
|
5
5
|
import { SHELL_CONFIG_FEATURES } from '../shell-config/shell-config.const';
|
|
@@ -138,4 +138,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
138
138
|
providedIn: 'root'
|
|
139
139
|
}]
|
|
140
140
|
}] });
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LXNoZWxsLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9mZWF0dXJlL2ZlYXR1cmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFnQixzQkFBc0IsRUFBb0MsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0SixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFLbEUsTUFBTSxPQUFPLGNBQWM7SUFDekIsa0JBQWtCLEdBQUcsTUFBTSxDQUE0QixzQkFBc0IsQ0FBQyxDQUFDO0lBQy9FLG9CQUFvQixHQUFHLE1BQU0sQ0FBZSx1QkFBdUIsQ0FBQyxDQUFDO0lBRXJFLGNBQWMsR0FBRyxNQUFNLENBQTJCLDJCQUEyQixDQUFDLENBQUM7SUFDL0UsVUFBVSxHQUFHLE1BQU0sQ0FBVSxRQUFRLENBQUMsQ0FBQztJQUN2QyxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzlCLFlBQVksR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUMxQyxnQkFBZ0IsR0FBSSxJQUFJLENB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UUFFdEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCO1lBQzFCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FDekIsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDakIsSUFBSTtnQkFDRixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFpQixFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDekQsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ2hCLHFCQUFxQjtvQkFDckIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQ25FLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO3dCQUNYLGtCQUFrQjt3QkFDbEIsNEJBQTRCO3dCQUU1QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztvQkFDeEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztnQkFDSixDQUFDLENBQUMsQ0FDSDtnQkFDSCxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUNiLENBQ0Y7WUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2YsQ0FBQzsrR0F4SlUsY0FBYzttSEFBZCxjQUFjLGNBRmIsTUFBTTs7NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhY2tlbmRTZXJ2aWNlLCBSZXF1aXJlbWVudHMsIEFWQUlMQUJMRV9CQUNLRU5EX0FQUFMsIFl1dkF2YWlsYWJsZUJhY2tlbmRBcHBzLCBZdXZVc2VyLCBDTElFTlRfQVBQX1JFUVVJUkVNRU5UUyB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWNvcmUnO1xuXG5pbXBvcnQgeyBZVVZfVVNFUiB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcHAgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2xpZW50LXNoZWxsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTSEVMTF9DT05GSUdfRkVBVFVSRVMgfSBmcm9tICcuLi9zaGVsbC1jb25maWcvc2hlbGwtY29uZmlnLmNvbnN0JztcbmltcG9ydCB7IFNoZWxsQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL3NoZWxsLWNvbmZpZy9zaGVsbC1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBTaGVsbFNlcnZpY2UgfSBmcm9tICcuLi9zaGVsbC9zaGVsbC5zZXJ2aWNlJztcbmltcG9ydCB7IENsaWVudFNoZWxsRmVhdHVyZSwgQ2xpZW50U2hlbGxGZWF0dXJlQ29uZmlnIH0gZnJvbSAnLi9mZWF0dXJlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDTElFTlRfU0hFTExfRkVBVFVSRV9DT05GSUcgfSBmcm9tICcuL2ZlYXR1cmUucHJvdmlkZXJzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRmVhdHVyZVNlcnZpY2Uge1xuICAjZmVhdHVyZU1hbmFnZW1lbnQgPSBpbmplY3Q8WXV2QXZhaWxhYmxlQmFja2VuZEFwcHNbXT4oQVZBSUxBQkxFX0JBQ0tFTkRfQVBQUyk7XG4gICNmZWF0dXJlUmVxdWlyZW1lbnRzID0gaW5qZWN0PFJlcXVpcmVtZW50cz4oQ0xJRU5UX0FQUF9SRVFVSVJFTUVOVFMpO1xuXG4gICNmZWF0dXJlQ29uZmlnID0gaW5qZWN0PENsaWVudFNoZWxsRmVhdHVyZUNvbmZpZz4oQ0xJRU5UX1NIRUxMX0ZFQVRVUkVfQ09ORklHKTtcbiAgI3VzZXJUb2tlbiA9IGluamVjdDxZdXZVc2VyPihZVVZfVVNFUik7XG4gICNzaGVsbCA9IGluamVjdChTaGVsbFNlcnZpY2UpO1xuICAjc2hlbGxDb25maWcgPSBpbmplY3QoU2hlbGxDb25maWdTZXJ2aWNlKTtcbiAgI2ZlYXR1cmVPYmplY3RJZD8gPSB0aGlzLiNmZWF0dXJlQ29uZmlnPy5vYmplY3RJRDtcbiAgI2ZlYXR1cmVzID0gdGhpcy4jZmVhdHVyZUNvbmZpZz8uZmVhdHVyZXMgfHwgW107XG4gICNiYWNrZW5kID0gaW5qZWN0KEJhY2tlbmRTZXJ2aWNlKTtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgZmVhdHVyZSBtZWV0cyBhbGwgaXRzIHJlcXVpcmVtZW50cy5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgdmFsaWRhdGVzIHdoZXRoZXIgYSBmZWF0dXJlIChpZGVudGlmaWVkIGJ5IGl0cyBJRCkgY2FuIGJlIGVuYWJsZWQgYmFzZWQgb246XG4gICAqIDEuIFdoZXRoZXIgaXQgaGFzIGFueSBkZWZpbmVkIHJlcXVpcmVtZW50cyBpbiB0aGUgZmVhdHVyZSByZXF1aXJlbWVudHMgY29uZmlndXJhdGlvblxuICAgKiAyLiBXaGV0aGVyIGFsbCBpdHMgcmVxdWlyZW1lbnRzIGFyZSBwcmVzZW50IGFuZCBlbmFibGVkIGluIHRoZSBmZWF0dXJlIGF2YWlsYWJpbGl0eSBsaXN0XG4gICAqXG4gICAqIEBwYXJhbSBmZXQgLSBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgZmVhdHVyZSBJRCB0byBjaGVja1xuICAgKiBAcGFyYW0gZmV0LmlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBmZWF0dXJlIChtYXkgaW5jbHVkZSAnLmV4dGVuc2lvbicgc3VmZml4KVxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGZlYXR1cmUgaGFzIG5vIHJlcXVpcmVtZW50cyBvciBhbGwgcmVxdWlyZW1lbnRzIGFyZSBlbmFibGVkOyBgZmFsc2VgIG90aGVyd2lzZVxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiAtIFRoZSBtZXRob2QgbWF0Y2hlcyBmZWF0dXJlIElEcyBleGFjdGx5IG9yIHdpdGggYW4gb3B0aW9uYWwgJy5leHRlbnNpb24nIHN1ZmZpeFxuICAgKiAtIFJlcXVpcmVtZW50IG5hbWVzIGVuZGluZyB3aXRoICcrJyBoYXZlIHRoZSBzdWZmaXggcmVtb3ZlZCBiZWZvcmUgdmFsaWRhdGlvblxuICAgKiAtIElmIG5vIG1hdGNoaW5nIHJlcXVpcmVtZW50cyBhcmUgZm91bmQsIHRoZSBmZWF0dXJlIGlzIGNvbnNpZGVyZWQgdmFsaWQgKHJldHVybnMgYHRydWVgKVxuICAgKiAtIEFsbCByZXF1aXJlbWVudHMgbXVzdCBoYXZlIGEgc3RhdGUgb2YgJ2VuYWJsZWQnIGZvciB0aGUgZmVhdHVyZSB0byBwYXNzIHZhbGlkYXRpb25cbiAgICovXG4gICNtYXRjaGVzUmVxdWlyZW1lbnRzKGZlYXQ6IHsgaWQ6IHN0cmluZyB9KTogYm9vbGVhbiB7XG4gICAgY29uc3QgZmVhdHVyZVJlcXVpcmVtZW50cyA9IHRoaXMuI2ZlYXR1cmVSZXF1aXJlbWVudHM7XG4gICAgY29uc3QgZmVhdHVyZUF2YWlsYWJpbGl0eSA9IHRoaXMuI2ZlYXR1cmVNYW5hZ2VtZW50O1xuICAgIGlmICghZmVhdHVyZVJlcXVpcmVtZW50cykgcmV0dXJuIHRydWU7XG4gICAgLy8gQ2hlY2sgaWYgZmV0LmlkIG1hdGNoZXMgZXhhY3RseSAna2V5JyBvciAna2V5LmV4dGVuc2lvbidcbiAgICBjb25zdCBtYXRjaGluZ0tleSA9IE9iamVjdC5rZXlzKGZlYXR1cmVSZXF1aXJlbWVudHMpLmZpbmQoKGtleSkgPT4gbmV3IFJlZ0V4cChgXiR7a2V5fShcXFxcLmV4dGVuc2lvbik/JGApLnRlc3QoZmVhdC5pZCkpO1xuXG4gICAgLy8gSWYgbm8gbWF0Y2hpbmcga2V5LCByZXR1cm4gdHJ1ZVxuICAgIGlmICghbWF0Y2hpbmdLZXkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIEdldCB0aGUgcmVxdWlyZW1lbnRzIGZvciB0aGUgbWF0Y2hpbmcga2V5XG4gICAgY29uc3QgcmVxdWlyZW1lbnRzID0gZmVhdHVyZVJlcXVpcmVtZW50c1ttYXRjaGluZ0tleV07XG5cbiAgICAvLyBDaGVjayBpZiBhbGwgcmVxdWlyZW1lbnRzIGFyZSBpbiBhdnYgd2l0aCBzdGF0ZSAnZW5hYmxlZCdcbiAgICByZXR1cm4gcmVxdWlyZW1lbnRzLmV2ZXJ5KChyZXFOYW1lKSA9PiB7XG4gICAgICAvLyBSZW1vdmUgdGhlICcrJyBzdWZmaXggaWYgcHJlc2VudFxuICAgICAgY29uc3QgY2xlYW5SZXFOYW1lID0gcmVxTmFtZS5yZXBsYWNlKC9cXCskLywgJycpO1xuICAgICAgLy8gRmluZCB0aGUgcmVxdWlyZW1lbnQgaW4gYXZ2IGFuZCBjaGVjayBpZiBpdCdzIGVuYWJsZWRcbiAgICAgIGNvbnN0IGZvdW5kID0gZmVhdHVyZUF2YWlsYWJpbGl0eS5maW5kKChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IGNsZWFuUmVxTmFtZSk7XG4gICAgICByZXR1cm4gZm91bmQgJiYgZm91bmQuc3RhdGUgPT09ICdlbmFibGVkJztcbiAgICB9KTtcbiAgfVxuXG4gIGhhc0ZlYXR1cmVDb25maWcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy4jZmVhdHVyZU9iamVjdElkO1xuICB9XG5cbiAgZ2V0RmVhdHVyZXMoKTogQ2xpZW50U2hlbGxGZWF0dXJlW10ge1xuICAgIHJldHVybiB0aGlzLiNmZWF0dXJlcztcbiAgfVxuXG4gIGdldEF2YWlsYWJsZUFwcHMoYWxsQXBwczogQXBwW10pOiBBcHBbXSB7XG4gICAgcmV0dXJuIGFsbEFwcHMuZmlsdGVyKChhcHApID0+IHRoaXMuI21hdGNoZXNSZXF1aXJlbWVudHMoYXBwKSAmJiB0aGlzLmNhblVzZUFwcChhcHApICYmIHRoaXMuY2FuVXNlRmVhdHVyZUJ5SWQoYXBwLmlkKSk7XG4gIH1cblxuICBjYW5Vc2VBcHAoYXBwOiBBcHApIHtcbiAgICBjb25zdCBhdXRob3JpdGllcyA9IHRoaXMuI3VzZXJUb2tlbj8uYXV0aG9yaXRpZXMgfHwgW107XG4gICAgY29uc3QgYWxsb3dlZCA9IGFwcC5wZXJtaXNzaW9ucz8uYWxsb3cgfHwgW107XG4gICAgY29uc3QgZGVuaWVkID0gYXBwLnBlcm1pc3Npb25zPy5kZW55IHx8IFtdO1xuXG4gICAgY29uc3QgaXNBbGxvd2VkID0gYWxsb3dlZC5sZW5ndGggPT09IDAgfHwgYXV0aG9yaXRpZXMuc29tZSgoYXV0aG9yaXR5KSA9PiBhbGxvd2VkLmluY2x1ZGVzKGF1dGhvcml0eSkpO1xuICAgIGNvbnN0IGlzRGVuaWVkID0gZGVuaWVkLnNvbWUoKGRlbmllZEF1dGhvcml0eSkgPT4gYXV0aG9yaXRpZXMuaW5jbHVkZXMoZGVuaWVkQXV0aG9yaXR5KSk7XG5cbiAgICByZXR1cm4gaXNBbGxvd2VkICYmICFpc0RlbmllZDtcbiAgfVxuXG4gIGNhbk1hdGNoUmVxdWlyZW1lbnRzKGFwcDogeyBpZDogc3RyaW5nIH0pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jbWF0Y2hlc1JlcXVpcmVtZW50cyh7IGlkOiBhcHAuaWQgfSk7XG4gIH1cblxuICBjYW5Vc2VGZWF0dXJlQnlJZChmZWF0dXJlSWQ6IHN0cmluZywgYXV0aG9yaXRpZXM/OiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIC8vIGNoZWNrIHJlcXVpcmVtZW50XG4gICAgaWYgKCF0aGlzLiNtYXRjaGVzUmVxdWlyZW1lbnRzKHsgaWQ6IGZlYXR1cmVJZCB9KSkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIGNoZWNrIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgYmFja2VuZCAoaXRlbSBmaWxlZCBpbiBzaGVsbCBjb25maWcpXG4gICAgY29uc3QgZmVhdHVyZSA9IHRoaXMuI2ZlYXR1cmVzLmZpbmQoKGYpID0+IGYuaWQgPT09IGZlYXR1cmVJZCk7XG4gICAgcmV0dXJuICFmZWF0dXJlIHx8IHRoaXMuY2FuVXNlRmVhdHVyZShmZWF0dXJlLCBhdXRob3JpdGllcyk7XG4gIH1cblxuICBjYW5Vc2VGZWF0dXJlKGZlYXR1cmU6IENsaWVudFNoZWxsRmVhdHVyZSwgYXV0aG9yaXRpZXM/OiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGF1dGhvcml0aWVzVG9DaGVjayA9IGF1dGhvcml0aWVzIHx8IHRoaXMuI3VzZXJUb2tlbj8uYXV0aG9yaXRpZXMgfHwgW107XG4gICAgY29uc3QgYWxsb3dlZCA9IGZlYXR1cmUuYWxsb3dlZCB8fCBbXTtcbiAgICBjb25zdCBkZW5pZWQgPSBmZWF0dXJlLmRlbmllZCB8fCBbXTtcblxuICAgIGNvbnN0IGlzQWxsb3dlZCA9IGFsbG93ZWQubGVuZ3RoID09PSAwIHx8IGF1dGhvcml0aWVzVG9DaGVjay5zb21lKChhdXRob3JpdHkpID0+IGFsbG93ZWQuaW5jbHVkZXMoYXV0aG9yaXR5KSk7XG4gICAgY29uc3QgaXNEZW5pZWQgPSBkZW5pZWQuc29tZSgoZGVuaWVkQXV0aG9yaXR5KSA9PiBhdXRob3JpdGllc1RvQ2hlY2suaW5jbHVkZXMoZGVuaWVkQXV0aG9yaXR5KSk7XG5cbiAgICByZXR1cm4gaXNBbGxvd2VkICYmICFpc0RlbmllZDtcbiAgfVxuXG4gIHNhdmVGZWF0dXJlU2V0dGluZ3MoZmVhdHVyZXM6IENsaWVudFNoZWxsRmVhdHVyZVtdKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAoIXRoaXMuI2ZlYXR1cmVPYmplY3RJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBmZWF0dXJlIGNvbmZpZ3VyYXRpb24gb2JqZWN0IElEIHByb3ZpZGVkJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLiNzaGVsbENvbmZpZy51cGRhdGUodGhpcy4jZmVhdHVyZU9iamVjdElkLCBmZWF0dXJlcykucGlwZSh0YXAoKCkgPT4gKHRoaXMuI2ZlYXR1cmVzID0gZmVhdHVyZXMpKSk7XG4gIH1cblxuICBkZWxldGVGZWF0dXJlU2V0dGluZ3MoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAoIXRoaXMuI2ZlYXR1cmVPYmplY3RJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBmZWF0dXJlIGNvbmZpZ3VyYXRpb24gb2JqZWN0IElEIHByb3ZpZGVkJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLiNzaGVsbENvbmZpZy5kZWxldGUodGhpcy4jZmVhdHVyZU9iamVjdElkKTtcbiAgfVxuXG4gIGNyZWF0ZVNldHRpbmdzT2JqZWN0KCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuI3NoZWxsQ29uZmlnLmNyZWF0ZShTSEVMTF9DT05GSUdfRkVBVFVSRVMsIFtdKS5waXBlKFxuICAgICAgdGFwKChyZXMpID0+IHtcbiAgICAgICAgdGhpcy4jZmVhdHVyZU9iamVjdElkID0gcmVzLmlkO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZXhwb3J0KCkge1xuICAgIGlmICh0aGlzLiNmZWF0dXJlT2JqZWN0SWQpIHtcbiAgICAgIHRoaXMuI3NoZWxsQ29uZmlnLmRvd25sb2FkKHRoaXMuI2ZlYXR1cmVPYmplY3RJZCwgYCR7U0hFTExfQ09ORklHX0ZFQVRVUkVTfS5qc29uYCk7XG4gICAgfVxuICB9XG5cbiAgaW1wb3J0KCkge1xuICAgIC8vIHJlYWQgZmlsZXMgY29udGVudHNcblxuICAgIHJldHVybiB0aGlzLiNmZWF0dXJlT2JqZWN0SWRcbiAgICAgID8gdGhpcy4jc2hlbGwucGlja0ZpbGUoKS5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcCgoZmlsZSkgPT5cbiAgICAgICAgICAgIGZpbGVcbiAgICAgICAgICAgICAgPyB0aGlzLiNzaGVsbENvbmZpZy51cGxvYWQodGhpcy4jZmVhdHVyZU9iamVjdElkISwgZmlsZSkucGlwZShcbiAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHJlYWQgdXBsb2FkZWQgZmlsZVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jYmFja2VuZC5nZXQoYC9kbXMvb2JqZWN0cy8ke3Jlcy5pZH0vY29udGVudHMvZmlsZWApLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgdGFwKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGUgZmVhdHVyZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ2RhdGEnLCBkYXRhKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4jZmVhdHVyZXMgPSBkYXRhO1xuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBvZihudWxsKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgOiBvZihudWxsKTtcbiAgfVxufVxuIl19
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LXNoZWxsLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9mZWF0dXJlL2ZlYXR1cmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGNBQWMsRUFDZCx1QkFBdUIsRUFJeEIsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFLbEUsTUFBTSxPQUFPLGNBQWM7SUFDekIsa0JBQWtCLEdBQUcsTUFBTSxDQUE0QixzQkFBc0IsQ0FBQyxDQUFDO0lBQy9FLG9CQUFvQixHQUFHLE1BQU0sQ0FBZSx1QkFBdUIsQ0FBQyxDQUFDO0lBRXJFLGNBQWMsR0FBRyxNQUFNLENBQTJCLDJCQUEyQixDQUFDLENBQUM7SUFDL0UsVUFBVSxHQUFHLE1BQU0sQ0FBVSxRQUFRLENBQUMsQ0FBQztJQUN2QyxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzlCLFlBQVksR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUMxQyxnQkFBZ0IsR0FBSSxJQUFJLENB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QjtRQUV0QixPQUFPLElBQUksQ0FBQyxnQkFBZ0I7WUFDMUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUN6QixTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNqQixJQUFJO2dCQUNGLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUN6RCxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDaEIscUJBQXFCO29CQUNyQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGdCQUFnQixHQUFHLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FDbkUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7d0JBQ1gsa0JBQWtCO3dCQUNsQiw0QkFBNEI7d0JBRTVCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO29CQUN4QixDQUFDLENBQUMsQ0FDSCxDQUFDO2dCQUNKLENBQUMsQ0FBQyxDQUNIO2dCQUNILENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQ2IsQ0FDRjtZQUNILENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDZixDQUFDOytHQTVKVSxjQUFjO21IQUFkLGNBQWMsY0FGYixNQUFNOzs0RkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQVZBSUxBQkxFX0JBQ0tFTkRfQVBQUyxcbiAgQmFja2VuZFNlcnZpY2UsXG4gIENMSUVOVF9BUFBfUkVRVUlSRU1FTlRTLFxuICBSZXF1aXJlbWVudHMsXG4gIFl1dkF2YWlsYWJsZUJhY2tlbmRBcHBzLFxuICBZdXZVc2VyXG59IGZyb20gJ0B5dXV2aXMvY2xpZW50LWNvcmUnO1xuXG5pbXBvcnQgeyBZVVZfVVNFUiB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcHAgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2xpZW50LXNoZWxsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTSEVMTF9DT05GSUdfRkVBVFVSRVMgfSBmcm9tICcuLi9zaGVsbC1jb25maWcvc2hlbGwtY29uZmlnLmNvbnN0JztcbmltcG9ydCB7IFNoZWxsQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL3NoZWxsLWNvbmZpZy9zaGVsbC1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBTaGVsbFNlcnZpY2UgfSBmcm9tICcuLi9zaGVsbC9zaGVsbC5zZXJ2aWNlJztcbmltcG9ydCB7IENsaWVudFNoZWxsRmVhdHVyZSwgQ2xpZW50U2hlbGxGZWF0dXJlQ29uZmlnIH0gZnJvbSAnLi9mZWF0dXJlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDTElFTlRfU0hFTExfRkVBVFVSRV9DT05GSUcgfSBmcm9tICcuL2ZlYXR1cmUucHJvdmlkZXJzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRmVhdHVyZVNlcnZpY2Uge1xuICAjZmVhdHVyZU1hbmFnZW1lbnQgPSBpbmplY3Q8WXV2QXZhaWxhYmxlQmFja2VuZEFwcHNbXT4oQVZBSUxBQkxFX0JBQ0tFTkRfQVBQUyk7XG4gICNmZWF0dXJlUmVxdWlyZW1lbnRzID0gaW5qZWN0PFJlcXVpcmVtZW50cz4oQ0xJRU5UX0FQUF9SRVFVSVJFTUVOVFMpO1xuXG4gICNmZWF0dXJlQ29uZmlnID0gaW5qZWN0PENsaWVudFNoZWxsRmVhdHVyZUNvbmZpZz4oQ0xJRU5UX1NIRUxMX0ZFQVRVUkVfQ09ORklHKTtcbiAgI3VzZXJUb2tlbiA9IGluamVjdDxZdXZVc2VyPihZVVZfVVNFUik7XG4gICNzaGVsbCA9IGluamVjdChTaGVsbFNlcnZpY2UpO1xuICAjc2hlbGxDb25maWcgPSBpbmplY3QoU2hlbGxDb25maWdTZXJ2aWNlKTtcbiAgI2ZlYXR1cmVPYmplY3RJZD8gPSB0aGlzLiNmZWF0dXJlQ29uZmlnPy5vYmplY3RJRDtcbiAgI2ZlYXR1cmVzID0gdGhpcy4jZmVhdHVyZUNvbmZpZz8uZmVhdHVyZXMgfHwgW107XG4gICNiYWNrZW5kID0gaW5qZWN0KEJhY2tlbmRTZXJ2aWNlKTtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgZmVhdHVyZSBtZWV0cyBhbGwgaXRzIHJlcXVpcmVtZW50cy5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgdmFsaWRhdGVzIHdoZXRoZXIgYSBmZWF0dXJlIChpZGVudGlmaWVkIGJ5IGl0cyBJRCkgY2FuIGJlIGVuYWJsZWQgYmFzZWQgb246XG4gICAqIDEuIFdoZXRoZXIgaXQgaGFzIGFueSBkZWZpbmVkIHJlcXVpcmVtZW50cyBpbiB0aGUgZmVhdHVyZSByZXF1aXJlbWVudHMgY29uZmlndXJhdGlvblxuICAgKiAyLiBXaGV0aGVyIGFsbCBpdHMgcmVxdWlyZW1lbnRzIGFyZSBwcmVzZW50IGFuZCBlbmFibGVkIGluIHRoZSBmZWF0dXJlIGF2YWlsYWJpbGl0eSBsaXN0XG4gICAqXG4gICAqIEBwYXJhbSBmZXQgLSBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgZmVhdHVyZSBJRCB0byBjaGVja1xuICAgKiBAcGFyYW0gZmV0LmlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBmZWF0dXJlIChtYXkgaW5jbHVkZSAnLmV4dGVuc2lvbicgc3VmZml4KVxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGZlYXR1cmUgaGFzIG5vIHJlcXVpcmVtZW50cyBvciBhbGwgcmVxdWlyZW1lbnRzIGFyZSBlbmFibGVkOyBgZmFsc2VgIG90aGVyd2lzZVxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiAtIFRoZSBtZXRob2QgbWF0Y2hlcyBmZWF0dXJlIElEcyBleGFjdGx5IG9yIHdpdGggYW4gb3B0aW9uYWwgJy5leHRlbnNpb24nIHN1ZmZpeFxuICAgKiAtIFJlcXVpcmVtZW50IG5hbWVzIGVuZGluZyB3aXRoICcrJyBoYXZlIHRoZSBzdWZmaXggcmVtb3ZlZCBiZWZvcmUgdmFsaWRhdGlvblxuICAgKiAtIElmIG5vIG1hdGNoaW5nIHJlcXVpcmVtZW50cyBhcmUgZm91bmQsIHRoZSBmZWF0dXJlIGlzIGNvbnNpZGVyZWQgdmFsaWQgKHJldHVybnMgYHRydWVgKVxuICAgKiAtIEFsbCByZXF1aXJlbWVudHMgbXVzdCBoYXZlIGEgc3RhdGUgb2YgJ2VuYWJsZWQnIGZvciB0aGUgZmVhdHVyZSB0byBwYXNzIHZhbGlkYXRpb25cbiAgICovXG4gICNtYXRjaGVzUmVxdWlyZW1lbnRzKGZlYXQ6IHsgaWQ6IHN0cmluZyB9KTogYm9vbGVhbiB7XG4gICAgY29uc3QgZmVhdHVyZVJlcXVpcmVtZW50cyA9IHRoaXMuI2ZlYXR1cmVSZXF1aXJlbWVudHM7XG4gICAgY29uc3QgZmVhdHVyZUF2YWlsYWJpbGl0eSA9IHRoaXMuI2ZlYXR1cmVNYW5hZ2VtZW50O1xuICAgIGlmICghZmVhdHVyZVJlcXVpcmVtZW50cykgcmV0dXJuIHRydWU7XG4gICAgLy8gQ2hlY2sgaWYgZmV0LmlkIG1hdGNoZXMgZXhhY3RseSAna2V5JyBvciAna2V5LmV4dGVuc2lvbidcbiAgICBjb25zdCBtYXRjaGluZ0tleSA9IE9iamVjdC5rZXlzKGZlYXR1cmVSZXF1aXJlbWVudHMpLmZpbmQoKGtleSkgPT5cbiAgICAgIG5ldyBSZWdFeHAoYF4ke2tleX0oXFxcXC5leHRlbnNpb24pPyRgKS50ZXN0KGZlYXQuaWQpXG4gICAgKTtcblxuICAgIC8vIElmIG5vIG1hdGNoaW5nIGtleSwgcmV0dXJuIHRydWVcbiAgICBpZiAoIW1hdGNoaW5nS2V5KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBHZXQgdGhlIHJlcXVpcmVtZW50cyBmb3IgdGhlIG1hdGNoaW5nIGtleVxuICAgIGNvbnN0IHJlcXVpcmVtZW50cyA9IGZlYXR1cmVSZXF1aXJlbWVudHNbbWF0Y2hpbmdLZXldO1xuXG4gICAgLy8gQ2hlY2sgaWYgYWxsIHJlcXVpcmVtZW50cyBhcmUgaW4gYXZ2IHdpdGggc3RhdGUgJ2VuYWJsZWQnXG4gICAgcmV0dXJuIHJlcXVpcmVtZW50cy5ldmVyeSgocmVxTmFtZSkgPT4ge1xuICAgICAgLy8gUmVtb3ZlIHRoZSAnKycgc3VmZml4IGlmIHByZXNlbnRcbiAgICAgIGNvbnN0IGNsZWFuUmVxTmFtZSA9IHJlcU5hbWUucmVwbGFjZSgvXFwrJC8sICcnKTtcbiAgICAgIC8vIEZpbmQgdGhlIHJlcXVpcmVtZW50IGluIGF2diBhbmQgY2hlY2sgaWYgaXQncyBlbmFibGVkXG4gICAgICBjb25zdCBmb3VuZCA9IGZlYXR1cmVBdmFpbGFiaWxpdHkuZmluZCgoaXRlbSkgPT4gaXRlbS5uYW1lID09PSBjbGVhblJlcU5hbWUpO1xuICAgICAgcmV0dXJuIGZvdW5kICYmIGZvdW5kLnN0YXRlID09PSAnZW5hYmxlZCc7XG4gICAgfSk7XG4gIH1cblxuICBoYXNGZWF0dXJlQ29uZmlnKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuI2ZlYXR1cmVPYmplY3RJZDtcbiAgfVxuXG4gIGdldEZlYXR1cmVzKCk6IENsaWVudFNoZWxsRmVhdHVyZVtdIHtcbiAgICByZXR1cm4gdGhpcy4jZmVhdHVyZXM7XG4gIH1cblxuICBnZXRBdmFpbGFibGVBcHBzKGFsbEFwcHM6IEFwcFtdKTogQXBwW10ge1xuICAgIHJldHVybiBhbGxBcHBzLmZpbHRlcihcbiAgICAgIChhcHApID0+IHRoaXMuI21hdGNoZXNSZXF1aXJlbWVudHMoYXBwKSAmJiB0aGlzLmNhblVzZUFwcChhcHApICYmIHRoaXMuY2FuVXNlRmVhdHVyZUJ5SWQoYXBwLmlkKVxuICAgICk7XG4gIH1cblxuICBjYW5Vc2VBcHAoYXBwOiBBcHApIHtcbiAgICBjb25zdCBhdXRob3JpdGllcyA9IHRoaXMuI3VzZXJUb2tlbj8uYXV0aG9yaXRpZXMgfHwgW107XG4gICAgY29uc3QgYWxsb3dlZCA9IGFwcC5wZXJtaXNzaW9ucz8uYWxsb3cgfHwgW107XG4gICAgY29uc3QgZGVuaWVkID0gYXBwLnBlcm1pc3Npb25zPy5kZW55IHx8IFtdO1xuXG4gICAgY29uc3QgaXNBbGxvd2VkID0gYWxsb3dlZC5sZW5ndGggPT09IDAgfHwgYXV0aG9yaXRpZXMuc29tZSgoYXV0aG9yaXR5KSA9PiBhbGxvd2VkLmluY2x1ZGVzKGF1dGhvcml0eSkpO1xuICAgIGNvbnN0IGlzRGVuaWVkID0gZGVuaWVkLnNvbWUoKGRlbmllZEF1dGhvcml0eSkgPT4gYXV0aG9yaXRpZXMuaW5jbHVkZXMoZGVuaWVkQXV0aG9yaXR5KSk7XG5cbiAgICByZXR1cm4gaXNBbGxvd2VkICYmICFpc0RlbmllZDtcbiAgfVxuXG4gIGNhbk1hdGNoUmVxdWlyZW1lbnRzKGFwcDogeyBpZDogc3RyaW5nIH0pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jbWF0Y2hlc1JlcXVpcmVtZW50cyh7IGlkOiBhcHAuaWQgfSk7XG4gIH1cblxuICBjYW5Vc2VGZWF0dXJlQnlJZChmZWF0dXJlSWQ6IHN0cmluZywgYXV0aG9yaXRpZXM/OiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIC8vIGNoZWNrIHJlcXVpcmVtZW50XG4gICAgaWYgKCF0aGlzLiNtYXRjaGVzUmVxdWlyZW1lbnRzKHsgaWQ6IGZlYXR1cmVJZCB9KSkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIGNoZWNrIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgYmFja2VuZCAoaXRlbSBmaWxlZCBpbiBzaGVsbCBjb25maWcpXG4gICAgY29uc3QgZmVhdHVyZSA9IHRoaXMuI2ZlYXR1cmVzLmZpbmQoKGYpID0+IGYuaWQgPT09IGZlYXR1cmVJZCk7XG4gICAgcmV0dXJuICFmZWF0dXJlIHx8IHRoaXMuY2FuVXNlRmVhdHVyZShmZWF0dXJlLCBhdXRob3JpdGllcyk7XG4gIH1cblxuICBjYW5Vc2VGZWF0dXJlKGZlYXR1cmU6IENsaWVudFNoZWxsRmVhdHVyZSwgYXV0aG9yaXRpZXM/OiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGF1dGhvcml0aWVzVG9DaGVjayA9IGF1dGhvcml0aWVzIHx8IHRoaXMuI3VzZXJUb2tlbj8uYXV0aG9yaXRpZXMgfHwgW107XG4gICAgY29uc3QgYWxsb3dlZCA9IGZlYXR1cmUuYWxsb3dlZCB8fCBbXTtcbiAgICBjb25zdCBkZW5pZWQgPSBmZWF0dXJlLmRlbmllZCB8fCBbXTtcblxuICAgIGNvbnN0IGlzQWxsb3dlZCA9IGFsbG93ZWQubGVuZ3RoID09PSAwIHx8IGF1dGhvcml0aWVzVG9DaGVjay5zb21lKChhdXRob3JpdHkpID0+IGFsbG93ZWQuaW5jbHVkZXMoYXV0aG9yaXR5KSk7XG4gICAgY29uc3QgaXNEZW5pZWQgPSBkZW5pZWQuc29tZSgoZGVuaWVkQXV0aG9yaXR5KSA9PiBhdXRob3JpdGllc1RvQ2hlY2suaW5jbHVkZXMoZGVuaWVkQXV0aG9yaXR5KSk7XG5cbiAgICByZXR1cm4gaXNBbGxvd2VkICYmICFpc0RlbmllZDtcbiAgfVxuXG4gIHNhdmVGZWF0dXJlU2V0dGluZ3MoZmVhdHVyZXM6IENsaWVudFNoZWxsRmVhdHVyZVtdKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAoIXRoaXMuI2ZlYXR1cmVPYmplY3RJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBmZWF0dXJlIGNvbmZpZ3VyYXRpb24gb2JqZWN0IElEIHByb3ZpZGVkJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLiNzaGVsbENvbmZpZy51cGRhdGUodGhpcy4jZmVhdHVyZU9iamVjdElkLCBmZWF0dXJlcykucGlwZSh0YXAoKCkgPT4gKHRoaXMuI2ZlYXR1cmVzID0gZmVhdHVyZXMpKSk7XG4gIH1cblxuICBkZWxldGVGZWF0dXJlU2V0dGluZ3MoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAoIXRoaXMuI2ZlYXR1cmVPYmplY3RJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBmZWF0dXJlIGNvbmZpZ3VyYXRpb24gb2JqZWN0IElEIHByb3ZpZGVkJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLiNzaGVsbENvbmZpZy5kZWxldGUodGhpcy4jZmVhdHVyZU9iamVjdElkKTtcbiAgfVxuXG4gIGNyZWF0ZVNldHRpbmdzT2JqZWN0KCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuI3NoZWxsQ29uZmlnLmNyZWF0ZShTSEVMTF9DT05GSUdfRkVBVFVSRVMsIFtdKS5waXBlKFxuICAgICAgdGFwKChyZXMpID0+IHtcbiAgICAgICAgdGhpcy4jZmVhdHVyZU9iamVjdElkID0gcmVzLmlkO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZXhwb3J0KCkge1xuICAgIGlmICh0aGlzLiNmZWF0dXJlT2JqZWN0SWQpIHtcbiAgICAgIHRoaXMuI3NoZWxsQ29uZmlnLmRvd25sb2FkKHRoaXMuI2ZlYXR1cmVPYmplY3RJZCwgYCR7U0hFTExfQ09ORklHX0ZFQVRVUkVTfS5qc29uYCk7XG4gICAgfVxuICB9XG5cbiAgaW1wb3J0KCkge1xuICAgIC8vIHJlYWQgZmlsZXMgY29udGVudHNcblxuICAgIHJldHVybiB0aGlzLiNmZWF0dXJlT2JqZWN0SWRcbiAgICAgID8gdGhpcy4jc2hlbGwucGlja0ZpbGUoKS5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcCgoZmlsZSkgPT5cbiAgICAgICAgICAgIGZpbGVcbiAgICAgICAgICAgICAgPyB0aGlzLiNzaGVsbENvbmZpZy51cGxvYWQodGhpcy4jZmVhdHVyZU9iamVjdElkISwgZmlsZSkucGlwZShcbiAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHJlYWQgdXBsb2FkZWQgZmlsZVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jYmFja2VuZC5nZXQoYC9kbXMvb2JqZWN0cy8ke3Jlcy5pZH0vY29udGVudHMvZmlsZWApLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgdGFwKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGUgZmVhdHVyZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ2RhdGEnLCBkYXRhKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4jZmVhdHVyZXMgPSBkYXRhO1xuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBvZihudWxsKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgOiBvZihudWxsKTtcbiAgfVxufVxuIl19
|
|
@@ -336,7 +336,8 @@ export class ShellService {
|
|
|
336
336
|
(!of.applicableTo?.folders || (of.applicableTo?.folders && of.applicableTo?.documents)) &&
|
|
337
337
|
(!of.applicableTo ||
|
|
338
338
|
!of.applicableTo?.mimeTypes ||
|
|
339
|
-
(of.applicableTo?.mimeTypes?.some((mtp) => Utils.patternToRegExp(mtp).test(mimeType)) &&
|
|
339
|
+
(of.applicableTo?.mimeTypes?.some((mtp) => Utils.patternToRegExp(mtp).test(mimeType)) &&
|
|
340
|
+
(!app || of.app === app))));
|
|
340
341
|
}
|
|
341
342
|
getApplicableFolderFlavors(app, customFlavors) {
|
|
342
343
|
return [...(customFlavors || []), ...this._objectFlavors].filter((of) => !of.preventApply && of.applicableTo?.folders && (!app || of.app === app));
|
|
@@ -356,7 +357,8 @@ export class ShellService {
|
|
|
356
357
|
flavor = {
|
|
357
358
|
...flavor,
|
|
358
359
|
name: this.#system.getLocalizedLabel(flavor.id) || this.translate.instant(flavor.id),
|
|
359
|
-
description: this.#system.getLocalizedDescription(flavor.id) ||
|
|
360
|
+
description: this.#system.getLocalizedDescription(flavor.id) ||
|
|
361
|
+
(flavor.descriptionKey ? this.translate.instant(flavor.descriptionKey) : undefined)
|
|
360
362
|
};
|
|
361
363
|
if (sots.includes(flavor.sot)) {
|
|
362
364
|
applied.push(flavor);
|
|
@@ -371,7 +373,8 @@ export class ShellService {
|
|
|
371
373
|
flavor = {
|
|
372
374
|
...flavor,
|
|
373
375
|
name: this.#system.getLocalizedLabel(flavor.id) || this.translate.instant(flavor.id),
|
|
374
|
-
description: this.#system.getLocalizedDescription(flavor.id) ||
|
|
376
|
+
description: this.#system.getLocalizedDescription(flavor.id) ||
|
|
377
|
+
(flavor.descriptionKey ? this.translate.instant(flavor.descriptionKey) : undefined)
|
|
375
378
|
};
|
|
376
379
|
if (sots.includes(flavor.sot)) {
|
|
377
380
|
applied.push(flavor);
|
|
@@ -450,4 +453,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
|
|
|
450
453
|
providedIn: 'root'
|
|
451
454
|
}]
|
|
452
455
|
}], ctorParameters: () => [] });
|
|
453
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1zaGVsbC1jb3JlL3NyYy9saWIvc2VydmljZXMvc2hlbGwvc2hlbGwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFjLGFBQWEsRUFBRSxNQUFNLEVBQTRCLE1BQU0saUJBQWlCLENBQUM7QUFDOUcsT0FBTyxFQUNMLE9BQU8sRUFDUCxtQkFBbUIsRUFDbkIsYUFBYSxFQUViLFVBQVUsRUFFVixhQUFhLEVBQ2IsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsS0FBSyxFQUVOLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR2hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXhFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOztBQUsxRSxNQUFNLE9BQU8sWUFBWTtJQUN2QixXQUFX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YXIvY29tbW9uJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgc2lnbmFsLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRJY29uUmVnaXN0cnkgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb24sIE5hdmlnYXRpb25FbmQsIFJvdXRlciwgVXJsU2VnbWVudEdyb3VwLCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEFwaUJhc2UsXG4gIEJhc2VPYmplY3RUeXBlRmllbGQsXG4gIENvbmZpZ1NlcnZpY2UsXG4gIERtc09iamVjdCxcbiAgRG1zU2VydmljZSxcbiAgT2JqZWN0Q3JlYXRlRmxhdm9yLFxuICBTeXN0ZW1TZXJ2aWNlLFxuICBTeXN0ZW1UeXBlLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxuICBVc2VyU2VydmljZSxcbiAgVXRpbHMsXG4gIFl1dlVzZXJcbn0gZnJvbSAnQHl1dXZpcy9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBmaXJzdCwgZmlyc3RWYWx1ZUZyb20sIGZyb21FdmVudCwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDTElFTlRfU0hFTExfQVNTRVRTIH0gZnJvbSAnLi4vLi4vY2xpZW50LXNoZWxsLmFzc2V0cyc7XG5pbXBvcnQgeyBBcHAsIEFwcEZsYXZvciwgQ2xpZW50U2hlbGxDb25maWcsIEdsb2JhbFNob3J0Y3V0LCBPYmplY3RGbGF2b3IsIFNoZWxsQXBwU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2xpZW50LXNoZWxsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUaWxlRXh0ZW5zaW9uIH0gZnJvbSAnLi4vLi4vdGlsZS1leHRlbnNpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFNIRUxMX0NPTkZJR19UWVBFUyB9IGZyb20gJy4uL3NoZWxsLWNvbmZpZy9zaGVsbC1jb25maWcuY29uc3QnO1xuaW1wb3J0IHsgQ2xpZW50U2hlbGxUeXBlLCBTaGVsbENvbmZpZyB9IGZyb20gJy4uL3NoZWxsLWNvbmZpZy9zaGVsbC1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNoZWxsQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL3NoZWxsLWNvbmZpZy9zaGVsbC1jb25maWcuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFNoZWxsU2VydmljZSB7XG4gICNkbXNTZXJ2aWNlID0gaW5qZWN0KERtc1NlcnZpY2UpO1xuXG4gICNkaWFsb2cgPSBpbmplY3QoTWF0RGlhbG9nKTtcbiAgI3N5c3RlbSA9IGluamVjdChTeXN0ZW1TZXJ2aWNlKTtcbiAgI3VzZXJTZXJ2aWNlID0gaW5qZWN0KFVzZXJTZXJ2aWNlKTtcbiAgLy8gVE9ETzogTmVlZCBvcmlnbmFsIE1hdEljb25SZWdpc3RyeSB0byAjcmVnaXN0ZXJPYmplY3RUeXBlSWNvbnMsIG90aGVyd2lzZSBpY29ucyBjb3VsZCBub3QgYmUgcmVnaXN0ZXJlZCBpbiB0aGUgbmFtZXNwYWNlXG4gIC8vICNpY29uUmVnaXN0cnkgPSBpbmplY3QoWXV2TWF0SWNvblJlZ2lzdHJ5KTtcbiAgI2ljb25SZWdpc3RyeSA9IGluamVjdChNYXRJY29uUmVnaXN0cnkpO1xuICAjc2hlbGxDb25maWcgPSBpbmplY3QoU2hlbGxDb25maWdTZXJ2aWNlKTtcbiAgI2NvbmZpZ1NlcnZpY2UgPSBpbmplY3QoQ29uZmlnU2VydmljZSk7XG4gICNzYW5pdGl6ZXIgPSBpbmplY3QoRG9tU2FuaXRpemVyKTtcbiAgI3JvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAjcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICAjRE9DVU1FTlQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBwcml2YXRlIHRyYW5zbGF0ZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcblxuICBwcml2YXRlIF9idXN5Q291bnQgPSAwO1xuICBwcml2YXRlIGlzQnVzeVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgaXNCdXN5JCA9IHRoaXMuaXNCdXN5U3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKGRlYm91bmNlVGltZSg1MDApKTtcblxuICAvLyBBcHBzIGNhbiByZWdpc3RlciB0aGVpciBvd24gc2V0dGluZyBjb21wb25lbnRzIHRvIGJlIHNob3duIGluIHNoZWxsIHNldHRpbmdzXG4gICNhcHBTZXR0aW5ncyA9IHNpZ25hbDxTaGVsbEFwcFNldHRpbmdzW10+KFtdKTtcbiAgYXBwU2V0dGluZ3MgPSB0aGlzLiNhcHBTZXR0aW5ncy5hc1JlYWRvbmx5KCk7XG5cbiAgYXBwQmFzZVJvdXRlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gICNkZWZhdWx0U2hlbGxDb25maWc6IENsaWVudFNoZWxsQ29uZmlnID0ge1xuICAgIGFwcEljb246IENMSUVOVF9TSEVMTF9BU1NFVFMuYXBwSWNvbixcbiAgICBzaGVsbEljb25OYW1lc3BhY2U6IENMSUVOVF9TSEVMTF9BU1NFVFMuc2hlbGxJY29uTmFtZXNwYWNlXG4gIH07XG4gIHNoZWxsQ29uZmlnID0gc2lnbmFsPENsaWVudFNoZWxsQ29uZmlnPih0aGlzLiNkZWZhdWx0U2hlbGxDb25maWcpO1xuICBhcHBzID0gc2lnbmFsPEFwcFtdPihbXSk7XG5cbiAgLyoqIFRPRE86IGltcGxlbWVudCB0aGlzIGZlYXR1cmUgPz8/P1xuICAgKiBHbG9iYWwgc2hvcnRjdXRzIGFyZSBjYXB0dXJlZCBieSB0aGUgc2hlbGwgdG8gcHJvdmlkZSBhIGNvbnNpc3RlbnQgZXhwZXJpZW5jZVxuICAgKiBhY2Nyb3NzIGFsbCBhcHBzLiBTZWFyY2ggaXMgb25lIGV4YW1wbGUuIEFwcHMgc2hvdWxkIG5vdCBkZWZpbmUgdGhlaXIgb3duIHNob3VydGN1dHNcbiAgICogZm9yIHNlYXJjaC4gSW5zdGVhZCB0aGV5IHNob3VsZCBzdWJzY3JpYmUgdG8gdGhlIGdsb2JhbCBzaG9ydGN1dHMgYW5kIGluaXRpYWxpemUgdGhlaXJcbiAgICogc2VhcmNoIGJhc2VkIG9uIHRoZSBnbG9iYWwgc2VhcmNoIHNob3J0Y3V0LlxuICAgKi9cbiAgZ2xvYmFsU2hvcnRjdXRzJDogT2JzZXJ2YWJsZTxHbG9iYWxTaG9ydGN1dD4gPSBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4oZG9jdW1lbnQsICdrZXlkb3duJykucGlwZShcbiAgICBtYXAoKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIC8vIGdsb2JhbCBzaG9ydGN1dCBmb3Igc2VhcmNoXG4gICAgICAvLyBpZiAoZS5jdHJsS2V5ICYmIGUuY29kZSA9PT0gJ0tleUYnKSB7XG4gICAgICAvLyAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIC8vICAgcmV0dXJuIEdsb2JhbFNob3J0Y3V0LnNlYXJjaDtcbiAgICAgIC8vIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSksXG4gICAgZmlsdGVyKChzOiBHbG9iYWxTaG9ydGN1dCB8IHVuZGVmaW5lZCkgPT4gcyAhPT0gdW5kZWZpbmVkKSxcbiAgICBtYXAoKHMpID0+IHMgYXMgR2xvYmFsU2hvcnRjdXQpXG4gICk7XG5cbiAgcHJpdmF0ZSBfZXh0ZW5zaW9uczogUmVjb3JkPHN0cmluZywgVGlsZUV4dGVuc2lvbj4gPSB7fTtcbiAgcHJpdmF0ZSBfb2JqZWN0Rmxhdm9yczogT2JqZWN0Rmxhdm9yW10gPSBbXTtcbiAgcHJpdmF0ZSBfb2JqZWN0Q3JlYXRlRmxhdm9yczogT2JqZWN0Q3JlYXRlRmxhdm9yW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnRyYW5zbGF0ZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuYXBwcy5zZXQodGhpcy4jZ2V0TWFwcGVkQXBwcyh0aGlzLmFwcHMoKSkpO1xuICAgIH0pO1xuXG4gICAgLy8gdHJhY2sgb3BlbiBkaWFsb2dzIGluIGFuIGF1eGlsbGFyeSByb3V0ZSB0byBzdXBwb3J0IGNsb3NpbmcgdGhlbSBvbiBiYWNrIG5hdmlnYXRpb25cbiAgICAvLyBhcyB0aGlzIGlzIHRoZSBleHBlY3RlZCBiZWhhdmlvdXIgb24gbW9iaWxlIGRldmljZXNcbiAgICB0aGlzLiNkaWFsb2cuYWZ0ZXJPcGVuZWQuc3Vic2NyaWJlKChyZWY6IE1hdERpYWxvZ1JlZjxhbnksIGFueT4pID0+IHtcbiAgICAgIHRoaXMuI3JvdXRlci5uYXZpZ2F0ZShbeyBvdXRsZXRzOiB7IGR0OiBbJ2RpYWxvZ3MnLCB0aGlzLiNkaWFsb2cub3BlbkRpYWxvZ3MubWFwKChkLCBpKSA9PiBpKS5qb2luKCctJyldIH0gfV0sIHtcbiAgICAgICAgLy8gcmVwbGFjZVVybDogdHJ1ZSxcbiAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ3ByZXNlcnZlJ1xuICAgICAgfSk7XG4gICAgICByZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICBpZiAocmVzPy5jbG9zZWRCeVJvdXRlKSByZXR1cm47XG4gICAgICAgIGNvbnN0IG9wZW5EaWFsb2dzID0gdGhpcy4jZGlhbG9nLm9wZW5EaWFsb2dzLmZpbHRlcigoZCkgPT4gZC5pZCAhPT0gcmVmLmlkKTtcbiAgICAgICAgLy8gaGF2aW5nIG5vIG9wZW4gZGlhbG9ncywgY2xlYXIgdGhlIGF1eGlsbGFyeSByb3V0ZVxuICAgICAgICBjb25zdCBwYXJhbSA9IG9wZW5EaWFsb2dzLmxlbmd0aCA+IDAgPyBbJ2RpYWxvZ3MnLCBvcGVuRGlhbG9ncy5tYXAoKGQsIGkpID0+IGkpLmpvaW4oJy0nKV0gOiBudWxsO1xuICAgICAgICB0aGlzLiNyb3V0ZXIubmF2aWdhdGUoW3sgb3V0bGV0czogeyBkdDogcGFyYW0gfSB9XSwgeyByZXBsYWNlVXJsOiB0cnVlLCBxdWVyeVBhcmFtc0hhbmRsaW5nOiAncHJlc2VydmUnIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdGhpcy4jcm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcigoZSkgPT4gZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgIC8vIHdoZW4gbmF2aWdhdGluZyBhbmQgaGF2aW5nIG5vIG9wZW4gZGlhbG9ncywgY2xlYXIgdGhlIGF1eGlsbGFyeSByb3V0ZSBmcm9tIHRoZSB1cmxcbiAgICAgIGlmICh0aGlzLiNkaWFsb2cub3BlbkRpYWxvZ3MubGVuZ3RoID09PSAwICYmIGUudXJsQWZ0ZXJSZWRpcmVjdHMubWF0Y2goLyhkdDpbLl0qKS8pKSB7XG4gICAgICAgIHRoaXMuI3JvdXRlci5uYXZpZ2F0ZShbeyBvdXRsZXRzOiB7IGR0OiBudWxsIH0gfV0sIHsgcmVwbGFjZVVybDogdHJ1ZSwgcXVlcnlQYXJhbXNIYW5kbGluZzogJ3ByZXNlcnZlJyB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gaWYgdGhlcmUgYXJlIG9wZW4gZGlhbG9ncyBhbmQgdGhlIHByaW1hcnkgcm91dGUgY2hhbmdlZCwgY2xvc2UgYWxsIG9wZW4gZGlhbG9nc1xuICAgICAgaWYgKHRoaXMuI2RpYWxvZy5vcGVuRGlhbG9ncy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmICh0aGlzLnByaW1hcnlSb3V0ZUNoYW5nZWQodGhpcy4jcm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCkpKSB7XG4gICAgICAgICAgdGhpcy4jZGlhbG9nLm9wZW5EaWFsb2dzLmZvckVhY2goKGQpID0+IGQuY2xvc2UoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gICNnZXRQcmltYXJ5Um91dGUobmF2OiBOYXZpZ2F0aW9uIHwgbnVsbCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFuYXYpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3QgdXJsOiBVcmxUcmVlID0gbmF2LmZpbmFsVXJsIHx8IG5hdi5leHRyYWN0ZWRVcmw7XG4gICAgY29uc3QgdXJsVHJlZUNoaWxkcmVuOiBVcmxTZWdtZW50R3JvdXAgfCB1bmRlZmluZWQgPSB1cmwucm9vdC5jaGlsZHJlblsncHJpbWFyeSddO1xuICAgIHJldHVybiB1cmxUcmVlQ2hpbGRyZW4gPyB1cmxUcmVlQ2hpbGRyZW4uc2VnbWVudHMubWFwKChzKSA9PiBzLnBhdGgpLmpvaW4oJy8nKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaW1hcnlSb3V0ZUNoYW5nZWQobmF2OiBOYXZpZ2F0aW9uIHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHByZXZpb3VzTmF2ID0gbmF2Py5wcmV2aW91c05hdmlnYXRpb24gfHwgbnVsbDtcbiAgICByZXR1cm4gdGhpcy4jZ2V0UHJpbWFyeVJvdXRlKG5hdikgIT09IHRoaXMuI2dldFByaW1hcnlSb3V0ZShwcmV2aW91c05hdik7XG4gIH1cblxuICBwaWNrRmlsZSgpOiBPYnNlcnZhYmxlPEZpbGUgfCBudWxsPiB7XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLiNET0NVTUVOVC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgIGlucHV0LnR5cGUgPSAnZmlsZSc7XG4gICAgaW5wdXQuY2xpY2soKTtcbiAgICByZXR1cm4gZnJvbUV2ZW50KGlucHV0LCAnY2hhbmdlJykucGlwZShcbiAgICAgIG1hcCgoZTogRXZlbnQpID0+IChlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5maWxlcz8uWzBdIHx8IG51bGwpLFxuICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgaW5wdXQucmVtb3ZlKCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzZXRTaGVsbENvbmZpZyhjc2M6IENsaWVudFNoZWxsQ29uZmlnKSB7XG4gICAgdGhpcy5zaGVsbENvbmZpZy51cGRhdGUoKHNjKSA9PiAoe1xuICAgICAgYXBwSWNvbjogY3NjLmFwcEljb24gPz8gc2MuYXBwSWNvbixcbiAgICAgIHNoZWxsSWNvbk5hbWVzcGFjZTogY3NjLnNoZWxsSWNvbk5hbWVzcGFjZSA/PyBzYy5zaGVsbEljb25OYW1lc3BhY2VcbiAgICB9KSk7XG4gIH1cblxuICBzZXRBcHBzKGFwcHM6IEFwcFtdKSB7XG4gICAgdGhpcy5hcHBzLnNldCh0aGlzLiNnZXRNYXBwZWRBcHBzKGFwcHMpKTtcbiAgICBjb25zdCBhcHBCYXNlUm91dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgYXBwcy5mb3JFYWNoKChhKSA9PiAoYXBwQmFzZVJvdXRlc1thLmlkXSA9IGEucGF0aCB8fCAnJykpO1xuICAgIHRoaXMuYXBwQmFzZVJvdXRlcyA9IGFwcEJhc2VSb3V0ZXM7XG4gIH1cblxuICAjZ2V0TWFwcGVkQXBwcyhhcHBzOiBBcHBbXSk6IEFwcFtdIHtcbiAgICByZXR1cm4gYXBwcy5tYXAoKGEpID0+IHtcbiAgICAgIGNvbnN0IG1hID0ge1xuICAgICAgICAuLi5hLFxuICAgICAgICB0aXRsZTogdGhpcy4jZ2V0QXBwVGl0bGUoYSlcbiAgICAgIH07XG4gICAgICBpZiAoYS5vcHRpb25zPy5hcHBDbGFpbUtleSkge1xuICAgICAgICBtYS5vcHRpb25zID0geyAuLi5tYS5vcHRpb25zLCBhcHBDbGFpbTogdGhpcy4jZ2V0QXBwQ2xhaW0oYS5vcHRpb25zLmFwcENsYWltS2V5KSB8fCBhLm9wdGlvbnMuYXBwQ2xhaW0gfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtYTtcbiAgICB9KTtcbiAgfVxuXG4gICNnZXRBcHBUaXRsZShhOiBBcHApOiBzdHJpbmcge1xuICAgIGNvbnN0IHRyYW5zbGF0ZWRUaXRsZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYS5pZCk7XG4gICAgcmV0dXJuIHRyYW5zbGF0ZWRUaXRsZSAmJiAhdHJhbnNsYXRlZFRpdGxlLnN0YXJ0c1dpdGgoJyFtaXNzaW5nJykgPyB0cmFuc2xhdGVkVGl0bGUgOiAoYS50aXRsZSBhcyBzdHJpbmcpIHx8ICcnO1xuICB9XG5cbiAgI2dldEFwcENsYWltKGNsYWltS2V5OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHRyYW5zbGF0ZWRDbGFpbSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoY2xhaW1LZXkpO1xuICAgIHJldHVybiB0cmFuc2xhdGVkQ2xhaW0gJiYgIXRyYW5zbGF0ZWRDbGFpbS5zdGFydHNXaXRoKCchbWlzc2luZycpID8gdHJhbnNsYXRlZENsYWltIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0QXBwKGlkOiBzdHJpbmcpOiBBcHAgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmFwcHMoKS5maW5kKChhKSA9PiBpZCA9PT0gYS5pZCk7XG4gIH1cblxuICBnZXRBcHBzKGlkczogc3RyaW5nW10gPSBbXSk6IEFwcFtdIHtcbiAgICByZXR1cm4gaWRzLmxlbmd0aCA/IHRoaXMuYXBwcygpLmZpbHRlcigoYSkgPT4gaWRzLmluY2x1ZGVzKGEuaWQpKSA6IHRoaXMuYXBwcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIHNldHRpbmdzIGZvciBhcHBzIHRvIGhvb2sgaW50byBzaGVsbCBzZXR0aW5ncyBwYWdlLlxuICAgKiBAcGFyYW0gYXBwSUQgSUQgb2YgdGhlIGFwcCB0aGF0IGV4cG9zZXMgdGhlIHNldHRpbmdzXG4gICAqIEBwYXJhbSBjZmcgU2hlbGxBcHBTZXR0aW5ncyBvYmplY3QgY29udGFpbmluZyB0aGUgc2V0dGluZ3MgY29tcG9uZW50XG4gICAqL1xuICByZWdpc3RlckFwcFNldHRpbmdzKGNmZzogU2hlbGxBcHBTZXR0aW5ncykge1xuICAgIHRoaXMuI2FwcFNldHRpbmdzLnNldChbLi4udGhpcy4jYXBwU2V0dGluZ3MoKSwgY2ZnXSk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBwZXJzaXN0ZWQgc2V0dGluZ3MgZm9yIGEgc3BlY2lmaWMgYXBwXG4gICAqIEBwYXJhbSBhcHBJRCBJRCBvZiB0aGUgYXBwIHRvIGxvYWQgdGhlIHNldHRpbmdzIGZvclxuICAgKi9cbiAgdXNlcnNBcHBTZXR0aW5ncyQoYXBwSUQ6IHN0cmluZyk6IE9ic2VydmFibGU8U2hlbGxBcHBTZXR0aW5ncyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLiN1c2VyU2VydmljZS51c2VyJC5waXBlKFxuICAgICAgbWFwKCh1OiBZdXZVc2VyIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgIHJldHVybiB1ICYmIHUudXNlclNldHRpbmdzLmNsaWVudEFwcFNldHRpbmdzID8gdS51c2VyU2V0dGluZ3MuY2xpZW50QXBwU2V0dGluZ3NbYXBwSURdIDogdW5kZWZpbmVkO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgc2F2ZVVzZXJzQXBwU2V0dGluZ3MoYXBwSUQ6IHN0cmluZywgc2V0dGluZ3M6IFNoZWxsQXBwU2V0dGluZ3MpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLiN1c2VyU2VydmljZS5zYXZlVXNlclNldHRpbmdzKHsgY2xpZW50QXBwU2V0dGluZ3M6IHsgW2FwcElEXTogc2V0dGluZ3MgfSB9KTtcbiAgfVxuXG4gIGFkZEJ1c3koKSB7XG4gICAgaWYgKHRoaXMuX2J1c3lDb3VudCA9PT0gMCkge1xuICAgICAgdGhpcy5pc0J1c3lTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgfVxuICAgIHRoaXMuX2J1c3lDb3VudCsrO1xuICB9XG4gIHJlbW92ZUJ1c3koKSB7XG4gICAgdGhpcy5fYnVzeUNvdW50LS07XG4gICAgaWYgKHRoaXMuX2J1c3lDb3VudCA9PT0gMCkge1xuICAgICAgdGhpcy5pc0J1c3lTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBvc2VzIG9iamVjdCBjcmVhdGUgZmxhdm9ycyB0byB0aGUgc2hlbGwuXG4gICAqIFRoZXMgZmxhdm9ycyBkZXNjcmliZSBkaWZmZXJlbnQgd2F5cyBvZiBob3cgb2JqZWN0cyBjYW4gYmUgY3JlYXRlZC4gU28gYXBwc1xuICAgKiBjYW4gcmVnaXN0ZXIgY3VzdG9tIHdheXMgb2YgY3JlYXRpbmcgb2JqZWN0cyB0aGF0IGNhbiB0aGVuIGJlIHVzZWQgYnkgb3RoZXIgYXBwcy5cbiAgICogQHBhcmFtIGZsYXZvcnMgQ3JlYXRlIGZsYXZvcnMgdG8gYmUgZXhwb3NlZFxuICAgKi9cbiAgZXhwb3NlT2JqZWN0Q3JlYXRlRmxhdm9ycyhmbGF2b3JzOiBPYmplY3RDcmVhdGVGbGF2b3JbXSkge1xuICAgIGZsYXZvcnMuZm9yRWFjaCgoZmxhdm9yOiBPYmplY3RDcmVhdGVGbGF2b3IpID0+IHtcbiAgICAgIGNvbnN0IGlkeCA9IHRoaXMuX29iamVjdENyZWF0ZUZsYXZvcnMuZmluZEluZGV4KChmKSA9PiBmLmlkID09PSBmbGF2b3IuaWQpO1xuICAgICAgaWYgKGlkeCA9PT0gLTEpIHRoaXMuX29iamVjdENyZWF0ZUZsYXZvcnMucHVzaChmbGF2b3IpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBvYmplY3QgY3JlYXRlIGZsYXZvcnMgZnJvbSB0aGUgc2hlbGxzIHJlZ2lzdHJ5XG4gICAqIEBwYXJhbSBmbGF2b3JzIENyZWF0ZSBmbGF2b3JzIHRvIGJlIHJlbW92ZWRcbiAgICovXG4gIGNvbmNlYWxPYmplY3RDcmVhdGVGbGF2b3JzKGZsYXZvcnM6IE9iamVjdENyZWF0ZUZsYXZvcltdKSB7XG4gICAgY29uc3QgZmlkID0gZmxhdm9ycy5tYXAoKGYpID0+IGYuaWQpO1xuICAgIHRoaXMuX29iamVjdENyZWF0ZUZsYXZvcnMgPSB0aGlzLl9vYmplY3RDcmVhdGVGbGF2b3JzLmZpbHRlcigoZikgPT4gIWZpZC5pbmNsdWRlcyhmLmlkKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCByZWdpc3RlcmQgb2JqZWN0IGNyZWF0ZSBmbGF2b3JzXG4gICAqL1xuICBnZXRPYmplY3RDcmVhdGVGbGF2b3JzKCk6IE9iamVjdENyZWF0ZUZsYXZvcltdIHtcbiAgICByZXR1cm4gdGhpcy5fb2JqZWN0Q3JlYXRlRmxhdm9ycztcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBvc2VzIGEgbGlzdCBvZiBvYmplY3QgZmxhdm9ycyB0byB0aGUgc2hlbGwuXG4gICAqIEZsYXZvcnMgYXJlIGFibGUgdG8gYmUgYXBwbGllZCB0byBvYmplY3RzIGFuZCBhZGQgbmV3IG1ldGFkYXRhIHByb3BlcnRpZXMgdG8gdGhlbS5cbiAgICogQHBhcmFtIGZsYXZvcnMgQXJyYXkgb2YgZmxhdm9ycyB0byBiZSBleHBvc2VkXG4gICAqIEBwYXJhbSBhcHAgT3B0aW9uYWwgSUQgb2YgdGhlIGFwcCB0aGF0IGV4cG9zZXMgdGhlIGZsYXZvcnMgKGRlZmF1bHRzIHRvICdnbG9iYWwnIGlmIG5vdCBwcm92aWRlZClcbiAgICogQHBhcmFtIG9yaWdpbiBPcHRpb25hbCBvcmlnaW4gb2YgdGhlIGZsYXZvcnMuIEZsYXZvcnMgY291bGQgYmUgYWRkZWQgYnkgYXBwcyBvciBkZXJpdmVkXG4gICAqIGZyb20gYSBjb25maWd1cmF0aW9uIChkZWZhdWx0cyB0byAnYXBwJyBpZiBub3QgcHJvdmlkZWQpXG4gICAqL1xuICBleHBvc2VPYmplY3RGbGF2b3JzKGZsYXZvcnM6IEFwcEZsYXZvcltdLCBhcHAgPSAnZ2xvYmFsJywgb3JpZ2luOiAnYXBwJyB8ICdjb25maWcnID0gJ2FwcCcpIHtcbiAgICBmbGF2b3JzLmZvckVhY2goKGYpID0+IHRoaXMuZXhwb3NlT2JqZWN0Rmxhdm9yKGYsIGFwcCwgb3JpZ2luKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBleHBvc2VkIG9iamVjdCBmbGF2b3JzIGZyb20gdGhlIHNoZWxsLlxuICAgKiBAcGFyYW0gZmxhdm9ycyBBcnJheSBvZiBmbGF2b3JzIHRvIGJlIGNvbmNlYWxlZFxuICAgKi9cbiAgY29uY2VhbE9iamVjdEZsYXZvcnMoZmxhdm9yczogQXBwRmxhdm9yW10sIGFwcCA9ICdnbG9iYWwnKSB7XG4gICAgZmxhdm9ycy5mb3JFYWNoKChmKSA9PiB0aGlzLmNvbmNlYWxPYmplY3RGbGF2b3IoZiwgYXBwKSk7XG4gIH1cblxuICAvKipcbiAgICogRXhwb3NlcyBhbiBvYmplY3QgZmxhdm9yIHRvIHRoZSBzaGVsbC4gRmxhdm9ycyBhcmUgYWJsZSB0byBiZSBhcHBsaWVkIHRvIG9iamVjdHNcbiAgICogaW4gb3JkZXIgdG8gYWRkIGEgbmV3IGFzcGVjdCB0byB0aGVtLiBBbiBvYmplY3QgY29udGFpbmluZyBhbiBpbWFnZSBmb3IgZXhhbXBsZSBjb3VsZFxuICAgKiBiZSBhZGRlZCBhIGZsYXZvciBvZiAnRVhJRiBEYXRhJyB0aGF0IHdpbGwgYWRkIHRoZSBjb3JyZXNwb25kaW5nIFNPVCB0byBpdC4gVGhpcyB3YXkgdGhlXG4gICAqIG9iamVjdCBnZXRzIG5ldyBtZXRhZGF0YSBwcm9wZXJ0aWVzLiBJZiBzdXBwb3J0ZWQsIHRoZXNlIG1ldGFkYXRhIGNvdWxkIGV2ZW4gYmUgZXh0cmFjdGVkXG4gICAqIGZyb20gdGhlIGZpbGUgYW5kIGZpbGxlZCBvdXQgYXV0b21hdGljYWxseS5cbiAgICogQHBhcmFtIGZsYXZvciBUaGUgZmxhdm9yIG9iamVjdCB0byBiZSBleHBvc2VkXG4gICAqIEBwYXJhbSBhcHAgT3B0aW9uYWwgSUQgb2YgdGhlIGFwcCB0aGF0IGV4cG9zZXMgdGhlIGZsYXZvciAoZGVmYXVsdHMgdG8gJ2dsb2JhbCcgaWYgbm90IHByb3ZpZGVkKVxuICAgKiBAcGFyYW0gb3JpZ2luIE9wdGlvbmFsIG9yaWdpbiBvZiB0aGUgZmxhdm9ycy4gRmxhdm9ycyBjb3VsZCBiZSBhZGRlZCBieSBhcHBzIG9yIGRlcml2ZWRcbiAgICogZnJvbSBhIGNvbmZpZ3VyYXRpb24gKGRlZmF1bHRzIHRvICdhcHAnIGlmIG5vdCBwcm92aWRlZClcbiAgICovXG4gIGV4cG9zZU9iamVjdEZsYXZvcihmbGF2b3I6IEFwcEZsYXZvciwgYXBwID0gJ2dsb2JhbCcsIG9yaWdpbjogJ2FwcCcgfCAnY29uZmlnJyA9ICdhcHAnKSB7XG4gICAgY29uc3QgaWR4ID0gdGhpcy5fb2JqZWN0Rmxhdm9ycy5maW5kSW5kZXgoKGYpID0+IGYuaWQgPT09IGZsYXZvci5pZCAmJiBmLmFwcCA9PT0gYXBwKTtcbiAgICBpZiAoaWR4ID09PSAtMSkgdGhpcy5fb2JqZWN0Rmxhdm9ycy5wdXNoKHsgLi4uZmxhdm9yLCBhcHAsIG9yaWdpbiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFuIGV4cG9zZWQgb2JqZWN0IGZsYXZvciBmcm9tIHRoZSBzaGVsbC5cbiAgICogQHBhcmFtIGZsYXZvciBGbGF2b3IgdG8gYmUgY29uY2VhbGVkXG4gICAqIEBwYXJhbSBhcHAgT3B0aW9uYWwgSUQgb2YgdGhlIGFwcCB0aGF0IGV4cG9zZXMgdGhlIGZsYXZvciAoZGVmYXVsdHMgdG8gJ2dsb2JhbCcgaWYgbm90IHByb3ZpZGVkKVxuICAgKi9cbiAgY29uY2VhbE9iamVjdEZsYXZvcihmbGF2b3I6IEFwcEZsYXZvciwgYXBwID0gJ2dsb2JhbCcpIHtcbiAgICB0aGlzLl9vYmplY3RGbGF2b3JzID0gdGhpcy5fb2JqZWN0Rmxhdm9ycy5maWx0ZXIoKGYpID0+IHtcbiAgICAgIGNvbnN0IGhhc1NhbWVJZCA9IGYuaWQgPT09IGZsYXZvci5pZDtcbiAgICAgIGNvbnN0IGlzRnJvbVNhbWVBcHAgPSBmLmFwcCA9PT0gYXBwO1xuICAgICAgcmV0dXJuIGhhc1NhbWVJZCAmJiBpc0Zyb21TYW1lQXBwID8gZmFsc2UgOiB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCByZWdpc3RlcmVkIG9iamVjdCBmbGF2b3JzXG4gICAqIEBwYXJhbSBhcHAgT3B0aW9uYWwgYXBwIElEIHRoYXQgcmVzdHJpY3RzIHRoZSByZXR1cm5lZCBmbGF2b3JzIHRvIHRoZSBvbmVzXG4gICAqIHByb3ZpZGVkIGJ5IGEgcGFydGljdWxhciBhcHAuIElmIG5vdCBwcm92aWRlZCBhbGwgZmxhdm9ycyBhcmUgcmV0dXJuZWRcbiAgICogQHJldHVybnMgQXJyYXkgb2YgbWF0Y2hpbmcgb2JqZWN0IGZsYXZvcnNcbiAgICovXG4gIGdldE9iamVjdEZsYXZvcnMoYXBwPzogc3RyaW5nKTogT2JqZWN0Rmxhdm9yW10ge1xuICAgIHJldHVybiBhcHAgPyB0aGlzLl9vYmplY3RGbGF2b3JzLmZpbHRlcigob2YpID0+IG9mLmFwcCA9PT0gYXBwKSA6IHRoaXMuX29iamVjdEZsYXZvcnM7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcnMgdGhlIGFwcGxpY2F0aW9uIG9mIGFuIG9iamVjdCBmbGF2b3IuIElmIHRoZSBmbGF2b3IgaGFzIGFuIGFwcGx5Q29tcG9uZW50XG4gICAqIGRlZmluZWQsIHRoZSBvdmVybGF5IHdpbGwgYmUgb3BlbmVkIHdpdGggdGhlIGNvbXBvbmVudC4gT3RoZXJ3aXNlIHRoZSBmbGF2b3Igd2lsbFxuICAgKiBiZSBhcHBsaWVkIGRpcmVjdGx5IHRvIHRoZSBvYmplY3QuXG4gICAqIEBwYXJhbSBkbXNPYmplY3QgVGhlIG9iamVjdCB0byBhcHBseSB0aGUgZmxhdm9yIHRvXG4gICAqIEBwYXJhbSBmbGF2b3IgVGhlIGZsYXZvciB0byBhcHBseVxuICAgKiBAcGFyYW0gZGF0YSBPcHRpb25hbCBkYXRhIHRvIGJlIHBhc3NlZCB0byB0aGUgZmxhdm9yIGNvbXBvbmVudFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgdHJ1ZSBpZiB0aGUgZmxhdm9yIHdhcyBhcHBsaWVkIHN1Y2Nlc3NmdWxseVxuICAgKi9cbiAgdHJpZ2dlckFwcGx5T2JqZWN0Rmxhdm9yKGRtc09iamVjdDogRG1zT2JqZWN0LCBmbGF2b3I6IE9iamVjdEZsYXZvciwgZGF0YT86IGFueSwgYXBwbHlDb21wb25lbnQ/OiBUeXBlPGFueT4pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBpZiAoZmxhdm9yLnByZXZlbnRBcHBseSkgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICBpZiAoZG1zT2JqZWN0KSB7XG4gICAgICBjb25zdCBhYyA9IGFwcGx5Q29tcG9uZW50IHx8IGZsYXZvci5hcHBseUNvbXBvbmVudDtcbiAgICAgIGlmIChhYykge1xuICAgICAgICB0aGlzLiNkaWFsb2cub3BlbihhYywge1xuICAgICAgICAgIG1heFdpZHRoOiAnOTB2dycsXG4gICAgICAgICAgbWF4SGVpZ2h0OiAnOTB2aCcsXG4gICAgICAgICAgbWluV2lkdGg6ICc1MHZ3JyxcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBkbXNPYmplY3QsXG4gICAgICAgICAgICBmbGF2b3IsXG4gICAgICAgICAgICBkYXRhXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc290czogc3RyaW5nW10gPSAoZG1zT2JqZWN0LmRhdGFbQmFzZU9iamVjdFR5cGVGaWVsZC5TRUNPTkRBUllfT0JKRUNUX1RZUEVfSURTXSBhcyBzdHJpbmdbXSkgfHwgW107XG4gICAgICAgIGNvbnN0IGRhdGE6IGFueSA9IHt9O1xuICAgICAgICBkYXRhW0Jhc2VPYmplY3RUeXBlRmllbGQuU0VDT05EQVJZX09CSkVDVF9UWVBFX0lEU10gPSBbLi4uc290cywgZmxhdm9yLnNvdF07XG4gICAgICAgIHJldHVybiB0aGlzLiNkbXNTZXJ2aWNlLnVwZGF0ZURtc09iamVjdChkbXNPYmplY3Q/LmlkLCBkYXRhKS5waXBlKG1hcCgoKSA9PiB0cnVlKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHJldHVybiBvZihmYWxzZSk7XG4gIH1cblxuICByZW1vdmVPYmplY3RGbGF2b3IoZG1zT2JqZWN0OiBEbXNPYmplY3QsIGZsYXZvcjogT2JqZWN0Rmxhdm9yKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAoZmxhdm9yLnByZXZlbnRSZW1vdmUpIHJldHVybiBvZihmYWxzZSk7XG4gICAgY29uc3QgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgICBbQmFzZU9iamVjdFR5cGVGaWVsZC5TRUNPTkRBUllfT0JKRUNUX1RZUEVfSURTXTogKGRtc09iamVjdC5kYXRhW0Jhc2VPYmplY3RUeXBlRmllbGQuU0VDT05EQVJZX09CSkVDVF9UWVBFX0lEU10gYXMgc3RyaW5nW10pLmZpbHRlcihcbiAgICAgICAgKHNvdDogc3RyaW5nKSA9PiBzb3QgIT09IGZsYXZvci5zb3RcbiAgICAgIClcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLiNkbXNTZXJ2aWNlLnVwZGF0ZURtc09iamVjdChkbXNPYmplY3QuaWQsIGRhdGEpLnBpcGUobWFwKCgpID0+IHRydWUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgb2JqZWN0IGZsYXZvcnMgYXBwbGljYWJsZSBmb3IgYSBjZXJ0YWluIG1pbWV0eXBlXG4gICAqIEBwYXJhbSBtaW1lVHlwZSBNaW1lIHR5cGUgb3IgbWltZSB0eXBlIHBhdHRlcm4gbGlrZSAnaW1hZ2UvKidcbiAgICogQHBhcmFtIGFwcCBPcHRpb25hbCBhcHAgSUQgdGhhdCByZXN0cmljdHMgdGhlIHJldHVybmVkIGZsYXZvcnMgdG8gdGhlIG9uZXNcbiAgICogcHJvdmlkZWQgYnkgYSBwYXJ0aWN1bGFyIGFwcFxuICAgKiBAcGFyYW0gY3VzdG9tRmxhdm9ycyBPcHRpb25hbCBhcnJheSBvZiBjdXN0b20gZmxhdm9ycyB0byBhbHNvIHRha2UgaW50byBhY2NvdW50LlxuICAgKiBUaGlzIGNvdWxkIGJlIGZsYXZvcnMgbWFuYWdlZCBieSBhbiBhcHAgaXRzZWxmIHRoYXQgYXJlIG5vdCBzdXBwb3NlZCB0byBiZVxuICAgKiBleHBvc2VkIHRvIG90aGVyIGFwcHNcbiAgICogQHJldHVybnMgQXJyYXkgb2YgbWF0Y2hpbmcgb2JqZWN0IGZsYXZvcnNcbiAgICovXG4gIGdldEFwcGxpY2FibGVEb2N1bWVudEZsYXZvcnMobWltZVR5cGU6IHN0cmluZywgYXBwPzogc3RyaW5nLCBjdXN0b21GbGF2b3JzPzogT2JqZWN0Rmxhdm9yW10pOiBPYmplY3RGbGF2b3JbXSB7XG4gICAgcmV0dXJuIFsuLi4oY3VzdG9tRmxhdm9ycyB8fCBbXSksIC4uLnRoaXMuX29iamVjdEZsYXZvcnNdLmZpbHRlcihcbiAgICAgIChvZjogT2JqZWN0Rmxhdm9yKSA9PlxuICAgICAgICAvLyAhb2YucHJldmVudEFwcGx5ICYmXG4gICAgICAgICghb2YuYXBwbGljYWJsZVRvPy5mb2xkZXJzIHx8IChvZi5hcHBsaWNhYmxlVG8/LmZvbGRlcnMgJiYgb2YuYXBwbGljYWJsZVRvPy5kb2N1bWVudHMpKSAmJlxuICAgICAgICAoIW9mLmFwcGxpY2FibGVUbyB8fFxuICAgICAgICAgICFvZi5hcHBsaWNhYmxlVG8/Lm1pbWVUeXBlcyB8fFxuICAgICAgICAgIChvZi5hcHBsaWNhYmxlVG8/Lm1pbWVUeXBlcz8uc29tZSgobXRwKSA9PiBVdGlscy5wYXR0ZXJuVG9SZWdFeHAobXRwKS50ZXN0KG1pbWVUeXBlKSkgJiYgKCFhcHAgfHwgb2YuYXBwID09PSBhcHApKSlcbiAgICApO1xuICB9XG5cbiAgZ2V0QXBwbGljYWJsZUZvbGRlckZsYXZvcnMoYXBwPzogc3RyaW5nLCBjdXN0b21GbGF2b3JzPzogT2JqZWN0Rmxhdm9yW10pOiBPYmplY3RGbGF2b3JbXSB7XG4gICAgcmV0dXJuIFsuLi4oY3VzdG9tRmxhdm9ycyB8fCBbXSksIC4uLnRoaXMuX29iamVjdEZsYXZvcnNdLmZpbHRlcihcbiAgICAgIChvZjogT2JqZWN0Rmxhdm9yKSA9PiAhb2YucHJldmVudEFwcGx5ICYmIG9mLmFwcGxpY2FibGVUbz8uZm9sZGVycyAmJiAoIWFwcCB8fCBvZi5hcHAgPT09IGFwcClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhcHBsaWVkIGFuZCBhcHBsaWNhYmxlIG9iamVjdCBmbGF2b3JzIGZvciBhIGNlcnRhaW4gb2JqZWN0XG4gICAqIEBwYXJhbSBkbXNPYmplY3QgRG1zT2JqZWN0IHRvIGdldCBmbGF2b3JzIGZvclxuICAgKiBAcmV0dXJucyBPYmplY3QgY29udGFpbmluZyB0d28gYXJyYXlzOiBhcHBsaWVkIGFuZCBhcHBsaWNhYmxlIGZsYXZvcnNcbiAgICovXG4gIGdldEFwcGxpZWRPYmplY3RGbGF2b3JzKGRtc09iamVjdDogRG1zT2JqZWN0KToge1xuICAgIGFwcGxpZWQ6IE9iamVjdEZsYXZvcltdO1xuICAgIGFwcGxpY2FibGU6IE9iamVjdEZsYXZvcltdO1xuICB9IHtcbiAgICBjb25zdCBhcHBsaWVkOiBPYmplY3RGbGF2b3JbXSA9IFtdO1xuICAgIGNvbnN0IGFwcGxpY2FibGU6IE9iamVjdEZsYXZvcltdID0gW107XG4gICAgaWYgKGRtc09iamVjdCkge1xuICAgICAgY29uc3Qgc290czogc3RyaW5nW10gPSAoZG1zT2JqZWN0LmRhdGFbQmFzZU9iamVjdFR5cGVGaWVsZC5TRUNPTkRBUllfT0JKRUNUX1RZUEVfSURTXSBhcyBzdHJpbmdbXSkgfHwgW107XG4gICAgICBpZiAoZG1zT2JqZWN0LmNvbnRlbnQpIHtcbiAgICAgICAgdGhpcy5nZXRBcHBsaWNhYmxlRG9jdW1lbnRGbGF2b3JzKGRtc09iamVjdC5jb250ZW50Lm1pbWVUeXBlKS5mb3JFYWNoKChmbGF2b3I6IE9iamVjdEZsYXZvcikgPT4ge1xuICAgICAgICAgIGZsYXZvciA9IHtcbiAgICAgICAgICAgIC4uLmZsYXZvcixcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuI3N5c3RlbS5nZXRMb2NhbGl6ZWRMYWJlbChmbGF2b3IuaWQpIHx8IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoZmxhdm9yLmlkKSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLiNzeXN0ZW0uZ2V0TG9jYWxpemVkRGVzY3JpcHRpb24oZmxhdm9yLmlkKSB8fCAoZmxhdm9yLmRlc2NyaXB0aW9uS2V5ID8gdGhpcy50cmFuc2xhdGUuaW5zdGFudChmbGF2b3IuZGVzY3JpcHRpb25LZXkpIDogdW5kZWZpbmVkKVxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKHNvdHMuaW5jbHVkZXMoZmxhdm9yLnNvdCkpIHtcbiAgICAgICAgICAgIGFwcGxpZWQucHVzaChmbGF2b3IpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIWZsYXZvci5wcmV2ZW50QXBwbHkpIHtcbiAgICAgICAgICAgIGFwcGxpY2FibGUucHVzaChmbGF2b3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChkbXNPYmplY3QuaXNGb2xkZXIpIHtcbiAgICAgICAgdGhpcy5nZXRBcHBsaWNhYmxlRm9sZGVyRmxhdm9ycygpLmZvckVhY2goKGZsYXZvcjogT2JqZWN0Rmxhdm9yKSA9PiB7XG4gICAgICAgICAgZmxhdm9yID0ge1xuICAgICAgICAgICAgLi4uZmxhdm9yLFxuICAgICAgICAgICAgbmFtZTogdGhpcy4jc3lzdGVtLmdldExvY2FsaXplZExhYmVsKGZsYXZvci5pZCkgfHwgdGhpcy50cmFuc2xhdGUuaW5zdGFudChmbGF2b3IuaWQpLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuI3N5c3RlbS5nZXRMb2NhbGl6ZWREZXNjcmlwdGlvbihmbGF2b3IuaWQpIHx8IChmbGF2b3IuZGVzY3JpcHRpb25LZXkgPyB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGZsYXZvci5kZXNjcmlwdGlvbktleSkgOiB1bmRlZmluZWQpXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAoc290cy5pbmNsdWRlcyhmbGF2b3Iuc290KSkge1xuICAgICAgICAgICAgYXBwbGllZC5wdXNoKGZsYXZvcik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFwcGxpY2FibGUucHVzaChmbGF2b3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IGFwcGxpZWQsIGFwcGxpY2FibGUgfTtcbiAgfVxuXG4gIGdldEZsYXZvckxhYmVsKGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy4jc3lzdGVtLmdldExvY2FsaXplZExhYmVsKGlkKSB8fCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGlkKTtcbiAgfVxuXG4gIGFwcGx5T2JqZWN0Rmxhdm9yKGRtc09iamVjdDogRG1zT2JqZWN0LCBmbGF2b3I6IE9iamVjdEZsYXZvciwgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fSk6IE9ic2VydmFibGU8RG1zT2JqZWN0PiB7XG4gICAgY29uc3Qgc290czogc3RyaW5nW10gPSAoZG1zT2JqZWN0LmRhdGFbQmFzZU9iamVjdFR5cGVGaWVsZC5TRUNPTkRBUllfT0JKRUNUX1RZUEVfSURTXSBhcyBzdHJpbmdbXSkgfHwgW107XG4gICAgZGF0YVtCYXNlT2JqZWN0VHlwZUZpZWxkLlNFQ09OREFSWV9PQkpFQ1RfVFlQRV9JRFNdID0gWy4uLnNvdHMsIGZsYXZvci5zb3RdO1xuICAgIHJldHVybiB0aGlzLiNkbXNTZXJ2aWNlLnVwZGF0ZURtc09iamVjdChkbXNPYmplY3QuaWQsIGRhdGEpO1xuICB9XG5cbiAgcmVnaXN0ZXJUaWxlRXh0ZW5zaW9uKGV4dDogVGlsZUV4dGVuc2lvbikge1xuICAgIHRoaXMuX2V4dGVuc2lvbnNbZXh0LnR5cGVJZF0gPSBleHQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRpbGUgZXh0ZW5zaW9ucyBmb3IgYSBjZXJ0YWluIHR5cGVcbiAgICogQHBhcmFtIHR5cGVJZCBJRCBvZiB0aGUgdHlwZSB0byBmZXRjaCBleHRlc2lvbiBmb3IgKG9iamVjdFR5cGVJRCBvciBzZWNvbmRhcnlPYmplY3RUeXBlSUQpXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBnZXRSZWdpc3RlcmVkVGlsZUV4dGVuc2lvbnMoKTogUmVjb3JkPHN0cmluZywgVGlsZUV4dGVuc2lvbj4ge1xuICAgIHJldHVybiB0aGlzLl9leHRlbnNpb25zO1xuICB9XG5cbiAgX2luaXRPYmplY3RUeXBlQ29uZmlnKCk6IFByb21pc2U8dW5rbm93bj4ge1xuICAgIC8vIGxvYWQgZmxhdm9ycyBmcm9tIGNvbmZpZ1xuICAgIGNvbnNvbGUuZGVidWcoJ0xvYWRpbmcgb2JqZWN0IHR5cGUgY29uZmlnLi4uJyk7XG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKFxuICAgICAgdGhpcy4jc2hlbGxDb25maWcuZ2V0KFNIRUxMX0NPTkZJR19UWVBFUykucGlwZShcbiAgICAgICAgdGFwKChyZXM6IFNoZWxsQ29uZmlnIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgdGhpcy4jcmVnaXN0ZXJPYmplY3RUeXBlSWNvbnMoKHJlcy5kYXRhIGFzIENsaWVudFNoZWxsVHlwZVtdKS5tYXAoKHQpID0+IHQuaWQpKTtcblxuICAgICAgICAgICAgY29uc3QgZmx2OiBBcHBGbGF2b3JbXSA9IChyZXMuZGF0YSBhcyBDbGllbnRTaGVsbFR5cGVbXSkubWFwKCh0KSA9PiAoe1xuICAgICAgICAgICAgICBpZDogdC5pZCxcbiAgICAgICAgICAgICAgc290OiB0LmlkLFxuICAgICAgICAgICAgICBpY29uOiB0LmlkLFxuICAgICAgICAgICAgICBzdmdJY29uOiB0cnVlLFxuICAgICAgICAgICAgICBvYmplY3RUeXBlSUQ6IHQuYmFzZVR5cGUsXG4gICAgICAgICAgICAgIGFwcGxpY2FibGVUbzoge1xuICAgICAgICAgICAgICAgIGZvbGRlcnM6IHQuYmFzZVR5cGUgPT09IFN5c3RlbVR5cGUuRk9MREVSIHx8IHQuYmFzZVR5cGUgPT09IFN5c3RlbVR5cGUuT0JKRUNULFxuICAgICAgICAgICAgICAgIGRvY3VtZW50czogdC5iYXNlVHlwZSA9PT0gU3lzdGVtVHlwZS5ET0NVTUVOVCB8fCB0LmJhc2VUeXBlID09PSBTeXN0ZW1UeXBlLk9CSkVDVCxcbiAgICAgICAgICAgICAgICBtaW1lVHlwZXM6IHQuYXBwbGljYWJsZVRvTWltZVR5cGVzIHx8IHVuZGVmaW5lZFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB1c2VEZWZhdWx0QXBwbHlDb21wb25lbnQ6ICF0Lmluc3RhbnRBcHBseVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgdGhpcy5leHBvc2VPYmplY3RGbGF2b3JzKGZsdiwgJ2dsb2JhbCcsICdjb25maWcnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gICNyZWdpc3Rlck9iamVjdFR5cGVJY29ucyhpZHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy4jc3lzdGVtLnN5c3RlbSQucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWRzLmZvckVhY2goKGlkKSA9PiB7XG4gICAgICAgIC8vIHNwbGl0IHRlY2huaWNhbCBuYW1lIGUuZy4gJ3N5c3RlbTpkb2N1bWVudCcgYW5kIHVzZSB0aGUgZmlyc3QgcGFydCBhcyBuYW1lc3BhY2VcbiAgICAgICAgY29uc3QgaWRUb2tlbnMgPSBpZC5zcGxpdCgnOicpO1xuICAgICAgICBpZiAoaWRUb2tlbnMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgY29uc3QgdXJpID0gYCR7dGhpcy4jY29uZmlnU2VydmljZS5nZXRBcGlCYXNlKEFwaUJhc2Uubm9uZSwgdHJ1ZSl9JHt0aGlzLiNzeXN0ZW0uZ2V0T2JqZWN0VHlwZUljb25VcmkoaWQpfWA7XG4gICAgICAgICAgdGhpcy4jaWNvblJlZ2lzdHJ5LmFkZFN2Z0ljb25Jbk5hbWVzcGFjZShpZFRva2Vuc1swXSwgaWRUb2tlbnNbMV0sIHRoaXMuI3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodXJpKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgX2luaXQoKSB7XG4gICAgLy8gdGhlIHBsYWNlIGZvciBpbml0aWFsaXphdGlvbiB0YXNrcyBpZlxuICB9XG59XG4iXX0=
|
|
456
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1zaGVsbC1jb3JlL3NyYy9saWIvc2VydmljZXMvc2hlbGwvc2hlbGwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFjLGFBQWEsRUFBRSxNQUFNLEVBQTRCLE1BQU0saUJBQWlCLENBQUM7QUFDOUcsT0FBTyxFQUNMLE9BQU8sRUFDUCxtQkFBbUIsRUFDbkIsYUFBYSxFQUViLFVBQVUsRUFFVixhQUFhLEVBQ2IsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsS0FBSyxFQUVOLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLGVBQWUsRUFDZixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxjQUFjLEVBQ2QsU0FBUyxFQUNULEdBQUcsRUFFSCxFQUFFLEVBQ0YsR0FBRyxFQUNKLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFVaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7O0FBSzFFLE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLFdBQVcs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ZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgc2lnbmFsLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRJY29uUmVnaXN0cnkgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb24sIE5hdmlnYXRpb25FbmQsIFJvdXRlciwgVXJsU2VnbWVudEdyb3VwLCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEFwaUJhc2UsXG4gIEJhc2VPYmplY3RUeXBlRmllbGQsXG4gIENvbmZpZ1NlcnZpY2UsXG4gIERtc09iamVjdCxcbiAgRG1zU2VydmljZSxcbiAgT2JqZWN0Q3JlYXRlRmxhdm9yLFxuICBTeXN0ZW1TZXJ2aWNlLFxuICBTeXN0ZW1UeXBlLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxuICBVc2VyU2VydmljZSxcbiAgVXRpbHMsXG4gIFl1dlVzZXJcbn0gZnJvbSAnQHl1dXZpcy9jbGllbnQtY29yZSc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGRlYm91bmNlVGltZSxcbiAgZmlsdGVyLFxuICBmaXJzdCxcbiAgZmlyc3RWYWx1ZUZyb20sXG4gIGZyb21FdmVudCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgdGFwXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ0xJRU5UX1NIRUxMX0FTU0VUUyB9IGZyb20gJy4uLy4uL2NsaWVudC1zaGVsbC5hc3NldHMnO1xuaW1wb3J0IHtcbiAgQXBwLFxuICBBcHBGbGF2b3IsXG4gIENsaWVudFNoZWxsQ29uZmlnLFxuICBHbG9iYWxTaG9ydGN1dCxcbiAgT2JqZWN0Rmxhdm9yLFxuICBTaGVsbEFwcFNldHRpbmdzXG59IGZyb20gJy4uLy4uL21vZGVscy9jbGllbnQtc2hlbGwuaW50ZXJmYWNlJztcbmltcG9ydCB7IFRpbGVFeHRlbnNpb24gfSBmcm9tICcuLi8uLi90aWxlLWV4dGVuc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU0hFTExfQ09ORklHX1RZUEVTIH0gZnJvbSAnLi4vc2hlbGwtY29uZmlnL3NoZWxsLWNvbmZpZy5jb25zdCc7XG5pbXBvcnQgeyBDbGllbnRTaGVsbFR5cGUsIFNoZWxsQ29uZmlnIH0gZnJvbSAnLi4vc2hlbGwtY29uZmlnL3NoZWxsLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2hlbGxDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vc2hlbGwtY29uZmlnL3NoZWxsLWNvbmZpZy5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU2hlbGxTZXJ2aWNlIHtcbiAgI2Rtc1NlcnZpY2UgPSBpbmplY3QoRG1zU2VydmljZSk7XG5cbiAgI2RpYWxvZyA9IGluamVjdChNYXREaWFsb2cpO1xuICAjc3lzdGVtID0gaW5qZWN0KFN5c3RlbVNlcnZpY2UpO1xuICAjdXNlclNlcnZpY2UgPSBpbmplY3QoVXNlclNlcnZpY2UpO1xuICAvLyBUT0RPOiBOZWVkIG9yaWduYWwgTWF0SWNvblJlZ2lzdHJ5IHRvICNyZWdpc3Rlck9iamVjdFR5cGVJY29ucywgb3RoZXJ3aXNlIGljb25zIGNvdWxkIG5vdCBiZSByZWdpc3RlcmVkIGluIHRoZSBuYW1lc3BhY2VcbiAgLy8gI2ljb25SZWdpc3RyeSA9IGluamVjdChZdXZNYXRJY29uUmVnaXN0cnkpO1xuICAjaWNvblJlZ2lzdHJ5ID0gaW5qZWN0KE1hdEljb25SZWdpc3RyeSk7XG4gICNzaGVsbENvbmZpZyA9IGluamVjdChTaGVsbENvbmZpZ1NlcnZpY2UpO1xuICAjY29uZmlnU2VydmljZSA9IGluamVjdChDb25maWdTZXJ2aWNlKTtcbiAgI3Nhbml0aXplciA9IGluamVjdChEb21TYW5pdGl6ZXIpO1xuICAjcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gICNyb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gICNET0NVTUVOVCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuXG4gIHByaXZhdGUgX2J1c3lDb3VudCA9IDA7XG4gIHByaXZhdGUgaXNCdXN5U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBpc0J1c3kkID0gdGhpcy5pc0J1c3lTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpO1xuXG4gIC8vIEFwcHMgY2FuIHJlZ2lzdGVyIHRoZWlyIG93biBzZXR0aW5nIGNvbXBvbmVudHMgdG8gYmUgc2hvd24gaW4gc2hlbGwgc2V0dGluZ3NcbiAgI2FwcFNldHRpbmdzID0gc2lnbmFsPFNoZWxsQXBwU2V0dGluZ3NbXT4oW10pO1xuICBhcHBTZXR0aW5ncyA9IHRoaXMuI2FwcFNldHRpbmdzLmFzUmVhZG9ubHkoKTtcblxuICBhcHBCYXNlUm91dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgI2RlZmF1bHRTaGVsbENvbmZpZzogQ2xpZW50U2hlbGxDb25maWcgPSB7XG4gICAgYXBwSWNvbjogQ0xJRU5UX1NIRUxMX0FTU0VUUy5hcHBJY29uLFxuICAgIHNoZWxsSWNvbk5hbWVzcGFjZTogQ0xJRU5UX1NIRUxMX0FTU0VUUy5zaGVsbEljb25OYW1lc3BhY2VcbiAgfTtcbiAgc2hlbGxDb25maWcgPSBzaWduYWw8Q2xpZW50U2hlbGxDb25maWc+KHRoaXMuI2RlZmF1bHRTaGVsbENvbmZpZyk7XG4gIGFwcHMgPSBzaWduYWw8QXBwW10+KFtdKTtcblxuICAvKiogVE9ETzogaW1wbGVtZW50IHRoaXMgZmVhdHVyZSA/Pz8/XG4gICAqIEdsb2JhbCBzaG9ydGN1dHMgYXJlIGNhcHR1cmVkIGJ5IHRoZSBzaGVsbCB0byBwcm92aWRlIGEgY29uc2lzdGVudCBleHBlcmllbmNlXG4gICAqIGFjY3Jvc3MgYWxsIGFwcHMuIFNlYXJjaCBpcyBvbmUgZXhhbXBsZS4gQXBwcyBzaG91bGQgbm90IGRlZmluZSB0aGVpciBvd24gc2hvdXJ0Y3V0c1xuICAgKiBmb3Igc2VhcmNoLiBJbnN0ZWFkIHRoZXkgc2hvdWxkIHN1YnNjcmliZSB0byB0aGUgZ2xvYmFsIHNob3J0Y3V0cyBhbmQgaW5pdGlhbGl6ZSB0aGVpclxuICAgKiBzZWFyY2ggYmFzZWQgb24gdGhlIGdsb2JhbCBzZWFyY2ggc2hvcnRjdXQuXG4gICAqL1xuICBnbG9iYWxTaG9ydGN1dHMkOiBPYnNlcnZhYmxlPEdsb2JhbFNob3J0Y3V0PiA9IGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkb2N1bWVudCwgJ2tleWRvd24nKS5waXBlKFxuICAgIG1hcCgoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgLy8gZ2xvYmFsIHNob3J0Y3V0IGZvciBzZWFyY2hcbiAgICAgIC8vIGlmIChlLmN0cmxLZXkgJiYgZS5jb2RlID09PSAnS2V5RicpIHtcbiAgICAgIC8vICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgLy8gICByZXR1cm4gR2xvYmFsU2hvcnRjdXQuc2VhcmNoO1xuICAgICAgLy8gfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9KSxcbiAgICBmaWx0ZXIoKHM6IEdsb2JhbFNob3J0Y3V0IHwgdW5kZWZpbmVkKSA9PiBzICE9PSB1bmRlZmluZWQpLFxuICAgIG1hcCgocykgPT4gcyBhcyBHbG9iYWxTaG9ydGN1dClcbiAgKTtcblxuICBwcml2YXRlIF9leHRlbnNpb25zOiBSZWNvcmQ8c3RyaW5nLCBUaWxlRXh0ZW5zaW9uPiA9IHt9O1xuICBwcml2YXRlIF9vYmplY3RGbGF2b3JzOiBPYmplY3RGbGF2b3JbXSA9IFtdO1xuICBwcml2YXRlIF9vYmplY3RDcmVhdGVGbGF2b3JzOiBPYmplY3RDcmVhdGVGbGF2b3JbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMudHJhbnNsYXRlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5hcHBzLnNldCh0aGlzLiNnZXRNYXBwZWRBcHBzKHRoaXMuYXBwcygpKSk7XG4gICAgfSk7XG5cbiAgICAvLyB0cmFjayBvcGVuIGRpYWxvZ3MgaW4gYW4gYXV4aWxsYXJ5IHJvdXRlIHRvIHN1cHBvcnQgY2xvc2luZyB0aGVtIG9uIGJhY2sgbmF2aWdhdGlvblxuICAgIC8vIGFzIHRoaXMgaXMgdGhlIGV4cGVjdGVkIGJlaGF2aW91ciBvbiBtb2JpbGUgZGV2aWNlc1xuICAgIHRoaXMuI2RpYWxvZy5hZnRlck9wZW5lZC5zdWJzY3JpYmUoKHJlZjogTWF0RGlhbG9nUmVmPGFueSwgYW55PikgPT4ge1xuICAgICAgdGhpcy4jcm91dGVyLm5hdmlnYXRlKFt7IG91dGxldHM6IHsgZHQ6IFsnZGlhbG9ncycsIHRoaXMuI2RpYWxvZy5vcGVuRGlhbG9ncy5tYXAoKGQsIGkpID0+IGkpLmpvaW4oJy0nKV0gfSB9XSwge1xuICAgICAgICAvLyByZXBsYWNlVXJsOiB0cnVlLFxuICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAncHJlc2VydmUnXG4gICAgICB9KTtcbiAgICAgIHJlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgIGlmIChyZXM/LmNsb3NlZEJ5Um91dGUpIHJldHVybjtcbiAgICAgICAgY29uc3Qgb3BlbkRpYWxvZ3MgPSB0aGlzLiNkaWFsb2cub3BlbkRpYWxvZ3MuZmlsdGVyKChkKSA9PiBkLmlkICE9PSByZWYuaWQpO1xuICAgICAgICAvLyBoYXZpbmcgbm8gb3BlbiBkaWFsb2dzLCBjbGVhciB0aGUgYXV4aWxsYXJ5IHJvdXRlXG4gICAgICAgIGNvbnN0IHBhcmFtID0gb3BlbkRpYWxvZ3MubGVuZ3RoID4gMCA/IFsnZGlhbG9ncycsIG9wZW5EaWFsb2dzLm1hcCgoZCwgaSkgPT4gaSkuam9pbignLScpXSA6IG51bGw7XG4gICAgICAgIHRoaXMuI3JvdXRlci5uYXZpZ2F0ZShbeyBvdXRsZXRzOiB7IGR0OiBwYXJhbSB9IH1dLCB7IHJlcGxhY2VVcmw6IHRydWUsIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdwcmVzZXJ2ZScgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB0aGlzLiNyb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKChlKSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgLy8gd2hlbiBuYXZpZ2F0aW5nIGFuZCBoYXZpbmcgbm8gb3BlbiBkaWFsb2dzLCBjbGVhciB0aGUgYXV4aWxsYXJ5IHJvdXRlIGZyb20gdGhlIHVybFxuICAgICAgaWYgKHRoaXMuI2RpYWxvZy5vcGVuRGlhbG9ncy5sZW5ndGggPT09IDAgJiYgZS51cmxBZnRlclJlZGlyZWN0cy5tYXRjaCgvKGR0OlsuXSopLykpIHtcbiAgICAgICAgdGhpcy4jcm91dGVyLm5hdmlnYXRlKFt7IG91dGxldHM6IHsgZHQ6IG51bGwgfSB9XSwgeyByZXBsYWNlVXJsOiB0cnVlLCBxdWVyeVBhcmFtc0hhbmRsaW5nOiAncHJlc2VydmUnIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBpZiB0aGVyZSBhcmUgb3BlbiBkaWFsb2dzIGFuZCB0aGUgcHJpbWFyeSByb3V0ZSBjaGFuZ2VkLCBjbG9zZSBhbGwgb3BlbiBkaWFsb2dzXG4gICAgICBpZiAodGhpcy4jZGlhbG9nLm9wZW5EaWFsb2dzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKHRoaXMucHJpbWFyeVJvdXRlQ2hhbmdlZCh0aGlzLiNyb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKSkpIHtcbiAgICAgICAgICB0aGlzLiNkaWFsb2cub3BlbkRpYWxvZ3MuZm9yRWFjaCgoZCkgPT4gZC5jbG9zZSgpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgI2dldFByaW1hcnlSb3V0ZShuYXY6IE5hdmlnYXRpb24gfCBudWxsKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIW5hdikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCB1cmw6IFVybFRyZWUgPSBuYXYuZmluYWxVcmwgfHwgbmF2LmV4dHJhY3RlZFVybDtcbiAgICBjb25zdCB1cmxUcmVlQ2hpbGRyZW46IFVybFNlZ21lbnRHcm91cCB8IHVuZGVmaW5lZCA9IHVybC5yb290LmNoaWxkcmVuWydwcmltYXJ5J107XG4gICAgcmV0dXJuIHVybFRyZWVDaGlsZHJlbiA/IHVybFRyZWVDaGlsZHJlbi5zZWdtZW50cy5tYXAoKHMpID0+IHMucGF0aCkuam9pbignLycpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpbWFyeVJvdXRlQ2hhbmdlZChuYXY6IE5hdmlnYXRpb24gfCBudWxsKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcHJldmlvdXNOYXYgPSBuYXY/LnByZXZpb3VzTmF2aWdhdGlvbiB8fCBudWxsO1xuICAgIHJldHVybiB0aGlzLiNnZXRQcmltYXJ5Um91dGUobmF2KSAhPT0gdGhpcy4jZ2V0UHJpbWFyeVJvdXRlKHByZXZpb3VzTmF2KTtcbiAgfVxuXG4gIHBpY2tGaWxlKCk6IE9ic2VydmFibGU8RmlsZSB8IG51bGw+IHtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuI0RPQ1VNRU5ULmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgaW5wdXQudHlwZSA9ICdmaWxlJztcbiAgICBpbnB1dC5jbGljaygpO1xuICAgIHJldHVybiBmcm9tRXZlbnQoaW5wdXQsICdjaGFuZ2UnKS5waXBlKFxuICAgICAgbWFwKChlOiBFdmVudCkgPT4gKGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZpbGVzPy5bMF0gfHwgbnVsbCksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICBpbnB1dC5yZW1vdmUoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHNldFNoZWxsQ29uZmlnKGNzYzogQ2xpZW50U2hlbGxDb25maWcpIHtcbiAgICB0aGlzLnNoZWxsQ29uZmlnLnVwZGF0ZSgoc2MpID0+ICh7XG4gICAgICBhcHBJY29uOiBjc2MuYXBwSWNvbiA/PyBzYy5hcHBJY29uLFxuICAgICAgc2hlbGxJY29uTmFtZXNwYWNlOiBjc2Muc2hlbGxJY29uTmFtZXNwYWNlID8/IHNjLnNoZWxsSWNvbk5hbWVzcGFjZVxuICAgIH0pKTtcbiAgfVxuXG4gIHNldEFwcHMoYXBwczogQXBwW10pIHtcbiAgICB0aGlzLmFwcHMuc2V0KHRoaXMuI2dldE1hcHBlZEFwcHMoYXBwcykpO1xuICAgIGNvbnN0IGFwcEJhc2VSb3V0ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICBhcHBzLmZvckVhY2goKGEpID0+IChhcHBCYXNlUm91dGVzW2EuaWRdID0gYS5wYXRoIHx8ICcnKSk7XG4gICAgdGhpcy5hcHBCYXNlUm91dGVzID0gYXBwQmFzZVJvdXRlcztcbiAgfVxuXG4gICNnZXRNYXBwZWRBcHBzKGFwcHM6IEFwcFtdKTogQXBwW10ge1xuICAgIHJldHVybiBhcHBzLm1hcCgoYSkgPT4ge1xuICAgICAgY29uc3QgbWEgPSB7XG4gICAgICAgIC4uLmEsXG4gICAgICAgIHRpdGxlOiB0aGlzLiNnZXRBcHBUaXRsZShhKVxuICAgICAgfTtcbiAgICAgIGlmIChhLm9wdGlvbnM/LmFwcENsYWltS2V5KSB7XG4gICAgICAgIG1hLm9wdGlvbnMgPSB7IC4uLm1hLm9wdGlvbnMsIGFwcENsYWltOiB0aGlzLiNnZXRBcHBDbGFpbShhLm9wdGlvbnMuYXBwQ2xhaW1LZXkpIHx8IGEub3B0aW9ucy5hcHBDbGFpbSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1hO1xuICAgIH0pO1xuICB9XG5cbiAgI2dldEFwcFRpdGxlKGE6IEFwcCk6IHN0cmluZyB7XG4gICAgY29uc3QgdHJhbnNsYXRlZFRpdGxlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChhLmlkKTtcbiAgICByZXR1cm4gdHJhbnNsYXRlZFRpdGxlICYmICF0cmFuc2xhdGVkVGl0bGUuc3RhcnRzV2l0aCgnIW1pc3NpbmcnKSA/IHRyYW5zbGF0ZWRUaXRsZSA6IChhLnRpdGxlIGFzIHN0cmluZykgfHwgJyc7XG4gIH1cblxuICAjZ2V0QXBwQ2xhaW0oY2xhaW1LZXk6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdHJhbnNsYXRlZENsYWltID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChjbGFpbUtleSk7XG4gICAgcmV0dXJuIHRyYW5zbGF0ZWRDbGFpbSAmJiAhdHJhbnNsYXRlZENsYWltLnN0YXJ0c1dpdGgoJyFtaXNzaW5nJykgPyB0cmFuc2xhdGVkQ2xhaW0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRBcHAoaWQ6IHN0cmluZyk6IEFwcCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuYXBwcygpLmZpbmQoKGEpID0+IGlkID09PSBhLmlkKTtcbiAgfVxuXG4gIGdldEFwcHMoaWRzOiBzdHJpbmdbXSA9IFtdKTogQXBwW10ge1xuICAgIHJldHVybiBpZHMubGVuZ3RoID8gdGhpcy5hcHBzKCkuZmlsdGVyKChhKSA9PiBpZHMuaW5jbHVkZXMoYS5pZCkpIDogdGhpcy5hcHBzKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgc2V0dGluZ3MgZm9yIGFwcHMgdG8gaG9vayBpbnRvIHNoZWxsIHNldHRpbmdzIHBhZ2UuXG4gICAqIEBwYXJhbSBhcHBJRCBJRCBvZiB0aGUgYXBwIHRoYXQgZXhwb3NlcyB0aGUgc2V0dGluZ3NcbiAgICogQHBhcmFtIGNmZyBTaGVsbEFwcFNldHRpbmdzIG9iamVjdCBjb250YWluaW5nIHRoZSBzZXR0aW5ncyBjb21wb25lbnRcbiAgICovXG4gIHJlZ2lzdGVyQXBwU2V0dGluZ3MoY2ZnOiBTaGVsbEFwcFNldHRpbmdzKSB7XG4gICAgdGhpcy4jYXBwU2V0dGluZ3Muc2V0KFsuLi50aGlzLiNhcHBTZXR0aW5ncygpLCBjZmddKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIHBlcnNpc3RlZCBzZXR0aW5ncyBmb3IgYSBzcGVjaWZpYyBhcHBcbiAgICogQHBhcmFtIGFwcElEIElEIG9mIHRoZSBhcHAgdG8gbG9hZCB0aGUgc2V0dGluZ3MgZm9yXG4gICAqL1xuICB1c2Vyc0FwcFNldHRpbmdzJChhcHBJRDogc3RyaW5nKTogT2JzZXJ2YWJsZTxTaGVsbEFwcFNldHRpbmdzIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuI3VzZXJTZXJ2aWNlLnVzZXIkLnBpcGUoXG4gICAgICBtYXAoKHU6IFl1dlVzZXIgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgcmV0dXJuIHUgJiYgdS51c2VyU2V0dGluZ3MuY2xpZW50QXBwU2V0dGluZ3MgPyB1LnVzZXJTZXR0aW5ncy5jbGllbnRBcHBTZXR0aW5nc1thcHBJRF0gOiB1bmRlZmluZWQ7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzYXZlVXNlcnNBcHBTZXR0aW5ncyhhcHBJRDogc3RyaW5nLCBzZXR0aW5nczogU2hlbGxBcHBTZXR0aW5ncyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuI3VzZXJTZXJ2aWNlLnNhdmVVc2VyU2V0dGluZ3MoeyBjbGllbnRBcHBTZXR0aW5nczogeyBbYXBwSURdOiBzZXR0aW5ncyB9IH0pO1xuICB9XG5cbiAgYWRkQnVzeSgpIHtcbiAgICBpZiAodGhpcy5fYnVzeUNvdW50ID09PSAwKSB7XG4gICAgICB0aGlzLmlzQnVzeVN1YmplY3QubmV4dCh0cnVlKTtcbiAgICB9XG4gICAgdGhpcy5fYnVzeUNvdW50Kys7XG4gIH1cbiAgcmVtb3ZlQnVzeSgpIHtcbiAgICB0aGlzLl9idXN5Q291bnQtLTtcbiAgICBpZiAodGhpcy5fYnVzeUNvdW50ID09PSAwKSB7XG4gICAgICB0aGlzLmlzQnVzeVN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEV4cG9zZXMgb2JqZWN0IGNyZWF0ZSBmbGF2b3JzIHRvIHRoZSBzaGVsbC5cbiAgICogVGhlcyBmbGF2b3JzIGRlc2NyaWJlIGRpZmZlcmVudCB3YXlzIG9mIGhvdyBvYmplY3RzIGNhbiBiZSBjcmVhdGVkLiBTbyBhcHBzXG4gICAqIGNhbiByZWdpc3RlciBjdXN0b20gd2F5cyBvZiBjcmVhdGluZyBvYmplY3RzIHRoYXQgY2FuIHRoZW4gYmUgdXNlZCBieSBvdGhlciBhcHBzLlxuICAgKiBAcGFyYW0gZmxhdm9ycyBDcmVhdGUgZmxhdm9ycyB0byBiZSBleHBvc2VkXG4gICAqL1xuICBleHBvc2VPYmplY3RDcmVhdGVGbGF2b3JzKGZsYXZvcnM6IE9iamVjdENyZWF0ZUZsYXZvcltdKSB7XG4gICAgZmxhdm9ycy5mb3JFYWNoKChmbGF2b3I6IE9iamVjdENyZWF0ZUZsYXZvcikgPT4ge1xuICAgICAgY29uc3QgaWR4ID0gdGhpcy5fb2JqZWN0Q3JlYXRlRmxhdm9ycy5maW5kSW5kZXgoKGYpID0+IGYuaWQgPT09IGZsYXZvci5pZCk7XG4gICAgICBpZiAoaWR4ID09PSAtMSkgdGhpcy5fb2JqZWN0Q3JlYXRlRmxhdm9ycy5wdXNoKGZsYXZvcik7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIG9iamVjdCBjcmVhdGUgZmxhdm9ycyBmcm9tIHRoZSBzaGVsbHMgcmVnaXN0cnlcbiAgICogQHBhcmFtIGZsYXZvcnMgQ3JlYXRlIGZsYXZvcnMgdG8gYmUgcmVtb3ZlZFxuICAgKi9cbiAgY29uY2VhbE9iamVjdENyZWF0ZUZsYXZvcnMoZmxhdm9yczogT2JqZWN0Q3JlYXRlRmxhdm9yW10pIHtcbiAgICBjb25zdCBmaWQgPSBmbGF2b3JzLm1hcCgoZikgPT4gZi5pZCk7XG4gICAgdGhpcy5fb2JqZWN0Q3JlYXRlRmxhdm9ycyA9IHRoaXMuX29iamVjdENyZWF0ZUZsYXZvcnMuZmlsdGVyKChmKSA9PiAhZmlkLmluY2x1ZGVzKGYuaWQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIHJlZ2lzdGVyZCBvYmplY3QgY3JlYXRlIGZsYXZvcnNcbiAgICovXG4gIGdldE9iamVjdENyZWF0ZUZsYXZvcnMoKTogT2JqZWN0Q3JlYXRlRmxhdm9yW10ge1xuICAgIHJldHVybiB0aGlzLl9vYmplY3RDcmVhdGVGbGF2b3JzO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cG9zZXMgYSBsaXN0IG9mIG9iamVjdCBmbGF2b3JzIHRvIHRoZSBzaGVsbC5cbiAgICogRmxhdm9ycyBhcmUgYWJsZSB0byBiZSBhcHBsaWVkIHRvIG9iamVjdHMgYW5kIGFkZCBuZXcgbWV0YWRhdGEgcHJvcGVydGllcyB0byB0aGVtLlxuICAgKiBAcGFyYW0gZmxhdm9ycyBBcnJheSBvZiBmbGF2b3JzIHRvIGJlIGV4cG9zZWRcbiAgICogQHBhcmFtIGFwcCBPcHRpb25hbCBJRCBvZiB0aGUgYXBwIHRoYXQgZXhwb3NlcyB0aGUgZmxhdm9ycyAoZGVmYXVsdHMgdG8gJ2dsb2JhbCcgaWYgbm90IHByb3ZpZGVkKVxuICAgKiBAcGFyYW0gb3JpZ2luIE9wdGlvbmFsIG9yaWdpbiBvZiB0aGUgZmxhdm9ycy4gRmxhdm9ycyBjb3VsZCBiZSBhZGRlZCBieSBhcHBzIG9yIGRlcml2ZWRcbiAgICogZnJvbSBhIGNvbmZpZ3VyYXRpb24gKGRlZmF1bHRzIHRvICdhcHAnIGlmIG5vdCBwcm92aWRlZClcbiAgICovXG4gIGV4cG9zZU9iamVjdEZsYXZvcnMoZmxhdm9yczogQXBwRmxhdm9yW10sIGFwcCA9ICdnbG9iYWwnLCBvcmlnaW46ICdhcHAnIHwgJ2NvbmZpZycgPSAnYXBwJykge1xuICAgIGZsYXZvcnMuZm9yRWFjaCgoZikgPT4gdGhpcy5leHBvc2VPYmplY3RGbGF2b3IoZiwgYXBwLCBvcmlnaW4pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGV4cG9zZWQgb2JqZWN0IGZsYXZvcnMgZnJvbSB0aGUgc2hlbGwuXG4gICAqIEBwYXJhbSBmbGF2b3JzIEFycmF5IG9mIGZsYXZvcnMgdG8gYmUgY29uY2VhbGVkXG4gICAqL1xuICBjb25jZWFsT2JqZWN0Rmxhdm9ycyhmbGF2b3JzOiBBcHBGbGF2b3JbXSwgYXBwID0gJ2dsb2JhbCcpIHtcbiAgICBmbGF2b3JzLmZvckVhY2goKGYpID0+IHRoaXMuY29uY2VhbE9iamVjdEZsYXZvcihmLCBhcHApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBvc2VzIGFuIG9iamVjdCBmbGF2b3IgdG8gdGhlIHNoZWxsLiBGbGF2b3JzIGFyZSBhYmxlIHRvIGJlIGFwcGxpZWQgdG8gb2JqZWN0c1xuICAgKiBpbiBvcmRlciB0byBhZGQgYSBuZXcgYXNwZWN0IHRvIHRoZW0uIEFuIG9iamVjdCBjb250YWluaW5nIGFuIGltYWdlIGZvciBleGFtcGxlIGNvdWxkXG4gICAqIGJlIGFkZGVkIGEgZmxhdm9yIG9mICdFWElGIERhdGEnIHRoYXQgd2lsbCBhZGQgdGhlIGNvcnJlc3BvbmRpbmcgU09UIHRvIGl0LiBUaGlzIHdheSB0aGVcbiAgICogb2JqZWN0IGdldHMgbmV3IG1ldGFkYXRhIHByb3BlcnRpZXMuIElmIHN1cHBvcnRlZCwgdGhlc2UgbWV0YWRhdGEgY291bGQgZXZlbiBiZSBleHRyYWN0ZWRcbiAgICogZnJvbSB0aGUgZmlsZSBhbmQgZmlsbGVkIG91dCBhdXRvbWF0aWNhbGx5LlxuICAgKiBAcGFyYW0gZmxhdm9yIFRoZSBmbGF2b3Igb2JqZWN0IHRvIGJlIGV4cG9zZWRcbiAgICogQHBhcmFtIGFwcCBPcHRpb25hbCBJRCBvZiB0aGUgYXBwIHRoYXQgZXhwb3NlcyB0aGUgZmxhdm9yIChkZWZhdWx0cyB0byAnZ2xvYmFsJyBpZiBub3QgcHJvdmlkZWQpXG4gICAqIEBwYXJhbSBvcmlnaW4gT3B0aW9uYWwgb3JpZ2luIG9mIHRoZSBmbGF2b3JzLiBGbGF2b3JzIGNvdWxkIGJlIGFkZGVkIGJ5IGFwcHMgb3IgZGVyaXZlZFxuICAgKiBmcm9tIGEgY29uZmlndXJhdGlvbiAoZGVmYXVsdHMgdG8gJ2FwcCcgaWYgbm90IHByb3ZpZGVkKVxuICAgKi9cbiAgZXhwb3NlT2JqZWN0Rmxhdm9yKGZsYXZvcjogQXBwRmxhdm9yLCBhcHAgPSAnZ2xvYmFsJywgb3JpZ2luOiAnYXBwJyB8ICdjb25maWcnID0gJ2FwcCcpIHtcbiAgICBjb25zdCBpZHggPSB0aGlzLl9vYmplY3RGbGF2b3JzLmZpbmRJbmRleCgoZikgPT4gZi5pZCA9PT0gZmxhdm9yLmlkICYmIGYuYXBwID09PSBhcHApO1xuICAgIGlmIChpZHggPT09IC0xKSB0aGlzLl9vYmplY3RGbGF2b3JzLnB1c2goeyAuLi5mbGF2b3IsIGFwcCwgb3JpZ2luIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYW4gZXhwb3NlZCBvYmplY3QgZmxhdm9yIGZyb20gdGhlIHNoZWxsLlxuICAgKiBAcGFyYW0gZmxhdm9yIEZsYXZvciB0byBiZSBjb25jZWFsZWRcbiAgICogQHBhcmFtIGFwcCBPcHRpb25hbCBJRCBvZiB0aGUgYXBwIHRoYXQgZXhwb3NlcyB0aGUgZmxhdm9yIChkZWZhdWx0cyB0byAnZ2xvYmFsJyBpZiBub3QgcHJvdmlkZWQpXG4gICAqL1xuICBjb25jZWFsT2JqZWN0Rmxhdm9yKGZsYXZvcjogQXBwRmxhdm9yLCBhcHAgPSAnZ2xvYmFsJykge1xuICAgIHRoaXMuX29iamVjdEZsYXZvcnMgPSB0aGlzLl9vYmplY3RGbGF2b3JzLmZpbHRlcigoZikgPT4ge1xuICAgICAgY29uc3QgaGFzU2FtZUlkID0gZi5pZCA9PT0gZmxhdm9yLmlkO1xuICAgICAgY29uc3QgaXNGcm9tU2FtZUFwcCA9IGYuYXBwID09PSBhcHA7XG4gICAgICByZXR1cm4gaGFzU2FtZUlkICYmIGlzRnJvbVNhbWVBcHAgPyBmYWxzZSA6IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHJlZ2lzdGVyZWQgb2JqZWN0IGZsYXZvcnNcbiAgICogQHBhcmFtIGFwcCBPcHRpb25hbCBhcHAgSUQgdGhhdCByZXN0cmljdHMgdGhlIHJldHVybmVkIGZsYXZvcnMgdG8gdGhlIG9uZXNcbiAgICogcHJvdmlkZWQgYnkgYSBwYXJ0aWN1bGFyIGFwcC4gSWYgbm90IHByb3ZpZGVkIGFsbCBmbGF2b3JzIGFyZSByZXR1cm5lZFxuICAgKiBAcmV0dXJucyBBcnJheSBvZiBtYXRjaGluZyBvYmplY3QgZmxhdm9yc1xuICAgKi9cbiAgZ2V0T2JqZWN0Rmxhdm9ycyhhcHA/OiBzdHJpbmcpOiBPYmplY3RGbGF2b3JbXSB7XG4gICAgcmV0dXJuIGFwcCA/IHRoaXMuX29iamVjdEZsYXZvcnMuZmlsdGVyKChvZikgPT4gb2YuYXBwID09PSBhcHApIDogdGhpcy5fb2JqZWN0Rmxhdm9ycztcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VycyB0aGUgYXBwbGljYXRpb24gb2YgYW4gb2JqZWN0IGZsYXZvci4gSWYgdGhlIGZsYXZvciBoYXMgYW4gYXBwbHlDb21wb25lbnRcbiAgICogZGVmaW5lZCwgdGhlIG92ZXJsYXkgd2lsbCBiZSBvcGVuZWQgd2l0aCB0aGUgY29tcG9uZW50LiBPdGhlcndpc2UgdGhlIGZsYXZvciB3aWxsXG4gICAqIGJlIGFwcGxpZWQgZGlyZWN0bHkgdG8gdGhlIG9iamVjdC5cbiAgICogQHBhcmFtIGRtc09iamVjdCBUaGUgb2JqZWN0IHRvIGFwcGx5IHRoZSBmbGF2b3IgdG9cbiAgICogQHBhcmFtIGZsYXZvciBUaGUgZmxhdm9yIHRvIGFwcGx5XG4gICAqIEBwYXJhbSBkYXRhIE9wdGlvbmFsIGRhdGEgdG8gYmUgcGFzc2VkIHRvIHRoZSBmbGF2b3IgY29tcG9uZW50XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgdGhhdCBlbWl0cyB0cnVlIGlmIHRoZSBmbGF2b3Igd2FzIGFwcGxpZWQgc3VjY2Vzc2Z1bGx5XG4gICAqL1xuICB0cmlnZ2VyQXBwbHlPYmplY3RGbGF2b3IoXG4gICAgZG1zT2JqZWN0OiBEbXNPYmplY3QsXG4gICAgZmxhdm9yOiBPYmplY3RGbGF2b3IsXG4gICAgZGF0YT86IGFueSxcbiAgICBhcHBseUNvbXBvbmVudD86IFR5cGU8YW55PlxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBpZiAoZmxhdm9yLnByZXZlbnRBcHBseSkgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICBpZiAoZG1zT2JqZWN0KSB7XG4gICAgICBjb25zdCBhYyA9IGFwcGx5Q29tcG9uZW50IHx8IGZsYXZvci5hcHBseUNvbXBvbmVudDtcbiAgICAgIGlmIChhYykge1xuICAgICAgICB0aGlzLiNkaWFsb2cub3BlbihhYywge1xuICAgICAgICAgIG1heFdpZHRoOiAnOTB2dycsXG4gICAgICAgICAgbWF4SGVpZ2h0OiAnOTB2aCcsXG4gICAgICAgICAgbWluV2lkdGg6ICc1MHZ3JyxcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBkbXNPYmplY3QsXG4gICAgICAgICAgICBmbGF2b3IsXG4gICAgICAgICAgICBkYXRhXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc290czogc3RyaW5nW10gPSAoZG1zT2JqZWN0LmRhdGFbQmFzZU9iamVjdFR5cGVGaWVsZC5TRUNPTkRBUllfT0JKRUNUX1RZUEVfSURTXSBhcyBzdHJpbmdbXSkgfHwgW107XG4gICAgICAgIGNvbnN0IGRhdGE6IGFueSA9IHt9O1xuICAgICAgICBkYXRhW0Jhc2VPYmplY3RUeXBlRmllbGQuU0VDT05EQVJZX09CSkVDVF9UWVBFX0lEU10gPSBbLi4uc290cywgZmxhdm9yLnNvdF07XG4gICAgICAgIHJldHVybiB0aGlzLiNkbXNTZXJ2aWNlLnVwZGF0ZURtc09iamVjdChkbXNPYmplY3Q/LmlkLCBkYXRhKS5waXBlKG1hcCgoKSA9PiB0cnVlKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHJldHVybiBvZihmYWxzZSk7XG4gIH1cblxuICByZW1vdmVPYmplY3RGbGF2b3IoZG1zT2JqZWN0OiBEbXNPYmplY3QsIGZsYXZvcjogT2JqZWN0Rmxhdm9yKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAoZmxhdm9yLnByZXZlbnRSZW1vdmUpIHJldHVybiBvZihmYWxzZSk7XG4gICAgY29uc3QgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgICBbQmFzZU9iamVjdFR5cGVGaWVsZC5TRUNPTkRBUllfT0JKRUNUX1RZUEVfSURTXTogKFxuICAgICAgICBkbXNPYmplY3QuZGF0YVtCYXNlT2JqZWN0VHlwZUZpZWxkLlNFQ09OREFSWV9PQkpFQ1RfVFlQRV9JRFNdIGFzIHN0cmluZ1tdXG4gICAgICApLmZpbHRlcigoc290OiBzdHJpbmcpID0+IHNvdCAhPT0gZmxhdm9yLnNvdClcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLiNkbXNTZXJ2aWNlLnVwZGF0ZURtc09iamVjdChkbXNPYmplY3QuaWQsIGRhdGEpLnBpcGUobWFwKCgpID0+IHRydWUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgb2JqZWN0IGZsYXZvcnMgYXBwbGljYWJsZSBmb3IgYSBjZXJ0YWluIG1pbWV0eXBlXG4gICAqIEBwYXJhbSBtaW1lVHlwZSBNaW1lIHR5cGUgb3IgbWltZSB0eXBlIHBhdHRlcm4gbGlrZSAnaW1hZ2UvKidcbiAgICogQHBhcmFtIGFwcCBPcHRpb25hbCBhcHAgSUQgdGhhdCByZXN0cmljdHMgdGhlIHJldHVybmVkIGZsYXZvcnMgdG8gdGhlIG9uZXNcbiAgICogcHJvdmlkZWQgYnkgYSBwYXJ0aWN1bGFyIGFwcFxuICAgKiBAcGFyYW0gY3VzdG9tRmxhdm9ycyBPcHRpb25hbCBhcnJheSBvZiBjdXN0b20gZmxhdm9ycyB0byBhbHNvIHRha2UgaW50byBhY2NvdW50LlxuICAgKiBUaGlzIGNvdWxkIGJlIGZsYXZvcnMgbWFuYWdlZCBieSBhbiBhcHAgaXRzZWxmIHRoYXQgYXJlIG5vdCBzdXBwb3NlZCB0byBiZVxuICAgKiBleHBvc2VkIHRvIG90aGVyIGFwcHNcbiAgICogQHJldHVybnMgQXJyYXkgb2YgbWF0Y2hpbmcgb2JqZWN0IGZsYXZvcnNcbiAgICovXG4gIGdldEFwcGxpY2FibGVEb2N1bWVudEZsYXZvcnMobWltZVR5cGU6IHN0cmluZywgYXBwPzogc3RyaW5nLCBjdXN0b21GbGF2b3JzPzogT2JqZWN0Rmxhdm9yW10pOiBPYmplY3RGbGF2b3JbXSB7XG4gICAgcmV0dXJuIFsuLi4oY3VzdG9tRmxhdm9ycyB8fCBbXSksIC4uLnRoaXMuX29iamVjdEZsYXZvcnNdLmZpbHRlcihcbiAgICAgIChvZjogT2JqZWN0Rmxhdm9yKSA9PlxuICAgICAgICAvLyAhb2YucHJldmVudEFwcGx5ICYmXG4gICAgICAgICghb2YuYXBwbGljYWJsZVRvPy5mb2xkZXJzIHx8IChvZi5hcHBsaWNhYmxlVG8/LmZvbGRlcnMgJiYgb2YuYXBwbGljYWJsZVRvPy5kb2N1bWVudHMpKSAmJlxuICAgICAgICAoIW9mLmFwcGxpY2FibGVUbyB8fFxuICAgICAgICAgICFvZi5hcHBsaWNhYmxlVG8/Lm1pbWVUeXBlcyB8fFxuICAgICAgICAgIChvZi5hcHBsaWNhYmxlVG8/Lm1pbWVUeXBlcz8uc29tZSgobXRwKSA9PiBVdGlscy5wYXR0ZXJuVG9SZWdFeHAobXRwKS50ZXN0KG1pbWVUeXBlKSkgJiZcbiAgICAgICAgICAgICghYXBwIHx8IG9mLmFwcCA9PT0gYXBwKSkpXG4gICAgKTtcbiAgfVxuXG4gIGdldEFwcGxpY2FibGVGb2xkZXJGbGF2b3JzKGFwcD86IHN0cmluZywgY3VzdG9tRmxhdm9ycz86IE9iamVjdEZsYXZvcltdKTogT2JqZWN0Rmxhdm9yW10ge1xuICAgIHJldHVybiBbLi4uKGN1c3RvbUZsYXZvcnMgfHwgW10pLCAuLi50aGlzLl9vYmplY3RGbGF2b3JzXS5maWx0ZXIoXG4gICAgICAob2Y6IE9iamVjdEZsYXZvcikgPT4gIW9mLnByZXZlbnRBcHBseSAmJiBvZi5hcHBsaWNhYmxlVG8/LmZvbGRlcnMgJiYgKCFhcHAgfHwgb2YuYXBwID09PSBhcHApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYXBwbGllZCBhbmQgYXBwbGljYWJsZSBvYmplY3QgZmxhdm9ycyBmb3IgYSBjZXJ0YWluIG9iamVjdFxuICAgKiBAcGFyYW0gZG1zT2JqZWN0IERtc09iamVjdCB0byBnZXQgZmxhdm9ycyBmb3JcbiAgICogQHJldHVybnMgT2JqZWN0IGNvbnRhaW5pbmcgdHdvIGFycmF5czogYXBwbGllZCBhbmQgYXBwbGljYWJsZSBmbGF2b3JzXG4gICAqL1xuICBnZXRBcHBsaWVkT2JqZWN0Rmxhdm9ycyhkbXNPYmplY3Q6IERtc09iamVjdCk6IHtcbiAgICBhcHBsaWVkOiBPYmplY3RGbGF2b3JbXTtcbiAgICBhcHBsaWNhYmxlOiBPYmplY3RGbGF2b3JbXTtcbiAgfSB7XG4gICAgY29uc3QgYXBwbGllZDogT2JqZWN0Rmxhdm9yW10gPSBbXTtcbiAgICBjb25zdCBhcHBsaWNhYmxlOiBPYmplY3RGbGF2b3JbXSA9IFtdO1xuICAgIGlmIChkbXNPYmplY3QpIHtcbiAgICAgIGNvbnN0IHNvdHM6IHN0cmluZ1tdID0gKGRtc09iamVjdC5kYXRhW0Jhc2VPYmplY3RUeXBlRmllbGQuU0VDT05EQVJZX09CSkVDVF9UWVBFX0lEU10gYXMgc3RyaW5nW10pIHx8IFtdO1xuICAgICAgaWYgKGRtc09iamVjdC5jb250ZW50KSB7XG4gICAgICAgIHRoaXMuZ2V0QXBwbGljYWJsZURvY3VtZW50Rmxhdm9ycyhkbXNPYmplY3QuY29udGVudC5taW1lVHlwZSkuZm9yRWFjaCgoZmxhdm9yOiBPYmplY3RGbGF2b3IpID0+IHtcbiAgICAgICAgICBmbGF2b3IgPSB7XG4gICAgICAgICAgICAuLi5mbGF2b3IsXG4gICAgICAgICAgICBuYW1lOiB0aGlzLiNzeXN0ZW0uZ2V0TG9jYWxpemVkTGFiZWwoZmxhdm9yLmlkKSB8fCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGZsYXZvci5pZCksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgdGhpcy4jc3lzdGVtLmdldExvY2FsaXplZERlc2NyaXB0aW9uKGZsYXZvci5pZCkgfHxcbiAgICAgICAgICAgICAgKGZsYXZvci5kZXNjcmlwdGlvbktleSA/IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoZmxhdm9yLmRlc2NyaXB0aW9uS2V5KSA6IHVuZGVmaW5lZClcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmIChzb3RzLmluY2x1ZGVzKGZsYXZvci5zb3QpKSB7XG4gICAgICAgICAgICBhcHBsaWVkLnB1c2goZmxhdm9yKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCFmbGF2b3IucHJldmVudEFwcGx5KSB7XG4gICAgICAgICAgICBhcHBsaWNhYmxlLnB1c2goZmxhdm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoZG1zT2JqZWN0LmlzRm9sZGVyKSB7XG4gICAgICAgIHRoaXMuZ2V0QXBwbGljYWJsZUZvbGRlckZsYXZvcnMoKS5mb3JFYWNoKChmbGF2b3I6IE9iamVjdEZsYXZvcikgPT4ge1xuICAgICAgICAgIGZsYXZvciA9IHtcbiAgICAgICAgICAgIC4uLmZsYXZvcixcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuI3N5c3RlbS5nZXRMb2NhbGl6ZWRMYWJlbChmbGF2b3IuaWQpIHx8IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoZmxhdm9yLmlkKSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICB0aGlzLiNzeXN0ZW0uZ2V0TG9jYWxpemVkRGVzY3JpcHRpb24oZmxhdm9yLmlkKSB8fFxuICAgICAgICAgICAgICAoZmxhdm9yLmRlc2NyaXB0aW9uS2V5ID8gdGhpcy50cmFuc2xhdGUuaW5zdGFudChmbGF2b3IuZGVzY3JpcHRpb25LZXkpIDogdW5kZWZpbmVkKVxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKHNvdHMuaW5jbHVkZXMoZmxhdm9yLnNvdCkpIHtcbiAgICAgICAgICAgIGFwcGxpZWQucHVzaChmbGF2b3IpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhcHBsaWNhYmxlLnB1c2goZmxhdm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBhcHBsaWVkLCBhcHBsaWNhYmxlIH07XG4gIH1cblxuICBnZXRGbGF2b3JMYWJlbChpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuI3N5c3RlbS5nZXRMb2NhbGl6ZWRMYWJlbChpZCkgfHwgdGhpcy50cmFuc2xhdGUuaW5zdGFudChpZCk7XG4gIH1cblxuICBhcHBseU9iamVjdEZsYXZvcihcbiAgICBkbXNPYmplY3Q6IERtc09iamVjdCxcbiAgICBmbGF2b3I6IE9iamVjdEZsYXZvcixcbiAgICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9XG4gICk6IE9ic2VydmFibGU8RG1zT2JqZWN0PiB7XG4gICAgY29uc3Qgc290czogc3RyaW5nW10gPSAoZG1zT2JqZWN0LmRhdGFbQmFzZU9iamVjdFR5cGVGaWVsZC5TRUNPTkRBUllfT0JKRUNUX1RZUEVfSURTXSBhcyBzdHJpbmdbXSkgfHwgW107XG4gICAgZGF0YVtCYXNlT2JqZWN0VHlwZUZpZWxkLlNFQ09OREFSWV9PQkpFQ1RfVFlQRV9JRFNdID0gWy4uLnNvdHMsIGZsYXZvci5zb3RdO1xuICAgIHJldHVybiB0aGlzLiNkbXNTZXJ2aWNlLnVwZGF0ZURtc09iamVjdChkbXNPYmplY3QuaWQsIGRhdGEpO1xuICB9XG5cbiAgcmVnaXN0ZXJUaWxlRXh0ZW5zaW9uKGV4dDogVGlsZUV4dGVuc2lvbikge1xuICAgIHRoaXMuX2V4dGVuc2lvbnNbZXh0LnR5cGVJZF0gPSBleHQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRpbGUgZXh0ZW5zaW9ucyBmb3IgYSBjZXJ0YWluIHR5cGVcbiAgICogQHBhcmFtIHR5cGVJZCBJRCBvZiB0aGUgdHlwZSB0byBmZXRjaCBleHRlc2lvbiBmb3IgKG9iamVjdFR5cGVJRCBvciBzZWNvbmRhcnlPYmplY3RUeXBlSUQpXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBnZXRSZWdpc3RlcmVkVGlsZUV4dGVuc2lvbnMoKTogUmVjb3JkPHN0cmluZywgVGlsZUV4dGVuc2lvbj4ge1xuICAgIHJldHVybiB0aGlzLl9leHRlbnNpb25zO1xuICB9XG5cbiAgX2luaXRPYmplY3RUeXBlQ29uZmlnKCk6IFByb21pc2U8dW5rbm93bj4ge1xuICAgIC8vIGxvYWQgZmxhdm9ycyBmcm9tIGNvbmZpZ1xuICAgIGNvbnNvbGUuZGVidWcoJ0xvYWRpbmcgb2JqZWN0IHR5cGUgY29uZmlnLi4uJyk7XG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKFxuICAgICAgdGhpcy4jc2hlbGxDb25maWcuZ2V0KFNIRUxMX0NPTkZJR19UWVBFUykucGlwZShcbiAgICAgICAgdGFwKChyZXM6IFNoZWxsQ29uZmlnIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgdGhpcy4jcmVnaXN0ZXJPYmplY3RUeXBlSWNvbnMoKHJlcy5kYXRhIGFzIENsaWVudFNoZWxsVHlwZVtdKS5tYXAoKHQpID0+IHQuaWQpKTtcblxuICAgICAgICAgICAgY29uc3QgZmx2OiBBcHBGbGF2b3JbXSA9IChyZXMuZGF0YSBhcyBDbGllbnRTaGVsbFR5cGVbXSkubWFwKCh0KSA9PiAoe1xuICAgICAgICAgICAgICBpZDogdC5pZCxcbiAgICAgICAgICAgICAgc290OiB0LmlkLFxuICAgICAgICAgICAgICBpY29uOiB0LmlkLFxuICAgICAgICAgICAgICBzdmdJY29uOiB0cnVlLFxuICAgICAgICAgICAgICBvYmplY3RUeXBlSUQ6IHQuYmFzZVR5cGUsXG4gICAgICAgICAgICAgIGFwcGxpY2FibGVUbzoge1xuICAgICAgICAgICAgICAgIGZvbGRlcnM6IHQuYmFzZVR5cGUgPT09IFN5c3RlbVR5cGUuRk9MREVSIHx8IHQuYmFzZVR5cGUgPT09IFN5c3RlbVR5cGUuT0JKRUNULFxuICAgICAgICAgICAgICAgIGRvY3VtZW50czogdC5iYXNlVHlwZSA9PT0gU3lzdGVtVHlwZS5ET0NVTUVOVCB8fCB0LmJhc2VUeXBlID09PSBTeXN0ZW1UeXBlLk9CSkVDVCxcbiAgICAgICAgICAgICAgICBtaW1lVHlwZXM6IHQuYXBwbGljYWJsZVRvTWltZVR5cGVzIHx8IHVuZGVmaW5lZFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB1c2VEZWZhdWx0QXBwbHlDb21wb25lbnQ6ICF0Lmluc3RhbnRBcHBseVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgdGhpcy5leHBvc2VPYmplY3RGbGF2b3JzKGZsdiwgJ2dsb2JhbCcsICdjb25maWcnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gICNyZWdpc3Rlck9iamVjdFR5cGVJY29ucyhpZHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy4jc3lzdGVtLnN5c3RlbSQucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWRzLmZvckVhY2goKGlkKSA9PiB7XG4gICAgICAgIC8vIHNwbGl0IHRlY2huaWNhbCBuYW1lIGUuZy4gJ3N5c3RlbTpkb2N1bWVudCcgYW5kIHVzZSB0aGUgZmlyc3QgcGFydCBhcyBuYW1lc3BhY2VcbiAgICAgICAgY29uc3QgaWRUb2tlbnMgPSBpZC5zcGxpdCgnOicpO1xuICAgICAgICBpZiAoaWRUb2tlbnMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgY29uc3QgdXJpID0gYCR7dGhpcy4jY29uZmlnU2VydmljZS5nZXRBcGlCYXNlKEFwaUJhc2Uubm9uZSwgdHJ1ZSl9JHt0aGlzLiNzeXN0ZW0uZ2V0T2JqZWN0VHlwZUljb25VcmkoaWQpfWA7XG4gICAgICAgICAgdGhpcy4jaWNvblJlZ2lzdHJ5LmFkZFN2Z0ljb25Jbk5hbWVzcGFjZShcbiAgICAgICAgICAgIGlkVG9rZW5zWzBdLFxuICAgICAgICAgICAgaWRUb2tlbnNbMV0sXG4gICAgICAgICAgICB0aGlzLiNzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHVyaSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIF9pbml0KCkge1xuICAgIC8vIHRoZSBwbGFjZSBmb3IgaW5pdGlhbGl6YXRpb24gdGFza3MgaWZcbiAgfVxufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yuuvis/client-shell-core",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.20.0",
|
|
4
4
|
"author": "OPTIMAL SYSTEMS GmbH <npm@optimal-systems.de>",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"peerDependencies": {
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"@angular/material": "^19.2.15",
|
|
10
10
|
"rxjs": "^7.8.2",
|
|
11
11
|
"@angular/platform-browser": "^19.2.1",
|
|
12
|
-
"@yuuvis/client-core": "^2.
|
|
12
|
+
"@yuuvis/client-core": "^2.20.0"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"tslib": "^2.3.0"
|