ngx-histaff-alpha 4.2.2 → 4.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,48 @@
1
+ import { Injectable, inject } from '@angular/core';
2
+ import { PkceService } from '../services/pkce.service';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../services/pkce.service";
5
+ export class GraphInterceptor {
6
+ constructor(pkceService) {
7
+ this.pkceService = pkceService;
8
+ }
9
+ intercept(req, next) {
10
+ // Get the auth token from the service.
11
+ const graphToken = this.pkceService.userGraphToken$.value;
12
+ if (!graphToken || !graphToken.length) {
13
+ return next.handle(req);
14
+ }
15
+ // Clone the request and replace the original headers with
16
+ // cloned headers, updated with the authorization.
17
+ const graphReq = req.clone({
18
+ headers: req.headers.set('Graph-Token', graphToken)
19
+ });
20
+ // send cloned request with header to the next handler.
21
+ return next.handle(graphReq);
22
+ }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: GraphInterceptor, deps: [{ token: i1.PkceService }], target: i0.ɵɵFactoryTarget.Injectable }); }
24
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: GraphInterceptor, providedIn: 'root' }); }
25
+ }
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: GraphInterceptor, decorators: [{
27
+ type: Injectable,
28
+ args: [{
29
+ providedIn: 'root'
30
+ }]
31
+ }], ctorParameters: () => [{ type: i1.PkceService }] });
32
+ // Fn style
33
+ export function graphInterceptor(req, next) {
34
+ const pkceService = inject(PkceService);
35
+ // Get the auth token from the service.
36
+ const graphToken = pkceService.userGraphToken$.value;
37
+ if (!graphToken || !graphToken.length) {
38
+ return next(req);
39
+ }
40
+ // Clone the request and replace the original headers with
41
+ // cloned headers, updated with the authorization.
42
+ const graphReq = req.clone({
43
+ headers: req.headers.set('Graph-Token', graphToken)
44
+ });
45
+ // send cloned request with header to the next handler.
46
+ return next(graphReq);
47
+ }
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGgtaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9odHRwLWludGVyY2VwdG9ycy9ncmFwaC1pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU9uRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7OztBQU12RCxNQUFNLE9BQU8sZ0JBQWdCO0lBRXpCLFlBQ1ksV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFDaEMsQ0FBQztJQUVMLFNBQVMsQ0FBQyxHQUFxQixFQUFFLElBQWlCO1FBRTlDLHVDQUF1QztRQUN2QyxNQUFNLFVBQVUsR0FBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUM7UUFFM0QsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUU7WUFDbkMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzNCO1FBRUQsMERBQTBEO1FBQzFELGtEQUFrRDtRQUNsRCxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1lBQ3ZCLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDO1NBQ3RELENBQUMsQ0FBQztRQUVILHVEQUF1RDtRQUN2RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakMsQ0FBQzs4R0F2QlEsZ0JBQWdCO2tIQUFoQixnQkFBZ0IsY0FGYixNQUFNOzsyRkFFVCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOztBQTJCRCxXQUFXO0FBQ1gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEdBQXFCLEVBQUUsSUFBbUI7SUFFdkUsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXhDLHVDQUF1QztJQUN2QyxNQUFNLFVBQVUsR0FBSSxXQUFXLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQztJQUV0RCxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtRQUNuQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNwQjtJQUVELDBEQUEwRDtJQUMxRCxrREFBa0Q7SUFDbEQsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztRQUN2QixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQztLQUN0RCxDQUFDLENBQUM7SUFFSCx1REFBdUQ7SUFDdkQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gICAgSHR0cEludGVyY2VwdG9yLCBIdHRwSGFuZGxlciwgSHR0cFJlcXVlc3QsXHJcbiAgICBIdHRwSGFuZGxlckZuLFxyXG4gICAgSHR0cEV2ZW50XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuaW1wb3J0IHsgUGtjZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wa2NlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEdyYXBoSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgcGtjZVNlcnZpY2U6IFBrY2VTZXJ2aWNlLFxyXG4gICAgKSB7IH1cclxuXHJcbiAgICBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcikge1xyXG5cclxuICAgICAgICAvLyBHZXQgdGhlIGF1dGggdG9rZW4gZnJvbSB0aGUgc2VydmljZS5cclxuICAgICAgICBjb25zdCBncmFwaFRva2VuID0gIHRoaXMucGtjZVNlcnZpY2UudXNlckdyYXBoVG9rZW4kLnZhbHVlO1xyXG5cclxuICAgICAgICBpZiAoIWdyYXBoVG9rZW4gfHwgIWdyYXBoVG9rZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQ2xvbmUgdGhlIHJlcXVlc3QgYW5kIHJlcGxhY2UgdGhlIG9yaWdpbmFsIGhlYWRlcnMgd2l0aFxyXG4gICAgICAgIC8vIGNsb25lZCBoZWFkZXJzLCB1cGRhdGVkIHdpdGggdGhlIGF1dGhvcml6YXRpb24uXHJcbiAgICAgICAgY29uc3QgZ3JhcGhSZXEgPSByZXEuY2xvbmUoe1xyXG4gICAgICAgICAgICBoZWFkZXJzOiByZXEuaGVhZGVycy5zZXQoJ0dyYXBoLVRva2VuJywgZ3JhcGhUb2tlbilcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gc2VuZCBjbG9uZWQgcmVxdWVzdCB3aXRoIGhlYWRlciB0byB0aGUgbmV4dCBoYW5kbGVyLlxyXG4gICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShncmFwaFJlcSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8vIEZuIHN0eWxlXHJcbmV4cG9ydCBmdW5jdGlvbiBncmFwaEludGVyY2VwdG9yKHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXJGbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PHVua25vd24+PiB7XHJcblxyXG4gICAgY29uc3QgcGtjZVNlcnZpY2UgPSBpbmplY3QoUGtjZVNlcnZpY2UpO1xyXG5cclxuICAgIC8vIEdldCB0aGUgYXV0aCB0b2tlbiBmcm9tIHRoZSBzZXJ2aWNlLlxyXG4gICAgY29uc3QgZ3JhcGhUb2tlbiA9ICBwa2NlU2VydmljZS51c2VyR3JhcGhUb2tlbiQudmFsdWU7XHJcblxyXG4gICAgaWYgKCFncmFwaFRva2VuIHx8ICFncmFwaFRva2VuLmxlbmd0aCkge1xyXG4gICAgICAgIHJldHVybiBuZXh0KHJlcSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2xvbmUgdGhlIHJlcXVlc3QgYW5kIHJlcGxhY2UgdGhlIG9yaWdpbmFsIGhlYWRlcnMgd2l0aFxyXG4gICAgLy8gY2xvbmVkIGhlYWRlcnMsIHVwZGF0ZWQgd2l0aCB0aGUgYXV0aG9yaXphdGlvbi5cclxuICAgIGNvbnN0IGdyYXBoUmVxID0gcmVxLmNsb25lKHtcclxuICAgICAgICBoZWFkZXJzOiByZXEuaGVhZGVycy5zZXQoJ0dyYXBoLVRva2VuJywgZ3JhcGhUb2tlbilcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIHNlbmQgY2xvbmVkIHJlcXVlc3Qgd2l0aCBoZWFkZXIgdG8gdGhlIG5leHQgaGFuZGxlci5cclxuICAgIHJldHVybiBuZXh0KGdyYXBoUmVxKTtcclxufSJdfQ==
@@ -3,6 +3,7 @@ import { HTTP_INTERCEPTORS } from '@angular/common/http';
3
3
  import { BaseUrlInterceptor, InterceptorSkipHeader, baseUrlInterceptor } from './base-url-interceptor';
4
4
  import { LoggingInterceptor } from './logging-interceptor';
5
5
  import { AuthInterceptor, authInterceptor } from './auth-interceptor';
6
+ import { GraphInterceptor, graphInterceptor } from './graph-interceptor';
6
7
  import { TokenInterceptor, tokenInterceptor } from './token-interceptor';
7
8
  import { ResponseInterceptor, responseInterceptor } from './response-interceptor';
8
9
  import { TimeZoneInterceptor, timeZoneInterceptor } from './time-zone-interceptor';
@@ -13,11 +14,12 @@ export const httpInterceptorProviders = [
13
14
  { provide: HTTP_INTERCEPTORS, useClass: BaseUrlInterceptor, multi: true },
14
15
  { provide: HTTP_INTERCEPTORS, useClass: LoggingInterceptor, multi: true },
15
16
  { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true },
17
+ { provide: HTTP_INTERCEPTORS, useClass: GraphInterceptor, multi: true },
16
18
  { provide: HTTP_INTERCEPTORS, useClass: TokenInterceptor, multi: true },
17
19
  { provide: HTTP_INTERCEPTORS, useClass: ResponseInterceptor, multi: true },
18
20
  { provide: HTTP_INTERCEPTORS, useClass: TimeZoneInterceptor, multi: true },
19
21
  { provide: HTTP_INTERCEPTORS, useClass: CachingInterceptor, multi: true },
20
22
  { provide: HTTP_INTERCEPTORS, useClass: LangInterceptor, multi: true },
21
23
  ];
22
- export { InterceptorSkipHeader, baseUrlInterceptor, authInterceptor, tokenInterceptor, responseInterceptor, timeZoneInterceptor, cachingInterceptor, langInterceptor };
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9odHRwLWludGVyY2VwdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtQ0FBbUM7QUFDbkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBRXJFLHFEQUFxRDtBQUNyRCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0QyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtJQUN6RSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtJQUN6RSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDdEUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDdkUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDMUUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDMUUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDekUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0NBQ3ZFLENBQUM7QUFFRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogXCJCYXJyZWxcIiBvZiBIdHRwIEludGVyY2VwdG9ycyAqL1xyXG5pbXBvcnQgeyBIVFRQX0lOVEVSQ0VQVE9SUyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbmltcG9ydCB7IEJhc2VVcmxJbnRlcmNlcHRvciwgSW50ZXJjZXB0b3JTa2lwSGVhZGVyLCBiYXNlVXJsSW50ZXJjZXB0b3IgfSBmcm9tICcuL2Jhc2UtdXJsLWludGVyY2VwdG9yJztcclxuaW1wb3J0IHsgTG9nZ2luZ0ludGVyY2VwdG9yIH0gZnJvbSAnLi9sb2dnaW5nLWludGVyY2VwdG9yJztcclxuaW1wb3J0IHsgQXV0aEludGVyY2VwdG9yLCBhdXRoSW50ZXJjZXB0b3IgfSBmcm9tICcuL2F1dGgtaW50ZXJjZXB0b3InO1xyXG5pbXBvcnQgeyBUb2tlbkludGVyY2VwdG9yLCB0b2tlbkludGVyY2VwdG9yIH0gZnJvbSAnLi90b2tlbi1pbnRlcmNlcHRvcic7XHJcbmltcG9ydCB7IFJlc3BvbnNlSW50ZXJjZXB0b3IsIHJlc3BvbnNlSW50ZXJjZXB0b3IgfSBmcm9tICcuL3Jlc3BvbnNlLWludGVyY2VwdG9yJztcclxuaW1wb3J0IHsgVGltZVpvbmVJbnRlcmNlcHRvciwgdGltZVpvbmVJbnRlcmNlcHRvciB9IGZyb20gJy4vdGltZS16b25lLWludGVyY2VwdG9yJztcclxuaW1wb3J0IHsgQ2FjaGluZ0ludGVyY2VwdG9yLCBjYWNoaW5nSW50ZXJjZXB0b3IgfSBmcm9tICcuL2NhY2hpbmctaW50ZXJjZXB0b3InO1xyXG5pbXBvcnQgeyBMYW5nSW50ZXJjZXB0b3IsIGxhbmdJbnRlcmNlcHRvciB9IGZyb20gJy4vbGFuZy1pbnRlcmNlcHRvcidcclxuXHJcbi8qKiBIdHRwIGludGVyY2VwdG9yIHByb3ZpZGVycyBpbiBvdXRzaWRlLWluIG9yZGVyICovXHJcbmV4cG9ydCBjb25zdCBodHRwSW50ZXJjZXB0b3JQcm92aWRlcnMgPSBbXHJcbiAgeyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IEJhc2VVcmxJbnRlcmNlcHRvciwgbXVsdGk6IHRydWUgfSxcclxuICB7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogTG9nZ2luZ0ludGVyY2VwdG9yLCBtdWx0aTogdHJ1ZSB9LFxyXG4gIHsgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBBdXRoSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH0sXHJcbiAgeyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IFRva2VuSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH0sXHJcbiAgeyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IFJlc3BvbnNlSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH0sXHJcbiAgeyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IFRpbWVab25lSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH0sXHJcbiAgeyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IENhY2hpbmdJbnRlcmNlcHRvciwgbXVsdGk6IHRydWUgfSxcclxuICB7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogTGFuZ0ludGVyY2VwdG9yLCBtdWx0aTogdHJ1ZSB9LFxyXG5dO1xyXG5cclxuZXhwb3J0IHsgSW50ZXJjZXB0b3JTa2lwSGVhZGVyLCBiYXNlVXJsSW50ZXJjZXB0b3IsIGF1dGhJbnRlcmNlcHRvciwgdG9rZW5JbnRlcmNlcHRvciwgcmVzcG9uc2VJbnRlcmNlcHRvciwgdGltZVpvbmVJbnRlcmNlcHRvciwgY2FjaGluZ0ludGVyY2VwdG9yLCBsYW5nSW50ZXJjZXB0b3IgfTsiXX0=
24
+ export { InterceptorSkipHeader, baseUrlInterceptor, authInterceptor, graphInterceptor, tokenInterceptor, responseInterceptor, timeZoneInterceptor, cachingInterceptor, langInterceptor };
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9odHRwLWludGVyY2VwdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtQ0FBbUM7QUFDbkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBRXJFLHFEQUFxRDtBQUNyRCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0QyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtJQUN6RSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtJQUN6RSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDdEUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDdkUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDdkUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDMUUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDMUUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDekUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0NBQ3ZFLENBQUM7QUFFRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogXCJCYXJyZWxcIiBvZiBIdHRwIEludGVyY2VwdG9ycyAqL1xyXG5pbXBvcnQgeyBIVFRQX0lOVEVSQ0VQVE9SUyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbmltcG9ydCB7IEJhc2VVcmxJbnRlcmNlcHRvciwgSW50ZXJjZXB0b3JTa2lwSGVhZGVyLCBiYXNlVXJsSW50ZXJjZXB0b3IgfSBmcm9tICcuL2Jhc2UtdXJsLWludGVyY2VwdG9yJztcclxuaW1wb3J0IHsgTG9nZ2luZ0ludGVyY2VwdG9yIH0gZnJvbSAnLi9sb2dnaW5nLWludGVyY2VwdG9yJztcclxuaW1wb3J0IHsgQXV0aEludGVyY2VwdG9yLCBhdXRoSW50ZXJjZXB0b3IgfSBmcm9tICcuL2F1dGgtaW50ZXJjZXB0b3InO1xyXG5pbXBvcnQgeyBHcmFwaEludGVyY2VwdG9yLCBncmFwaEludGVyY2VwdG9yIH0gZnJvbSAnLi9ncmFwaC1pbnRlcmNlcHRvcic7XHJcbmltcG9ydCB7IFRva2VuSW50ZXJjZXB0b3IsIHRva2VuSW50ZXJjZXB0b3IgfSBmcm9tICcuL3Rva2VuLWludGVyY2VwdG9yJztcclxuaW1wb3J0IHsgUmVzcG9uc2VJbnRlcmNlcHRvciwgcmVzcG9uc2VJbnRlcmNlcHRvciB9IGZyb20gJy4vcmVzcG9uc2UtaW50ZXJjZXB0b3InO1xyXG5pbXBvcnQgeyBUaW1lWm9uZUludGVyY2VwdG9yLCB0aW1lWm9uZUludGVyY2VwdG9yIH0gZnJvbSAnLi90aW1lLXpvbmUtaW50ZXJjZXB0b3InO1xyXG5pbXBvcnQgeyBDYWNoaW5nSW50ZXJjZXB0b3IsIGNhY2hpbmdJbnRlcmNlcHRvciB9IGZyb20gJy4vY2FjaGluZy1pbnRlcmNlcHRvcic7XHJcbmltcG9ydCB7IExhbmdJbnRlcmNlcHRvciwgbGFuZ0ludGVyY2VwdG9yIH0gZnJvbSAnLi9sYW5nLWludGVyY2VwdG9yJ1xyXG5cclxuLyoqIEh0dHAgaW50ZXJjZXB0b3IgcHJvdmlkZXJzIGluIG91dHNpZGUtaW4gb3JkZXIgKi9cclxuZXhwb3J0IGNvbnN0IGh0dHBJbnRlcmNlcHRvclByb3ZpZGVycyA9IFtcclxuICB7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogQmFzZVVybEludGVyY2VwdG9yLCBtdWx0aTogdHJ1ZSB9LFxyXG4gIHsgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBMb2dnaW5nSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH0sXHJcbiAgeyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IEF1dGhJbnRlcmNlcHRvciwgbXVsdGk6IHRydWUgfSxcclxuICB7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogR3JhcGhJbnRlcmNlcHRvciwgbXVsdGk6IHRydWUgfSxcclxuICB7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogVG9rZW5JbnRlcmNlcHRvciwgbXVsdGk6IHRydWUgfSxcclxuICB7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogUmVzcG9uc2VJbnRlcmNlcHRvciwgbXVsdGk6IHRydWUgfSxcclxuICB7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogVGltZVpvbmVJbnRlcmNlcHRvciwgbXVsdGk6IHRydWUgfSxcclxuICB7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogQ2FjaGluZ0ludGVyY2VwdG9yLCBtdWx0aTogdHJ1ZSB9LFxyXG4gIHsgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBMYW5nSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH0sXHJcbl07XHJcblxyXG5leHBvcnQgeyBJbnRlcmNlcHRvclNraXBIZWFkZXIsIGJhc2VVcmxJbnRlcmNlcHRvciwgYXV0aEludGVyY2VwdG9yLCBncmFwaEludGVyY2VwdG9yLCB0b2tlbkludGVyY2VwdG9yLCByZXNwb25zZUludGVyY2VwdG9yLCB0aW1lWm9uZUludGVyY2VwdG9yLCBjYWNoaW5nSW50ZXJjZXB0b3IsIGxhbmdJbnRlcmNlcHRvciB9OyJdfQ==
@@ -0,0 +1,24 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/router";
4
+ export class CoreOauthCallbackOffice365Component {
5
+ constructor(route) {
6
+ this.route = route;
7
+ // Extract the authorization code from the query parameters
8
+ this.route.queryParams.subscribe(params => {
9
+ const authCode = params['code'];
10
+ if (!!authCode) {
11
+ // Post the message back to the parent window
12
+ window.opener.postMessage({ authCode }, 'https://localhost:4200');
13
+ window.close(); // Close the popup
14
+ }
15
+ });
16
+ }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreOauthCallbackOffice365Component, deps: [{ token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
18
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: CoreOauthCallbackOffice365Component, isStandalone: true, selector: "core-oauth-callback-office365", ngImport: i0, template: "<p>core-oauth-callback-office365 works!</p>\r\n", styles: [""] }); }
19
+ }
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreOauthCallbackOffice365Component, decorators: [{
21
+ type: Component,
22
+ args: [{ selector: 'core-oauth-callback-office365', standalone: true, imports: [], template: "<p>core-oauth-callback-office365 works!</p>\r\n" }]
23
+ }], ctorParameters: () => [{ type: i1.ActivatedRoute }] });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1vYXV0aC1jYWxsYmFjay1vZmZpY2UzNjUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtb2F1dGgtY2FsbGJhY2stb2ZmaWNlMzY1L2NvcmUtb2F1dGgtY2FsbGJhY2stb2ZmaWNlMzY1LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLW9hdXRoLWNhbGxiYWNrLW9mZmljZTM2NS9jb3JlLW9hdXRoLWNhbGxiYWNrLW9mZmljZTM2NS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFVMUMsTUFBTSxPQUFPLG1DQUFtQztJQUM5QyxZQUFvQixLQUFxQjtRQUFyQixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUN2QywyREFBMkQ7UUFDM0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3hDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUU7Z0JBQ2QsNkNBQTZDO2dCQUM3QyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLHdCQUF3QixDQUFDLENBQUM7Z0JBQ2xFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQjthQUNuQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FYVSxtQ0FBbUM7a0dBQW5DLG1DQUFtQyx5RkNWaEQsaURBQ0E7OzJGRFNhLG1DQUFtQztrQkFQL0MsU0FBUzsrQkFDRSwrQkFBK0IsY0FDN0IsSUFBSSxXQUNQLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLW9hdXRoLWNhbGxiYWNrLW9mZmljZTM2NScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS1vYXV0aC1jYWxsYmFjay1vZmZpY2UzNjUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9jb3JlLW9hdXRoLWNhbGxiYWNrLW9mZmljZTM2NS5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVPYXV0aENhbGxiYWNrT2ZmaWNlMzY1Q29tcG9uZW50IHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge1xyXG4gICAgLy8gRXh0cmFjdCB0aGUgYXV0aG9yaXphdGlvbiBjb2RlIGZyb20gdGhlIHF1ZXJ5IHBhcmFtZXRlcnNcclxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XHJcbiAgICAgIGNvbnN0IGF1dGhDb2RlID0gcGFyYW1zWydjb2RlJ107XHJcbiAgICAgIGlmICghIWF1dGhDb2RlKSB7XHJcbiAgICAgICAgLy8gUG9zdCB0aGUgbWVzc2FnZSBiYWNrIHRvIHRoZSBwYXJlbnQgd2luZG93XHJcbiAgICAgICAgd2luZG93Lm9wZW5lci5wb3N0TWVzc2FnZSh7IGF1dGhDb2RlIH0sICdodHRwczovL2xvY2FsaG9zdDo0MjAwJyk7XHJcbiAgICAgICAgd2luZG93LmNsb3NlKCk7IC8vIENsb3NlIHRoZSBwb3B1cFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPHA+Y29yZS1vYXV0aC1jYWxsYmFjay1vZmZpY2UzNjUgd29ya3MhPC9wPlxyXG4iXX0=
@@ -12,6 +12,8 @@ export class AppConfigService {
12
12
  this.OAUTH2_OIDC_LOGIN_URI = "";
13
13
  this.OAUTH2_OIDC_REDIRECT_URI = "";
14
14
  this.OAUTH2_OIDC_SCOPE = "openid profile email";
15
+ this.OFFICE365_DEV = undefined;
16
+ this.OFFICE365_PROD = undefined;
15
17
  this.SAML2ADFS_ENABLED = true;
16
18
  this.SAML2ADFS_IDP = "";
17
19
  this.SAML2ADFS_IDENTIFIER = "";
@@ -34,4 +36,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
34
36
  providedIn: 'root',
35
37
  }]
