@sunbird-cb/toc 0.0.25 → 0.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/_collection/_common/ai-tutor/ai-tutor.component.mjs +1169 -0
- package/esm2022/lib/_collection/_common/ai-tutor/socket.service.mjs +121 -0
- package/esm2022/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.mjs +3 -3
- package/esm2022/lib/_collection/_common/content-toc/content-toc.component.mjs +15 -6
- package/esm2022/lib/_collection/_common/content-toc/content-toc.module.mjs +7 -2
- package/esm2022/lib/components/app-toc-cios-home/app-toc-cios-home.component.mjs +3 -3
- package/esm2022/lib/components/app-toc-home-v2/app-toc-home-v2.component.mjs +2 -2
- package/esm2022/lib/services/root.service.mjs +106 -0
- package/fesm2022/sunbird-cb-toc.mjs +7800 -6423
- package/fesm2022/sunbird-cb-toc.mjs.map +1 -1
- package/lib/_collection/_common/ai-tutor/ai-tutor.component.d.ts +140 -0
- package/lib/_collection/_common/ai-tutor/ai-tutor.component.d.ts.map +1 -0
- package/lib/_collection/_common/ai-tutor/socket.service.d.ts +20 -0
- package/lib/_collection/_common/ai-tutor/socket.service.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts +1 -1
- package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts.map +1 -1
- package/lib/_collection/_common/content-toc/content-toc.component.d.ts +2 -1
- package/lib/_collection/_common/content-toc/content-toc.component.d.ts.map +1 -1
- package/lib/_collection/_common/content-toc/content-toc.module.d.ts +29 -28
- package/lib/_collection/_common/content-toc/content-toc.module.d.ts.map +1 -1
- package/lib/services/root.service.d.ts +27 -0
- package/lib/services/root.service.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, throwError } from 'rxjs';
|
|
3
|
+
import { HttpHeaders } from '@angular/common/http';
|
|
4
|
+
import { catchError } from 'rxjs/operators';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common/http";
|
|
7
|
+
const PROXY_CREATE_V8 = '/apis/proxies/v8';
|
|
8
|
+
const API_END_POINTS = {
|
|
9
|
+
CREATE_USER_API: `${PROXY_CREATE_V8}/discussion/user/v1/create`,
|
|
10
|
+
LANGUAGES: '/api/faq/v1/assistant/available/language',
|
|
11
|
+
CONFIG: '/api/faq/v1/assistant/configs/language',
|
|
12
|
+
AI_GLOBAL_SEARCH: `${PROXY_CREATE_V8}/chatbot/v3/search`,
|
|
13
|
+
AI_CHAT_FEEDBACK: `${PROXY_CREATE_V8}/chatbot/v3/feedbacks/save`,
|
|
14
|
+
AI_GLOBAL_INTERNET_SEARCH: `${PROXY_CREATE_V8}/chatbot/v3/global/search`,
|
|
15
|
+
SUPPORT_AI_START_CHAT: `${PROXY_CREATE_V8}/support/ai/chat/start`,
|
|
16
|
+
SUPPORT_AI_SEND_CHAT: `${PROXY_CREATE_V8}/support/ai/chat/send`
|
|
17
|
+
};
|
|
18
|
+
export class RootService {
|
|
19
|
+
constructor(http) {
|
|
20
|
+
this.http = http;
|
|
21
|
+
this.openSupportAIChatbot = new BehaviorSubject(false);
|
|
22
|
+
this.showNavbarDisplay$ = new BehaviorSubject(true);
|
|
23
|
+
}
|
|
24
|
+
createUser(request) {
|
|
25
|
+
return this.http.post(API_END_POINTS.CREATE_USER_API, request);
|
|
26
|
+
}
|
|
27
|
+
setDiscussionConfig(config) {
|
|
28
|
+
this.discussionCnfig = config;
|
|
29
|
+
}
|
|
30
|
+
getCookie(name) {
|
|
31
|
+
const ca = document.cookie.split(';');
|
|
32
|
+
const caLen = ca.length;
|
|
33
|
+
const cookieName = `${name}=`;
|
|
34
|
+
let c;
|
|
35
|
+
for (let i = 0; i < caLen; i += 1) {
|
|
36
|
+
c = ca[i].replace(/^\s+/g, '');
|
|
37
|
+
if (c.indexOf(cookieName) === 0) {
|
|
38
|
+
return c.substring(cookieName.length, c.length);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return '';
|
|
42
|
+
}
|
|
43
|
+
deleteCookie(name) {
|
|
44
|
+
this.setCookie(name, '', -1);
|
|
45
|
+
}
|
|
46
|
+
setCookie(name, value, expireDays, path = '') {
|
|
47
|
+
const d = new Date();
|
|
48
|
+
d.setTime(d.getTime() + expireDays * 24 * 60 * 60 * 1000);
|
|
49
|
+
const expires = `expires=${d.toUTCString()}`;
|
|
50
|
+
const cpath = path ? `; path=${path}` : '';
|
|
51
|
+
document.cookie = `${name}=${value}; ${expires}${cpath}`;
|
|
52
|
+
}
|
|
53
|
+
getChatData(tabType) {
|
|
54
|
+
return this.http.post(`${API_END_POINTS.CONFIG}`, tabType);
|
|
55
|
+
}
|
|
56
|
+
getLangugages() {
|
|
57
|
+
return this.http.get(`${API_END_POINTS.LANGUAGES}`);
|
|
58
|
+
}
|
|
59
|
+
aiGlobalSearch(requestBody, chatId, userID) {
|
|
60
|
+
return this.http.post(`${API_END_POINTS.AI_GLOBAL_SEARCH}?chatID=${chatId}&userID=${userID}`, requestBody).pipe(catchError(error => {
|
|
61
|
+
if (error.status === 502) {
|
|
62
|
+
console.error('502 Bad Gateway from aiGlobalSearch');
|
|
63
|
+
}
|
|
64
|
+
else if (error.status === 500) {
|
|
65
|
+
console.error('500 Internal Server Error from aiGlobalSearch');
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
console.error(`Unhandled error (${error.status}):`, error.message);
|
|
69
|
+
}
|
|
70
|
+
return throwError(() => error);
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
saveAIChatPositiveContentRating(requestBody, chatId, userID) {
|
|
74
|
+
console.log('chatId=', chatId, 'userID=', userID);
|
|
75
|
+
return this.http.post(`${API_END_POINTS.AI_CHAT_FEEDBACK}?chatID=${chatId}&userID=${userID}`, requestBody);
|
|
76
|
+
}
|
|
77
|
+
shareAIFeedback(requestBody, chatId, userID) {
|
|
78
|
+
return this.http.post(`${API_END_POINTS.AI_CHAT_FEEDBACK}?chatID=${chatId}&userID=${userID}`, requestBody);
|
|
79
|
+
}
|
|
80
|
+
aiGlobalSearchFromInternet(requestBody, chatId, userID) {
|
|
81
|
+
return this.http.post(`${API_END_POINTS.AI_GLOBAL_INTERNET_SEARCH}?chatID=${chatId}&user_id=${userID}`, requestBody);
|
|
82
|
+
}
|
|
83
|
+
aiStartChathForSupport(requestBody, userID) {
|
|
84
|
+
const headers = new HttpHeaders()
|
|
85
|
+
.set('user-id', userID);
|
|
86
|
+
return this.http.post(`${API_END_POINTS.SUPPORT_AI_START_CHAT}`, requestBody, {
|
|
87
|
+
headers
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
aiSendChathForSupport(requestBody, userID) {
|
|
91
|
+
const headers = new HttpHeaders()
|
|
92
|
+
.set('user-id', userID);
|
|
93
|
+
return this.http.post(`${API_END_POINTS.SUPPORT_AI_SEND_CHAT}`, requestBody, {
|
|
94
|
+
headers
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RootService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
98
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RootService, providedIn: 'root' }); }
|
|
99
|
+
}
|
|
100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RootService, decorators: [{
|
|
101
|
+
type: Injectable,
|
|
102
|
+
args: [{
|
|
103
|
+
providedIn: 'root',
|
|
104
|
+
}]
|
|
105
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL3NlcnZpY2VzL3Jvb3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzlELE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7OztBQUUzQyxNQUFNLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQTtBQUUxQyxNQUFNLGNBQWMsR0FBRztJQUNyQixlQUFlLEVBQUUsR0FBRyxlQUFlLDRCQUE0QjtJQUMvRCxTQUFTLEVBQUUsMENBQTBDO0lBQ3JELE1BQU0sRUFBRSx3Q0FBd0M7SUFDaEQsZ0JBQWdCLEVBQUUsR0FBRyxlQUFlLG9CQUFvQjtJQUN4RCxnQkFBZ0IsRUFBQyxHQUFHLGVBQWUsNEJBQTRCO0lBQy9ELHlCQUF5QixFQUFFLEdBQUcsZUFBZSwyQkFBMkI7SUFDeEUscUJBQXFCLEVBQUUsR0FBRyxlQUFlLHdCQUF3QjtJQUNqRSxvQkFBb0IsRUFBRSxHQUFHLGVBQWUsdUJBQXVCO0NBQ2hFLENBQUE7QUFNRCxNQUFNLE9BQU8sV0FBVztJQUt0QixZQUNVLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFMMUIseUJBQW9CLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUE7UUFDMUQsdUJBQWtCLEdBQUcsSUFBSSxlQUFlLENBQVUsSUFBSSxDQUFDLENBQUE7SUFLbkQsQ0FBQztJQUVMLFVBQVUsQ0FBQyxPQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQU0sY0FBYyxD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QUFDLFdBQWUsRUFBRSxNQUFVO1FBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFO2FBQzlCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDekIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTSxHQUFHLGNBQWMsQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLFdBQVcsRUFBRTtZQUNoRixPQUFPO1NBRVIsQ0FBQyxDQUFBO0lBQ0osQ0FBQzsrR0E3RlUsV0FBVzttSEFBWCxXQUFXLGNBSFYsTUFBTTs7NEZBR1AsV0FBVztrQkFKdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5jb25zdCBQUk9YWV9DUkVBVEVfVjggPSAnL2FwaXMvcHJveGllcy92OCdcblxuY29uc3QgQVBJX0VORF9QT0lOVFMgPSB7XG4gIENSRUFURV9VU0VSX0FQSTogYCR7UFJPWFlfQ1JFQVRFX1Y4fS9kaXNjdXNzaW9uL3VzZXIvdjEvY3JlYXRlYCxcbiAgTEFOR1VBR0VTOiAnL2FwaS9mYXEvdjEvYXNzaXN0YW50L2F2YWlsYWJsZS9sYW5ndWFnZScsXG4gIENPTkZJRzogJy9hcGkvZmFxL3YxL2Fzc2lzdGFudC9jb25maWdzL2xhbmd1YWdlJyxcbiAgQUlfR0xPQkFMX1NFQVJDSDogYCR7UFJPWFlfQ1JFQVRFX1Y4fS9jaGF0Ym90L3YzL3NlYXJjaGAsXG4gIEFJX0NIQVRfRkVFREJBQ0s6YCR7UFJPWFlfQ1JFQVRFX1Y4fS9jaGF0Ym90L3YzL2ZlZWRiYWNrcy9zYXZlYCxcbiAgQUlfR0xPQkFMX0lOVEVSTkVUX1NFQVJDSDogYCR7UFJPWFlfQ1JFQVRFX1Y4fS9jaGF0Ym90L3YzL2dsb2JhbC9zZWFyY2hgLFxuICBTVVBQT1JUX0FJX1NUQVJUX0NIQVQ6IGAke1BST1hZX0NSRUFURV9WOH0vc3VwcG9ydC9haS9jaGF0L3N0YXJ0YCxcbiAgU1VQUE9SVF9BSV9TRU5EX0NIQVQ6IGAke1BST1hZX0NSRUFURV9WOH0vc3VwcG9ydC9haS9jaGF0L3NlbmRgXG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcblxuZXhwb3J0IGNsYXNzIFJvb3RTZXJ2aWNlIHtcbiAgb3BlblN1cHBvcnRBSUNoYXRib3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKVxuICBzaG93TmF2YmFyRGlzcGxheSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpXG4gIGRpc2N1c3Npb25DbmZpZzogYW55XG4gIGlHT1RBSUNoYXRIaXN0b3J5OmFueVxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICkgeyB9XG5cbiAgY3JlYXRlVXNlcihyZXF1ZXN0OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KEFQSV9FTkRfUE9JTlRTLkNSRUFURV9VU0VSX0FQSSwgcmVxdWVzdClcbiAgfVxuXG4gIHNldERpc2N1c3Npb25Db25maWcoY29uZmlnOiBhbnkpIHtcbiAgICB0aGlzLmRpc2N1c3Npb25DbmZpZyA9IGNvbmZpZ1xuICB9XG4gIGdldENvb2tpZShuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjYTogc3RyaW5nW10gPSBkb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKVxuICAgIGNvbnN0IGNhTGVuOiBudW1iZXIgPSBjYS5sZW5ndGhcbiAgICBjb25zdCBjb29raWVOYW1lID0gYCR7bmFtZX09YFxuICAgIGxldCBjOiBzdHJpbmdcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2FMZW47IGkgKz0gMSkge1xuICAgICAgYyA9IGNhW2ldLnJlcGxhY2UoL15cXHMrL2csICcnKVxuICAgICAgaWYgKGMuaW5kZXhPZihjb29raWVOYW1lKSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gYy5zdWJzdHJpbmcoY29va2llTmFtZS5sZW5ndGgsIGMubGVuZ3RoKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gJydcbiAgfVxuICBkZWxldGVDb29raWUobmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXRDb29raWUobmFtZSwgJycsIC0xKVxuICB9XG5cbiAgc2V0Q29va2llKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgZXhwaXJlRGF5czogbnVtYmVyLCBwYXRoOiBzdHJpbmcgPSAnJykge1xuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSgpXG4gICAgZC5zZXRUaW1lKGQuZ2V0VGltZSgpICsgZXhwaXJlRGF5cyAqIDI0ICogNjAgKiA2MCAqIDEwMDApXG4gICAgY29uc3QgZXhwaXJlcyA9IGBleHBpcmVzPSR7ZC50b1VUQ1N0cmluZygpfWBcbiAgICBjb25zdCBjcGF0aCA9IHBhdGggPyBgOyBwYXRoPSR7cGF0aH1gIDogJydcbiAgICBkb2N1bWVudC5jb29raWUgPSBgJHtuYW1lfT0ke3ZhbHVlfTsgJHtleHBpcmVzfSR7Y3BhdGh9YFxuICB9XG4gIGdldENoYXREYXRhKHRhYlR5cGU6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7QVBJX0VORF9QT0lOVFMuQ09ORklHfWAsIHRhYlR5cGUpXG4gIH1cblxuICBnZXRMYW5ndWdhZ2VzKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHtBUElfRU5EX1BPSU5UUy5MQU5HVUFHRVN9YClcbiAgfVxuXG4gIGFpR2xvYmFsU2VhcmNoKHJlcXVlc3RCb2R5OmFueSwgY2hhdElkOmFueSwgdXNlcklEOmFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7QVBJX0VORF9QT0lOVFMuQUlfR0xPQkFMX1NFQVJDSH0/Y2hhdElEPSR7Y2hhdElkfSZ1c2VySUQ9JHt1c2VySUR9YCwgcmVxdWVzdEJvZHkpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNTAyKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignNTAyIEJhZCBHYXRld2F5IGZyb20gYWlHbG9iYWxTZWFyY2gnKTtcbiAgICAgICAgfSBlbHNlIGlmIChlcnJvci5zdGF0dXMgPT09IDUwMCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJzUwMCBJbnRlcm5hbCBTZXJ2ZXIgRXJyb3IgZnJvbSBhaUdsb2JhbFNlYXJjaCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFVuaGFuZGxlZCBlcnJvciAoJHtlcnJvci5zdGF0dXN9KTpgLCBlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzYXZlQUlDaGF0UG9zaXRpdmVDb250ZW50UmF0aW5nKHJlcXVlc3RCb2R5OmFueSwgY2hhdElkOmFueSwgdXNlcklEOmFueSkge1xuICAgIGNvbnNvbGUubG9nKCdjaGF0SWQ9JyxjaGF0SWQsICd1c2VySUQ9Jyx1c2VySUQpXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7QVBJX0VORF9QT0lOVFMuQUlfQ0hBVF9GRUVEQkFDS30/Y2hhdElEPSR7Y2hhdElkfSZ1c2VySUQ9JHt1c2VySUR9YCwgcmVxdWVzdEJvZHkpXG4gIH1cblxuICBzaGFyZUFJRmVlZGJhY2socmVxdWVzdEJvZHk6YW55LCBjaGF0SWQ6YW55LCB1c2VySUQ6YW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7QVBJX0VORF9QT0lOVFMuQUlfQ0hBVF9GRUVEQkFDS30/Y2hhdElEPSR7Y2hhdElkfSZ1c2VySUQ9JHt1c2VySUR9YCwgcmVxdWVzdEJvZHkpXG4gIH1cblxuICBhaUdsb2JhbFNlYXJjaEZyb21JbnRlcm5ldChyZXF1ZXN0Qm9keTphbnksIGNoYXRJZDphbnksIHVzZXJJRDphbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHtBUElfRU5EX1BPSU5UUy5BSV9HTE9CQUxfSU5URVJORVRfU0VBUkNIfT9jaGF0SUQ9JHtjaGF0SWR9JnVzZXJfaWQ9JHt1c2VySUR9YCwgcmVxdWVzdEJvZHkpXG4gIH1cblxuICBhaVN0YXJ0Q2hhdGhGb3JTdXBwb3J0KHJlcXVlc3RCb2R5OmFueSwgdXNlcklEOmFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpXG4gICAgICAuc2V0KCd1c2VyLWlkJywgdXNlcklEKVxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke0FQSV9FTkRfUE9JTlRTLlNVUFBPUlRfQUlfU1RBUlRfQ0hBVH1gLCByZXF1ZXN0Qm9keSwge1xuICAgICAgaGVhZGVyc1xuICAgICAgXG4gICAgfSlcbiAgfVxuXG4gIGFpU2VuZENoYXRoRm9yU3VwcG9ydChyZXF1ZXN0Qm9keTphbnksIHVzZXJJRDphbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKVxuICAgICAgLnNldCgndXNlci1pZCcsIHVzZXJJRClcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHtBUElfRU5EX1BPSU5UUy5TVVBQT1JUX0FJX1NFTkRfQ0hBVH1gLCByZXF1ZXN0Qm9keSwge1xuICAgICAgaGVhZGVyc1xuICAgICAgXG4gICAgfSlcbiAgfVxufVxuIl19
|