@mis-wis/common 0.3.0 → 0.3.1

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.
@@ -0,0 +1,48 @@
1
+ const GUID_GROUP_SEPARATOR = "-";
2
+ const NATIVE_ID_SEPARATOR = "$";
3
+ const NATIVE_ID_GROUP_INDEX = 4;
4
+ const JAVA_INT_MIN = -2147483648;
5
+ const JAVA_INT_MAX = 2147483647;
6
+ /** `Integer.valueOf` semantics: optional sign, digits only, within Java `int` range; `null` where Java throws. */
7
+ function parseJavaInt(value) {
8
+ if (!/^[+-]?\d+$/.test(value)) {
9
+ return null;
10
+ }
11
+ const parsed = Number(value);
12
+ return parsed >= JAVA_INT_MIN && parsed <= JAVA_INT_MAX ? parsed : null;
13
+ }
14
+ const reverse = (value) => value.split("").reverse().join("");
15
+ /**
16
+ * The native (STW) id an entity GUID encodes, e.g. `EMqaTest-6$00-0000-0000-000000000001` → `1`.
17
+ *
18
+ * Port of ETS `CentralRepositoryUtils.getNativeId` (configuration-models), kept to its exact
19
+ * behaviour so the UI and the server always agree: the id is read from the GUID's fifth group —
20
+ * after its first `$` when it has one — and when that isn't a plain integer, from the run of
21
+ * digits that ends the group.
22
+ *
23
+ * Returns `null` wherever the Java original throws: no fifth group, or no id to read from it.
24
+ */
25
+ export function getNativeIdFromGuid(guid) {
26
+ if (typeof guid !== "string") {
27
+ return null;
28
+ }
29
+ const group = guid.split(GUID_GROUP_SEPARATOR)[NATIVE_ID_GROUP_INDEX];
30
+ if (group === undefined) {
31
+ return null;
32
+ }
33
+ const direct = parseJavaInt(group.substring(group.indexOf(NATIVE_ID_SEPARATOR) + 1));
34
+ if (direct !== null) {
35
+ return direct;
36
+ }
37
+ // Fallback: collect digits from the end of the group, stopping at the first one Java rejects.
38
+ const reversed = reverse(group);
39
+ let digits = "";
40
+ for (const char of reversed) {
41
+ if (parseJavaInt(digits + char) === null) {
42
+ break;
43
+ }
44
+ digits += char;
45
+ }
46
+ return parseJavaInt(reverse(digits));
47
+ }
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZC5mdW5jdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvd2lzLWNvbW1vbi9zcmMvbGliL2Z1bmN0aW9ucy9ndWlkLmZ1bmN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztBQUNqQyxNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQztBQUNoQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBQztBQUNoQyxNQUFNLFlBQVksR0FBRyxDQUFDLFVBQVUsQ0FBQztBQUNqQyxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUM7QUFFaEMsa0hBQWtIO0FBQ2xILFNBQVMsWUFBWSxDQUFDLEtBQWE7SUFDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDN0IsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUNELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixPQUFPLE1BQU0sSUFBSSxZQUFZLElBQUksTUFBTSxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDMUUsQ0FBQztBQUVELE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBYSxFQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUU5RTs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsSUFBK0I7SUFDakUsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUU7UUFDNUIsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3RFLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtRQUN2QixPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckYsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO1FBQ25CLE9BQU8sTUFBTSxDQUFDO0tBQ2Y7SUFFRCw4RkFBOEY7SUFDOUYsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNoQixLQUFLLE1BQU0sSUFBSSxJQUFJLFFBQVEsRUFBRTtRQUMzQixJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3hDLE1BQU07U0FDUDtRQUNELE1BQU0sSUFBSSxJQUFJLENBQUM7S0FDaEI7SUFDRCxPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgR1VJRF9HUk9VUF9TRVBBUkFUT1IgPSBcIi1cIjtcbmNvbnN0IE5BVElWRV9JRF9TRVBBUkFUT1IgPSBcIiRcIjtcbmNvbnN0IE5BVElWRV9JRF9HUk9VUF9JTkRFWCA9IDQ7XG5jb25zdCBKQVZBX0lOVF9NSU4gPSAtMjE0NzQ4MzY0ODtcbmNvbnN0IEpBVkFfSU5UX01BWCA9IDIxNDc0ODM2NDc7XG5cbi8qKiBgSW50ZWdlci52YWx1ZU9mYCBzZW1hbnRpY3M6IG9wdGlvbmFsIHNpZ24sIGRpZ2l0cyBvbmx5LCB3aXRoaW4gSmF2YSBgaW50YCByYW5nZTsgYG51bGxgIHdoZXJlIEphdmEgdGhyb3dzLiAqL1xuZnVuY3Rpb24gcGFyc2VKYXZhSW50KHZhbHVlOiBzdHJpbmcpOiBudW1iZXIgfCBudWxsIHtcbiAgaWYgKCEvXlsrLV0/XFxkKyQvLnRlc3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgcGFyc2VkID0gTnVtYmVyKHZhbHVlKTtcbiAgcmV0dXJuIHBhcnNlZCA+PSBKQVZBX0lOVF9NSU4gJiYgcGFyc2VkIDw9IEpBVkFfSU5UX01BWCA/IHBhcnNlZCA6IG51bGw7XG59XG5cbmNvbnN0IHJldmVyc2UgPSAodmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PiB2YWx1ZS5zcGxpdChcIlwiKS5yZXZlcnNlKCkuam9pbihcIlwiKTtcblxuLyoqXG4gKiBUaGUgbmF0aXZlIChTVFcpIGlkIGFuIGVudGl0eSBHVUlEIGVuY29kZXMsIGUuZy4gYEVNcWFUZXN0LTYkMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMWAg4oaSIGAxYC5cbiAqXG4gKiBQb3J0IG9mIEVUUyBgQ2VudHJhbFJlcG9zaXRvcnlVdGlscy5nZXROYXRpdmVJZGAgKGNvbmZpZ3VyYXRpb24tbW9kZWxzKSwga2VwdCB0byBpdHMgZXhhY3RcbiAqIGJlaGF2aW91ciBzbyB0aGUgVUkgYW5kIHRoZSBzZXJ2ZXIgYWx3YXlzIGFncmVlOiB0aGUgaWQgaXMgcmVhZCBmcm9tIHRoZSBHVUlEJ3MgZmlmdGggZ3JvdXAg4oCUXG4gKiBhZnRlciBpdHMgZmlyc3QgYCRgIHdoZW4gaXQgaGFzIG9uZSDigJQgYW5kIHdoZW4gdGhhdCBpc24ndCBhIHBsYWluIGludGVnZXIsIGZyb20gdGhlIHJ1biBvZlxuICogZGlnaXRzIHRoYXQgZW5kcyB0aGUgZ3JvdXAuXG4gKlxuICogUmV0dXJucyBgbnVsbGAgd2hlcmV2ZXIgdGhlIEphdmEgb3JpZ2luYWwgdGhyb3dzOiBubyBmaWZ0aCBncm91cCwgb3Igbm8gaWQgdG8gcmVhZCBmcm9tIGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmF0aXZlSWRGcm9tR3VpZChndWlkOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogbnVtYmVyIHwgbnVsbCB7XG4gIGlmICh0eXBlb2YgZ3VpZCAhPT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgZ3JvdXAgPSBndWlkLnNwbGl0KEdVSURfR1JPVVBfU0VQQVJBVE9SKVtOQVRJVkVfSURfR1JPVVBfSU5ERVhdO1xuICBpZiAoZ3JvdXAgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgZGlyZWN0ID0gcGFyc2VKYXZhSW50KGdyb3VwLnN1YnN0cmluZyhncm91cC5pbmRleE9mKE5BVElWRV9JRF9TRVBBUkFUT1IpICsgMSkpO1xuICBpZiAoZGlyZWN0ICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIGRpcmVjdDtcbiAgfVxuXG4gIC8vIEZhbGxiYWNrOiBjb2xsZWN0IGRpZ2l0cyBmcm9tIHRoZSBlbmQgb2YgdGhlIGdyb3VwLCBzdG9wcGluZyBhdCB0aGUgZmlyc3Qgb25lIEphdmEgcmVqZWN0cy5cbiAgY29uc3QgcmV2ZXJzZWQgPSByZXZlcnNlKGdyb3VwKTtcbiAgbGV0IGRpZ2l0cyA9IFwiXCI7XG4gIGZvciAoY29uc3QgY2hhciBvZiByZXZlcnNlZCkge1xuICAgIGlmIChwYXJzZUphdmFJbnQoZGlnaXRzICsgY2hhcikgPT09IG51bGwpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBkaWdpdHMgKz0gY2hhcjtcbiAgfVxuICByZXR1cm4gcGFyc2VKYXZhSW50KHJldmVyc2UoZGlnaXRzKSk7XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy93aXMtY29tbW9uL3NyYy9saWIvbW9kZWxzL3Nlc3Npb24ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBuYW1lc3BhY2UgTnNTZXNzaW9uIHtcbiAgZXhwb3J0IGludGVyZmFjZSBJQ2xhaW1zIHtcbiAgICBzdWI/OiBzdHJpbmc7XG4gICAgZW1wbG95ZWVHVUlEPzogc3RyaW5nO1xuICAgIGVtcGxveWVlSWQ/OiBzdHJpbmc7XG4gICAgaW50ZXJuYWxfc3NvX3JvbGU/OiBzdHJpbmc7XG4gICAgc2Vzc2lvbklkPzogc3RyaW5nO1xuICAgIGxvZ2dlZEluVXNlcj86IHN0cmluZztcbiAgICB2ZXRVc2VyRW1haWxJZD86IHN0cmluZztcbiAgICB2ZXRVc2VySWQ/OiBudW1iZXI7XG4gICAgc291cmNlPzogc3RyaW5nO1xuICAgIHJvbGVzPzogc3RyaW5nW107XG4gICAgZXhwPzogbnVtYmVyOyAvLyBpbiBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaFxuICAgIGlhdD86IG51bWJlcjtcbiAgICBidXNpbmVzc1VuaXRJZD86IHN0cmluZztcbiAgICBBTExPV0VEX0JVSURTPzogc3RyaW5nW107XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIElJbml0Q29uZmlnIHtcbiAgICBzZXNzaW9uVG9rZW5Db29raWVLZXk/OiBzdHJpbmc7XG4gICAgdmV0VG9rZW5Db29raWVLZXk/OiBzdHJpbmc7XG4gIH1cbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy93aXMtY29tbW9uL3NyYy9saWIvbW9kZWxzL3Nlc3Npb24ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBuYW1lc3BhY2UgTnNTZXNzaW9uIHtcbiAgZXhwb3J0IGludGVyZmFjZSBJQ2xhaW1zIHtcbiAgICBzdWI/OiBzdHJpbmc7XG4gICAgZW1wbG95ZWVHVUlEPzogc3RyaW5nO1xuICAgIGVtcGxveWVlSWQ/OiBzdHJpbmc7XG4gICAgaW50ZXJuYWxfc3NvX3JvbGU/OiBzdHJpbmc7XG4gICAgc2Vzc2lvbklkPzogc3RyaW5nO1xuICAgIGxvZ2dlZEluVXNlcj86IHN0cmluZztcbiAgICBsb2dpbkVtYWlsPzogc3RyaW5nO1xuICAgIHZldFVzZXJFbWFpbElkPzogc3RyaW5nO1xuICAgIHZldFVzZXJJZD86IG51bWJlcjtcbiAgICBzb3VyY2U/OiBzdHJpbmc7XG4gICAgcm9sZXM/OiBzdHJpbmdbXTtcbiAgICBleHA/OiBudW1iZXI7IC8vIGluIHNlY29uZHMgc2luY2UgdGhlIGVwb2NoXG4gICAgaWF0PzogbnVtYmVyO1xuICAgIGJ1c2luZXNzVW5pdElkPzogc3RyaW5nO1xuICAgIEFMTE9XRURfQlVJRFM/OiBzdHJpbmdbXTtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgSUluaXRDb25maWcge1xuICAgIHNlc3Npb25Ub2tlbkNvb2tpZUtleT86IHN0cmluZztcbiAgICB2ZXRUb2tlbkNvb2tpZUtleT86IHN0cmluZztcbiAgfVxufVxuIl19
@@ -85,6 +85,7 @@ export class SessionService {
85
85
  get roles() { return this.getClaim('roles'); }
86
86
  get sessionId() { return this.getClaim('sessionId'); }
87
87
  get loggedInUser() { return this.getClaim('loggedInUser'); }
88
+ get loginEmail() { return this.getClaim('loginEmail'); }
88
89
  get exp() { return this.getClaim('exp'); }
89
90
  get iat() { return this.getClaim('iat'); }
90
91
  get businessUnitId() { return this.getClaim('businessUnitId'); }
@@ -195,4 +196,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
195
196
  providedIn: 'root'
196
197
  }]
