@alfresco/adf-process-services-cloud 7.0.0-alpha.6 → 7.0.0-alpha.6-11951477264

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.
@@ -14,96 +14,26 @@
14
14
  * See the License for the specific language governing permissions and
15
15
  * limitations under the License.
16
16
  */
17
- import { Apollo } from 'apollo-angular';
18
- import { HttpLink } from 'apollo-angular/http';
19
- import { split, gql, InMemoryCache, ApolloLink } from '@apollo/client/core';
20
- import { WebSocketLink } from '@apollo/client/link/ws';
21
- import { onError } from '@apollo/client/link/error';
22
- import { getMainDefinition } from '@apollo/client/utilities';
17
+ import { gql } from '@apollo/client/core';
23
18
  import { Injectable } from '@angular/core';
24
- import { AuthenticationService } from '@alfresco/adf-core';
25
- import { BaseCloudService } from './base-cloud.service';
26
- import { AdfHttpClient } from '@alfresco/adf-core/api';
19
+ import { WebSocketService } from './web-socket.service';
27
20
  import * as i0 from "@angular/core";
28
- import * as i1 from "apollo-angular";
29
- import * as i2 from "apollo-angular/http";
30
- import * as i3 from "@alfresco/adf-core";
31
- import * as i4 from "@alfresco/adf-core/api";
32
- export class NotificationCloudService extends BaseCloudService {
33
- constructor(apollo, http, authService, adfHttpClient) {
34
- super(adfHttpClient);
35
- this.apollo = apollo;
36
- this.http = http;
37
- this.authService = authService;
38
- this.adfHttpClient = adfHttpClient;
39
- this.appsListening = [];
40
- }
41
- get webSocketHost() {
42
- return this.contextRoot.split('://')[1];
43
- }
44
- get protocol() {
45
- return this.contextRoot.split('://')[0] === 'https' ? 'wss' : 'ws';
46
- }
47
- initNotificationsForApp(appName) {
48
- if (!this.appsListening.includes(appName)) {
49
- this.appsListening.push(appName);
50
- const httpLink = this.http.create({
51
- uri: `${this.getBasePath(appName)}/notifications/graphql`
52
- });
53
- const webSocketLink = new WebSocketLink({
54
- uri: `${this.protocol}://${this.webSocketHost}/${appName}/notifications/ws/graphql`,
55
- options: {
56
- reconnect: true,
57
- lazy: true,
58
- connectionParams: {
59
- kaInterval: 2000,
60
- // eslint-disable-next-line @typescript-eslint/naming-convention
61
- 'X-Authorization': 'Bearer ' + this.authService.getToken()
62
- }
63
- }
64
- });
65
- const link = split(({ query }) => {
66
- const definition = getMainDefinition(query);
67
- return definition.kind === 'OperationDefinition' && definition.operation === 'subscription';
68
- }, webSocketLink, httpLink);
69
- const errorLink = onError(({ graphQLErrors, operation, forward }) => {
70
- if (graphQLErrors) {
71
- for (const err of graphQLErrors) {
72
- switch (err.extensions.code) {
73
- case 'UNAUTHENTICATED': {
74
- const oldHeaders = operation.getContext().headers;
75
- operation.setContext({
76
- headers: {
77
- ...oldHeaders,
78
- // eslint-disable-next-line @typescript-eslint/naming-convention
79
- 'X-Authorization': 'Bearer ' + this.authService.getToken()
80
- }
81
- });
82
- forward(operation);
83
- break;
84
- }
85
- default:
86
- break;
87
- }
88
- }
89
- }
90
- });
91
- this.apollo.createNamed(appName, {
92
- link: ApolloLink.from([errorLink, link]),
93
- cache: new InMemoryCache({ merge: true }),
94
- defaultOptions: {
95
- watchQuery: {
96
- errorPolicy: 'all'
97
- }
98
- }
99
- });
100
- }
21
+ import * as i1 from "./web-socket.service";
22
+ export class NotificationCloudService {
23
+ constructor(webSocketService) {
24
+ this.webSocketService = webSocketService;
101
25
  }
102
26
  makeGQLQuery(appName, gqlQuery) {
103
- this.initNotificationsForApp(appName);
104
- return this.apollo.use(appName).subscribe({ query: gql(gqlQuery) });
27
+ return this.webSocketService.getSubscription({
28
+ apolloClientName: appName,
29
+ wsUrl: `${appName}/notifications`,
30
+ httpUrl: `${appName}/notifications/graphql`,
31
+ subscriptionOptions: {
32
+ query: gql(gqlQuery)
33
+ }
34
+ });
105
35
  }
106
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: NotificationCloudService, deps: [{ token: i1.Apollo }, { token: i2.HttpLink }, { token: i3.AuthenticationService }, { token: i4.AdfHttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
36
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: NotificationCloudService, deps: [{ token: i1.WebSocketService }], target: i0.ɵɵFactoryTarget.Injectable }); }
107
37
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: NotificationCloudService, providedIn: 'root' }); }
108
38
  }