36
38
  }] });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWNvbmZpZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvc2VydmljZXMvYXBwLWNvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxnQkFBZ0I7SUFIN0I7UUFpQkUsa0JBQWEsR0FBWSxLQUFLLENBQUMsQ0FBQywwREFBMEQ7UUFFMUYsb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFFaEMsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QiwwQkFBcUIsR0FBVyxFQUFFLENBQUM7UUFFbkMsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBQ3JDLDBCQUFxQixHQUFXLEVBQUUsQ0FBQztRQUNuQywwQkFBcUIsR0FBVyxFQUFFLENBQUM7UUFDbkMsNkJBQXdCLEdBQVcsRUFBRSxDQUFDO1FBQ3RDLHNCQUFpQixHQUFXLHNCQUFzQixDQUFDO1FBRW5ELHNCQUFpQixHQUFZLElBQUksQ0FBQztRQUNsQyxrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQUMzQix5QkFBb0IsR0FBVyxFQUFFLENBQUM7UUFDbEMsd0JBQW1CLEdBQVcsRUFBRSxDQUFDO1FBQ2pDLHlCQUFvQixHQUFXLEVBQUUsQ0FBQztRQUNsQyxxQkFBZ0IsR0FBVyxFQUFFLENBQUM7UUFFOUIsa0JBQWEsR0FBVyxPQUFPLENBQUM7UUFDaEMsa0JBQWEsR0FBVyxRQUFRLENBQUM7UUFDakMsa0JBQWEsR0FBVyxTQUFTLENBQUM7UUFDbEMsb0JBQWUsR0FBVyxTQUFTLENBQUM7UUFDcEMsc0JBQWlCLEdBQVcsYUFBYSxDQUFDO1FBQzFDLG9CQUFlLEdBQVcsVUFBVSxDQUFDO0tBRXRDOzhHQTFDWSxnQkFBZ0I7a0hBQWhCLGdCQUFnQixjQUZmLE1BQU07OzJGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwQ29uZmlnU2VydmljZSB7XHJcblxyXG4gIEFQUF9UWVBFITogc3RyaW5nO1xyXG5cclxuICBBUFBfVUlJRCE6IHN0cmluZztcclxuICBBTExPV19JTl9BUFBfTk9USUZJQ0FUSU9OITogYm9vbGVhbjtcclxuICBTSE9XX0xPR0lOX05PVElGSUNBVElPTiE6IGJvb2xlYW47XHJcblxyXG4gIEJBU0VfVVJMITogc3RyaW5nO1xyXG4gIEJBU0VfVVJMX0ZPUl9TVEFUSVNUSUMhOiBzdHJpbmc7XHJcbiAgQkFTRV9VUkxfRk9SX0NPTlRFTlQhOiBzdHJpbmc7IC8vIGZvciBtaXVrYWZvdG8uY29tIG9ubHlcclxuXHJcblxyXG4gIEdPTElWRV9VUkwhOiBzdHJpbmc7XHJcbiAgREVCVUdfRU5BQkxFRDogYm9vbGVhbiA9IGZhbHNlOyAvLyBIaeG7g24gdGjhu4sgbeG7mXQgc+G7kSBhbGVydCBr4buDIGPhuqMgdHJvbmcgbcO0aSB0csaw4budbmcgUHJvZHVjdGlvblxyXG5cclxuICBVU0VfREVNT19BVkFUQVI6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBMT0dPX0xPR0lOOiBzdHJpbmcgPSBcIlwiO1xyXG4gIExPR09fSEVBREVSOiBzdHJpbmcgPSBcIlwiO1xyXG4gIEhPTUVfQkFDS0dST1VORF9JTUFHRTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgT0FVVEgyX09JRENfRU5BQkxFRDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIE9BVVRIMl9PSURDX0NMSUVOVF9JRDogc3RyaW5nID0gXCJcIjtcclxuICBPQVVUSDJfT0lEQ19MT0dJTl9VUkk6IHN0cmluZyA9IFwiXCI7XHJcbiAgT0FVVEgyX09JRENfUkVESVJFQ1RfVVJJOiBzdHJpbmcgPSBcIlwiO1xyXG4gIE9BVVRIMl9PSURDX1NDT1BFOiBzdHJpbmcgPSBcIm9wZW5pZCBwcm9maWxlIGVtYWlsXCI7XHJcblxyXG4gIFNBTUwyQURGU19FTkFCTEVEOiBib29sZWFuID0gdHJ1ZTtcclxuICBTQU1MMkFERlNfSURQOiBzdHJpbmcgPSBcIlwiO1xyXG4gIFNBTUwyQURGU19JREVOVElGSUVSOiBzdHJpbmcgPSBcIlwiO1xyXG4gIFNBTUwyQURGU19XQV9TSUdOSU46IHN0cmluZyA9IFwiXCI7XHJcbiAgU0FNTDJBREZTX1dBX1NJR05PVVQ6IHN0cmluZyA9IFwiXCI7XHJcbiAgU0FNTDJBREZTX1dSRVBMWTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgSEFOR0ZJUkVfUEFUSDogc3RyaW5nID0gJy9qb2JzJztcclxuICBTVEFUSUNfRk9MREVSOiBzdHJpbmcgPSAnc3RhdGljJztcclxuICBBVkFUQVJfRk9MREVSOiBzdHJpbmcgPSAnYXZhdGFycyc7XHJcbiAgQVBQX0RFTU9fRk9MREVSOiBzdHJpbmcgPSAnYXBwZGVtbyc7XHJcbiAgQVRUQUNITUVOVF9GT0xERVI6IHN0cmluZyA9ICdhdHRhY2htZW50cyc7XHJcbiAgTkVXU0ZFRURfRk9MREVSOiBzdHJpbmcgPSAnbmV3c2ZlZWQnO1xyXG4gICAgXHJcbn1cclxuIl19
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWNvbmZpZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvc2VydmljZXMvYXBwLWNvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxnQkFBZ0I7SUFIN0I7UUFpQkUsa0JBQWEsR0FBWSxLQUFLLENBQUMsQ0FBQywwREFBMEQ7UUFFMUYsb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFFaEMsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QiwwQkFBcUIsR0FBVyxFQUFFLENBQUM7UUFFbkMsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBQ3JDLDBCQUFxQixHQUFXLEVBQUUsQ0FBQztRQUNuQywwQkFBcUIsR0FBVyxFQUFFLENBQUM7UUFDbkMsNkJBQXdCLEdBQVcsRUFBRSxDQUFDO1FBQ3RDLHNCQUFpQixHQUFXLHNCQUFzQixDQUFDO1FBRW5ELGtCQUFhLEdBQStCLFNBQVMsQ0FBQztRQUN0RCxtQkFBYyxHQUErQixTQUFTLENBQUM7UUFFdkQsc0JBQWlCLEdBQVksSUFBSSxDQUFDO1FBQ2xDLGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBQzNCLHlCQUFvQixHQUFXLEVBQUUsQ0FBQztRQUNsQyx3QkFBbUIsR0FBVyxFQUFFLENBQUM7UUFDakMseUJBQW9CLEdBQVcsRUFBRSxDQUFDO1FBQ2xDLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUU5QixrQkFBYSxHQUFXLE9BQU8sQ0FBQztRQUNoQyxrQkFBYSxHQUFXLFFBQVEsQ0FBQztRQUNqQyxrQkFBYSxHQUFXLFNBQVMsQ0FBQztRQUNsQyxvQkFBZSxHQUFXLFNBQVMsQ0FBQztRQUNwQyxzQkFBaUIsR0FBVyxhQUFhLENBQUM7UUFDMUMsb0JBQWUsR0FBVyxVQUFVLENBQUM7S0FFdEM7OEdBN0NZLGdCQUFnQjtrSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSU9mZmljZTM2NVBrY2UgfSBmcm9tICcuL3BrY2Uuc2VydmljZSc7XHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcHBDb25maWdTZXJ2aWNlIHtcclxuXHJcbiAgQVBQX1RZUEUhOiBzdHJpbmc7XHJcblxyXG4gIEFQUF9VSUlEITogc3RyaW5nO1xyXG4gIEFMTE9XX0lOX0FQUF9OT1RJRklDQVRJT04hOiBib29sZWFuO1xyXG4gIFNIT1dfTE9HSU5fTk9USUZJQ0FUSU9OITogYm9vbGVhbjtcclxuXHJcbiAgQkFTRV9VUkwhOiBzdHJpbmc7XHJcbiAgQkFTRV9VUkxfRk9SX1NUQVRJU1RJQyE6IHN0cmluZztcclxuICBCQVNFX1VSTF9GT1JfQ09OVEVOVCE6IHN0cmluZzsgLy8gZm9yIG1pdWthZm90by5jb20gb25seVxyXG5cclxuXHJcbiAgR09MSVZFX1VSTCE6IHN0cmluZztcclxuICBERUJVR19FTkFCTEVEOiBib29sZWFuID0gZmFsc2U7IC8vIEhp4buDbiB0aOG7iyBt4buZdCBz4buRIGFsZXJ0IGvhu4MgY+G6oyB0cm9uZyBtw7RpIHRyxrDhu51uZyBQcm9kdWN0aW9uXHJcblxyXG4gIFVTRV9ERU1PX0FWQVRBUjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIExPR09fTE9HSU46IHN0cmluZyA9IFwiXCI7XHJcbiAgTE9HT19IRUFERVI6IHN0cmluZyA9IFwiXCI7XHJcbiAgSE9NRV9CQUNLR1JPVU5EX0lNQUdFOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBPQVVUSDJfT0lEQ19FTkFCTEVEOiBib29sZWFuID0gZmFsc2U7XHJcbiAgT0FVVEgyX09JRENfQ0xJRU5UX0lEOiBzdHJpbmcgPSBcIlwiO1xyXG4gIE9BVVRIMl9PSURDX0xPR0lOX1VSSTogc3RyaW5nID0gXCJcIjtcclxuICBPQVVUSDJfT0lEQ19SRURJUkVDVF9VUkk6IHN0cmluZyA9IFwiXCI7XHJcbiAgT0FVVEgyX09JRENfU0NPUEU6IHN0cmluZyA9IFwib3BlbmlkIHByb2ZpbGUgZW1haWxcIjtcclxuXHJcbiAgT0ZGSUNFMzY1X0RFVjogSU9mZmljZTM2NVBrY2UgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgT0ZGSUNFMzY1X1BST0Q6IElPZmZpY2UzNjVQa2NlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG5cclxuICBTQU1MMkFERlNfRU5BQkxFRDogYm9vbGVhbiA9IHRydWU7XHJcbiAgU0FNTDJBREZTX0lEUDogc3RyaW5nID0gXCJcIjtcclxuICBTQU1MMkFERlNfSURFTlRJRklFUjogc3RyaW5nID0gXCJcIjtcclxuICBTQU1MMkFERlNfV0FfU0lHTklOOiBzdHJpbmcgPSBcIlwiO1xyXG4gIFNBTUwyQURGU19XQV9TSUdOT1VUOiBzdHJpbmcgPSBcIlwiO1xyXG4gIFNBTUwyQURGU19XUkVQTFk6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIEhBTkdGSVJFX1BBVEg6IHN0cmluZyA9ICcvam9icyc7XHJcbiAgU1RBVElDX0ZPTERFUjogc3RyaW5nID0gJ3N0YXRpYyc7XHJcbiAgQVZBVEFSX0ZPTERFUjogc3RyaW5nID0gJ2F2YXRhcnMnO1xyXG4gIEFQUF9ERU1PX0ZPTERFUjogc3RyaW5nID0gJ2FwcGRlbW8nO1xyXG4gIEFUVEFDSE1FTlRfRk9MREVSOiBzdHJpbmcgPSAnYXR0YWNobWVudHMnO1xyXG4gIE5FV1NGRUVEX0ZPTERFUjogc3RyaW5nID0gJ25ld3NmZWVkJztcclxuICAgIFxyXG59XHJcbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { Injectable } from '@angular/core';
1
+ import { Injectable, isDevMode } from '@angular/core';
2
2
  import { BehaviorSubject, zip, catchError, of, filter } from 'rxjs';
3
3
  import { api } from 'alpha-global-constants';
4
4
  import * as i0 from "@angular/core";
@@ -13,8 +13,9 @@ import * as i8 from "./grpc.service";
13
13
  import * as i9 from "../libraries/core-form-control-seeker/seeker.service";
14
14
  import * as i10 from "../services/action.service";
15
15
  import * as i11 from "./developer-validation.service";