197
198
  }] });
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL3dpcy1jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9zZXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFFbkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUzRCxPQUFPLEVBQ0wscUJBQXFCLEVBR3JCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsWUFBWSxFQUNaLHdCQUF3QixFQUN4Qix3QkFBd0IsRUFDeEIseUJBQXlCLEdBQzFCLE1BQU0sa0JBQWtCLENBQUM7O0FBRTFCLE1BQU0sNEJBQTRCLEdBQUcsZUFBZSxDQUFDO0FBQ3JELE1BQU0sa0NBQWtDLEdBQUcsYUFBYSxDQUFDO0FBQ3pELE1BQU0sd0JBQXdCLEdBQUcsYUFBYSxDQUFDO0FBQy9DLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDO0FBc0NoQyxNQUFNLE9BQU8sY0FBYztJQUgzQjtRQUlVLFdBQU0sR0FBMEIsRUFBRSxDQUFDO1FBQ25DLGdCQUFXLEdBQWtCLElBQUksQ0FBQztRQUNsQyxnQkFBVyxHQUF3QixJQUFJLENBQUM7UUFDeEMsZUFBVSxHQUFrQyxJQUFJLENBQUM7S0ErTDFEO0lBN0xDLElBQUksQ0FBQyxNQUE2QjtRQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxD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QUFjLGNBRmIsTUFBTTsyRkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBqd3REZWNvZGUgZnJvbSAnand0LWRlY29kZSc7XG5cbmltcG9ydCB7IGdldENvb2tpZSB9IGZyb20gJy4uL2Z1bmN0aW9ucy9jb29raWUuZnVuY3Rpb24nO1xuaW1wb3J0IHsgZ2V0UXVlcnlQYXJhbSB9IGZyb20gJy4uL2Z1bmN0aW9ucy91cmwuZnVuY3Rpb25zJztcbmltcG9ydCB7IE5zU2Vzc2lvbiB9IGZyb20gJy4uL21vZGVscy9zZXNzaW9uLm1vZGVsJztcbmltcG9ydCB7XG4gIGRlc2NyaWJlQ2xhaW1GYWlsdXJlcyxcbiAgSVNlc3Npb25DbGFpbUZhaWx1cmUsXG4gIFNlc3Npb25DbGFpbUZhaWx1cmVSZWFzb24sXG4gIFNlc3Npb25DbGFpbU5vdEZvdW5kRXJyb3IsXG4gIFNlc3Npb25DbGFpbXNNaXNzaW5nRXJyb3IsXG4gIFNlc3Npb25FcnJvcixcbiAgU2Vzc2lvblRva2VuRXhwaXJlZEVycm9yLFxuICBTZXNzaW9uVG9rZW5JbnZhbGlkRXJyb3IsXG4gIFNlc3Npb25Ub2tlbk5vdEZvdW5kRXJyb3IsXG59IGZyb20gJy4vc2Vzc2lvbi5lcnJvcnMnO1xuXG5jb25zdCBERUZBVUxUX1NFU1NJT05fVE9LRU5fUFJFRklYID0gJ3Nzby13aXMtdG9rZW4nO1xuY29uc3QgREVGQVVMVF9TRVNTSU9OX1RPS0VOX0ZBTExCQUNLX0tFWSA9ICd4LXdpcy10b2tlbic7XG5jb25zdCBERUZBVUxUX1ZFVF9UT0tFTl9QUkVGSVggPSAneC12ZXQtdG9rZW4nO1xuY29uc3QgTEFVTkNIX1NPVVJDRV9WRVQgPSAnVkVUJztcblxuLyoqIFRoZSBhY2Nlc3NvcnMgdGhhdCByZWFkIGEgc2luZ2xlIGNsYWltLCBhbmQgc28gY2FuIGNvbWUgYmFjayBgdW5kZWZpbmVkYCBpbnNpZGUgYHJ1bmAuICovXG50eXBlIENsYWltQWNjZXNzb3IgPVxuICB8ICdzdWInXG4gIHwgJ2VtcEd1aWQnXG4gIHwgJ2VtcGxveWVlSWQnXG4gIHwgJ2ludGVybmFsU3NvUm9sZSdcbiAgfCAncm9sZXMnXG4gIHwgJ3Nlc3Npb25JZCdcbiAgfCAnbG9nZ2VkSW5Vc2VyJ1xuICB8ICdleHAnXG4gIHwgJ2lhdCdcbiAgfCAnYnVzaW5lc3NVbml0SWQnXG4gIHwgJ2FsbG93ZWRCdWlkcydcbiAgfCAndmV0VXNlckVtYWlsSWQnXG4gIHwgJ3ZldFVzZXJJZCdcbiAgfCAnc291cmNlJ1xuICB8ICdyb2xlSWQnO1xuXG4vKipcbiAqIFRoZSBzZXNzaW9uIGFzIHNlZW4gaW5zaWRlIGBydW5gJ3MgYG5leHRgLiBgcnVuYCBjb2xsZWN0cyBtaXNzaW5nIGNsYWltcyBpbnN0ZWFkIG9mIHRocm93aW5nXG4gKiBzbyB0aGUgYmxvY2sgYWx3YXlzIGNvbXBsZXRlcywgd2hpY2ggbWVhbnMgYW55IGNsYWltIGFjY2Vzc29yIG1heSB5aWVsZCBgdW5kZWZpbmVkYC5cbiAqIE91dHNpZGUgYHJ1bmAg4oCUIGRpcmVjdCBhY2Nlc3MsIG9yIGByZWFkYCDigJQgdGhlIGFjY2Vzc29ycyBzdGlsbCB0aHJvdyBhbmQgc3RheSBub24tb3B0aW9uYWwuXG4gKi9cbmV4cG9ydCB0eXBlIFBhcnRpYWxTZXNzaW9uID0gT21pdDxTZXNzaW9uU2VydmljZSwgQ2xhaW1BY2Nlc3Nvcj4gJiB7XG4gIHJlYWRvbmx5IFtLIGluIENsYWltQWNjZXNzb3JdOiBTZXNzaW9uU2VydmljZVtLXSB8IHVuZGVmaW5lZDtcbn07XG5cbnR5cGUgU2Vzc2lvblN0YXRlID1cbiAgfCB7IHN0YXR1czogJ29rJzsgY2xhaW1zOiBOc1Nlc3Npb24uSUNsYWltczsgaXNWRVQ6IGJvb2xlYW4gfVxuICB8IHsgc3RhdHVzOiAnbm90LWZvdW5kJzsgaXNWRVQ6IGJvb2xlYW4gfVxuICB8IHsgc3RhdHVzOiAnZXhwaXJlZCc7IGlzVkVUOiBib29sZWFuIH1cbiAgfCB7IHN0YXR1czogJ2ludmFsaWQnOyBpc1ZFVDogYm9vbGVhbiB9O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBTZXNzaW9uU2VydmljZSB7XG4gIHByaXZhdGUgY29uZmlnOiBOc1Nlc3Npb24uSUluaXRDb25maWcgPSB7fTtcbiAgcHJpdmF0ZSBjYWNoZWRUb2tlbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgY2FjaGVkU3RhdGU6IFNlc3Npb25TdGF0ZSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGNvbGxlY3Rpbmc6IElTZXNzaW9uQ2xhaW1GYWlsdXJlW10gfCBudWxsID0gbnVsbDtcblxuICBpbml0KGNvbmZpZzogTnNTZXNzaW9uLklJbml0Q29uZmlnKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWcgPSB7IC4uLmNvbmZpZyB9O1xuICAgIHRoaXMuY2FjaGVkVG9rZW4gPSBudWxsO1xuICAgIHRoaXMuY2FjaGVkU3RhdGUgPSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgYGhhbmRsZXJzLm5leHRgIGFuZCByZXR1cm5zIGl0cyByZXN1bHQsIG9yIGBoYW5kbGVycy5lcnJvcihlcnJvcilgIGlmIGl0IHRocm93cyBhIGBTZXNzaW9uRXJyb3JgLlxuICAgKiBDZW50cmFsaXplcyB0aGUgdHJ5L2NhdGNoIG1lY2hhbmljczsgdGhlIGNhbGxlciBzdGlsbCBzdXBwbGllcyB0aGUgYWN0dWFsIGhhbmRsaW5nIGxvZ2ljLlxuICAgKi9cbiAgcmVhZDxUPihoYW5kbGVyczogeyBuZXh0OiAoc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UpID0+IFQ7IGVycm9yOiAoZXJyb3I6IFNlc3Npb25FcnJvcikgPT4gVCB9KTogVCB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBoYW5kbGVycy5uZXh0KHRoaXMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgU2Vzc2lvbkVycm9yKSB7XG4gICAgICAgIHJldHVybiBoYW5kbGVycy5lcnJvcihlKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN0YXRlbWVudC1zdHlsZSB2YXJpYW50IG9mIGByZWFkYCBmb3IgYmxvY2tzIG9mIGFzc2lnbm1lbnRzL3NpZGUgZWZmZWN0cyB3aXRoIG5vIHJldHVybiB2YWx1ZS5cbiAgICpcbiAgICogYG5leHRgIGFsd2F5cyBydW5zIHRvIGNvbXBsZXRpb246IGEgY2xhaW0gdGhhdCBpcyBhYnNlbnQgb3IgYmxhbmsgeWllbGRzIGB1bmRlZmluZWRgIGluc3RlYWQgb2ZcbiAgICogdGhyb3dpbmcsIGFuZCBldmVyeSBzdWNoIGZhaWx1cmUgaXMgcmVwb3J0ZWQgb25jZSBhZnRlcndhcmRzIHZpYSBgaGFuZGxlcnMuZXJyb3JgLCBhcyBhXG4gICAqIGBTZXNzaW9uQ2xhaW1zTWlzc2luZ0Vycm9yYCBsaXN0aW5nIGFsbCBvZiB0aGVtLiBBbiB1bnVzYWJsZSB0b2tlbiAobWlzc2luZywgZXhwaXJlZCxcbiAgICogdW5kZWNvZGFibGUpIHN0aWxsIGFib3J0cyBgbmV4dGAgaW1tZWRpYXRlbHkgd2l0aCB0aGUgbWF0Y2hpbmcgYFNlc3Npb25FcnJvcmAuXG4gICAqXG4gICAqIENvbGxlY3RpbmcgY292ZXJzIHRoZSBzeW5jaHJvbm91cyBib2R5IG9mIGBuZXh0YCBvbmx5IOKAlCBjbGFpbSByZWFkcyBkZWZlcnJlZCBpbnRvIGEgc3Vic2NyaXB0aW9uLFxuICAgKiB0aW1lb3V0IG9yIHByb21pc2UgcnVuIGFmdGVyIGl0IGhhcyByZXR1cm5lZCBhbmQgdGhyb3cgYXMgdXN1YWwuXG4gICAqXG4gICAqIEFuIGVycm9yIGBuZXh0YCB0aHJvd3MgZm9yIGFueSBvdGhlciByZWFzb24gcHJvcGFnYXRlcyB1bnRvdWNoZWQsIGV4Y2VwdCB0aGF0IGFueSBjbGFpbXMgbWlzc2luZ1xuICAgKiBhdCB0aGUgdGltZSBhcmUgYXBwZW5kZWQgdG8gaXRzIG1lc3NhZ2UgYW5kIGF0dGFjaGVkIGFzIGBzZXNzaW9uQ2xhaW1GYWlsdXJlc2Ag4oCUIGEgY29sbGVjdGVkXG4gICAqIGB1bmRlZmluZWRgIHJlYWNoaW5nIHRoZSBibG9jayBpcyB0aGUgdXN1YWwgY2F1c2UsIGFuZCB0aGF0IGlzIHRoZSBwYXJ0IHdvcnRoIGtub3dpbmcuXG4gICAqL1xuICBydW4oaGFuZGxlcnM6IHsgbmV4dDogKHNlc3Npb246IFBhcnRpYWxTZXNzaW9uKSA9PiB2b2lkOyBlcnJvcjogKGVycm9yOiBTZXNzaW9uRXJyb3IpID0+IHZvaWQgfSk6IHZvaWQge1xuICAgIGNvbnN0IGZhaWx1cmVzOiBJU2Vzc2lvbkNsYWltRmFpbHVyZVtdID0gW107XG4gICAgY29uc3QgcHJldmlvdXMgPSB0aGlzLmNvbGxlY3Rpbmc7XG4gICAgdGhpcy5jb2xsZWN0aW5nID0gZmFpbHVyZXM7XG4gICAgdHJ5IHtcbiAgICAgIGhhbmRsZXJzLm5leHQodGhpcyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTZXNzaW9uRXJyb3IpIHtcbiAgICAgICAgaGFuZGxlcnMuZXJyb3IoZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChmYWlsdXJlcy5sZW5ndGggJiYgZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIChlIGFzIEVycm9yICYgeyBzZXNzaW9uQ2xhaW1GYWlsdXJlcz86IElTZXNzaW9uQ2xhaW1GYWlsdXJlW10gfSkuc2Vzc2lvbkNsYWltRmFpbHVyZXMgPSBmYWlsdXJlcztcbiAgICAgICAgZS5tZXNzYWdlID0gYCR7ZS5tZXNzYWdlfSDigJQgc2Vzc2lvbiBjbGFpbXMgbWlzc2luZyBkdXJpbmcgcnVuKCk6ICR7ZGVzY3JpYmVDbGFpbUZhaWx1cmVzKGZhaWx1cmVzKX1gO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5jb2xsZWN0aW5nID0gcHJldmlvdXM7XG4gICAgfVxuICAgIGlmIChmYWlsdXJlcy5sZW5ndGgpIHtcbiAgICAgIGhhbmRsZXJzLmVycm9yKG5ldyBTZXNzaW9uQ2xhaW1zTWlzc2luZ0Vycm9yKGZhaWx1cmVzKSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGlzVkVUKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLmlzVkVUO1xuICB9XG5cbiAgZ2V0IHN1YigpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5nZXRDbGFpbSgnc3ViJyk7IH1cbiAgZ2V0IGVtcEd1aWQoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuZ2V0Q2xhaW0oJ2VtcGxveWVlR1VJRCcpOyB9XG4gIGdldCBlbXBsb3llZUlkKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLmdldENsYWltKCdlbXBsb3llZUlkJyk7IH1cbiAgZ2V0IGludGVybmFsU3NvUm9sZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5nZXRDbGFpbSgnaW50ZXJuYWxfc3NvX3JvbGUnKTsgfVxuICBnZXQgcm9sZXMoKTogc3RyaW5nW10geyByZXR1cm4gdGhpcy5nZXRDbGFpbSgncm9sZXMnKTsgfVxuICBnZXQgc2Vzc2lvbklkKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLmdldENsYWltKCdzZXNzaW9uSWQnKTsgfVxuICBnZXQgbG9nZ2VkSW5Vc2VyKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLmdldENsYWltKCdsb2dnZWRJblVzZXInKTsgfVxuICBnZXQgZXhwKCk6IG51bWJlciB7IHJldHVybiB0aGlzLmdldENsYWltKCdleHAnKTsgfVxuICBnZXQgaWF0KCk6IG51bWJlciB7IHJldHVybiB0aGlzLmdldENsYWltKCdpYXQnKTsgfVxuICBnZXQgYnVzaW5lc3NVbml0SWQoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuZ2V0Q2xhaW0oJ2J1c2luZXNzVW5pdElkJyk7IH1cbiAgZ2V0IGFsbG93ZWRCdWlkcygpOiBzdHJpbmdbXSB7IHJldHVybiB0aGlzLmdldENsYWltKCdBTExPV0VEX0JVSURTJyk7IH1cbiAgZ2V0IHZldFVzZXJFbWFpbElkKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLmdldENsYWltKCd2ZXRVc2VyRW1haWxJZCcpOyB9XG4gIGdldCB2ZXRVc2VySWQoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuZ2V0Q2xhaW0oJ3ZldFVzZXJJZCcpOyB9XG4gIGdldCBzb3VyY2UoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuZ2V0Q2xhaW0oJ3NvdXJjZScpOyB9XG5cbiAgZ2V0IHJvbGVJZCgpOiBudW1iZXIge1xuICAgIGNvbnN0IHJhdyA9IHRoaXMucmVzb2x2ZVJvbGUodGhpcy5nZXRDbGFpbXMoKSk7XG4gICAgaWYgKCFyYXcpIHtcbiAgICAgIHJldHVybiB0aGlzLm1pc3NpbmdDbGFpbSgncm9sZUlkJywgJ2Fic2VudCcpO1xuICAgIH1cbiAgICByZXR1cm4gTnVtYmVyKHJhdyk7XG4gIH1cblxuICAvKiogRmlyc3QgbnVtZXJpYyByb2xlIGluIGBpbnRlcm5hbF9zc29fcm9sZWAgdGhlbiBgcm9sZXNgLCBvciBgJydgIHdoZW4gdGhlIHRva2VuIGNhcnJpZXMgbm9uZS4gKi9cbiAgcHJpdmF0ZSByZXNvbHZlUm9sZShjbGFpbXM6IE5zU2Vzc2lvbi5JQ2xhaW1zKTogc3RyaW5nIHtcbiAgICBjb25zdCBjYW5kaWRhdGVzID0gW2NsYWltcy5pbnRlcm5hbF9zc29fcm9sZSwgLi4uKGNsYWltcy5yb2xlcyA/PyBbXSldO1xuICAgIHJldHVybiBjYW5kaWRhdGVzXG4gICAgICAubWFwKHZhbHVlID0+IHZhbHVlPy50cmltKCkpXG4gICAgICAuZmluZCh2YWx1ZSA9PiB0aGlzLmlzRGlnaXRzT25seSh2YWx1ZSkpID8/ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0RpZ2l0c09ubHkodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZhbHVlIGlzIHN0cmluZyB7XG4gICAgcmV0dXJuICEhdmFsdWUgJiYgL15cXGQrJC8udGVzdCh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldENsYWltcygpOiBOc1Nlc3Npb24uSUNsYWltcyB7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlO1xuICAgIGlmIChzdGF0ZS5zdGF0dXMgPT09ICdvaycpIHtcbiAgICAgIHJldHVybiBzdGF0ZS5jbGFpbXM7XG4gICAgfVxuICAgIGlmIChzdGF0ZS5zdGF0dXMgPT09ICdub3QtZm91bmQnKSB7XG4gICAgICB0aHJvdyBuZXcgU2Vzc2lvblRva2VuTm90Rm91bmRFcnJvcigpO1xuICAgIH1cbiAgICBpZiAoc3RhdGUuc3RhdHVzID09PSAnZXhwaXJlZCcpIHtcbiAgICAgIHRocm93IG5ldyBTZXNzaW9uVG9rZW5FeHBpcmVkRXJyb3IoKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IFNlc3Npb25Ub2tlbkludmFsaWRFcnJvcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDbGFpbTxLIGV4dGVuZHMga2V5b2YgTnNTZXNzaW9uLklDbGFpbXM+KGtleTogSyk6IE5vbk51bGxhYmxlPE5zU2Vzc2lvbi5JQ2xhaW1zW0tdPiB7XG4gICAgY29uc3QgY2xhaW1zID0gdGhpcy5nZXRDbGFpbXMoKTtcbiAgICBjb25zdCB2YWx1ZSA9IGNsYWltc1trZXldO1xuICAgIGNvbnN0IGlzRW1wdHlTdHJpbmcgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKSA9PT0gJyc7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgaXNFbXB0eVN0cmluZykge1xuICAgICAgcmV0dXJuIHRoaXMubWlzc2luZ0NsYWltKGtleSBhcyBzdHJpbmcsIGlzRW1wdHlTdHJpbmcgPyAnYmxhbmsnIDogJ2Fic2VudCcpO1xuICAgIH1cbiAgICByZXR1cm4gKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZS50cmltKCkgOiB2YWx1ZSkgYXMgTm9uTnVsbGFibGU8TnNTZXNzaW9uLklDbGFpbXNbS10+O1xuICB9XG5cbiAgLyoqIFJlY29yZHMgdGhlIGZhaWx1cmUgYW5kIHlpZWxkcyBgdW5kZWZpbmVkYCB3aGlsZSBgcnVuYCBpcyBjb2xsZWN0aW5nOyB0aHJvd3Mgb3RoZXJ3aXNlLiAqL1xuICBwcml2YXRlIG1pc3NpbmdDbGFpbShjbGFpbTogc3RyaW5nLCByZWFzb246IFNlc3Npb25DbGFpbUZhaWx1cmVSZWFzb24pOiBuZXZlciB7XG4gICAgaWYgKHRoaXMuY29sbGVjdGluZykge1xuICAgICAgdGhpcy5jb2xsZWN0aW5nLnB1c2goeyBjbGFpbSwgcmVhc29uIH0pO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZCBhcyBuZXZlcjtcbiAgICB9XG4gICAgdGhyb3cgbmV3IFNlc3Npb25DbGFpbU5vdEZvdW5kRXJyb3IoY2xhaW0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgc3RhdGUoKTogU2Vzc2lvblN0YXRlIHtcbiAgICBjb25zdCB7IHRva2VuLCBpc1ZFVCB9ID0gdGhpcy5maW5kVG9rZW4oKTtcbiAgICBpZiAoIXRoaXMuY2FjaGVkU3RhdGUgfHwgdG9rZW4gIT09IHRoaXMuY2FjaGVkVG9rZW4pIHtcbiAgICAgIHRoaXMuY2FjaGVkVG9rZW4gPSB0b2tlbjtcbiAgICAgIHRoaXMuY2FjaGVkU3RhdGUgPSB0aGlzLmJ1aWxkKHRva2VuLCBpc1ZFVCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNhY2hlZFN0YXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZCh0b2tlbjogc3RyaW5nLCBpc1ZFVDogYm9vbGVhbik6IFNlc3Npb25TdGF0ZSB7XG4gICAgaWYgKCF0b2tlbikge1xuICAgICAgcmV0dXJuIHsgc3RhdHVzOiAnbm90LWZvdW5kJywgaXNWRVQgfTtcbiAgICB9XG5cbiAgICBsZXQgY2xhaW1zOiBOc1Nlc3Npb24uSUNsYWltcztcbiAgICB0cnkge1xuICAgICAgY2xhaW1zID0gand0RGVjb2RlPE5zU2Vzc2lvbi5JQ2xhaW1zPih0b2tlbik7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4geyBzdGF0dXM6ICdpbnZhbGlkJywgaXNWRVQgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0V4cGlyZWQoY2xhaW1zKSkge1xuICAgICAgcmV0dXJuIHsgc3RhdHVzOiAnZXhwaXJlZCcsIGlzVkVUIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgc3RhdHVzOiAnb2snLCBjbGFpbXMsIGlzVkVUIH07XG4gIH1cblxuICBwcml2YXRlIGlzRXhwaXJlZChjbGFpbXM6IE5zU2Vzc2lvbi5JQ2xhaW1zKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBjbGFpbXMuZXhwID09PSAnbnVtYmVyJyAmJiBjbGFpbXMuZXhwICogMTAwMCA8PSBEYXRlLm5vdygpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1ZFVFNvdXJjZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZ2V0UXVlcnlQYXJhbSgnc291cmNlJykgPT09IExBVU5DSF9TT1VSQ0VfVkVUO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlQnVpZCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gZ2V0UXVlcnlQYXJhbSgnYnVpZCcpIHx8IGdldENvb2tpZSgnYnVpZCcpIHx8IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGZpbmRUb2tlbigpOiB7IHRva2VuOiBzdHJpbmc7IGlzVkVUOiBib29sZWFuIH0ge1xuICAgIGNvbnN0IGJ1aWQgPSB0aGlzLnJlc29sdmVCdWlkKCk7XG5cbiAgICBpZiAodGhpcy5pc1ZFVFNvdXJjZSgpKSB7XG4gICAgICBjb25zdCB2ZXRLZXkgPSB0aGlzLmNvbmZpZy52ZXRUb2tlbkNvb2tpZUtleSA/PyAoYnVpZCA/IGAke0RFRkFVTFRfVkVUX1RPS0VOX1BSRUZJWH0tJHtidWlkfWAgOiBudWxsKTtcbiAgICAgIGNvbnN0IHZldFRva2VuID0gKHZldEtleSA/IGdldENvb2tpZSh2ZXRLZXkpIDogJycpIHx8ICcnO1xuICAgICAgaWYgKHZldFRva2VuKSB7XG4gICAgICAgIHJldHVybiB7IHRva2VuOiB2ZXRUb2tlbiwgaXNWRVQ6IHRydWUgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBzZXNzaW9uVG9rZW4gPSB0aGlzLmNvbmZpZy5zZXNzaW9uVG9rZW5Db29raWVLZXlcbiAgICAgID8gZ2V0Q29va2llKHRoaXMuY29uZmlnLnNlc3Npb25Ub2tlbkNvb2tpZUtleSlcbiAgICAgIDogKGJ1aWQgPyBnZXRDb29raWUoYCR7REVGQVVMVF9TRVNTSU9OX1RPS0VOX1BSRUZJWH0tJHtidWlkfWApIDogJycpIHx8IGdldENvb2tpZShERUZBVUxUX1NFU1NJT05fVE9LRU5fRkFMTEJBQ0tfS0VZKTtcblxuICAgIHJldHVybiB7IHRva2VuOiBzZXNzaW9uVG9rZW4gfHwgJycsIGlzVkVUOiBmYWxzZSB9O1xuICB9XG59XG4iXX0=
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL3dpcy1jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9zZXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFFbkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUzRCxPQUFPLEVBQ0wscUJBQXFCLEVBR3JCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsWUFBWSxFQUNaLHdCQUF3QixFQUN4Qix3QkFBd0IsRUFDeEIseUJBQXlCLEdBQzFCLE1BQU0sa0JBQWtCLENBQUM7O0FBRTFCLE1BQU0sNEJBQTRCLEdBQUcsZUFBZSxDQUFDO0FBQ3JELE1BQU0sa0NBQWtDLEdBQUcsYUFBYSxDQUFDO0FBQ3pELE1BQU0sd0JBQXdCLEdBQUcsYUFBYSxDQUFDO0FBQy9DLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDO0FBdUNoQyxNQUFNLE9BQU8sY0FBYztJQUgzQjtRQUlVLFdBQU0sR0FBMEIsRUFBRSxDQUFDO1FBQ25DLGdCQUFXLEdBQWtCLElBQUksQ0FBQztRQUNsQyxnQkFBVyxHQUF3QixJQUFJLENBQUM7UUFDeEMsZUFBVSxHQUFrQyxJQUFJLENBQUM7S0FnTTFEO0lBOUxDLElBQUksQ0FBQyxNQUE2QjtRQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxD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SUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ3JELENBQUM7OzJHQW5NVSxjQUFjOytHQUFkLGNBQWMsY0FGYixNQUFNOzJGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IGp3dERlY29kZSBmcm9tICdqd3QtZGVjb2RlJztcblxuaW1wb3J0IHsgZ2V0Q29va2llIH0gZnJvbSAnLi4vZnVuY3Rpb25zL2Nvb2tpZS5mdW5jdGlvbic7XG5pbXBvcnQgeyBnZXRRdWVyeVBhcmFtIH0gZnJvbSAnLi4vZnVuY3Rpb25zL3VybC5mdW5jdGlvbnMnO1xuaW1wb3J0IHsgTnNTZXNzaW9uIH0gZnJvbSAnLi4vbW9kZWxzL3Nlc3Npb24ubW9kZWwnO1xuaW1wb3J0IHtcbiAgZGVzY3JpYmVDbGFpbUZhaWx1cmVzLFxuICBJU2Vzc2lvbkNsYWltRmFpbHVyZSxcbiAgU2Vzc2lvbkNsYWltRmFpbHVyZVJlYXNvbixcbiAgU2Vzc2lvbkNsYWltTm90Rm91bmRFcnJvcixcbiAgU2Vzc2lvbkNsYWltc01pc3NpbmdFcnJvcixcbiAgU2Vzc2lvbkVycm9yLFxuICBTZXNzaW9uVG9rZW5FeHBpcmVkRXJyb3IsXG4gIFNlc3Npb25Ub2tlbkludmFsaWRFcnJvcixcbiAgU2Vzc2lvblRva2VuTm90Rm91bmRFcnJvcixcbn0gZnJvbSAnLi9zZXNzaW9uLmVycm9ycyc7XG5cbmNvbnN0IERFRkFVTFRfU0VTU0lPTl9UT0tFTl9QUkVGSVggPSAnc3NvLXdpcy10b2tlbic7XG5jb25zdCBERUZBVUxUX1NFU1NJT05fVE9LRU5fRkFMTEJBQ0tfS0VZID0gJ3gtd2lzLXRva2VuJztcbmNvbnN0IERFRkFVTFRfVkVUX1RPS0VOX1BSRUZJWCA9ICd4LXZldC10b2tlbic7XG5jb25zdCBMQVVOQ0hfU09VUkNFX1ZFVCA9ICdWRVQnO1xuXG4vKiogVGhlIGFjY2Vzc29ycyB0aGF0IHJlYWQgYSBzaW5nbGUgY2xhaW0sIGFuZCBzbyBjYW4gY29tZSBiYWNrIGB1bmRlZmluZWRgIGluc2lkZSBgcnVuYC4gKi9cbnR5cGUgQ2xhaW1BY2Nlc3NvciA9XG4gIHwgJ3N1YidcbiAgfCAnZW1wR3VpZCdcbiAgfCAnZW1wbG95ZWVJZCdcbiAgfCAnaW50ZXJuYWxTc29Sb2xlJ1xuICB8ICdyb2xlcydcbiAgfCAnc2Vzc2lvbklkJ1xuICB8ICdsb2dnZWRJblVzZXInXG4gIHwgJ2xvZ2luRW1haWwnXG4gIHwgJ2V4cCdcbiAgfCAnaWF0J1xuICB8ICdidXNpbmVzc1VuaXRJZCdcbiAgfCAnYWxsb3dlZEJ1aWRzJ1xuICB8ICd2ZXRVc2VyRW1haWxJZCdcbiAgfCAndmV0VXNlcklkJ1xuICB8ICdzb3VyY2UnXG4gIHwgJ3JvbGVJZCc7XG5cbi8qKlxuICogVGhlIHNlc3Npb24gYXMgc2VlbiBpbnNpZGUgYHJ1bmAncyBgbmV4dGAuIGBydW5gIGNvbGxlY3RzIG1pc3NpbmcgY2xhaW1zIGluc3RlYWQgb2YgdGhyb3dpbmdcbiAqIHNvIHRoZSBibG9jayBhbHdheXMgY29tcGxldGVzLCB3aGljaCBtZWFucyBhbnkgY2xhaW0gYWNjZXNzb3IgbWF5IHlpZWxkIGB1bmRlZmluZWRgLlxuICogT3V0c2lkZSBgcnVuYCDigJQgZGlyZWN0IGFjY2Vzcywgb3IgYHJlYWRgIOKAlCB0aGUgYWNjZXNzb3JzIHN0aWxsIHRocm93IGFuZCBzdGF5IG5vbi1vcHRpb25hbC5cbiAqL1xuZXhwb3J0IHR5cGUgUGFydGlhbFNlc3Npb24gPSBPbWl0PFNlc3Npb25TZXJ2aWNlLCBDbGFpbUFjY2Vzc29yPiAmIHtcbiAgcmVhZG9ubHkgW0sgaW4gQ2xhaW1BY2Nlc3Nvcl06IFNlc3Npb25TZXJ2aWNlW0tdIHwgdW5kZWZpbmVkO1xufTtcblxudHlwZSBTZXNzaW9uU3RhdGUgPVxuICB8IHsgc3RhdHVzOiAnb2snOyBjbGFpbXM6IE5zU2Vzc2lvbi5JQ2xhaW1zOyBpc1ZFVDogYm9vbGVhbiB9XG4gIHwgeyBzdGF0dXM6ICdub3QtZm91bmQnOyBpc1ZFVDogYm9vbGVhbiB9XG4gIHwgeyBzdGF0dXM6ICdleHBpcmVkJzsgaXNWRVQ6IGJvb2xlYW4gfVxuICB8IHsgc3RhdHVzOiAnaW52YWxpZCc7IGlzVkVUOiBib29sZWFuIH07XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFNlc3Npb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjb25maWc6IE5zU2Vzc2lvbi5JSW5pdENvbmZpZyA9IHt9O1xuICBwcml2YXRlIGNhY2hlZFRva2VuOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBjYWNoZWRTdGF0ZTogU2Vzc2lvblN0YXRlIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgY29sbGVjdGluZzogSVNlc3Npb25DbGFpbUZhaWx1cmVbXSB8IG51bGwgPSBudWxsO1xuXG4gIGluaXQoY29uZmlnOiBOc1Nlc3Npb24uSUluaXRDb25maWcpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4uY29uZmlnIH07XG4gICAgdGhpcy5jYWNoZWRUb2tlbiA9IG51bGw7XG4gICAgdGhpcy5jYWNoZWRTdGF0ZSA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUnVucyBgaGFuZGxlcnMubmV4dGAgYW5kIHJldHVybnMgaXRzIHJlc3VsdCwgb3IgYGhhbmRsZXJzLmVycm9yKGVycm9yKWAgaWYgaXQgdGhyb3dzIGEgYFNlc3Npb25FcnJvcmAuXG4gICAqIENlbnRyYWxpemVzIHRoZSB0cnkvY2F0Y2ggbWVjaGFuaWNzOyB0aGUgY2FsbGVyIHN0aWxsIHN1cHBsaWVzIHRoZSBhY3R1YWwgaGFuZGxpbmcgbG9naWMuXG4gICAqL1xuICByZWFkPFQ+KGhhbmRsZXJzOiB7IG5leHQ6IChzZXNzaW9uOiBTZXNzaW9uU2VydmljZSkgPT4gVDsgZXJyb3I6IChlcnJvcjogU2Vzc2lvbkVycm9yKSA9PiBUIH0pOiBUIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGhhbmRsZXJzLm5leHQodGhpcyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTZXNzaW9uRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIGhhbmRsZXJzLmVycm9yKGUpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3RhdGVtZW50LXN0eWxlIHZhcmlhbnQgb2YgYHJlYWRgIGZvciBibG9ja3Mgb2YgYXNzaWdubWVudHMvc2lkZSBlZmZlY3RzIHdpdGggbm8gcmV0dXJuIHZhbHVlLlxuICAgKlxuICAgKiBgbmV4dGAgYWx3YXlzIHJ1bnMgdG8gY29tcGxldGlvbjogYSBjbGFpbSB0aGF0IGlzIGFic2VudCBvciBibGFuayB5aWVsZHMgYHVuZGVmaW5lZGAgaW5zdGVhZCBvZlxuICAgKiB0aHJvd2luZywgYW5kIGV2ZXJ5IHN1Y2ggZmFpbHVyZSBpcyByZXBvcnRlZCBvbmNlIGFmdGVyd2FyZHMgdmlhIGBoYW5kbGVycy5lcnJvcmAsIGFzIGFcbiAgICogYFNlc3Npb25DbGFpbXNNaXNzaW5nRXJyb3JgIGxpc3RpbmcgYWxsIG9mIHRoZW0uIEFuIHVudXNhYmxlIHRva2VuIChtaXNzaW5nLCBleHBpcmVkLFxuICAgKiB1bmRlY29kYWJsZSkgc3RpbGwgYWJvcnRzIGBuZXh0YCBpbW1lZGlhdGVseSB3aXRoIHRoZSBtYXRjaGluZyBgU2Vzc2lvbkVycm9yYC5cbiAgICpcbiAgICogQ29sbGVjdGluZyBjb3ZlcnMgdGhlIHN5bmNocm9ub3VzIGJvZHkgb2YgYG5leHRgIG9ubHkg4oCUIGNsYWltIHJlYWRzIGRlZmVycmVkIGludG8gYSBzdWJzY3JpcHRpb24sXG4gICAqIHRpbWVvdXQgb3IgcHJvbWlzZSBydW4gYWZ0ZXIgaXQgaGFzIHJldHVybmVkIGFuZCB0aHJvdyBhcyB1c3VhbC5cbiAgICpcbiAgICogQW4gZXJyb3IgYG5leHRgIHRocm93cyBmb3IgYW55IG90aGVyIHJlYXNvbiBwcm9wYWdhdGVzIHVudG91Y2hlZCwgZXhjZXB0IHRoYXQgYW55IGNsYWltcyBtaXNzaW5nXG4gICAqIGF0IHRoZSB0aW1lIGFyZSBhcHBlbmRlZCB0byBpdHMgbWVzc2FnZSBhbmQgYXR0YWNoZWQgYXMgYHNlc3Npb25DbGFpbUZhaWx1cmVzYCDigJQgYSBjb2xsZWN0ZWRcbiAgICogYHVuZGVmaW5lZGAgcmVhY2hpbmcgdGhlIGJsb2NrIGlzIHRoZSB1c3VhbCBjYXVzZSwgYW5kIHRoYXQgaXMgdGhlIHBhcnQgd29ydGgga25vd2luZy5cbiAgICovXG4gIHJ1bihoYW5kbGVyczogeyBuZXh0OiAoc2Vzc2lvbjogUGFydGlhbFNlc3Npb24pID0+IHZvaWQ7IGVycm9yOiAoZXJyb3I6IFNlc3Npb25FcnJvcikgPT4gdm9pZCB9KTogdm9pZCB7XG4gICAgY29uc3QgZmFpbHVyZXM6IElTZXNzaW9uQ2xhaW1GYWlsdXJlW10gPSBbXTtcbiAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMuY29sbGVjdGluZztcbiAgICB0aGlzLmNvbGxlY3RpbmcgPSBmYWlsdXJlcztcbiAgICB0cnkge1xuICAgICAgaGFuZGxlcnMubmV4dCh0aGlzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIFNlc3Npb25FcnJvcikge1xuICAgICAgICBoYW5kbGVycy5lcnJvcihlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGZhaWx1cmVzLmxlbmd0aCAmJiBlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgKGUgYXMgRXJyb3IgJiB7IHNlc3Npb25DbGFpbUZhaWx1cmVzPzogSVNlc3Npb25DbGFpbUZhaWx1cmVbXSB9KS5zZXNzaW9uQ2xhaW1GYWlsdXJlcyA9IGZhaWx1cmVzO1xuICAgICAgICBlLm1lc3NhZ2UgPSBgJHtlLm1lc3NhZ2V9IOKAlCBzZXNzaW9uIGNsYWltcyBtaXNzaW5nIGR1cmluZyBydW4oKTogJHtkZXNjcmliZUNsYWltRmFpbHVyZXMoZmFpbHVyZXMpfWA7XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmNvbGxlY3RpbmcgPSBwcmV2aW91cztcbiAgICB9XG4gICAgaWYgKGZhaWx1cmVzLmxlbmd0aCkge1xuICAgICAgaGFuZGxlcnMuZXJyb3IobmV3IFNlc3Npb25DbGFpbXNNaXNzaW5nRXJyb3IoZmFpbHVyZXMpKTtcbiAgICB9XG4gIH1cblxuICBnZXQgaXNWRVQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuaXNWRVQ7XG4gIH1cblxuICBnZXQgc3ViKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLmdldENsYWltKCdzdWInKTsgfVxuICBnZXQgZW1wR3VpZCgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5nZXRDbGFpbSgnZW1wbG95ZWVHVUlEJyk7IH1cbiAgZ2V0IGVtcGxveWVlSWQoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuZ2V0Q2xhaW0oJ2VtcGxveWVlSWQnKTsgfVxuICBnZXQgaW50ZXJuYWxTc29Sb2xlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLmdldENsYWltKCdpbnRlcm5hbF9zc29fcm9sZScpOyB9XG4gIGdldCByb2xlcygpOiBzdHJpbmdbXSB7IHJldHVybiB0aGlzLmdldENsYWltKCdyb2xlcycpOyB9XG4gIGdldCBzZXNzaW9uSWQoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuZ2V0Q2xhaW0oJ3Nlc3Npb25JZCcpOyB9XG4gIGdldCBsb2dnZWRJblVzZXIoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuZ2V0Q2xhaW0oJ2xvZ2dlZEluVXNlcicpOyB9XG4gIGdldCBsb2dpbkVtYWlsKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLmdldENsYWltKCdsb2dpbkVtYWlsJyk7IH1cbiAgZ2V0IGV4cCgpOiBudW1iZXIgeyByZXR1cm4gdGhpcy5nZXRDbGFpbSgnZXhwJyk7IH1cbiAgZ2V0IGlhdCgpOiBudW1iZXIgeyByZXR1cm4gdGhpcy5nZXRDbGFpbSgnaWF0Jyk7IH1cbiAgZ2V0IGJ1c2luZXNzVW5pdElkKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLmdldENsYWltKCdidXNpbmVzc1VuaXRJZCcpOyB9XG4gIGdldCBhbGxvd2VkQnVpZHMoKTogc3RyaW5nW10geyByZXR1cm4gdGhpcy5nZXRDbGFpbSgnQUxMT1dFRF9CVUlEUycpOyB9XG4gIGdldCB2ZXRVc2VyRW1haWxJZCgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5nZXRDbGFpbSgndmV0VXNlckVtYWlsSWQnKTsgfVxuICBnZXQgdmV0VXNlcklkKCk6IG51bWJlciB7IHJldHVybiB0aGlzLmdldENsYWltKCd2ZXRVc2VySWQnKTsgfVxuICBnZXQgc291cmNlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLmdldENsYWltKCdzb3VyY2UnKTsgfVxuXG4gIGdldCByb2xlSWQoKTogbnVtYmVyIHtcbiAgICBjb25zdCByYXcgPSB0aGlzLnJlc29sdmVSb2xlKHRoaXMuZ2V0Q2xhaW1zKCkpO1xuICAgIGlmICghcmF3KSB7XG4gICAgICByZXR1cm4gdGhpcy5taXNzaW5nQ2xhaW0oJ3JvbGVJZCcsICdhYnNlbnQnKTtcbiAgICB9XG4gICAgcmV0dXJuIE51bWJlcihyYXcpO1xuICB9XG5cbiAgLyoqIEZpcnN0IG51bWVyaWMgcm9sZSBpbiBgaW50ZXJuYWxfc3NvX3JvbGVgIHRoZW4gYHJvbGVzYCwgb3IgYCcnYCB3aGVuIHRoZSB0b2tlbiBjYXJyaWVzIG5vbmUuICovXG4gIHByaXZhdGUgcmVzb2x2ZVJvbGUoY2xhaW1zOiBOc1Nlc3Npb24uSUNsYWltcyk6IHN0cmluZyB7XG4gICAgY29uc3QgY2FuZGlkYXRlcyA9IFtjbGFpbXMuaW50ZXJuYWxfc3NvX3JvbGUsIC4uLihjbGFpbXMucm9sZXMgPz8gW10pXTtcbiAgICByZXR1cm4gY2FuZGlkYXRlc1xuICAgICAgLm1hcCh2YWx1ZSA9PiB2YWx1ZT8udHJpbSgpKVxuICAgICAgLmZpbmQodmFsdWUgPT4gdGhpcy5pc0RpZ2l0c09ubHkodmFsdWUpKSA/PyAnJztcbiAgfVxuXG4gIHByaXZhdGUgaXNEaWdpdHNPbmx5KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2YWx1ZSBpcyBzdHJpbmcge1xuICAgIHJldHVybiAhIXZhbHVlICYmIC9eXFxkKyQvLnRlc3QodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDbGFpbXMoKTogTnNTZXNzaW9uLklDbGFpbXMge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZTtcbiAgICBpZiAoc3RhdGUuc3RhdHVzID09PSAnb2snKSB7XG4gICAgICByZXR1cm4gc3RhdGUuY2xhaW1zO1xuICAgIH1cbiAgICBpZiAoc3RhdGUuc3RhdHVzID09PSAnbm90LWZvdW5kJykge1xuICAgICAgdGhyb3cgbmV3IFNlc3Npb25Ub2tlbk5vdEZvdW5kRXJyb3IoKTtcbiAgICB9XG4gICAgaWYgKHN0YXRlLnN0YXR1cyA9PT0gJ2V4cGlyZWQnKSB7XG4gICAgICB0aHJvdyBuZXcgU2Vzc2lvblRva2VuRXhwaXJlZEVycm9yKCk7XG4gICAgfVxuICAgIHRocm93IG5ldyBTZXNzaW9uVG9rZW5JbnZhbGlkRXJyb3IoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2xhaW08SyBleHRlbmRzIGtleW9mIE5zU2Vzc2lvbi5JQ2xhaW1zPihrZXk6IEspOiBOb25OdWxsYWJsZTxOc1Nlc3Npb24uSUNsYWltc1tLXT4ge1xuICAgIGNvbnN0IGNsYWltcyA9IHRoaXMuZ2V0Q2xhaW1zKCk7XG4gICAgY29uc3QgdmFsdWUgPSBjbGFpbXNba2V5XTtcbiAgICBjb25zdCBpc0VtcHR5U3RyaW5nID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS50cmltKCkgPT09ICcnO1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IGlzRW1wdHlTdHJpbmcpIHtcbiAgICAgIHJldHVybiB0aGlzLm1pc3NpbmdDbGFpbShrZXkgYXMgc3RyaW5nLCBpc0VtcHR5U3RyaW5nID8gJ2JsYW5rJyA6ICdhYnNlbnQnKTtcbiAgICB9XG4gICAgcmV0dXJuICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUudHJpbSgpIDogdmFsdWUpIGFzIE5vbk51bGxhYmxlPE5zU2Vzc2lvbi5JQ2xhaW1zW0tdPjtcbiAgfVxuXG4gIC8qKiBSZWNvcmRzIHRoZSBmYWlsdXJlIGFuZCB5aWVsZHMgYHVuZGVmaW5lZGAgd2hpbGUgYHJ1bmAgaXMgY29sbGVjdGluZzsgdGhyb3dzIG90aGVyd2lzZS4gKi9cbiAgcHJpdmF0ZSBtaXNzaW5nQ2xhaW0oY2xhaW06IHN0cmluZywgcmVhc29uOiBTZXNzaW9uQ2xhaW1GYWlsdXJlUmVhc29uKTogbmV2ZXIge1xuICAgIGlmICh0aGlzLmNvbGxlY3RpbmcpIHtcbiAgICAgIHRoaXMuY29sbGVjdGluZy5wdXNoKHsgY2xhaW0sIHJlYXNvbiB9KTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQgYXMgbmV2ZXI7XG4gICAgfVxuICAgIHRocm93IG5ldyBTZXNzaW9uQ2xhaW1Ob3RGb3VuZEVycm9yKGNsYWltKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHN0YXRlKCk6IFNlc3Npb25TdGF0ZSB7XG4gICAgY29uc3QgeyB0b2tlbiwgaXNWRVQgfSA9IHRoaXMuZmluZFRva2VuKCk7XG4gICAgaWYgKCF0aGlzLmNhY2hlZFN0YXRlIHx8IHRva2VuICE9PSB0aGlzLmNhY2hlZFRva2VuKSB7XG4gICAgICB0aGlzLmNhY2hlZFRva2VuID0gdG9rZW47XG4gICAgICB0aGlzLmNhY2hlZFN0YXRlID0gdGhpcy5idWlsZCh0b2tlbiwgaXNWRVQpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jYWNoZWRTdGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGQodG9rZW46IHN0cmluZywgaXNWRVQ6IGJvb2xlYW4pOiBTZXNzaW9uU3RhdGUge1xuICAgIGlmICghdG9rZW4pIHtcbiAgICAgIHJldHVybiB7IHN0YXR1czogJ25vdC1mb3VuZCcsIGlzVkVUIH07XG4gICAgfVxuXG4gICAgbGV0IGNsYWltczogTnNTZXNzaW9uLklDbGFpbXM7XG4gICAgdHJ5IHtcbiAgICAgIGNsYWltcyA9IGp3dERlY29kZTxOc1Nlc3Npb24uSUNsYWltcz4odG9rZW4pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIHsgc3RhdHVzOiAnaW52YWxpZCcsIGlzVkVUIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNFeHBpcmVkKGNsYWltcykpIHtcbiAgICAgIHJldHVybiB7IHN0YXR1czogJ2V4cGlyZWQnLCBpc1ZFVCB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IHN0YXR1czogJ29rJywgY2xhaW1zLCBpc1ZFVCB9O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0V4cGlyZWQoY2xhaW1zOiBOc1Nlc3Npb24uSUNsYWltcyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgY2xhaW1zLmV4cCA9PT0gJ251bWJlcicgJiYgY2xhaW1zLmV4cCAqIDEwMDAgPD0gRGF0ZS5ub3coKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNWRVRTb3VyY2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGdldFF1ZXJ5UGFyYW0oJ3NvdXJjZScpID09PSBMQVVOQ0hfU09VUkNFX1ZFVDtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUJ1aWQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIGdldFF1ZXJ5UGFyYW0oJ2J1aWQnKSB8fCBnZXRDb29raWUoJ2J1aWQnKSB8fCBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kVG9rZW4oKTogeyB0b2tlbjogc3RyaW5nOyBpc1ZFVDogYm9vbGVhbiB9IHtcbiAgICBjb25zdCBidWlkID0gdGhpcy5yZXNvbHZlQnVpZCgpO1xuXG4gICAgaWYgKHRoaXMuaXNWRVRTb3VyY2UoKSkge1xuICAgICAgY29uc3QgdmV0S2V5ID0gdGhpcy5jb25maWcudmV0VG9rZW5Db29raWVLZXkgPz8gKGJ1aWQgPyBgJHtERUZBVUxUX1ZFVF9UT0tFTl9QUkVGSVh9LSR7YnVpZH1gIDogbnVsbCk7XG4gICAgICBjb25zdCB2ZXRUb2tlbiA9ICh2ZXRLZXkgPyBnZXRDb29raWUodmV0S2V5KSA6ICcnKSB8fCAnJztcbiAgICAgIGlmICh2ZXRUb2tlbikge1xuICAgICAgICByZXR1cm4geyB0b2tlbjogdmV0VG9rZW4sIGlzVkVUOiB0cnVlIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgc2Vzc2lvblRva2VuID0gdGhpcy5jb25maWcuc2Vzc2lvblRva2VuQ29va2llS2V5XG4gICAgICA/IGdldENvb2tpZSh0aGlzLmNvbmZpZy5zZXNzaW9uVG9rZW5Db29raWVLZXkpXG4gICAgICA6IChidWlkID8gZ2V0Q29va2llKGAke0RFRkFVTFRfU0VTU0lPTl9UT0tFTl9QUkVGSVh9LSR7YnVpZH1gKSA6ICcnKSB8fCBnZXRDb29raWUoREVGQVVMVF9TRVNTSU9OX1RPS0VOX0ZBTExCQUNLX0tFWSk7XG5cbiAgICByZXR1cm4geyB0b2tlbjogc2Vzc2lvblRva2VuIHx8ICcnLCBpc1ZFVDogZmFsc2UgfTtcbiAgfVxufVxuIl19
@@ -8,6 +8,7 @@ export * from "./lib/models/configurations.model";
8
8
  export * from "./lib/functions/nav-filter.function";