109
39
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: NotificationCloudService, decorators: [{
@@ -111,5 +41,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
111
41
  args: [{
112
42
  providedIn: 'root'
113
43
  }]
114
- }], ctorParameters: function () { return [{ type: i1.Apollo }, { type: i2.HttpLink }, { type: i3.AuthenticationService }, { type: i4.AdfHttpClient }]; } });
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLWNsb3VkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL3NlcnZpY2VzL25vdGlmaWNhdGlvbi1jbG91ZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBdUIsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7QUFLdkQsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGdCQUFnQjtJQUcxRCxZQUFtQixNQUFjLEVBQVUsSUFBYyxFQUFVLFdBQWtDLEVBQVksYUFBNEI7UUFDekksS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRE4sV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLFNBQUksR0FBSixJQUFJLENBQVU7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBdUI7UUFBWSxrQkFBYSxHQUFiLGFB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QUNaLFVBQVUsRUFBRTt3QkFDUixXQUFXLEVBQUUsS0FBSztxQkFDckI7aUJBQ0o7YUFDSixDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7SUFFRCxZQUFZLENBQUMsT0FBZSxFQUFFLFFBQWdCO1FBQzFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7OEdBbEZRLHdCQUF3QjtrSEFBeEIsd0JBQXdCLGNBRnJCLE1BQU07OzJGQUVULHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI0IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEFwb2xsbyB9IGZyb20gJ2Fwb2xsby1hbmd1bGFyJztcbmltcG9ydCB7IEh0dHBMaW5rIH0gZnJvbSAnYXBvbGxvLWFuZ3VsYXIvaHR0cCc7XG5pbXBvcnQgeyBzcGxpdCwgZ3FsLCBJbk1lbW9yeUNhY2hlLCBBcG9sbG9MaW5rLCBJbk1lbW9yeUNhY2hlQ29uZmlnIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XG5pbXBvcnQgeyBXZWJTb2NrZXRMaW5rIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvbGluay93cyc7XG5pbXBvcnQgeyBvbkVycm9yIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvbGluay9lcnJvcic7XG5pbXBvcnQgeyBnZXRNYWluRGVmaW5pdGlvbiB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L3V0aWxpdGllcyc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNsb3VkU2VydmljZSB9IGZyb20gJy4vYmFzZS1jbG91ZC5zZXJ2aWNlJztcbmltcG9ydCB7IEFkZkh0dHBDbGllbnQgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUvYXBpJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25DbG91ZFNlcnZpY2UgZXh0ZW5kcyBCYXNlQ2xvdWRTZXJ2aWNlIHtcbiAgICBhcHBzTGlzdGVuaW5nID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgYXBvbGxvOiBBcG9sbG8sIHByaXZhdGUgaHR0cDogSHR0cExpbmssIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSwgcHJvdGVjdGVkIGFkZkh0dHBDbGllbnQ6IEFkZkh0dHBDbGllbnQpIHtcbiAgICAgICAgc3VwZXIoYWRmSHR0cENsaWVudCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgd2ViU29ja2V0SG9zdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGV4dFJvb3Quc3BsaXQoJzovLycpWzFdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IHByb3RvY29sKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0Um9vdC5zcGxpdCgnOi8vJylbMF0gPT09ICdodHRwcycgPyAnd3NzJyA6ICd3cyc7XG4gICAgfVxuXG4gICAgaW5pdE5vdGlmaWNhdGlvbnNGb3JBcHAoYXBwTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5hcHBzTGlzdGVuaW5nLmluY2x1ZGVzKGFwcE5hbWUpKSB7XG4gICAgICAgICAgICB0aGlzLmFwcHNMaXN0ZW5pbmcucHVzaChhcHBOYW1lKTtcbiAgICAgICAgICAgIGNvbnN0IGh0dHBMaW5rID0gdGhpcy5odHRwLmNyZWF0ZSh7XG4gICAgICAgICAgICAgICAgdXJpOiBgJHt0aGlzLmdldEJhc2VQYXRoKGFwcE5hbWUpfS9ub3RpZmljYXRpb25zL2dyYXBocWxgXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3Qgd2ViU29ja2V0TGluayA9IG5ldyBXZWJTb2NrZXRMaW5rKHtcbiAgICAgICAgICAgICAgICB1cmk6IGAke3RoaXMucHJvdG9jb2x9Oi8vJHt0aGlzLndlYlNvY2tldEhvc3R9LyR7YXBwTmFtZX0vbm90aWZpY2F0aW9ucy93cy9ncmFwaHFsYCxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgIHJlY29ubmVjdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgbGF6eTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvblBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICAgICAga2FJbnRlcnZhbDogMjAwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICdYLUF1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyB0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuKClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBsaW5rID0gc3BsaXQoXG4gICAgICAgICAgICAgICAgKHsgcXVlcnkgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWZpbml0aW9uID0gZ2V0TWFpbkRlZmluaXRpb24ocXVlcnkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVmaW5pdGlvbi5raW5kID09PSAnT3BlcmF0aW9uRGVmaW5pdGlvbicgJiYgZGVmaW5pdGlvbi5vcGVyYXRpb24gPT09ICdzdWJzY3JpcHRpb24nO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgd2ViU29ja2V0TGluayxcbiAgICAgICAgICAgICAgICBodHRwTGlua1xuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29uc3QgZXJyb3JMaW5rID0gb25FcnJvcigoeyBncmFwaFFMRXJyb3JzLCBvcGVyYXRpb24sIGZvcndhcmQgfSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChncmFwaFFMRXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZXJyIG9mIGdyYXBoUUxFcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZXJyLmV4dGVuc2lvbnMuY29kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1VOQVVUSEVOVElDQVRFRCc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2xkSGVhZGVycyA9IG9wZXJhdGlvbi5nZXRDb250ZXh0KCkuaGVhZGVycztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uLnNldENvbnRleHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLm9sZEhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdYLUF1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyB0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcndhcmQob3BlcmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuYXBvbGxvLmNyZWF0ZU5hbWVkKGFwcE5hbWUsIHtcbiAgICAgICAgICAgICAgICBsaW5rOiBBcG9sbG9MaW5rLmZyb20oW2Vycm9yTGluaywgbGlua10pLFxuICAgICAgICAgICAgICAgIGNhY2hlOiBuZXcgSW5NZW1vcnlDYWNoZSh7IG1lcmdlOiB0cnVlIH0gYXMgSW5NZW1vcnlDYWNoZUNvbmZpZyksXG4gICAgICAgICAgICAgICAgZGVmYXVsdE9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgd2F0Y2hRdWVyeToge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JQb2xpY3k6ICdhbGwnXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1ha2VHUUxRdWVyeShhcHBOYW1lOiBzdHJpbmcsIGdxbFF1ZXJ5OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5pbml0Tm90aWZpY2F0aW9uc0ZvckFwcChhcHBOYW1lKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBvbGxvLnVzZShhcHBOYW1lKS5zdWJzY3JpYmUoeyBxdWVyeTogZ3FsKGdxbFF1ZXJ5KSB9KTtcbiAgICB9XG59XG4iXX0=
44
+ }], ctorParameters: function () { return [{ type: i1.WebSocketService }]; } });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLWNsb3VkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL3NlcnZpY2VzL25vdGlmaWNhdGlvbi1jbG91ZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUFLeEQsTUFBTSxPQUFPLHdCQUF3QjtJQUNqQyxZQUE2QixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUFHLENBQUM7SUFFbkUsWUFBWSxDQUFDLE9BQWUsRUFBRSxRQUFnQjtRQUMxQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUM7WUFDekMsZ0JBQWdCLEVBQUUsT0FBTztZQUN6QixLQUFLLEVBQUUsR0FBRyxPQUFPLGdCQUFnQjtZQUNqQyxPQUFPLEVBQUUsR0FBRyxPQUFPLHdCQUF3QjtZQUMzQyxtQkFBbUIsRUFBRTtnQkFDakIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUM7YUFDdkI7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDOzhHQVpRLHdCQUF3QjtrSEFBeEIsd0JBQXdCLGNBRnJCLE1BQU07OzJGQUVULHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI0IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IGdxbCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV2ViU29ja2V0U2VydmljZSB9IGZyb20gJy4vd2ViLXNvY2tldC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25DbG91ZFNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgd2ViU29ja2V0U2VydmljZTogV2ViU29ja2V0U2VydmljZSkge31cblxuICAgIG1ha2VHUUxRdWVyeShhcHBOYW1lOiBzdHJpbmcsIGdxbFF1ZXJ5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2ViU29ja2V0U2VydmljZS5nZXRTdWJzY3JpcHRpb24oe1xuICAgICAgICAgICAgYXBvbGxvQ2xpZW50TmFtZTogYXBwTmFtZSxcbiAgICAgICAgICAgIHdzVXJsOiBgJHthcHBOYW1lfS9ub3RpZmljYXRpb25zYCxcbiAgICAgICAgICAgIGh0dHBVcmw6IGAke2FwcE5hbWV9L25vdGlmaWNhdGlvbnMvZ3JhcGhxbGAsXG4gICAgICAgICAgICBzdWJzY3JpcHRpb25PcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgcXVlcnk6IGdxbChncWxRdWVyeSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
@@ -23,4 +23,5 @@ export * from './form-fields.interfaces';
23
23
  export * from './base-cloud.service';