16
+ import * as i12 from "./pkce.service";
16
17
  export class AppInitializationService {
17
- constructor(authService, mls, layoutService, organizationService, routingService, appConfigService, appService, grpcService, seekerService, actionService, developerValidationService) {
18
+ constructor(authService, mls, layoutService, organizationService, routingService, appConfigService, appService, grpcService, seekerService, actionService, developerValidationService, pkceService) {
18
19
  this.authService = authService;
19
20
  this.mls = mls;
20
21
  this.layoutService = layoutService;
@@ -26,6 +27,7 @@ export class AppInitializationService {
26
27
  this.seekerService = seekerService;
27
28
  this.actionService = actionService;
28
29
  this.developerValidationService = developerValidationService;
30
+ this.pkceService = pkceService;
29
31
  this.initializing$ = new BehaviorSubject(true);
30
32
  this.ssoProcessing$ = new BehaviorSubject(true);
31
33
  this.subscriptions = [];
@@ -49,7 +51,7 @@ export class AppInitializationService {
49
51
  if (window.opener && window.opener.globalPopupId) {
50
52
  //alert(window.opener.globalPopupId);
51
53
  }
52
- fetch('../../assets/app.config.json').then(res => res.json()).then(({ APP_TYPE, APP_UIID, ALLOW_IN_APP_NOTIFICATION, SHOW_LOGIN_NOTIFICATION, BASE_URL, BASE_URL_FOR_STATISTIC, GOLIVE_URL, DEBUG_ENABLED, USE_DEMO_AVATAR, LOGO_LOGIN, LOGO_HEADER, HOME_BACKGROUND_IMAGE, OAUTH2_OIDC_ENABLED, OAUTH2_OIDC_CLIENT_ID, OAUTH2_OIDC_LOGIN_URI, OAUTH2_OIDC_REDIRECT_URI, OAUTH2_OIDC_SCOPE, SAML2ADFS_ENABLED, SAML2ADFS_IDP, SAML2ADFS_IDENTIFIER, SAML2ADFS_WA_SIGNIN, SAML2ADFS_WA_SIGNOUT, SAML2ADFS_WREPLY, HANGFIRE_PATH, STATIC_FOLDER, }) => {
54
+ fetch('../../assets/app.config.json').then(res => res.json()).then(({ APP_TYPE, APP_UIID, ALLOW_IN_APP_NOTIFICATION, SHOW_LOGIN_NOTIFICATION, BASE_URL, BASE_URL_FOR_STATISTIC, GOLIVE_URL, DEBUG_ENABLED, USE_DEMO_AVATAR, LOGO_LOGIN, LOGO_HEADER, HOME_BACKGROUND_IMAGE, OAUTH2_OIDC_ENABLED, OAUTH2_OIDC_CLIENT_ID, OAUTH2_OIDC_LOGIN_URI, OAUTH2_OIDC_REDIRECT_URI, OAUTH2_OIDC_SCOPE, OFFICE365_DEV, OFFICE365_PROD, SAML2ADFS_ENABLED, SAML2ADFS_IDP, SAML2ADFS_IDENTIFIER, SAML2ADFS_WA_SIGNIN, SAML2ADFS_WA_SIGNOUT, SAML2ADFS_WREPLY, HANGFIRE_PATH, STATIC_FOLDER, }) => {
53
55
  this.appConfigService.APP_TYPE = APP_TYPE;
54
56
  this.appConfigService.APP_UIID = APP_UIID;
55
57
  this.appConfigService.ALLOW_IN_APP_NOTIFICATION = ALLOW_IN_APP_NOTIFICATION;
@@ -67,6 +69,22 @@ export class AppInitializationService {
67
69
  this.appConfigService.OAUTH2_OIDC_LOGIN_URI = OAUTH2_OIDC_LOGIN_URI;
68
70
  this.appConfigService.OAUTH2_OIDC_REDIRECT_URI = OAUTH2_OIDC_REDIRECT_URI;
69
71
  this.appConfigService.OAUTH2_OIDC_SCOPE = OAUTH2_OIDC_SCOPE;
72
+ this.appConfigService.OFFICE365_DEV = OFFICE365_DEV;
73
+ this.appConfigService.OFFICE365_PROD = OFFICE365_PROD;
74
+ if (isDevMode()) {
75
+ this.pkceService.isEnabled = this.appConfigService.OFFICE365_DEV?.IS_ENABLED;
76
+ this.pkceService.authorizationEndpoint = this.appConfigService.OFFICE365_DEV?.AUTHORIZATION_ENDPOINT;
77
+ this.pkceService.clientId = this.appConfigService.OFFICE365_DEV?.CLIENT_ID;
78
+ this.pkceService.redirectUri = this.appConfigService.OFFICE365_DEV?.REDIRECT_URI;
79
+ this.pkceService.tokenPostEndpoint = this.appConfigService.OFFICE365_DEV?.TOKEN_POST_ENDPOINT;
80
+ }
81
+ else {
82
+ this.pkceService.isEnabled = this.appConfigService.OFFICE365_PROD?.IS_ENABLED;
83
+ this.pkceService.authorizationEndpoint = this.appConfigService.OFFICE365_PROD?.AUTHORIZATION_ENDPOINT;
84
+ this.pkceService.clientId = this.appConfigService.OFFICE365_PROD?.CLIENT_ID;
85
+ this.pkceService.redirectUri = this.appConfigService.OFFICE365_PROD?.REDIRECT_URI;
86
+ this.pkceService.tokenPostEndpoint = this.appConfigService.OFFICE365_PROD?.TOKEN_POST_ENDPOINT;
87
+ }
70
88
  this.appConfigService.SAML2ADFS_ENABLED = SAML2ADFS_ENABLED;
71
89
  this.appConfigService.SAML2ADFS_IDP = SAML2ADFS_IDP;
72
90
  this.appConfigService.SAML2ADFS_IDENTIFIER = SAML2ADFS_IDENTIFIER;
@@ -271,7 +289,7 @@ export class AppInitializationService {
271
289
  ngOnDestroy() {
272
290
  this.subscriptions.map(x => x?.unsubscribe());
273
291
  }
274
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AppInitializationService, deps: [{ token: i1.AuthService }, { token: i2.MultiLanguageService }, { token: i3.LayoutService }, { token: i4.OrganizationService }, { token: i5.RoutingService }, { token: i6.AppConfigService }, { token: i7.AppService }, { token: i8.GrpcService }, { token: i9.SeekerService }, { token: i10.ActionService }, { token: i11.DeveloperValidationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
292
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AppInitializationService, deps: [{ token: i1.AuthService }, { token: i2.MultiLanguageService }, { token: i3.LayoutService }, { token: i4.OrganizationService }, { token: i5.RoutingService }, { token: i6.AppConfigService }, { token: i7.AppService }, { token: i8.GrpcService }, { token: i9.SeekerService }, { token: i10.ActionService }, { token: i11.DeveloperValidationService }, { token: i12.PkceService }], target: i0.ɵɵFactoryTarget.Injectable }); }
275
293
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AppInitializationService, providedIn: 'root' }); }
276
294
  }
277
295
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AppInitializationService, decorators: [{
@@ -279,5 +297,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
279
297
  args: [{
280
298
  providedIn: 'root'
281
299
  }]
282
- }], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.MultiLanguageService }, { type: i3.LayoutService }, { type: i4.OrganizationService }, { type: i5.RoutingService }, { type: i6.AppConfigService }, { type: i7.AppService }, { type: i8.GrpcService }, { type: i9.SeekerService }, { type: i10.ActionService }, { type: i11.DeveloperValidationService }] });
283
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWluaXRpYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9zZXJ2aWNlcy9hcHAtaW5pdGlhbGl6YXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUF3QixNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFnQixNQUFNLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFXOUYsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7Ozs7O0FBVzdDLE1BQU0sT0FBTyx3QkFBd0I7SUFhbkMsWUFDVSxXQUF3QixFQUN4QixHQUF5QixFQUN6QixhQUE0QixFQUM1QixtQkFBd0MsRUFDeEMsY0FBOEIsRUFDOUIsZ0JBQWtDLEVBQ2xDLFVBQXNCLEVBQ3RCLFdBQXdCLEVBQ3hCLGFBQTRCLEVBQzVCLGFBQTRCLEVBQzVCLDBCQUFzRDtRQVZ0RCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixRQUFHLEdBQUgsR0FBRyxDQUFzQjtRQUN6QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUE0QjtRQXRCaEUsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsQ0FB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TTs7MkZBRVAsd0JBQXdCO2tCQUhwQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGlzRGV2TW9kZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgemlwLCBjYXRjaEVycm9yLCBvZiwgU3Vic2NyaXB0aW9uLCBmaWx0ZXIsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9tdWx0aS1sYW5ndWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4vbGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9hcHAtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJRm9ybWF0ZWRSZXNwb25zZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSUZvcm1hdGVkUmVzcG9uc2UnO1xyXG5pbXBvcnQgeyBJQXV0aERhdGEgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lBdXRoRGF0YSc7XHJcbmltcG9ydCB7IFJvdXRpbmdTZXJ2aWNlIH0gZnJvbSAnLi9yb3V0aW5nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPcmdhbml6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9vcmdhbml6YXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IElFdmVyeVRyZWVTdGF0dXMgfSBmcm9tICcuLi9saWJyYXJpZXMvc2VydmljZXMvcmVjdXJzaXZlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBTZXJ2aWNlIH0gZnJvbSAnLi9hcHAuc2VydmljZSc7XHJcbmltcG9ydCB7IGFwaSB9IGZyb20gJ2FscGhhLWdsb2JhbC1jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBHcnBjU2VydmljZSB9IGZyb20gJy4vZ3JwYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Vla2VyU2VydmljZSB9IGZyb20gJy4uL2xpYnJhcmllcy9jb3JlLWZvcm0tY29udHJvbC1zZWVrZXIvc2Vla2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJU3lzQWN0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbnRpdGllcy9JU3lzQWN0aW9uJztcclxuaW1wb3J0IHsgSUNvcmVCdXR0b25WTlMgfSBmcm9tICcuLi9saWJyYXJpZXMvY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9JQ29yZUJ1dHRvblZOUyc7XHJcbmltcG9ydCB7IERldmVsb3BlclZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9kZXZlbG9wZXItdmFsaWRhdGlvbi5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcEluaXRpYWxpemF0aW9uU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIGluaXRpYWxpemluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xyXG4gIHNzb1Byb2Nlc3NpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBwcmltYXJ5SW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzdG9yZVNlc3Npb25PazogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwZW5kaW5nQXV0aERhdGEkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJQXV0aERhdGEgfCBudWxsPihudWxsKTtcclxuXHJcbiAgc3NvRmFpbGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG9yZ2FuaXphdGlvblNlcnZpY2U6IE9yZ2FuaXphdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRpbmdTZXJ2aWNlOiBSb3V0aW5nU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBwU2VydmljZTogQXBwU2VydmljZSxcclxuICAgIHByaXZhdGUgZ3JwY1NlcnZpY2U6IEdycGNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzZWVrZXJTZXJ2aWNlOiBTZWVrZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhY3Rpb25TZXJ2aWNlOiBBY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkZXZlbG9wZXJWYWxpZGF0aW9uU2VydmljZTogRGV2ZWxvcGVyVmFsaWRhdGlvblNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuc2Vla2VyU2VydmljZS5zb3VyY2VTcGFjZUhlaWdodCQubmV4dCh3aW5kb3cuaW5uZXJIZWlnaHQgLSAxMDApO1xyXG4gIH1cclxuXHJcbiAgYXBwSW5pdGlhbGl6ZSgpOiB2b2lkIHtcclxuXHJcbiAgICB0cnkge1xyXG5cclxuICAgICAgaWYgKCEhbG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgICAgY29uc3QgbGFuZyA9IChsb2NhbFN0b3JhZ2UgYXMgU3RvcmFnZSkuZ2V0SXRlbShcImxhbmdcIik7XHJcbiAgICAgICAgaWYgKCEhbGFuZykge1xyXG4gICAgICAgICAgdGhpcy5tbHMubGFuZyQubmV4dChsYW5nKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5tbHMubGFuZyQubmV4dChcImVuXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHdpbmRvdy5vcGVuZXIgJiYgd2luZG93Lm9wZW5lci5nbG9iYWxQb3B1cElkKSB7XHJcbiAgICAgICAgLy9hbGVydCh3aW5kb3cub3BlbmVyLmdsb2JhbFBvcHVwSWQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmZXRjaCgnLi4vLi4vYXNzZXRzL2FwcC5jb25maWcuanNvbicpLnRoZW4ocmVzID0+IHJlcy5qc29uKCkpLnRoZW4oKHtcclxuXHJcbiAgICAgICAgQVBQX1RZUEUsXHJcbiAgICAgICAgQVBQX1VJSUQsXHJcbiAgICAgICAgQUxMT1dfSU5fQVBQX05PVElGSUNBVElPTixcclxuICAgICAgICBTSE9XX0xPR0lOX05PVElGSUNBVElPTixcclxuXHJcbiAgICAgICAgQkFTRV9VUkwsXHJcbiAgICAgICAgQkFTRV9VUkxfRk9SX1NUQVRJU1RJQyxcclxuICAgICAgICBHT0xJVkVfVVJMLFxyXG4gICAgICAgIERFQlVHX0VOQUJMRUQsXHJcblxyXG4gICAgICAgIFVTRV9ERU1PX0FWQVRBUixcclxuXHJcbiAgICAgICAgTE9HT19MT0dJTixcclxuICAgICAgICBMT0dPX0hFQURFUixcclxuICAgICAgICBIT01FX0JBQ0tHUk9VTkRfSU1BR0UsXHJcblxyXG4gICAgICAgIE9BVVRIMl9PSURDX0VOQUJMRUQsXHJcbiAgICAgICAgT0FVVEgyX09JRENfQ0xJRU5UX0lELFxyXG4gICAgICAgIE9BVVRIMl9PSURDX0xPR0lOX1VSSSxcclxuICAgICAgICBPQVVUSDJfT0lEQ19SRURJUkVDVF9VUkksXHJcbiAgICAgICAgT0FVVEgyX09JRENfU0NPUEUsXHJcblxyXG4gICAgICAgIFNBTUwyQURGU19FTkFCTEVELFxyXG4gICAgICAgIFNBTUwyQURGU19JRFAsXHJcbiAgICAgICAgU0FNTDJBREZTX0lERU5USUZJRVIsXHJcbiAgICAgICAgU0FNTDJBREZTX1dBX1NJR05JTixcclxuICAgICAgICBTQU1MMkFERlNfV0FfU0lHTk9VVCxcclxuICAgICAgICBTQU1MMkFERlNfV1JFUExZLFxyXG5cclxuICAgICAgICBIQU5HRklSRV9QQVRILFxyXG4gICAgICAgIFNUQVRJQ19GT0xERVIsXHJcblxyXG4gICAgICB9KSA9PiB7XHJcblxyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5BUFBfVFlQRSA9IEFQUF9UWVBFO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5BUFBfVUlJRCA9IEFQUF9VSUlEO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5BTExPV19JTl9BUFBfTk9USUZJQ0FUSU9OID0gQUxMT1dfSU5fQVBQX05PVElGSUNBVElPTjtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuU0hPV19MT0dJTl9OT1RJRklDQVRJT04gPSBTSE9XX0xPR0lOX05PVElGSUNBVElPTjtcclxuXHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkJBU0VfVVJMID0gQkFTRV9VUkw7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkJBU0VfVVJMX0ZPUl9TVEFUSVNUSUMgPSBCQVNFX1VSTF9GT1JfU1RBVElTVElDO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5HT0xJVkVfVVJMID0gR09MSVZFX1VSTDtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuREVCVUdfRU5BQkxFRCA9IERFQlVHX0VOQUJMRUQ7XHJcblxyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5VU0VfREVNT19BVkFUQVIgPSBVU0VfREVNT19BVkFUQVI7XHJcblxyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5MT0dPX0xPR0lOID0gTE9HT19MT0dJTjtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuTE9HT19IRUFERVIgPSBMT0dPX0hFQURFUjtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuSE9NRV9CQUNLR1JPVU5EX0lNQUdFID0gSE9NRV9CQUNLR1JPVU5EX0lNQUdFO1xyXG5cclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuT0FVVEgyX09JRENfRU5BQkxFRCA9IE9BVVRIMl9PSURDX0VOQUJMRUQ7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLk9BVVRIMl9PSURDX0NMSUVOVF9JRCA9IE9BVVRIMl9PSURDX0NMSUVOVF9JRDtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuT0FVVEgyX09JRENfTE9HSU5fVVJJID0gT0FVVEgyX09JRENfTE9HSU5fVVJJO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5PQVVUSDJfT0lEQ19SRURJUkVDVF9VUkkgPSBPQVVUSDJfT0lEQ19SRURJUkVDVF9VUkk7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLk9BVVRIMl9PSURDX1NDT1BFID0gT0FVVEgyX09JRENfU0NPUEU7XHJcblxyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5TQU1MMkFERlNfRU5BQkxFRCA9IFNBTUwyQURGU19FTkFCTEVEO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5TQU1MMkFERlNfSURQID0gU0FNTDJBREZTX0lEUDtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuU0FNTDJBREZTX0lERU5USUZJRVIgPSBTQU1MMkFERlNfSURFTlRJRklFUjtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuU0FNTDJBREZTX1dBX1NJR05JTiA9IFNBTUwyQURGU19XQV9TSUdOSU47XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLlNBTUwyQURGU19XQV9TSUdOT1VUID0gU0FNTDJBREZTX1dBX1NJR05PVVQ7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLlNBTUwyQURGU19XUkVQTFkgPSBTQU1MMkFERlNfV1JFUExZO1xyXG5cclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuSEFOR0ZJUkVfUEFUSCA9IEhBTkdGSVJFX1BBVEg7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLlNUQVRJQ19GT0xERVIgPSBTVEFUSUNfRk9MREVSO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5BVkFUQVJfRk9MREVSID0gXCJhdmF0YXJzXCI7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkFQUF9ERU1PX0ZPTERFUiA9IFwiYXBwZGVtb1wiO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5BVFRBQ0hNRU5UX0ZPTERFUiA9IFwiYXR0YWNobWVudHNcIjtcclxuXHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0gKG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpKS5zZWFyY2hQYXJhbXM7XHJcbiAgICAgICAgY29uc3QgbG9jYWwgPSBwYXJhbXMuZ2V0KFwibG9jYWxcIik7XHJcblxyXG4gICAgICAgIGlmIChTQU1MMkFERlNfRU5BQkxFRCAmJiAhbG9jYWwpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5zc29GYWlsZWQpIHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgIGNvbnN0IHRva2VuID0gcGFyYW1zLmdldChcInRva2VuXCIpO1xyXG4gICAgICAgICAgICAgIGlmICh0b2tlbiAhPT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG5cclxuICAgICAgICAgICAgICAgICAgdGhpcy5hcHBTZXJ2aWNlLmdldChhcGkuU1lTX1NIT1JUX0xJVkVEX1RPS0VOX0xPR0lOICsgXCI/dG9rZW49XCIgKyB0b2tlbikuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDAgJiYgeC5ib2R5Py5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoYm9keS5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nQXV0aERhdGEkLm5leHQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmJvZHkuaW5uZXJCb2R5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2luVGltZTogbmV3IERhdGUoKS5nZXRUaW1lKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zc29GYWlsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNzb1Byb2Nlc3NpbmckLm5leHQoZmFsc2UpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmICghIWxvY2FsU3RvcmFnZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsZWZ0YmFyUmVkdWNlZFN0cmluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsZWZ0YmFyUmVkdWNlZCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsZWZ0YmFyUmVkdWNlZCA9IEpTT04ucGFyc2UobGVmdGJhclJlZHVjZWRTdHJpbmchKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxheW91dFNlcnZpY2UubGVmdGJhclJlZHVjZWQkLm5leHQoISFsZWZ0YmFyUmVkdWNlZCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByb3V0aW5nSGlzdG9yeVN0cmluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyb3V0aW5nSGlzdG9yeScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFyb3V0aW5nSGlzdG9yeVN0cmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRpbmdIaXN0b3J5ID0gSlNPTi5wYXJzZShyb3V0aW5nSGlzdG9yeVN0cmluZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5yb3V0aW5nSGlzdG9yeSQubmV4dChyb3V0aW5nSGlzdG9yeSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvcmVPcmdUcmVlU3RhdHVzU3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjb3JlT3JnVHJlZVN0YXR1c1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvcmVPcmdUcmVlU3RhdHVzU3RyaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2F2ZWRPYmplY3Q6IElFdmVyeVRyZWVTdGF0dXMgPSBKU09OLnBhcnNlKGNvcmVPcmdUcmVlU3RhdHVzU3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC5uZXh0KHNhdmVkT2JqZWN0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0sIDIwMClcclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIClcclxuXHJcblxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gQUxXQVlTIFJFRElSRUNUIFRPIFRIRSBBTkdVTEFSIEFQUExJQ0FUSU9OIExPR0lOIFBBR0UgSUYgTk8gU0VTU0lPTiBGT1VORCAoP2xvY2FsPTEpXHJcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAke3RoaXMuYXBwQ29uZmlnU2VydmljZS5TQU1MMkFERlNfSURFTlRJRklFUn0/bG9jYWw9MWA7XHJcblxyXG4gICAgICAgICAgICAgICAgLypcclxuXHJcbiAgICAgICAgICAgICAgICAvL0lGIFRIRSBBTkdVTEFSIEFQUExJQ0FUSU9OIExPR0lOIFBBR0UgSVMgTk9UIE1BTkRBVE9SWSA9PiBDQUxMIFNBTUwyLjAgSWRQXHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgY29kZVZlcmlmaWVyID0gdGhpcy5hdXRoU2VydmljZS5nZW5lcmF0ZVJhbmRvbUNvZGVWZXJpZmllcig0Myk7XHJcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImNvZGVWZXJpZmllclwiLCBjb2RlVmVyaWZpZXIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZW5lcmF0ZUNvZGVDaGFsbGVuZ2VGcm9tVmVyaWZpZXIoY29kZVZlcmlmaWVyKS50aGVuKGNvZGVDaGFsbGVuZ2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBhdXRob3JpemF0aW9uVXJsID0gYCR7dGhpcy5hcHBDb25maWdTZXJ2aWNlLlNBTUwyQURGU19JRFB9P2AgK1xyXG4gICAgICAgICAgICAgICAgICAgIGB3dHJlYWxtPSR7dGhpcy5hcHBDb25maWdTZXJ2aWNlLlNBTUwyQURGU19JREVOVElGSUVSfWAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGAmd2E9JHt0aGlzLmFwcENvbmZpZ1NlcnZpY2UuU0FNTDJBREZTX1dBX1NJR05JTiB8fCAnd3NpZ25pbjEuMCd9YCArIFxyXG4gICAgICAgICAgICAgICAgICAgIGAmd3JlcGx5PSR7dGhpcy5hcHBDb25maWdTZXJ2aWNlLkJBU0VfVVJMfSR7dGhpcy5hcHBDb25maWdTZXJ2aWNlLlNBTUwyQURGU19XUkVQTFl9YCArIFxyXG4gICAgICAgICAgICAgICAgICAgIGAmd2N0eD0ke2NvZGVDaGFsbGVuZ2V9YFxyXG4gICAgICAgICAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBhbGVydChhdXRob3JpemF0aW9uVXJsKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBhdXRob3JpemF0aW9uVXJsO1xyXG5cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgKi9cclxuXHJcblxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zc29Qcm9jZXNzaW5nJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBib2R5MTogSUZvcm1hdGVkUmVzcG9uc2U7XHJcbiAgICAgICAgbGV0IGJvZHkyOiBJRm9ybWF0ZWRSZXNwb25zZTtcclxuICAgICAgICBsZXQgYm9keTM6IElGb3JtYXRlZFJlc3BvbnNlO1xyXG4gICAgICAgIGxldCBib2R5NDogSUZvcm1hdGVkUmVzcG9uc2U7XHJcblxyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgdGhpcy5zc29Qcm9jZXNzaW5nJC5waXBlKFxyXG4gICAgICAgICAgICBmaWx0ZXIoeCA9PiAheClcclxuICAgICAgICAgICkuc3Vic2NyaWJlKF8gPT4ge1xyXG5cclxuICAgICAgICAgICAgbGV0IGFwcFR5cGVOdW1iZXI6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgc3dpdGNoICh0aGlzLmFwcENvbmZpZ1NlcnZpY2UuQVBQX1RZUEUpIHtcclxuICAgICAgICAgICAgICBjYXNlIFwiV0VCQVBQXCI6XHJcbiAgICAgICAgICAgICAgICBhcHBUeXBlTnVtYmVyID0gMTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGNhc2UgXCJQT1JUQUxcIjpcclxuICAgICAgICAgICAgICAgIGFwcFR5cGVOdW1iZXIgPSAyO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGFwcFR5cGVOdW1iZXIgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgemlwKFtcclxuICAgICAgICAgICAgICAgIHRoaXMubWxzLnJlYWRBbGxNaW5pKCksXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLnJlYWRBbGxGdW5jdGlvbldpdGhBbGxBY3Rpb25zKCksXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLmdldElnbm9yZVBhdGhzKCksXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFwcFNlcnZpY2UuZ2V0KGFwaS5TWVNfQUNUSU9OX1JFQURfQUxMKVxyXG4gICAgICAgICAgICAgIF0pLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKHZhbCA9PiBvZihgVGhlIGFwcCBjYXVnaHQ6ICR7dmFsfWApKVxyXG4gICAgICAgICAgICAgICkuc3Vic2NyaWJlKHJlc3BvbnNlcyA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJhcHBJbml0aWFsaXplKCkgemlwKCkgZG9uZVwiKVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHgxID0gcmVzcG9uc2VzWzBdO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJ4MVwiLCB4MSlcclxuICAgICAgICAgICAgICAgIGlmICh4MS5vayAmJiB4MS5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICBib2R5MSA9IHgxLmJvZHlcclxuICAgICAgICAgICAgICAgICAgaWYgKGJvZHkxLnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWxzLmRhdGEkLm5leHQoYm9keTEuaW5uZXJCb2R5KTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHgyID0gcmVzcG9uc2VzWzFdO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJ4MlwiLCB4MilcclxuICAgICAgICAgICAgICAgIGlmICh4Mi5vayAmJiB4Mi5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICBib2R5MiA9IHgyLmJvZHlcclxuICAgICAgICAgICAgICAgICAgaWYgKGJvZHkyLnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuZnVsbEZ1bmN0aW9ucyQubmV4dChib2R5Mi5pbm5lckJvZHkpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgeDMgPSByZXNwb25zZXNbMl07XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIngzXCIsIHgzKVxyXG4gICAgICAgICAgICAgICAgaWYgKHgzLm9rICYmIHgzLnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIGJvZHkzID0geDMuYm9keVxyXG4gICAgICAgICAgICAgICAgICBpZiAoYm9keTMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5pZ25vcmVkUGF0aHMkLm5leHQoYm9keTMuaW5uZXJCb2R5KTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHg0ID0gcmVzcG9uc2VzWzNdO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJ4NFwiLCB4NClcclxuICAgICAgICAgICAgICAgIGlmICh4NC5vayAmJiB4NC5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICBib2R5NCA9IHg0LmJvZHlcclxuICAgICAgICAgICAgICAgICAgaWYgKGJvZHk0LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGJvZHk0LmlubmVyQm9keS5mb3JFYWNoKChhY3Rpb246IElTeXNBY3Rpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aW9uU2VydmljZS5hY3Rpb25NYXAuc2V0KGFjdGlvbi5jb2RlLCBhY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyBjb25zdCB4NCA9IHJlc3BvbnNlc1szXTtcclxuICAgICAgICAgICAgICAgIC8vIGlmICh4NC5vayAmJiB4NC5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgLy8gICBib2R5NCA9IHg0LmJvZHlcclxuICAgICAgICAgICAgICAgIC8vICAgaWYgKGJvZHk0LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgLy8gICAgIHRoaXMucm91dGluZ1NlcnZpY2UucG9ydGFsUm91dGVzJC5uZXh0KGJvZHk0LmlubmVyQm9keSk7XHJcbiAgICAgICAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoYm9keTE/LnN0YXR1c0NvZGUgPT09IDIwMCAmJiBib2R5Mj8uc3RhdHVzQ29kZSA9PT0gMjAwICYmIGJvZHkzPy5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJpbWFyeUluaXRpYWxpemVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgIGlmICghIU9BVVRIMl9PSURDX0VOQUJMRUQgJiYgISF0aGlzLnBlbmRpbmdBdXRoRGF0YSQudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JlU2Vzc2lvbk9rID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLm5leHQodGhpcy5wZW5kaW5nQXV0aERhdGEkLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBlbmRpbmdBdXRoRGF0YSQubmV4dChudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhlbnRpY2F0ZWQkLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXppbmckLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UudHJ5UmVzdG9yZVNlc3Npb24oKVxyXG4gICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSh4ID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDAgJiYgeC5ib2R5Py5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib2R5OiBJRm9ybWF0ZWRSZXNwb25zZSA9IHguYm9keVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3QXV0aERhdGE6IElBdXRoRGF0YSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYm9keS5pbm5lckJvZHksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2luVGltZTogbmV3IERhdGUoKS5nZXRUaW1lKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmVTZXNzaW9uT2sgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5kYXRhJC5uZXh0KG5ld0F1dGhEYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIWxvY2FsU3RvcmFnZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGVmdGJhclJlZHVjZWRTdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGVmdGJhclJlZHVjZWQnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlZnRiYXJSZWR1Y2VkID0gSlNPTi5wYXJzZShsZWZ0YmFyUmVkdWNlZFN0cmluZyEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxheW91dFNlcnZpY2UubGVmdGJhclJlZHVjZWQkLm5leHQoISFsZWZ0YmFyUmVkdWNlZCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm91dGluZ0hpc3RvcnlTdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncm91dGluZ0hpc3RvcnknKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIXJvdXRpbmdIaXN0b3J5U3RyaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRpbmdIaXN0b3J5ID0gSlNPTi5wYXJzZShyb3V0aW5nSGlzdG9yeVN0cmluZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2Uucm91dGluZ0hpc3RvcnkkLm5leHQocm91dGluZ0hpc3RvcnkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvcmVPcmdUcmVlU3RhdHVzU3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjb3JlT3JnVHJlZVN0YXR1c1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb3JlT3JnVHJlZVN0YXR1c1N0cmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzYXZlZE9iamVjdDogSUV2ZXJ5VHJlZVN0YXR1cyA9IEpTT04ucGFyc2UoY29yZU9yZ1RyZWVTdGF0dXNTdHJpbmcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9yZ2FuaXphdGlvblNlcnZpY2Uuc3RhdHVzJC5uZXh0KHNhdmVkT2JqZWN0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXppbmckLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAyMDApXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcblxyXG5cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG5cclxuICAgICAgfSkuY2F0Y2goZSA9PiBjb25zb2xlLmxvZyhcImZldGNoIGFwcC5jb25maWcuanNvbiBlcnJvclwiLCBlKSlcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgY29uc29sZS5sb2coXCJhcHBJbml0aWFsaXplKCkgemlwKCkgZXJyb3I6IFwiLCBlKVxyXG4gICAgfSBmaW5hbGx5IHtcclxuICAgICAgY29uc29sZS5sb2coXCJmaW5hbGx5XCIpXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMubWFwKHggPT4geD8udW5zdWJzY3JpYmUoKSlcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
300
+ }], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.MultiLanguageService }, { type: i3.LayoutService }, { type: i4.OrganizationService }, { type: i5.RoutingService }, { type: i6.AppConfigService }, { type: i7.AppService }, { type: i8.GrpcService }, { type: i9.SeekerService }, { type: i10.ActionService }, { type: i11.DeveloperValidationService }, { type: i12.PkceService }] });
301
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWluaXRpYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9zZXJ2aWNlcy9hcHAtaW5pdGlhbGl6YXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFnQixNQUFNLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFXOUYsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7Ozs7OztBQVk3QyxNQUFNLE9BQU8sd0JBQXdCO0lBYW5DLFlBQ1UsV0FBd0IsRUFDeEIsR0FBeUIsRUFDekIsYUFBNEIsRUFDNUIsbUJBQXdDLEVBQ3hDLGNBQThCLEVBQzlCLGdCQUFrQyxFQUNsQyxVQUFzQixFQUN0QixXQUF3QixFQUN4QixhQUE0QixFQUM1QixhQUE0QixFQUM1QiwwQkFBc0QsRUFDdEQsV0FBd0I7UUFYeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsUUFBRyxHQUFILEdBQUcsQ0FBc0I7UUFDekIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBNEI7UUFDdEQsZ0JBQVcsR0FBWCxXQUFXLENB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YUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFBO0lBQy9DLENBQUM7OEdBdFhVLHdCQUF3QjtrSEFBeEIsd0JBQXdCLGNBRnZCLE1BQU07OzJGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpc0Rldk1vZGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIHppcCwgY2F0Y2hFcnJvciwgb2YsIFN1YnNjcmlwdGlvbiwgZmlsdGVyLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4vbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuL2xheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4vYXBwLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSUZvcm1hdGVkUmVzcG9uc2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lGb3JtYXRlZFJlc3BvbnNlJztcclxuaW1wb3J0IHsgSUF1dGhEYXRhIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JQXV0aERhdGEnO1xyXG5pbXBvcnQgeyBSb3V0aW5nU2VydmljZSB9IGZyb20gJy4vcm91dGluZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT3JnYW5pemF0aW9uU2VydmljZSB9IGZyb20gJy4vb3JnYW5pemF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJRXZlcnlUcmVlU3RhdHVzIH0gZnJvbSAnLi4vbGlicmFyaWVzL3NlcnZpY2VzL3JlY3Vyc2l2ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBwU2VydmljZSB9IGZyb20gJy4vYXBwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBhcGkgfSBmcm9tICdhbHBoYS1nbG9iYWwtY29uc3RhbnRzJztcclxuaW1wb3J0IHsgR3JwY1NlcnZpY2UgfSBmcm9tICcuL2dycGMuc2VydmljZSc7XHJcbmltcG9ydCB7IFNlZWtlclNlcnZpY2UgfSBmcm9tICcuLi9saWJyYXJpZXMvY29yZS1mb3JtLWNvbnRyb2wtc2Vla2VyL3NlZWtlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWN0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSVN5c0FjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvZW50aXRpZXMvSVN5c0FjdGlvbic7XHJcbmltcG9ydCB7IElDb3JlQnV0dG9uVk5TIH0gZnJvbSAnLi4vbGlicmFyaWVzL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvSUNvcmVCdXR0b25WTlMnO1xyXG5pbXBvcnQgeyBEZXZlbG9wZXJWYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4vZGV2ZWxvcGVyLXZhbGlkYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFBrY2VTZXJ2aWNlIH0gZnJvbSAnLi9wa2NlLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwSW5pdGlhbGl6YXRpb25TZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHJcbiAgaW5pdGlhbGl6aW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgc3NvUHJvY2Vzc2luZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xyXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIHByaW1hcnlJbml0aWFsaXplZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHN0b3JlU2Vzc2lvbk9rOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHBlbmRpbmdBdXRoRGF0YSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElBdXRoRGF0YSB8IG51bGw+KG51bGwpO1xyXG5cclxuICBzc29GYWlsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuICAgIHByaXZhdGUgb3JnYW5pemF0aW9uU2VydmljZTogT3JnYW5pemF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGluZ1NlcnZpY2U6IFJvdXRpbmdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBDb25maWdTZXJ2aWNlOiBBcHBDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBTZXJ2aWNlOiBBcHBTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBncnBjU2VydmljZTogR3JwY1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNlZWtlclNlcnZpY2U6IFNlZWtlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFjdGlvblNlcnZpY2U6IEFjdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRldmVsb3BlclZhbGlkYXRpb25TZXJ2aWNlOiBEZXZlbG9wZXJWYWxpZGF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgcGtjZVNlcnZpY2U6IFBrY2VTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgdGhpcy5zZWVrZXJTZXJ2aWNlLnNvdXJjZVNwYWNlSGVpZ2h0JC5uZXh0KHdpbmRvdy5pbm5lckhlaWdodCAtIDEwMCk7XHJcbiAgfVxyXG5cclxuICBhcHBJbml0aWFsaXplKCk6IHZvaWQge1xyXG5cclxuICAgIHRyeSB7XHJcblxyXG4gICAgICBpZiAoISFsb2NhbFN0b3JhZ2UpIHtcclxuICAgICAgICBjb25zdCBsYW5nID0gKGxvY2FsU3RvcmFnZSBhcyBTdG9yYWdlKS5nZXRJdGVtKFwibGFuZ1wiKTtcclxuICAgICAgICBpZiAoISFsYW5nKSB7XHJcbiAgICAgICAgICB0aGlzLm1scy5sYW5nJC5uZXh0KGxhbmcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm1scy5sYW5nJC5uZXh0KFwiZW5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAod2luZG93Lm9wZW5lciAmJiB3aW5kb3cub3BlbmVyLmdsb2JhbFBvcHVwSWQpIHtcclxuICAgICAgICAvL2FsZXJ0KHdpbmRvdy5vcGVuZXIuZ2xvYmFsUG9wdXBJZCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGZldGNoKCcuLi8uLi9hc3NldHMvYXBwLmNvbmZpZy5qc29uJykudGhlbihyZXMgPT4gcmVzLmpzb24oKSkudGhlbigoe1xyXG5cclxuICAgICAgICBBUFBfVFlQRSxcclxuICAgICAgICBBUFBfVUlJRCxcclxuICAgICAgICBBTExPV19JTl9BUFBfTk9USUZJQ0FUSU9OLFxyXG4gICAgICAgIFNIT1dfTE9HSU5fTk9USUZJQ0FUSU9OLFxyXG5cclxuICAgICAgICBCQVNFX1VSTCxcclxuICAgICAgICBCQVNFX1VSTF9GT1JfU1RBVElTVElDLFxyXG4gICAgICAgIEdPTElWRV9VUkwsXHJcbiAgICAgICAgREVCVUdfRU5BQkxFRCxcclxuXHJcbiAgICAgICAgVVNFX0RFTU9fQVZBVEFSLFxyXG5cclxuICAgICAgICBMT0dPX0xPR0lOLFxyXG4gICAgICAgIExPR09fSEVBREVSLFxyXG4gICAgICAgIEhPTUVfQkFDS0dST1VORF9JTUFHRSxcclxuXHJcbiAgICAgICAgT0FVVEgyX09JRENfRU5BQkxFRCxcclxuICAgICAgICBPQVVUSDJfT0lEQ19DTElFTlRfSUQsXHJcbiAgICAgICAgT0FVVEgyX09JRENfTE9HSU5fVVJJLFxyXG4gICAgICAgIE9BVVRIMl9PSURDX1JFRElSRUNUX1VSSSxcclxuICAgICAgICBPQVVUSDJfT0lEQ19TQ09QRSxcclxuXHJcbiAgICAgICAgT0ZGSUNFMzY1X0RFVixcclxuICAgICAgICBPRkZJQ0UzNjVfUFJPRCxcclxuXHJcbiAgICAgICAgU0FNTDJBREZTX0VOQUJMRUQsXHJcbiAgICAgICAgU0FNTDJBREZTX0lEUCxcclxuICAgICAgICBTQU1MMkFERlNfSURFTlRJRklFUixcclxuICAgICAgICBTQU1MMkFERlNfV0FfU0lHTklOLFxyXG4gICAgICAgIFNBTUwyQURGU19XQV9TSUdOT1VULFxyXG4gICAgICAgIFNBTUwyQURGU19XUkVQTFksXHJcblxyXG4gICAgICAgIEhBTkdGSVJFX1BBVEgsXHJcbiAgICAgICAgU1RBVElDX0ZPTERFUixcclxuXHJcbiAgICAgIH0pID0+IHtcclxuXHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkFQUF9UWVBFID0gQVBQX1RZUEU7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkFQUF9VSUlEID0gQVBQX1VJSUQ7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkFMTE9XX0lOX0FQUF9OT1RJRklDQVRJT04gPSBBTExPV19JTl9BUFBfTk9USUZJQ0FUSU9OO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5TSE9XX0xPR0lOX05PVElGSUNBVElPTiA9IFNIT1dfTE9HSU5fTk9USUZJQ0FUSU9OO1xyXG5cclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuQkFTRV9VUkwgPSBCQVNFX1VSTDtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuQkFTRV9VUkxfRk9SX1NUQVRJU1RJQyA9IEJBU0VfVVJMX0ZPUl9TVEFUSVNUSUM7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkdPTElWRV9VUkwgPSBHT0xJVkVfVVJMO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5ERUJVR19FTkFCTEVEID0gREVCVUdfRU5BQkxFRDtcclxuXHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLlVTRV9ERU1PX0FWQVRBUiA9IFVTRV9ERU1PX0FWQVRBUjtcclxuXHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkxPR09fTE9HSU4gPSBMT0dPX0xPR0lOO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5MT0dPX0hFQURFUiA9IExPR09fSEVBREVSO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5IT01FX0JBQ0tHUk9VTkRfSU1BR0UgPSBIT01FX0JBQ0tHUk9VTkRfSU1BR0U7XHJcblxyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5PQVVUSDJfT0lEQ19FTkFCTEVEID0gT0FVVEgyX09JRENfRU5BQkxFRDtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuT0FVVEgyX09JRENfQ0xJRU5UX0lEID0gT0FVVEgyX09JRENfQ0xJRU5UX0lEO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5PQVVUSDJfT0lEQ19MT0dJTl9VUkkgPSBPQVVUSDJfT0lEQ19MT0dJTl9VUkk7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLk9BVVRIMl9PSURDX1JFRElSRUNUX1VSSSA9IE9BVVRIMl9PSURDX1JFRElSRUNUX1VSSTtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuT0FVVEgyX09JRENfU0NPUEUgPSBPQVVUSDJfT0lEQ19TQ09QRTtcclxuXHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLk9GRklDRTM2NV9ERVYgPSBPRkZJQ0UzNjVfREVWO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5PRkZJQ0UzNjVfUFJPRCA9IE9GRklDRTM2NV9QUk9EO1xyXG5cclxuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICAgIHRoaXMucGtjZVNlcnZpY2UuaXNFbmFibGVkID0gdGhpcy5hcHBDb25maWdTZXJ2aWNlLk9GRklDRTM2NV9ERVY/LklTX0VOQUJMRUQ7XHJcbiAgICAgICAgICB0aGlzLnBrY2VTZXJ2aWNlLmF1dGhvcml6YXRpb25FbmRwb2ludCA9IHRoaXMuYXBwQ29uZmlnU2VydmljZS5PRkZJQ0UzNjVfREVWPy5BVVRIT1JJWkFUSU9OX0VORFBPSU5UO1xyXG4gICAgICAgICAgdGhpcy5wa2NlU2VydmljZS5jbGllbnRJZCA9IHRoaXMuYXBwQ29uZmlnU2VydmljZS5PRkZJQ0UzNjVfREVWPy5DTElFTlRfSUQ7XHJcbiAgICAgICAgICB0aGlzLnBrY2VTZXJ2aWNlLnJlZGlyZWN0VXJpID0gdGhpcy5hcHBDb25maWdTZXJ2aWNlLk9GRklDRTM2NV9ERVY/LlJFRElSRUNUX1VSSTtcclxuICAgICAgICAgIHRoaXMucGtjZVNlcnZpY2UudG9rZW5Qb3N0RW5kcG9pbnQgPSB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuT0ZGSUNFMzY1X0RFVj8uVE9LRU5fUE9TVF9FTkRQT0lOVDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5wa2NlU2VydmljZS5pc0VuYWJsZWQgPSB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuT0ZGSUNFMzY1X1BST0Q/LklTX0VOQUJMRUQ7XHJcbiAgICAgICAgICB0aGlzLnBrY2VTZXJ2aWNlLmF1dGhvcml6YXRpb25FbmRwb2ludCA9IHRoaXMuYXBwQ29uZmlnU2VydmljZS5PRkZJQ0UzNjVfUFJPRD8uQVVUSE9SSVpBVElPTl9FTkRQT0lOVDtcclxuICAgICAgICAgIHRoaXMucGtjZVNlcnZpY2UuY2xpZW50SWQgPSB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuT0ZGSUNFMzY1X1BST0Q/LkNMSUVOVF9JRDtcclxuICAgICAgICAgIHRoaXMucGtjZVNlcnZpY2UucmVkaXJlY3RVcmkgPSB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuT0ZGSUNFMzY1X1BST0Q/LlJFRElSRUNUX1VSSTtcclxuICAgICAgICAgIHRoaXMucGtjZVNlcnZpY2UudG9rZW5Qb3N0RW5kcG9pbnQgPSB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuT0ZGSUNFMzY1X1BST0Q/LlRPS0VOX1BPU1RfRU5EUE9JTlQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuU0FNTDJBREZTX0VOQUJMRUQgPSBTQU1MMkFERlNfRU5BQkxFRDtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuU0FNTDJBREZTX0lEUCA9IFNBTUwyQURGU19JRFA7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLlNBTUwyQURGU19JREVOVElGSUVSID0gU0FNTDJBREZTX0lERU5USUZJRVI7XHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLlNBTUwyQURGU19XQV9TSUdOSU4gPSBTQU1MMkFERlNfV0FfU0lHTklOO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5TQU1MMkFERlNfV0FfU0lHTk9VVCA9IFNBTUwyQURGU19XQV9TSUdOT1VUO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5TQU1MMkFERlNfV1JFUExZID0gU0FNTDJBREZTX1dSRVBMWTtcclxuXHJcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkhBTkdGSVJFX1BBVEggPSBIQU5HRklSRV9QQVRIO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5TVEFUSUNfRk9MREVSID0gU1RBVElDX0ZPTERFUjtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuQVZBVEFSX0ZPTERFUiA9IFwiYXZhdGFyc1wiO1xyXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5BUFBfREVNT19GT0xERVIgPSBcImFwcGRlbW9cIjtcclxuICAgICAgICB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuQVRUQUNITUVOVF9GT0xERVIgPSBcImF0dGFjaG1lbnRzXCI7XHJcblxyXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IChuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSkuc2VhcmNoUGFyYW1zO1xyXG4gICAgICAgIGNvbnN0IGxvY2FsID0gcGFyYW1zLmdldChcImxvY2FsXCIpO1xyXG5cclxuICAgICAgICBpZiAoU0FNTDJBREZTX0VOQUJMRUQgJiYgIWxvY2FsKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuc3NvRmFpbGVkKSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cclxuICAgICAgICAgICAgICBjb25zdCB0b2tlbiA9IHBhcmFtcy5nZXQoXCJ0b2tlblwiKTtcclxuICAgICAgICAgICAgICBpZiAodG9rZW4gIT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuYXBwU2VydmljZS5nZXQoYXBpLlNZU19TSE9SVF9MSVZFRF9UT0tFTl9MT0dJTiArIFwiP3Rva2VuPVwiICsgdG9rZW4pLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwICYmIHguYm9keT8uc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib2R5OiBJRm9ybWF0ZWRSZXNwb25zZSA9IHguYm9keVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGJvZHkuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0F1dGhEYXRhJC5uZXh0KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5ib2R5LmlubmVyQm9keSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpblRpbWU6IG5ldyBEYXRlKCkuZ2V0VGltZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3NvRmFpbGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zc29Qcm9jZXNzaW5nJC5uZXh0KGZhbHNlKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoISFsb2NhbFN0b3JhZ2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGVmdGJhclJlZHVjZWRTdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGVmdGJhclJlZHVjZWQnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGVmdGJhclJlZHVjZWQgPSBKU09OLnBhcnNlKGxlZnRiYXJSZWR1Y2VkU3RyaW5nISlcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmxlZnRiYXJSZWR1Y2VkJC5uZXh0KCEhbGVmdGJhclJlZHVjZWQpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm91dGluZ0hpc3RvcnlTdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncm91dGluZ0hpc3RvcnknKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhcm91dGluZ0hpc3RvcnlTdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByb3V0aW5nSGlzdG9yeSA9IEpTT04ucGFyc2Uocm91dGluZ0hpc3RvcnlTdHJpbmcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2Uucm91dGluZ0hpc3RvcnkkLm5leHQocm91dGluZ0hpc3RvcnkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb3JlT3JnVHJlZVN0YXR1c1N0cmluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY29yZU9yZ1RyZWVTdGF0dXNcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb3JlT3JnVHJlZVN0YXR1c1N0cmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNhdmVkT2JqZWN0OiBJRXZlcnlUcmVlU3RhdHVzID0gSlNPTi5wYXJzZShjb3JlT3JnVHJlZVN0YXR1c1N0cmluZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQubmV4dChzYXZlZE9iamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9LCAyMDApXHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICApXHJcblxyXG5cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIEFMV0FZUyBSRURJUkVDVCBUTyBUSEUgQU5HVUxBUiBBUFBMSUNBVElPTiBMT0dJTiBQQUdFIElGIE5PIFNFU1NJT04gRk9VTkQgKD9sb2NhbD0xKVxyXG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgJHt0aGlzLmFwcENvbmZpZ1NlcnZpY2UuU0FNTDJBREZTX0lERU5USUZJRVJ9P2xvY2FsPTFgO1xyXG5cclxuICAgICAgICAgICAgICAgIC8qXHJcblxyXG4gICAgICAgICAgICAgICAgLy9JRiBUSEUgQU5HVUxBUiBBUFBMSUNBVElPTiBMT0dJTiBQQUdFIElTIE5PVCBNQU5EQVRPUlkgPT4gQ0FMTCBTQU1MMi4wIElkUFxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvZGVWZXJpZmllciA9IHRoaXMuYXV0aFNlcnZpY2UuZ2VuZXJhdGVSYW5kb21Db2RlVmVyaWZpZXIoNDMpO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJjb2RlVmVyaWZpZXJcIiwgY29kZVZlcmlmaWVyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2VuZXJhdGVDb2RlQ2hhbGxlbmdlRnJvbVZlcmlmaWVyKGNvZGVWZXJpZmllcikudGhlbihjb2RlQ2hhbGxlbmdlID0+IHtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgYXV0aG9yaXphdGlvblVybCA9IGAke3RoaXMuYXBwQ29uZmlnU2VydmljZS5TQU1MMkFERlNfSURQfT9gICtcclxuICAgICAgICAgICAgICAgICAgICBgd3RyZWFsbT0ke3RoaXMuYXBwQ29uZmlnU2VydmljZS5TQU1MMkFERlNfSURFTlRJRklFUn1gICtcclxuICAgICAgICAgICAgICAgICAgICBgJndhPSR7dGhpcy5hcHBDb25maWdTZXJ2aWNlLlNBTUwyQURGU19XQV9TSUdOSU4gfHwgJ3dzaWduaW4xLjAnfWAgKyBcclxuICAgICAgICAgICAgICAgICAgICBgJndyZXBseT0ke3RoaXMuYXBwQ29uZmlnU2VydmljZS5CQVNFX1VSTH0ke3RoaXMuYXBwQ29uZmlnU2VydmljZS5TQU1MMkFERlNfV1JFUExZfWAgKyBcclxuICAgICAgICAgICAgICAgICAgICBgJndjdHg9JHtjb2RlQ2hhbGxlbmdlfWBcclxuICAgICAgICAgICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxlcnQoYXV0aG9yaXphdGlvblVybCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYXV0aG9yaXphdGlvblVybDtcclxuXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICovXHJcblxyXG5cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3NvUHJvY2Vzc2luZyQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgYm9keTE6IElGb3JtYXRlZFJlc3BvbnNlO1xyXG4gICAgICAgIGxldCBib2R5MjogSUZvcm1hdGVkUmVzcG9uc2U7XHJcbiAgICAgICAgbGV0IGJvZHkzOiBJRm9ybWF0ZWRSZXNwb25zZTtcclxuICAgICAgICBsZXQgYm9keTQ6IElGb3JtYXRlZFJlc3BvbnNlO1xyXG5cclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICAgIHRoaXMuc3NvUHJvY2Vzc2luZyQucGlwZShcclxuICAgICAgICAgICAgZmlsdGVyKHggPT4gIXgpXHJcbiAgICAgICAgICApLnN1YnNjcmliZShfID0+IHtcclxuXHJcbiAgICAgICAgICAgIGxldCBhcHBUeXBlTnVtYmVyOiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5hcHBDb25maWdTZXJ2aWNlLkFQUF9UWVBFKSB7XHJcbiAgICAgICAgICAgICAgY2FzZSBcIldFQkFQUFwiOlxyXG4gICAgICAgICAgICAgICAgYXBwVHlwZU51bWJlciA9IDE7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBjYXNlIFwiUE9SVEFMXCI6XHJcbiAgICAgICAgICAgICAgICBhcHBUeXBlTnVtYmVyID0gMjtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBhcHBUeXBlTnVtYmVyID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgICAgIHppcChbXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1scy5yZWFkQWxsTWluaSgpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5yZWFkQWxsRnVuY3Rpb25XaXRoQWxsQWN0aW9ucygpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5nZXRJZ25vcmVQYXRocygpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5hcHBTZXJ2aWNlLmdldChhcGkuU1lTX0FDVElPTl9SRUFEX0FMTClcclxuICAgICAgICAgICAgICBdKS5waXBlKFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcih2YWwgPT4gb2YoYFRoZSBhcHAgY2F1Z2h0OiAke3ZhbH1gKSlcclxuICAgICAgICAgICAgICApLnN1YnNjcmliZShyZXNwb25zZXMgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiYXBwSW5pdGlhbGl6ZSgpIHppcCgpIGRvbmVcIilcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCB4MSA9IHJlc3BvbnNlc1swXTtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwieDFcIiwgeDEpXHJcbiAgICAgICAgICAgICAgICBpZiAoeDEub2sgJiYgeDEuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgYm9keTEgPSB4MS5ib2R5XHJcbiAgICAgICAgICAgICAgICAgIGlmIChib2R5MS5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1scy5kYXRhJC5uZXh0KGJvZHkxLmlubmVyQm9keSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCB4MiA9IHJlc3BvbnNlc1sxXTtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwieDJcIiwgeDIpXHJcbiAgICAgICAgICAgICAgICBpZiAoeDIub2sgJiYgeDIuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgYm9keTIgPSB4Mi5ib2R5XHJcbiAgICAgICAgICAgICAgICAgIGlmIChib2R5Mi5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLmZ1bGxGdW5jdGlvbnMkLm5leHQoYm9keTIuaW5uZXJCb2R5KTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHgzID0gcmVzcG9uc2VzWzJdO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJ4M1wiLCB4MylcclxuICAgICAgICAgICAgICAgIGlmICh4My5vayAmJiB4My5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICBib2R5MyA9IHgzLmJvZHlcclxuICAgICAgICAgICAgICAgICAgaWYgKGJvZHkzLnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuaWdub3JlZFBhdGhzJC5uZXh0KGJvZHkzLmlubmVyQm9keSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCB4NCA9IHJlc3BvbnNlc1szXTtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwieDRcIiwgeDQpXHJcbiAgICAgICAgICAgICAgICBpZiAoeDQub2sgJiYgeDQuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgYm9keTQgPSB4NC5ib2R5XHJcbiAgICAgICAgICAgICAgICAgIGlmIChib2R5NC5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICBib2R5NC5pbm5lckJvZHkuZm9yRWFjaCgoYWN0aW9uOiBJU3lzQWN0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGlvblNlcnZpY2UuYWN0aW9uTWFwLnNldChhY3Rpb24uY29kZSwgYWN0aW9uKTtcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gY29uc3QgeDQgPSByZXNwb25zZXNbM107XHJcbiAgICAgICAgICAgICAgICAvLyBpZiAoeDQub2sgJiYgeDQuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIC8vICAgYm9keTQgPSB4NC5ib2R5XHJcbiAgICAgICAgICAgICAgICAvLyAgIGlmIChib2R5NC5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIC8vICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLnBvcnRhbFJvdXRlcyQubmV4dChib2R5NC5pbm5lckJvZHkpO1xyXG4gICAgICAgICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGJvZHkxPy5zdGF0dXNDb2RlID09PSAyMDAgJiYgYm9keTI/LnN0YXR1c0NvZGUgPT09IDIwMCAmJiBib2R5Mz8uc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByaW1hcnlJbml0aWFsaXplZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICBpZiAoISFPQVVUSDJfT0lEQ19FTkFCTEVEICYmICEhdGhpcy5wZW5kaW5nQXV0aERhdGEkLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZVNlc3Npb25PayA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5kYXRhJC5uZXh0KHRoaXMucGVuZGluZ0F1dGhEYXRhJC52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nQXV0aERhdGEkLm5leHQobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5hdXRoZW50aWNhdGVkJC5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6aW5nJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnRyeVJlc3RvcmVTZXNzaW9uKClcclxuICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoeCA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwICYmIHguYm9keT8uc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9keTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4LmJvZHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYm9keS5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0F1dGhEYXRhOiBJQXV0aERhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmJvZHkuaW5uZXJCb2R5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpblRpbWU6IG5ldyBEYXRlKCkuZ2V0VGltZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JlU2Vzc2lvbk9rID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQubmV4dChuZXdBdXRoRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFsb2NhbFN0b3JhZ2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlZnRiYXJSZWR1Y2VkU3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xlZnRiYXJSZWR1Y2VkJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsZWZ0YmFyUmVkdWNlZCA9IEpTT04ucGFyc2UobGVmdGJhclJlZHVjZWRTdHJpbmchKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmxlZnRiYXJSZWR1Y2VkJC5uZXh0KCEhbGVmdGJhclJlZHVjZWQpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRpbmdIaXN0b3J5U3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3JvdXRpbmdIaXN0b3J5Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFyb3V0aW5nSGlzdG9yeVN0cmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByb3V0aW5nSGlzdG9yeSA9IEpTT04ucGFyc2Uocm91dGluZ0hpc3RvcnlTdHJpbmcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLnJvdXRpbmdIaXN0b3J5JC5uZXh0KHJvdXRpbmdIaXN0b3J5KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb3JlT3JnVHJlZVN0YXR1c1N0cmluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY29yZU9yZ1RyZWVTdGF0dXNcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29yZU9yZ1RyZWVTdGF0dXNTdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2F2ZWRPYmplY3Q6IElFdmVyeVRyZWVTdGF0dXMgPSBKU09OLnBhcnNlKGNvcmVPcmdUcmVlU3RhdHVzU3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQubmV4dChzYXZlZE9iamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6aW5nJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgMjAwKVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG5cclxuXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuXHJcbiAgICAgIH0pLmNhdGNoKGUgPT4gY29uc29sZS5sb2coXCJmZXRjaCBhcHAuY29uZmlnLmpzb24gZXJyb3JcIiwgZSkpXHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiYXBwSW5pdGlhbGl6ZSgpIHppcCgpIGVycm9yOiBcIiwgZSlcclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiZmluYWxseVwiKVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLm1hcCh4ID0+IHg/LnVuc3Vic2NyaWJlKCkpXHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -108,38 +108,6 @@ export class AuthService {
108
108
  }
