@myclub_se/data-access 2.9.1 → 2.9.2
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/esm2020/lib/api-models/api-public-token.mjs +2 -0
- package/esm2020/lib/authentication/authentication.interceptor.mjs +7 -3
- package/esm2020/lib/authentication/authentication.service.mjs +26 -2
- package/esm2020/lib/models/index.mjs +2 -1
- package/esm2020/lib/models/public-authentication.mjs +7 -0
- package/esm2020/lib/services/activity.service.mjs +39 -1
- package/esm2020/lib/services/factories/index.mjs +2 -1
- package/esm2020/lib/services/factories/public-authentication-factory.mjs +3 -0
- package/esm2020/lib/services/member.service.mjs +7 -2
- package/fesm2015/myclub_se-data-access.mjs +185 -106
- package/fesm2015/myclub_se-data-access.mjs.map +1 -1
- package/fesm2020/myclub_se-data-access.mjs +183 -104
- package/fesm2020/myclub_se-data-access.mjs.map +1 -1
- package/lib/api-models/api-public-token.d.ts +4 -0
- package/lib/authentication/authentication.service.d.ts +7 -2
- package/lib/models/index.d.ts +1 -0
- package/lib/models/public-authentication.d.ts +5 -0
- package/lib/services/activity.service.d.ts +5 -0
- package/lib/services/factories/index.d.ts +1 -0
- package/lib/services/factories/public-authentication-factory.d.ts +3 -0
- package/lib/services/member.service.d.ts +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXB1YmxpYy10b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvYXBpLW1vZGVscy9hcGktcHVibGljLXRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEFwaVB1YmxpY1Rva2VuIHtcbiAgdG9rZW46IHN0cmluZztcbiAgdG9rZW5fZXhwaXJlczogc3RyaW5nO1xufVxuIl19
|
|
@@ -12,11 +12,15 @@ export class AuthenticationInterceptor {
|
|
|
12
12
|
}
|
|
13
13
|
intercept(request, next) {
|
|
14
14
|
const authentication = this.authenticationService.authentication;
|
|
15
|
-
|
|
15
|
+
const publicAuthentication = this.authenticationService.publicAuthentication;
|
|
16
|
+
if (authentication && request.url.indexOf('public') === -1) {
|
|
16
17
|
request = this.addAuthorizationHeader(request, authentication.accessToken);
|
|
17
18
|
}
|
|
19
|
+
else if (publicAuthentication && request.url.indexOf('public') !== -1) {
|
|
20
|
+
request = this.addAuthorizationHeader(request, publicAuthentication.token);
|
|
21
|
+
}
|
|
18
22
|
return next.handle(request).pipe(catchError((requestError) => {
|
|
19
|
-
if (request.url.indexOf('accounts/token/') === -1 && requestError instanceof HttpErrorResponse && requestError.status === 401) {
|
|
23
|
+
if (request.url.indexOf('accounts/token/') === -1 && request.url.indexOf('public') === -1 && requestError instanceof HttpErrorResponse && requestError.status === 401) {
|
|
20
24
|
return this.handle401Error(request, next);
|
|
21
25
|
}
|
|
22
26
|
return throwError(() => requestError);
|
|
@@ -59,4 +63,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImpo
|
|
|
59
63
|
providedIn: 'root'
|
|
60
64
|
}]
|
|
61
65
|
}], ctorParameters: function () { return [{ type: i1.AuthenticationService }]; } });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhLWFjY2Vzcy9zcmMvbGliL2F1dGhlbnRpY2F0aW9uL2F1dGhlbnRpY2F0aW9uLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUE2QyxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBUW5ELE1BQU0sT0FBTyx5QkFBeUI7SUFLcEMsWUFBb0IscUJBQTRDO1FBQTVDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFKeEQsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFckIsd0JBQW1CLEdBQWtDLElBQUksZUFBZSxDQUFlLElBQUksQ0FBQyxDQUFDO0lBRWxDLENBQUM7SUFFcEUsU0FBUyxDQUFDLE9BQTZCLEVBQUUsSUFBaUI7UUFDeEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGNBQWMsQ0FBQztRQUNqRSxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQztRQUU3RSxJQUFJLGNBQWMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUMxRCxPQUFPLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDNUU7YUFBTSxJQUFJLG9CQUFvQixJQUFJLE9BQU8sQ0FB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IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwUmVxdWVzdCwgSHR0cEhhbmRsZXIsIEh0dHBJbnRlcmNlcHRvciwgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIHN3aXRjaE1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tICcuL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9rZW4gfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBdXRoZW50aWNhdGlvbkludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcbiAgcHJpdmF0ZSBpc1JlZnJlc2hpbmcgPSBmYWxzZTtcblxuICBwcml2YXRlIHJlZnJlc2hUb2tlblN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxUb2tlbiB8IG51bGw+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUb2tlbiB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aGVudGljYXRpb25TZXJ2aWNlOiBBdXRoZW50aWNhdGlvblNlcnZpY2UpIHt9XG5cbiAgaW50ZXJjZXB0KHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PHVua25vd24+LCBuZXh0OiBIdHRwSGFuZGxlcikge1xuICAgIGNvbnN0IGF1dGhlbnRpY2F0aW9uID0gdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuYXV0aGVudGljYXRpb247XG4gICAgY29uc3QgcHVibGljQXV0aGVudGljYXRpb24gPSB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5wdWJsaWNBdXRoZW50aWNhdGlvbjtcblxuICAgIGlmIChhdXRoZW50aWNhdGlvbiAmJiByZXF1ZXN0LnVybC5pbmRleE9mKCdwdWJsaWMnKSA9PT0gLTEpIHtcbiAgICAgIHJlcXVlc3QgPSB0aGlzLmFkZEF1dGhvcml6YXRpb25IZWFkZXIocmVxdWVzdCwgYXV0aGVudGljYXRpb24uYWNjZXNzVG9rZW4pO1xuICAgIH0gZWxzZSBpZiAocHVibGljQXV0aGVudGljYXRpb24gJiYgcmVxdWVzdC51cmwuaW5kZXhPZigncHVibGljJykgIT09IC0xKSB7XG4gICAgICByZXF1ZXN0ID0gdGhpcy5hZGRBdXRob3JpemF0aW9uSGVhZGVyKHJlcXVlc3QsIHB1YmxpY0F1dGhlbnRpY2F0aW9uLnRva2VuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKHJlcXVlc3RFcnJvcjogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXF1ZXN0LnVybC5pbmRleE9mKCdhY2NvdW50cy90b2tlbi8nKSA9PT0gLTEgJiYgcmVxdWVzdC51cmwuaW5kZXhPZigncHVibGljJykgPT09IC0xICYmIHJlcXVlc3RFcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlICYmIHJlcXVlc3RFcnJvci5zdGF0dXMgPT09IDQwMSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZTQwMUVycm9yKHJlcXVlc3QsIG5leHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHJlcXVlc3RFcnJvcik7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFkZEF1dGhvcml6YXRpb25IZWFkZXIocmVxdWVzdDogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIHRva2VuOiBzdHJpbmcpOiBIdHRwUmVxdWVzdDx1bmtub3duPiB7XG4gICAgaWYgKHRva2VuKSB7XG4gICAgICByZXR1cm4gcmVxdWVzdC5jbG9uZSh7XG4gICAgICAgIHNldEhlYWRlcnM6IHsgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcXVlc3Q7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZTQwMUVycm9yKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PHVua25vd24+LCBuZXh0OiBIdHRwSGFuZGxlcikge1xuICAgIGlmICh0aGlzLmlzUmVmcmVzaGluZykge1xuICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaFRva2VuU3ViamVjdFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIodG9rZW4gPT4gdG9rZW4gIT09IG51bGwpLFxuICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgc3dpdGNoTWFwKCh0b2tlbjogVG9rZW4gfCBudWxsKSA9PlxuICAgICAgICAgICAgbmV4dC5oYW5kbGUodGhpcy5hZGRBdXRob3JpemF0aW9uSGVhZGVyKHJlcXVlc3QsIHRva2VuPy5hY2Nlc3NUb2tlbiBhcyBzdHJpbmcpKVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc1JlZnJlc2hpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5yZWZyZXNoVG9rZW5TdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICByZXR1cm4gdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UucmVhdXRoZW50aWNhdGUoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5jbGVhckF1dGhlbnRpY2F0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnIpO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHN3aXRjaE1hcCgodG9rZW46IFRva2VuKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlblN1YmplY3QubmV4dCh0b2tlbik7XG4gICAgICAgICAgICB0aGlzLmlzUmVmcmVzaGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHRoaXMuYWRkQXV0aG9yaXphdGlvbkhlYWRlcihyZXF1ZXN0LCB0b2tlbi5hY2Nlc3NUb2tlbikpO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { Inject, Injectable, InjectionToken } from '@angular/core';
|
|
2
2
|
import { tap } from 'rxjs/operators';
|
|
3
|
-
import { Authentication } from '../models';
|
|
3
|
+
import { Authentication, PublicAuthentication, Role } from '../models';
|
|
4
4
|
import { BehaviorSubject } from 'rxjs';
|
|
5
|
+
import { publicAuthenticationFactory, searchClubFactory } from '../services/factories';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
import * as i1 from "../services/api.service";
|
|
7
8
|
import * as i2 from "../services";
|
|
8
9
|
export const APP = new InjectionToken('app');
|
|
10
|
+
const PUBLIC_AUTH_RETRIEVE_CODE_PATH = 'auth/retrieve-code/';
|
|
11
|
+
const PUBLIC_AUTH_TOKEN_PATH = 'auth/token/';
|
|
12
|
+
const PUBLIC_AUTH_CHANGE_TOKEN_PATH = 'auth/change-token/';
|
|
9
13
|
export class AuthenticationService {
|
|
10
14
|
constructor(apiService, app, tokenService) {
|
|
11
15
|
this.apiService = apiService;
|
|
@@ -13,6 +17,7 @@ export class AuthenticationService {
|
|
|
13
17
|
this.tokenService = tokenService;
|
|
14
18
|
this.currentTokenSubject = new BehaviorSubject(null);
|
|
15
19
|
this.authentication = null;
|
|
20
|
+
this.publicAuthentication = null;
|
|
16
21
|
this.currentToken$ = this.currentTokenSubject.asObservable();
|
|
17
22
|
}
|
|
18
23
|
get isAuthenticated() {
|
|
@@ -30,8 +35,24 @@ export class AuthenticationService {
|
|
|
30
35
|
}
|
|
31
36
|
clearAuthentication() {
|
|
32
37
|
this.authentication = null;
|
|
38
|
+
this.publicAuthentication = null;
|
|
33
39
|
this.currentTokenSubject.next(null);
|
|
34
40
|
}
|
|
41
|
+
getLoginCode(email, clubId) {
|
|
42
|
+
const params = { email };
|
|
43
|
+
if (clubId) {
|
|
44
|
+
params['club_id'] = clubId;
|
|
45
|
+
}
|
|
46
|
+
return this.apiService.getCollection(searchClubFactory, Role.Public, PUBLIC_AUTH_RETRIEVE_CODE_PATH, {}, { params });
|
|
47
|
+
}
|
|
48
|
+
getPublicToken(email, code, clubId) {
|
|
49
|
+
return this.apiService.postResource(publicAuthenticationFactory, Role.Public, PUBLIC_AUTH_TOKEN_PATH, {}, { email, code, club_id: clubId })
|
|
50
|
+
.pipe(tap((token) => this.setPublicToken(token)));
|
|
51
|
+
}
|
|
52
|
+
changePublicToken(memberId) {
|
|
53
|
+
return this.apiService.postResource(publicAuthenticationFactory, Role.Public, PUBLIC_AUTH_CHANGE_TOKEN_PATH, {}, { member_id: memberId })
|
|
54
|
+
.pipe(tap((token) => this.setPublicToken(token)));
|
|
55
|
+
}
|
|
35
56
|
getSessionToken() {
|
|
36
57
|
return this.tokenService
|
|
37
58
|
.getTokenBySession()
|
|
@@ -60,6 +81,9 @@ export class AuthenticationService {
|
|
|
60
81
|
setAuthentication(accessToken, refreshToken) {
|
|
61
82
|
this.authentication = new Authentication(accessToken, refreshToken);
|
|
62
83
|
}
|
|
84
|
+
setPublicToken(token) {
|
|
85
|
+
this.publicAuthentication = new PublicAuthentication(token.token, token.tokenExpires);
|
|
86
|
+
}
|
|
63
87
|
setToken(token) {
|
|
64
88
|
this.currentTokenSubject.next(token);
|
|
65
89
|
this.setAuthentication(token.accessToken, token.refreshToken);
|
|
@@ -76,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImpo
|
|
|
76
100
|
type: Inject,
|
|
77
101
|
args: [APP]
|
|
78
102
|
}] }, { type: i2.TokenService }]; } });
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvYXV0aGVudGljYXRpb24vYXV0aGVudGljYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxjQUFjLEVBQVMsTUFBTSxXQUFXLENBQUM7QUFFbEQsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7OztBQUluRCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxjQUFjLENBQU0sS0FBSyxDQUFDLENBQUM7QUFZbEQsTUFBTSxPQUFPLHFCQUFxQjtJQVVoQyxZQUFvQixVQUFzQixFQUF1QixHQUFRLEVBQVUsWUFBMEI7UUFBekYsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUF1QixRQUFHLEdBQUgsR0FBRyxDQUFLO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFUckcsd0JBQW1CLEdBQUcsSUFBSSxlQUFlLENBQWUsSUFBSSxDQUFDLENBQUM7UUFFdEUsbUJBQWMsR0FBMEIsSUFBSSxDQUFDO1FBQzdDLGtCQUFhLEdBQTZCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQU04QixDQUFDO0lBSmpILElBQUksZUFBZTtRQUNqQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQy9CLENBQUM7SUFJRCx5QkFBeUIsQ0FBQyxRQUFnQixFQUFFLFFBQWdCO1FBQzFELE9BQU8sSUFBSSxDQUFDLFlBQVk7YUFDckIscUJBQXFCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxD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QUUsTUFBTTtpQkFDbkI7OzBCQVc4QyxNQUFNOzJCQUFDLEdBQUciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUb2tlblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbiwgVG9rZW4gfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FwaS5zZXJ2aWNlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtHcmFudFR5cGV9IGZyb20gXCIuLi90eXBlcy9ncmFudC10eXBlXCI7XG5cblxuZXhwb3J0IGNvbnN0IEFQUCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBcHA+KCdhcHAnKTtcblxuZXhwb3J0IGludGVyZmFjZSBBcHAge1xuICBjbGllbnRJZDogc3RyaW5nO1xuICBjbGllbnRTZWNyZXQ6IHN0cmluZztcbiAgYXV0aG9yaXphdGlvbkNvZGVDbGllbnRJZD86IHN0cmluZyxcbiAgYXV0aG9yaXphdGlvbkNvZGVDbGllbnRTZWNyZXQ/OiBzdHJpbmcsXG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgY3VycmVudFRva2VuU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VG9rZW4gfCBudWxsPihudWxsKTtcblxuICBhdXRoZW50aWNhdGlvbjogQXV0aGVudGljYXRpb24gfCBudWxsID0gbnVsbDtcbiAgY3VycmVudFRva2VuJDogT2JzZXJ2YWJsZTxUb2tlbiB8IG51bGw+ID0gdGhpcy5jdXJyZW50VG9rZW5TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGdldCBpc0F1dGhlbnRpY2F0ZWQoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5hdXRoZW50aWNhdGlvbjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBpU2VydmljZTogQXBpU2VydmljZSwgQEluamVjdChBUFApIHByaXZhdGUgYXBwOiBBcHAsIHByaXZhdGUgdG9rZW5TZXJ2aWNlOiBUb2tlblNlcnZpY2UpIHt9XG5cbiAgYXV0aGVudGljYXRlQnlDcmVkZW50aWFscyh1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5TZXJ2aWNlXG4gICAgICAuZ2V0VG9rZW5CeUNyZWRlbnRpYWxzKHRoaXMuYXBwLmNsaWVudElkLCB0aGlzLmFwcC5jbGllbnRTZWNyZXQsIHVzZXJuYW1lLCBwYXNzd29yZClcbiAgICAgIC5waXBlKHRhcCgodG9rZW4pID0+IHRoaXMuc2V0VG9rZW4odG9rZW4pKSk7XG4gIH1cblxuICBhdXRoZW50aWNhdGVCeVRva2VuKHRva2VuOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlblNlcnZpY2VcbiAgICAgIC5nZXRUb2tlbkJ5Q29kZShcbiAgICAgICAgdGhpcy5hcHAuYXV0aG9yaXphdGlvbkNvZGVDbGllbnRJZCB8fCB0aGlzLmFwcC5jbGllbnRJZCxcbiAgICAgICAgdGhpcy5hcHAuYXV0aG9yaXphdGlvbkNvZGVDbGllbnRTZWNyZXQgfHwgdGhpcy5hcHAuY2xpZW50U2VjcmV0LFxuICAgICAgICB0b2tlbixcbiAgICAgIClcbiAgICAgIC5waXBlKHRhcCgodG9rZW4pID0+IHRoaXMuc2V0VG9rZW4odG9rZW4pKSk7XG4gIH1cblxuICBjbGVhckF1dGhlbnRpY2F0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuYXV0aGVudGljYXRpb24gPSBudWxsO1xuICAgIHRoaXMuY3VycmVudFRva2VuU3ViamVjdC5uZXh0KG51bGwpO1xuICB9XG5cbiAgZ2V0U2Vzc2lvblRva2VuKCkge1xuICAgIHJldHVybiB0aGlzLnRva2VuU2VydmljZVxuICAgICAgLmdldFRva2VuQnlTZXNzaW9uKClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKHRva2VuOiBUb2tlbiB8IG51bGwpID0+IHtcbiAgICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VG9rZW4odG9rZW4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgbG9nb3V0KCkge1xuICAgIHJldHVybiB0aGlzLnRva2VuU2VydmljZVxuICAgICAgLmxvZ291dCgpXG4gICAgICAucGlwZSh0YXAoKCkgPT4gdGhpcy5jbGVhckF1dGhlbnRpY2F0aW9uKCkpKTtcbiAgfVxuXG4gIHJlYXV0aGVudGljYXRlKGdyYW50VHlwZTogR3JhbnRUeXBlIHwgbnVsbCA9IG51bGwpIHtcbiAgICBsZXQgY2xpZW50SWQgPSB0aGlzLmFwcC5jbGllbnRJZDtcbiAgICBsZXQgY2xpZW50U2VjcmV0ID0gdGhpcy5hcHAuY2xpZW50U2VjcmV0O1xuICAgIGlmIChncmFudFR5cGUgPT0gJ2F1dGhvcml6YXRpb25fY29kZScpIHtcbiAgICAgIGNsaWVudElkID0gdGhpcy5hcHAuYXV0aG9yaXphdGlvbkNvZGVDbGllbnRJZCB8fCB0aGlzLmFwcC5jbGllbnRJZDtcbiAgICAgIGNsaWVudFNlY3JldCA9IHRoaXMuYXBwLmF1dGhvcml6YXRpb25Db2RlQ2xpZW50U2VjcmV0IHx8IHRoaXMuYXBwLmNsaWVudFNlY3JldDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudG9rZW5TZXJ2aWNlXG4gICAgICAuZ2V0VG9rZW5CeVJlZnJlc2hUb2tlbihcbiAgICAgICAgY2xpZW50SWQsXG4gICAgICAgIGNsaWVudFNlY3JldCxcbiAgICAgICAgdGhpcy5hdXRoZW50aWNhdGlvbj8ucmVmcmVzaFRva2VuIGFzIHN0cmluZ1xuICAgICAgKVxuICAgICAgLnBpcGUodGFwKCh0b2tlbjogVG9rZW4pID0+IHRoaXMuc2V0VG9rZW4odG9rZW4pKSk7XG4gIH1cblxuICBzZXRBdXRoZW50aWNhdGlvbihhY2Nlc3NUb2tlbjogc3RyaW5nLCByZWZyZXNoVG9rZW46IHN0cmluZykge1xuICAgIHRoaXMuYXV0aGVudGljYXRpb24gPSBuZXcgQXV0aGVudGljYXRpb24oYWNjZXNzVG9rZW4sIHJlZnJlc2hUb2tlbik7XG4gIH1cblxuICBzZXRUb2tlbih0b2tlbjogVG9rZW4pIHtcbiAgICB0aGlzLmN1cnJlbnRUb2tlblN1YmplY3QubmV4dCh0b2tlbik7XG4gICAgdGhpcy5zZXRBdXRoZW50aWNhdGlvbih0b2tlbi5hY2Nlc3NUb2tlbiwgdG9rZW4ucmVmcmVzaFRva2VuKTtcbiAgfVxufVxuIl19
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvYXV0aGVudGljYXRpb24vYXV0aGVudGljYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFTLE1BQU0sV0FBVyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFbkQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7QUFHdkYsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLElBQUksY0FBYyxDQUFNLEtBQUssQ0FBQyxDQUFDO0FBRWxELE1BQU0sOEJBQThCLEdBQUcscUJBQXFCLENBQUM7QUFDN0QsTUFBTSxzQkFBc0IsR0FBRyxhQUFhLENBQUM7QUFDN0MsTUFBTSw2QkFBNkIsR0FBRyxvQkFBb0IsQ0FBQTtBQVkxRCxNQUFNLE9BQU8scUJBQXFCO0lBV2hDLFlBQW9CLFVBQXNCLEVBQXVCLEdBQVEsRUFBVSxZQUEwQjtRQUF6RixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQXVCLFFBQUcsR0FBSCxHQUFHLENBQUs7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQVZyRyx3QkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBZSxJQUFJLENBQUMsQ0FBQztRQUV0RSxtQkFBYyxHQUEwQixJQUFJLENBQUM7UUFDN0MseUJBQW9CLEdBQWdDLElBQUksQ0FBQztRQUN6RCxrQkFBYSxHQUE2QixJQUFJLENBQUMsbUJBQW1CLENB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QUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVk7UUFDbkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDaEUsQ0FBQzs7bUhBcEdVLHFCQUFxQiw0Q0FXb0IsR0FBRzt1SEFYNUMscUJBQXFCLGNBRnBCLE1BQU07NEZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBWThDLE1BQU07MkJBQUMsR0FBRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRva2VuU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uLCBQdWJsaWNBdXRoZW50aWNhdGlvbiwgUm9sZSwgVG9rZW4gfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FwaS5zZXJ2aWNlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgR3JhbnRUeXBlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgcHVibGljQXV0aGVudGljYXRpb25GYWN0b3J5LCBzZWFyY2hDbHViRmFjdG9yeSB9IGZyb20gJy4uL3NlcnZpY2VzL2ZhY3Rvcmllcyc7XG5cblxuZXhwb3J0IGNvbnN0IEFQUCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBcHA+KCdhcHAnKTtcblxuY29uc3QgUFVCTElDX0FVVEhfUkVUUklFVkVfQ09ERV9QQVRIID0gJ2F1dGgvcmV0cmlldmUtY29kZS8nO1xuY29uc3QgUFVCTElDX0FVVEhfVE9LRU5fUEFUSCA9ICdhdXRoL3Rva2VuLyc7XG5jb25zdCBQVUJMSUNfQVVUSF9DSEFOR0VfVE9LRU5fUEFUSCA9ICdhdXRoL2NoYW5nZS10b2tlbi8nXG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwIHtcbiAgY2xpZW50SWQ6IHN0cmluZztcbiAgY2xpZW50U2VjcmV0OiBzdHJpbmc7XG4gIGF1dGhvcml6YXRpb25Db2RlQ2xpZW50SWQ/OiBzdHJpbmcsXG4gIGF1dGhvcml6YXRpb25Db2RlQ2xpZW50U2VjcmV0Pzogc3RyaW5nLFxufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBdXRoZW50aWNhdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIGN1cnJlbnRUb2tlblN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRva2VuIHwgbnVsbD4obnVsbCk7XG5cbiAgYXV0aGVudGljYXRpb246IEF1dGhlbnRpY2F0aW9uIHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpY0F1dGhlbnRpY2F0aW9uOiBQdWJsaWNBdXRoZW50aWNhdGlvbiB8IG51bGwgPSBudWxsO1xuICBjdXJyZW50VG9rZW4kOiBPYnNlcnZhYmxlPFRva2VuIHwgbnVsbD4gPSB0aGlzLmN1cnJlbnRUb2tlblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgZ2V0IGlzQXV0aGVudGljYXRlZCgpIHtcbiAgICByZXR1cm4gISF0aGlzLmF1dGhlbnRpY2F0aW9uO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcGlTZXJ2aWNlOiBBcGlTZXJ2aWNlLCBASW5qZWN0KEFQUCkgcHJpdmF0ZSBhcHA6IEFwcCwgcHJpdmF0ZSB0b2tlblNlcnZpY2U6IFRva2VuU2VydmljZSkge31cblxuICBhdXRoZW50aWNhdGVCeUNyZWRlbnRpYWxzKHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlblNlcnZpY2VcbiAgICAgIC5nZXRUb2tlbkJ5Q3JlZGVudGlhbHModGhpcy5hcHAuY2xpZW50SWQsIHRoaXMuYXBwLmNsaWVudFNlY3JldCwgdXNlcm5hbWUsIHBhc3N3b3JkKVxuICAgICAgLnBpcGUodGFwKCh0b2tlbikgPT4gdGhpcy5zZXRUb2tlbih0b2tlbikpKTtcbiAgfVxuXG4gIGF1dGhlbnRpY2F0ZUJ5VG9rZW4odG9rZW46IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnRva2VuU2VydmljZVxuICAgICAgLmdldFRva2VuQnlDb2RlKFxuICAgICAgICB0aGlzLmFwcC5hdXRob3JpemF0aW9uQ29kZUNsaWVudElkIHx8IHRoaXMuYXBwLmNsaWVudElkLFxuICAgICAgICB0aGlzLmFwcC5hdXRob3JpemF0aW9uQ29kZUNsaWVudFNlY3JldCB8fCB0aGlzLmFwcC5jbGllbnRTZWNyZXQsXG4gICAgICAgIHRva2VuLFxuICAgICAgKVxuICAgICAgLnBpcGUodGFwKCh0b2tlbikgPT4gdGhpcy5zZXRUb2tlbih0b2tlbikpKTtcbiAgfVxuXG4gIGNsZWFyQXV0aGVudGljYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5hdXRoZW50aWNhdGlvbiA9IG51bGw7XG4gICAgdGhpcy5wdWJsaWNBdXRoZW50aWNhdGlvbiA9IG51bGw7XG4gICAgdGhpcy5jdXJyZW50VG9rZW5TdWJqZWN0Lm5leHQobnVsbCk7XG4gIH1cblxuICBnZXRMb2dpbkNvZGUoZW1haWw6IHN0cmluZywgY2x1YklkOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgY29uc3QgcGFyYW1zOiBhbnkgPSB7IGVtYWlsIH07XG5cbiAgICBpZiAoY2x1YklkKSB7XG4gICAgICBwYXJhbXNbJ2NsdWJfaWQnXSA9IGNsdWJJZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldENvbGxlY3Rpb24oc2VhcmNoQ2x1YkZhY3RvcnksIFJvbGUuUHVibGljLCBQVUJMSUNfQVVUSF9SRVRSSUVWRV9DT0RFX1BBVEgsIHt9LCB7cGFyYW1zfSk7XG4gIH1cblxuICBnZXRQdWJsaWNUb2tlbihlbWFpbDogc3RyaW5nLCBjb2RlOiBzdHJpbmcsIGNsdWJJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0UmVzb3VyY2UocHVibGljQXV0aGVudGljYXRpb25GYWN0b3J5LCBSb2xlLlB1YmxpYywgUFVCTElDX0FVVEhfVE9LRU5fUEFUSCwge30sIHtlbWFpbCwgY29kZSwgY2x1Yl9pZDogY2x1YklkfSlcbiAgICAgIC5waXBlKHRhcCgodG9rZW4pID0+IHRoaXMuc2V0UHVibGljVG9rZW4odG9rZW4pKSk7XG4gIH1cblxuICBjaGFuZ2VQdWJsaWNUb2tlbihtZW1iZXJJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0UmVzb3VyY2UocHVibGljQXV0aGVudGljYXRpb25GYWN0b3J5LCBSb2xlLlB1YmxpYywgUFVCTElDX0FVVEhfQ0hBTkdFX1RPS0VOX1BBVEgsIHt9LCB7bWVtYmVyX2lkOiBtZW1iZXJJZH0pXG4gICAgICAucGlwZSh0YXAoKHRva2VuKSA9PiB0aGlzLnNldFB1YmxpY1Rva2VuKHRva2VuKSkpO1xuICB9XG5cbiAgZ2V0U2Vzc2lvblRva2VuKCkge1xuICAgIHJldHVybiB0aGlzLnRva2VuU2VydmljZVxuICAgICAgLmdldFRva2VuQnlTZXNzaW9uKClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKHRva2VuOiBUb2tlbiB8IG51bGwpID0+IHtcbiAgICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VG9rZW4odG9rZW4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgbG9nb3V0KCkge1xuICAgIHJldHVybiB0aGlzLnRva2VuU2VydmljZVxuICAgICAgLmxvZ291dCgpXG4gICAgICAucGlwZSh0YXAoKCkgPT4gdGhpcy5jbGVhckF1dGhlbnRpY2F0aW9uKCkpKTtcbiAgfVxuXG4gIHJlYXV0aGVudGljYXRlKGdyYW50VHlwZTogR3JhbnRUeXBlIHwgbnVsbCA9IG51bGwpIHtcbiAgICBsZXQgY2xpZW50SWQgPSB0aGlzLmFwcC5jbGllbnRJZDtcbiAgICBsZXQgY2xpZW50U2VjcmV0ID0gdGhpcy5hcHAuY2xpZW50U2VjcmV0O1xuICAgIGlmIChncmFudFR5cGUgPT0gJ2F1dGhvcml6YXRpb25fY29kZScpIHtcbiAgICAgIGNsaWVudElkID0gdGhpcy5hcHAuYXV0aG9yaXphdGlvbkNvZGVDbGllbnRJZCB8fCB0aGlzLmFwcC5jbGllbnRJZDtcbiAgICAgIGNsaWVudFNlY3JldCA9IHRoaXMuYXBwLmF1dGhvcml6YXRpb25Db2RlQ2xpZW50U2VjcmV0IHx8IHRoaXMuYXBwLmNsaWVudFNlY3JldDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudG9rZW5TZXJ2aWNlXG4gICAgICAuZ2V0VG9rZW5CeVJlZnJlc2hUb2tlbihcbiAgICAgICAgY2xpZW50SWQsXG4gICAgICAgIGNsaWVudFNlY3JldCxcbiAgICAgICAgdGhpcy5hdXRoZW50aWNhdGlvbj8ucmVmcmVzaFRva2VuIGFzIHN0cmluZ1xuICAgICAgKVxuICAgICAgLnBpcGUodGFwKCh0b2tlbjogVG9rZW4pID0+IHRoaXMuc2V0VG9rZW4odG9rZW4pKSk7XG4gIH1cblxuICBzZXRBdXRoZW50aWNhdGlvbihhY2Nlc3NUb2tlbjogc3RyaW5nLCByZWZyZXNoVG9rZW46IHN0cmluZykge1xuICAgIHRoaXMuYXV0aGVudGljYXRpb24gPSBuZXcgQXV0aGVudGljYXRpb24oYWNjZXNzVG9rZW4sIHJlZnJlc2hUb2tlbik7XG4gIH1cblxuICBzZXRQdWJsaWNUb2tlbih0b2tlbjogUHVibGljQXV0aGVudGljYXRpb24pIHtcbiAgICB0aGlzLnB1YmxpY0F1dGhlbnRpY2F0aW9uID0gbmV3IFB1YmxpY0F1dGhlbnRpY2F0aW9uKHRva2VuLnRva2VuLCB0b2tlbi50b2tlbkV4cGlyZXMpO1xuICB9XG5cbiAgc2V0VG9rZW4odG9rZW46IFRva2VuKSB7XG4gICAgdGhpcy5jdXJyZW50VG9rZW5TdWJqZWN0Lm5leHQodG9rZW4pO1xuICAgIHRoaXMuc2V0QXV0aGVudGljYXRpb24odG9rZW4uYWNjZXNzVG9rZW4sIHRva2VuLnJlZnJlc2hUb2tlbik7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -42,6 +42,7 @@ export * from './member-type';
|
|
|
42
42
|
export * from './news';
|
|
43
43
|
export * from './open-activity';
|
|
44
44
|
export * from './partner';
|
|
45
|
+
export * from './public-authentication';
|
|
45
46
|
export * from './role';
|
|
46
47
|
export * from './search-club';
|
|
47
48
|
export * from './search-team';
|
|
@@ -49,4 +50,4 @@ export * from './section';
|
|
|
49
50
|
export * from './token';
|
|
50
51
|
export * from './user';
|
|
51
52
|
export * from './user-notification';
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhLWFjY2Vzcy9zcmMvbGliL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FjdGl2aXR5JztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aXZpdHktZXh0cmEtbWVtYmVyJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aXZpdHktaW52aXRlJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aXZpdHktbG9jYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpdml0eS1sb2NhdGlvbi1ncm91cCc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGl2aXR5LWxvY2F0aW9uLXRhZyc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGl2aXR5LWxvY2F0aW9uLXBhcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpdml0eS1zZXR0aW5ncyc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGl2aXR5LXR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9hdXRoJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0aGVudGljYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9ib29raW5nLWNhbGVuZGFyJztcbmV4cG9ydCAqIGZyb20gJy4vYm9va2luZy1jYWxlbmRhci1hcHBsaWNhdGlvbi10aW1lJztcbmV4cG9ydCAqIGZyb20gJy4vYm9va2luZy1jYWxlbmRhci1zbG90JztcbmV4cG9ydCAqIGZyb20gJy4vYm9va2luZy1jYWxlbmRhci1zbG90LXNlc3Npb24nO1xuZXhwb3J0ICogZnJvbSAnLi9ib29raW5nLXNldHRpbmdzJztcbmV4cG9ydCAqIGZyb20gJy4vY2FsZW5kYXInO1xuZXhwb3J0ICogZnJvbSAnLi9jYWxlbmRhci1ldmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NhcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9jbHViJztcbmV4cG9ydCAqIGZyb20gJy4vY2x1Yi1pbWFnZSc7XG5leHBvcnQgKiBmcm9tICcuL2NsdWItc2VjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2NvbGxlY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9jb250YWN0JztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vZW1haWwnO1xuZXhwb3J0ICogZnJvbSAnLi9ldmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2V4dGVybmFsLWxpbmsnO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlLW9iamVjdCc7XG5leHBvcnQgKiBmcm9tICcuL2dlbmVyYWwtaW1hZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9ncm91cC1yb2xlJztcbmV4cG9ydCAqIGZyb20gJy4vaW1hZ2UtdXJscyc7XG5leHBvcnQgKiBmcm9tICcuL2ludm9pY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9tZW1iZXInO1xuZXhwb3J0ICogZnJvbSAnLi9tZW1iZXItYWN0aXZpdHktaW52aXRlJztcbmV4cG9ydCAqIGZyb20gJy4vbWVtYmVyLXB1YmxpYy1mb3JtJztcbmV4cG9ydCAqIGZyb20gJy4vbWVtYmVyLXB1YmxpYy1mb3JtLWZpZWxkJztcbmV4cG9ydCAqIGZyb20gJy4vbWVtYmVyLXB1YmxpYy1mb3JtLWZpZWxkLW9wdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL21lbWJlci10ZWFtJztcbmV4cG9ydCAqIGZyb20gJy4vbWVtYmVyLXRlYW0tdGhyb3VnaCc7XG5leHBvcnQgKiBmcm9tICcuL21lbWJlci10eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbmV3cyc7XG5leHBvcnQgKiBmcm9tICcuL29wZW4tYWN0aXZpdHknO1xuZXhwb3J0ICogZnJvbSAnLi9wYXJ0bmVyJztcbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWF1dGhlbnRpY2F0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vcm9sZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlYXJjaC1jbHViJztcbmV4cG9ydCAqIGZyb20gJy4vc2VhcmNoLXRlYW0nO1xuZXhwb3J0ICogZnJvbSAnLi9zZWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vdG9rZW4nO1xuZXhwb3J0ICogZnJvbSAnLi91c2VyJztcbmV4cG9ydCAqIGZyb20gJy4vdXNlci1ub3RpZmljYXRpb24nO1xuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export class PublicAuthentication {
|
|
2
|
+
constructor(token, tokenExpires) {
|
|
3
|
+
this.token = token;
|
|
4
|
+
this.tokenExpires = tokenExpires;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWF1dGhlbnRpY2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9tb2RlbHMvcHVibGljLWF1dGhlbnRpY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFBbUIsS0FBYSxFQUFTLFlBQW9CO1FBQTFDLFVBQUssR0FBTCxLQUFLLENBQVE7UUFBUyxpQkFBWSxHQUFaLFlBQVksQ0FBUTtJQUM3RCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgUHVibGljQXV0aGVudGljYXRpb24ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdG9rZW46IHN0cmluZywgcHVibGljIHRva2VuRXhwaXJlczogc3RyaW5nKSB7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -14,6 +14,10 @@ const MEMBER_OPEN_ACTIVITIES_PATH = ':memberId/open-activities/';
|
|
|
14
14
|
const MEMBER_OPEN_ACTIVITY_PATH = ':memberId/open-activities/:activityId/';
|
|
15
15
|
const MEMBER_OPEN_ACTIVITY_RESPOND_PATH = ':memberId/open-activities/:activityId/respond/';
|
|
16
16
|
const PUBLIC_ACTIVITY_INVITE_PATH = 'activities/:id/:token/';
|
|
17
|
+
const PUBLIC_OPEN_ACTIVITIES_PATH = 'open-activities/';
|
|
18
|
+
const PUBLIC_OPEN_ACTIVITY_PATH = 'open-activities/:activityId/';
|
|
19
|
+
const PUBLIC_OPEN_ACTIVITY_RESPOND_PATH = 'open-activities/:activityId/respond/';
|
|
20
|
+
const PUBLIC_OPEN_ACTIVITY_INVITE_PATH = 'open-activities/invites/:activityId/';
|
|
17
21
|
const TEAM_ACTIVITIES_PATH = ':teamId/activities/';
|
|
18
22
|
const TEAM_ACTIVITY_INVITES_PATH = ':teamId/activities/:activityId/invites/';
|
|
19
23
|
const TEAM_ACTIVITY_INVITE_PATH = ':teamId/activities/:activityId/invites/:activityInviteId/';
|
|
@@ -134,6 +138,19 @@ export class ActivityService {
|
|
|
134
138
|
token
|
|
135
139
|
});
|
|
136
140
|
}
|
|
141
|
+
getPublicOpenActivities(startDate, endDate) {
|
|
142
|
+
const params = {
|
|
143
|
+
end_date: endDate,
|
|
144
|
+
limit: 'null',
|
|
145
|
+
start_date: startDate
|
|
146
|
+
};
|
|
147
|
+
return this.apiService
|
|
148
|
+
.getCollection(openActivityFactory, Role.Public, PUBLIC_OPEN_ACTIVITIES_PATH, {}, { params });
|
|
149
|
+
}
|
|
150
|
+
getPublicOpenActivity(activityId) {
|
|
151
|
+
return this.apiService
|
|
152
|
+
.getResource(openActivityFactory, Role.Public, PUBLIC_OPEN_ACTIVITY_PATH, { activityId });
|
|
153
|
+
}
|
|
137
154
|
getTeamActivity(teamId, id) {
|
|
138
155
|
return this.apiService
|
|
139
156
|
.getResource(activityFactory, Role.TeamAdmin, TEAM_ACTIVITY_PATH, { teamId, id });
|
|
@@ -477,6 +494,12 @@ export class ActivityService {
|
|
|
477
494
|
activityId
|
|
478
495
|
});
|
|
479
496
|
}
|
|
497
|
+
removePublicOpenActivity(activityId) {
|
|
498
|
+
return this.apiService
|
|
499
|
+
.deleteResource(Role.Public, PUBLIC_OPEN_ACTIVITY_RESPOND_PATH, {
|
|
500
|
+
activityId
|
|
501
|
+
});
|
|
502
|
+
}
|
|
480
503
|
signUpMemberOpenActivity(memberId, activityId, comment, optionalFees) {
|
|
481
504
|
return this.apiService
|
|
482
505
|
.updateResourceNoResponse(Role.MemberAdmin, MEMBER_OPEN_ACTIVITY_RESPOND_PATH, {
|
|
@@ -487,6 +510,15 @@ export class ActivityService {
|
|
|
487
510
|
optional_fees: optionalFees
|
|
488
511
|
});
|
|
489
512
|
}
|
|
513
|
+
signUpPublicOpenActivity(activityId, comment, optionalFees) {
|
|
514
|
+
return this.apiService
|
|
515
|
+
.updateResourceNoResponse(Role.MemberAdmin, PUBLIC_OPEN_ACTIVITY_RESPOND_PATH, {
|
|
516
|
+
activityId
|
|
517
|
+
}, {
|
|
518
|
+
comment,
|
|
519
|
+
optional_fees: optionalFees
|
|
520
|
+
});
|
|
521
|
+
}
|
|
490
522
|
updateMemberActivity(memberId, activityInviteId, activityInvite) {
|
|
491
523
|
return this.apiService
|
|
492
524
|
.updateResource(activityInviteFactory, Role.MemberAdmin, MEMBER_ACTIVITY_INVITE_PATH, {
|
|
@@ -501,6 +533,12 @@ export class ActivityService {
|
|
|
501
533
|
token
|
|
502
534
|
}, activityInvite);
|
|
503
535
|
}
|
|
536
|
+
updatePublicOpenActivityInvite(id, activityInvite) {
|
|
537
|
+
return this.apiService
|
|
538
|
+
.updateResource(activityInviteFactory, Role.Public, PUBLIC_OPEN_ACTIVITY_INVITE_PATH, {
|
|
539
|
+
id
|
|
540
|
+
}, activityInvite);
|
|
541
|
+
}
|
|
504
542
|
updateTeamActivity(teamId, activity) {
|
|
505
543
|
return this.apiService
|
|
506
544
|
.updateResource(activityFactory, Role.TeamAdmin, TEAM_ACTIVITY_PATH, {
|
|
@@ -547,4 +585,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImpo
|
|
|
547
585
|
providedIn: 'root'
|
|
548
586
|
}]
|
|
549
587
|
}], ctorParameters: function () { return [{ type: i1.ApiService }]; } });
|
|
550
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvc2VydmljZXMvYWN0aXZpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFPTCxJQUFJLEdBQ0wsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25DLE9BQU8sRUFBQyxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUNMLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsdUJBQXVCLEVBQ3ZCLDRCQUE0QixFQUM1QiwwQkFBMEIsRUFDMUIsdUJBQXVCLEVBQ3ZCLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osMkJBQTJCLEVBQUUsbUJBQW1CLEVBQ2hELG1CQUFtQixHQUNwQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQzdCLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDOzs7QUFFdkYsTUFBTSwyQkFBMkIsR0FBRyx5Q0FBeUMsQ0FBQztBQUM5RSxNQUFNLDRCQUE0QixHQUFHLHVCQUF1QixDQUFDO0FBQzdELE1BQU0sb0JBQW9CLEdBQUcsZ0NBQWdDLENBQUM7QUFDOUQsTUFBTSwyQkFBMkIsR0FBRyw0QkFBNEIsQ0FBQztBQUNqRSxNQUFNLHlCQUF5QixHQUFHLHdDQUF3QyxDQUFDO0FBQzNFLE1BQU0saUNBQWlDLEdBQUcsZ0RBQWdELENBQUM7QUFDM0YsTUFBTSwyQkFBMkIsR0FBRyx3QkFBd0IsQ0FBQztBQUM3RCxNQUFNLG9CQUFvQixHQUFHLHFCQUFxQixDQUFDO0FBQ25ELE1BQU0sMEJBQTBCLEdBQUcseUNBQXlDLENB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Qzs7NkdBdjNCVSxlQUFlO2lIQUFmLGVBQWUsY0FGZCxNQUFNOzRGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QXBpU2VydmljZX0gZnJvbSAnLi9hcGkuc2VydmljZSc7XG5pbXBvcnQge1xuICBBY3Rpdml0eSxcbiAgQWN0aXZpdHlMb2NhdGlvbiwgQWN0aXZpdHlMb2NhdGlvbkdyb3VwLFxuICBBY3Rpdml0eUxvY2F0aW9uVGFnLFxuICBBY3Rpdml0eVR5cGUsXG4gIENvbGxlY3Rpb24sXG4gIE1lbWJlckFjdGl2aXR5SW52aXRlLFxuICBSb2xlLFxufSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHt0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7b2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgYWN0aXZpdHlGYWN0b3J5LFxuICBhY3Rpdml0eUludml0ZUZhY3RvcnksXG4gIGFjdGl2aXR5TG9jYXRpb25GYWN0b3J5LFxuICBhY3Rpdml0eUxvY2F0aW9uR3JvdXBGYWN0b3J5LFxuICBhY3Rpdml0eUxvY2F0aW9uVGFnRmFjdG9yeSxcbiAgYWN0aXZpdHlTZXR0aW5nc0ZhY3RvcnksXG4gIGFjdGl2aXR5VHlwZUZhY3RvcnksXG4gIGV2ZW50RmFjdG9yeSxcbiAgbWVtYmVyQWN0aXZpdHlJbnZpdGVGYWN0b3J5LCBvcGVuQWN0aXZpdHlGYWN0b3J5LFxuICBzZWFyY2hNZW1iZXJGYWN0b3J5LFxufSBmcm9tICcuL2ZhY3Rvcmllcyc7XG5pbXBvcnQge3N1Yn0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHthY3Rpdml0eUxvY2F0aW9uUGFydEZhY3Rvcnl9IGZyb20gXCIuL2ZhY3Rvcmllcy9hY3Rpdml0eS1sb2NhdGlvbi1wYXJ0LWZhY3RvcnlcIjtcblxuY29uc3QgTUVNQkVSX0FDVElWSVRZX0lOVklURV9QQVRIID0gJzptZW1iZXJJZC9hY3Rpdml0aWVzLzphY3Rpdml0eUludml0ZUlkLyc7XG5jb25zdCBNRU1CRVJfQUNUSVZJVFlfSU5WSVRFU19QQVRIID0gJzptZW1iZXJJZC9hY3Rpdml0aWVzLyc7XG5jb25zdCBNRU1CRVJfQ0FMRU5EQVJfUEFUSCA9ICc6bWVtYmVySWQvYWN0aXZpdGllcy9jYWxlbmRhci8nO1xuY29uc3QgTUVNQkVSX09QRU5fQUNUSVZJVElFU19QQVRIID0gJzptZW1iZXJJZC9vcGVuLWFjdGl2aXRpZXMvJztcbmNvbnN0IE1FTUJFUl9PUEVOX0FDVElWSVRZX1BBVEggPSAnOm1lbWJlcklkL29wZW4tYWN0aXZpdGllcy86YWN0aXZpdHlJZC8nO1xuY29uc3QgTUVNQkVSX09QRU5fQUNUSVZJVFlfUkVTUE9ORF9QQVRIID0gJzptZW1iZXJJZC9vcGVuLWFjdGl2aXRpZXMvOmFjdGl2aXR5SWQvcmVzcG9uZC8nO1xuY29uc3QgUFVCTElDX0FDVElWSVRZX0lOVklURV9QQVRIID0gJ2FjdGl2aXRpZXMvOmlkLzp0b2tlbi8nO1xuY29uc3QgVEVBTV9BQ1RJVklUSUVTX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzLyc7XG5jb25zdCBURUFNX0FDVElWSVRZX0lOVklURVNfUEFUSCA9ICc6dGVhbUlkL2FjdGl2aXRpZXMvOmFjdGl2aXR5SWQvaW52aXRlcy8nO1xuY29uc3QgVEVBTV9BQ1RJVklUWV9JTlZJVEVfUEFUSCA9ICc6dGVhbUlkL2FjdGl2aXRpZXMvOmFjdGl2aXR5SWQvaW52aXRlcy86YWN0aXZpdHlJbnZpdGVJZC8nO1xuY29uc3QgVEVBTV9BQ1RJVklUWV9JTlZJVEVfUkVTRU5EX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzLzphY3Rpdml0eUlkL2ludml0ZXMvOmFjdGl2aXR5SW52aXRlSWQvcmVzZW5kLWludml0ZS8nO1xuY29uc3QgVEVBTV9BQ1RJVklUWV9ORVdfUEFUSCA9ICc6dGVhbUlkL2FjdGl2aXRpZXMvbmV3Lyc7XG5jb25zdCBURUFNX0FDVElWSVRZX1BBUlRJQ0lQQU5UU19QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy86YWN0aXZpdHlJZC9wYXJ0aWNpcGFudHMvJztcbmNvbnN0IFRFQU1fQUNUSVZJVFlfUEFUSCA9ICc6dGVhbUlkL2FjdGl2aXRpZXMvOmlkLyc7XG5jb25zdCBURUFNX0FDVElWSVRZX1NFVFRJTkdTX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzL3NldHRpbmdzLyc7XG5jb25zdCBTRUNUSU9OX0FDVElWSVRZX1NFVFRJTkdTX1BBVEggPSAnOnNlY3Rpb25JZC9hY3Rpdml0aWVzL3NldHRpbmdzLyc7XG5jb25zdCBDTFVCX0FDVElWSVRZX1NFVFRJTkdTX1BBVEggPSAnOmNsdWJJZC9hY3Rpdml0aWVzL3NldHRpbmdzLyc7XG5jb25zdCBURUFNX0FDVElWSVRZX1RZUEVTX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzL3R5cGVzLyc7XG5jb25zdCBURUFNX0NBTEVOREFSX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzL2NhbGVuZGFyLyc7XG5cbmNvbnN0IENMVUJfQUNUSVZJVFlfTE9DQVRJT05TX1BBVEggPSAnOmNsdWJJZC9hY3Rpdml0aWVzL2xvY2F0aW9ucy8nO1xuY29uc3QgQ0xVQl9BQ1RJVklUWV9MT0NBVElPTl9QQVRIID0gJzpjbHViSWQvYWN0aXZpdGllcy9sb2NhdGlvbnMvOmxvY2F0aW9uSWQvJztcbmNvbnN0IENMVUJfQUNUSVZJVFlfTE9DQVRJT05fR1JPVVBTX1BBVEggPSAnOmNsdWJJZC9hY3Rpdml0aWVzL2xvY2F0aW9ucy9ncm91cHMvJztcbmNvbnN0IENMVUJfQUNUSVZJVFlfTE9DQVRJT05fR1JPVVBfUEFUSCA9ICc6Y2x1YklkL2FjdGl2aXRpZXMvbG9jYXRpb25zL2dyb3Vwcy86Z3JvdXBJZC8nO1xuY29uc3QgQ0xVQl9BQ1RJVklUWV9MT0NBVElPTl9UQUdTX1BBVEggPSAnOmNsdWJJZC9hY3Rpdml0aWVzL2xvY2F0aW9ucy90YWdzLyc7XG5jb25zdCBDTFVCX0FDVElWSVRZX0xPQ0FUSU9OX1RBR19QQVRIID0gJzpjbHViSWQvYWN0aXZpdGllcy9sb2NhdGlvbnMvdGFncy86dGFnSWQvJztcbmNvbnN0IENMVUJfQUNUSVZJVFlfTE9DQVRJT05fUEFSVFNfUEFUSCA9ICc6Y2x1YklkL2FjdGl2aXRpZXMvbG9jYXRpb25zLzpsb2NhdGlvbklkL3BhcnRzLyc7XG5jb25zdCBDTFVCX0FDVElWSVRZX1RZUEVTX1BBVEggPSAnOmNsdWJJZC9hY3Rpdml0aWVzL3R5cGVzLyc7XG5jb25zdCBDTFVCX0FDVElWSVRZX1RZUEVfUEFUSCA9ICc6Y2x1YklkL2FjdGl2aXRpZXMvdHlwZXMvOnR5cGVJZC8nO1xuXG5jb25zdCBURUFNX0FDVElWSVRZX0xPQ0FUSU9OU19QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy9sb2NhdGlvbnMvJztcbmNvbnN0IFRFQU1fQUNUSVZJVFlfTE9DQVRJT05fR1JPVVBTX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzL2xvY2F0aW9ucy9ncm91cHMvJztcbmNvbnN0IFRFQU1fQUNUSVZJVFlfTE9DQVRJT05fVEFHU19QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy9sb2NhdGlvbnMvdGFncy8nO1xuY29uc3QgVEVBTV9BQ1RJVklUWV9MT0NBVElPTl9QQVJUU19QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy9sb2NhdGlvbnMvOmxvY2F0aW9uSWQvcGFydHMvJztcblxuY29uc3QgU0VDVElPTl9BQ1RJVklUWV9MT0NBVElPTlNfUEFUSCA9ICc6c2VjdGlvbklkL2FjdGl2aXRpZXMvbG9jYXRpb25zLyc7XG5jb25zdCBTRUNUSU9OX0FDVElWSVRZX0xPQ0FUSU9OX1BBVEggPSAnOnNlY3Rpb25JZC9hY3Rpdml0aWVzL2xvY2F0aW9ucy86bG9jYXRpb25JZC8nO1xuY29uc3QgU0VDVElPTl9BQ1RJVklUWV9MT0NBVElPTl9HUk9VUFNfUEFUSCA9ICc6c2VjdGlvbklkL2FjdGl2aXRpZXMvbG9jYXRpb25zL2dyb3Vwcy8nO1xuY29uc3QgU0VDVElPTl9BQ1RJVklUWV9MT0NBVElPTl9HUk9VUF9QQVRIID0gJzpzZWN0aW9uSWQvYWN0aXZpdGllcy9sb2NhdGlvbnMvZ3JvdXBzLzpncm91cElkLyc7XG5jb25zdCBTRUNUSU9OX0FDVElWSVRZX0xPQ0FUSU9OX1RBR1NfUEFUSCA9ICc6c2VjdGlvbklkL2FjdGl2aXRpZXMvbG9jYXRpb25zL3RhZ3MvJztcbmNvbnN0IFNFQ1RJT05fQUNUSVZJVFlfTE9DQVRJT05fVEFHX1BBVEggPSAnOnNlY3Rpb25JZC9hY3Rpdml0aWVzL2xvY2F0aW9ucy90YWdzLzp0YWdJZC8nO1xuY29uc3QgU0VDVElPTl9BQ1RJVklUWV9MT0NBVElPTl9QQVJUU19QQVRIID0gJzpzZWN0aW9uSWQvYWN0aXZpdGllcy9sb2NhdGlvbnMvOmxvY2F0aW9uSWQvcGFydHMvJztcbmNvbnN0IFNFQ1RJT05fQUNUSVZJVFlfVFlQRVNfUEFUSCA9ICc6c2VjdGlvbklkL2FjdGl2aXRpZXMvdHlwZXMvJztcbmNvbnN0IFNFQ1RJT05fQUNUSVZJVFlfVFlQRV9QQVRIID0gJzpzZWN0aW9uSWQvYWN0aXZpdGllcy90eXBlcy86dHlwZUlkLyc7XG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQWN0aXZpdHlTZXJ2aWNlIHtcbiAgYWN0aXZpdHlMb2NhdGlvbkNvbGxlY3Rpb246IENvbGxlY3Rpb248QWN0aXZpdHlMb2NhdGlvbj4gfCB1bmRlZmluZWQ7XG4gIGFjdGl2aXR5VHlwZUNvbGxlY3Rpb246IENvbGxlY3Rpb248QWN0aXZpdHlUeXBlPiB8IHVuZGVmaW5lZDtcblxuICBhY3Rpdml0eUxvY2F0aW9uUmVzcG9uc2VEYXRlOiBEYXRlIHwgdW5kZWZpbmVkO1xuICBhY3Rpdml0eVR5cGVSZXNwb25zZURhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcGlTZXJ2aWNlOiBBcGlTZXJ2aWNlKSB7XG4gIH1cblxuICBhZGRUZWFtQWN0aXZpdHlJbnZpdGVzKHRlYW1JZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcsIG1lbWJlcklkczogQXJyYXk8c3RyaW5nPikge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5wb3N0UmVzb3VyY2UoXG4gICAgICAgICgpID0+IHRydWUsXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRZX0lOVklURVNfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIHRlYW1JZCxcbiAgICAgICAgICBhY3Rpdml0eUlkXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBtZW1iZXJzOiBtZW1iZXJJZHNcbiAgICAgICAgfVxuICAgICAgKVxuICB9XG5cbiAgY3JlYXRlVGVhbUFjdGl2aXR5KHRlYW1JZDogc3RyaW5nLCBkYXRhOiBQYXJ0aWFsPEFjdGl2aXR5Pikge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5wb3N0UmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5RmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQUNUSVZJVElFU19QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgdGVhbUlkXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMucmVtb3ZlVW51c2VkQWN0aXZpdHlGaWVsZHMoZGF0YSlcbiAgICAgIClcbiAgfVxuXG4gIGRlbGV0ZVRlYW1BY3Rpdml0eSh0ZWFtSWQ6IHN0cmluZywgaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5kZWxldGVSZXNvdXJjZShcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQUNUSVZJVFlfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIHRlYW1JZCxcbiAgICAgICAgICBpZFxuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgZGVsZXRlVGVhbUFjdGl2aXR5SW52aXRlKHRlYW1JZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcsIGFjdGl2aXR5SW52aXRlSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5kZWxldGVSZXNvdXJjZShcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQUNUSVZJVFlfSU5WSVRFX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICB0ZWFtSWQsXG4gICAgICAgICAgYWN0aXZpdHlJZCxcbiAgICAgICAgICBhY3Rpdml0eUludml0ZUlkXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBnZXRNZW1iZXJBY3Rpdml0eUludml0ZShtZW1iZXJJZDogc3RyaW5nLCBhY3Rpdml0eUludml0ZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0UmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5SW52aXRlRmFjdG9yeSxcbiAgICAgICAgUm9sZS5NZW1iZXJBZG1pbixcbiAgICAgICAgTUVNQkVSX0FDVElWSVRZX0lOVklURV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgbWVtYmVySWQsXG4gICAgICAgICAgYWN0aXZpdHlJbnZpdGVJZFxuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgZ2V0TWVtYmVyQWN0aXZpdHlJbnZpdGVzKG1lbWJlcklkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwYXJhbXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7bGltaXQ6ICdudWxsJ307XG5cbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYWN0aXZpdHlJbnZpdGVGYWN0b3J5LFxuICAgICAgICBSb2xlLk1lbWJlckFkbWluLFxuICAgICAgICBNRU1CRVJfQUNUSVZJVFlfSU5WSVRFU19QQVRILFxuICAgICAgICB7bWVtYmVySWR9LFxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1zXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBnZXRNZW1iZXJDYWxlbmRhckV2ZW50cyhtZW1iZXJJZDogc3RyaW5nLCBzdGFydERhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsLCBlbmREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgIGNvbnN0IHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtsaW1pdDogJ251bGwnfTtcblxuICAgIGlmIChzdGFydERhdGUpIHtcbiAgICAgIHBhcmFtc1snc2VhcmNoX3N0YXJ0X2RheSddID0gc3RhcnREYXRlO1xuICAgIH1cblxuICAgIGlmIChlbmREYXRlKSB7XG4gICAgICBwYXJhbXNbJ3NlYXJjaF9lbmRfZGF5J10gPSBlbmREYXRlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBldmVudEZhY3RvcnksXG4gICAgICAgIFJvbGUuTWVtYmVyQWRtaW4sXG4gICAgICAgIE1FTUJFUl9DQUxFTkRBUl9QQVRILFxuICAgICAgICB7bWVtYmVySWR9LFxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1zXG4gICAgICAgIH1cbiAgICAgIClcbiAgfVxuXG4gIGdldE1lbWJlck9wZW5BY3Rpdml0aWVzKG1lbWJlcklkOiBzdHJpbmcsIHN0YXJ0RGF0ZTogc3RyaW5nLCBlbmREYXRlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwYXJhbXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICBlbmRfZGF0ZTogZW5kRGF0ZSxcbiAgICAgIGxpbWl0OiAnbnVsbCcsXG4gICAgICBzdGFydF9kYXRlOiBzdGFydERhdGVcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIG9wZW5BY3Rpdml0eUZhY3RvcnksXG4gICAgICAgIFJvbGUuTWVtYmVyQWRtaW4sXG4gICAgICAgIE1FTUJFUl9PUEVOX0FDVElWSVRJRVNfUEFUSCxcbiAgICAgICAge21lbWJlcklkfSxcbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtc1xuICAgICAgICB9XG4gICAgICApXG4gIH1cblxuICBnZXRNZW1iZXJPcGVuQWN0aXZpdHkobWVtYmVySWQ6IHN0cmluZywgYWN0aXZpdHlJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldFJlc291cmNlKFxuICAgICAgICBvcGVuQWN0aXZpdHlGYWN0b3J5LFxuICAgICAgICBSb2xlLk1lbWJlckFkbWluLFxuICAgICAgICBNRU1CRVJfT1BFTl9BQ1RJVklUWV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgbWVtYmVySWQsXG4gICAgICAgICAgYWN0aXZpdHlJZFxuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgZ2V0UHVibGljQWN0aXZpdHlJbnZpdGUoaWQ6IHN0cmluZywgdG9rZW46IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlJbnZpdGVGYWN0b3J5LFxuICAgICAgICBSb2xlLlB1YmxpYyxcbiAgICAgICAgUFVCTElDX0FDVElWSVRZX0lOVklURV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgaWQsXG4gICAgICAgICAgdG9rZW5cbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIGdldFRlYW1BY3Rpdml0eSh0ZWFtSWQ6IHN0cmluZywgaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9QQVRILFxuICAgICAgICB7dGVhbUlkLCBpZH1cbiAgICAgIClcbiAgfVxuXG4gIGdldEFjdGl2aXR5TG9jYXRpb25zKHJvbGU6IFJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLCBmb3JjZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgaWYgKHJvbGUgPT0gUm9sZS5DbHViQWRtaW4pIHtcbiAgICAgIHJldHVybiB0aGlzLmdldENsdWJBY3Rpdml0eUxvY2F0aW9ucyhjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGZvcmNlKTtcbiAgICB9IGVsc2UgaWYgKHJvbGUgPT0gUm9sZS5TZWN0aW9uQWRtaW4pIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFNlY3Rpb25BY3Rpdml0eUxvY2F0aW9ucyhjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGZvcmNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ2V0VGVhbUFjdGl2aXR5TG9jYXRpb25zKGNsdWJPclNlY3Rpb25PclRlYW1JZCwgZm9yY2UpXG4gIH1cblxuICBnZXRUZWFtQWN0aXZpdHlMb2NhdGlvbnModGVhbUlkOiBzdHJpbmcsIGZvcmNlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBpZiAodGhpcy5hY3Rpdml0eUxvY2F0aW9uUmVzcG9uc2VEYXRlICYmIHRoaXMuYWN0aXZpdHlMb2NhdGlvblJlc3BvbnNlRGF0ZSA+IHN1YihuZXcgRGF0ZSgpLCB7aG91cnM6IDF9KSAmJiAhZm9yY2UpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLmFjdGl2aXR5TG9jYXRpb25Db2xsZWN0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYWN0aXZpdHlMb2NhdGlvbkZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRZX0xPQ0FUSU9OU19QQVRILFxuICAgICAgICB7dGVhbUlkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKS5waXBlKFxuICAgICAgICB0YXAoKGFjdGl2aXR5TG9jYXRpb25Db2xsZWN0aW9uOiBDb2xsZWN0aW9uPEFjdGl2aXR5TG9jYXRpb24+KSA9PiB7XG4gICAgICAgICAgdGhpcy5hY3Rpdml0eUxvY2F0aW9uUmVzcG9uc2VEYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgICB0aGlzLmFjdGl2aXR5TG9jYXRpb25Db2xsZWN0aW9uID0gYWN0aXZpdHlMb2NhdGlvbkNvbGxlY3Rpb247XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgZ2V0Q2x1YkFjdGl2aXR5TG9jYXRpb25zKGNsdWJJZDogc3RyaW5nLCBmb3JjZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgaWYgKHRoaXMuYWN0aXZpdHlMb2NhdGlvblJlc3BvbnNlRGF0ZSAmJiB0aGlzLmFjdGl2aXR5TG9jYXRpb25SZXNwb25zZURhdGUgPiBzdWIobmV3IERhdGUoKSwge2hvdXJzOiAxfSkgJiYgIWZvcmNlKSB7XG4gICAgICByZXR1cm4gb2YodGhpcy5hY3Rpdml0eUxvY2F0aW9uQ29sbGVjdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGFjdGl2aXR5TG9jYXRpb25GYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9BQ1RJVklUWV9MT0NBVElPTlNfUEFUSCxcbiAgICAgICAge2NsdWJJZH0sXG4gICAgICAgIHtwYXJhbXM6IHtsaW1pdDogJ251bGwnfX1cbiAgICAgICkucGlwZShcbiAgICAgICAgdGFwKChhY3Rpdml0eUxvY2F0aW9uQ29sbGVjdGlvbjogQ29sbGVjdGlvbjxBY3Rpdml0eUxvY2F0aW9uPikgPT4ge1xuICAgICAgICAgIHRoaXMuYWN0aXZpdHlMb2NhdGlvblJlc3BvbnNlRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgdGhpcy5hY3Rpdml0eUxvY2F0aW9uQ29sbGVjdGlvbiA9IGFjdGl2aXR5TG9jYXRpb25Db2xsZWN0aW9uO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIGdldFNlY3Rpb25BY3Rpdml0eUxvY2F0aW9ucyhzZWN0aW9uSWQ6IHN0cmluZywgZm9yY2U6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGlmICh0aGlzLmFjdGl2aXR5TG9jYXRpb25SZXNwb25zZURhdGUgJiYgdGhpcy5hY3Rpdml0eUxvY2F0aW9uUmVzcG9uc2VEYXRlID4gc3ViKG5ldyBEYXRlKCksIHtob3VyczogMX0pICYmICFmb3JjZSkge1xuICAgICAgcmV0dXJuIG9mKHRoaXMuYWN0aXZpdHlMb2NhdGlvbkNvbGxlY3Rpb24pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBhY3Rpdml0eUxvY2F0aW9uRmFjdG9yeSxcbiAgICAgICAgUm9sZS5TZWN0aW9uQWRtaW4sXG4gICAgICAgIFNFQ1RJT05fQUNUSVZJVFlfTE9DQVRJT05TX1BBVEgsXG4gICAgICAgIHtzZWN0aW9uSWR9LFxuICAgICAgICB7cGFyYW1zOiB7bGltaXQ6ICdudWxsJ319XG4gICAgICApLnBpcGUoXG4gICAgICAgIHRhcCgoYWN0aXZpdHlMb2NhdGlvbkNvbGxlY3Rpb246IENvbGxlY3Rpb248QWN0aXZpdHlMb2NhdGlvbj4pID0+IHtcbiAgICAgICAgICB0aGlzLmFjdGl2aXR5TG9jYXRpb25SZXNwb25zZURhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgIHRoaXMuYWN0aXZpdHlMb2NhdGlvbkNvbGxlY3Rpb24gPSBhY3Rpdml0eUxvY2F0aW9uQ29sbGVjdGlvbjtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICB1cGRhdGVBY3Rpdml0eUxvY2F0aW9uKHJvbGU6IFJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLCBsb2NhdGlvbjogQWN0aXZpdHlMb2NhdGlvbikge1xuICAgIGlmIChyb2xlID09PSBSb2xlLkNsdWJBZG1pbikge1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlQ2x1YkFjdGl2aXR5TG9jYXRpb24oY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBsb2NhdGlvbik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVwZGF0ZVNlY3Rpb25BY3Rpdml0eUxvY2F0aW9uKGNsdWJPclNlY3Rpb25PclRlYW1JZCwgbG9jYXRpb24pO1xuICB9XG5cbiAgdXBkYXRlQ2x1YkFjdGl2aXR5TG9jYXRpb24oY2x1YklkOiBzdHJpbmcsIGxvY2F0aW9uOiBBY3Rpdml0eUxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eUxvY2F0aW9uRmFjdG9yeSxcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQUNUSVZJVFlfTE9DQVRJT05fUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIGNsdWJJZCxcbiAgICAgICAgICBsb2NhdGlvbklkOiBsb2NhdGlvbi5pZFxuICAgICAgICB9LFxuICAgICAgICBsb2NhdGlvblxuICAgICAgKTtcbiAgfVxuXG4gIHVwZGF0ZVNlY3Rpb25BY3Rpdml0eUxvY2F0aW9uKHNlY3Rpb25JZDogc3RyaW5nLCBsb2NhdGlvbjogQWN0aXZpdHlMb2NhdGlvbikge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC51cGRhdGVSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlMb2NhdGlvbkZhY3RvcnksXG4gICAgICAgIFJvbGUuU2VjdGlvbkFkbWluLFxuICAgICAgICBTRUNUSU9OX0FDVElWSVRZX0xPQ0FUSU9OX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBzZWN0aW9uSWQsXG4gICAgICAgICAgbG9jYXRpb25JZDogbG9jYXRpb24uaWRcbiAgICAgICAgfSxcbiAgICAgICAgbG9jYXRpb25cbiAgICAgICk7XG4gIH1cblxuICBnZXRBY3Rpdml0eUxvY2F0aW9uR3JvdXBzKHJvbGU6IFJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nKSB7XG4gICAgaWYgKHJvbGUgPT0gUm9sZS5DbHViQWRtaW4pIHtcbiAgICAgIHJldHVybiB0aGlzLmdldENsdWJBY3Rpdml0eUxvY2F0aW9uR3JvdXBzKGNsdWJPclNlY3Rpb25PclRlYW1JZCk7XG4gICAgfSBlbHNlIGlmIChyb2xlID09IFJvbGUuU2VjdGlvbkFkbWluKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRTZWN0aW9uQWN0aXZpdHlMb2NhdGlvbkdyb3VwcyhjbHViT3JTZWN0aW9uT3JUZWFtSWQpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRUZWFtQWN0aXZpdHlMb2NhdGlvbkdyb3VwcyhjbHViT3JTZWN0aW9uT3JUZWFtSWQpO1xuICB9XG5cbiAgZ2V0Q2x1YkFjdGl2aXR5TG9jYXRpb25Hcm91cHMoY2x1YklkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYWN0aXZpdHlMb2NhdGlvbkdyb3VwRmFjdG9yeSxcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQUNUSVZJVFlfTE9DQVRJT05fR1JPVVBTX1BBVEgsXG4gICAgICAgIHtjbHViSWR9LFxuICAgICAgICB7cGFyYW1zOiB7bGltaXQ6ICdudWxsJ319XG4gICAgICApO1xuICB9XG5cbiAgZ2V0U2VjdGlvbkFjdGl2aXR5TG9jYXRpb25Hcm91cHMoc2VjdGlvbklkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYWN0aXZpdHlMb2NhdGlvbkdyb3VwRmFjdG9yeSxcbiAgICAgICAgUm9sZS5TZWN0aW9uQWRtaW4sXG4gICAgICAgIFNFQ1RJT05fQUNUSVZJVFlfTE9DQVRJT05fR1JPVVBTX1BBVEgsXG4gICAgICAgIHtzZWN0aW9uSWR9LFxuICAgICAgICB7cGFyYW1zOiB7bGltaXQ6ICdudWxsJ319XG4gICAgICApO1xuICB9XG5cbiAgZ2V0VGVhbUFjdGl2aXR5TG9jYXRpb25Hcm91cHModGVhbUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYWN0aXZpdHlMb2NhdGlvbkdyb3VwRmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQUNUSVZJVFlfTE9DQVRJT05fR1JPVVBTX1BBVEgsXG4gICAgICAgIHt0ZWFtSWR9LFxuICAgICAgICB7cGFyYW1zOiB7bGltaXQ6ICdudWxsJ319XG4gICAgICApO1xuICB9XG5cbiAgdXBkYXRlQWN0aXZpdHlMb2NhdGlvbkdyb3VwKHJvbGU6IFJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLCBsb2NhdGlvbkdyb3VwOiBBY3Rpdml0eUxvY2F0aW9uR3JvdXApIHtcbiAgICBpZiAocm9sZSA9PT0gUm9sZS5DbHViQWRtaW4pIHtcbiAgICAgIHJldHVybiB0aGlzLnVwZGF0ZUNsdWJBY3Rpdml0eUxvY2F0aW9uR3JvdXAoY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBsb2NhdGlvbkdyb3VwKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlU2VjdGlvbkFjdGl2aXR5TG9jYXRpb25Hcm91cChjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGxvY2F0aW9uR3JvdXApO1xuICB9XG5cbiAgdXBkYXRlQ2x1YkFjdGl2aXR5TG9jYXRpb25Hcm91cChjbHViSWQ6IHN0cmluZywgbG9jYXRpb25Hcm91cDogQWN0aXZpdHlMb2NhdGlvbkdyb3VwKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eUxvY2F0aW9uR3JvdXBGYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9BQ1RJVklUWV9MT0NBVElPTl9HUk9VUF9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgY2x1YklkLFxuICAgICAgICAgIGdyb3VwSWQ6IGxvY2F0aW9uR3JvdXAuaWRcbiAgICAgICAgfSxcbiAgICAgICAgbG9jYXRpb25Hcm91cCxcbiAgICAgICk7XG4gIH1cblxuICB1cGRhdGVTZWN0aW9uQWN0aXZpdHlMb2NhdGlvbkdyb3VwKHNlY3Rpb25JZDogc3RyaW5nLCBsb2NhdGlvbkdyb3VwOiBBY3Rpdml0eUxvY2F0aW9uR3JvdXApIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAudXBkYXRlUmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5TG9jYXRpb25Hcm91cEZhY3RvcnksXG4gICAgICAgIFJvbGUuU2VjdGlvbkFkbWluLFxuICAgICAgICBTRUNUSU9OX0FDVElWSVRZX0xPQ0FUSU9OX0dST1VQX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBzZWN0aW9uSWQsXG4gICAgICAgICAgZ3JvdXBJZDogbG9jYXRpb25Hcm91cC5pZFxuICAgICAgICB9LFxuICAgICAgICBsb2NhdGlvbkdyb3VwXG4gICAgICApO1xuICB9XG5cbiAgY3JlYXRlQWN0aXZpdHlMb2NhdGlvbkdyb3VwKHJvbGU6IFJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLCBsb2NhdGlvbkdyb3VwOiBQYXJ0aWFsPEFjdGl2aXR5TG9jYXRpb25Hcm91cD4pIHtcbiAgICBpZiAocm9sZSA9PT0gUm9sZS5DbHViQWRtaW4pIHtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUNsdWJBY3Rpdml0eUxvY2F0aW9uR3JvdXAoY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBsb2NhdGlvbkdyb3VwKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlU2VjdGlvbkFjdGl2aXR5TG9jYXRpb25Hcm91cChjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGxvY2F0aW9uR3JvdXApO1xuICB9XG5cbiAgY3JlYXRlQ2x1YkFjdGl2aXR5TG9jYXRpb25Hcm91cChjbHViSWQ6IHN0cmluZywgbG9jYXRpb25Hcm91cDogUGFydGlhbDxBY3Rpdml0eUxvY2F0aW9uR3JvdXA+KSB7XG4gICAgZGVsZXRlIGxvY2F0aW9uR3JvdXAuaWQ7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnBvc3RSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlMb2NhdGlvbkdyb3VwRmFjdG9yeSxcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQUNUSVZJVFlfTE9DQVRJT05fR1JPVVBTX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBjbHViSWQsXG4gICAgICAgIH0sXG4gICAgICAgIGxvY2F0aW9uR3JvdXAsXG4gICAgICApO1xuICB9XG5cbiAgY3JlYXRlU2VjdGlvbkFjdGl2aXR5TG9jYXRpb25Hcm91cChzZWN0aW9uSWQ6IHN0cmluZywgbG9jYXRpb25Hcm91cDogUGFydGlhbDxBY3Rpdml0eUxvY2F0aW9uR3JvdXA+KSB7XG4gICAgZGVsZXRlIGxvY2F0aW9uR3JvdXAuaWQ7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnBvc3RSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlMb2NhdGlvbkdyb3VwRmFjdG9yeSxcbiAgICAgICAgUm9sZS5TZWN0aW9uQWRtaW4sXG4gICAgICAgIFNFQ1RJT05fQUNUSVZJVFlfTE9DQVRJT05fR1JPVVBTX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBzZWN0aW9uSWQsXG4gICAgICAgIH0sXG4gICAgICAgIGxvY2F0aW9uR3JvdXBcbiAgICAgICk7XG4gIH1cblxuICBnZXRBY3Rpdml0eUxvY2F0aW9uVGFncyhyb2xlOiBSb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZykge1xuICAgIGlmIChyb2xlID09IFJvbGUuQ2x1YkFkbWluKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDbHViQWN0aXZpdHlMb2NhdGlvblRhZ3MoY2x1Yk9yU2VjdGlvbk9yVGVhbUlkKTtcbiAgICB9IGVsc2UgaWYgKHJvbGUgPT0gUm9sZS5TZWN0aW9uQWRtaW4pIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFNlY3Rpb25BY3Rpdml0eUxvY2F0aW9uVGFncyhjbHViT3JTZWN0aW9uT3JUZWFtSWQpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRUZWFtQWN0aXZpdHlMb2NhdGlvblRhZ3MoY2x1Yk9yU2VjdGlvbk9yVGVhbUlkKTtcbiAgfVxuXG4gIGdldENsdWJBY3Rpdml0eUxvY2F0aW9uVGFncyhjbHViSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBhY3Rpdml0eUxvY2F0aW9uVGFnRmFjdG9yeSxcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQUNUSVZJVFlfTE9DQVRJT05fVEFHU19QQVRILFxuICAgICAgICB7Y2x1YklkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKTtcbiAgfVxuXG4gIGdldFNlY3Rpb25BY3Rpdml0eUxvY2F0aW9uVGFncyhzZWN0aW9uSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBhY3Rpdml0eUxvY2F0aW9uVGFnRmFjdG9yeSxcbiAgICAgICAgUm9sZS5TZWN0aW9uQWRtaW4sXG4gICAgICAgIFNFQ1RJT05fQUNUSVZJVFlfTE9DQVRJT05fVEFHU19QQVRILFxuICAgICAgICB7c2VjdGlvbklkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKTtcbiAgfVxuXG4gIGdldFRlYW1BY3Rpdml0eUxvY2F0aW9uVGFncyh0ZWFtSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBhY3Rpdml0eUxvY2F0aW9uVGFnRmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQUNUSVZJVFlfTE9DQVRJT05fVEFHU19QQVRILFxuICAgICAgICB7dGVhbUlkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKTtcbiAgfVxuXG4gIGNyZWF0ZUFjdGl2aXR5TG9jYXRpb25UYWcocm9sZTogUm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsIHRhZzogUGFydGlhbDxBY3Rpdml0eUxvY2F0aW9uVGFnPikge1xuICAgIGlmIChyb2xlID09IFJvbGUuQ2x1YkFkbWluKSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVDbHViQWN0aXZpdHlMb2NhdGlvblRhZyhjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHRhZyk7XG4gICAgfSBlbHNlIGlmIChyb2xlID09IFJvbGUuU2VjdGlvbkFkbWluKSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVTZWN0aW9uQWN0aXZpdHlMb2NhdGlvblRhZyhjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHRhZyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNyZWF0ZVRlYW1BY3Rpdml0eUxvY2F0aW9uVGFnKGNsdWJPclNlY3Rpb25PclRlYW1JZCwgdGFnKTtcbiAgfVxuXG4gIGNyZWF0ZUNsdWJBY3Rpdml0eUxvY2F0aW9uVGFnKGNsdWJJZDogc3RyaW5nLCB0YWc6IFBhcnRpYWw8QWN0aXZpdHlMb2NhdGlvblRhZz4pIHtcbiAgICBkZWxldGUgdGFnLmlkO1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5wb3N0UmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5TG9jYXRpb25UYWdGYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9BQ1RJVklUWV9MT0NBVElPTl9UQUdTX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBjbHViSWQsXG4gICAgICAgIH0sXG4gICAgICAgIHRhZyxcbiAgICAgIClcbiAgfVxuXG4gIGNyZWF0ZVNlY3Rpb25BY3Rpdml0eUxvY2F0aW9uVGFnKHNlY3Rpb25JZDogc3RyaW5nLCB0YWc6IFBhcnRpYWw8QWN0aXZpdHlMb2NhdGlvblRhZz4pIHtcbiAgICBkZWxldGUgdGFnLmlkO1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5wb3N0UmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5TG9jYXRpb25UYWdGYWN0b3J5LFxuICAgICAgICBSb2xlLlNlY3Rpb25BZG1pbixcbiAgICAgICAgU0VDVElPTl9BQ1RJVklUWV9MT0NBVElPTl9UQUdTX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBzZWN0aW9uSWQsXG4gICAgICAgIH0sXG4gICAgICAgIHRhZyxcbiAgICAgIClcbiAgfVxuXG4gIGNyZWF0ZVRlYW1BY3Rpdml0eUxvY2F0aW9uVGFnKHRlYW1JZDogc3RyaW5nLCB0YWc6IFBhcnRpYWw8QWN0aXZpdHlMb2NhdGlvblRhZz4pIHtcbiAgICBkZWxldGUgdGFnLmlkO1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5wb3N0UmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5TG9jYXRpb25UYWdGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9MT0NBVElPTl9UQUdTX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICB0ZWFtSWQsXG4gICAgICAgIH0sXG4gICAgICAgIHRhZyxcbiAgICAgIClcbiAgfVxuXG4gIHVwZGF0ZUFjdGl2aXR5TG9jYXRpb25UYWcocm9sZTogUm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsIHRhZzogQWN0aXZpdHlMb2NhdGlvblRhZykge1xuICAgIGlmIChyb2xlID09IFJvbGUuQ2x1YkFkbWluKSB7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVDbHViQWN0aXZpdHlMb2NhdGlvblRhZyhjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHRhZyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVwZGF0ZVNlY3Rpb25BY3Rpdml0eUxvY2F0aW9uVGFnKGNsdWJPclNlY3Rpb25PclRlYW1JZCwgdGFnKTtcbiAgfVxuXG4gIHVwZGF0ZUNsdWJBY3Rpdml0eUxvY2F0aW9uVGFnKGNsdWJJZDogc3RyaW5nLCB0YWc6IEFjdGl2aXR5TG9jYXRpb25UYWcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAudXBkYXRlUmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5TG9jYXRpb25UYWdGYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9BQ1RJVklUWV9MT0NBVElPTl9UQUdfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIGNsdWJJZCxcbiAgICAgICAgICB0YWdJZDogdGFnLmlkLFxuICAgICAgICB9LFxuICAgICAgICB0YWcsXG4gICAgICApXG4gIH1cblxuICB1cGRhdGVTZWN0aW9uQWN0aXZpdHlMb2NhdGlvblRhZyhzZWN0aW9uSWQ6IHN0cmluZywgdGFnOiBBY3Rpdml0eUxvY2F0aW9uVGFnKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eUxvY2F0aW9uVGFnRmFjdG9yeSxcbiAgICAgICAgUm9sZS5TZWN0aW9uQWRtaW4sXG4gICAgICAgIFNFQ1RJT05fQUNUSVZJVFlfTE9DQVRJT05fVEFHX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBzZWN0aW9uSWQsXG4gICAgICAgICAgdGFnSWQ6IHRhZy5pZCxcbiAgICAgICAgfSxcbiAgICAgICAgdGFnLFxuICAgICAgKVxuICB9XG5cbiAgZGVsZXRlQWN0aXZpdHlMb2NhdGlvblRhZyhyb2xlOiBSb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZywgdGFnOiBBY3Rpdml0eUxvY2F0aW9uVGFnKSB7XG4gICAgaWYgKHJvbGUgPT0gUm9sZS5DbHViQWRtaW4pIHtcbiAgICAgIHJldHVybiB0aGlzLmRlbGV0ZUNsdWJBY3Rpdml0eUxvY2F0aW9uVGFnKGNsdWJPclNlY3Rpb25PclRlYW1JZCwgdGFnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZGVsZXRlU2VjdGlvbkFjdGl2aXR5TG9jYXRpb25UYWcoY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCB0YWcpO1xuICB9XG5cbiAgZGVsZXRlQ2x1YkFjdGl2aXR5TG9jYXRpb25UYWcoY2x1YklkOiBzdHJpbmcsIHRhZzogQWN0aXZpdHlMb2NhdGlvblRhZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5kZWxldGVSZXNvdXJjZShcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQUNUSVZJVFlfTE9DQVRJT05fVEFHX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBjbHViSWQsXG4gICAgICAgICAgdGFnSWQ6IHRhZy5pZCxcbiAgICAgICAgfSxcbiAgICAgIClcbiAgfVxuXG4gIGRlbGV0ZVNlY3Rpb25BY3Rpdml0eUxvY2F0aW9uVGFnKHNlY3Rpb25JZDogc3RyaW5nLCB0YWc6IEFjdGl2aXR5TG9jYXRpb25UYWcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZGVsZXRlUmVzb3VyY2UoXG4gICAgICAgIFJvbGUuU2VjdGlvbkFkbWluLFxuICAgICAgICBTRUNUSU9OX0FDVElWSVRZX0xPQ0FUSU9OX1RBR19QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgc2VjdGlvbklkLFxuICAgICAgICAgIHRhZ0lkOiB0YWcuaWQsXG4gICAgICAgIH0sXG4gICAgICApXG4gIH1cblxuICBnZXRBY3Rpdml0eUxvY2F0aW9uUGFydHMocm9sZTogUm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsIGxvY2F0aW9uSWQ6IHN0cmluZykge1xuICAgIGlmIChyb2xlID09IFJvbGUuQ2x1YkFkbWluKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDbHViQWN0aXZpdHlMb2NhdGlvblBhcnRzKGNsdWJPclNlY3Rpb25PclRlYW1JZCwgbG9jYXRpb25JZCk7XG4gICAgfSBlbHNlIGlmIChyb2xlID09IFJvbGUuU2VjdGlvbkFkbWluKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRTZWN0aW9uQWN0aXZpdHlMb2NhdGlvblBhcnRzKGNsdWJPclNlY3Rpb25PclRlYW1JZCwgbG9jYXRpb25JZCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldFRlYW1BY3Rpdml0eUxvY2F0aW9uUGFydHMoY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBsb2NhdGlvbklkKTtcbiAgfVxuXG4gIGdldENsdWJBY3Rpdml0eUxvY2F0aW9uUGFydHMoY2x1YklkOiBzdHJpbmcsIGxvY2F0aW9uSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBhY3Rpdml0eUxvY2F0aW9uUGFydEZhY3RvcnksXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0FDVElWSVRZX0xPQ0FUSU9OX1BBUlRTX1BBVEgsXG4gICAgICAgIHtjbHViSWQsIGxvY2F0aW9uSWR9LFxuICAgICAgICB7cGFyYW1zOiB7bGltaXQ6ICdudWxsJ319XG4gICAgICApO1xuICB9XG5cbiAgZ2V0U2VjdGlvbkFjdGl2aXR5TG9jYXRpb25QYXJ0cyhzZWN0aW9uSWQ6IHN0cmluZywgbG9jYXRpb25JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGFjdGl2aXR5TG9jYXRpb25QYXJ0RmFjdG9yeSxcbiAgICAgICAgUm9sZS5TZWN0aW9uQWRtaW4sXG4gICAgICAgIFNFQ1RJT05fQUNUSVZJVFlfTE9DQVRJT05fUEFSVFNfUEFUSCxcbiAgICAgICAge3NlY3Rpb25JZCwgbG9jYXRpb25JZH0sXG4gICAgICAgIHtwYXJhbXM6IHtsaW1pdDogJ251bGwnfX1cbiAgICAgICk7XG4gIH1cblxuICBnZXRUZWFtQWN0aXZpdHlMb2NhdGlvblBhcnRzKHRlYW1JZDogc3RyaW5nLCBsb2NhdGlvbklkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYWN0aXZpdHlMb2NhdGlvblBhcnRGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9MT0NBVElPTl9QQVJUU19QQVRILFxuICAgICAgICB7dGVhbUlkLCBsb2NhdGlvbklkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKTtcbiAgfVxuXG4gIGdldFRlYW1BY3Rpdml0eU5ldyh0ZWFtSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9ORVdfUEFUSCxcbiAgICAgICAge3RlYW1JZH1cbiAgICAgICk7XG4gIH1cblxuICBnZXRUZWFtQWN0aXZpdHlQYXJ0aWNpcGFudHModGVhbUlkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBzZWFyY2hNZW1iZXJGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9QQVJUSUNJUEFOVFNfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIHRlYW1JZCxcbiAgICAgICAgICBhY3Rpdml0eUlkXG4gICAgICAgIH0sXG4gICAgICAgIHtwYXJhbXM6IHtsaW1pdDogJ251bGwnfX1cbiAgICAgICk7XG4gIH1cblxuICBnZXRBY3Rpdml0eVNldHRpbmdzKHJvbGU6IFJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nKSB7XG4gICAgaWYgKHJvbGUgPT09IFJvbGUuQ2x1YkFkbWluKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDbHViQWN0aXZpdHlTZXR0aW5ncyhjbHViT3JTZWN0aW9uT3JUZWFtSWQpO1xuICAgIH0gZWxzZSBpZiAocm9sZSA9PSBSb2xlLlNlY3Rpb25BZG1pbikge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0U2VjdGlvbkFjdGl2aXR5U2V0dGluZ3MoY2x1Yk9yU2VjdGlvbk9yVGVhbUlkKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ2V0VGVhbUFjdGl2aXR5U2V0dGluZ3MoY2x1Yk9yU2VjdGlvbk9yVGVhbUlkKTtcbiAgfVxuXG4gIGdldFRlYW1BY3Rpdml0eVNldHRpbmdzKHRlYW1JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldFJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eVNldHRpbmdzRmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQUNUSVZJVFlfU0VUVElOR1NfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIHRlYW1JZFxuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgZ2V0U2VjdGlvbkFjdGl2aXR5U2V0dGluZ3Moc2VjdGlvbklkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0UmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5U2V0dGluZ3NGYWN0b3J5LFxuICAgICAgICBSb2xlLlNlY3Rpb25BZG1pbixcbiAgICAgICAgU0VDVElPTl9BQ1RJVklUWV9TRVRUSU5HU19QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgc2VjdGlvbklkXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBnZXRDbHViQWN0aXZpdHlTZXR0aW5ncyhjbHViSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlTZXR0aW5nc0ZhY3RvcnksXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0FDVElWSVRZX1NFVFRJTkdTX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBjbHViSWQsXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBnZXRBY3Rpdml0eVR5cGVzKHJvbGU6IFJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nKSB7XG4gICAgaWYgKHJvbGUgPT09IFJvbGUuQ2x1YkFkbWluKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDbHViQWN0aXZpdHlUeXBlcyhjbHViT3JTZWN0aW9uT3JUZWFtSWQpO1xuICAgIH0gZWxzZSBpZiAocm9sZSA9PT0gUm9sZS5TZWN0aW9uQWRtaW4pIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFNlY3Rpb25BY3Rpdml0eVR5cGVzKGNsdWJPclNlY3Rpb25PclRlYW1JZCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldFRlYW1BY3Rpdml0eVR5cGVzKGNsdWJPclNlY3Rpb25PclRlYW1JZCk7XG4gIH1cblxuICBnZXRUZWFtQWN0aXZpdHlUeXBlcyh0ZWFtSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBhY3Rpdml0eVR5cGVGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9UWVBFU19QQVRILFxuICAgICAgICB7dGVhbUlkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKVxuICB9XG5cbiAgZ2V0Q2x1YkFjdGl2aXR5VHlwZXMoY2x1YklkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYWN0aXZpdHlUeXBlRmFjdG9yeSxcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQUNUSVZJVFlfVFlQRVNfUEFUSCxcbiAgICAgICAge2NsdWJJZH0sXG4gICAgICAgIHtwYXJhbXM6IHtsaW1pdDogJ251bGwnfX1cbiAgICAgICk7XG4gIH1cblxuICBnZXRTZWN0aW9uQWN0aXZpdHlUeXBlcyhzZWN0aW9uSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBhY3Rpdml0eVR5cGVGYWN0b3J5LFxuICAgICAgICBSb2xlLlNlY3Rpb25BZG1pbixcbiAgICAgICAgU0VDVElPTl9BQ1RJVklUWV9UWVBFU19QQVRILFxuICAgICAgICB7c2VjdGlvbklkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKTtcbiAgfVxuXG4gIHVwZGF0ZUFjdGl2aXR5VHlwZShyb2xlOiBSb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZywgYWN0aXZpdHlUeXBlOiBBY3Rpdml0eVR5cGUpIHtcbiAgICBpZiAocm9sZSA9PT0gUm9sZS5DbHViQWRtaW4pIHtcbiAgICAgIHJldHVybiB0aGlzLnVwZGF0ZUNsdWJBY3Rpdml0eVR5cGUoY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBhY3Rpdml0eVR5cGUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy51cGRhdGVTZWN0aW9uQWN0aXZpdHlUeXBlKGNsdWJPclNlY3Rpb25PclRlYW1JZCwgYWN0aXZpdHlUeXBlKTtcbiAgfVxuXG4gIHVwZGF0ZUNsdWJBY3Rpdml0eVR5cGUoY2x1YklkOiBzdHJpbmcsIGFjdGl2aXR5VHlwZTogQWN0aXZpdHlUeXBlKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eVR5cGVGYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9BQ1RJVklUWV9UWVBFX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBjbHViSWQsXG4gICAgICAgICAgdHlwZUlkOiBhY3Rpdml0eVR5cGUuaWQsXG4gICAgICAgIH0sXG4gICAgICAgIGFjdGl2aXR5VHlwZSxcbiAgICAgICk7XG4gIH1cblxuICB1cGRhdGVTZWN0aW9uQWN0aXZpdHlUeXBlKHNlY3Rpb25JZDogc3RyaW5nLCBhY3Rpdml0eVR5cGU6IEFjdGl2aXR5VHlwZSkge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC51cGRhdGVSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlUeXBlRmFjdG9yeSxcbiAgICAgICAgUm9sZS5TZWN0aW9uQWRtaW4sXG4gICAgICAgIFNFQ1RJT05fQUNUSVZJVFlfVFlQRV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgc2VjdGlvbklkLFxuICAgICAgICAgIHR5cGVJZDogYWN0aXZpdHlUeXBlLmlkLFxuICAgICAgICB9LFxuICAgICAgICBhY3Rpdml0eVR5cGUsXG4gICAgICApO1xuICB9XG5cbiAgZ2V0VGVhbUNhbGVuZGFyRXZlbnRzKHRlYW1JZDogc3RyaW5nLCBzdGFydERhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsLCBlbmREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgIGNvbnN0IHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtsaW1pdDogJ251bGwnfTtcblxuICAgIGlmIChzdGFydERhdGUpIHtcbiAgICAgIHBhcmFtc1snc2VhcmNoX3N0YXJ0X2RheSddID0gc3RhcnREYXRlO1xuICAgIH1cblxuICAgIGlmIChlbmREYXRlKSB7XG4gICAgICBwYXJhbXNbJ3NlYXJjaF9lbmRfZGF5J10gPSBlbmREYXRlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBldmVudEZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0NBTEVOREFSX1BBVEgsXG4gICAgICAgIHt0ZWFtSWR9LFxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1zXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICByZXNlbmRJbnZpdGUodGVhbUlkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZywgYWN0aXZpdHlJbnZpdGVJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnBvc3RSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlJbnZpdGVGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9JTlZJVEVfUkVTRU5EX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICB0ZWFtSWQsXG4gICAgICAgICAgYWN0aXZpdHlJZCxcbiAgICAgICAgICBhY3Rpdml0eUludml0ZUlkXG4gICAgICAgIH0sXG4gICAgICAgIHt9XG4gICAgICApO1xuICB9XG5cbiAgcmVtb3ZlTWVtYmVyT3BlbkFjdGl2aXR5KG1lbWJlcklkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5kZWxldGVSZXNvdXJjZShcbiAgICAgICAgUm9sZS5NZW1iZXJBZG1pbixcbiAgICAgICAgTUVNQkVSX09QRU5fQUNUSVZJVFlfUkVTUE9ORF9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgbWVtYmVySWQsXG4gICAgICAgICAgYWN0aXZpdHlJZFxuICAgICAgICB9XG4gICAgICApXG4gIH1cblxuICBzaWduVXBNZW1iZXJPcGVuQWN0aXZpdHkobWVtYmVySWQ6IHN0cmluZywgYWN0aXZpdHlJZDogc3RyaW5nLCBjb21tZW50OiBzdHJpbmcsIG9wdGlvbmFsRmVlczogQXJyYXk8c3RyaW5nPikge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC51cGRhdGVSZXNvdXJjZU5vUmVzcG9uc2UoXG4gICAgICAgIFJvbGUuTWVtYmVyQWRtaW4sXG4gICAgICAgIE1FTUJFUl9PUEVOX0FDVElWSVRZX1JFU1BPTkRfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIG1lbWJlcklkLFxuICAgICAgICAgIGFjdGl2aXR5SWRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNvbW1lbnQsXG4gICAgICAgICAgb3B0aW9uYWxfZmVlczogb3B0aW9uYWxGZWVzXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICB1cGRhdGVNZW1iZXJBY3Rpdml0eShtZW1iZXJJZDogc3RyaW5nLCBhY3Rpdml0eUludml0ZUlkOiBzdHJpbmcsIGFjdGl2aXR5SW52aXRlOiB1bmtub3duKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eUludml0ZUZhY3RvcnksXG4gICAgICAgIFJvbGUuTWVtYmVyQWRtaW4sXG4gICAgICAgIE1FTUJFUl9BQ1RJVklUWV9JTlZJVEVfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIG1lbWJlcklkLFxuICAgICAgICAgIGFjdGl2aXR5SW52aXRlSWRcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZpdHlJbnZpdGVcbiAgICAgICk7XG4gIH1cblxuICB1cGRhdGVQdWJsaWNBY3Rpdml0eUludml0ZShpZDogc3RyaW5nLCB0b2tlbjogc3RyaW5nLCBhY3Rpdml0eUludml0ZTogdW5rbm93bikge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC51cGRhdGVSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlJbnZpdGVGYWN0b3J5LFxuICAgICAgICBSb2xlLlB1YmxpYyxcbiAgICAgICAgUFVCTElDX0FDVElWSVRZX0lOVklURV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgaWQsXG4gICAgICAgICAgdG9rZW5cbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZpdHlJbnZpdGVcbiAgICAgIClcbiAgfVxuXG4gIHVwZGF0ZVRlYW1BY3Rpdml0eSh0ZWFtSWQ6IHN0cmluZywgYWN0aXZpdHk6IEFjdGl2aXR5KSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eUZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRZX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICB0ZWFtSWQsXG4gICAgICAgICAgaWQ6IGFjdGl2aXR5LmlkXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMucmVtb3ZlVW51c2VkQWN0aXZpdHlGaWVsZHMoYWN0aXZpdHkpXG4gICAgICApO1xuICB9XG5cbiAgdXBkYXRlVGVhbUFjdGl2aXR5SW52aXRlKHRlYW1JZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcsIGFjdGl2aXR5SW52aXRlSWQ6IHN0cmluZywgYWN0aXZpdHlJbnZpdGU6IE1lbWJlckFjdGl2aXR5SW52aXRlKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBtZW1iZXJBY3Rpdml0eUludml0ZUZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRZX0lOVklURV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgdGVhbUlkLFxuICAgICAgICAgIGFjdGl2aXR5SWQsXG4gICAgICAgICAgYWN0aXZpdHlJbnZpdGVJZFxuICAgICAgICB9LFxuICAgICAgICBhY3Rpdml0eUludml0ZVxuICAgICAgKVxuICB9XG5cbiAgdXBkYXRlVGVhbUFjdGl2aXR5UGFydGljaXBhbnRzKHRlYW1JZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcsIG1lbWJlcnM6IEFycmF5PHN0cmluZz4pIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAucG9zdFJlc291cmNlKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgIH0sXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRZX1BBUlRJQ0lQQU5UU19QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgdGVhbUlkLFxuICAgICAgICAgIGFjdGl2aXR5SWRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG1lbWJlcnNcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlVW51c2VkQWN0aXZpdHlGaWVsZHMoYWN0aXZpdHk6IFBhcnRpYWw8QWN0aXZpdHk+KTogUGFydGlhbDxBY3Rpdml0eT4ge1xuICAgIGlmICh0eXBlb2YgYWN0aXZpdHkuaWQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBkZWxldGUgYWN0aXZpdHkuaWQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBhY3Rpdml0eS5maWxlICE9PSAndW5kZWZpbmVkJyAmJiAhYWN0aXZpdHkuZmlsZSkge1xuICAgICAgZGVsZXRlIGFjdGl2aXR5LmZpbGU7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBhY3Rpdml0eS5pbnZpdGVfbGFzdF9yZXNwb25zZV9kYXRlICE9PSAndW5kZWZpbmVkJyAmJiAhYWN0aXZpdHkuaW52aXRlX2xhc3RfcmVzcG9uc2VfZGF0ZSkge1xuICAgICAgZGVsZXRlIGFjdGl2aXR5Lmludml0ZV9sYXN0X3Jlc3BvbnNlX2RhdGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjdGl2aXR5O1xuICB9XG59XG4iXX0=
|
|
588
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvc2VydmljZXMvYWN0aXZpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFPTCxJQUFJLEdBQ0wsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25DLE9BQU8sRUFBQyxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUNMLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsdUJBQXVCLEVBQ3ZCLDRCQUE0QixFQUM1QiwwQkFBMEIsRUFDMUIsdUJBQXVCLEVBQ3ZCLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osMkJBQTJCLEVBQUUsbUJBQW1CLEVBQ2hELG1CQUFtQixHQUNwQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQzdCLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDOzs7QUFFdkYsTUFBTSwyQkFBMkIsR0FBRyx5Q0FBeUMsQ0FBQztBQUM5RSxNQUFNLDRCQUE0QixHQUFHLHVCQUF1QixDQUFDO0FBQzdELE1BQU0sb0JBQW9CLEdBQUcsZ0NBQWdDLENBQUM7QUFDOUQsTUFBTSwyQkFBMkIsR0FBRyw0QkFBNEIsQ0FBQztBQUNqRSxNQUFNLHlCQUF5QixHQUFHLHdDQUF3QyxDQUFDO0FBQzNFLE1BQU0saUNBQWlDLEdBQUcsZ0RBQWdELENBQUM7QUFDM0YsTUFBTSwyQkFBMkIsR0FBRyx3QkFBd0IsQ0FBQztBQUM3RCxNQUFNLDJCQUEyQixHQUFHLGtCQUFrQixDQUFDO0FBQ3ZELE1BQU0seUJBQXlCLEdBQUcsOEJBQThCLENBQUM7QUFDakUsTUFBTSxpQ0FBaUMsR0FBRyxzQ0FBc0MsQ0FBQztBQUNqRixNQUFNLGdDQUFnQyxHQUFHLHNDQUFzQyxDQUFDO0FBQ2hGLE1BQU0sb0JBQW9CLEdBQUcscUJBQXFCLENBQUM7QUFDbkQsTUFBTSwwQkFBMEIsR0FBRyx5Q0FBeUMsQ0FBQztBQUM3RSxNQUFNLHlCQUF5QixHQUFHLDJEQUEyRCxDQUFDO0FBQzlGLE1BQU0sZ0NBQWdDLEdBQUcseUVBQXlFLENBQUM7QUFDbkgsTUFBTSxzQkFBc0IsR0FBRyx5QkFBeUIsQ0FBQztBQUN6RCxNQUFNLCtCQUErQixHQUFHLDhDQUE4QyxDQUFDO0FBQ3ZGLE1BQU0sa0JBQWtCLEdBQUcseUJBQXlCLENBQUM7QUFDckQsTUFBTSwyQkFBMkIsR0FBRyw4QkFBOEIsQ0FBQztBQUNuRSxNQUFNLDhCQUE4QixHQUFHLGlDQUFpQyxDQUFDO0FBQ3pFLE1BQU0sMkJBQTJCLEdBQUcsOEJBQThCLENBQUM7QUFDbkUsTUFBTSx3QkFBd0IsR0FBRywyQkFBMkIsQ0FBQztBQUM3RCxNQUFNLGtCQUFrQixHQUFHLDhCQUE4QixDQUFDO0FBRTFELE1BQU0sNEJBQTRCLEdBQUcsK0JBQStCLENBQUM7QUFDckUsTUFBTSwyQkFBMkIsR0FBRywyQ0FBMkMsQ0FBQztBQUNoRixNQUFNLGtDQUFrQyxHQUFHLHNDQUFzQyxDQUFDO0FBQ2xGLE1BQU0saUNBQWlDLEdBQUcsK0NBQStDLENBQUM7QUFDMUYsTUFBTSxnQ0FBZ0MsR0FBRyxvQ0FBb0MsQ0FBQztBQUM5RSxNQUFNLCtCQUErQixHQUFHLDJDQUEyQyxDQUFDO0FBQ3BGLE1BQU0saUNBQWlDLEdBQUcsaURBQWlELENBQUM7QUFDNUYsTUFBTSx3QkFBd0IsR0FBRywyQkFBMkIsQ0FBQztBQUM3RCxNQUFNLHVCQUF1QixHQUFHLG1DQUFtQyxDQUFDO0FBRXBFLE1BQU0sNEJBQTRCLEdBQUcsK0JBQStCLENBQUM7QUFDckUsTUFBTSxrQ0FBa0MsR0FBRyxzQ0FBc0MsQ0FBQztBQUNsRixNQUFNLGdDQUFnQyxHQUFHLG9DQUFvQyxDQUFDO0FBQzlFLE1BQU0saUNBQWlDLEdBQUcsaURBQWlELENBQUM7QUFFNUYsTUFBTSwrQkFBK0IsR0FBRyxrQ0FBa0MsQ0FBQztBQUMzRSxNQUFNLDhCQUE4QixHQUFHLDhDQUE4QyxDQUFDO0FBQ3RGLE1BQU0scUNBQXFDLEdBQUcseUNBQXlDLENBQUM7QUFDeEYsTUFBTSxvQ0FBb0MsR0FBRyxrREFBa0QsQ0FBQztBQUNoRyxNQUFNLG1DQUFtQyxHQUFHLHVDQUF1QyxDQUFDO0FBQ3BGLE1BQU0sa0NBQWtDLEdBQUcsOENBQThDLENBQUM7QUFDMUYsTUFBTSxvQ0FBb0MsR0FBRyxvREFBb0QsQ0FBQztBQUNsRyxNQUFNLDJCQUEyQixHQUFHLDhCQUE4QixDQUFDO0FBQ25FLE1BQU0sMEJBQTBCLEdBQUcsc0NBQXNDLENBQUM7QUFNMUUsTUFBTSxPQUFPLGVBQWU7SUFPMUIsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUMxQyxDQUFDO0lBRUQsc0JBQXNCLENBQUMsTUFBYyxFQUFFLFVBQWtCLEVBQUUsU0FBd0I7UUFDakYsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixZQUFZLENBQ1gsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUNWLElBQUksQ0FBQyxTQUFTLEVBQ2QsMEJBQTBCLEVBQzFCO1lBQ0UsTUFBTTtZQUNOLFVBQVU7U0FDWCxFQUNEO1lBQ0UsT0FBTyxFQUFFLFNBQVM7U0FDbkIsQ0FDRixDQUFBO0lBQ0wsQ0FBQztJQUVELGtCQUFrQixDQUFDLE1BQWMsRUFBRSxJQUF1QjtRQUN4RCxPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLFlBQVksQ0FDWCxlQUFlLEVBQ2YsSUFBSSxDQUFDLFNBQVMsRUFDZCxvQkFBb0IsRUFDcEI7WUFDRSxNQUFNO1NBQ1AsRUFDRCxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLENBQ3RDLENBQUE7SUFDTCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsTUFBYyxFQUFFLEVBQVU7UUFDM0MsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixjQUFjLENBQ2IsSUFBSSxDQUFDLFNBQVMsRUFDZCxrQkFBa0IsRUFDbEI7WUFDRSxNQUFNO1lBQ04sRUFBRTtTQUNILENBQ0YsQ0FBQztJQUNOLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxNQUFjLEVBQUUsVUFBa0IsRUFBRSxnQkFBd0I7UUFDbkYsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixjQUFjLENBQ2IsSUFBSSxDQUFDLFNBQVMsRUFDZCx5QkFBeUIsRUFDekI7WUFDRSxNQUFNO1lBQ04sVUFBVTtZQUNWLGdCQUFnQjtTQUNqQixDQUNGLENBQUM7SUFDTixDQUFDO0lBRUQsdUJBQXVCLENBQUMsUUFBZ0IsRUFBRSxnQkFBd0I7UUFDaEUsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixXQUFXLENBQ1YscUJBQXFCLEVBQ3JCLElBQUksQ0FBQyxXQUFXLEVBQ2hCLDJCQUEyQixFQUMzQjtZQUNFLFFBQVE7WUFDUixnQkFBZ0I7U0FDakIsQ0FDRixDQUFDO0lBQ04sQ0FBQztJQUVELHdCQUF3QixDQUFDLFFBQWdCO1FBQ3ZDLE1BQU0sTUFBTSxHQUE4QixFQUFDLEtBQUssRUFBRSxNQUFNLEVBQUMsQ0FBQztRQUUxRCxPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLGFBQWEsQ0FDWixxQkFBcUIsRUFDckIsSUFBSSxDQUFDLFdBQVcsRUFDaEIsNEJBQTRCLEVBQzVCLEVBQUMsUUFBUSxFQUFDLEVBQ1Y7WUFDRSxNQUFNO1NBQ1AsQ0FDRixDQUFDO0lBQ04sQ0FBQztJQUVELHVCQUF1QixDQUFDLFFBQWdCLEVBQUUsWUFBMkIsSUFBSSxFQUFFLFVBQXlCLElBQUk7UUFDdEcsTUFBTSxNQUFNLEdBQThCLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBQyxDQUFDO1FBRTFELElBQUksU0FBUyxFQUFFO1lBQ2IsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsU0FBUyxDQUFDO1NBQ3hDO1FBRUQsSUFBSSxPQUFPLEVBQUU7WUFDWCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxPQUFPLENBQUM7U0FDcEM7UUFFRCxPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLGFBQWEsQ0FDWixZQUFZLEVBQ1osSUFBSSxDQUFDLFdBQVcsRUFDaEIsb0JBQW9CLEVBQ3BCLEVBQUMsUUFBUSxFQUFDLEVBQ1Y7WUFDRSxNQUFNO1NBQ1AsQ0FDRixDQUFBO0lBQ0wsQ0FBQztJQUVELHVCQUF1QixDQUFDLFFBQWdCLEVBQUUsU0FBaUIsRUFBRSxPQUFlO1FBQzFFLE1BQU0sTUFBTSxHQUE4QjtZQUN4QyxRQUFRLEVBQUUsT0FBTztZQUNqQixLQUFLLEVBQUUsTUFBTTtZQUNiLFVBQVUsRUFBRSxTQUFTO1NBQ3RCLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLGFBQWEsQ0FDWixtQkFBbUIsRUFDbkIsSUFBSSxDQUFDLFdBQVcsRUFDaEIsMkJBQTJCLEVBQzNCLEVBQUMsUUFBUSxFQUFDLEVBQ1Y7WUFDRSxNQUFNO1NBQ1AsQ0FDRixDQUFBO0lBQ0wsQ0FBQztJQUVELHFCQUFxQixDQUFDLFFBQWdCLEVBQUUsVUFBa0I7UUFDeEQsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixXQUFXLENBQ1YsbUJBQW1CLEVBQ25CLElBQUksQ0FBQyxXQUFXLEVBQ2hCLHlCQUF5QixFQUN6QjtZQUNFLFFBQVE7WUFDUixVQUFVO1NBQ1gsQ0FDRixDQUFDO0lBQ04sQ0FBQztJQUVELHVCQUF1QixDQUFDLEVBQVUsRUFBRSxLQUFhO1FBQy9DLE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsV0FBVyxDQUNWLHFCQUFxQixFQUNyQixJQUFJLENBQUMsTUFBTSxFQUNYLDJCQUEyQixFQUMzQjtZQUNFLEVBQUU7WUFDRixLQUFLO1NBQ04sQ0FDRixDQUFDO0lBQ04sQ0FBQztJQUVELHVCQUF1QixDQUFDLFNBQWlCLEVBQUUsT0FBZTtRQUN4RCxNQUFNLE1BQU0sR0FBOEI7WUFDeEMsUUFBUSxFQUFFLE9BQU87WUFDakIsS0FBSyxFQUFFLE1BQU07WUFDYixVQUFVLEVBQUUsU0FBUztTQUN0QixDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixhQUFhLENBQ1osbUJBQW1CLEVBQ25CLElBQUksQ0FBQyxNQUFNLEVBQ1gsMkJBQTJCLEVBQzNCLEVBQUUsRUFDRixFQUFFLE1BQU0sRUFBRSxDQUNYLENBQUM7SUFDTixDQUFDO0lBRUQscUJBQXFCLENBQUMsVUFBa0I7UUFDdEMsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixXQUFXLENBQ1YsbUJBQW1CLEVBQ25CLElBQUksQ0FBQyxNQUFNLEVBQ1gseUJBQXlCLEVBQ3pCLEVBQUMsVUFBVSxFQUFDLENBQ2IsQ0FBQTtJQUNMLENBQUM7SUFFRCxlQUFlLENBQUMsTUFBYyxFQUFFLEVBQVU7UUFDeEMsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixXQUFXLENBQ1YsZUFBZSxFQUNmLElBQUksQ0FBQyxTQUFTLEVBQ2Qsa0JBQWtCLEVBQ2xCLEVBQUMsTUFBTSxFQUFFLEVBQUUsRUFBQyxDQUNiLENBQUE7SUFDTCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsSUFBVSxFQUFFLHFCQUE2QixFQUFFLFFBQWlCLEtBQUs7UUFDcEYsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxxQkFBcUIsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNwRTthQUFNLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDcEMsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENBQUMscUJBQXFCLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDdkU7UUFDRCxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxxQkFBcUIsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUNwRSxDQUFDO0lBRUQsd0JBQXdCLENBQUMsTUFBYyxFQUFFLFFBQWlCLEtBQUs7UUFDN0QsSUFBSSxJQUFJLENBQUMsNEJBQTRCLElBQUksSUFBSSxDQUFDLDRCQUE0QixHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDbEgsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUM7U0FDNUM7UUFFRCxPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLGFBQWEsQ0FDWix1QkFBdUIsRUFDdkIsSUFBSSxDQUFDLFNBQVMsRUFDZCw0QkFBNEIsRUFDNUIsRUFBQyxNQUFNLEVBQUMsRUFDUixFQUFDLE1BQU0sRUFBRSxFQUFDLEtBQUssRUFBRSxNQUFNLEVBQUMsRUFBQyxDQUMxQixDQUFDLElBQUksQ0FDSixHQUFHLENBQUMsQ0FBQywwQkFBd0QsRUFBRSxFQUFFO1lBQy9ELElBQUksQ0FBQyw0QkFBNEIsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQywwQkFBMEIsR0FBRywwQkFBMEIsQ0FBQztRQUMvRCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUVELHdCQUF3QixDQUFDLE1BQWMsRUFBRSxRQUFpQixLQUFLO1FBQzdELElBQUksSUFBSSxDQUFDLDRCQUE0QixJQUFJLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxFQUFDLEtBQUssRUFBRSxDQUFDLEVBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2xILE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1NBQzVDO1FBRUQsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixhQUFhLENBQ1osdUJBQXVCLEVBQ3ZCLElBQUksQ0FBQyxTQUFTLEVBQ2QsNEJBQTRCLEVBQzVCLEVBQUMsTUFBTSxFQUFDLEVBQ1IsRUFBQyxNQUFNLEVBQUUsRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFDLEVBQUMsQ0FDMUIsQ0FBQyxJQUFJLENBQ0osR0FBRyxDQUFDLENBQUMsMEJBQXdELEVBQUUsRUFBRTtZQUMvRCxJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsMEJBQTBCLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFRCwyQkFBMkIsQ0FBQyxTQUFpQixFQUFFLFFBQWlCLEtBQUs7UUFDbkUsSUFBSSxJQUFJLENBQUMsNEJBQTRCLElBQUksSUFBSSxDQUFDLDRCQUE0QixHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDbEgsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUM7U0FDNUM7UUFFRCxPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLGFBQWEsQ0FDWix1QkFBdUIsRUFDdkIsSUFBSSxDQUFDLFlBQVksRUFDakIsK0JBQStCLEVBQy9CLEVBQUMsU0FBUyxFQUFDLEVBQ1gsRUFBQyxNQUFNLEVBQUUsRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFDLEVBQUMsQ0FDMUIsQ0FBQyxJQUFJLENBQ0osR0FBRyxDQUFDLENBQUMsMEJBQXdELEVBQUUsRUFBRTtZQUMvRCxJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsMEJBQTBCLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxJQUFVLEVBQUUscUJBQTZCLEVBQUUsUUFBMEI7UUFDMUYsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUMzQixPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxxQkFBcUIsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUN6RTtRQUNELE9BQU8sSUFBSSxDQUFDLDZCQUE2QixDQUFDLHFCQUFxQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxNQUFjLEVBQUUsUUFBMEI7UUFDbkUsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixjQUFjLENBQ2IsdUJBQXVCLEVBQ3ZCLElBQUksQ0FBQyxTQUFTLEVBQ2QsMkJBQTJCLEVBQzNCO1lBQ0UsTUFBTTtZQUNOLFVBQVUsRUFBRSxRQUFRLENBQUMsRUFBRTtTQUN4QixFQUNELFFBQVEsQ0FDVCxDQUFDO0lBQ04sQ0FBQztJQUVELDZCQUE2QixDQUFDLFNBQWlCLEVBQUUsUUFBMEI7UUFDekUsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixjQUFjLENBQ2IsdUJBQXVCLEVBQ3ZCLElBQUksQ0FBQyxZQUFZLEVBQ2pCLDhCQUE4QixFQUM5QjtZQUNFLFNBQVM7WUFDVCxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUU7U0FDeEIsRUFDRCxRQUFRLENBQ1QsQ0FBQztJQUNOLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxJQUFVLEVBQUUscUJBQTZCO1FBQ2pFLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDMUIsT0FBTyxJQUFJLENBQUMsNkJBQTZCLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUNsRTthQUFNLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDcEMsT0FBTyxJQUFJLENBQUMsZ0NBQWdDLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUNyRTtRQUNELE9BQU8sSUFBSSxDQUFDLDZCQUE2QixDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELDZCQUE2QixDQUFDLE1BQWM7UUFDMUMsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixhQUFhLENBQ1osNEJBQTRCLEVBQzVCLElBQUksQ0FBQyxTQUFTLEVBQ2Qsa0NBQWtDLEVBQ2xDLEVBQUMsTUFBTSxFQUFDLEVBQ1IsRUFBQyxNQUFNLEVBQUUsRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFDLEVBQUMsQ0FDMUIsQ0FBQztJQUNOLENBQUM7SUFFRCxnQ0FBZ0MsQ0FBQyxTQUFpQjtRQUNoRCxPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLGFBQWEsQ0FDWiw0QkFBNEIsRUFDNUIsSUFBSSxDQUFDLFlBQVksRUFDakIscUNBQXFDLEVBQ3JDLEVBQUMsU0FBUyxFQUFDLEVBQ1gsRUFBQyxNQUFNLEVBQUUsRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFDLEVBQUMsQ0FDMUIsQ0FBQztJQUNOLENBQUM7SUFFRCw2QkFBNkIsQ0FBQyxNQUFjO1FBQzFDLE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsYUFBYSxDQUNaLDRCQUE0QixFQUM1QixJQUFJLENBQUMsU0FBUyxFQUNkLGtDQUFrQyxFQUNsQyxFQUFDLE1BQU0sRUFBQyxFQUNSLEVBQUMsTUFBTSxFQUFFLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBQyxFQUFDLENBQzFCLENBQUM7SUFDTixDQUFDO0lBRUQsMkJBQTJCLENBQUMsSUFBVSxFQUFFLHFCQUE2QixFQUFFLGFBQW9DO1FBQ3pHLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDM0IsT0FBTyxJQUFJLENBQUMsK0JBQStCLENBQUMscUJBQXFCLEVBQUUsYUFBYSxDQUFDLENBQUM7U0FDbkY7UUFDRCxPQUFPLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxxQkFBcUIsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsK0JBQStCLENBQUMsTUFBYyxFQUFFLGFBQW9DO1FBQ2xGLE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsY0FBYyxDQUNiLDRCQUE0QixFQUM1QixJQUFJLENBQUMsU0FBUyxFQUNkLGlDQUFpQyxFQUNqQztZQUNFLE1BQU07WUFDTixPQUFPLEVBQUUsYUFBYSxDQUFDLEVBQUU7U0FDMUIsRUFDRCxhQUFhLENBQ2QsQ0FBQztJQUNOLENBQUM7SUFFRCxrQ0FBa0MsQ0FBQyxTQUFpQixFQUFFLGFBQW9DO1FBQ3hGLE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsY0FBYyxDQUNiLDRCQUE0QixFQUM1QixJQUFJLENBQUMsWUFBWSxFQUNqQixvQ0FBb0MsRUFDcEM7WUFDRSxTQUFTO1lBQ1QsT0FBTyxFQUFFLGFBQWEsQ0FBQyxFQUFFO1NBQzFCLEVBQ0QsYUFBYSxDQUNkLENBQUM7SUFDTixDQUFDO0lBRUQsMkJBQTJCLENBQUMsSUFBVSxFQUFFLHFCQUE2QixFQUFFLGFBQTZDO1FBQ2xILElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDM0IsT0FBTyxJQUFJLENBQUMsK0JBQStCLENBQUMscUJBQXFCLEVBQUUsYUFBYSxDQUFDLENBQUM7U0FDbkY7UUFDRCxPQUFPLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxxQkFBcUIsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsK0JBQStCLENBQUMsTUFBYyxFQUFFLGFBQTZDO1FBQzNGLE9BQU8sYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLFlBQVksQ0FDWCw0QkFBNEIsRUFDNUIsSUFBSSxDQUFDLFNBQVMsRUFDZCxrQ0FBa0MsRUFDbEM7WUFDRSxNQUFNO1NBQ1AsRUFDRCxhQUFhLENBQ2QsQ0FBQztJQUNOLENBQUM7SUFFRCxrQ0FBa0MsQ0FBQyxTQUFpQixFQUFFLGFBQTZDO1FBQ2pHLE9BQU8sYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLFlBQVksQ0FDWCw0QkFBNEIsRUFDNUIsSUFBSSxDQUFDLFlBQVksRUFDakIscUNBQXFDLEVBQ3JDO1lBQ0UsU0FBUztTQUNWLEVBQ0QsYUFBYSxDQUNkLENBQUM7SUFDTixDQUFDO0lBRUQsdUJBQXVCLENBQUMsSUFBVSxFQUFFLHFCQUE2QjtRQUMvRCxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzFCLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDLHFCQUFxQixDQUFDLENBQUM7U0FDaEU7YUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3BDLE9BQU8sSUFBSSxDQUFDLDhCQUE4QixDQUFDLHFCQUFxQixDQUFDLENBQUM7U0FDbkU7UUFDRCxPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCwyQkFBMkIsQ0FBQyxNQUFjO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsYUFBYSxDQUNaLDBCQUEwQixFQUMxQixJQUFJLENBQUMsU0FBUyxFQUNkLGdDQUFnQyxFQUNoQyxFQUFDLE1BQU0sRUFBQyxFQUNSLEVBQUMsTUFBTSxFQUFFLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBQyxFQUFDLENBQzFCLENBQUM7SUFDTixDQUFDO0lBRUQsOEJBQThCLENBQUMsU0FBaUI7UUFDOUMsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixhQUFhLENBQ1osMEJBQTBCLEVBQzFCLElBQUksQ0FBQyxZQUFZLEVBQ2pCLG1DQUFtQyxFQUNuQyxFQUFDLFNBQVMsRUFBQyxFQUNYLEVBQUMsTUFBTSxFQUFFLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBQyxFQUFDLENBQzFCLENBQUM7SUFDTixDQUFDO0lBRUQsMkJBQTJCLENBQUMsTUFBYztRQUN4QyxPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLGFBQWEsQ0FDWiwwQkFBMEIsRUFDMUIsSUFBSSxDQUFDLFNBQVMsRUFDZCxnQ0FBZ0MsRUFDaEMsRUFBQyxNQUFNLEVBQUMsRUFDUixFQUFDLE1BQU0sRUFBRSxFQUFDLEtBQUssRUFBRSxNQUFNLEVBQUMsRUFBQyxDQUMxQixDQUFDO0lBQ04sQ0FBQztJQUVELHlCQUF5QixDQUFDLElBQVUsRUFBRSxxQkFBNkIsRUFBRSxHQUFpQztRQUNwRyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzFCLE9BQU8sSUFBSSxDQUFDLDZCQUE2QixDQUFDLHFCQUFxQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ3ZFO2FBQU0sSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNwQyxPQUFPLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUMxRTtRQUNELE9BQU8sSUFBSSxDQUFDLDZCQUE2QixDQUFDLHFCQUFxQixFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCw2QkFBNkIsQ0FBQyxNQUFjLEVBQUUsR0FBaUM7UUFDN0UsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2QsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixZQUFZLENBQ1gsMEJBQTBCLEVBQzFCLElBQUksQ0FBQyxTQUFTLEVBQ2QsZ0NBQWdDLEVBQ2hDO1lBQ0UsTUFBTTtTQUNQLEVBQ0QsR0FBRyxDQUNKLENBQUE7SUFDTCxDQUFDO0lBRUQsZ0NBQWdDLENBQUMsU0FBaUIsRUFBRSxHQUFpQztRQUNuRixPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDZCxPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLFlBQVksQ0FDWCwwQkFBMEIsRUFDMUIsSUFBSSxDQUFDLFlBQVksRUFDakIsbUNBQW1DLEVBQ25DO1lBQ0UsU0FBUztTQUNWLEVBQ0QsR0FBRyxDQUNKLENBQUE7SUFDTCxDQUFDO0lBRUQsNkJBQTZCLENBQUMsTUFBYyxFQUFFLEdBQWlDO1FBQzdFLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNkLE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsWUFBWSxDQUNYLDBCQUEwQixFQUMxQixJQUFJLENBQUMsU0FBUyxFQUNkLGdDQUFnQyxFQUNoQztZQUNFLE1BQU07U0FDUCxFQUNELEdBQUcsQ0FDSixDQUFBO0lBQ0wsQ0FBQztJQUVELHlCQUF5QixDQUFDLElBQVUsRUFBRSxxQkFBNkIsRUFBRSxHQUF3QjtRQUMzRixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzFCLE9BQU8sSUFBSSxDQUFDLDZCQUE2QixDQUFDLHFCQUFxQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ3ZFO1FBQ0QsT0FBTyxJQUFJLENBQUMsZ0NBQWdDLENBQUMscUJBQXFCLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELDZCQUE2QixDQUFDLE1BQWMsRUFBRSxHQUF3QjtRQUNwRSxPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLGNBQWMsQ0FDYiwwQkFBMEIsRUFDMUIsSUFBSSxDQUFDLFNBQVMsRUFDZCwrQkFBK0IsRUFDL0I7WUFDRSxNQUFNO1lBQ04sS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1NBQ2QsRUFDRCxHQUFHLENBQ0osQ0FBQTtJQUNMLENBQUM7SUFFRCxnQ0FBZ0MsQ0FBQyxTQUFpQixFQUFFLEdBQXdCO1FBQzFFLE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsY0FBYyxDQUNiLDBCQUEwQixFQUMxQixJQUFJLENBQUMsWUFBWSxFQUNqQixrQ0FBa0MsRUFDbEM7WUFDRSxTQUFTO1lBQ1QsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1NBQ2QsRUFDRCxHQUFHLENBQ0osQ0FBQTtJQUNMLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxJQUFVLEVBQUUscUJBQTZCLEVBQUUsR0FBd0I7UUFDM0YsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUN2RTtRQUNELE9BQU8sSUFBSSxDQUFDLGdDQUFnQyxDQUFDLHFCQUFxQixFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCw2QkFBNkIsQ0FBQyxNQUFjLEVBQUUsR0FBd0I7UUFDcEUsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixjQUFjLENBQ2IsSUFBSSxDQUFDLFNBQVMsRUFDZCwrQkFBK0IsRUFDL0I7WUFDRSxNQUFNO1lBQ04sS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1NBQ2QsQ0FDRixDQUFBO0lBQ0wsQ0FBQztJQUVELGdDQUFnQyxDQUFDLFNBQWlCLEVBQUUsR0FBd0I7UUFDMUUsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixjQUFjLENBQ2IsSUFBSSxDQUFDLFlBQVksRUFDakIsa0NBQWtDLEVBQ2xDO1lBQ0UsU0FBUztZQUNULEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRTtTQUNkLENBQ0YsQ0FBQTtJQUNMLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxJQUFVLEVBQUUscUJBQTZCLEVBQUUsVUFBa0I7UUFDcEYsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxxQkFBcUIsRUFBRSxVQUFVLENBQUMsQ0FBQztTQUM3RTthQUFNLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDcEMsT0FBTyxJQUFJLENBQUMsK0JBQStCLENBQUMscUJBQXFCLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDaEY7UUFDRCxPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxxQkFBcUIsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsNEJBQTRCLENBQUMsTUFBYyxFQUFFLFVBQWtCO1FBQzdELE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsYUFBYSxDQUNaLDJCQUEyQixFQUMzQixJQUFJLENBQUMsU0FBUyxFQUNkLGlDQUFpQyxFQUNqQyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsRUFDcEIsRUFBQyxNQUFNLEVBQUUsRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFDLEVBQUMsQ0FDMUIsQ0FBQztJQUNOLENBQUM7SUFFRCwrQkFBK0IsQ0FBQyxTQUFpQixFQUFFLFVBQWtCO1FBQ25FLE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsYUFBYSxDQUNaLDJCQUEyQixFQUMzQixJQUFJLENBQUMsWUFBWSxFQUNqQixvQ0FBb0MsRUFDcEMsRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFDLEVBQ3ZCLEVBQUMsTUFBTSxFQUFFLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBQyxFQUFDLENBQzFCLENBQUM7SUFDTixDQUFDO0lBRUQsNEJBQTRCLENBQUMsTUFBYyxFQUFFLFVBQWtCO1FBQzdELE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsYUFBYSxDQUNaLDJCQUEyQixFQUMzQixJQUFJLENBQUMsU0FBUyxFQUNkLGlDQUFpQyxFQUNqQyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsRUFDcEIsRUFBQyxNQUFNLEVBQUUsRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFDLEVBQUMsQ0FDMUIsQ0FBQztJQUNOLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxNQUFjO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsV0FBVyxDQUNWLGVBQWUsRUFDZixJQUFJLENBQUMsU0FBUyxFQUNkLHNCQUFzQixFQUN0QixFQUFDLE1BQU0sRUFBQyxDQUNULENBQUM7SUFDTixDQUFDO0lBRUQsMkJBQTJCLENBQUMsTUFBYyxFQUFFLFVBQWtCO1FBQzVELE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsYUFBYSxDQUNaLG1CQUFtQixFQUNuQixJQUFJLENBQUMsU0FBUyxFQUNkLCtCQUErQixFQUMvQjtZQUNFLE1BQU07WUFDTixVQUFVO1NBQ1gsRUFDRCxFQUFDLE1BQU0sRUFBRSxFQUFDLEtBQUssRUFBRSxNQUFNLEVBQUMsRUFBQyxDQUMxQixDQUFDO0lBQ04sQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQVUsRUFBRSxxQkFBNkI7UUFDM0QsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUMzQixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1NBQzVEO2FBQU0sSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNwQyxPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1NBQy9EO1FBQ0QsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsdUJBQXVCLENBQUMsTUFBYztRQUNwQyxPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLFdBQVcsQ0FDVix1QkFBdUIsRUFDdkIsSUFBSSxDQUFDLFNBQVMsRUFDZCwyQkFBMkIsRUFDM0I7WUFDRSxNQUFNO1NBQ1AsQ0FDRixDQUFDO0lBQ04sQ0FBQztJQUVELDBCQUEwQixDQUFDLFNBQWlCO1FBQzFDLE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsV0FBVyxDQUNWLHVCQUF1QixFQUN2QixJQUFJLENBQUMsWUFBWSxFQUNqQiw4QkFBOEIsRUFDOUI7WUFDRSxTQUFTO1NBQ1YsQ0FDRixDQUFDO0lBQ04sQ0FBQztJQUVELHVCQUF1QixDQUFDLE1BQWM7UUFDcEMsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixXQUFXLENBQ1YsdUJBQXVCLEVBQ3ZCLElBQUksQ0FBQyxTQUFTLEVBQ2QsMkJBQTJCLEVBQzNCO1lBQ0UsTUFBTTtTQUNQLENBQ0YsQ0FBQztJQUNOLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFVLEVBQUUscUJBQTZCO1FBQ3hELElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDM0IsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUN6RDthQUFNLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckMsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUM1RDtRQUNELE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELG9CQUFvQixDQUFDLE1BQWM7UUFDakMsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixhQUFhLENBQ1osbUJBQW1CLEVBQ25CLElBQUksQ0FBQyxTQUFTLEVBQ2Qsd0JBQXdCLEVBQ3hCLEVBQUMsTUFBTSxFQUFDLEVBQ1IsRUFBQyxNQUFNLEVBQUUsRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFDLEVBQUMsQ0FDMUIsQ0FBQTtJQUNMLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxNQUFjO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsYUFBYSxDQUNaLG1CQUFtQixFQUNuQixJQUFJLENBQUMsU0FBUyxFQUNkLHdCQUF3QixFQUN4QixFQUFDLE1BQU0sRUFBQyxFQUNSLEVBQUMsTUFBTSxFQUFFLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBQyxFQUFDLENBQzFCLENBQUM7SUFDTixDQUFDO0lBRUQsdUJBQXVCLENBQUMsU0FBaUI7UUFDdkMsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixhQUFhLENBQ1osbUJBQW1CLEVBQ25CLElBQUksQ0FBQyxZQUFZLEVBQ2pCLDJCQUEyQixFQUMzQixFQUFDLFNBQVMsRUFBQyxFQUNYLEVBQUMsTUFBTSxFQUFFLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBQyxFQUFDLENBQzFCLENBQUM7SUFDTixDQUFDO0lBRUQsa0JBQWtCLENBQUMsSUFBVSxFQUFFLHFCQUE2QixFQUFFLFlBQTBCO1FBQ3RGLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDM0IsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMscUJBQXFCLEVBQUUsWUFBWSxDQUFDLENBQUM7U0FDekU7UUFDRCxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxxQkFBcUIsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsc0JBQXNCLENBQUMsTUFBYyxFQUFFLFlBQTBCO1FBQy9ELE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsY0FBYyxDQUNiLG1CQUFtQixFQUNuQixJQUFJLENBQUMsU0FBUyxFQUNkLHVCQUF1QixFQUN2QjtZQUNFLE1BQU07WUFDTixNQUFNLEVBQUUsWUFBWSxDQUFDLEVBQUU7U0FDeEIsRUFDRCxZQUFZLENBQ2IsQ0FBQztJQUNOLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxTQUFpQixFQUFFLFlBQTBCO1FBQ3JFLE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsY0FBYyxDQUNiLG1CQUFtQixFQUNuQixJQUFJLENBQUMsWUFBWSxFQUNqQiwwQkFBMEIsRUFDMUI7WUFDRSxTQUFTO1lBQ1QsTUFBTSxFQUFFLFlBQVksQ0FBQyxFQUFFO1NBQ3hCLEVBQ0QsWUFBWSxDQUNiLENBQUM7SUFDTixDQUFDO0lBRUQscUJBQXFCLENBQUMsTUFBYyxFQUFFLFlBQTJCLElBQUksRUFBRSxVQUF5QixJQUFJO1FBQ2xHLE1BQU0sTUFBTSxHQUE4QixFQUFDLEtBQUssRUFBRSxNQUFNLEVBQUMsQ0FBQztRQUUxRCxJQUFJLFNBQVMsRUFBRTtZQUNiLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLFNBQVMsQ0FBQztTQUN4QztRQUVELElBQUksT0FBTyxFQUFFO1lBQ1gsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsT0FBTyxDQUFDO1NBQ3BDO1FBRUQsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixhQUFhLENBQ1osWUFBWSxFQUNaLElBQUksQ0FBQyxTQUFTLEVBQ2Qsa0JBQWtCLEVBQ2xCLEVBQUMsTUFBTSxFQUFDLEVBQ1I7WUFDRSxNQUFNO1NBQ1AsQ0FDRixDQUFDO0lBQ04sQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFjLEVBQUUsVUFBa0IsRUFBRSxnQkFBd0I7UUFDdkUsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixZQUFZLENBQ1gscUJBQXFCLEVBQ3JCLElBQUksQ0FBQyxTQUFTLEVBQ2QsZ0NBQWdDLEVBQ2hDO1lBQ0UsTUFBTTtZQUNOLFVBQVU7WUFDVixnQkFBZ0I7U0FDakIsRUFDRCxFQUFFLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxRQUFnQixFQUFFLFVBQWtCO1FBQzNELE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsY0FBYyxDQUNiLElBQUksQ0FBQyxXQUFXLEVBQ2hCLGlDQUFpQyxFQUNqQztZQUNFLFFBQVE7WUFDUixVQUFVO1NBQ1gsQ0FDRixDQUFBO0lBQ0wsQ0FBQztJQUVELHdCQUF3QixDQUFDLFVBQWtCO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsY0FBYyxDQUNiLElBQUksQ0FBQyxNQUFNLEVBQ1gsaUNBQWlDLEVBQ2pDO1lBQ0UsVUFBVTtTQUNYLENBQ0YsQ0FBQTtJQUNMLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxRQUFnQixFQUFFLFVBQWtCLEVBQUUsT0FBZSxFQUFFLFlBQTJCO1FBQ3pHLE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsd0JBQXdCLENBQ3ZCLElBQUksQ0FBQyxXQUFXLEVBQ2hCLGlDQUFpQyxFQUNqQztZQUNFLFFBQVE7WUFDUixVQUFVO1NBQ1gsRUFDRDtZQUNFLE9BQU87WUFDUCxhQUFhLEVBQUUsWUFBWTtTQUM1QixDQUNGLENBQUM7SUFDTixDQUFDO0lBR0Qsd0JBQXdCLENBQUMsVUFBa0IsRUFBRSxPQUFlLEVBQUUsWUFBMkI7UUFDdkYsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQix3QkFBd0IsQ0FDdkIsSUFBSSxDQUFDLFdBQVcsRUFDaEIsaUNBQWlDLEVBQ2pDO1lBQ0UsVUFBVTtTQUNYLEVBQ0Q7WUFDRSxPQUFPO1lBQ1AsYUFBYSxFQUFFLFlBQVk7U0FDNUIsQ0FDRixDQUFDO0lBQ04sQ0FBQztJQUVELG9CQUFvQixDQUFDLFFBQWdCLEVBQUUsZ0JBQXdCLEVBQUUsY0FBdUI7UUFDdEYsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixjQUFjLENBQ2IscUJBQXFCLEVBQ3JCLElBQUksQ0FBQyxXQUFXLEVBQ2hCLDJCQUEyQixFQUMzQjtZQUNFLFFBQVE7WUFDUixnQkFBZ0I7U0FDakIsRUFDRCxjQUFjLENBQ2YsQ0FBQztJQUNOLENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxFQUFVLEVBQUUsS0FBYSxFQUFFLGNBQXVCO1FBQzNFLE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsY0FBYyxDQUNiLHFCQUFxQixFQUNyQixJQUFJLENBQUMsTUFBTSxFQUNYLDJCQUEyQixFQUMzQjtZQUNFLEVBQUU7WUFDRixLQUFLO1NBQ04sRUFDRCxjQUFjLENBQ2YsQ0FBQztJQUNOLENBQUM7SUFFRCw4QkFBOEIsQ0FBQyxFQUFVLEVBQUUsY0FBdUI7UUFDaEUsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixjQUFjLENBQ2IscUJBQXFCLEVBQ3JCLElBQUksQ0FBQyxNQUFNLEVBQ1gsZ0NBQWdDLEVBQ2hDO1lBQ0UsRUFBRTtTQUNILEVBQ0QsY0FBYyxDQUNmLENBQUM7SUFDTixDQUFDO0lBRUQsa0JBQWtCLENBQUMsTUFBYyxFQUFFLFFBQWtCO1FBQ25ELE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsY0FBYyxDQUNiLGVBQWUsRUFDZixJQUFJLENBQUMsU0FBUyxFQUNkLGtCQUFrQixFQUNsQjtZQUNFLE1BQU07WUFDTixFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUU7U0FDaEIsRUFDRCxJQUFJLENBQUMsMEJBQTBCLENBQUMsUUFBUSxDQUFDLENBQzFDLENBQUM7SUFDTixDQUFDO0lBRUQsd0JBQXdCLENBQUMsTUFBYyxFQUFFLFVBQWtCLEVBQUUsZ0JBQXdCLEVBQUUsY0FBb0M7UUFDekgsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixjQUFjLENBQ2IsMkJBQTJCLEVBQzNCLElBQUksQ0FBQyxTQUFTLEVBQ2QseUJBQXlCLEVBQ3pCO1lBQ0UsTUFBTTtZQUNOLFVBQVU7WUFDVixnQkFBZ0I7U0FDakIsRUFDRCxjQUFjLENBQ2YsQ0FBQTtJQUNMLENBQUM7SUFFRCw4QkFBOEIsQ0FBQyxNQUFjLEVBQUUsVUFBa0IsRUFBRSxPQUFzQjtRQUN2RixPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLFlBQVksQ0FDWCxHQUFHLEVBQUU7UUFDTCxDQUFDLEVBQ0QsSUFBSSxDQUFDLFNBQVMsRUFDZCwrQkFBK0IsRUFDL0I7WUFDRSxNQUFNO1lBQ04sVUFBVTtTQUNYLEVBQ0Q7WUFDRSxPQUFPO1NBQ1IsQ0FDRixDQUFDO0lBQ04sQ0FBQztJQUVPLDBCQUEwQixDQUFDLFFBQTJCO1FBQzVELElBQUksT0FBTyxRQUFRLENBQUMsRUFBRSxLQUFLLFdBQVcsRUFBRTtZQUN0QyxPQUFPLFFBQVEsQ0FBQyxFQUFFLENBQUM7U0FDcEI7UUFFRCxJQUFJLE9BQU8sUUFBUSxDQUFDLElBQUksS0FBSyxXQUFXLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFO1lBQzFELE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztTQUN0QjtRQUVELElBQUksT0FBTyxRQUFRLENBQUMseUJBQXlCLEtBQUssV0FBVyxJQUFJLENBQUMsUUFBUSxDQUFDLHlCQUF5QixFQUFFO1lBQ3BHLE9BQU8sUUFBUSxDQUFDLHlCQUF5QixDQUFDO1NBQzNDO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzs7NkdBMTdCVSxlQUFlO2lIQUFmLGVBQWUsY0FGZCxNQUFNOzRGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QXBpU2VydmljZX0gZnJvbSAnLi9hcGkuc2VydmljZSc7XG5pbXBvcnQge1xuICBBY3Rpdml0eSxcbiAgQWN0aXZpdHlMb2NhdGlvbiwgQWN0aXZpdHlMb2NhdGlvbkdyb3VwLFxuICBBY3Rpdml0eUxvY2F0aW9uVGFnLFxuICBBY3Rpdml0eVR5cGUsXG4gIENvbGxlY3Rpb24sXG4gIE1lbWJlckFjdGl2aXR5SW52aXRlLFxuICBSb2xlLFxufSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHt0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7b2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgYWN0aXZpdHlGYWN0b3J5LFxuICBhY3Rpdml0eUludml0ZUZhY3RvcnksXG4gIGFjdGl2aXR5TG9jYXRpb25GYWN0b3J5LFxuICBhY3Rpdml0eUxvY2F0aW9uR3JvdXBGYWN0b3J5LFxuICBhY3Rpdml0eUxvY2F0aW9uVGFnRmFjdG9yeSxcbiAgYWN0aXZpdHlTZXR0aW5nc0ZhY3RvcnksXG4gIGFjdGl2aXR5VHlwZUZhY3RvcnksXG4gIGV2ZW50RmFjdG9yeSxcbiAgbWVtYmVyQWN0aXZpdHlJbnZpdGVGYWN0b3J5LCBvcGVuQWN0aXZpdHlGYWN0b3J5LFxuICBzZWFyY2hNZW1iZXJGYWN0b3J5LFxufSBmcm9tICcuL2ZhY3Rvcmllcyc7XG5pbXBvcnQge3N1Yn0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHthY3Rpdml0eUxvY2F0aW9uUGFydEZhY3Rvcnl9IGZyb20gXCIuL2ZhY3Rvcmllcy9hY3Rpdml0eS1sb2NhdGlvbi1wYXJ0LWZhY3RvcnlcIjtcblxuY29uc3QgTUVNQkVSX0FDVElWSVRZX0lOVklURV9QQVRIID0gJzptZW1iZXJJZC9hY3Rpdml0aWVzLzphY3Rpdml0eUludml0ZUlkLyc7XG5jb25zdCBNRU1CRVJfQUNUSVZJVFlfSU5WSVRFU19QQVRIID0gJzptZW1iZXJJZC9hY3Rpdml0aWVzLyc7XG5jb25zdCBNRU1CRVJfQ0FMRU5EQVJfUEFUSCA9ICc6bWVtYmVySWQvYWN0aXZpdGllcy9jYWxlbmRhci8nO1xuY29uc3QgTUVNQkVSX09QRU5fQUNUSVZJVElFU19QQVRIID0gJzptZW1iZXJJZC9vcGVuLWFjdGl2aXRpZXMvJztcbmNvbnN0IE1FTUJFUl9PUEVOX0FDVElWSVRZX1BBVEggPSAnOm1lbWJlcklkL29wZW4tYWN0aXZpdGllcy86YWN0aXZpdHlJZC8nO1xuY29uc3QgTUVNQkVSX09QRU5fQUNUSVZJVFlfUkVTUE9ORF9QQVRIID0gJzptZW1iZXJJZC9vcGVuLWFjdGl2aXRpZXMvOmFjdGl2aXR5SWQvcmVzcG9uZC8nO1xuY29uc3QgUFVCTElDX0FDVElWSVRZX0lOVklURV9QQVRIID0gJ2FjdGl2aXRpZXMvOmlkLzp0b2tlbi8nO1xuY29uc3QgUFVCTElDX09QRU5fQUNUSVZJVElFU19QQVRIID0gJ29wZW4tYWN0aXZpdGllcy8nO1xuY29uc3QgUFVCTElDX09QRU5fQUNUSVZJVFlfUEFUSCA9ICdvcGVuLWFjdGl2aXRpZXMvOmFjdGl2aXR5SWQvJztcbmNvbnN0IFBVQkxJQ19PUEVOX0FDVElWSVRZX1JFU1BPTkRfUEFUSCA9ICdvcGVuLWFjdGl2aXRpZXMvOmFjdGl2aXR5SWQvcmVzcG9uZC8nO1xuY29uc3QgUFVCTElDX09QRU5fQUNUSVZJVFlfSU5WSVRFX1BBVEggPSAnb3Blbi1hY3Rpdml0aWVzL2ludml0ZXMvOmFjdGl2aXR5SWQvJztcbmNvbnN0IFRFQU1fQUNUSVZJVElFU19QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy8nO1xuY29uc3QgVEVBTV9BQ1RJVklUWV9JTlZJVEVTX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzLzphY3Rpdml0eUlkL2ludml0ZXMvJztcbmNvbnN0IFRFQU1fQUNUSVZJVFlfSU5WSVRFX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzLzphY3Rpdml0eUlkL2ludml0ZXMvOmFjdGl2aXR5SW52aXRlSWQvJztcbmNvbnN0IFRFQU1fQUNUSVZJVFlfSU5WSVRFX1JFU0VORF9QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy86YWN0aXZpdHlJZC9pbnZpdGVzLzphY3Rpdml0eUludml0ZUlkL3Jlc2VuZC1pbnZpdGUvJztcbmNvbnN0IFRFQU1fQUNUSVZJVFlfTkVXX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzL25ldy8nO1xuY29uc3QgVEVBTV9BQ1RJVklUWV9QQVJUSUNJUEFOVFNfUEFUSCA9ICc6dGVhbUlkL2FjdGl2aXRpZXMvOmFjdGl2aXR5SWQvcGFydGljaXBhbnRzLyc7XG5jb25zdCBURUFNX0FDVElWSVRZX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzLzppZC8nO1xuY29uc3QgVEVBTV9BQ1RJVklUWV9TRVRUSU5HU19QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy9zZXR0aW5ncy8nO1xuY29uc3QgU0VDVElPTl9BQ1RJVklUWV9TRVRUSU5HU19QQVRIID0gJzpzZWN0aW9uSWQvYWN0aXZpdGllcy9zZXR0aW5ncy8nO1xuY29uc3QgQ0xVQl9BQ1RJVklUWV9TRVRUSU5HU19QQVRIID0gJzpjbHViSWQvYWN0aXZpdGllcy9zZXR0aW5ncy8nO1xuY29uc3QgVEVBTV9BQ1RJVklUWV9UWVBFU19QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy90eXBlcy8nO1xuY29uc3QgVEVBTV9DQUxFTkRBUl9QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy9jYWxlbmRhci8nO1xuXG5jb25zdCBDTFVCX0FDVElWSVRZX0xPQ0FUSU9OU19QQVRIID0gJzpjbHViSWQvYWN0aXZpdGllcy9sb2NhdGlvbnMvJztcbmNvbnN0IENMVUJfQUNUSVZJVFlfTE9DQVRJT05fUEFUSCA9ICc6Y2x1YklkL2FjdGl2aXRpZXMvbG9jYXRpb25zLzpsb2NhdGlvbklkLyc7XG5jb25zdCBDTFVCX0FDVElWSVRZX0xPQ0FUSU9OX0dST1VQU19QQVRIID0gJzpjbHViSWQvYWN0aXZpdGllcy9sb2NhdGlvbnMvZ3JvdXBzLyc7XG5jb25zdCBDTFVCX0FDVElWSVRZX0xPQ0FUSU9OX0dST1VQX1BBVEggPSAnOmNsdWJJZC9hY3Rpdml0aWVzL2xvY2F0aW9ucy9ncm91cHMvOmdyb3VwSWQvJztcbmNvbnN0IENMVUJfQUNUSVZJVFlfTE9DQVRJT05fVEFHU19QQVRIID0gJzpjbHViSWQvYWN0aXZpdGllcy9sb2NhdGlvbnMvdGFncy8nO1xuY29uc3QgQ0xVQl9BQ1RJVklUWV9MT0NBVElPTl9UQUdfUEFUSCA9ICc6Y2x1YklkL2FjdGl2aXRpZXMvbG9jYXRpb25zL3RhZ3MvOnRhZ0lkLyc7XG5jb25zdCBDTFVCX0FDVElWSVRZX0xPQ0FUSU9OX1BBUlRTX1BBVEggPSAnOmNsdWJJZC9hY3Rpdml0aWVzL2xvY2F0aW9ucy86bG9jYXRpb25JZC9wYXJ0cy8nO1xuY29uc3QgQ0xVQl9BQ1RJVklUWV9UWVBFU19QQVRIID0gJzpjbHViSWQvYWN0aXZpdGllcy90eXBlcy8nO1xuY29uc3QgQ0xVQl9BQ1RJVklUWV9UWVBFX1BBVEggPSAnOmNsdWJJZC9hY3Rpdml0aWVzL3R5cGVzLzp0eXBlSWQvJztcblxuY29uc3QgVEVBTV9BQ1RJVklUWV9MT0NBVElPTlNfUEFUSCA9ICc6dGVhbUlkL2FjdGl2aXRpZXMvbG9jYXRpb25zLyc7XG5jb25zdCBURUFNX0FDVElWSVRZX0xPQ0FUSU9OX0dST1VQU19QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy9sb2NhdGlvbnMvZ3JvdXBzLyc7XG5jb25zdCBURUFNX0FDVElWSVRZX0xPQ0FUSU9OX1RBR1NfUEFUSCA9ICc6dGVhbUlkL2FjdGl2aXRpZXMvbG9jYXRpb25zL3RhZ3MvJztcbmNvbnN0IFRFQU1fQUNUSVZJVFlfTE9DQVRJT05fUEFSVFNfUEFUSCA9ICc6dGVhbUlkL2FjdGl2aXRpZXMvbG9jYXRpb25zLzpsb2NhdGlvbklkL3BhcnRzLyc7XG5cbmNvbnN0IFNFQ1RJT05fQUNUSVZJVFlfTE9DQVRJT05TX1BBVEggPSAnOnNlY3Rpb25JZC9hY3Rpdml0aWVzL2xvY2F0aW9ucy8nO1xuY29uc3QgU0VDVElPTl9BQ1RJVklUWV9MT0NBVElPTl9QQVRIID0gJzpzZWN0aW9uSWQvYWN0aXZpdGllcy9sb2NhdGlvbnMvOmxvY2F0aW9uSWQvJztcbmNvbnN0IFNFQ1RJT05fQUNUSVZJVFlfTE9DQVRJT05fR1JPVVBTX1BBVEggPSAnOnNlY3Rpb25JZC9hY3Rpdml0aWVzL2xvY2F0aW9ucy9ncm91cHMvJztcbmNvbnN0IFNFQ1RJT05fQUNUSVZJVFlfTE9DQVRJT05fR1JPVVBfUEFUSCA9ICc6c2VjdGlvbklkL2FjdGl2aXRpZXMvbG9jYXRpb25zL2dyb3Vwcy86Z3JvdXBJZC8nO1xuY29uc3QgU0VDVElPTl9BQ1RJVklUWV9MT0NBVElPTl9UQUdTX1BBVEggPSAnOnNlY3Rpb25JZC9hY3Rpdml0aWVzL2xvY2F0aW9ucy90YWdzLyc7XG5jb25zdCBTRUNUSU9OX0FDVElWSVRZX0xPQ0FUSU9OX1RBR19QQVRIID0gJzpzZWN0aW9uSWQvYWN0aXZpdGllcy9sb2NhdGlvbnMvdGFncy86dGFnSWQvJztcbmNvbnN0IFNFQ1RJT05fQUNUSVZJVFlfTE9DQVRJT05fUEFSVFNfUEFUSCA9ICc6c2VjdGlvbklkL2FjdGl2aXRpZXMvbG9jYXRpb25zLzpsb2NhdGlvbklkL3BhcnRzLyc7XG5jb25zdCBTRUNUSU9OX0FDVElWSVRZX1RZUEVTX1BBVEggPSAnOnNlY3Rpb25JZC9hY3Rpdml0aWVzL3R5cGVzLyc7XG5jb25zdCBTRUNUSU9OX0FDVElWSVRZX1RZUEVfUEFUSCA9ICc6c2VjdGlvbklkL2FjdGl2aXRpZXMvdHlwZXMvOnR5cGVJZC8nO1xuXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFjdGl2aXR5U2VydmljZSB7XG4gIGFjdGl2aXR5TG9jYXRpb25Db2xsZWN0aW9uOiBDb2xsZWN0aW9uPEFjdGl2aXR5TG9jYXRpb24+IHwgdW5kZWZpbmVkO1xuICBhY3Rpdml0eVR5cGVDb2xsZWN0aW9uOiBDb2xsZWN0aW9uPEFjdGl2aXR5VHlwZT4gfCB1bmRlZmluZWQ7XG5cbiAgYWN0aXZpdHlMb2NhdGlvblJlc3BvbnNlRGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcbiAgYWN0aXZpdHlUeXBlUmVzcG9uc2VEYXRlOiBEYXRlIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBpU2VydmljZTogQXBpU2VydmljZSkge1xuICB9XG5cbiAgYWRkVGVhbUFjdGl2aXR5SW52aXRlcyh0ZWFtSWQ6IHN0cmluZywgYWN0aXZpdHlJZDogc3RyaW5nLCBtZW1iZXJJZHM6IEFycmF5PHN0cmluZz4pIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAucG9zdFJlc291cmNlKFxuICAgICAgICAoKSA9PiB0cnVlLFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9JTlZJVEVTX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICB0ZWFtSWQsXG4gICAgICAgICAgYWN0aXZpdHlJZFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbWVtYmVyczogbWVtYmVySWRzXG4gICAgICAgIH1cbiAgICAgIClcbiAgfVxuXG4gIGNyZWF0ZVRlYW1BY3Rpdml0eSh0ZWFtSWQ6IHN0cmluZywgZGF0YTogUGFydGlhbDxBY3Rpdml0eT4pIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAucG9zdFJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eUZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRJRVNfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIHRlYW1JZFxuICAgICAgICB9LFxuICAgICAgICB0aGlzLnJlbW92ZVVudXNlZEFjdGl2aXR5RmllbGRzKGRhdGEpXG4gICAgICApXG4gIH1cblxuICBkZWxldGVUZWFtQWN0aXZpdHkodGVhbUlkOiBzdHJpbmcsIGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZGVsZXRlUmVzb3VyY2UoXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRZX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICB0ZWFtSWQsXG4gICAgICAgICAgaWRcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIGRlbGV0ZVRlYW1BY3Rpdml0eUludml0ZSh0ZWFtSWQ6IHN0cmluZywgYWN0aXZpdHlJZDogc3RyaW5nLCBhY3Rpdml0eUludml0ZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZGVsZXRlUmVzb3VyY2UoXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRZX0lOVklURV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgdGVhbUlkLFxuICAgICAgICAgIGFjdGl2aXR5SWQsXG4gICAgICAgICAgYWN0aXZpdHlJbnZpdGVJZFxuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgZ2V0TWVtYmVyQWN0aXZpdHlJbnZpdGUobWVtYmVySWQ6IHN0cmluZywgYWN0aXZpdHlJbnZpdGVJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldFJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eUludml0ZUZhY3RvcnksXG4gICAgICAgIFJvbGUuTWVtYmVyQWRtaW4sXG4gICAgICAgIE1FTUJFUl9BQ1RJVklUWV9JTlZJVEVfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIG1lbWJlcklkLFxuICAgICAgICAgIGFjdGl2aXR5SW52aXRlSWRcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIGdldE1lbWJlckFjdGl2aXR5SW52aXRlcyhtZW1iZXJJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge2xpbWl0OiAnbnVsbCd9O1xuXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGFjdGl2aXR5SW52aXRlRmFjdG9yeSxcbiAgICAgICAgUm9sZS5NZW1iZXJBZG1pbixcbiAgICAgICAgTUVNQkVSX0FDVElWSVRZX0lOVklURVNfUEFUSCxcbiAgICAgICAge21lbWJlcklkfSxcbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtc1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgZ2V0TWVtYmVyQ2FsZW5kYXJFdmVudHMobWVtYmVySWQ6IHN0cmluZywgc3RhcnREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgZW5kRGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcbiAgICBjb25zdCBwYXJhbXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7bGltaXQ6ICdudWxsJ307XG5cbiAgICBpZiAoc3RhcnREYXRlKSB7XG4gICAgICBwYXJhbXNbJ3NlYXJjaF9zdGFydF9kYXknXSA9IHN0YXJ0RGF0ZTtcbiAgICB9XG5cbiAgICBpZiAoZW5kRGF0ZSkge1xuICAgICAgcGFyYW1zWydzZWFyY2hfZW5kX2RheSddID0gZW5kRGF0ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgZXZlbnRGYWN0b3J5LFxuICAgICAgICBSb2xlLk1lbWJlckFkbWluLFxuICAgICAgICBNRU1CRVJfQ0FMRU5EQVJfUEFUSCxcbiAgICAgICAge21lbWJlcklkfSxcbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtc1xuICAgICAgICB9XG4gICAgICApXG4gIH1cblxuICBnZXRNZW1iZXJPcGVuQWN0aXZpdGllcyhtZW1iZXJJZDogc3RyaW5nLCBzdGFydERhdGU6IHN0cmluZywgZW5kRGF0ZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgZW5kX2RhdGU6IGVuZERhdGUsXG4gICAgICBsaW1pdDogJ251bGwnLFxuICAgICAgc3RhcnRfZGF0ZTogc3RhcnREYXRlXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBvcGVuQWN0aXZpdHlGYWN0b3J5LFxuICAgICAgICBSb2xlLk1lbWJlckFkbWluLFxuICAgICAgICBNRU1CRVJfT1BFTl9BQ1RJVklUSUVTX1BBVEgsXG4gICAgICAgIHttZW1iZXJJZH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwYXJhbXNcbiAgICAgICAgfVxuICAgICAgKVxuICB9XG5cbiAgZ2V0TWVtYmVyT3BlbkFjdGl2aXR5KG1lbWJlcklkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRSZXNvdXJjZShcbiAgICAgICAgb3BlbkFjdGl2aXR5RmFjdG9yeSxcbiAgICAgICAgUm9sZS5NZW1iZXJBZG1pbixcbiAgICAgICAgTUVNQkVSX09QRU5fQUNUSVZJVFlfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIG1lbWJlcklkLFxuICAgICAgICAgIGFjdGl2aXR5SWRcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIGdldFB1YmxpY0FjdGl2aXR5SW52aXRlKGlkOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0UmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5SW52aXRlRmFjdG9yeSxcbiAgICAgICAgUm9sZS5QdWJsaWMsXG4gICAgICAgIFBVQkxJQ19BQ1RJVklUWV9JTlZJVEVfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIHRva2VuXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBnZXRQdWJsaWNPcGVuQWN0aXZpdGllcyhzdGFydERhdGU6IHN0cmluZywgZW5kRGF0ZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgZW5kX2RhdGU6IGVuZERhdGUsXG4gICAgICBsaW1pdDogJ251bGwnLFxuICAgICAgc3RhcnRfZGF0ZTogc3RhcnREYXRlXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBvcGVuQWN0aXZpdHlGYWN0b3J5LFxuICAgICAgICBSb2xlLlB1YmxpYyxcbiAgICAgICAgUFVCTElDX09QRU5fQUNUSVZJVElFU19QQVRILFxuICAgICAgICB7fSxcbiAgICAgICAgeyBwYXJhbXMgfVxuICAgICAgKTtcbiAgfVxuXG4gIGdldFB1YmxpY09wZW5BY3Rpdml0eShhY3Rpdml0eUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0UmVzb3VyY2UoXG4gICAgICAgIG9wZW5BY3Rpdml0eUZhY3RvcnksXG4gICAgICAgIFJvbGUuUHVibGljLFxuICAgICAgICBQVUJMSUNfT1BFTl9BQ1RJVklUWV9QQVRILFxuICAgICAgICB7YWN0aXZpdHlJZH1cbiAgICAgIClcbiAgfVxuXG4gIGdldFRlYW1BY3Rpdml0eSh0ZWFtSWQ6IHN0cmluZywgaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9QQVRILFxuICAgICAgICB7dGVhbUlkLCBpZH1cbiAgICAgIClcbiAgfVxuXG4gIGdldEFjdGl2aXR5TG9jYXRpb25zKHJvbGU6IFJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLCBmb3JjZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgaWYgKHJvbGUgPT0gUm9sZS5DbHViQWRtaW4pIHtcbiAgICAgIHJldHVybiB0aGlzLmdldENsdWJBY3Rpdml0eUxvY2F0aW9ucyhjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGZvcmNlKTtcbiAgICB9IGVsc2UgaWYgKHJvbGUgPT0gUm9sZS5TZWN0aW9uQWRtaW4pIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFNlY3Rpb25BY3Rpdml0eUxvY2F0aW9ucyhjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGZvcmNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ2V0VGVhbUFjdGl2aXR5TG9jYXRpb25zKGNsdWJPclNlY3Rpb25PclRlYW1JZCwgZm9yY2UpXG4gIH1cblxuICBnZXRUZWFtQWN0aXZpdHlMb2NhdGlvbnModGVhbUlkOiBzdHJpbmcsIGZvcmNlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBpZiAodGhpcy5hY3Rpdml0eUxvY2F0aW9uUmVzcG9uc2VEYXRlICYmIHRoaXMuYWN0aXZpdHlMb2NhdGlvblJlc3BvbnNlRGF0ZSA+IHN1YihuZXcgRGF0ZSgpLCB7aG91cnM6IDF9KSAmJiAhZm9yY2UpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLmFjdGl2aXR5TG9jYXRpb25Db2xsZWN0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYWN0aXZpdHlMb2NhdGlvbkZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRZX0xPQ0FUSU9OU19QQVRILFxuICAgICAgICB7dGVhbUlkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKS5waXBlKFxuICAgICAgICB0YXAoKGFjdGl2aXR5TG9jYXRpb25Db2xsZWN0aW9uOiBDb2xsZWN0aW9uPEFjdGl2aXR5TG9jYXRpb24+KSA9PiB7XG4gICAgICAgICAgdGhpcy5hY3Rpdml0eUxvY2F0aW9uUmVzcG9uc2VEYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgICB0aGlzLmFjdGl2aXR5TG9jYXRpb25Db2xsZWN0aW9uID0gYWN0aXZpdHlMb2NhdGlvbkNvbGxlY3Rpb247XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgZ2V0Q2x1YkFjdGl2aXR5TG9jYXRpb25zKGNsdWJJZDogc3RyaW5nLCBmb3JjZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgaWYgKHRoaXMuYWN0aXZpdHlMb2NhdGlvblJlc3BvbnNlRGF0ZSAmJiB0aGlzLmFjdGl2aXR5TG9jYXRpb25SZXNwb25zZURhdGUgPiBzdWIobmV3IERhdGUoKSwge2hvdXJzOiAxfSkgJiYgIWZvcmNlKSB7XG4gICAgICByZXR1cm4gb2YodGhpcy5hY3Rpdml0eUxvY2F0aW9uQ29sbGVjdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGFjdGl2aXR5TG9jYXRpb25GYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9BQ1RJVklUWV9MT0NBVElPTlNfUEFUSCxcbiAgICAgICAge2NsdWJJZH0sXG4gICAgICAgIHtwYXJhbXM6IHtsaW1pdDogJ251bGwnfX1cbiAgICAgICkucGlwZShcbiAgICAgICAgdGFwKChhY3Rpdml0eUxvY2F0aW9uQ29sbGVjdGlvbjogQ29sbGVjdGlvbjxBY3Rpdml0eUxvY2F0aW9uPikgPT4ge1xuICAgICAgICAgIHRoaXMuYWN0aXZpdHlMb2NhdGlvblJlc3BvbnNlRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgdGhpcy5hY3Rpdml0eUxvY2F0aW9uQ29sbGVjdGlvbiA9IGFjdGl2aXR5TG9jYXRpb25Db2xsZWN0aW9uO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIGdldFNlY3Rpb25BY3Rpdml0eUxvY2F0aW9ucyhzZWN0aW9uSWQ6IHN0cmluZywgZm9yY2U6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGlmICh0aGlzLmFjdGl2aXR5TG9jYXRpb25SZXNwb25zZURhdGUgJiYgdGhpcy5hY3Rpdml0eUxvY2F0aW9uUmVzcG9uc2VEYXRlID4gc3ViKG5ldyBEYXRlKCksIHtob3VyczogMX0pICYmICFmb3JjZSkge1xuICAgICAgcmV0dXJuIG9mKHRoaXMuYWN0aXZpdHlMb2NhdGlvbkNvbGxlY3Rpb24pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBhY3Rpdml0eUxvY2F0aW9uRmFjdG9yeSxcbiAgICAgICAgUm9sZS5TZWN0aW9uQWRtaW4sXG4gICAgICAgIFNFQ1RJT05fQUNUSVZJVFlfTE9DQVRJT05TX1BBVEgsXG4gICAgICAgIHtzZWN0aW9uSWR9LFxuICAgICAgICB7cGFyYW1zOiB7bGltaXQ6ICdudWxsJ319XG4gICAgICApLnBpcGUoXG4gICAgICAgIHRhcCgoYWN0aXZpdHlMb2NhdGlvbkNvbGxlY3Rpb246IENvbGxlY3Rpb248QWN0aXZpdHlMb2NhdGlvbj4pID0+IHtcbiAgICAgICAgICB0aGlzLmFjdGl2aXR5TG9jYXRpb25SZXNwb25zZURhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgIHRoaXMuYWN0aXZpdHlMb2NhdGlvbkNvbGxlY3Rpb24gPSBhY3Rpdml0eUxvY2F0aW9uQ29sbGVjdGlvbjtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICB1cGRhdGVBY3Rpdml0eUxvY2F0aW9uKHJvbGU6IFJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLCBsb2NhdGlvbjogQWN0aXZpdHlMb2NhdGlvbikge1xuICAgIGlmIChyb2xlID09PSBSb2xlLkNsdWJBZG1pbikge1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlQ2x1YkFjdGl2aXR5TG9jYXRpb24oY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBsb2NhdGlvbik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVwZGF0ZVNlY3Rpb25BY3Rpdml0eUxvY2F0aW9uKGNsdWJPclNlY3Rpb25PclRlYW1JZCwgbG9jYXRpb24pO1xuICB9XG5cbiAgdXBkYXRlQ2x1YkFjdGl2aXR5TG9jYXRpb24oY2x1YklkOiBzdHJpbmcsIGxvY2F0aW9uOiBBY3Rpdml0eUxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eUxvY2F0aW9uRmFjdG9yeSxcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQUNUSVZJVFlfTE9DQVRJT05fUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIGNsdWJJZCxcbiAgICAgICAgICBsb2NhdGlvbklkOiBsb2NhdGlvbi5pZFxuICAgICAgICB9LFxuICAgICAgICBsb2NhdGlvblxuICAgICAgKTtcbiAgfVxuXG4gIHVwZGF0ZVNlY3Rpb25BY3Rpdml0eUxvY2F0aW9uKHNlY3Rpb25JZDogc3RyaW5nLCBsb2NhdGlvbjogQWN0aXZpdHlMb2NhdGlvbikge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC51cGRhdGVSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlMb2NhdGlvbkZhY3RvcnksXG4gICAgICAgIFJvbGUuU2VjdGlvbkFkbWluLFxuICAgICAgICBTRUNUSU9OX0FDVElWSVRZX0xPQ0FUSU9OX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBzZWN0aW9uSWQsXG4gICAgICAgICAgbG9jYXRpb25JZDogbG9jYXRpb24uaWRcbiAgICAgICAgfSxcbiAgICAgICAgbG9jYXRpb25cbiAgICAgICk7XG4gIH1cblxuICBnZXRBY3Rpdml0eUxvY2F0aW9uR3JvdXBzKHJvbGU6IFJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nKSB7XG4gICAgaWYgKHJvbGUgPT0gUm9sZS5DbHViQWRtaW4pIHtcbiAgICAgIHJldHVybiB0aGlzLmdldENsdWJBY3Rpdml0eUxvY2F0aW9uR3JvdXBzKGNsdWJPclNlY3Rpb25PclRlYW1JZCk7XG4gICAgfSBlbHNlIGlmIChyb2xlID09IFJvbGUuU2VjdGlvbkFkbWluKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRTZWN0aW9uQWN0aXZpdHlMb2NhdGlvbkdyb3VwcyhjbHViT3JTZWN0aW9uT3JUZWFtSWQpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRUZWFtQWN0aXZpdHlMb2NhdGlvbkdyb3VwcyhjbHViT3JTZWN0aW9uT3JUZWFtSWQpO1xuICB9XG5cbiAgZ2V0Q2x1YkFjdGl2aXR5TG9jYXRpb25Hcm91cHMoY2x1YklkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYWN0aXZpdHlMb2NhdGlvbkdyb3VwRmFjdG9yeSxcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQUNUSVZJVFlfTE9DQVRJT05fR1JPVVBTX1BBVEgsXG4gICAgICAgIHtjbHViSWR9LFxuICAgICAgICB7cGFyYW1zOiB7bGltaXQ6ICdudWxsJ319XG4gICAgICApO1xuICB9XG5cbiAgZ2V0U2VjdGlvbkFjdGl2aXR5TG9jYXRpb25Hcm91cHMoc2VjdGlvbklkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYWN0aXZpdHlMb2NhdGlvbkdyb3VwRmFjdG9yeSxcbiAgICAgICAgUm9sZS5TZWN0aW9uQWRtaW4sXG4gICAgICAgIFNFQ1RJT05fQUNUSVZJVFlfTE9DQVRJT05fR1JPVVBTX1BBVEgsXG4gICAgICAgIHtzZWN0aW9uSWR9LFxuICAgICAgICB7cGFyYW1zOiB7bGltaXQ6ICdudWxsJ319XG4gICAgICApO1xuICB9XG5cbiAgZ2V0VGVhbUFjdGl2aXR5TG9jYXRpb25Hcm91cHModGVhbUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYWN0aXZpdHlMb2NhdGlvbkdyb3VwRmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQUNUSVZJVFlfTE9DQVRJT05fR1JPVVBTX1BBVEgsXG4gICAgICAgIHt0ZWFtSWR9LFxuICAgICAgICB7cGFyYW1zOiB7bGltaXQ6ICdudWxsJ319XG4gICAgICApO1xuICB9XG5cbiAgdXBkYXRlQWN0aXZpdHlMb2NhdGlvbkdyb3VwKHJvbGU6IFJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLCBsb2NhdGlvbkdyb3VwOiBBY3Rpdml0eUxvY2F0aW9uR3JvdXApIHtcbiAgICBpZiAocm9sZSA9PT0gUm9sZS5DbHViQWRtaW4pIHtcbiAgICAgIHJldHVybiB0aGlzLnVwZGF0ZUNsdWJBY3Rpdml0eUxvY2F0aW9uR3JvdXAoY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBsb2NhdGlvbkdyb3VwKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlU2VjdGlvbkFjdGl2aXR5TG9jYXRpb25Hcm91cChjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGxvY2F0aW9uR3JvdXApO1xuICB9XG5cbiAgdXBkYXRlQ2x1YkFjdGl2aXR5TG9jYXRpb25Hcm91cChjbHViSWQ6IHN0cmluZywgbG9jYXRpb25Hcm91cDogQWN0aXZpdHlMb2NhdGlvbkdyb3VwKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eUxvY2F0aW9uR3JvdXBGYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9BQ1RJVklUWV9MT0NBVElPTl9HUk9VUF9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgY2x1YklkLFxuICAgICAgICAgIGdyb3VwSWQ6IGxvY2F0aW9uR3JvdXAuaWRcbiAgICAgICAgfSxcbiAgICAgICAgbG9jYXRpb25Hcm91cCxcbiAgICAgICk7XG4gIH1cblxuICB1cGRhdGVTZWN0aW9uQWN0aXZpdHlMb2NhdGlvbkdyb3VwKHNlY3Rpb25JZDogc3RyaW5nLCBsb2NhdGlvbkdyb3VwOiBBY3Rpdml0eUxvY2F0aW9uR3JvdXApIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAudXBkYXRlUmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5TG9jYXRpb25Hcm91cEZhY3RvcnksXG4gICAgICAgIFJvbGUuU2VjdGlvbkFkbWluLFxuICAgICAgICBTRUNUSU9OX0FDVElWSVRZX0xPQ0FUSU9OX0dST1VQX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBzZWN0aW9uSWQsXG4gICAgICAgICAgZ3JvdXBJZDogbG9jYXRpb25Hcm91cC5pZFxuICAgICAgICB9LFxuICAgICAgICBsb2NhdGlvbkdyb3VwXG4gICAgICApO1xuICB9XG5cbiAgY3JlYXRlQWN0aXZpdHlMb2NhdGlvbkdyb3VwKHJvbGU6IFJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLCBsb2NhdGlvbkdyb3VwOiBQYXJ0aWFsPEFjdGl2aXR5TG9jYXRpb25Hcm91cD4pIHtcbiAgICBpZiAocm9sZSA9PT0gUm9sZS5DbHViQWRtaW4pIHtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUNsdWJBY3Rpdml0eUxvY2F0aW9uR3JvdXAoY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBsb2NhdGlvbkdyb3VwKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlU2VjdGlvbkFjdGl2aXR5TG9jYXRpb25Hcm91cChjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGxvY2F0aW9uR3JvdXApO1xuICB9XG5cbiAgY3JlYXRlQ2x1YkFjdGl2aXR5TG9jYXRpb25Hcm91cChjbHViSWQ6IHN0cmluZywgbG9jYXRpb25Hcm91cDogUGFydGlhbDxBY3Rpdml0eUxvY2F0aW9uR3JvdXA+KSB7XG4gICAgZGVsZXRlIGxvY2F0aW9uR3JvdXAuaWQ7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnBvc3RSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlMb2NhdGlvbkdyb3VwRmFjdG9yeSxcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQUNUSVZJVFlfTE9DQVRJT05fR1JPVVBTX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBjbHViSWQsXG4gICAgICAgIH0sXG4gICAgICAgIGxvY2F0aW9uR3JvdXAsXG4gICAgICApO1xuICB9XG5cbiAgY3JlYXRlU2VjdGlvbkFjdGl2aXR5TG9jYXRpb25Hcm91cChzZWN0aW9uSWQ6IHN0cmluZywgbG9jYXRpb25Hcm91cDogUGFydGlhbDxBY3Rpdml0eUxvY2F0aW9uR3JvdXA+KSB7XG4gICAgZGVsZXRlIGxvY2F0aW9uR3JvdXAuaWQ7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnBvc3RSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlMb2NhdGlvbkdyb3VwRmFjdG9yeSxcbiAgICAgICAgUm9sZS5TZWN0aW9uQWRtaW4sXG4gICAgICAgIFNFQ1RJT05fQUNUSVZJVFlfTE9DQVRJT05fR1JPVVBTX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBzZWN0aW9uSWQsXG4gICAgICAgIH0sXG4gICAgICAgIGxvY2F0aW9uR3JvdXBcbiAgICAgICk7XG4gIH1cblxuICBnZXRBY3Rpdml0eUxvY2F0aW9uVGFncyhyb2xlOiBSb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZykge1xuICAgIGlmIChyb2xlID09IFJvbGUuQ2x1YkFkbWluKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDbHViQWN0aXZpdHlMb2NhdGlvblRhZ3MoY2x1Yk9yU2VjdGlvbk9yVGVhbUlkKTtcbiAgICB9IGVsc2UgaWYgKHJvbGUgPT0gUm9sZS5TZWN0aW9uQWRtaW4pIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFNlY3Rpb25BY3Rpdml0eUxvY2F0aW9uVGFncyhjbHViT3JTZWN0aW9uT3JUZWFtSWQpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRUZWFtQWN0aXZpdHlMb2NhdGlvblRhZ3MoY2x1Yk9yU2VjdGlvbk9yVGVhbUlkKTtcbiAgfVxuXG4gIGdldENsdWJBY3Rpdml0eUxvY2F0aW9uVGFncyhjbHViSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBhY3Rpdml0eUxvY2F0aW9uVGFnRmFjdG9yeSxcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQUNUSVZJVFlfTE9DQVRJT05fVEFHU19QQVRILFxuICAgICAgICB7Y2x1YklkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKTtcbiAgfVxuXG4gIGdldFNlY3Rpb25BY3Rpdml0eUxvY2F0aW9uVGFncyhzZWN0aW9uSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBhY3Rpdml0eUxvY2F0aW9uVGFnRmFjdG9yeSxcbiAgICAgICAgUm9sZS5TZWN0aW9uQWRtaW4sXG4gICAgICAgIFNFQ1RJT05fQUNUSVZJVFlfTE9DQVRJT05fVEFHU19QQVRILFxuICAgICAgICB7c2VjdGlvbklkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKTtcbiAgfVxuXG4gIGdldFRlYW1BY3Rpdml0eUxvY2F0aW9uVGFncyh0ZWFtSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBhY3Rpdml0eUxvY2F0aW9uVGFnRmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQUNUSVZJVFlfTE9DQVRJT05fVEFHU19QQVRILFxuICAgICAgICB7dGVhbUlkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKTtcbiAgfVxuXG4gIGNyZWF0ZUFjdGl2aXR5TG9jYXRpb25UYWcocm9sZTogUm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsIHRhZzogUGFydGlhbDxBY3Rpdml0eUxvY2F0aW9uVGFnPikge1xuICAgIGlmIChyb2xlID09IFJvbGUuQ2x1YkFkbWluKSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVDbHViQWN0aXZpdHlMb2NhdGlvblRhZyhjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHRhZyk7XG4gICAgfSBlbHNlIGlmIChyb2xlID09IFJvbGUuU2VjdGlvbkFkbWluKSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVTZWN0aW9uQWN0aXZpdHlMb2NhdGlvblRhZyhjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHRhZyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNyZWF0ZVRlYW1BY3Rpdml0eUxvY2F0aW9uVGFnKGNsdWJPclNlY3Rpb25PclRlYW1JZCwgdGFnKTtcbiAgfVxuXG4gIGNyZWF0ZUNsdWJBY3Rpdml0eUxvY2F0aW9uVGFnKGNsdWJJZDogc3RyaW5nLCB0YWc6IFBhcnRpYWw8QWN0aXZpdHlMb2NhdGlvblRhZz4pIHtcbiAgICBkZWxldGUgdGFnLmlkO1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5wb3N0UmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5TG9jYXRpb25UYWdGYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9BQ1RJVklUWV9MT0NBVElPTl9UQUdTX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBjbHViSWQsXG4gICAgICAgIH0sXG4gICAgICAgIHRhZyxcbiAgICAgIClcbiAgfVxuXG4gIGNyZWF0ZVNlY3Rpb25BY3Rpdml0eUxvY2F0aW9uVGFnKHNlY3Rpb25JZDogc3RyaW5nLCB0YWc6IFBhcnRpYWw8QWN0aXZpdHlMb2NhdGlvblRhZz4pIHtcbiAgICBkZWxldGUgdGFnLmlkO1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5wb3N0UmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5TG9jYXRpb25UYWdGYWN0b3J5LFxuICAgICAgICBSb2xlLlNlY3Rpb25BZG1pbixcbiAgICAgICAgU0VDVElPTl9BQ1RJVklUWV9MT0NBVElPTl9UQUdTX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBzZWN0aW9uSWQsXG4gICAgICAgIH0sXG4gICAgICAgIHRhZyxcbiAgICAgIClcbiAgfVxuXG4gIGNyZWF0ZVRlYW1BY3Rpdml0eUxvY2F0aW9uVGFnKHRlYW1JZDogc3RyaW5nLCB0YWc6IFBhcnRpYWw8QWN0aXZpdHlMb2NhdGlvblRhZz4pIHtcbiAgICBkZWxldGUgdGFnLmlkO1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5wb3N0UmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5TG9jYXRpb25UYWdGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9MT0NBVElPTl9UQUdTX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICB0ZWFtSWQsXG4gICAgICAgIH0sXG4gICAgICAgIHRhZyxcbiAgICAgIClcbiAgfVxuXG4gIHVwZGF0ZUFjdGl2aXR5TG9jYXRpb25UYWcocm9sZTogUm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsIHRhZzogQWN0aXZpdHlMb2NhdGlvblRhZykge1xuICAgIGlmIChyb2xlID09IFJvbGUuQ2x1YkFkbWluKSB7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVDbHViQWN0aXZpdHlMb2NhdGlvblRhZyhjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHRhZyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVwZGF0ZVNlY3Rpb25BY3Rpdml0eUxvY2F0aW9uVGFnKGNsdWJPclNlY3Rpb25PclRlYW1JZCwgdGFnKTtcbiAgfVxuXG4gIHVwZGF0ZUNsdWJBY3Rpdml0eUxvY2F0aW9uVGFnKGNsdWJJZDogc3RyaW5nLCB0YWc6IEFjdGl2aXR5TG9jYXRpb25UYWcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAudXBkYXRlUmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5TG9jYXRpb25UYWdGYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9BQ1RJVklUWV9MT0NBVElPTl9UQUdfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIGNsdWJJZCxcbiAgICAgICAgICB0YWdJZDogdGFnLmlkLFxuICAgICAgICB9LFxuICAgICAgICB0YWcsXG4gICAgICApXG4gIH1cblxuICB1cGRhdGVTZWN0aW9uQWN0aXZpdHlMb2NhdGlvblRhZyhzZWN0aW9uSWQ6IHN0cmluZywgdGFnOiBBY3Rpdml0eUxvY2F0aW9uVGFnKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eUxvY2F0aW9uVGFnRmFjdG9yeSxcbiAgICAgICAgUm9sZS5TZWN0aW9uQWRtaW4sXG4gICAgICAgIFNFQ1RJT05fQUNUSVZJVFlfTE9DQVRJT05fVEFHX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBzZWN0aW9uSWQsXG4gICAgICAgICAgdGFnSWQ6IHRhZy5pZCxcbiAgICAgICAgfSxcbiAgICAgICAgdGFnLFxuICAgICAgKVxuICB9XG5cbiAgZGVsZXRlQWN0aXZpdHlMb2NhdGlvblRhZyhyb2xlOiBSb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZywgdGFnOiBBY3Rpdml0eUxvY2F0aW9uVGFnKSB7XG4gICAgaWYgKHJvbGUgPT0gUm9sZS5DbHViQWRtaW4pIHtcbiAgICAgIHJldHVybiB0aGlzLmRlbGV0ZUNsdWJBY3Rpdml0eUxvY2F0aW9uVGFnKGNsdWJPclNlY3Rpb25PclRlYW1JZCwgdGFnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZGVsZXRlU2VjdGlvbkFjdGl2aXR5TG9jYXRpb25UYWcoY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCB0YWcpO1xuICB9XG5cbiAgZGVsZXRlQ2x1YkFjdGl2aXR5TG9jYXRpb25UYWcoY2x1YklkOiBzdHJpbmcsIHRhZzogQWN0aXZpdHlMb2NhdGlvblRhZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5kZWxldGVSZXNvdXJjZShcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQUNUSVZJVFlfTE9DQVRJT05fVEFHX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBjbHViSWQsXG4gICAgICAgICAgdGFnSWQ6IHRhZy5pZCxcbiAgICAgICAgfSxcbiAgICAgIClcbiAgfVxuXG4gIGRlbGV0ZVNlY3Rpb25BY3Rpdml0eUxvY2F0aW9uVGFnKHNlY3Rpb25JZDogc3RyaW5nLCB0YWc6IEFjdGl2aXR5TG9jYXRpb25UYWcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZGVsZXRlUmVzb3VyY2UoXG4gICAgICAgIFJvbGUuU2VjdGlvbkFkbWluLFxuICAgICAgICBTRUNUSU9OX0FDVElWSVRZX0xPQ0FUSU9OX1RBR19QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgc2VjdGlvbklkLFxuICAgICAgICAgIHRhZ0lkOiB0YWcuaWQsXG4gICAgICAgIH0sXG4gICAgICApXG4gIH1cblxuICBnZXRBY3Rpdml0eUxvY2F0aW9uUGFydHMocm9sZTogUm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsIGxvY2F0aW9uSWQ6IHN0cmluZykge1xuICAgIGlmIChyb2xlID09IFJvbGUuQ2x1YkFkbWluKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDbHViQWN0aXZpdHlMb2NhdGlvblBhcnRzKGNsdWJPclNlY3Rpb25PclRlYW1JZCwgbG9jYXRpb25JZCk7XG4gICAgfSBlbHNlIGlmIChyb2xlID09IFJvbGUuU2VjdGlvbkFkbWluKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRTZWN0aW9uQWN0aXZpdHlMb2NhdGlvblBhcnRzKGNsdWJPclNlY3Rpb25PclRlYW1JZCwgbG9jYXRpb25JZCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldFRlYW1BY3Rpdml0eUxvY2F0aW9uUGFydHMoY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBsb2NhdGlvbklkKTtcbiAgfVxuXG4gIGdldENsdWJBY3Rpdml0eUxvY2F0aW9uUGFydHMoY2x1YklkOiBzdHJpbmcsIGxvY2F0aW9uSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBhY3Rpdml0eUxvY2F0aW9uUGFydEZhY3RvcnksXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0FDVElWSVRZX0xPQ0FUSU9OX1BBUlRTX1BBVEgsXG4gICAgICAgIHtjbHViSWQsIGxvY2F0aW9uSWR9LFxuICAgICAgICB7cGFyYW1zOiB7bGltaXQ6ICdudWxsJ319XG4gICAgICApO1xuICB9XG5cbiAgZ2V0U2VjdGlvbkFjdGl2aXR5TG9jYXRpb25QYXJ0cyhzZWN0aW9uSWQ6IHN0cmluZywgbG9jYXRpb25JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGFjdGl2aXR5TG9jYXRpb25QYXJ0RmFjdG9yeSxcbiAgICAgICAgUm9sZS5TZWN0aW9uQWRtaW4sXG4gICAgICAgIFNFQ1RJT05fQUNUSVZJVFlfTE9DQVRJT05fUEFSVFNfUEFUSCxcbiAgICAgICAge3NlY3Rpb25JZCwgbG9jYXRpb25JZH0sXG4gICAgICAgIHtwYXJhbXM6IHtsaW1pdDogJ251bGwnfX1cbiAgICAgICk7XG4gIH1cblxuICBnZXRUZWFtQWN0aXZpdHlMb2NhdGlvblBhcnRzKHRlYW1JZDogc3RyaW5nLCBsb2NhdGlvbklkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYWN0aXZpdHlMb2NhdGlvblBhcnRGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9MT0NBVElPTl9QQVJUU19QQVRILFxuICAgICAgICB7dGVhbUlkLCBsb2NhdGlvbklkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKTtcbiAgfVxuXG4gIGdldFRlYW1BY3Rpdml0eU5ldyh0ZWFtSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9ORVdfUEFUSCxcbiAgICAgICAge3RlYW1JZH1cbiAgICAgICk7XG4gIH1cblxuICBnZXRUZWFtQWN0aXZpdHlQYXJ0aWNpcGFudHModGVhbUlkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBzZWFyY2hNZW1iZXJGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9QQVJUSUNJUEFOVFNfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIHRlYW1JZCxcbiAgICAgICAgICBhY3Rpdml0eUlkXG4gICAgICAgIH0sXG4gICAgICAgIHtwYXJhbXM6IHtsaW1pdDogJ251bGwnfX1cbiAgICAgICk7XG4gIH1cblxuICBnZXRBY3Rpdml0eVNldHRpbmdzKHJvbGU6IFJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nKSB7XG4gICAgaWYgKHJvbGUgPT09IFJvbGUuQ2x1YkFkbWluKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDbHViQWN0aXZpdHlTZXR0aW5ncyhjbHViT3JTZWN0aW9uT3JUZWFtSWQpO1xuICAgIH0gZWxzZSBpZiAocm9sZSA9PSBSb2xlLlNlY3Rpb25BZG1pbikge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0U2VjdGlvbkFjdGl2aXR5U2V0dGluZ3MoY2x1Yk9yU2VjdGlvbk9yVGVhbUlkKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ2V0VGVhbUFjdGl2aXR5U2V0dGluZ3MoY2x1Yk9yU2VjdGlvbk9yVGVhbUlkKTtcbiAgfVxuXG4gIGdldFRlYW1BY3Rpdml0eVNldHRpbmdzKHRlYW1JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldFJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eVNldHRpbmdzRmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQUNUSVZJVFlfU0VUVElOR1NfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIHRlYW1JZFxuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgZ2V0U2VjdGlvbkFjdGl2aXR5U2V0dGluZ3Moc2VjdGlvbklkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0UmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5U2V0dGluZ3NGYWN0b3J5LFxuICAgICAgICBSb2xlLlNlY3Rpb25BZG1pbixcbiAgICAgICAgU0VDVElPTl9BQ1RJVklUWV9TRVRUSU5HU19QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgc2VjdGlvbklkXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBnZXRDbHViQWN0aXZpdHlTZXR0aW5ncyhjbHViSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlTZXR0aW5nc0ZhY3RvcnksXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0FDVElWSVRZX1NFVFRJTkdTX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBjbHViSWQsXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBnZXRBY3Rpdml0eVR5cGVzKHJvbGU6IFJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nKSB7XG4gICAgaWYgKHJvbGUgPT09IFJvbGUuQ2x1YkFkbWluKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDbHViQWN0aXZpdHlUeXBlcyhjbHViT3JTZWN0aW9uT3JUZWFtSWQpO1xuICAgIH0gZWxzZSBpZiAocm9sZSA9PT0gUm9sZS5TZWN0aW9uQWRtaW4pIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFNlY3Rpb25BY3Rpdml0eVR5cGVzKGNsdWJPclNlY3Rpb25PclRlYW1JZCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldFRlYW1BY3Rpdml0eVR5cGVzKGNsdWJPclNlY3Rpb25PclRlYW1JZCk7XG4gIH1cblxuICBnZXRUZWFtQWN0aXZpdHlUeXBlcyh0ZWFtSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBhY3Rpdml0eVR5cGVGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9UWVBFU19QQVRILFxuICAgICAgICB7dGVhbUlkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKVxuICB9XG5cbiAgZ2V0Q2x1YkFjdGl2aXR5VHlwZXMoY2x1YklkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYWN0aXZpdHlUeXBlRmFjdG9yeSxcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQUNUSVZJVFlfVFlQRVNfUEFUSCxcbiAgICAgICAge2NsdWJJZH0sXG4gICAgICAgIHtwYXJhbXM6IHtsaW1pdDogJ251bGwnfX1cbiAgICAgICk7XG4gIH1cblxuICBnZXRTZWN0aW9uQWN0aXZpdHlUeXBlcyhzZWN0aW9uSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBhY3Rpdml0eVR5cGVGYWN0b3J5LFxuICAgICAgICBSb2xlLlNlY3Rpb25BZG1pbixcbiAgICAgICAgU0VDVElPTl9BQ1RJVklUWV9UWVBFU19QQVRILFxuICAgICAgICB7c2VjdGlvbklkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKTtcbiAgfVxuXG4gIHVwZGF0ZUFjdGl2aXR5VHlwZShyb2xlOiBSb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZywgYWN0aXZpdHlUeXBlOiBBY3Rpdml0eVR5cGUpIHtcbiAgICBpZiAocm9sZSA9PT0gUm9sZS5DbHViQWRtaW4pIHtcbiAgICAgIHJldHVybiB0aGlzLnVwZGF0ZUNsdWJBY3Rpdml0eVR5cGUoY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBhY3Rpdml0eVR5cGUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy51cGRhdGVTZWN0aW9uQWN0aXZpdHlUeXBlKGNsdWJPclNlY3Rpb25PclRlYW1JZCwgYWN0aXZpdHlUeXBlKTtcbiAgfVxuXG4gIHVwZGF0ZUNsdWJBY3Rpdml0eVR5cGUoY2x1YklkOiBzdHJpbmcsIGFjdGl2aXR5VHlwZTogQWN0aXZpdHlUeXBlKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eVR5cGVGYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9BQ1RJVklUWV9UWVBFX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBjbHViSWQsXG4gICAgICAgICAgdHlwZUlkOiBhY3Rpdml0eVR5cGUuaWQsXG4gICAgICAgIH0sXG4gICAgICAgIGFjdGl2aXR5VHlwZSxcbiAgICAgICk7XG4gIH1cblxuICB1cGRhdGVTZWN0aW9uQWN0aXZpdHlUeXBlKHNlY3Rpb25JZDogc3RyaW5nLCBhY3Rpdml0eVR5cGU6IEFjdGl2aXR5VHlwZSkge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC51cGRhdGVSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlUeXBlRmFjdG9yeSxcbiAgICAgICAgUm9sZS5TZWN0aW9uQWRtaW4sXG4gICAgICAgIFNFQ1RJT05fQUNUSVZJVFlfVFlQRV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgc2VjdGlvbklkLFxuICAgICAgICAgIHR5cGVJZDogYWN0aXZpdHlUeXBlLmlkLFxuICAgICAgICB9LFxuICAgICAgICBhY3Rpdml0eVR5cGUsXG4gICAgICApO1xuICB9XG5cbiAgZ2V0VGVhbUNhbGVuZGFyRXZlbnRzKHRlYW1JZDogc3RyaW5nLCBzdGFydERhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsLCBlbmREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgIGNvbnN0IHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtsaW1pdDogJ251bGwnfTtcblxuICAgIGlmIChzdGFydERhdGUpIHtcbiAgICAgIHBhcmFtc1snc2VhcmNoX3N0YXJ0X2RheSddID0gc3RhcnREYXRlO1xuICAgIH1cblxuICAgIGlmIChlbmREYXRlKSB7XG4gICAgICBwYXJhbXNbJ3NlYXJjaF9lbmRfZGF5J10gPSBlbmREYXRlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBldmVudEZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0NBTEVOREFSX1BBVEgsXG4gICAgICAgIHt0ZWFtSWR9LFxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1zXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICByZXNlbmRJbnZpdGUodGVhbUlkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZywgYWN0aXZpdHlJbnZpdGVJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnBvc3RSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlJbnZpdGVGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9JTlZJVEVfUkVTRU5EX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICB0ZWFtSWQsXG4gICAgICAgICAgYWN0aXZpdHlJZCxcbiAgICAgICAgICBhY3Rpdml0eUludml0ZUlkXG4gICAgICAgIH0sXG4gICAgICAgIHt9XG4gICAgICApO1xuICB9XG5cbiAgcmVtb3ZlTWVtYmVyT3BlbkFjdGl2aXR5KG1lbWJlcklkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5kZWxldGVSZXNvdXJjZShcbiAgICAgICAgUm9sZS5NZW1iZXJBZG1pbixcbiAgICAgICAgTUVNQkVSX09QRU5fQUNUSVZJVFlfUkVTUE9ORF9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgbWVtYmVySWQsXG4gICAgICAgICAgYWN0aXZpdHlJZFxuICAgICAgICB9XG4gICAgICApXG4gIH1cblxuICByZW1vdmVQdWJsaWNPcGVuQWN0aXZpdHkoYWN0aXZpdHlJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmRlbGV0ZVJlc291cmNlKFxuICAgICAgICBSb2xlLlB1YmxpYyxcbiAgICAgICAgUFVCTElDX09QRU5fQUNUSVZJVFlfUkVTUE9ORF9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgYWN0aXZpdHlJZFxuICAgICAgICB9XG4gICAgICApXG4gIH1cblxuICBzaWduVXBNZW1iZXJPcGVuQWN0aXZpdHkobWVtYmVySWQ6IHN0cmluZywgYWN0aXZpdHlJZDogc3RyaW5nLCBjb21tZW50OiBzdHJpbmcsIG9wdGlvbmFsRmVlczogQXJyYXk8c3RyaW5nPikge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC51cGRhdGVSZXNvdXJjZU5vUmVzcG9uc2UoXG4gICAgICAgIFJvbGUuTWVtYmVyQWRtaW4sXG4gICAgICAgIE1FTUJFUl9PUEVOX0FDVElWSVRZX1JFU1BPTkRfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIG1lbWJlcklkLFxuICAgICAgICAgIGFjdGl2aXR5SWRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNvbW1lbnQsXG4gICAgICAgICAgb3B0aW9uYWxfZmVlczogb3B0aW9uYWxGZWVzXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuXG4gIHNpZ25VcFB1YmxpY09wZW5BY3Rpdml0eShhY3Rpdml0eUlkOiBzdHJpbmcsIGNvbW1lbnQ6IHN0cmluZywgb3B0aW9uYWxGZWVzOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlTm9SZXNwb25zZShcbiAgICAgICAgUm9sZS5NZW1iZXJBZG1pbixcbiAgICAgICAgUFVCTElDX09QRU5fQUNUSVZJVFlfUkVTUE9ORF9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgYWN0aXZpdHlJZFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY29tbWVudCxcbiAgICAgICAgICBvcHRpb25hbF9mZWVzOiBvcHRpb25hbEZlZXNcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHVwZGF0ZU1lbWJlckFjdGl2aXR5KG1lbWJlcklkOiBzdHJpbmcsIGFjdGl2aXR5SW52aXRlSWQ6IHN0cmluZywgYWN0aXZpdHlJbnZpdGU6IHVua25vd24pIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAudXBkYXRlUmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5SW52aXRlRmFjdG9yeSxcbiAgICAgICAgUm9sZS5NZW1iZXJBZG1pbixcbiAgICAgICAgTUVNQkVSX0FDVElWSVRZX0lOVklURV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgbWVtYmVySWQsXG4gICAgICAgICAgYWN0aXZpdHlJbnZpdGVJZFxuICAgICAgICB9LFxuICAgICAgICBhY3Rpdml0eUludml0ZVxuICAgICAgKTtcbiAgfVxuXG4gIHVwZGF0ZVB1YmxpY0FjdGl2aXR5SW52aXRlKGlkOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcsIGFjdGl2aXR5SW52aXRlOiB1bmtub3duKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eUludml0ZUZhY3RvcnksXG4gICAgICAgIFJvbGUuUHVibGljLFxuICAgICAgICBQVUJMSUNfQUNUSVZJVFlfSU5WSVRFX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBpZCxcbiAgICAgICAgICB0b2tlblxuICAgICAgICB9LFxuICAgICAgICBhY3Rpdml0eUludml0ZVxuICAgICAgKTtcbiAgfVxuXG4gIHVwZGF0ZVB1YmxpY09wZW5BY3Rpdml0eUludml0ZShpZDogc3RyaW5nLCBhY3Rpdml0eUludml0ZTogdW5rbm93bikge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC51cGRhdGVSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlJbnZpdGVGYWN0b3J5LFxuICAgICAgICBSb2xlLlB1YmxpYyxcbiAgICAgICAgUFVCTElDX09QRU5fQUNUSVZJVFlfSU5WSVRFX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBpZFxuICAgICAgICB9LFxuICAgICAgICBhY3Rpdml0eUludml0ZVxuICAgICAgKTtcbiAgfVxuXG4gIHVwZGF0ZVRlYW1BY3Rpdml0eSh0ZWFtSWQ6IHN0cmluZywgYWN0aXZpdHk6IEFjdGl2aXR5KSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eUZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRZX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICB0ZWFtSWQsXG4gICAgICAgICAgaWQ6IGFjdGl2aXR5LmlkXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMucmVtb3ZlVW51c2VkQWN0aXZpdHlGaWVsZHMoYWN0aXZpdHkpXG4gICAgICApO1xuICB9XG5cbiAgdXBkYXRlVGVhbUFjdGl2aXR5SW52aXRlKHRlYW1JZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcsIGFjdGl2aXR5SW52aXRlSWQ6IHN0cmluZywgYWN0aXZpdHlJbnZpdGU6IE1lbWJlckFjdGl2aXR5SW52aXRlKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBtZW1iZXJBY3Rpdml0eUludml0ZUZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRZX0lOVklURV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgdGVhbUlkLFxuICAgICAgICAgIGFjdGl2aXR5SWQsXG4gICAgICAgICAgYWN0aXZpdHlJbnZpdGVJZFxuICAgICAgICB9LFxuICAgICAgICBhY3Rpdml0eUludml0ZVxuICAgICAgKVxuICB9XG5cbiAgdXBkYXRlVGVhbUFjdGl2aXR5UGFydGljaXBhbnRzKHRlYW1JZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcsIG1lbWJlcnM6IEFycmF5PHN0cmluZz4pIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAucG9zdFJlc291cmNlKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgIH0sXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRZX1BBUlRJQ0lQQU5UU19QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgdGVhbUlkLFxuICAgICAgICAgIGFjdGl2aXR5SWRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG1lbWJlcnNcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlVW51c2VkQWN0aXZpdHlGaWVsZHMoYWN0aXZpdHk6IFBhcnRpYWw8QWN0aXZpdHk+KTogUGFydGlhbDxBY3Rpdml0eT4ge1xuICAgIGlmICh0eXBlb2YgYWN0aXZpdHkuaWQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBkZWxldGUgYWN0aXZpdHkuaWQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBhY3Rpdml0eS5maWxlICE9PSAndW5kZWZpbmVkJyAmJiAhYWN0aXZpdHkuZmlsZSkge1xuICAgICAgZGVsZXRlIGFjdGl2aXR5LmZpbGU7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBhY3Rpdml0eS5pbnZpdGVfbGFzdF9yZXNwb25zZV9kYXRlICE9PSAndW5kZWZpbmVkJyAmJiAhYWN0aXZpdHkuaW52aXRlX2xhc3RfcmVzcG9uc2VfZGF0ZSkge1xuICAgICAgZGVsZXRlIGFjdGl2aXR5Lmludml0ZV9sYXN0X3Jlc3BvbnNlX2RhdGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjdGl2aXR5O1xuICB9XG59XG4iXX0=
|