9
9
  export * from "./lib/functions/cookie.function";
10
10
  export * from "./lib/functions/url.functions";
11
+ export * from "./lib/functions/guid.functions";
11
12
  export * from "./lib/interceptors/auth.interceptor";
12
13
  export * from "./lib/services/loader.service";
13
14
  export * from "./lib/modules/logger/logger.module";
@@ -20,4 +21,4 @@ export * from "./lib/components/create-non-shift-modal/create-non-shift-modal.co
20
21
  export * from "./lib/services/session.service";
21
22
  export * from "./lib/services/session.errors";
22
23
  export * from "./lib/models/session.model";
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYnJhcmllcy93aXMtY29tbW9uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYywwRUFBMEUsQ0FBQztBQUN6RixjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygd2lzLWNvbW1vblxuICovXG5cbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9tb2R1bGVzL2F1dGgvYXV0aC5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvbW9kdWxlcy9hdXRoL2F1dGgubW9kdWxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvc2VydmljZXMvY29uZmlndXJhdGlvbi5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvbW9kZWxzL2NvbmZpZ3VyYXRpb25zLm1vZGVsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvZnVuY3Rpb25zL25hdi1maWx0ZXIuZnVuY3Rpb25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9mdW5jdGlvbnMvY29va2llLmZ1bmN0aW9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvZnVuY3Rpb25zL3VybC5mdW5jdGlvbnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9pbnRlcmNlcHRvcnMvYXV0aC5pbnRlcmNlcHRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL3NlcnZpY2VzL2xvYWRlci5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvbW9kdWxlcy9sb2dnZXIvbG9nZ2VyLm1vZHVsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL21vZHVsZXMvbG9nZ2VyL2xvZ2dlci5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvd2lzLWNvbW1vbi5tb2R1bGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9tb2R1bGVzL2xvZ2dlci9sb2dnZXIubW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnRzL3NpZGVuYXYvc2lkZW5hdi5jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9zZXJ2aWNlcy9tZmUtY29tbXVuaWNhdGlvbi5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50cy9jcmVhdGUtbm9uLXNoaWZ0LW1vZGFsL2NyZWF0ZS1ub24tc2hpZnQtbW9kYWwuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvc2VydmljZXMvc2Vzc2lvbi5zZXJ2aWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvc2VydmljZXMvc2Vzc2lvbi5lcnJvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9tb2RlbHMvc2Vzc2lvbi5tb2RlbFwiO1xuIl19
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYnJhcmllcy93aXMtY29tbW9uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDBFQUEwRSxDQUFDO0FBQ3pGLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiB3aXMtY29tbW9uXG4gKi9cblxuZXhwb3J0ICogZnJvbSBcIi4vbGliL21vZHVsZXMvYXV0aC9hdXRoLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9tb2R1bGVzL2F1dGgvYXV0aC5tb2R1bGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9zZXJ2aWNlcy9jb25maWd1cmF0aW9uLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9tb2RlbHMvY29uZmlndXJhdGlvbnMubW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9mdW5jdGlvbnMvbmF2LWZpbHRlci5mdW5jdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2Z1bmN0aW9ucy9jb29raWUuZnVuY3Rpb25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9mdW5jdGlvbnMvdXJsLmZ1bmN0aW9uc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2Z1bmN0aW9ucy9ndWlkLmZ1bmN0aW9uc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2ludGVyY2VwdG9ycy9hdXRoLmludGVyY2VwdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvc2VydmljZXMvbG9hZGVyLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9tb2R1bGVzL2xvZ2dlci9sb2dnZXIubW9kdWxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9saWIvbW9kdWxlcy9sb2dnZXIvbG9nZ2VyLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi93aXMtY29tbW9uLm1vZHVsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL21vZHVsZXMvbG9nZ2VyL2xvZ2dlci5tb2RlbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvc2lkZW5hdi9zaWRlbmF2LmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL3NlcnZpY2VzL21mZS1jb21tdW5pY2F0aW9uLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnRzL2NyZWF0ZS1ub24tc2hpZnQtbW9kYWwvY3JlYXRlLW5vbi1zaGlmdC1tb2RhbC5jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9zZXJ2aWNlcy9zZXNzaW9uLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9zZXJ2aWNlcy9zZXNzaW9uLmVycm9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL21vZGVscy9zZXNzaW9uLm1vZGVsXCI7XG4iXX0=
@@ -121,6 +121,54 @@ function getQueryParam(queryString) {
121
121
  }