109
109
  }
110
110
  }
111
- generateRandomCodeVerifier(length) {
112
- const charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~';
113
- let result = '';
114
- for (let i = 0; i < length; i++) {
115
- const randomIndex = Math.floor(Math.random() * charset.length);
116
- result += charset.charAt(randomIndex);
117
- }
118
- return result;
119
- }
120
- async generateCodeChallengeFromVerifier(v) {
121
- const sha256 = (plain) => {
122
- // returns promise ArrayBuffer
123
- const encoder = new TextEncoder();
124
- const data = encoder.encode(plain);
125
- return window.crypto.subtle.digest("SHA-256", data);
126
- };
127
- const base64urlencode = (a) => {
128
- var str = "";
129
- var bytes = new Uint8Array(a);
130
- var len = bytes.byteLength;
131
- for (var i = 0; i < len; i++) {
132
- str += String.fromCharCode(bytes[i]);
133
- }
134
- return btoa(str)
135
- .replace(/\+/g, "-")
136
- .replace(/\//g, "_")
137
- .replace(/=+$/, "");
138
- };
139
- var hashed = await sha256(v);
140
- var base64encoded = base64urlencode(hashed);
141
- return base64encoded;
142
- }
143
111
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AuthService, deps: [{ token: Http }, { token: Router }, { token: i1.CommonHttpRequestService }, { token: i2.HubConnectionService }, { token: i3.OrganizationService }, { token: i4.AlertService }, { token: i5.MultiLanguageService }], target: i0.ɵɵFactoryTarget.Injectable }); }
144
112
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AuthService, providedIn: 'root' }); }
145
113
  }
