keycloak-angular 7.3.0 → 8.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +136 -155
- package/bundles/keycloak-angular.umd.js +401 -327
- package/bundles/keycloak-angular.umd.js.map +1 -1
- package/bundles/keycloak-angular.umd.min.js +1 -15
- package/bundles/keycloak-angular.umd.min.js.map +1 -1
- package/esm2015/keycloak-angular.js +1 -1
- package/esm2015/lib/core/core.module.js +16 -18
- package/esm2015/lib/core/interceptors/keycloak-bearer.interceptor.js +6 -9
- package/esm2015/lib/core/interfaces/keycloak-event.js +1 -1
- package/esm2015/lib/core/interfaces/keycloak-options.js +2 -1
- package/esm2015/lib/core/services/keycloak-auth-guard.js +1 -1
- package/esm2015/lib/core/services/keycloak.service.js +28 -42
- package/esm2015/lib/keycloak-angular.module.js +8 -10
- package/esm2015/public_api.js +1 -1
- package/fesm2015/keycloak-angular.js +54 -78
- package/fesm2015/keycloak-angular.js.map +1 -1
- package/keycloak-angular.d.ts +0 -0
- package/keycloak-angular.metadata.json +1 -1
- package/lib/core/core.module.d.ts +0 -0
- package/lib/core/interceptors/keycloak-bearer.interceptor.d.ts +0 -0
- package/lib/core/interfaces/keycloak-event.d.ts +0 -0
- package/lib/core/interfaces/keycloak-options.d.ts +1 -2
- package/lib/core/services/keycloak-auth-guard.d.ts +0 -0
- package/lib/core/services/keycloak.service.d.ts +2 -2
- package/lib/keycloak-angular.module.d.ts +0 -0
- package/package.json +9 -14
- package/public_api.d.ts +0 -2
- package/esm2015/lib/core/interfaces/keycloak-config.js +0 -1
- package/esm2015/lib/core/utils/to-promise.js +0 -10
- package/esm5/keycloak-angular.js +0 -2
- package/esm5/lib/core/core.module.js +0 -26
- package/esm5/lib/core/interceptors/keycloak-bearer.interceptor.js +0 -48
- package/esm5/lib/core/interfaces/keycloak-config.js +0 -1
- package/esm5/lib/core/interfaces/keycloak-event.js +0 -11
- package/esm5/lib/core/interfaces/keycloak-options.js +0 -1
- package/esm5/lib/core/services/keycloak-auth-guard.js +0 -40
- package/esm5/lib/core/services/keycloak.service.js +0 -328
- package/esm5/lib/core/utils/to-promise.js +0 -10
- package/esm5/lib/keycloak-angular.module.js +0 -15
- package/esm5/public_api.js +0 -7
- package/fesm5/keycloak-angular.js +0 -461
- package/fesm5/keycloak-angular.js.map +0 -1
- package/lib/core/interfaces/keycloak-config.d.ts +0 -9
- package/lib/core/utils/to-promise.d.ts +0 -7
|
@@ -1,328 +0,0 @@
|
|
|
1
|
-
import { __awaiter, __decorate, __generator, __read, __spread, __values } from "tslib";
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import { HttpHeaders } from '@angular/common/http';
|
|
4
|
-
import { Subject, from } from 'rxjs';
|
|
5
|
-
import * as Keycloak_ from 'keycloak-js';
|
|
6
|
-
export var Keycloak = Keycloak_;
|
|
7
|
-
import { KeycloakEventType } from '../interfaces/keycloak-event';
|
|
8
|
-
import { toPromise } from '../utils/to-promise';
|
|
9
|
-
var KeycloakService = (function () {
|
|
10
|
-
function KeycloakService() {
|
|
11
|
-
this._keycloakEvents$ = new Subject();
|
|
12
|
-
}
|
|
13
|
-
KeycloakService.prototype.bindsKeycloakEvents = function () {
|
|
14
|
-
var _this = this;
|
|
15
|
-
this._instance.onAuthError = function (errorData) {
|
|
16
|
-
_this._keycloakEvents$.next({
|
|
17
|
-
args: errorData,
|
|
18
|
-
type: KeycloakEventType.OnAuthError
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
|
-
this._instance.onAuthLogout = function () {
|
|
22
|
-
_this._keycloakEvents$.next({ type: KeycloakEventType.OnAuthLogout });
|
|
23
|
-
};
|
|
24
|
-
this._instance.onAuthRefreshSuccess = function () {
|
|
25
|
-
_this._keycloakEvents$.next({
|
|
26
|
-
type: KeycloakEventType.OnAuthRefreshSuccess
|
|
27
|
-
});
|
|
28
|
-
};
|
|
29
|
-
this._instance.onAuthRefreshError = function () {
|
|
30
|
-
_this._keycloakEvents$.next({
|
|
31
|
-
type: KeycloakEventType.OnAuthRefreshError
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
this._instance.onAuthSuccess = function () {
|
|
35
|
-
_this._keycloakEvents$.next({ type: KeycloakEventType.OnAuthSuccess });
|
|
36
|
-
};
|
|
37
|
-
this._instance.onTokenExpired = function () {
|
|
38
|
-
_this._keycloakEvents$.next({
|
|
39
|
-
type: KeycloakEventType.OnTokenExpired
|
|
40
|
-
});
|
|
41
|
-
};
|
|
42
|
-
this._instance.onReady = function (authenticated) {
|
|
43
|
-
_this._keycloakEvents$.next({
|
|
44
|
-
args: authenticated,
|
|
45
|
-
type: KeycloakEventType.OnReady
|
|
46
|
-
});
|
|
47
|
-
};
|
|
48
|
-
};
|
|
49
|
-
KeycloakService.prototype.loadExcludedUrls = function (bearerExcludedUrls) {
|
|
50
|
-
var e_1, _a;
|
|
51
|
-
var excludedUrls = [];
|
|
52
|
-
try {
|
|
53
|
-
for (var bearerExcludedUrls_1 = __values(bearerExcludedUrls), bearerExcludedUrls_1_1 = bearerExcludedUrls_1.next(); !bearerExcludedUrls_1_1.done; bearerExcludedUrls_1_1 = bearerExcludedUrls_1.next()) {
|
|
54
|
-
var item = bearerExcludedUrls_1_1.value;
|
|
55
|
-
var excludedUrl = void 0;
|
|
56
|
-
if (typeof item === 'string') {
|
|
57
|
-
excludedUrl = { urlPattern: new RegExp(item, 'i'), httpMethods: [] };
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
excludedUrl = {
|
|
61
|
-
urlPattern: new RegExp(item.url, 'i'),
|
|
62
|
-
httpMethods: item.httpMethods
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
excludedUrls.push(excludedUrl);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
69
|
-
finally {
|
|
70
|
-
try {
|
|
71
|
-
if (bearerExcludedUrls_1_1 && !bearerExcludedUrls_1_1.done && (_a = bearerExcludedUrls_1.return)) _a.call(bearerExcludedUrls_1);
|
|
72
|
-
}
|
|
73
|
-
finally { if (e_1) throw e_1.error; }
|
|
74
|
-
}
|
|
75
|
-
return excludedUrls;
|
|
76
|
-
};
|
|
77
|
-
KeycloakService.prototype.initServiceValues = function (_a) {
|
|
78
|
-
var _b = _a.enableBearerInterceptor, enableBearerInterceptor = _b === void 0 ? true : _b, _c = _a.loadUserProfileAtStartUp, loadUserProfileAtStartUp = _c === void 0 ? true : _c, _d = _a.bearerExcludedUrls, bearerExcludedUrls = _d === void 0 ? [] : _d, _e = _a.authorizationHeaderName, authorizationHeaderName = _e === void 0 ? 'Authorization' : _e, _f = _a.bearerPrefix, bearerPrefix = _f === void 0 ? 'bearer' : _f, initOptions = _a.initOptions;
|
|
79
|
-
this._enableBearerInterceptor = enableBearerInterceptor;
|
|
80
|
-
this._loadUserProfileAtStartUp = loadUserProfileAtStartUp;
|
|
81
|
-
this._authorizationHeaderName = authorizationHeaderName;
|
|
82
|
-
this._bearerPrefix = bearerPrefix.trim().concat(' ');
|
|
83
|
-
this._excludedUrls = this.loadExcludedUrls(bearerExcludedUrls);
|
|
84
|
-
this._silentRefresh = initOptions ? initOptions.flow === 'implicit' : false;
|
|
85
|
-
};
|
|
86
|
-
KeycloakService.prototype.init = function (options) {
|
|
87
|
-
if (options === void 0) { options = {}; }
|
|
88
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
89
|
-
var config, initOptions, authenticated;
|
|
90
|
-
return __generator(this, function (_a) {
|
|
91
|
-
switch (_a.label) {
|
|
92
|
-
case 0:
|
|
93
|
-
this.initServiceValues(options);
|
|
94
|
-
config = options.config, initOptions = options.initOptions;
|
|
95
|
-
this._instance = Keycloak(config);
|
|
96
|
-
this.bindsKeycloakEvents();
|
|
97
|
-
return [4, toPromise(this._instance.init(initOptions))];
|
|
98
|
-
case 1:
|
|
99
|
-
authenticated = _a.sent();
|
|
100
|
-
if (!(authenticated && this._loadUserProfileAtStartUp)) return [3, 3];
|
|
101
|
-
return [4, this.loadUserProfile()];
|
|
102
|
-
case 2:
|
|
103
|
-
_a.sent();
|
|
104
|
-
_a.label = 3;
|
|
105
|
-
case 3: return [2, authenticated];
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
});
|
|
109
|
-
};
|
|
110
|
-
KeycloakService.prototype.login = function (options) {
|
|
111
|
-
if (options === void 0) { options = {}; }
|
|
112
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
113
|
-
return __generator(this, function (_a) {
|
|
114
|
-
switch (_a.label) {
|
|
115
|
-
case 0: return [4, toPromise(this._instance.login(options))];
|
|
116
|
-
case 1:
|
|
117
|
-
_a.sent();
|
|
118
|
-
if (!this._loadUserProfileAtStartUp) return [3, 3];
|
|
119
|
-
return [4, this.loadUserProfile()];
|
|
120
|
-
case 2:
|
|
121
|
-
_a.sent();
|
|
122
|
-
_a.label = 3;
|
|
123
|
-
case 3: return [2];
|
|
124
|
-
}
|
|
125
|
-
});
|
|
126
|
-
});
|
|
127
|
-
};
|
|
128
|
-
KeycloakService.prototype.logout = function (redirectUri) {
|
|
129
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
130
|
-
var options;
|
|
131
|
-
return __generator(this, function (_a) {
|
|
132
|
-
switch (_a.label) {
|
|
133
|
-
case 0:
|
|
134
|
-
options = {
|
|
135
|
-
redirectUri: redirectUri
|
|
136
|
-
};
|
|
137
|
-
return [4, toPromise(this._instance.logout(options))];
|
|
138
|
-
case 1:
|
|
139
|
-
_a.sent();
|
|
140
|
-
this._userProfile = undefined;
|
|
141
|
-
return [2];
|
|
142
|
-
}
|
|
143
|
-
});
|
|
144
|
-
});
|
|
145
|
-
};
|
|
146
|
-
KeycloakService.prototype.register = function (options) {
|
|
147
|
-
if (options === void 0) { options = { action: 'register' }; }
|
|
148
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
149
|
-
return __generator(this, function (_a) {
|
|
150
|
-
switch (_a.label) {
|
|
151
|
-
case 0: return [4, toPromise(this._instance.register(options))];
|
|
152
|
-
case 1:
|
|
153
|
-
_a.sent();
|
|
154
|
-
return [2];
|
|
155
|
-
}
|
|
156
|
-
});
|
|
157
|
-
});
|
|
158
|
-
};
|
|
159
|
-
KeycloakService.prototype.isUserInRole = function (role, resource) {
|
|
160
|
-
var hasRole;
|
|
161
|
-
hasRole = this._instance.hasResourceRole(role, resource);
|
|
162
|
-
if (!hasRole) {
|
|
163
|
-
hasRole = this._instance.hasRealmRole(role);
|
|
164
|
-
}
|
|
165
|
-
return hasRole;
|
|
166
|
-
};
|
|
167
|
-
KeycloakService.prototype.getUserRoles = function (allRoles) {
|
|
168
|
-
if (allRoles === void 0) { allRoles = true; }
|
|
169
|
-
var roles = [];
|
|
170
|
-
if (this._instance.resourceAccess) {
|
|
171
|
-
for (var key in this._instance.resourceAccess) {
|
|
172
|
-
if (this._instance.resourceAccess.hasOwnProperty(key)) {
|
|
173
|
-
var resourceAccess = this._instance.resourceAccess[key];
|
|
174
|
-
var clientRoles = resourceAccess['roles'] || [];
|
|
175
|
-
roles = roles.concat(clientRoles);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
if (allRoles && this._instance.realmAccess) {
|
|
180
|
-
var realmRoles = this._instance.realmAccess['roles'] || [];
|
|
181
|
-
roles.push.apply(roles, __spread(realmRoles));
|
|
182
|
-
}
|
|
183
|
-
return roles;
|
|
184
|
-
};
|
|
185
|
-
KeycloakService.prototype.isLoggedIn = function () {
|
|
186
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
187
|
-
var error_1;
|
|
188
|
-
return __generator(this, function (_a) {
|
|
189
|
-
switch (_a.label) {
|
|
190
|
-
case 0:
|
|
191
|
-
_a.trys.push([0, 2, , 3]);
|
|
192
|
-
if (!this._instance.authenticated) {
|
|
193
|
-
return [2, false];
|
|
194
|
-
}
|
|
195
|
-
return [4, this.updateToken(20)];
|
|
196
|
-
case 1:
|
|
197
|
-
_a.sent();
|
|
198
|
-
return [2, true];
|
|
199
|
-
case 2:
|
|
200
|
-
error_1 = _a.sent();
|
|
201
|
-
return [2, false];
|
|
202
|
-
case 3: return [2];
|
|
203
|
-
}
|
|
204
|
-
});
|
|
205
|
-
});
|
|
206
|
-
};
|
|
207
|
-
KeycloakService.prototype.isTokenExpired = function (minValidity) {
|
|
208
|
-
if (minValidity === void 0) { minValidity = 0; }
|
|
209
|
-
return this._instance.isTokenExpired(minValidity);
|
|
210
|
-
};
|
|
211
|
-
KeycloakService.prototype.updateToken = function (minValidity) {
|
|
212
|
-
if (minValidity === void 0) { minValidity = 5; }
|
|
213
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
214
|
-
return __generator(this, function (_a) {
|
|
215
|
-
if (this._silentRefresh) {
|
|
216
|
-
if (this.isTokenExpired()) {
|
|
217
|
-
throw new Error('Failed to refresh the token, or the session is expired');
|
|
218
|
-
}
|
|
219
|
-
return [2, true];
|
|
220
|
-
}
|
|
221
|
-
if (!this._instance) {
|
|
222
|
-
throw new Error('Keycloak Angular library is not initialized.');
|
|
223
|
-
}
|
|
224
|
-
return [2, toPromise(this._instance.updateToken(minValidity))];
|
|
225
|
-
});
|
|
226
|
-
});
|
|
227
|
-
};
|
|
228
|
-
KeycloakService.prototype.loadUserProfile = function (forceReload) {
|
|
229
|
-
if (forceReload === void 0) { forceReload = false; }
|
|
230
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
231
|
-
var _a;
|
|
232
|
-
return __generator(this, function (_b) {
|
|
233
|
-
switch (_b.label) {
|
|
234
|
-
case 0:
|
|
235
|
-
if (this._userProfile && !forceReload) {
|
|
236
|
-
return [2, this._userProfile];
|
|
237
|
-
}
|
|
238
|
-
if (!this._instance.authenticated) {
|
|
239
|
-
throw new Error('The user profile was not loaded as the user is not logged in.');
|
|
240
|
-
}
|
|
241
|
-
_a = this;
|
|
242
|
-
return [4, toPromise(this._instance.loadUserProfile())];
|
|
243
|
-
case 1: return [2, _a._userProfile = _b.sent()];
|
|
244
|
-
}
|
|
245
|
-
});
|
|
246
|
-
});
|
|
247
|
-
};
|
|
248
|
-
KeycloakService.prototype.getToken = function (forceLogin) {
|
|
249
|
-
if (forceLogin === void 0) { forceLogin = true; }
|
|
250
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
251
|
-
var error_2;
|
|
252
|
-
return __generator(this, function (_a) {
|
|
253
|
-
switch (_a.label) {
|
|
254
|
-
case 0:
|
|
255
|
-
_a.trys.push([0, 2, , 3]);
|
|
256
|
-
return [4, this.updateToken(10)];
|
|
257
|
-
case 1:
|
|
258
|
-
_a.sent();
|
|
259
|
-
return [2, this._instance.token];
|
|
260
|
-
case 2:
|
|
261
|
-
error_2 = _a.sent();
|
|
262
|
-
if (forceLogin) {
|
|
263
|
-
this.login();
|
|
264
|
-
}
|
|
265
|
-
else {
|
|
266
|
-
throw error_2;
|
|
267
|
-
}
|
|
268
|
-
return [3, 3];
|
|
269
|
-
case 3: return [2];
|
|
270
|
-
}
|
|
271
|
-
});
|
|
272
|
-
});
|
|
273
|
-
};
|
|
274
|
-
KeycloakService.prototype.getUsername = function () {
|
|
275
|
-
if (!this._userProfile) {
|
|
276
|
-
throw new Error('User not logged in or user profile was not loaded.');
|
|
277
|
-
}
|
|
278
|
-
return this._userProfile.username;
|
|
279
|
-
};
|
|
280
|
-
KeycloakService.prototype.clearToken = function () {
|
|
281
|
-
this._instance.clearToken();
|
|
282
|
-
};
|
|
283
|
-
KeycloakService.prototype.addTokenToHeader = function (headers) {
|
|
284
|
-
var _this = this;
|
|
285
|
-
if (headers === void 0) { headers = new HttpHeaders(); }
|
|
286
|
-
return from(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
287
|
-
var token;
|
|
288
|
-
return __generator(this, function (_a) {
|
|
289
|
-
switch (_a.label) {
|
|
290
|
-
case 0: return [4, this.getToken()];
|
|
291
|
-
case 1:
|
|
292
|
-
token = _a.sent();
|
|
293
|
-
return [2, headers.set(this._authorizationHeaderName, this._bearerPrefix + token)];
|
|
294
|
-
}
|
|
295
|
-
});
|
|
296
|
-
}); });
|
|
297
|
-
};
|
|
298
|
-
KeycloakService.prototype.getKeycloakInstance = function () {
|
|
299
|
-
return this._instance;
|
|
300
|
-
};
|
|
301
|
-
Object.defineProperty(KeycloakService.prototype, "excludedUrls", {
|
|
302
|
-
get: function () {
|
|
303
|
-
return this._excludedUrls;
|
|
304
|
-
},
|
|
305
|
-
enumerable: true,
|
|
306
|
-
configurable: true
|
|
307
|
-
});
|
|
308
|
-
Object.defineProperty(KeycloakService.prototype, "enableBearerInterceptor", {
|
|
309
|
-
get: function () {
|
|
310
|
-
return this._enableBearerInterceptor;
|
|
311
|
-
},
|
|
312
|
-
enumerable: true,
|
|
313
|
-
configurable: true
|
|
314
|
-
});
|
|
315
|
-
Object.defineProperty(KeycloakService.prototype, "keycloakEvents$", {
|
|
316
|
-
get: function () {
|
|
317
|
-
return this._keycloakEvents$;
|
|
318
|
-
},
|
|
319
|
-
enumerable: true,
|
|
320
|
-
configurable: true
|
|
321
|
-
});
|
|
322
|
-
KeycloakService = __decorate([
|
|
323
|
-
Injectable()
|
|
324
|
-
], KeycloakService);
|
|
325
|
-
return KeycloakService;
|
|
326
|
-
}());
|
|
327
|
-
export { KeycloakService };
|
|
328
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2xvYWsuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2tleWNsb2FrLWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvY29yZS9zZXJ2aWNlcy9rZXljbG9hay5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFRQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdyQyxPQUFPLEtBQUssU0FBUyxNQUFNLGFBQWEsQ0FBQztBQUN6QyxNQUFNLENBQUMsSUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDO0FBR2xDLE9BQU8sRUFBaUIsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFVaEQ7SUFBQTtRQXNDVSxxQkFBZ0IsR0FBMkIsSUFBSSxPQUFPLEVBQWlCLENBQUM7SUF1Y2xGLENBQUM7SUE5YlMsNkNBQW1CLEdBQTNCO1FBQUEsaUJBd0NDO1FBdkNDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLFVBQUEsU0FBUztZQUNwQyxLQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO2dCQUN6QixJQUFJLEVBQUUsU0FBUztnQkFDZixJQUFJLEVBQUUsaUJBQWlCLENBQUMsV0FBVzthQUNwQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFRixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRztZQUM1QixLQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDdkUsQ0FBQyxDQUFDO1FBRUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsR0FBRztZQUNwQyxL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LGNBQTJCLFdBQVcsRUFBRTtRQUM5RCxPQUFPLElBQUksQ0FBQzs7Ozs0QkFDSSxXQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBQTs7d0JBQTdCLEtBQUssR0FBRyxTQUFxQjt3QkFDbkMsV0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxFQUFDOzs7YUFDL0UsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQVNELDZDQUFtQixHQUFuQjtRQUNFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBU0Qsc0JBQUkseUNBQVk7YUFBaEI7WUFDRSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDNUIsQ0FBQzs7O09BQUE7SUFRRCxzQkFBSSxvREFBdUI7YUFBM0I7WUFDRSxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztRQUN2QyxDQUFDOzs7T0FBQTtJQXFCRCxzQkFBSSw0Q0FBZTthQUFuQjtZQUNFLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQy9CLENBQUM7OztPQUFBO0lBNWVVLGVBQWU7UUFEM0IsVUFBVSxFQUFFO09BQ0EsZUFBZSxDQTZlM0I7SUFBRCxzQkFBQztDQUFBLEFBN2VELElBNmVDO1NBN2VZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgTWF1cmljaW8gR2VtZWxsaSBWaWdvbG8gYW5kIGNvbnRyaWJ1dG9ycy5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXVyaWNpb3ZpZ29sby9rZXljbG9hay1hbmd1bGFyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHsgU3ViamVjdCwgZnJvbSB9IGZyb20gJ3J4anMnO1xuXG4vLyBXb3JrYXJvdW5kIGZvciByb2xsdXAgbGlicmFyeSBiZWhhdmlvdXIsIGFzIHBvaW50ZWQgb3V0IG9uIGlzc3VlICMxMjY3IChodHRwczovL2dpdGh1Yi5jb20vcm9sbHVwL3JvbGx1cC9pc3N1ZXMvMTI2NykuXG5pbXBvcnQgKiBhcyBLZXljbG9ha18gZnJvbSAna2V5Y2xvYWstanMnO1xuZXhwb3J0IGNvbnN0IEtleWNsb2FrID0gS2V5Y2xvYWtfO1xuXG5pbXBvcnQgeyBFeGNsdWRlZFVybCwgRXhjbHVkZWRVcmxSZWdleCwgS2V5Y2xvYWtPcHRpb25zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9rZXljbG9hay1vcHRpb25zJztcbmltcG9ydCB7IEtleWNsb2FrRXZlbnQsIEtleWNsb2FrRXZlbnRUeXBlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9rZXljbG9hay1ldmVudCc7XG5pbXBvcnQgeyB0b1Byb21pc2UgfSBmcm9tICcuLi91dGlscy90by1wcm9taXNlJztcblxuLyoqXG4gKiBTZXJ2aWNlIHRvIGV4cG9zZSBleGlzdGVudCBtZXRob2RzIGZyb20gdGhlIEtleWNsb2FrIEpTIGFkYXB0ZXIsIGFkZGluZyBuZXdcbiAqIGZ1bmN0aW9uYWxpdGllcyB0byBpbXByb3ZlIHRoZSB1c2Ugb2Yga2V5Y2xvYWsgaW4gQW5ndWxhciB2ID4gNC4zIGFwcGxpY2F0aW9ucy5cbiAqXG4gKiBUaGlzIGNsYXNzIHNob3VsZCBiZSBpbmplY3RlZCBpbiB0aGUgYXBwbGljYXRpb24gYm9vdHN0cmFwLCBzbyB0aGUgc2FtZSBpbnN0YW5jZSB3aWxsIGJlIHVzZWRcbiAqIGFsb25nIHRoZSB3ZWIgYXBwbGljYXRpb24uXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBLZXljbG9ha1NlcnZpY2Uge1xuICAvKipcbiAgICogS2V5Y2xvYWstanMgaW5zdGFuY2UuXG4gICAqL1xuICBwcml2YXRlIF9pbnN0YW5jZTogS2V5Y2xvYWsuS2V5Y2xvYWtJbnN0YW5jZTtcbiAgLyoqXG4gICAqIFVzZXIgcHJvZmlsZSBhcyBLZXljbG9ha1Byb2ZpbGUgaW50ZXJmYWNlLlxuICAgKi9cbiAgcHJpdmF0ZSBfdXNlclByb2ZpbGU6IEtleWNsb2FrLktleWNsb2FrUHJvZmlsZTtcbiAgLyoqXG4gICAqIEZsYWcgdG8gaW5kaWNhdGUgaWYgdGhlIGJlYXJlciB3aWxsIG5vdCBiZSBhZGRlZCB0byB0aGUgYXV0aG9yaXphdGlvbiBoZWFkZXIuXG4gICAqL1xuICBwcml2YXRlIF9lbmFibGVCZWFyZXJJbnRlcmNlcHRvcjogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZW4gdGhlIGltcGxpY2l0IGZsb3cgaXMgY2hvb3NlbiB0aGVyZSBtdXN0IGV4aXN0IGEgc2lsZW50UmVmcmVzaCwgYXMgdGhlcmUgaXNcbiAgICogbm8gcmVmcmVzaCB0b2tlbi5cbiAgICovXG4gIHByaXZhdGUgX3NpbGVudFJlZnJlc2g6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBwcm9maWxlIHNob3VsZCBiZSBsb2FkZWQgYXQgdGhlIGtleWNsb2FrIGluaXRpYWxpemF0aW9uLFxuICAgKiBqdXN0IGFmdGVyIHRoZSBsb2dpbi5cbiAgICovXG4gIHByaXZhdGUgX2xvYWRVc2VyUHJvZmlsZUF0U3RhcnRVcDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBiZWFyZXIgcHJlZml4IHRoYXQgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgQXV0aG9yaXphdGlvbiBIZWFkZXIuXG4gICAqL1xuICBwcml2YXRlIF9iZWFyZXJQcmVmaXg6IHN0cmluZztcbiAgLyoqXG4gICAqIFZhbHVlIHRoYXQgd2lsbCBiZSB1c2VkIGFzIHRoZSBBdXRob3JpemF0aW9uIEh0dHAgSGVhZGVyIG5hbWUuXG4gICAqL1xuICBwcml2YXRlIF9hdXRob3JpemF0aW9uSGVhZGVyTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGV4Y2x1ZGVkIHVybHMgcGF0dGVybnMgdGhhdCBtdXN0IHNraXAgdGhlIEtleWNsb2FrQmVhcmVySW50ZXJjZXB0b3IuXG4gICAqL1xuICBwcml2YXRlIF9leGNsdWRlZFVybHM6IEV4Y2x1ZGVkVXJsUmVnZXhbXTtcbiAgLyoqXG4gICAqIE9ic2VydmVyIGZvciB0aGUga2V5Y2xvYWsgZXZlbnRzXG4gICAqL1xuICBwcml2YXRlIF9rZXljbG9ha0V2ZW50cyQ6IFN1YmplY3Q8S2V5Y2xvYWtFdmVudD4gPSBuZXcgU3ViamVjdDxLZXljbG9ha0V2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBCaW5kcyB0aGUga2V5Y2xvYWstanMgZXZlbnRzIHRvIHRoZSBrZXljbG9ha0V2ZW50cyBTdWJqZWN0XG4gICAqIHdoaWNoIGlzIGEgZ29vZCB3YXkgdG8gbW9uaXRvciBmb3IgY2hhbmdlcywgaWYgbmVlZGVkLlxuICAgKlxuICAgKiBUaGUga2V5Y2xvYWtFdmVudHMgcmV0dXJucyB0aGUga2V5Y2xvYWstanMgZXZlbnQgdHlwZSBhbmQgYW55XG4gICAqIGFyZ3VtZW50IGlmIHRoZSBzb3VyY2UgZnVuY3Rpb24gcHJvdmlkZXMgYW55LlxuICAgKi9cbiAgcHJpdmF0ZSBiaW5kc0tleWNsb2FrRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMuX2luc3RhbmNlLm9uQXV0aEVycm9yID0gZXJyb3JEYXRhID0+IHtcbiAgICAgIHRoaXMuX2tleWNsb2FrRXZlbnRzJC5uZXh0KHtcbiAgICAgICAgYXJnczogZXJyb3JEYXRhLFxuICAgICAgICB0eXBlOiBLZXljbG9ha0V2ZW50VHlwZS5PbkF1dGhFcnJvclxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHRoaXMuX2luc3RhbmNlLm9uQXV0aExvZ291dCA9ICgpID0+IHtcbiAgICAgIHRoaXMuX2tleWNsb2FrRXZlbnRzJC5uZXh0KHsgdHlwZTogS2V5Y2xvYWtFdmVudFR5cGUuT25BdXRoTG9nb3V0IH0pO1xuICAgIH07XG5cbiAgICB0aGlzLl9pbnN0YW5jZS5vbkF1dGhSZWZyZXNoU3VjY2VzcyA9ICgpID0+IHtcbiAgICAgIHRoaXMuX2tleWNsb2FrRXZlbnRzJC5uZXh0KHtcbiAgICAgICAgdHlwZTogS2V5Y2xvYWtFdmVudFR5cGUuT25BdXRoUmVmcmVzaFN1Y2Nlc3NcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICB0aGlzLl9pbnN0YW5jZS5vbkF1dGhSZWZyZXNoRXJyb3IgPSAoKSA9PiB7XG4gICAgICB0aGlzLl9rZXljbG9ha0V2ZW50cyQubmV4dCh7XG4gICAgICAgIHR5cGU6IEtleWNsb2FrRXZlbnRUeXBlLk9uQXV0aFJlZnJlc2hFcnJvclxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHRoaXMuX2luc3RhbmNlLm9uQXV0aFN1Y2Nlc3MgPSAoKSA9PiB7XG4gICAgICB0aGlzLl9rZXljbG9ha0V2ZW50cyQubmV4dCh7IHR5cGU6IEtleWNsb2FrRXZlbnRUeXBlLk9uQXV0aFN1Y2Nlc3MgfSk7XG4gICAgfTtcblxuICAgIHRoaXMuX2luc3RhbmNlLm9uVG9rZW5FeHBpcmVkID0gKCkgPT4ge1xuICAgICAgdGhpcy5fa2V5Y2xvYWtFdmVudHMkLm5leHQoe1xuICAgICAgICB0eXBlOiBLZXljbG9ha0V2ZW50VHlwZS5PblRva2VuRXhwaXJlZFxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHRoaXMuX2luc3RhbmNlLm9uUmVhZHkgPSBhdXRoZW50aWNhdGVkID0+IHtcbiAgICAgIHRoaXMuX2tleWNsb2FrRXZlbnRzJC5uZXh0KHtcbiAgICAgICAgYXJnczogYXV0aGVudGljYXRlZCxcbiAgICAgICAgdHlwZTogS2V5Y2xvYWtFdmVudFR5cGUuT25SZWFkeVxuICAgICAgfSk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBhbGwgYmVhcmVyRXhjbHVkZWRVcmwgY29udGVudCBpbiBhIHVuaWZvcm0gdHlwZTogRXhjbHVkZWRVcmwsXG4gICAqIHNvIGl0IGJlY29tZXMgZWFzaWVyIHRvIGhhbmRsZS5cbiAgICpcbiAgICogQHBhcmFtIGJlYXJlckV4Y2x1ZGVkVXJscyBhcnJheSBvZiBzdHJpbmdzIG9yIEV4Y2x1ZGVkVXJsIHRoYXQgaW5jbHVkZXNcbiAgICogdGhlIHVybCBhbmQgSHR0cE1ldGhvZC5cbiAgICovXG4gIHByaXZhdGUgbG9hZEV4Y2x1ZGVkVXJscyhiZWFyZXJFeGNsdWRlZFVybHM6IChzdHJpbmcgfCBFeGNsdWRlZFVybClbXSk6IEV4Y2x1ZGVkVXJsUmVnZXhbXSB7XG4gICAgY29uc3QgZXhjbHVkZWRVcmxzOiBFeGNsdWRlZFVybFJlZ2V4W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgYmVhcmVyRXhjbHVkZWRVcmxzKSB7XG4gICAgICBsZXQgZXhjbHVkZWRVcmw6IEV4Y2x1ZGVkVXJsUmVnZXg7XG4gICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGV4Y2x1ZGVkVXJsID0geyB1cmxQYXR0ZXJuOiBuZXcgUmVnRXhwKGl0ZW0sICdpJyksIGh0dHBNZXRob2RzOiBbXSB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXhjbHVkZWRVcmwgPSB7XG4gICAgICAgICAgdXJsUGF0dGVybjogbmV3IFJlZ0V4cChpdGVtLnVybCwgJ2knKSxcbiAgICAgICAgICBodHRwTWV0aG9kczogaXRlbS5odHRwTWV0aG9kc1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgZXhjbHVkZWRVcmxzLnB1c2goZXhjbHVkZWRVcmwpO1xuICAgIH1cbiAgICByZXR1cm4gZXhjbHVkZWRVcmxzO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGNsYXNzIHZhbHVlcyBpbml0aWFsaXphdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICovXG4gIHByaXZhdGUgaW5pdFNlcnZpY2VWYWx1ZXMoe1xuICAgIGVuYWJsZUJlYXJlckludGVyY2VwdG9yID0gdHJ1ZSxcbiAgICBsb2FkVXNlclByb2ZpbGVBdFN0YXJ0VXAgPSB0cnVlLFxuICAgIGJlYXJlckV4Y2x1ZGVkVXJscyA9IFtdLFxuICAgIGF1dGhvcml6YXRpb25IZWFkZXJOYW1lID0gJ0F1dGhvcml6YXRpb24nLFxuICAgIGJlYXJlclByZWZpeCA9ICdiZWFyZXInLFxuICAgIGluaXRPcHRpb25zXG4gIH06IEtleWNsb2FrT3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMuX2VuYWJsZUJlYXJlckludGVyY2VwdG9yID0gZW5hYmxlQmVhcmVySW50ZXJjZXB0b3I7XG4gICAgdGhpcy5fbG9hZFVzZXJQcm9maWxlQXRTdGFydFVwID0gbG9hZFVzZXJQcm9maWxlQXRTdGFydFVwO1xuICAgIHRoaXMuX2F1dGhvcml6YXRpb25IZWFkZXJOYW1lID0gYXV0aG9yaXphdGlvbkhlYWRlck5hbWU7XG4gICAgdGhpcy5fYmVhcmVyUHJlZml4ID0gYmVhcmVyUHJlZml4LnRyaW0oKS5jb25jYXQoJyAnKTtcbiAgICB0aGlzLl9leGNsdWRlZFVybHMgPSB0aGlzLmxvYWRFeGNsdWRlZFVybHMoYmVhcmVyRXhjbHVkZWRVcmxzKTtcbiAgICB0aGlzLl9zaWxlbnRSZWZyZXNoID0gaW5pdE9wdGlvbnMgPyBpbml0T3B0aW9ucy5mbG93ID09PSAnaW1wbGljaXQnIDogZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogS2V5Y2xvYWsgaW5pdGlhbGl6YXRpb24uIEl0IHNob3VsZCBiZSBjYWxsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgYWRhcHRlci5cbiAgICogT3B0aW9ucyBpcyBhIG9iamVjdCB3aXRoIDIgbWFpbiBwYXJhbWV0ZXJzOiBjb25maWcgYW5kIGluaXRPcHRpb25zLiBUaGUgZmlyc3Qgb25lXG4gICAqIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUgdGhlIEtleWNsb2FrIGluc3RhbmNlLiBUaGUgc2Vjb25kIG9uZSBhcmUgb3B0aW9ucyB0byBpbml0aWFsaXplIHRoZVxuICAgKiBrZXljbG9hayBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQ29uZmlnOiBtYXkgYmUgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBrZXljbG9hayBVUkkgb3IgYW4gb2JqZWN0IHdpdGggdGhlXG4gICAqIGZvbGxvd2luZyBjb250ZW50OlxuICAgKiAtIHVybDogS2V5Y2xvYWsganNvbiBVUkxcbiAgICogLSByZWFsbTogcmVhbG0gbmFtZVxuICAgKiAtIGNsaWVudElkOiBjbGllbnQgaWRcbiAgICpcbiAgICogaW5pdE9wdGlvbnM6XG4gICAqIE9wdGlvbnMgdG8gaW5pdGlhbGl6ZSB0aGUgS2V5Y2xvYWsgYWRhcHRlciwgbWF0Y2hlcyB0aGUgb3B0aW9ucyBhcyBwcm92aWRlZCBieSBLZXljbG9hayBpdHNlbGYuXG4gICAqXG4gICAqIGVuYWJsZUJlYXJlckludGVyY2VwdG9yOlxuICAgKiBGbGFnIHRvIGluZGljYXRlIGlmIHRoZSBiZWFyZXIgd2lsbCBhZGRlZCB0byB0aGUgYXV0aG9yaXphdGlvbiBoZWFkZXIuXG4gICAqXG4gICAqIGxvYWRVc2VyUHJvZmlsZUluU3RhcnRVcDpcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIHVzZXIgcHJvZmlsZSBzaG91bGQgYmUgbG9hZGVkIGF0IHRoZSBrZXljbG9hayBpbml0aWFsaXphdGlvbixcbiAgICoganVzdCBhZnRlciB0aGUgbG9naW4uXG4gICAqXG4gICAqIGJlYXJlckV4Y2x1ZGVkVXJsczpcbiAgICogU3RyaW5nIEFycmF5IHRvIGV4Y2x1ZGUgdGhlIHVybHMgdGhhdCBzaG91bGQgbm90IGhhdmUgdGhlIEF1dGhvcml6YXRpb24gSGVhZGVyIGF1dG9tYXRpY2FsbHlcbiAgICogYWRkZWQuXG4gICAqXG4gICAqIGF1dGhvcml6YXRpb25IZWFkZXJOYW1lOlxuICAgKiBUaGlzIHZhbHVlIHdpbGwgYmUgdXNlZCBhcyB0aGUgQXV0aG9yaXphdGlvbiBIdHRwIEhlYWRlciBuYW1lLlxuICAgKlxuICAgKiBiZWFyZXJQcmVmaXg6XG4gICAqIFRoaXMgdmFsdWUgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgQXV0aG9yaXphdGlvbiBIdHRwIEhlYWRlciBwYXJhbS5cbiAgICpcbiAgICogQHJldHVybnNcbiAgICogQSBQcm9taXNlIHdpdGggYSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIGluaXRpYWxpemF0aW9uIHdhcyBzdWNjZXNzZnVsLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGluaXQob3B0aW9uczogS2V5Y2xvYWtPcHRpb25zID0ge30pIHtcbiAgICB0aGlzLmluaXRTZXJ2aWNlVmFsdWVzKG9wdGlvbnMpO1xuICAgIGNvbnN0IHsgY29uZmlnLCBpbml0T3B0aW9ucyB9ID0gb3B0aW9ucztcblxuICAgIHRoaXMuX2luc3RhbmNlID0gS2V5Y2xvYWsoY29uZmlnKTtcbiAgICB0aGlzLmJpbmRzS2V5Y2xvYWtFdmVudHMoKTtcblxuICAgIGNvbnN0IGF1dGhlbnRpY2F0ZWQgPSBhd2FpdCB0b1Byb21pc2UodGhpcy5faW5zdGFuY2UuaW5pdChpbml0T3B0aW9ucykpO1xuXG4gICAgaWYgKGF1dGhlbnRpY2F0ZWQgJiYgdGhpcy5fbG9hZFVzZXJQcm9maWxlQXRTdGFydFVwKSB7XG4gICAgICBhd2FpdCB0aGlzLmxvYWRVc2VyUHJvZmlsZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBhdXRoZW50aWNhdGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZGlyZWN0cyB0byBsb2dpbiBmb3JtIG9uIChvcHRpb25zIGlzIGFuIG9wdGlvbmFsIG9iamVjdCB3aXRoIHJlZGlyZWN0VXJpIGFuZC9vclxuICAgKiBwcm9tcHQgZmllbGRzKS5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogT2JqZWN0LCB3aGVyZTpcbiAgICogIC0gcmVkaXJlY3RVcmk6IFNwZWNpZmllcyB0aGUgdXJpIHRvIHJlZGlyZWN0IHRvIGFmdGVyIGxvZ2luLlxuICAgKiAgLSBwcm9tcHQ6QnkgZGVmYXVsdCB0aGUgbG9naW4gc2NyZWVuIGlzIGRpc3BsYXllZCBpZiB0aGUgdXNlciBpcyBub3QgbG9nZ2VkLWluIHRvIEtleWNsb2FrLlxuICAgKiBUbyBvbmx5IGF1dGhlbnRpY2F0ZSB0byB0aGUgYXBwbGljYXRpb24gaWYgdGhlIHVzZXIgaXMgYWxyZWFkeSBsb2dnZWQtaW4gYW5kIG5vdCBkaXNwbGF5IHRoZVxuICAgKiBsb2dpbiBwYWdlIGlmIHRoZSB1c2VyIGlzIG5vdCBsb2dnZWQtaW4sIHNldCB0aGlzIG9wdGlvbiB0byBub25lLiBUbyBhbHdheXMgcmVxdWlyZVxuICAgKiByZS1hdXRoZW50aWNhdGlvbiBhbmQgaWdub3JlIFNTTywgc2V0IHRoaXMgb3B0aW9uIHRvIGxvZ2luIC5cbiAgICogIC0gbWF4QWdlOiBVc2VkIGp1c3QgaWYgdXNlciBpcyBhbHJlYWR5IGF1dGhlbnRpY2F0ZWQuIFNwZWNpZmllcyBtYXhpbXVtIHRpbWUgc2luY2UgdGhlXG4gICAqIGF1dGhlbnRpY2F0aW9uIG9mIHVzZXIgaGFwcGVuZWQuIElmIHVzZXIgaXMgYWxyZWFkeSBhdXRoZW50aWNhdGVkIGZvciBsb25nZXIgdGltZSB0aGFuXG4gICAqIG1heEFnZSwgdGhlIFNTTyBpcyBpZ25vcmVkIGFuZCBoZSB3aWxsIG5lZWQgdG8gcmUtYXV0aGVudGljYXRlIGFnYWluLlxuICAgKiAgLSBsb2dpbkhpbnQ6IFVzZWQgdG8gcHJlLWZpbGwgdGhlIHVzZXJuYW1lL2VtYWlsIGZpZWxkIG9uIHRoZSBsb2dpbiBmb3JtLlxuICAgKiAgLSBhY3Rpb246IElmIHZhbHVlIGlzICdyZWdpc3RlcicgdGhlbiB1c2VyIGlzIHJlZGlyZWN0ZWQgdG8gcmVnaXN0cmF0aW9uIHBhZ2UsIG90aGVyd2lzZSB0b1xuICAgKiBsb2dpbiBwYWdlLlxuICAgKiAgLSBsb2NhbGU6IFNwZWNpZmllcyB0aGUgZGVzaXJlZCBsb2NhbGUgZm9yIHRoZSBVSS5cbiAgICogQHJldHVybnNcbiAgICogQSB2b2lkIFByb21pc2UgaWYgdGhlIGxvZ2luIGlzIHN1Y2Nlc3NmdWwgYW5kIGFmdGVyIHRoZSB1c2VyIHByb2ZpbGUgbG9hZGluZy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBsb2dpbihvcHRpb25zOiBLZXljbG9hay5LZXljbG9ha0xvZ2luT3B0aW9ucyA9IHt9KSB7XG4gICAgYXdhaXQgdG9Qcm9taXNlKHRoaXMuX2luc3RhbmNlLmxvZ2luKG9wdGlvbnMpKTtcblxuICAgIGlmICh0aGlzLl9sb2FkVXNlclByb2ZpbGVBdFN0YXJ0VXApIHtcbiAgICAgIGF3YWl0IHRoaXMubG9hZFVzZXJQcm9maWxlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZGlyZWN0cyB0byBsb2dvdXQuXG4gICAqXG4gICAqIEBwYXJhbSByZWRpcmVjdFVyaVxuICAgKiBTcGVjaWZpZXMgdGhlIHVyaSB0byByZWRpcmVjdCB0byBhZnRlciBsb2dvdXQuXG4gICAqIEByZXR1cm5zXG4gICAqIEEgdm9pZCBQcm9taXNlIGlmIHRoZSBsb2dvdXQgd2FzIHN1Y2Nlc3NmdWwsIGNsZWFuaW5nIGFsc28gdGhlIHVzZXJQcm9maWxlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGxvZ291dChyZWRpcmVjdFVyaT86IHN0cmluZykge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICByZWRpcmVjdFVyaVxuICAgIH07XG5cbiAgICBhd2FpdCB0b1Byb21pc2UodGhpcy5faW5zdGFuY2UubG9nb3V0KG9wdGlvbnMpKTtcbiAgICB0aGlzLl91c2VyUHJvZmlsZSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWRpcmVjdHMgdG8gcmVnaXN0cmF0aW9uIGZvcm0uIFNob3J0Y3V0IGZvciBsb2dpbiB3aXRoIG9wdGlvblxuICAgKiBhY3Rpb24gPSAncmVnaXN0ZXInLiBPcHRpb25zIGFyZSBzYW1lIGFzIGZvciB0aGUgbG9naW4gbWV0aG9kIGJ1dCAnYWN0aW9uJyBpcyBzZXQgdG9cbiAgICogJ3JlZ2lzdGVyJy5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogbG9naW4gb3B0aW9uc1xuICAgKiBAcmV0dXJuc1xuICAgKiBBIHZvaWQgUHJvbWlzZSBpZiB0aGUgcmVnaXN0ZXIgZmxvdyB3YXMgc3VjY2Vzc2Z1bC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyByZWdpc3RlcihvcHRpb25zOiBLZXljbG9hay5LZXljbG9ha0xvZ2luT3B0aW9ucyA9IHsgYWN0aW9uOiAncmVnaXN0ZXInIH0pIHtcbiAgICBhd2FpdCB0b1Byb21pc2UodGhpcy5faW5zdGFuY2UucmVnaXN0ZXIob3B0aW9ucykpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHRoZSB1c2VyIGhhcyBhY2Nlc3MgdG8gdGhlIHNwZWNpZmllZCByb2xlLiBJdCB3aWxsIGxvb2sgZm9yIHJvbGVzIGluXG4gICAqIHJlYWxtIGFuZCBjbGllbnRJZCwgYnV0IHdpbGwgbm90IGNoZWNrIGlmIHRoZSB1c2VyIGlzIGxvZ2dlZCBpbiBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLlxuICAgKlxuICAgKiBAcGFyYW0gcm9sZVxuICAgKiByb2xlIG5hbWVcbiAgICogQHBhcmFtIHJlc291cmNlXG4gICAqIHJlc291cmNlIG5hbWUgSWYgbm90IHNwZWNpZmllZCwgYGNsaWVudElkYCBpcyB1c2VkXG4gICAqIEByZXR1cm5zXG4gICAqIEEgYm9vbGVhbiBtZWFuaW5nIGlmIHRoZSB1c2VyIGhhcyB0aGUgc3BlY2lmaWVkIFJvbGUuXG4gICAqL1xuICBpc1VzZXJJblJvbGUocm9sZTogc3RyaW5nLCByZXNvdXJjZT86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGxldCBoYXNSb2xlOiBib29sZWFuO1xuICAgIGhhc1JvbGUgPSB0aGlzLl9pbnN0YW5jZS5oYXNSZXNvdXJjZVJvbGUocm9sZSwgcmVzb3VyY2UpO1xuICAgIGlmICghaGFzUm9sZSkge1xuICAgICAgaGFzUm9sZSA9IHRoaXMuX2luc3RhbmNlLmhhc1JlYWxtUm9sZShyb2xlKTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc1JvbGU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSByb2xlcyBvZiB0aGUgbG9nZ2VkIHVzZXIuIFRoZSBhbGxSb2xlcyBwYXJhbWV0ZXIsIHdpdGggZGVmYXVsdCB2YWx1ZVxuICAgKiB0cnVlLCB3aWxsIHJldHVybiB0aGUgY2xpZW50SWQgYW5kIHJlYWxtIHJvbGVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgbG9nZ2VkIHVzZXIuIElmIHNldCB0byBmYWxzZVxuICAgKiBpdCB3aWxsIG9ubHkgcmV0dXJuIHRoZSB1c2VyIHJvbGVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgY2xpZW50SWQuXG4gICAqXG4gICAqIEBwYXJhbSBhbGxSb2xlc1xuICAgKiBGbGFnIHRvIHNldCBpZiBhbGwgcm9sZXMgc2hvdWxkIGJlIHJldHVybmVkLihPcHRpb25hbDogZGVmYXVsdCB2YWx1ZSBpcyB0cnVlKVxuICAgKiBAcmV0dXJuc1xuICAgKiBBcnJheSBvZiBSb2xlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGxvZ2dlZCB1c2VyLlxuICAgKi9cbiAgZ2V0VXNlclJvbGVzKGFsbFJvbGVzOiBib29sZWFuID0gdHJ1ZSk6IHN0cmluZ1tdIHtcbiAgICBsZXQgcm9sZXM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKHRoaXMuX2luc3RhbmNlLnJlc291cmNlQWNjZXNzKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLl9pbnN0YW5jZS5yZXNvdXJjZUFjY2Vzcykge1xuICAgICAgICBpZiAodGhpcy5faW5zdGFuY2UucmVzb3VyY2VBY2Nlc3MuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgIGNvbnN0IHJlc291cmNlQWNjZXNzOiBhbnkgPSB0aGlzLl9pbnN0YW5jZS5yZXNvdXJjZUFjY2Vzc1trZXldO1xuICAgICAgICAgIGNvbnN0IGNsaWVudFJvbGVzID0gcmVzb3VyY2VBY2Nlc3NbJ3JvbGVzJ10gfHwgW107XG4gICAgICAgICAgcm9sZXMgPSByb2xlcy5jb25jYXQoY2xpZW50Um9sZXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChhbGxSb2xlcyAmJiB0aGlzLl9pbnN0YW5jZS5yZWFsbUFjY2Vzcykge1xuICAgICAgY29uc3QgcmVhbG1Sb2xlcyA9IHRoaXMuX2luc3RhbmNlLnJlYWxtQWNjZXNzWydyb2xlcyddIHx8IFtdO1xuICAgICAgcm9sZXMucHVzaCguLi5yZWFsbVJvbGVzKTtcbiAgICB9XG4gICAgcmV0dXJuIHJvbGVzO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHVzZXIgaXMgbG9nZ2VkIGluLlxuICAgKlxuICAgKiBAcmV0dXJuc1xuICAgKiBBIGJvb2xlYW4gdGhhdCBpbmRpY2F0ZXMgaWYgdGhlIHVzZXIgaXMgbG9nZ2VkIGluLlxuICAgKi9cbiAgYXN5bmMgaXNMb2dnZWRJbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCF0aGlzLl9pbnN0YW5jZS5hdXRoZW50aWNhdGVkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlVG9rZW4oMjApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB0b2tlbiBoYXMgbGVzcyB0aGFuIG1pblZhbGlkaXR5IHNlY29uZHMgbGVmdCBiZWZvcmVcbiAgICogaXQgZXhwaXJlcy5cbiAgICpcbiAgICogQHBhcmFtIG1pblZhbGlkaXR5XG4gICAqIFNlY29uZHMgbGVmdC4gKG1pblZhbGlkaXR5KSBpcyBvcHRpb25hbC4gRGVmYXVsdCB2YWx1ZSBpcyAwLlxuICAgKiBAcmV0dXJuc1xuICAgKiBCb29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHRva2VuIGlzIGV4cGlyZWQuXG4gICAqL1xuICBpc1Rva2VuRXhwaXJlZChtaW5WYWxpZGl0eTogbnVtYmVyID0gMCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZS5pc1Rva2VuRXhwaXJlZChtaW5WYWxpZGl0eSk7XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIHRva2VuIGV4cGlyZXMgd2l0aGluIG1pblZhbGlkaXR5IHNlY29uZHMgdGhlIHRva2VuIGlzIHJlZnJlc2hlZC4gSWYgdGhlXG4gICAqIHNlc3Npb24gc3RhdHVzIGlmcmFtZSBpcyBlbmFibGVkLCB0aGUgc2Vzc2lvbiBzdGF0dXMgaXMgYWxzbyBjaGVja2VkLlxuICAgKiBSZXR1cm5zIGEgcHJvbWlzZSB0ZWxsaW5nIGlmIHRoZSB0b2tlbiB3YXMgcmVmcmVzaGVkIG9yIG5vdC4gSWYgdGhlIHNlc3Npb24gaXMgbm90IGFjdGl2ZVxuICAgKiBhbnltb3JlLCB0aGUgcHJvbWlzZSBpcyByZWplY3RlZC5cbiAgICpcbiAgICogQHBhcmFtIG1pblZhbGlkaXR5XG4gICAqIFNlY29uZHMgbGVmdC4gKG1pblZhbGlkaXR5IGlzIG9wdGlvbmFsLCBpZiBub3Qgc3BlY2lmaWVkIDUgaXMgdXNlZClcbiAgICogQHJldHVybnNcbiAgICogUHJvbWlzZSB3aXRoIGEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSB0b2tlbiB3YXMgc3VjY2VzZnVsbHkgdXBkYXRlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVUb2tlbihtaW5WYWxpZGl0eSA9IDUpIHtcbiAgICAvLyBUT0RPOiB0aGlzIGlzIGEgd29ya2Fyb3VuZCB1bnRpbCB0aGUgc2lsZW50IHJlZnJlc2ggKGlzc3VlICM0MylcbiAgICAvLyBpcyBub3QgaW1wbGVtZW50ZWQsIGF2b2lkaW5nIHRoZSByZWRpcmVjdCBsb29wLlxuICAgIGlmICh0aGlzLl9zaWxlbnRSZWZyZXNoKSB7XG4gICAgICBpZiAodGhpcy5pc1Rva2VuRXhwaXJlZCgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHJlZnJlc2ggdGhlIHRva2VuLCBvciB0aGUgc2Vzc2lvbiBpcyBleHBpcmVkJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5faW5zdGFuY2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignS2V5Y2xvYWsgQW5ndWxhciBsaWJyYXJ5IGlzIG5vdCBpbml0aWFsaXplZC4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdG9Qcm9taXNlKHRoaXMuX2luc3RhbmNlLnVwZGF0ZVRva2VuKG1pblZhbGlkaXR5KSk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgdGhlIHVzZXIgcHJvZmlsZS5cbiAgICogUmV0dXJucyBwcm9taXNlIHRvIHNldCBmdW5jdGlvbnMgdG8gYmUgaW52b2tlZCBpZiB0aGUgcHJvZmlsZSB3YXMgbG9hZGVkXG4gICAqIHN1Y2Nlc3NmdWxseSwgb3IgaWYgdGhlIHByb2ZpbGUgY291bGQgbm90IGJlIGxvYWRlZC5cbiAgICpcbiAgICogQHBhcmFtIGZvcmNlUmVsb2FkXG4gICAqIElmIHRydWUgd2lsbCBmb3JjZSB0aGUgbG9hZFVzZXJQcm9maWxlIGV2ZW4gaWYgaXRzIGFscmVhZHkgbG9hZGVkLlxuICAgKiBAcmV0dXJuc1xuICAgKiBBIHByb21pc2Ugd2l0aCB0aGUgS2V5Y2xvYWtQcm9maWxlIGRhdGEgbG9hZGVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGxvYWRVc2VyUHJvZmlsZShmb3JjZVJlbG9hZCA9IGZhbHNlKSB7XG4gICAgaWYgKHRoaXMuX3VzZXJQcm9maWxlICYmICFmb3JjZVJlbG9hZCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3VzZXJQcm9maWxlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5faW5zdGFuY2UuYXV0aGVudGljYXRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgdXNlciBwcm9maWxlIHdhcyBub3QgbG9hZGVkIGFzIHRoZSB1c2VyIGlzIG5vdCBsb2dnZWQgaW4uJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3VzZXJQcm9maWxlID0gYXdhaXQgdG9Qcm9taXNlKHRoaXMuX2luc3RhbmNlLmxvYWRVc2VyUHJvZmlsZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBhdXRoZW50aWNhdGVkIHRva2VuLCBjYWxsaW5nIHVwZGF0ZVRva2VuIHRvIGdldCBhIHJlZnJlc2hlZCBvbmUgaWZcbiAgICogbmVjZXNzYXJ5LiBJZiB0aGUgc2Vzc2lvbiBpcyBleHBpcmVkIGFuZCB0aGUgZm9yY2VMb2dpbiBmbGFnIGlzIHNldCB0byB0cnVlLFxuICAgKiB0aGlzIG1ldGhvZCBjYWxscyB0aGUgbG9naW4gbWV0aG9kIGZvciBhIG5ldyBsb2dpbiwgb3RoZXJ3aXNlIHJlamVjdHMuXG4gICAqXG4gICAqIEBwYXJhbSBmb3JjZUxvZ2luXG4gICAqIEZsYWcgd2hldGhlciBhIGxvZ2luIHNob3VsZCBiZSBlbmZvcmNlZCBpZiB0aGUgc2Vzc2lvbiBpcyBleHBpcmVkLlxuICAgKiBAcmV0dXJuc1xuICAgKiBQcm9taXNlIHdpdGggdGhlIGdlbmVyYXRlZCB0b2tlbi5cbiAgICovXG4gIGFzeW5jIGdldFRva2VuKGZvcmNlTG9naW4gPSB0cnVlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy51cGRhdGVUb2tlbigxMCk7XG4gICAgICByZXR1cm4gdGhpcy5faW5zdGFuY2UudG9rZW47XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChmb3JjZUxvZ2luKSB7XG4gICAgICAgIHRoaXMubG9naW4oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBsb2dnZWQgdXNlcm5hbWUuXG4gICAqXG4gICAqIEByZXR1cm5zXG4gICAqIFRoZSBsb2dnZWQgdXNlcm5hbWUuXG4gICAqL1xuICBwdWJsaWMgZ2V0VXNlcm5hbWUoKSB7XG4gICAgaWYgKCF0aGlzLl91c2VyUHJvZmlsZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVc2VyIG5vdCBsb2dnZWQgaW4gb3IgdXNlciBwcm9maWxlIHdhcyBub3QgbG9hZGVkLicpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl91c2VyUHJvZmlsZS51c2VybmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciBhdXRoZW50aWNhdGlvbiBzdGF0ZSwgaW5jbHVkaW5nIHRva2Vucy4gVGhpcyBjYW4gYmUgdXNlZnVsIGlmIGFwcGxpY2F0aW9uXG4gICAqIGhhcyBkZXRlY3RlZCB0aGUgc2Vzc2lvbiB3YXMgZXhwaXJlZCwgZm9yIGV4YW1wbGUgaWYgdXBkYXRpbmcgdG9rZW4gZmFpbHMuXG4gICAqIEludm9raW5nIHRoaXMgcmVzdWx0cyBpbiBvbkF1dGhMb2dvdXQgY2FsbGJhY2sgbGlzdGVuZXIgYmVpbmcgaW52b2tlZC5cbiAgICovXG4gIGNsZWFyVG9rZW4oKTogdm9pZCB7XG4gICAgdGhpcy5faW5zdGFuY2UuY2xlYXJUb2tlbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB2YWxpZCB0b2tlbiBpbiBoZWFkZXIuIFRoZSBrZXkgJiB2YWx1ZSBmb3JtYXQgaXM6XG4gICAqIEF1dGhvcml6YXRpb24gQmVhcmVyIDx0b2tlbj4uXG4gICAqIElmIHRoZSBoZWFkZXJzIHBhcmFtIGlzIHVuZGVmaW5lZCBpdCB3aWxsIGNyZWF0ZSB0aGUgQW5ndWxhciBoZWFkZXJzIG9iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIGhlYWRlcnNcbiAgICogVXBkYXRlZCBoZWFkZXIgd2l0aCBBdXRob3JpemF0aW9uIGFuZCBLZXljbG9hayB0b2tlbi5cbiAgICogQHJldHVybnNcbiAgICogQW4gb2JzZXJ2YWJsZSB3aXRoIHdpdGggdGhlIEhUVFAgQXV0aG9yaXphdGlvbiBoZWFkZXIgYW5kIHRoZSBjdXJyZW50IHRva2VuLlxuICAgKi9cbiAgcHVibGljIGFkZFRva2VuVG9IZWFkZXIoaGVhZGVyczogSHR0cEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKSkge1xuICAgIHJldHVybiBmcm9tKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRva2VuID0gYXdhaXQgdGhpcy5nZXRUb2tlbigpO1xuICAgICAgcmV0dXJuIGhlYWRlcnMuc2V0KHRoaXMuX2F1dGhvcml6YXRpb25IZWFkZXJOYW1lLCB0aGlzLl9iZWFyZXJQcmVmaXggKyB0b2tlbik7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgb3JpZ2luYWwgS2V5Y2xvYWsgaW5zdGFuY2UsIGlmIHlvdSBuZWVkIGFueSBjdXN0b21pemF0aW9uIHRoYXRcbiAgICogdGhpcyBBbmd1bGFyIHNlcnZpY2UgZG9lcyBub3Qgc3VwcG9ydCB5ZXQuIFVzZSB3aXRoIGNhdXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zXG4gICAqIFRoZSBLZXljbG9ha0luc3RhbmNlIGZyb20ga2V5Y2xvYWstanMuXG4gICAqL1xuICBnZXRLZXljbG9ha0luc3RhbmNlKCk6IEtleWNsb2FrLktleWNsb2FrSW5zdGFuY2Uge1xuICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBleGNsdWRlZCBVUkxzIHRoYXQgc2hvdWxkIG5vdCBiZSBjb25zaWRlcmVkIGJ5XG4gICAqIHRoZSBodHRwIGludGVyY2VwdG9yIHdoaWNoIGF1dG9tYXRpY2FsbHkgYWRkcyB0aGUgYXV0aG9yaXphdGlvbiBoZWFkZXIgaW4gdGhlIEh0dHAgUmVxdWVzdC5cbiAgICpcbiAgICogQHJldHVybnNcbiAgICogVGhlIGV4Y2x1ZGVkIHVybHMgdGhhdCBtdXN0IG5vdCBiZSBpbnRlcmNlcHRlZCBieSB0aGUgS2V5Y2xvYWtCZWFyZXJJbnRlcmNlcHRvci5cbiAgICovXG4gIGdldCBleGNsdWRlZFVybHMoKTogRXhjbHVkZWRVcmxSZWdleFtdIHtcbiAgICByZXR1cm4gdGhpcy5fZXhjbHVkZWRVcmxzO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsYWcgdG8gaW5kaWNhdGUgaWYgdGhlIGJlYXJlciB3aWxsIGJlIGFkZGVkIHRvIHRoZSBhdXRob3JpemF0aW9uIGhlYWRlci5cbiAgICpcbiAgICogQHJldHVybnNcbiAgICogUmV0dXJucyBpZiB0aGUgYmVhcmVyIGludGVyY2VwdG9yIHdhcyBzZXQgdG8gYmUgZGlzYWJsZWQuXG4gICAqL1xuICBnZXQgZW5hYmxlQmVhcmVySW50ZXJjZXB0b3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuYWJsZUJlYXJlckludGVyY2VwdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEtleWNsb2FrIHN1YmplY3QgdG8gbW9uaXRvciB0aGUgZXZlbnRzIHRyaWdnZXJlZCBieSBrZXljbG9hay1qcy5cbiAgICogVGhlIGZvbGxvd2luZyBldmVudHMgYXMgYXZhaWxhYmxlIChhcyBkZXNjcmliZWQgYXQga2V5Y2xvYWsgZG9jcyAtXG4gICAqIGh0dHBzOi8vd3d3LmtleWNsb2FrLm9yZy9kb2NzL2xhdGVzdC9zZWN1cmluZ19hcHBzL2luZGV4Lmh0bWwjY2FsbGJhY2stZXZlbnRzKTpcbiAgICogLSBPbkF1dGhFcnJvclxuICAgKiAtIE9uQXV0aExvZ291dFxuICAgKiAtIE9uQXV0aFJlZnJlc2hFcnJvclxuICAgKiAtIE9uQXV0aFJlZnJlc2hTdWNjZXNzXG4gICAqIC0gT25BdXRoU3VjY2Vzc1xuICAgKiAtIE9uUmVhZHlcbiAgICogLSBPblRva2VuRXhwaXJlXG4gICAqIEluIGVhY2ggb2NjdXJyZW5jZSBvZiBhbnkgb2YgdGhlc2UsIHRoaXMgc3ViamVjdCB3aWxsIHJldHVybiB0aGUgZXZlbnQgdHlwZSxcbiAgICogZGVzY3JpYmVkIGF0IHtAbGluayBLZXljbG9ha0V2ZW50VHlwZX0gZW51bSBhbmQgdGhlIGZ1bmN0aW9uIGFyZ3MgZnJvbSB0aGUga2V5Y2xvYWstanNcbiAgICogaWYgcHJvdmlkZWQgYW55LlxuICAgKlxuICAgKiBAcmV0dXJuc1xuICAgKiBBIHN1YmplY3Qgd2l0aCB0aGUge0BsaW5rIEtleWNsb2FrRXZlbnR9IHdoaWNoIGRlc2NyaWJlcyB0aGUgZXZlbnQgdHlwZSBhbmQgYXR0YWNoZXMgdGhlXG4gICAqIGZ1bmN0aW9uIGFyZ3MuXG4gICAqL1xuICBnZXQga2V5Y2xvYWtFdmVudHMkKCk6IFN1YmplY3Q8S2V5Y2xvYWtFdmVudD4ge1xuICAgIHJldHVybiB0aGlzLl9rZXljbG9ha0V2ZW50cyQ7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export function toPromise(originalPromise) {
|
|
2
|
-
if (originalPromise instanceof Promise) {
|
|
3
|
-
return originalPromise;
|
|
4
|
-
}
|
|
5
|
-
return new Promise(function (resolve, reject) {
|
|
6
|
-
originalPromise.success(resolve);
|
|
7
|
-
originalPromise.error(reject);
|
|
8
|
-
});
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG8tcHJvbWlzZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2tleWNsb2FrLWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvY29yZS91dGlscy90by1wcm9taXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE1BQU0sVUFBVSxTQUFTLENBQU8sZUFBb0U7SUFDbEcsSUFBSSxlQUFlLFlBQVksT0FBTyxFQUFFO1FBQ3RDLE9BQU8sZUFBZSxDQUFDO0tBQ3hCO0lBRUQsT0FBTyxJQUFJLE9BQU8sQ0FBSSxVQUFDLE9BQU8sRUFBRSxNQUFNO1FBQ3BDLGVBQWUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsZUFBZSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLZXljbG9ha1Byb21pc2UgfSBmcm9tICdrZXljbG9hay1qcyc7XG5cbmludGVyZmFjZSBMZWdhY3lLZXljbG9ha1Byb21pc2U8VCwgRT4ge1xuICBzdWNjZXNzKGNhbGxiYWNrOiAocmVzdWx0OiBUKSA9PiB2b2lkKTogTGVnYWN5S2V5Y2xvYWtQcm9taXNlPFQsIEU+O1xuICBlcnJvcihjYWxsYmFjazogKHJlc3VsdDogRSkgPT4gdm9pZCk6IExlZ2FjeUtleWNsb2FrUHJvbWlzZTxULCBFPjtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhICdsZWdhY3knIEtleWNsb2FrIHByb21pc2UgdG8gYSBzdGFuZGFyZGl6ZWQgb25lLlxuICpcbiAqIEBwYXJhbSBvcmlnaW5hbFByb21pc2UgVGhlIEtleWNsb2FrIHByb21pc2UgdG8gY29udmVydC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvUHJvbWlzZTxULCBFPihvcmlnaW5hbFByb21pc2U6IExlZ2FjeUtleWNsb2FrUHJvbWlzZTxULCBFPiB8IEtleWNsb2FrUHJvbWlzZTxULCBFPikge1xuICBpZiAob3JpZ2luYWxQcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgIHJldHVybiBvcmlnaW5hbFByb21pc2U7XG4gIH1cblxuICByZXR1cm4gbmV3IFByb21pc2U8VD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIG9yaWdpbmFsUHJvbWlzZS5zdWNjZXNzKHJlc29sdmUpO1xuICAgIG9yaWdpbmFsUHJvbWlzZS5lcnJvcihyZWplY3QpO1xuICB9KTtcbn1cbiJdfQ==
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { NgModule } from '@angular/core';
|
|
3
|
-
import { CoreModule } from './core/core.module';
|
|
4
|
-
var KeycloakAngularModule = (function () {
|
|
5
|
-
function KeycloakAngularModule() {
|
|
6
|
-
}
|
|
7
|
-
KeycloakAngularModule = __decorate([
|
|
8
|
-
NgModule({
|
|
9
|
-
imports: [CoreModule]
|
|
10
|
-
})
|
|
11
|
-
], KeycloakAngularModule);
|
|
12
|
-
return KeycloakAngularModule;
|
|
13
|
-
}());
|
|
14
|
-
export { KeycloakAngularModule };
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2xvYWstYW5ndWxhci5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9rZXljbG9hay1hbmd1bGFyLyIsInNvdXJjZXMiOlsibGliL2tleWNsb2FrLWFuZ3VsYXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFRQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUtoRDtJQUFBO0lBQW9DLENBQUM7SUFBeEIscUJBQXFCO1FBSGpDLFFBQVEsQ0FBQztZQUNSLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQztTQUN0QixDQUFDO09BQ1cscUJBQXFCLENBQUc7SUFBRCw0QkFBQztDQUFBLEFBQXJDLElBQXFDO1NBQXhCLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBNYXVyaWNpbyBHZW1lbGxpIFZpZ29sbyBhbmQgY29udHJpYnV0b3JzLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL21hdXJpY2lvdmlnb2xvL2tleWNsb2FrLWFuZ3VsYXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvcmVNb2R1bGUgfSBmcm9tICcuL2NvcmUvY29yZS5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29yZU1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgS2V5Y2xvYWtBbmd1bGFyTW9kdWxlIHt9XG4iXX0=
|
package/esm5/public_api.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export { KeycloakEventType } from './lib/core/interfaces/keycloak-event';
|
|
2
|
-
export { KeycloakAuthGuard } from './lib/core/services/keycloak-auth-guard';
|
|
3
|
-
export { KeycloakService } from './lib/core/services/keycloak.service';
|
|
4
|
-
export { KeycloakBearerInterceptor } from './lib/core/interceptors/keycloak-bearer.interceptor';
|
|
5
|
-
export { CoreModule } from './lib/core/core.module';
|
|
6
|
-
export { KeycloakAngularModule } from './lib/keycloak-angular.module';
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2tleWNsb2FrLWFuZ3VsYXIvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE9BQU8sRUFFTCxpQkFBaUIsRUFDbEIsTUFBTSxzQ0FBc0MsQ0FBQztBQU05QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUNMLHlCQUF5QixFQUMxQixNQUFNLHFEQUFxRCxDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBNYXVyaWNpbyBHZW1lbGxpIFZpZ29sbyBhbmQgY29udHJpYnV0b3JzLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL21hdXJpY2lvdmlnb2xvL2tleWNsb2FrLWFuZ3VsYXIvTElDRU5TRVxuICovXG5cbmV4cG9ydCB7IEtleWNsb2FrQ29uZmlnIH0gZnJvbSAnLi9saWIvY29yZS9pbnRlcmZhY2VzL2tleWNsb2FrLWNvbmZpZyc7XG5leHBvcnQge1xuICBLZXljbG9ha0V2ZW50LFxuICBLZXljbG9ha0V2ZW50VHlwZVxufSBmcm9tICcuL2xpYi9jb3JlL2ludGVyZmFjZXMva2V5Y2xvYWstZXZlbnQnO1xuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgS2V5Y2xvYWsncyBpbnRlcm5hbCB0eXBlcyBpbnN0ZWFkLlxuICovXG5leHBvcnQgdHlwZSBLZXljbG9ha0luaXRPcHRpb25zID0gS2V5Y2xvYWsuS2V5Y2xvYWtJbml0T3B0aW9ucztcbmV4cG9ydCB7IEtleWNsb2FrT3B0aW9ucyB9IGZyb20gJy4vbGliL2NvcmUvaW50ZXJmYWNlcy9rZXljbG9hay1vcHRpb25zJztcbmV4cG9ydCB7IEtleWNsb2FrQXV0aEd1YXJkIH0gZnJvbSAnLi9saWIvY29yZS9zZXJ2aWNlcy9rZXljbG9hay1hdXRoLWd1YXJkJztcbmV4cG9ydCB7IEtleWNsb2FrU2VydmljZSB9IGZyb20gJy4vbGliL2NvcmUvc2VydmljZXMva2V5Y2xvYWsuc2VydmljZSc7XG5leHBvcnQge1xuICBLZXljbG9ha0JlYXJlckludGVyY2VwdG9yXG59IGZyb20gJy4vbGliL2NvcmUvaW50ZXJjZXB0b3JzL2tleWNsb2FrLWJlYXJlci5pbnRlcmNlcHRvcic7XG5leHBvcnQgeyBDb3JlTW9kdWxlIH0gZnJvbSAnLi9saWIvY29yZS9jb3JlLm1vZHVsZSc7XG5leHBvcnQgeyBLZXljbG9ha0FuZ3VsYXJNb2R1bGUgfSBmcm9tICcuL2xpYi9rZXljbG9hay1hbmd1bGFyLm1vZHVsZSc7XG4iXX0=
|