122
122
  }
123
123
 
124
+ const GUID_GROUP_SEPARATOR = "-";
125
+ const NATIVE_ID_SEPARATOR = "$";
126
+ const NATIVE_ID_GROUP_INDEX = 4;
127
+ const JAVA_INT_MIN = -2147483648;
128
+ const JAVA_INT_MAX = 2147483647;
129
+ /** `Integer.valueOf` semantics: optional sign, digits only, within Java `int` range; `null` where Java throws. */
130
+ function parseJavaInt(value) {
131
+ if (!/^[+-]?\d+$/.test(value)) {
132
+ return null;
133
+ }
134
+ const parsed = Number(value);
135
+ return parsed >= JAVA_INT_MIN && parsed <= JAVA_INT_MAX ? parsed : null;
136
+ }
137
+ const reverse = (value) => value.split("").reverse().join("");
138
+ /**
139
+ * The native (STW) id an entity GUID encodes, e.g. `EMqaTest-6$00-0000-0000-000000000001` → `1`.
140
+ *
141
+ * Port of ETS `CentralRepositoryUtils.getNativeId` (configuration-models), kept to its exact
142
+ * behaviour so the UI and the server always agree: the id is read from the GUID's fifth group —
143
+ * after its first `$` when it has one — and when that isn't a plain integer, from the run of
144
+ * digits that ends the group.
145
+ *
146
+ * Returns `null` wherever the Java original throws: no fifth group, or no id to read from it.
147
+ */
148
+ function getNativeIdFromGuid(guid) {
149
+ if (typeof guid !== "string") {
150
+ return null;
151
+ }
152
+ const group = guid.split(GUID_GROUP_SEPARATOR)[NATIVE_ID_GROUP_INDEX];
153
+ if (group === undefined) {
154
+ return null;
155
+ }
156
+ const direct = parseJavaInt(group.substring(group.indexOf(NATIVE_ID_SEPARATOR) + 1));
157
+ if (direct !== null) {
158
+ return direct;
159
+ }
160
+ // Fallback: collect digits from the end of the group, stopping at the first one Java rejects.
161
+ const reversed = reverse(group);
162
+ let digits = "";
163
+ for (const char of reversed) {
164
+ if (parseJavaInt(digits + char) === null) {
165
+ break;
166
+ }
167
+ digits += char;
168
+ }
169
+ return parseJavaInt(reverse(digits));
170
+ }
171
+
124
172
  const TOKEN_NAME = "x-wis-token";