@@ -155,4 +123,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
155
123
  type: Inject,
156
124
  args: [Router]
157
125
  }] }, { type: i1.CommonHttpRequestService }, { type: i2.HubConnectionService }, { type: i3.OrganizationService }, { type: i4.AlertService }, { type: i5.MultiLanguageService }] });
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvc2VydmljZXMvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQjtBQUNoQixPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFPNUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRzdDLE9BQU8sRUFDTCxVQUFVLElBQUksSUFBSSxFQUNuQixNQUFNLHNCQUFzQixDQUFDO0FBRzlCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7O0FBTXpELE1BQU0sT0FBTyxXQUFXO0lBZ0J0QixZQUN3QixJQUFVLEVBQ1IsTUFBYyxFQUM5Qix3QkFBa0QsRUFDbEQsb0JBQTBDLEVBQzFDLG1CQUF3QyxFQUN4QyxZQUEwQixFQUMxQixHQUF5QjtRQU5YLFNBQUksR0FBSixJQUFJLENBQU07UUFDUixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQzlCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFFBQUcsR0FBSCxHQUFHLENBQXNCO1FBdEJuQyx5REFBeUQ7UUFDakQsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQzlDLHVCQUFrQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFdEQs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Q0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQTtRQUVELE1BQU0sZUFBZSxHQUFFLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDaEMsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxLQUFLLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztZQUMzQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUM1QixHQUFHLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN0QztZQUNELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztpQkFDYixPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQztpQkFDbkIsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUM7aUJBQ25CLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFBO1FBRUQsSUFBSSxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsSUFBSSxhQUFhLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7OEdBdEpVLFdBQVcsa0JBaUJaLElBQUksYUFDSixNQUFNO2tIQWxCTCxXQUFXLGNBRlYsTUFBTTs7MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQWtCSSxNQUFNOzJCQUFDLElBQUk7OzBCQUNYLE1BQU07MkJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdMT0JBTCBJTVBPUlRcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuaW1wb3J0IHsgSHViQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tIFwiLi9odWItY29ubmVjdGlvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE9yZ2FuaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiLi9vcmdhbml6YXRpb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBDb21tb25IdHRwUmVxdWVzdFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvY29tbW9uLWh0dHAtcmVxdWVzdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gXCIuLi9saWJyYXJpZXMvYWxlcnQvYWxlcnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gXCIuL211bHRpLWxhbmd1YWdlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgYXBpIH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuXHJcblxyXG5pbXBvcnQge1xyXG4gIEh0dHBDbGllbnQgYXMgSHR0cFxyXG59IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBJQ2xpZW50TG9naW5SZXF1ZXN0IH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvSUNsaWVudExvZ2luUmVxdWVzdFwiO1xyXG5pbXBvcnQgeyBJQXV0aERhdGEgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9JQXV0aERhdGFcIjtcclxuaW1wb3J0IHsgYWxlcnRPcHRpb25zIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9hbGVydE9wdGlvbnNcIjtcclxuaW1wb3J0IHsgSUZvcm1hdGVkUmVzcG9uc2UgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9JRm9ybWF0ZWRSZXNwb25zZVwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xyXG4gIC8vIGZvciBjaGFuZ2UgdGhlIG5hdmJhciBzdGF0ZSBiZXR3ZWVuIG9ubGluZSBhbmQgb2ZmbGluZVxyXG4gIHByaXZhdGUgYXV0aGVudGljYXRlID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBhdXRoZW50aWNhdGVTdGF0ZSQgPSB0aGlzLmF1dGhlbnRpY2F0ZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgZGF0YSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElBdXRoRGF0YSB8IG51bGw+KG51bGwpO1xyXG4gIHN0b3BTdWJzY3JpcHRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBhdXRoZW50aWNhdGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICByZWZyZXNoVG9rZW5JblByb2dyZXNzITogYm9vbGVhbjtcclxuICByZWZyZXNoVG9rZW5TdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcclxuICBzc29Qcm9jZXNzaW5nJCA9IG5ldyAgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICByZWZyZXNoaW5nVG9rZW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIHByb2ZpbGVBdmF0YXI6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KEh0dHApIHByaXZhdGUgaHR0cDogSHR0cCxcclxuICAgIEBJbmplY3QoUm91dGVyKSBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBjb21tb25IdHRwUmVxdWVzdFNlcnZpY2U6IENvbW1vbkh0dHBSZXF1ZXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgaHViQ29ubmVjdGlvblNlcnZpY2U6IEh1YkNvbm5lY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBvcmdhbml6YXRpb25TZXJ2aWNlOiBPcmdhbml6YXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZSxcclxuICApIHt9XHJcblxyXG4gIC8vIFdlYiBjbGllbnQgbG9naW5cclxuICB1c2VyTG9naW4ocmVxdWVzdDogSUNsaWVudExvZ2luUmVxdWVzdCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBmdWxsVXJsID0gYXBpLlNZU19MT0dJTlxyXG4gICAgcmV0dXJuIHRoaXMuY29tbW9uSHR0cFJlcXVlc3RTZXJ2aWNlLm1ha2VQb3N0UmVxdWVzdChcImNsaWVudExvZ2luXCIsIGZ1bGxVcmwsIHJlcXVlc3QpO1xyXG4gIH1cclxuXHJcbiAgLy8gV2ViIGNsaWVudCBsb2dvdXRcclxuICB1c2VyTG9nb3V0KCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSBhcGkuU1lTX0xPR09VVFxyXG4gICAgcmV0dXJuIHRoaXMuY29tbW9uSHR0cFJlcXVlc3RTZXJ2aWNlLm1ha2VQb3N0UmVxdWVzdChcImNsaWVudExvZ291dFwiLCB1cmwsIHt9KVxyXG4gIH1cclxuXHJcbiAgcG9zdExvZ291dCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB0aGlzLmh1YkNvbm5lY3Rpb25TZXJ2aWNlLmh1YkNvbm5lY3Rpb24kLnZhbHVlXHJcblxyXG4gICAgY29uc3QgY2xlYXIgPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8odGhpcy5tbHMudHJhbnMoJ1NVQ0NFU1NfTE9HR0VEX09VVCcpLCBhbGVydE9wdGlvbnMpO1xyXG4gICAgICB0aGlzLmh1YkNvbm5lY3Rpb25TZXJ2aWNlLmh1YkNvbm5lY3Rpb24kLm5leHQobnVsbCk7XHJcbiAgICAgIHRoaXMuZGF0YSQubmV4dChudWxsKTtcclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLm9yZ1RyZWVEYXRhJC5uZXh0KFtdKTtcclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQubmV4dCh7XHJcbiAgICAgICAgc2VsZWN0ZWRLZXk6IHVuZGVmaW5lZCxcclxuICAgICAgICBhY3RpdmVLZXlzOiBbXSxcclxuICAgICAgICBjaGVja2VkS2V5czogW10sXHJcbiAgICAgICAgZXhwYW5kZWRLZXlzOiBbXSxcclxuICAgICAgICBjaGVja0luaGVyaXRhbmNlOiB0cnVlXHJcbiAgICAgIH0pXHJcbiAgICAgIGNvbnN0IGxhbmcgPSBsb2NhbFN0b3JhZ2U/LmdldEl0ZW0oXCJsYW5nXCIpO1xyXG4gICAgICBsb2NhbFN0b3JhZ2UuY2xlYXIoKTtcclxuICAgICAgaWYgKCEhbGFuZykge1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZT8uc2V0SXRlbShcImxhbmdcIiwgbGFuZyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnYXV0aC9sb2dpbicpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghIWNvbm5lY3Rpb24pIHtcclxuICAgICAgY29ubmVjdGlvbi5vZmYoXCJSZWNlaXZlU3lzdGVtTWVzc2FnZVwiKTtcclxuICAgICAgY29ubmVjdGlvbi5vZmYoXCJSZWNlaXZlTWVzc2FnZVwiKTtcclxuICAgICAgY29ubmVjdGlvbi5zdG9wKCkudGhlbihfID0+IHtcclxuICAgICAgICBjbGVhcigpO1xyXG4gICAgICB9KS5jYXRjaChlID0+IHtcclxuICAgICAgICAvL3RoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKEpTT04uc3RyaW5naWZ5KGUsIG51bGwsIDIpLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNsZWFyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBXZWIgY2xpZW50IFRyeSByZXN0b3JlIHNlc3Npb25cclxuICB0cnlSZXN0b3JlU2Vzc2lvbigpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgZnVsbFVybCA9IGFwaS5TWVNfUkVGUkVTSF9UT0tFTlxyXG4gICAgcmV0dXJuIHRoaXMuY29tbW9uSHR0cFJlcXVlc3RTZXJ2aWNlLm1ha2VQb3N0UmVxdWVzdChcInJlZnJlc2hUb2tlblwiLCBmdWxsVXJsLCB7IGFwcFR5cGU6IFwiV0VCQVBQXCIgfSlcclxuICB9XHJcblxyXG4gIGdldEF1dGhvcml6YXRpb25Ub2tlbigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YSQudmFsdWU/LnRva2VuITtcclxuICB9XHJcblxyXG4gIGlzQXV0aGVudGljYXRlID0gKCk6IGJvb2xlYW4gPT4ge1xyXG4gICAgcmV0dXJuICEhdGhpcy5kYXRhJC52YWx1ZTtcclxuICB9O1xyXG5cclxuICBnZXRVc2VySW5mbyA9ICgpID0+IHt9O1xyXG5cclxuICBnZXRUb2tlbiA9ICgpOiBzdHJpbmcgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YSQudmFsdWUhLnRva2VuO1xyXG4gIH07XHJcblxyXG4gIHBhcnNlSnd0ICh0b2tlbjogc3RyaW5nKSB7XHJcbiAgICB2YXIgYmFzZTY0VXJsID0gdG9rZW4uc3BsaXQoJy4nKVsxXTtcclxuICAgIHZhciBiYXNlNjQgPSBiYXNlNjRVcmwucmVwbGFjZSgvLS9nLCAnKycpLnJlcGxhY2UoL18vZywgJy8nKTtcclxuICAgIHZhciBqc29uUGF5bG9hZCA9IGRlY29kZVVSSUNvbXBvbmVudCh3aW5kb3cuYXRvYihiYXNlNjQpLnNwbGl0KCcnKS5tYXAoYyA9PiB7XHJcbiAgICAgICAgcmV0dXJuICclJyArICgnMDAnICsgYy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpO1xyXG4gICAgfSkuam9pbignJykpO1xyXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoanNvblBheWxvYWQpO1xyXG4gIH1cclxuXHJcbiAgcmVzb2x2ZUF1dGhlbnRpY2F0ZVJlc3BvbnNlKHg6IGFueSk6IHZvaWQge1xyXG5cclxuICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDAgJiYgeC5ib2R5Py5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgY29uc3QgYm9keTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4LmJvZHk7XHJcbiAgICAgIGlmIChib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgIGNvbnN0IGlubmVyQm9keSA9IGJvZHkuaW5uZXJCb2R5O1xyXG4gICAgICAgIHRoaXMuZGF0YSQubmV4dChpbm5lckJvZHkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVSYW5kb21Db2RlVmVyaWZpZXIobGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgY2hhcnNldCA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS0uX34nO1xyXG4gICAgbGV0IHJlc3VsdCA9ICcnO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCByYW5kb21JbmRleCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNoYXJzZXQubGVuZ3RoKTtcclxuICAgICAgcmVzdWx0ICs9IGNoYXJzZXQuY2hhckF0KHJhbmRvbUluZGV4KTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZW5lcmF0ZUNvZGVDaGFsbGVuZ2VGcm9tVmVyaWZpZXIodjogc3RyaW5nKSB7XHJcblxyXG4gICAgY29uc3Qgc2hhMjU2ID0gKHBsYWluOiBzdHJpbmcpID0+IHtcclxuICAgICAgLy8gcmV0dXJucyBwcm9taXNlIEFycmF5QnVmZmVyXHJcbiAgICAgIGNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcclxuICAgICAgY29uc3QgZGF0YSA9IGVuY29kZXIuZW5jb2RlKHBsYWluKTtcclxuICAgICAgcmV0dXJuIHdpbmRvdy5jcnlwdG8uc3VidGxlLmRpZ2VzdChcIlNIQS0yNTZcIiwgZGF0YSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGNvbnN0IGJhc2U2NHVybGVuY29kZT0gKGE6IGFueSkgPT4ge1xyXG4gICAgICB2YXIgc3RyID0gXCJcIjtcclxuICAgICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYSk7XHJcbiAgICAgIHZhciBsZW4gPSBieXRlcy5ieXRlTGVuZ3RoO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBidG9hKHN0cilcclxuICAgICAgICAucmVwbGFjZSgvXFwrL2csIFwiLVwiKVxyXG4gICAgICAgIC5yZXBsYWNlKC9cXC8vZywgXCJfXCIpXHJcbiAgICAgICAgLnJlcGxhY2UoLz0rJC8sIFwiXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBoYXNoZWQgPSBhd2FpdCBzaGEyNTYodik7XHJcbiAgICB2YXIgYmFzZTY0ZW5jb2RlZCA9IGJhc2U2NHVybGVuY29kZShoYXNoZWQpO1xyXG4gICAgcmV0dXJuIGJhc2U2NGVuY29kZWQ7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvc2VydmljZXMvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQjtBQUNoQixPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFPNUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRzdDLE9BQU8sRUFDTCxVQUFVLElBQUksSUFBSSxFQUNuQixNQUFNLHNCQUFzQixDQUFDO0FBRzlCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7O0FBTXpELE1BQU0sT0FBTyxXQUFXO0lBZ0J0QixZQUN3QixJQUFVLEVBQ1IsTUFBYyxFQUM5Qix3QkFBa0QsRUFDbEQsb0JBQTBDLEVBQzFDLG1CQUF3QyxFQUN4QyxZQUEwQixFQUMxQixHQUF5QjtRQU5YLFNBQUksR0FBSixJQUFJLENBQU07UUFDUixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQzlCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFFBQUcsR0FBSCxHQUFHLENBQXNCO1FBdEJuQyx5REFBeUQ7UUFDakQsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQzlDLHVCQUFrQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFdEQs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QVcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCwyQkFBMkIsQ0FBQyxDQUFNO1FBRWhDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLFVBQVUsS0FBSyxHQUFHLEVBQUU7WUFDMUQsTUFBTSxJQUFJLEdBQXNCLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDdkMsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLEdBQUcsRUFBRTtnQkFDM0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDNUI7U0FDRjtJQUVILENBQUM7OEdBakhVLFdBQVcsa0JBaUJaLElBQUksYUFDSixNQUFNO2tIQWxCTCxXQUFXLGNBRlYsTUFBTTs7MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQWtCSSxNQUFNOzJCQUFDLElBQUk7OzBCQUNYLE1BQU07MkJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdMT0JBTCBJTVBPUlRcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuaW1wb3J0IHsgSHViQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tIFwiLi9odWItY29ubmVjdGlvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE9yZ2FuaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiLi9vcmdhbml6YXRpb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBDb21tb25IdHRwUmVxdWVzdFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvY29tbW9uLWh0dHAtcmVxdWVzdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gXCIuLi9saWJyYXJpZXMvYWxlcnQvYWxlcnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gXCIuL211bHRpLWxhbmd1YWdlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgYXBpIH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuXHJcblxyXG5pbXBvcnQge1xyXG4gIEh0dHBDbGllbnQgYXMgSHR0cFxyXG59IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBJQ2xpZW50TG9naW5SZXF1ZXN0IH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvSUNsaWVudExvZ2luUmVxdWVzdFwiO1xyXG5pbXBvcnQgeyBJQXV0aERhdGEgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9JQXV0aERhdGFcIjtcclxuaW1wb3J0IHsgYWxlcnRPcHRpb25zIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9hbGVydE9wdGlvbnNcIjtcclxuaW1wb3J0IHsgSUZvcm1hdGVkUmVzcG9uc2UgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9JRm9ybWF0ZWRSZXNwb25zZVwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xyXG4gIC8vIGZvciBjaGFuZ2UgdGhlIG5hdmJhciBzdGF0ZSBiZXR3ZWVuIG9ubGluZSBhbmQgb2ZmbGluZVxyXG4gIHByaXZhdGUgYXV0aGVudGljYXRlID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBhdXRoZW50aWNhdGVTdGF0ZSQgPSB0aGlzLmF1dGhlbnRpY2F0ZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgZGF0YSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElBdXRoRGF0YSB8IG51bGw+KG51bGwpO1xyXG4gIHN0b3BTdWJzY3JpcHRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBhdXRoZW50aWNhdGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICByZWZyZXNoVG9rZW5JblByb2dyZXNzITogYm9vbGVhbjtcclxuICByZWZyZXNoVG9rZW5TdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcclxuICBzc29Qcm9jZXNzaW5nJCA9IG5ldyAgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICByZWZyZXNoaW5nVG9rZW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIHByb2ZpbGVBdmF0YXI6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KEh0dHApIHByaXZhdGUgaHR0cDogSHR0cCxcclxuICAgIEBJbmplY3QoUm91dGVyKSBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBjb21tb25IdHRwUmVxdWVzdFNlcnZpY2U6IENvbW1vbkh0dHBSZXF1ZXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgaHViQ29ubmVjdGlvblNlcnZpY2U6IEh1YkNvbm5lY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBvcmdhbml6YXRpb25TZXJ2aWNlOiBPcmdhbml6YXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZSxcclxuICApIHt9XHJcblxyXG4gIC8vIFdlYiBjbGllbnQgbG9naW5cclxuICB1c2VyTG9naW4ocmVxdWVzdDogSUNsaWVudExvZ2luUmVxdWVzdCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBmdWxsVXJsID0gYXBpLlNZU19MT0dJTlxyXG4gICAgcmV0dXJuIHRoaXMuY29tbW9uSHR0cFJlcXVlc3RTZXJ2aWNlLm1ha2VQb3N0UmVxdWVzdChcImNsaWVudExvZ2luXCIsIGZ1bGxVcmwsIHJlcXVlc3QpO1xyXG4gIH1cclxuXHJcbiAgLy8gV2ViIGNsaWVudCBsb2dvdXRcclxuICB1c2VyTG9nb3V0KCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSBhcGkuU1lTX0xPR09VVFxyXG4gICAgcmV0dXJuIHRoaXMuY29tbW9uSHR0cFJlcXVlc3RTZXJ2aWNlLm1ha2VQb3N0UmVxdWVzdChcImNsaWVudExvZ291dFwiLCB1cmwsIHt9KVxyXG4gIH1cclxuXHJcbiAgcG9zdExvZ291dCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB0aGlzLmh1YkNvbm5lY3Rpb25TZXJ2aWNlLmh1YkNvbm5lY3Rpb24kLnZhbHVlXHJcblxyXG4gICAgY29uc3QgY2xlYXIgPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8odGhpcy5tbHMudHJhbnMoJ1NVQ0NFU1NfTE9HR0VEX09VVCcpLCBhbGVydE9wdGlvbnMpO1xyXG4gICAgICB0aGlzLmh1YkNvbm5lY3Rpb25TZXJ2aWNlLmh1YkNvbm5lY3Rpb24kLm5leHQobnVsbCk7XHJcbiAgICAgIHRoaXMuZGF0YSQubmV4dChudWxsKTtcclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLm9yZ1RyZWVEYXRhJC5uZXh0KFtdKTtcclxuICAgICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQubmV4dCh7XHJcbiAgICAgICAgc2VsZWN0ZWRLZXk6IHVuZGVmaW5lZCxcclxuICAgICAgICBhY3RpdmVLZXlzOiBbXSxcclxuICAgICAgICBjaGVja2VkS2V5czogW10sXHJcbiAgICAgICAgZXhwYW5kZWRLZXlzOiBbXSxcclxuICAgICAgICBjaGVja0luaGVyaXRhbmNlOiB0cnVlXHJcbiAgICAgIH0pXHJcbiAgICAgIGNvbnN0IGxhbmcgPSBsb2NhbFN0b3JhZ2U/LmdldEl0ZW0oXCJsYW5nXCIpO1xyXG4gICAgICBsb2NhbFN0b3JhZ2UuY2xlYXIoKTtcclxuICAgICAgaWYgKCEhbGFuZykge1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZT8uc2V0SXRlbShcImxhbmdcIiwgbGFuZyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnYXV0aC9sb2dpbicpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghIWNvbm5lY3Rpb24pIHtcclxuICAgICAgY29ubmVjdGlvbi5vZmYoXCJSZWNlaXZlU3lzdGVtTWVzc2FnZVwiKTtcclxuICAgICAgY29ubmVjdGlvbi5vZmYoXCJSZWNlaXZlTWVzc2FnZVwiKTtcclxuICAgICAgY29ubmVjdGlvbi5zdG9wKCkudGhlbihfID0+IHtcclxuICAgICAgICBjbGVhcigpO1xyXG4gICAgICB9KS5jYXRjaChlID0+IHtcclxuICAgICAgICAvL3RoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKEpTT04uc3RyaW5naWZ5KGUsIG51bGwsIDIpLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNsZWFyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBXZWIgY2xpZW50IFRyeSByZXN0b3JlIHNlc3Npb25cclxuICB0cnlSZXN0b3JlU2Vzc2lvbigpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgZnVsbFVybCA9IGFwaS5TWVNfUkVGUkVTSF9UT0tFTlxyXG4gICAgcmV0dXJuIHRoaXMuY29tbW9uSHR0cFJlcXVlc3RTZXJ2aWNlLm1ha2VQb3N0UmVxdWVzdChcInJlZnJlc2hUb2tlblwiLCBmdWxsVXJsLCB7IGFwcFR5cGU6IFwiV0VCQVBQXCIgfSlcclxuICB9XHJcblxyXG4gIGdldEF1dGhvcml6YXRpb25Ub2tlbigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YSQudmFsdWU/LnRva2VuITtcclxuICB9XHJcblxyXG4gIGlzQXV0aGVudGljYXRlID0gKCk6IGJvb2xlYW4gPT4ge1xyXG4gICAgcmV0dXJuICEhdGhpcy5kYXRhJC52YWx1ZTtcclxuICB9O1xyXG5cclxuICBnZXRVc2VySW5mbyA9ICgpID0+IHt9O1xyXG5cclxuICBnZXRUb2tlbiA9ICgpOiBzdHJpbmcgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YSQudmFsdWUhLnRva2VuO1xyXG4gIH07XHJcblxyXG4gIHBhcnNlSnd0ICh0b2tlbjogc3RyaW5nKSB7XHJcbiAgICB2YXIgYmFzZTY0VXJsID0gdG9rZW4uc3BsaXQoJy4nKVsxXTtcclxuICAgIHZhciBiYXNlNjQgPSBiYXNlNjRVcmwucmVwbGFjZSgvLS9nLCAnKycpLnJlcGxhY2UoL18vZywgJy8nKTtcclxuICAgIHZhciBqc29uUGF5bG9hZCA9IGRlY29kZVVSSUNvbXBvbmVudCh3aW5kb3cuYXRvYihiYXNlNjQpLnNwbGl0KCcnKS5tYXAoYyA9PiB7XHJcbiAgICAgICAgcmV0dXJuICclJyArICgnMDAnICsgYy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpO1xyXG4gICAgfSkuam9pbignJykpO1xyXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoanNvblBheWxvYWQpO1xyXG4gIH1cclxuXHJcbiAgcmVzb2x2ZUF1dGhlbnRpY2F0ZVJlc3BvbnNlKHg6IGFueSk6IHZvaWQge1xyXG5cclxuICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDAgJiYgeC5ib2R5Py5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgY29uc3QgYm9keTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4LmJvZHk7XHJcbiAgICAgIGlmIChib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgIGNvbnN0IGlubmVyQm9keSA9IGJvZHkuaW5uZXJCb2R5O1xyXG4gICAgICAgIHRoaXMuZGF0YSQubmV4dChpbm5lckJvZHkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -1,11 +1,11 @@
1
1
  import { Injectable, isDevMode } from '@angular/core';