24
24
  export * from './task-list-cloud.service.interface';
25
25
  export * from './variable-mapper.sevice';
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvc2VydmljZXMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi91c2VyLXByZWZlcmVuY2UtY2xvdWQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xvY2FsLXByZWZlcmVuY2UtY2xvdWQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2Nsb3VkLXRva2VuLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9ub3RpZmljYXRpb24tY2xvdWQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3ByZWZlcmVuY2UtY2xvdWQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1maWVsZHMuaW50ZXJmYWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL2Jhc2UtY2xvdWQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3Rhc2stbGlzdC1jbG91ZC5zZXJ2aWNlLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL3ZhcmlhYmxlLW1hcHBlci5zZXZpY2UnO1xuIl19
26
+ export * from './web-socket.service';
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvc2VydmljZXMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNCBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3VzZXItcHJlZmVyZW5jZS1jbG91ZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbG9jYWwtcHJlZmVyZW5jZS1jbG91ZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY2xvdWQtdG9rZW4uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL25vdGlmaWNhdGlvbi1jbG91ZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcHJlZmVyZW5jZS1jbG91ZC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWZpZWxkcy5pbnRlcmZhY2VzJztcbmV4cG9ydCAqIGZyb20gJy4vYmFzZS1jbG91ZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdGFzay1saXN0LWNsb3VkLnNlcnZpY2UuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdmFyaWFibGUtbWFwcGVyLnNldmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3dlYi1zb2NrZXQuc2VydmljZSc7XG4iXX0=
@@ -0,0 +1,168 @@
1
+ /*!
2
+ * @license
3
+ * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { createClient } from 'graphql-ws';
18
+ import { Inject, Injectable } from '@angular/core';
19
+ import { AppConfigService, AuthenticationService } from '@alfresco/adf-core';
20
+ import { GraphQLWsLink } from '@apollo/client/link/subscriptions';
21
+ import { WebSocketLink } from '@apollo/client/link/ws';
22
+ import { from, HttpLink, InMemoryCache, split } from '@apollo/client/core';
23
+ import { getMainDefinition } from '@apollo/client/utilities';
24
+ import { Kind, OperationTypeNode } from 'graphql';
25
+ import { Apollo } from 'apollo-angular';
26
+ import { onError } from '@apollo/client/link/error';
27
+ import { RetryLink } from '@apollo/client/link/retry';
28
+ import { switchMap, take, tap } from 'rxjs/operators';
29
+ import { FeaturesServiceToken } from '@alfresco/adf-core/feature-flags';
30
+ import * as i0 from "@angular/core";
31
+ import * as i1 from "apollo-angular";
32
+ import * as i2 from "@alfresco/adf-core";
33
+ export class WebSocketService {
34
+ constructor(apollo, appConfigService, authService, featuresService) {
35
+ this.apollo = apollo;
36
+ this.appConfigService = appConfigService;
37
+ this.authService = authService;
38
+ this.featuresService = featuresService;
39
+ this.host = '';
40
+ this.subscriptionProtocol = 'transport-ws';
41
+ this.host = this.appConfigService.get('bpmHost', '');
42
+ }
43
+ getSubscription(options) {
44
+ const { apolloClientName, subscriptionOptions } = options;
45
+ this.authService.onLogout.pipe(take(1)).subscribe(() => {
46
+ if (this.apollo.use(apolloClientName)) {
47
+ this.apollo.removeClient(apolloClientName);
48
+ }
49
+ });
50
+ return this.featuresService.isOn$('studio-ws-graphql-subprotocol').pipe(tap((isOn) => {
51
+ if (isOn) {
52
+ this.subscriptionProtocol = 'graphql-ws';
53
+ }
54
+ }), switchMap(() => {
55
+ if (this.apollo.use(apolloClientName) === undefined) {
56
+ this.initSubscriptions(options);
57
+ }
58
+ return this.apollo.use(apolloClientName).subscribe({ errorPolicy: 'all', ...subscriptionOptions });
59
+ }));
60
+ }
61
+ createUrl(serviceUrl, protocol = 'wss') {
62
+ const url = new URL(serviceUrl, this.host);
63
+ url.protocol = protocol;
64
+ return url.href;
65
+ }
66
+ initSubscriptions(options) {
67
+ switch (this.subscriptionProtocol) {
68
+ case 'graphql-ws':
69
+ this.createGraphQLWsLink(options);
70
+ break;
71
+ case 'transport-ws':
72
+ this.createTransportWsLink(options);
73
+ break;
74
+ default:
75
+ throw new Error('Unknown subscription protocol');
76
+ }
77
+ this.httpLink = options.httpUrl
78
+ ? new HttpLink({
79
+ uri: this.createUrl(options.httpUrl, 'https')
80
+ })
81
+ : undefined;
82
+ const link = split(({ query }) => {
83
+ const definition = getMainDefinition(query);
84
+ return definition.kind === Kind.OPERATION_DEFINITION && definition.operation === OperationTypeNode.SUBSCRIPTION;
85
+ }, this.wsLink, this.httpLink);
86
+ const authLink = (operation, forward) => {
87
+ operation.setContext(({ headers }) => ({
88
+ headers: {
89
+ ...headers,
90
+ ...(this.subscriptionProtocol === 'graphql-ws' && { Authorization: `Bearer ${this.authService.getToken()}` }),
91
+ ...(this.subscriptionProtocol === 'transport-ws' && { 'X-Authorization': `Bearer ${this.authService.getToken()}` })
92
+ }
93
+ }));
94
+ return forward(operation);
95
+ };
96
+ const errorLink = onError(({ graphQLErrors, networkError, operation, forward }) => {
97
+ if (graphQLErrors) {
98
+ for (const error of graphQLErrors) {
99
+ if (error.extensions && error.extensions['code'] === 'UNAUTHENTICATED') {
100
+ authLink(operation, forward);
101
+ }
102
+ }
103
+ }
104
+ if (networkError) {
105
+ console.error(`[Network error]: ${networkError}`);
106
+ }
107
+ });
108
+ const retryLink = new RetryLink({
109
+ delay: {
110
+ initial: 300,
111
+ max: Number.POSITIVE_INFINITY,
112
+ jitter: true
113
+ },
114
+ attempts: {
115
+ max: 5,
116
+ retryIf: (error) => !!error
117
+ }
118
+ });
119
+ this.apollo.createNamed(options.apolloClientName, {
120
+ headers: {
121
+ ...(this.subscriptionProtocol === 'graphql-ws' && { Authorization: `Bearer ${this.authService.getToken()}` }),
122
+ ...(this.subscriptionProtocol === 'transport-ws' && { 'X-Authorization': `Bearer ${this.authService.getToken()}` })
123
+ },
124
+ link: from([authLink, retryLink, errorLink, link]),
125
+ cache: new InMemoryCache({ merge: true })
126
+ });
127
+ }
128
+ createTransportWsLink(options) {
129
+ this.wsLink = new WebSocketLink({
130
+ uri: this.createUrl(options.wsUrl, 'wss') + '/ws/graphql',
131
+ options: {
132
+ reconnect: true,
133
+ lazy: true,
134
+ connectionParams: {
135
+ kaInterval: 2000,
136
+ 'X-Authorization': 'Bearer ' + this.authService.getToken()
137
+ }
138
+ }
139
+ });
140
+ }
141
+ createGraphQLWsLink(options) {
142
+ this.wsLink = new GraphQLWsLink(createClient({
143
+ url: this.createUrl(options.wsUrl, 'wss') + '/v2/ws/graphql',
144
+ connectionParams: {
145
+ Authorization: 'Bearer ' + this.authService.getToken()
146
+ },
147
+ on: {
148
+ error: () => {
149
+ this.apollo.removeClient(options.apolloClientName);
150
+ this.initSubscriptions(options);
151
+ }
152
+ },
153
+ lazy: true
154
+ }));
155
+ }
156
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: WebSocketService, deps: [{ token: i1.Apollo }, { token: i2.AppConfigService }, { token: i2.AuthenticationService }, { token: FeaturesServiceToken }], target: i0.ɵɵFactoryTarget.Injectable }); }
157
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: WebSocketService, providedIn: 'root' }); }
158
+ }
159
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: WebSocketService, decorators: [{
160
+ type: Injectable,
161
+ args: [{
162
+ providedIn: 'root'
163
+ }]
164
+ }], ctorParameters: function () { return [{ type: i1.Apollo }, { type: i2.AppConfigService }, { type: i2.AuthenticationService }, { type: undefined, decorators: [{
165
+ type: Inject,
166
+ args: [FeaturesServiceToken]
167
+ }] }]; } });
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLXNvY2tldC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL3Byb2Nlc3Mtc2VydmljZXMtY2xvdWQvc3JjL2xpYi9zZXJ2aWNlcy93ZWItc29ja2V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMxQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFHSCxJQUFJLEVBQ0osUUFBUSxFQUNSLGFBQWEsRUFJYixLQUFLLEVBRVIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXRELE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBb0IsTUFBTSxrQ0FBa0MsQ0FBQzs7OztBQVkxRixNQUFNLE9BQU8sZ0JBQWdCO0lBTXpCLFlBQ3FCLE1BQWMsRUFDZCxnQkFB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Q0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLGFBQWE7WUFDekQsT0FBTyxFQUFFO2dCQUNMLFNBQVMsRUFBRSxJQUFJO2dCQUNmLElBQUksRUFBRSxJQUFJO2dCQUNWLGdCQUFnQixFQUFFO29CQUNkLFVBQVUsRUFBRSxJQUFJO29CQUNoQixpQkFBaUIsRUFBRSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUU7aUJBQzdEO2FBQ0o7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsT0FBdUI7UUFDL0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGFBQWEsQ0FDM0IsWUFBWSxDQUFDO1lBQ1QsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxnQkFBZ0I7WUFDNUQsZ0JBQWdCLEVBQUU7Z0JBQ2QsYUFBYSxFQUFFLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRTthQUN6RDtZQUNELEVBQUUsRUFBRTtnQkFDQSxLQUFLLEVBQUUsR0FBRyxFQUFFO29CQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO29CQUNuRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3BDLENBQUM7YUFDSjtZQUNELElBQUksRUFBRSxJQUFJO1NBQ2IsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDOzhHQXJKUSxnQkFBZ0IsNkdBVWIsb0JBQW9CO2tIQVZ2QixnQkFBZ0IsY0FGYixNQUFNOzsyRkFFVCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFXUSxNQUFNOzJCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgY3JlYXRlQ2xpZW50IH0gZnJvbSAnZ3JhcGhxbC13cyc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UsIEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBHcmFwaFFMV3NMaW5rIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvbGluay9zdWJzY3JpcHRpb25zJztcbmltcG9ydCB7IFdlYlNvY2tldExpbmsgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9saW5rL3dzJztcbmltcG9ydCB7XG4gICAgRGVmYXVsdENvbnRleHQsXG4gICAgRmV0Y2hSZXN1bHQsXG4gICAgZnJvbSxcbiAgICBIdHRwTGluayxcbiAgICBJbk1lbW9yeUNhY2hlLFxuICAgIEluTWVtb3J5Q2FjaGVDb25maWcsXG4gICAgTmV4dExpbmssXG4gICAgT3BlcmF0aW9uLFxuICAgIHNwbGl0LFxuICAgIFN1YnNjcmlwdGlvbk9wdGlvbnNcbn0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XG5pbXBvcnQgeyBnZXRNYWluRGVmaW5pdGlvbiB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L3V0aWxpdGllcyc7XG5pbXBvcnQgeyBLaW5kLCBPcGVyYXRpb25UeXBlTm9kZSB9IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IHsgQXBvbGxvIH0gZnJvbSAnYXBvbGxvLWFuZ3VsYXInO1xuaW1wb3J0IHsgb25FcnJvciB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2xpbmsvZXJyb3InO1xuaW1wb3J0IHsgUmV0cnlMaW5rIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvbGluay9yZXRyeSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcy9pbnRlcm5hbC9PYnNlcnZhYmxlJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRmVhdHVyZXNTZXJ2aWNlVG9rZW4sIElGZWF0dXJlc1NlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUvZmVhdHVyZS1mbGFncyc7XG5cbmludGVyZmFjZSBzZXJ2aWNlT3B0aW9ucyB7XG4gICAgYXBvbGxvQ2xpZW50TmFtZTogc3RyaW5nO1xuICAgIHdzVXJsOiBzdHJpbmc7XG4gICAgaHR0cFVybD86IHN0cmluZztcbiAgICBzdWJzY3JpcHRpb25PcHRpb25zOiBTdWJzY3JpcHRpb25PcHRpb25zO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFdlYlNvY2tldFNlcnZpY2Uge1xuICAgIHByaXZhdGUgaG9zdCA9ICcnO1xuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uUHJvdG9jb2w6ICdncmFwaHFsLXdzJyB8ICd0cmFuc3BvcnQtd3MnID0gJ3RyYW5zcG9ydC13cyc7XG4gICAgcHJpdmF0ZSB3c0xpbms6IEdyYXBoUUxXc0xpbmsgfCBXZWJTb2NrZXRMaW5rO1xuICAgIHByaXZhdGUgaHR0cExpbms6IEh0dHBMaW5rO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYXBvbGxvOiBBcG9sbG8sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhdXRoU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KEZlYXR1cmVzU2VydmljZVRva2VuKSBwcml2YXRlIGZlYXR1cmVzU2VydmljZTogSUZlYXR1cmVzU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLmhvc3QgPSB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuZ2V0KCdicG1Ib3N0JywgJycpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTdWJzY3JpcHRpb248VD4ob3B0aW9uczogc2VydmljZU9wdGlvbnMpOiBPYnNlcnZhYmxlPEZldGNoUmVzdWx0PFQ+PiB7XG4gICAgICAgIGNvbnN0IHsgYXBvbGxvQ2xpZW50TmFtZSwgc3Vic2NyaXB0aW9uT3B0aW9ucyB9ID0gb3B0aW9ucztcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5vbkxvZ291dC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5hcG9sbG8udXNlKGFwb2xsb0NsaWVudE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcG9sbG8ucmVtb3ZlQ2xpZW50KGFwb2xsb0NsaWVudE5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5mZWF0dXJlc1NlcnZpY2UuaXNPbiQoJ3N0dWRpby13cy1ncmFwaHFsLXN1YnByb3RvY29sJykucGlwZShcbiAgICAgICAgICAgIHRhcCgoaXNPbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpc09uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uUHJvdG9jb2wgPSAnZ3JhcGhxbC13cyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFwb2xsby51c2UoYXBvbGxvQ2xpZW50TmFtZSkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRTdWJzY3JpcHRpb25zKG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hcG9sbG8udXNlKGFwb2xsb0NsaWVudE5hbWUpLnN1YnNjcmliZTxUPih7IGVycm9yUG9saWN5OiAnYWxsJywgLi4uc3Vic2NyaXB0aW9uT3B0aW9ucyB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVVcmwoc2VydmljZVVybDogc3RyaW5nLCBwcm90b2NvbDogJ2h0dHBzJyB8ICd3c3MnID0gJ3dzcycpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHNlcnZpY2VVcmwsIHRoaXMuaG9zdCk7XG4gICAgICAgIHVybC5wcm90b2NvbCA9IHByb3RvY29sO1xuXG4gICAgICAgIHJldHVybiB1cmwuaHJlZjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTdWJzY3JpcHRpb25zKG9wdGlvbnM6IHNlcnZpY2VPcHRpb25zKTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5zdWJzY3JpcHRpb25Qcm90b2NvbCkge1xuICAgICAgICAgICAgY2FzZSAnZ3JhcGhxbC13cyc6XG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVHcmFwaFFMV3NMaW5rKG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndHJhbnNwb3J0LXdzJzpcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRyYW5zcG9ydFdzTGluayhvcHRpb25zKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHN1YnNjcmlwdGlvbiBwcm90b2NvbCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5odHRwTGluayA9IG9wdGlvbnMuaHR0cFVybFxuICAgICAgICAgICAgPyBuZXcgSHR0cExpbmsoe1xuICAgICAgICAgICAgICAgICAgdXJpOiB0aGlzLmNyZWF0ZVVybChvcHRpb25zLmh0dHBVcmwsICdodHRwcycpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCBsaW5rID0gc3BsaXQoXG4gICAgICAgICAgICAoeyBxdWVyeSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVmaW5pdGlvbiA9IGdldE1haW5EZWZpbml0aW9uKHF1ZXJ5KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVmaW5pdGlvbi5raW5kID09PSBLaW5kLk9QRVJBVElPTl9ERUZJTklUSU9OICYmIGRlZmluaXRpb24ub3BlcmF0aW9uID09PSBPcGVyYXRpb25UeXBlTm9kZS5TVUJTQ1JJUFRJT047XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy53c0xpbmssXG4gICAgICAgICAgICB0aGlzLmh0dHBMaW5rXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgYXV0aExpbmsgPSAob3BlcmF0aW9uOiBPcGVyYXRpb24sIGZvcndhcmQ6IE5leHRMaW5rKSA9PiB7XG4gICAgICAgICAgICBvcGVyYXRpb24uc2V0Q29udGV4dCgoeyBoZWFkZXJzIH06IERlZmF1bHRDb250ZXh0KSA9PiAoe1xuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgLi4uKHRoaXMuc3Vic2NyaXB0aW9uUHJvdG9jb2wgPT09ICdncmFwaHFsLXdzJyAmJiB7IEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuKCl9YCB9KSxcbiAgICAgICAgICAgICAgICAgICAgLi4uKHRoaXMuc3Vic2NyaXB0aW9uUHJvdG9jb2wgPT09ICd0cmFuc3BvcnQtd3MnICYmIHsgJ1gtQXV0aG9yaXphdGlvbic6IGBCZWFyZXIgJHt0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuKCl9YCB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIHJldHVybiBmb3J3YXJkKG9wZXJhdGlvbik7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZXJyb3JMaW5rID0gb25FcnJvcigoeyBncmFwaFFMRXJyb3JzLCBuZXR3b3JrRXJyb3IsIG9wZXJhdGlvbiwgZm9yd2FyZCB9KSA9PiB7XG4gICAgICAgICAgICBpZiAoZ3JhcGhRTEVycm9ycykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZXJyb3Igb2YgZ3JhcGhRTEVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IuZXh0ZW5zaW9ucyAmJiBlcnJvci5leHRlbnNpb25zWydjb2RlJ10gPT09ICdVTkFVVEhFTlRJQ0FURUQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRoTGluayhvcGVyYXRpb24sIGZvcndhcmQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobmV0d29ya0Vycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgW05ldHdvcmsgZXJyb3JdOiAke25ldHdvcmtFcnJvcn1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgcmV0cnlMaW5rID0gbmV3IFJldHJ5TGluayh7XG4gICAgICAgICAgICBkZWxheToge1xuICAgICAgICAgICAgICAgIGluaXRpYWw6IDMwMCxcbiAgICAgICAgICAgICAgICBtYXg6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcbiAgICAgICAgICAgICAgICBqaXR0ZXI6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhdHRlbXB0czoge1xuICAgICAgICAgICAgICAgIG1heDogNSxcbiAgICAgICAgICAgICAgICByZXRyeUlmOiAoZXJyb3IpID0+ICEhZXJyb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5hcG9sbG8uY3JlYXRlTmFtZWQob3B0aW9ucy5hcG9sbG9DbGllbnROYW1lLCB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgLi4uKHRoaXMuc3Vic2NyaXB0aW9uUHJvdG9jb2wgPT09ICdncmFwaHFsLXdzJyAmJiB7IEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuKCl9YCB9KSxcbiAgICAgICAgICAgICAgICAuLi4odGhpcy5zdWJzY3JpcHRpb25Qcm90b2NvbCA9PT0gJ3RyYW5zcG9ydC13cycgJiYgeyAnWC1BdXRob3JpemF0aW9uJzogYEJlYXJlciAke3RoaXMuYXV0aFNlcnZpY2UuZ2V0VG9rZW4oKX1gIH0pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGluazogZnJvbShbYXV0aExpbmssIHJldHJ5TGluaywgZXJyb3JMaW5rLCBsaW5rXSksXG4gICAgICAgICAgICBjYWNoZTogbmV3IEluTWVtb3J5Q2FjaGUoeyBtZXJnZTogdHJ1ZSB9IGFzIEluTWVtb3J5Q2FjaGVDb25maWcpXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlVHJhbnNwb3J0V3NMaW5rKG9wdGlvbnM6IHNlcnZpY2VPcHRpb25zKSB7XG4gICAgICAgIHRoaXMud3NMaW5rID0gbmV3IFdlYlNvY2tldExpbmsoe1xuICAgICAgICAgICAgdXJpOiB0aGlzLmNyZWF0ZVVybChvcHRpb25zLndzVXJsLCAnd3NzJykgKyAnL3dzL2dyYXBocWwnLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgIHJlY29ubmVjdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBsYXp5OiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25QYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAga2FJbnRlcnZhbDogMjAwMCxcbiAgICAgICAgICAgICAgICAgICAgJ1gtQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIHRoaXMuYXV0aFNlcnZpY2UuZ2V0VG9rZW4oKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVHcmFwaFFMV3NMaW5rKG9wdGlvbnM6IHNlcnZpY2VPcHRpb25zKSB7XG4gICAgICAgIHRoaXMud3NMaW5rID0gbmV3IEdyYXBoUUxXc0xpbmsoXG4gICAgICAgICAgICBjcmVhdGVDbGllbnQoe1xuICAgICAgICAgICAgICAgIHVybDogdGhpcy5jcmVhdGVVcmwob3B0aW9ucy53c1VybCwgJ3dzcycpICsgJy92Mi93cy9ncmFwaHFsJyxcbiAgICAgICAgICAgICAgICBjb25uZWN0aW9uUGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgIEF1dGhvcml6YXRpb246ICdCZWFyZXIgJyArIHRoaXMuYXV0aFNlcnZpY2UuZ2V0VG9rZW4oKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXBvbGxvLnJlbW92ZUNsaWVudChvcHRpb25zLmFwb2xsb0NsaWVudE5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0U3Vic2NyaXB0aW9ucyhvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbGF6eTogdHJ1ZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=