125
173
  class AuthInterceptor {
126
174
  constructor(route, toast) {
@@ -799,6 +847,7 @@ class SessionService {
799
847
  get roles() { return this.getClaim('roles'); }
800
848
  get sessionId() { return this.getClaim('sessionId'); }
801
849
  get loggedInUser() { return this.getClaim('loggedInUser'); }
850
+ get loginEmail() { return this.getClaim('loginEmail'); }
802
851
  get exp() { return this.getClaim('exp'); }
803
852
  get iat() { return this.getClaim('iat'); }
804
853
  get businessUnitId() { return this.getClaim('businessUnitId'); }
@@ -920,5 +969,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
920
969
  * Generated bundle index. Do not edit.
921
970
  */
922
971
 
923
- export { AuthInterceptor, AuthModule, AuthService, ConfigurationService, CreateNonShiftModalComponent, LoaderService, LoggerModule, LoggerService, MfeCommunicationService, SessionClaimNotFoundError, SessionClaimsMissingError, SessionError, SessionService, SessionTokenExpiredError, SessionTokenInvalidError, SessionTokenNotFoundError, SidenavComponent, WisCommonModule, describeClaimFailures, filterNavList, getCookie, getQueryParam, removeCookie, setCookie };
972
+ export { AuthInterceptor, AuthModule, AuthService, ConfigurationService, CreateNonShiftModalComponent, LoaderService, LoggerModule, LoggerService, MfeCommunicationService, SessionClaimNotFoundError, SessionClaimsMissingError, SessionError, SessionService, SessionTokenExpiredError, SessionTokenInvalidError, SessionTokenNotFoundError, SidenavComponent, WisCommonModule, describeClaimFailures, filterNavList, getCookie, getNativeIdFromGuid, getQueryParam, removeCookie, setCookie };
924
973
  //# sourceMappingURL=mis-wis-common.mjs.map