2
2
  import { BehaviorSubject } from 'rxjs';
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "./auth.service";
4
+ import * as i1 from "./pkce.service";
5
5
  import * as i2 from "@angular/router";
6
6
  export class DeveloperValidationService {
7
- constructor(authService, route) {
8
- this.authService = authService;
7
+ constructor(pkceService, route) {
8
+ this.pkceService = pkceService;
9
9
  this.route = route;
10
10
  this.authorizationEndpoint = "https://login.microsoftonline.com/4a0cab94-1870-452d-a505-01a1b2bf20eb/oauth2/v2.0/authorize";
11
11
  this.tokenEndpoint = "https://login.microsoftonline.com/4a0cab94-1870-452d-a505-01a1b2bf20eb/oauth2/v2.0/token";
@@ -63,9 +63,9 @@ export class DeveloperValidationService {
63
63
  validateDeveloperViaPopup() {
64
64
  if (!!localStorage.getItem("codeVerifier"))
65
65
  return;
66
- const codeVerifier = this.authService.generateRandomCodeVerifier(43);
66
+ const codeVerifier = this.pkceService.generateRandomCodeVerifier(43);
67
67
  localStorage.setItem("codeVerifier", codeVerifier);
68
- this.authService.generateCodeChallengeFromVerifier(codeVerifier).then(codeChallenge => {
68
+ this.pkceService.generateCodeChallengeFromVerifier(codeVerifier).then(codeChallenge => {
69
69
  const authorizationUrl = `${this.authorizationEndpoint}?` +
70
70
  `response_type=code` +
71
71
  `&client_id=${this.clientId}` +
@@ -96,7 +96,7 @@ export class DeveloperValidationService {
96
96
  }, 500);
97
97
  });
98
98
  }
99
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: DeveloperValidationService, deps: [{ token: i1.AuthService }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable }); }
99
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: DeveloperValidationService, deps: [{ token: i1.PkceService }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable }); }
100
100
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: DeveloperValidationService, providedIn: 'root' }); }
101
101
  }
102
102
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: DeveloperValidationService, decorators: [{
@@ -104,5 +104,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
104
104
  args: [{
105
105
  providedIn: 'root'
106
106
  }]
107
- }], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.ActivatedRoute }] });
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2ZWxvcGVyLXZhbGlkYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL3NlcnZpY2VzL2RldmVsb3Blci12YWxpZGF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQU92QyxNQUFNLE9BQU8sMEJBQTBCO0lBVXJDLFlBQ1UsV0FBd0IsRUFDeEIsS0FBcUI7UUFEckIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFWL0IsMEJBQXFCLEdBQVcsOEZBQThGLENBQUM7UUFDL0gsa0JBQWEsR0FBVywwRkFBMEYsQ0FBQztRQUNuSCxhQUFRLEdBQVcsc0NBQXNDLENBQUM7UUFDMUQsaUJBQVksR0FBVywwQ0FBMEMsQ0FBQztRQUNsRSxnQkFBVyxHQUFXLHVDQUF1QyxDQUFDO1FBRTlELG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFNcEQsSUFBSSxTQUFTLEVBQUUsRUFBRTtZQUNmLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1NBQ2hDO0lBRUgsQ0FBQztJQUVELHVCQUF1QjtRQUNyQixNQUFNLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQztRQUV0Qyw0QkFBNEI7UUFDNUIsTUFBTSxhQUFhLEdBQUcsR0FBRyxFQUFFO1lBQ3pCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUM7WUFDdkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1lB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dWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZXZlbG9wZXJWYWxpZGF0aW9uU2VydmljZSB7XHJcblxyXG4gIGF1dGhvcml6YXRpb25FbmRwb2ludDogc3RyaW5nID0gXCJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNGEwY2FiOTQtMTg3MC00NTJkLWE1MDUtMDFhMWIyYmYyMGViL29hdXRoMi92Mi4wL2F1dGhvcml6ZVwiO1xyXG4gIHRva2VuRW5kcG9pbnQ6IHN0cmluZyA9IFwiaHR0cHM6Ly9sb2dpbi5taWNyb3NvZnRvbmxpbmUuY29tLzRhMGNhYjk0LTE4NzAtNDUyZC1hNTA1LTAxYTFiMmJmMjBlYi9vYXV0aDIvdjIuMC90b2tlblwiO1xyXG4gIGNsaWVudElkOiBzdHJpbmcgPSBcIjE3MDQyOTYzLThmMTEtNDMyZS04ZGVhLWUxMWRlOGQ3ZWJjMVwiO1xyXG4gIGNsaWVudFNlY3JldDogc3RyaW5nID0gXCJlaG04UX5DZEZrY1FMNlkwYlVmQms5ZWRyYmtVTy1tdFNNd1l4ZGpVXCI7XHJcbiAgcmVkaXJlY3RVcmk6IHN0cmluZyA9IFwiaHR0cHM6Ly9sb2NhbGhvc3Q6NDIwMC9vYXV0aC1jYWxsYmFja1wiO1xyXG5cclxuICBzZWN1cml0eVBhc3NlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlXHJcbiAgKSB7XHJcbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgdGhpcy5tb25pdG9yVmFsaWRhdGlvblN0YXR1cygpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG1vbml0b3JWYWxpZGF0aW9uU3RhdHVzKCkge1xyXG4gICAgY29uc3Qgb3ZlcmxheUlkID0gJ2RldmVsb3Blci1vdmVybGF5JztcclxuXHJcbiAgICAvLyBDcmVhdGUgYW4gb3ZlcmxheSBlbGVtZW50XHJcbiAgICBjb25zdCBjcmVhdGVPdmVybGF5ID0gKCkgPT4ge1xyXG4gICAgICBjb25zdCBvdmVybGF5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIG92ZXJsYXkuaWQgPSBvdmVybGF5SWQ7XHJcbiAgICAgIG92ZXJsYXkuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xyXG4gICAgICBvdmVybGF5LnN0eWxlLnRvcCA9ICcwJztcclxuICAgICAgb3ZlcmxheS5zdHlsZS5sZWZ0ID0gJzAnO1xyXG4gICAgICBvdmVybGF5LnN0eWxlLndpZHRoID0gJzEwMCUnO1xyXG4gICAgICBvdmVybGF5LnN0eWxlLmhlaWdodCA9ICcxMDAlJztcclxuICAgICAgb3ZlcmxheS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAncmdiYSgwLCAwLCAwLCAwLjcpJzsgLy8gc2VtaS10cmFuc3BhcmVudCBibGFja1xyXG4gICAgICBvdmVybGF5LnN0eWxlLnpJbmRleCA9ICc5OTk5JztcclxuICAgICAgb3ZlcmxheS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnO1xyXG4gICAgICBvdmVybGF5LnN0eWxlLmp1c3RpZnlDb250ZW50ID0gJ2NlbnRlcic7XHJcbiAgICAgIG92ZXJsYXkuc3R5bGUuYWxpZ25JdGVtcyA9ICdjZW50ZXInO1xyXG4gICAgICBvdmVybGF5LnN0eWxlLmNvbG9yID0gJyNmZmYnO1xyXG4gICAgICBvdmVybGF5LnN0eWxlLmZvbnRTaXplID0gJzI0cHgnO1xyXG4gICAgICBvdmVybGF5LmlubmVyVGV4dCA9ICdDaGVja2luZyBFbnRyYSBJRCBBY2NvdW50Li4uJztcclxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChvdmVybGF5KTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gUmVtb3ZlIHRoZSBvdmVybGF5IGlmIG5lZWRlZFxyXG4gICAgY29uc3QgcmVtb3ZlT3ZlcmxheSA9ICgpID0+IHtcclxuICAgICAgY29uc3Qgb3ZlcmxheSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG92ZXJsYXlJZCk7XHJcbiAgICAgIGlmIChvdmVybGF5KSB7XHJcbiAgICAgICAgb3ZlcmxheS5yZW1vdmUoKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBNb25pdG9yIHRoZSB2YWx1ZXMgdXNpbmcgc2V0SW50ZXJ2YWxcclxuICAgIHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgY29uc3Qgc2VjdXJpdHlQYXNzZWQgPSB0aGlzLnNlY3VyaXR5UGFzc2VkJC52YWx1ZTtcclxuXHJcbiAgICAgIGlmICghc2VjdXJpdHlQYXNzZWQpIHtcclxuICAgICAgICAvLyBJZiB2YWxpZGF0aW9uIGlzIGRvbmUgYnV0IHNlY3VyaXR5IG5vdCBwYXNzZWQsIGNyZWF0ZSB0aGUgb3ZlcmxheVxyXG4gICAgICAgIGlmICghZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3ZlcmxheUlkKSkge1xyXG4gICAgICAgICAgY3JlYXRlT3ZlcmxheSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBJZiB2YWxpZGF0aW9uIHBhc3NlcyBvciBpbiBwcm9ncmVzcywgcmVtb3ZlIHRoZSBvdmVybGF5XHJcbiAgICAgICAgcmVtb3ZlT3ZlcmxheSgpO1xyXG4gICAgICB9XHJcbiAgICB9LCA1MDApOyAvLyBDaGVjayBldmVyeSA1MDBtcyB0byBhdm9pZCBkZXZlbG9wZXIgaW50ZXJmZXJlbmNlXHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZURldmVsb3BlclZpYVBvcHVwKCkge1xyXG5cclxuICAgIGlmICghIWxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY29kZVZlcmlmaWVyXCIpKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgY29kZVZlcmlmaWVyID0gdGhpcy5hdXRoU2VydmljZS5nZW5lcmF0ZVJhbmRvbUNvZGVWZXJpZmllcig0Myk7XHJcblxyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJjb2RlVmVyaWZpZXJcIiwgY29kZVZlcmlmaWVyKVxyXG5cclxuICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2VuZXJhdGVDb2RlQ2hhbGxlbmdlRnJvbVZlcmlmaWVyKGNvZGVWZXJpZmllcikudGhlbihjb2RlQ2hhbGxlbmdlID0+IHtcclxuXHJcbiAgICAgIGNvbnN0IGF1dGhvcml6YXRpb25VcmwgPSBgJHt0aGlzLmF1dGhvcml6YXRpb25FbmRwb2ludH0/YCArXHJcbiAgICAgICAgYHJlc3BvbnNlX3R5cGU9Y29kZWAgK1xyXG4gICAgICAgIGAmY2xpZW50X2lkPSR7dGhpcy5jbGllbnRJZH1gICtcclxuICAgICAgICBgJnJlZGlyZWN0X3VyaT0ke3RoaXMucmVkaXJlY3RVcml9YCArXHJcbiAgICAgICAgYCZjb2RlX2NoYWxsZW5nZT0ke2NvZGVDaGFsbGVuZ2V9YCArXHJcbiAgICAgICAgYCZjb2RlX2NoYWxsZW5nZV9tZXRob2Q9UzI1NmAgK1xyXG4gICAgICAgIGAmc2NvcGU9b3BlbmlkIHByb2ZpbGUgZW1haWxgO1xyXG5cclxuICAgICAgY29uc3QgcG9wdXBXaWR0aCA9IDUwMDtcclxuICAgICAgY29uc3QgcG9wdXBIZWlnaHQgPSA1MDA7XHJcbiAgICAgIGNvbnN0IGxlZnQgPSAod2luZG93LmlubmVyV2lkdGggLSBwb3B1cFdpZHRoKSAvIDI7XHJcbiAgICAgIGNvbnN0IHRvcCA9ICh3aW5kb3cuaW5uZXJIZWlnaHQgLSBwb3B1cEhlaWdodCkgLyAyO1xyXG5cclxuICAgICAgKHdpbmRvdyBhcyBhbnkpLmdsb2JhbFBvcHVwSWQgPSBjcnlwdG8ucmFuZG9tVVVJRCgpO1xyXG5cclxuICAgICAgY29uc3QgcG9wdXAgPSB3aW5kb3cub3BlbihcclxuICAgICAgICBhdXRob3JpemF0aW9uVXJsLFxyXG4gICAgICAgICdPQXV0aDIgUG9wdXAnLFxyXG4gICAgICAgIGB3aWR0aD0ke3BvcHVwV2lkdGh9LGhlaWdodD0ke3BvcHVwSGVpZ2h0fSx0b3A9JHt0b3B9LGxlZnQ9JHtsZWZ0fWBcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGNvbnN0IHJlY2VpdmVNZXNzYWdlID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHtcclxuICAgICAgICBpZiAoISFldmVudC5kYXRhPy5hdXRoQ29kZSkge1xyXG4gICAgICAgICAgdGhpcy5zZWN1cml0eVBhc3NlZCQubmV4dCh0cnVlKTtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJjb2RlVmVyaWZpZXJcIikpO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuXHJcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgcmVjZWl2ZU1lc3NhZ2UsIGZhbHNlKTtcclxuXHJcbiAgICAgIC8vIENsZWFuIHVwIHRoZSBsaXN0ZW5lciB3aGVuIHRoZSBwb3B1cCBpcyBjbG9zZWRcclxuICAgICAgY29uc3QgcG9wdXBDaGVja0ludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgIGlmIChwb3B1cCAmJiBwb3B1cC5jbG9zZWQpIHtcclxuICAgICAgICAgIGNsZWFySW50ZXJ2YWwocG9wdXBDaGVja0ludGVydmFsKTtcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwiY29kZVZlcmlmaWVyXCIpO1xyXG4gICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCByZWNlaXZlTWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCA1MDApO1xyXG5cclxuICAgIH0pXHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
107
+ }], ctorParameters: () => [{ type: i1.PkceService }, { type: i2.ActivatedRoute }] });
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2ZWxvcGVyLXZhbGlkYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL3NlcnZpY2VzL2RldmVsb3Blci12YWxpZGF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQU92QyxNQUFNLE9BQU8sMEJBQTBCO0lBVXJDLFlBQ1UsV0FBd0IsRUFDeEIsS0FBcUI7UUFEckIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFWL0IsMEJBQXFCLEdBQVcsOEZBQThGLENBQUM7UUFDL0gsa0JBQWEsR0FBVywwRkFBMEYsQ0FBQztRQUNuSCxhQUFRLEdBQVcsc0NBQXNDLENBQUM7UUFDMUQsaUJBQVksR0FBVywwQ0FBMEMsQ0FBQztRQUNsRSxnQkFBVyxHQUFXLHVDQUF1QyxDQUFDO1FBRTlELG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFNcEQsSUFBSSxTQUFTLEVBQUUsRUFBRTtZQUNmLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1NBQ2hDO0lBRUgsQ0FBQztJQUVELHVCQUF1QjtRQUNyQixNQUFNLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQztRQUV0Qyw0QkFBNEI7UUFDNUIsTUFBTSxhQUFhLEdBQUcsR0FBRyxFQUFFO1lBQ3pCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUM7WUFDdkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1lB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dWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFBrY2VTZXJ2aWNlIH0gZnJvbSAnLi9wa2NlLnNlcnZpY2UnOyBcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRGV2ZWxvcGVyVmFsaWRhdGlvblNlcnZpY2Uge1xyXG5cclxuICBhdXRob3JpemF0aW9uRW5kcG9pbnQ6IHN0cmluZyA9IFwiaHR0cHM6Ly9sb2dpbi5taWNyb3NvZnRvbmxpbmUuY29tLzRhMGNhYjk0LTE4NzAtNDUyZC1hNTA1LTAxYTFiMmJmMjBlYi9vYXV0aDIvdjIuMC9hdXRob3JpemVcIjtcclxuICB0b2tlbkVuZHBvaW50OiBzdHJpbmcgPSBcImh0dHBzOi8vbG9naW4ubWljcm9zb2Z0b25saW5lLmNvbS80YTBjYWI5NC0xODcwLTQ1MmQtYTUwNS0wMWExYjJiZjIwZWIvb2F1dGgyL3YyLjAvdG9rZW5cIjtcclxuICBjbGllbnRJZDogc3RyaW5nID0gXCIxNzA0Mjk2My04ZjExLTQzMmUtOGRlYS1lMTFkZThkN2ViYzFcIjtcclxuICBjbGllbnRTZWNyZXQ6IHN0cmluZyA9IFwiZWhtOFF+Q2RGa2NRTDZZMGJVZkJrOWVkcmJrVU8tbXRTTXdZeGRqVVwiO1xyXG4gIHJlZGlyZWN0VXJpOiBzdHJpbmcgPSBcImh0dHBzOi8vbG9jYWxob3N0OjQyMDAvb2F1dGgtY2FsbGJhY2tcIjtcclxuXHJcbiAgc2VjdXJpdHlQYXNzZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBwa2NlU2VydmljZTogUGtjZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxyXG4gICkge1xyXG4gICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgIHRoaXMubW9uaXRvclZhbGlkYXRpb25TdGF0dXMoKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBtb25pdG9yVmFsaWRhdGlvblN0YXR1cygpIHtcclxuICAgIGNvbnN0IG92ZXJsYXlJZCA9ICdkZXZlbG9wZXItb3ZlcmxheSc7XHJcblxyXG4gICAgLy8gQ3JlYXRlIGFuIG92ZXJsYXkgZWxlbWVudFxyXG4gICAgY29uc3QgY3JlYXRlT3ZlcmxheSA9ICgpID0+IHtcclxuICAgICAgY29uc3Qgb3ZlcmxheSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICBvdmVybGF5LmlkID0gb3ZlcmxheUlkO1xyXG4gICAgICBvdmVybGF5LnN0eWxlLnBvc2l0aW9uID0gJ2ZpeGVkJztcclxuICAgICAgb3ZlcmxheS5zdHlsZS50b3AgPSAnMCc7XHJcbiAgICAgIG92ZXJsYXkuc3R5bGUubGVmdCA9ICcwJztcclxuICAgICAgb3ZlcmxheS5zdHlsZS53aWR0aCA9ICcxMDAlJztcclxuICAgICAgb3ZlcmxheS5zdHlsZS5oZWlnaHQgPSAnMTAwJSc7XHJcbiAgICAgIG92ZXJsYXkuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ3JnYmEoMCwgMCwgMCwgMC43KSc7IC8vIHNlbWktdHJhbnNwYXJlbnQgYmxhY2tcclxuICAgICAgb3ZlcmxheS5zdHlsZS56SW5kZXggPSAnOTk5OSc7XHJcbiAgICAgIG92ZXJsYXkuc3R5bGUuZGlzcGxheSA9ICdmbGV4JztcclxuICAgICAgb3ZlcmxheS5zdHlsZS5qdXN0aWZ5Q29udGVudCA9ICdjZW50ZXInO1xyXG4gICAgICBvdmVybGF5LnN0eWxlLmFsaWduSXRlbXMgPSAnY2VudGVyJztcclxuICAgICAgb3ZlcmxheS5zdHlsZS5jb2xvciA9ICcjZmZmJztcclxuICAgICAgb3ZlcmxheS5zdHlsZS5mb250U2l6ZSA9ICcyNHB4JztcclxuICAgICAgb3ZlcmxheS5pbm5lclRleHQgPSAnQ2hlY2tpbmcgRW50cmEgSUQgQWNjb3VudC4uLic7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQob3ZlcmxheSk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIFJlbW92ZSB0aGUgb3ZlcmxheSBpZiBuZWVkZWRcclxuICAgIGNvbnN0IHJlbW92ZU92ZXJsYXkgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IG92ZXJsYXkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvdmVybGF5SWQpO1xyXG4gICAgICBpZiAob3ZlcmxheSkge1xyXG4gICAgICAgIG92ZXJsYXkucmVtb3ZlKCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLy8gTW9uaXRvciB0aGUgdmFsdWVzIHVzaW5nIHNldEludGVydmFsXHJcbiAgICBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHNlY3VyaXR5UGFzc2VkID0gdGhpcy5zZWN1cml0eVBhc3NlZCQudmFsdWU7XHJcblxyXG4gICAgICBpZiAoIXNlY3VyaXR5UGFzc2VkKSB7XHJcbiAgICAgICAgLy8gSWYgdmFsaWRhdGlvbiBpcyBkb25lIGJ1dCBzZWN1cml0eSBub3QgcGFzc2VkLCBjcmVhdGUgdGhlIG92ZXJsYXlcclxuICAgICAgICBpZiAoIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG92ZXJsYXlJZCkpIHtcclxuICAgICAgICAgIGNyZWF0ZU92ZXJsYXkoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gSWYgdmFsaWRhdGlvbiBwYXNzZXMgb3IgaW4gcHJvZ3Jlc3MsIHJlbW92ZSB0aGUgb3ZlcmxheVxyXG4gICAgICAgIHJlbW92ZU92ZXJsYXkoKTtcclxuICAgICAgfVxyXG4gICAgfSwgNTAwKTsgLy8gQ2hlY2sgZXZlcnkgNTAwbXMgdG8gYXZvaWQgZGV2ZWxvcGVyIGludGVyZmVyZW5jZVxyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVEZXZlbG9wZXJWaWFQb3B1cCgpIHtcclxuXHJcbiAgICBpZiAoISFsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNvZGVWZXJpZmllclwiKSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGNvZGVWZXJpZmllciA9IHRoaXMucGtjZVNlcnZpY2UuZ2VuZXJhdGVSYW5kb21Db2RlVmVyaWZpZXIoNDMpO1xyXG5cclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiY29kZVZlcmlmaWVyXCIsIGNvZGVWZXJpZmllcilcclxuXHJcbiAgICB0aGlzLnBrY2VTZXJ2aWNlLmdlbmVyYXRlQ29kZUNoYWxsZW5nZUZyb21WZXJpZmllcihjb2RlVmVyaWZpZXIpLnRoZW4oY29kZUNoYWxsZW5nZSA9PiB7XHJcblxyXG4gICAgICBjb25zdCBhdXRob3JpemF0aW9uVXJsID0gYCR7dGhpcy5hdXRob3JpemF0aW9uRW5kcG9pbnR9P2AgK1xyXG4gICAgICAgIGByZXNwb25zZV90eXBlPWNvZGVgICtcclxuICAgICAgICBgJmNsaWVudF9pZD0ke3RoaXMuY2xpZW50SWR9YCArXHJcbiAgICAgICAgYCZyZWRpcmVjdF91cmk9JHt0aGlzLnJlZGlyZWN0VXJpfWAgK1xyXG4gICAgICAgIGAmY29kZV9jaGFsbGVuZ2U9JHtjb2RlQ2hhbGxlbmdlfWAgK1xyXG4gICAgICAgIGAmY29kZV9jaGFsbGVuZ2VfbWV0aG9kPVMyNTZgICtcclxuICAgICAgICBgJnNjb3BlPW9wZW5pZCBwcm9maWxlIGVtYWlsYDtcclxuXHJcbiAgICAgIGNvbnN0IHBvcHVwV2lkdGggPSA1MDA7XHJcbiAgICAgIGNvbnN0IHBvcHVwSGVpZ2h0ID0gNTAwO1xyXG4gICAgICBjb25zdCBsZWZ0ID0gKHdpbmRvdy5pbm5lcldpZHRoIC0gcG9wdXBXaWR0aCkgLyAyO1xyXG4gICAgICBjb25zdCB0b3AgPSAod2luZG93LmlubmVySGVpZ2h0IC0gcG9wdXBIZWlnaHQpIC8gMjtcclxuXHJcbiAgICAgICh3aW5kb3cgYXMgYW55KS5nbG9iYWxQb3B1cElkID0gY3J5cHRvLnJhbmRvbVVVSUQoKTtcclxuXHJcbiAgICAgIGNvbnN0IHBvcHVwID0gd2luZG93Lm9wZW4oXHJcbiAgICAgICAgYXV0aG9yaXphdGlvblVybCxcclxuICAgICAgICAnT0F1dGgyIFBvcHVwJyxcclxuICAgICAgICBgd2lkdGg9JHtwb3B1cFdpZHRofSxoZWlnaHQ9JHtwb3B1cEhlaWdodH0sdG9wPSR7dG9wfSxsZWZ0PSR7bGVmdH1gXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBjb25zdCByZWNlaXZlTWVzc2FnZSA9IChldmVudDogTWVzc2FnZUV2ZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKCEhZXZlbnQuZGF0YT8uYXV0aENvZGUpIHtcclxuICAgICAgICAgIHRoaXMuc2VjdXJpdHlQYXNzZWQkLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwiY29kZVZlcmlmaWVyXCIpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcblxyXG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHJlY2VpdmVNZXNzYWdlLCBmYWxzZSk7XHJcblxyXG4gICAgICAvLyBDbGVhbiB1cCB0aGUgbGlzdGVuZXIgd2hlbiB0aGUgcG9wdXAgaXMgY2xvc2VkXHJcbiAgICAgIGNvbnN0IHBvcHVwQ2hlY2tJbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICBpZiAocG9wdXAgJiYgcG9wdXAuY2xvc2VkKSB7XHJcbiAgICAgICAgICBjbGVhckludGVydmFsKHBvcHVwQ2hlY2tJbnRlcnZhbCk7XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcImNvZGVWZXJpZmllclwiKTtcclxuICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgcmVjZWl2ZU1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgNTAwKTtcclxuXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbn1cclxuIl19