@tiba-spark/client-shared-lib 25.3.0-249 → 25.3.0-255

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.
@@ -3,6 +3,7 @@ import { BrowserCacheLocation, InteractionType, LogLevel, PublicClientApplicatio
3
3
  import { filter, first } from 'rxjs';
4
4
  import { SessionState } from '../../modules/auth/session.state';
5
5
  import { SingleSignOnProvider } from '../../service-proxy/cloud-service-proxies';
6
+ import { isNullOrEmpty } from '../../utils/custom-validator.util';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "@ngxs/store";
8
9
  import * as i2 from "@azure/msal-angular";
@@ -28,7 +29,13 @@ export class MSLAuthService {
28
29
  isSingleSignOnEnabledWithMSProvider(tenant) {
29
30
  return tenant.props?.sso?.enabled && tenant.props.sso?.provider === SingleSignOnProvider.Microsoft && tenant.props.sso?.configurations;
30
31
  }
32
+ validateConfigurations(clientId, authority, tenantName) {
33
+ if (isNullOrEmpty(clientId?.trim()) || isNullOrEmpty(authority?.trim()) || isNullOrEmpty(tenantName?.trim())) {
34
+ console.error("Error: One or more required parameters for SSO are missing or empty.");
35
+ }
36
+ }
31
37
  createPublicClientApplication(clientId, authority, tenantName) {
38
+ this.validateConfigurations(clientId, authority, tenantName);
32
39
  return new PublicClientApplication({
33
40
  auth: {
34
41
  clientId: clientId, // This is the ONLY mandatory field that you need to supply.
@@ -96,4 +103,4 @@ export function MSALGuardConfigFactory() {
96
103
  loginFailedRoute: '/'
97
104
  };
98
105
  }
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNsLWF1dGgtc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvc2VydmljZXMvZmFjdG9yaWVzL21zbC1hdXRoLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQTRCLGVBQWUsRUFBRSxRQUFRLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV6SSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVyQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7QUFHakYsTUFBTSxPQUFPLGNBQWM7SUFFekIsWUFBb0IsS0FBWSxFQUFVLFdBQXdCO1FBQTlDLFVBQUssR0FBTCxLQUFLLENBQU87UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUNsRSxDQUFDO0lBRU0sSUFBSTtRQUNULE9BQU8sSUFBSSxPQUFPLENBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDcEgsSUFBSSxJQUFJLENBQUMsbUNBQW1DLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDckQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsY0FB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QUMsV0FBVyxDQUFDLENBQUM7U0FDM0I7UUFDRCxnQkFBZ0IsRUFBRSxHQUFHO0tBQ3RCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTXNhbEd1YXJkQ29uZmlndXJhdGlvbiwgTXNhbEludGVyY2VwdG9yQ29uZmlndXJhdGlvbiwgTXNhbFNlcnZpY2UgfSBmcm9tICdAYXp1cmUvbXNhbC1hbmd1bGFyJztcbmltcG9ydCB7IEJyb3dzZXJDYWNoZUxvY2F0aW9uLCBJUHVibGljQ2xpZW50QXBwbGljYXRpb24sIEludGVyYWN0aW9uVHlwZSwgTG9nTGV2ZWwsIFB1YmxpY0NsaWVudEFwcGxpY2F0aW9uIH0gZnJvbSAnQGF6dXJlL21zYWwtYnJvd3Nlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IGZpbHRlciwgZmlyc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRlbmFudEluZm8gfSBmcm9tICcuLi8uLi9tb2R1bGVzL2F1dGgvbW9kZWwvdGVuYW50LWluZm8uaW50ZXJmYWNlJztcbmltcG9ydCB7IFNlc3Npb25TdGF0ZSB9IGZyb20gJy4uLy4uL21vZHVsZXMvYXV0aC9zZXNzaW9uLnN0YXRlJztcbmltcG9ydCB7IFNpbmdsZVNpZ25PblByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vc2VydmljZS1wcm94eS9jbG91ZC1zZXJ2aWNlLXByb3hpZXMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTVNMQXV0aFNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlLCBwcml2YXRlIG1zYWxTZXJ2aWNlOiBNc2FsU2VydmljZSkge1xuICB9XG5cbiAgcHVibGljIGluaXQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPGJvb2xlYW4+KChyZXNvbHZlKSA9PiB7XG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChTZXNzaW9uU3RhdGUudGVuYW50SW5mbykucGlwZShmaWx0ZXIodGVuYW50SW5mbyA9PiB0ZW5hbnRJbmZvICE9IG51bGwpLCBmaXJzdCgpKS5zdWJzY3JpYmUodGVuYW50ID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNTaW5nbGVTaWduT25FbmFibGVkV2l0aE1TUHJvdmlkZXIodGVuYW50KSkge1xuICAgICAgICAgIGNvbnN0IGNsaWVudElkID0gdGVuYW50LnByb3BzLnNzby5jb25maWd1cmF0aW9ucz8uYXp1cmU/LmNsaWVudElkOy8vIFRoaXMgaXMgdGhlIE9OTFkgbWFuZGF0b3J5IGZpZWxkIHRoYXQgeW91IG5lZWQgdG8gc3VwcGx5LlxuICAgICAgICAgIGNvbnN0IGF1dGhvcml0eSA9IGBodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vJHt0ZW5hbnQucHJvcHMuc3NvLmNvbmZpZ3VyYXRpb25zPy5henVyZT8udGVuYW50SWR9YDtcbiAgICAgICAgICBjb25zdCBwdWJsaWNDbGllbnRBcHBsaWNhdGlvbiA9IHRoaXMuY3JlYXRlUHVibGljQ2xpZW50QXBwbGljYXRpb24oY2xpZW50SWQsIGF1dGhvcml0eSwgdGVuYW50LnRlbmFudE5hbWUpO1xuICAgICAgICAgIHRoaXMubXNhbFNlcnZpY2UuaW5zdGFuY2UgPSBwdWJsaWNDbGllbnRBcHBsaWNhdGlvbjtcbiAgICAgICAgICB0aGlzLm1zYWxTZXJ2aWNlLmluaXRpYWxpemUoKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGlzU2luZ2xlU2lnbk9uRW5hYmxlZFdpdGhNU1Byb3ZpZGVyKHRlbmFudDogVGVuYW50SW5mbykge1xuICAgIHJldHVybiB0ZW5hbnQucHJvcHM/LnNzbz8uZW5hYmxlZCAmJiB0ZW5hbnQucHJvcHMuc3NvPy5wcm92aWRlciA9PT0gU2luZ2xlU2lnbk9uUHJvdmlkZXIuTWljcm9zb2Z0ICYmIHRlbmFudC5wcm9wcy5zc28/LmNvbmZpZ3VyYXRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVQdWJsaWNDbGllbnRBcHBsaWNhdGlvbihjbGllbnRJZDogc3RyaW5nLCBhdXRob3JpdHk6IHN0cmluZywgdGVuYW50TmFtZTogc3RyaW5nKTogSVB1YmxpY0NsaWVudEFwcGxpY2F0aW9uIHtcbiAgICByZXR1cm4gbmV3IFB1YmxpY0NsaWVudEFwcGxpY2F0aW9uKHtcbiAgICAgIGF1dGg6IHtcbiAgICAgICAgY2xpZW50SWQ6IGNsaWVudElkLCAvLyBUaGlzIGlzIHRoZSBPTkxZIG1hbmRhdG9yeSBmaWVsZCB0aGF0IHlvdSBuZWVkIHRvIHN1cHBseS5cbiAgICAgICAgYXV0aG9yaXR5OiBhdXRob3JpdHksIC8vIERlZmF1bHRzIHRvIFwiaHR0cHM6Ly9sb2dpbi5taWNyb3NvZnRvbmxpbmUuY29tL2NvbW1vblwiXG4gICAgICAgIHJlZGlyZWN0VXJpOiBgLyR7dGVuYW50TmFtZX0vYWNjb3VudC9sb2dpbmAsXG4gICAgICAgIHBvc3RMb2dvdXRSZWRpcmVjdFVyaTogJy8nLCAvLyBJbmRpY2F0ZXMgdGhlIHBhZ2UgdG8gbmF2aWdhdGUgYWZ0ZXIgbG9nb3V0LlxuICAgICAgfSxcbiAgICAgIGNhY2hlOiB7XG4gICAgICAgIGNhY2hlTG9jYXRpb246IEJyb3dzZXJDYWNoZUxvY2F0aW9uLkxvY2FsU3RvcmFnZSwgLy8gQ29uZmlndXJlcyBjYWNoZSBsb2NhdGlvbi4gXCJzZXNzaW9uU3RvcmFnZVwiIGlzIG1vcmUgc2VjdXJlLCBidXQgXCJsb2NhbFN0b3JhZ2VcIiBnaXZlcyB5b3UgU1NPIGJldHdlZW4gdGFicy5cbiAgICAgICAgLy9zdG9yZUF1dGhTdGF0ZUluQ29va2llOiBmYWxzZSwgLy8gU2V0IHRoaXMgdG8gXCJ0cnVlXCIgaWYgeW91IGFyZSBoYXZpbmcgaXNzdWVzIG9uIElFMTEgb3IgRWRnZVxuICAgICAgfSxcbiAgICAgIHN5c3RlbToge1xuICAgICAgICBhbGxvd05hdGl2ZUJyb2tlcjogZmFsc2UsIC8vIERpc2FibGVzIFdBTSBCcm9rZXJcbiAgICAgICAgbG9nZ2VyT3B0aW9uczoge1xuICAgICAgICAgIGxvZ2dlckNhbGxiYWNrLFxuICAgICAgICAgIGxvZ0xldmVsOiBMb2dMZXZlbC5FcnJvcixcbiAgICAgICAgICBwaWlMb2dnaW5nRW5hYmxlZDogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBsb2dnZXJDYWxsYmFjayhsb2dMZXZlbDogTG9nTGV2ZWwsIG1lc3NhZ2U6IHN0cmluZykge1xuICBjb25zb2xlLmxvZyhtZXNzYWdlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVNc2FsKGF1dGhTZXJ2aWNlOiBNU0xBdXRoU2VydmljZSk6ICgpID0+IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGF1dGhTZXJ2aWNlLmluaXQoKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBIZXJlIHdlIHBhc3MgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyB0byBjcmVhdGUgYW4gTVNBTCBpbnN0YW5jZS5cbiAqIEZvciBtb3JlIGluZm8sIHZpc2l0OiBodHRwczovL2dpdGh1Yi5jb20vQXp1cmVBRC9taWNyb3NvZnQtYXV0aGVudGljYXRpb24tbGlicmFyeS1mb3ItanMvYmxvYi9kZXYvbGliL21zYWwtYW5ndWxhci9kb2NzL3YyLWRvY3MvY29uZmlndXJhdGlvbi5tZFxuICovXG5leHBvcnQgZnVuY3Rpb24gTVNBTEluc3RhbmNlRmFjdG9yeSgpOiBJUHVibGljQ2xpZW50QXBwbGljYXRpb24ge1xuICByZXR1cm4gbmV3IFB1YmxpY0NsaWVudEFwcGxpY2F0aW9uKHtcbiAgICBhdXRoOiB7XG4gICAgICBjbGllbnRJZDogbnVsbFxuICAgIH0sXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTVNBTEludGVyY2VwdG9yQ29uZmlnRmFjdG9yeSgpOiBNc2FsSW50ZXJjZXB0b3JDb25maWd1cmF0aW9uIHtcbiAgY29uc3QgcHJvdGVjdGVkUmVzb3VyY2VNYXAgPSBuZXcgTWFwPHN0cmluZywgQXJyYXk8c3RyaW5nPj4oKTtcbiAgcHJvdGVjdGVkUmVzb3VyY2VNYXAuc2V0KCdodHRwczovL2dyYXBoLm1pY3Jvc29mdC5jb20vdjEuMC9tZScsIFsndXNlci5yZWFkJ10pO1xuICByZXR1cm4ge1xuICAgIGludGVyYWN0aW9uVHlwZTogSW50ZXJhY3Rpb25UeXBlLlJlZGlyZWN0LFxuICAgIHByb3RlY3RlZFJlc291cmNlTWFwXG4gIH07XG59XG4vKipcbiAqIFNldCB5b3VyIGRlZmF1bHQgaW50ZXJhY3Rpb24gdHlwZSBmb3IgTVNBTEd1YXJkIGhlcmUuIElmIHlvdSBoYXZlIGFueVxuICogYWRkaXRpb25hbCBzY29wZXMgeW91IHdhbnQgdGhlIHVzZXIgdG8gY29uc2VudCB1cG9uIGxvZ2luLCBhZGQgdGhlbSBoZXJlIGFzIHdlbGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBNU0FMR3VhcmRDb25maWdGYWN0b3J5KCk6IE1zYWxHdWFyZENvbmZpZ3VyYXRpb24ge1xuICByZXR1cm4ge1xuICAgIGludGVyYWN0aW9uVHlwZTogSW50ZXJhY3Rpb25UeXBlLlJlZGlyZWN0LFxuICAgIGF1dGhSZXF1ZXN0OiB7XG4gICAgICBzY29wZXM6IFsuLi5bJ3VzZXIucmVhZCddXVxuICAgIH0sXG4gICAgbG9naW5GYWlsZWRSb3V0ZTogJy8nXG4gIH07XG59XG4iXX0=
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNsLWF1dGgtc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvc2VydmljZXMvZmFjdG9yaWVzL21zbC1hdXRoLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQTRCLGVBQWUsRUFBRSxRQUFRLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV6SSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVyQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDakYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7O0FBR2xFLE1BQU0sT0FBTyxjQUFjO0lBRXpCLFlBQW9CLEtBQVksRUFBVSxXQUF3QjtRQUE5QyxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFDbEUsQ0FBQztJQUVNLElBQUk7UUFDVCxPQUFPLElBQUksT0FBTyxDQUFVLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDdEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3BILElBQUksSUFBSSxDQUFDLG1DQUFtQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7b0JBQ3JELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUEsNERBQTREO29CQUM5SCxNQUFNLFNBQVMsR0FBRyxxQ0FBcUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQztvQkFDMUcsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsNkJBQTZCLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzNHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxHQUFHLHVCQUF1QixDQUFDO29CQUNwRCxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUM1QyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sbUNBQW1DLENBQUMsTUFBa0I7UUFDNUQsT0FBTyxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsUUFBUSxLQUFLLG9CQUFvQixDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUM7SUFDekksQ0FBQztJQUVPLHNCQUFzQixDQUFDLFFBQWdCLEVBQUUsU0FBaUIsRUFBRSxVQUFrQjtRQUNwRixJQUFJLGFBQWEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxhQUFhLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksYUFBYSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDN0csT0FBTyxDQUFDLEtBQUssQ0FBQyxzRUFBc0UsQ0FBQyxDQUFDO1FBQ3hGLENBQUM7SUFDSCxDQUFDO0lBRU8sNkJBQTZCLENBQUMsUUFBZ0IsRUFBRSxTQUFpQixFQUFFLFVBQWtCO1FBQzNGLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRTdELE9BQU8sSUFBSSx1QkFBdUIsQ0FBQztZQUNqQyxJQUFJLEVBQUU7Z0JBQ0osUUFBUSxFQUFFLFFBQVEsRUFBRSw0REFBNEQ7Z0JBQ2hGLFNBQVMsRUFBRSxTQUFTLEVBQUUseURBQXlEO2dCQUMvRSxXQUFXLEVBQUUsSUFBSSxVQUFVLGdCQUFnQjtnQkFDM0MscUJBQXFCLEVBQUUsR0FBRyxFQUFFLCtDQUErQzthQUM1RTtZQUNELEtBQUssRUFBRTtnQkFDTCxhQUFhLEVBQUUsb0JBQW9CLENBQUMsWUFBWSxFQUFFLDZHQUE2RztnQkFDL0osK0ZBQStGO2FBQ2hHO1lBQ0QsTUFBTSxFQUFFO2dCQUNOLGlCQUFpQixFQUFFLEtBQUssRUFBRSxzQkFBc0I7Z0JBQ2hELGFBQWEsRUFBRTtvQkFDYixjQUFjO29CQUNkLFFBQVEsRUFBRSxRQUFRLENBQUMsS0FBSztvQkFDeEIsaUJBQWlCLEVBQUUsS0FBSztpQkFDekI7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBdERVLGNBQWM7bUhBQWQsY0FBYzs7NEZBQWQsY0FBYztrQkFEMUIsVUFBVTs7QUEyRFgsU0FBUyxjQUFjLENBQUMsUUFBa0IsRUFBRSxPQUFlO0lBQ3pELE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkIsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsV0FBMkI7SUFDeEQsT0FBTyxLQUFLLElBQUksRUFBRTtRQUNoQixNQUFNLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQjtJQUNqQyxPQUFPLElBQUksdUJBQXVCLENBQUM7UUFDakMsSUFBSSxFQUFFO1lBQ0osUUFBUSxFQUFFLElBQUk7U0FDZjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsNEJBQTRCO0lBQzFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7SUFDOUQsb0JBQW9CLENBQUMsR0FBRyxDQUFDLHFDQUFxQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMvRSxPQUFPO1FBQ0wsZUFBZSxFQUFFLGVBQWUsQ0FBQyxRQUFRO1FBQ3pDLG9CQUFvQjtLQUNyQixDQUFDO0FBQ0osQ0FBQztBQUNEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxzQkFBc0I7SUFDcEMsT0FBTztRQUNMLGVBQWUsRUFBRSxlQUFlLENBQUMsUUFBUTtRQUN6QyxXQUFXLEVBQUU7WUFDWCxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDM0I7UUFDRCxnQkFBZ0IsRUFBRSxHQUFHO0tBQ3RCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTXNhbEd1YXJkQ29uZmlndXJhdGlvbiwgTXNhbEludGVyY2VwdG9yQ29uZmlndXJhdGlvbiwgTXNhbFNlcnZpY2UgfSBmcm9tICdAYXp1cmUvbXNhbC1hbmd1bGFyJztcbmltcG9ydCB7IEJyb3dzZXJDYWNoZUxvY2F0aW9uLCBJUHVibGljQ2xpZW50QXBwbGljYXRpb24sIEludGVyYWN0aW9uVHlwZSwgTG9nTGV2ZWwsIFB1YmxpY0NsaWVudEFwcGxpY2F0aW9uIH0gZnJvbSAnQGF6dXJlL21zYWwtYnJvd3Nlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IGZpbHRlciwgZmlyc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRlbmFudEluZm8gfSBmcm9tICcuLi8uLi9tb2R1bGVzL2F1dGgvbW9kZWwvdGVuYW50LWluZm8uaW50ZXJmYWNlJztcbmltcG9ydCB7IFNlc3Npb25TdGF0ZSB9IGZyb20gJy4uLy4uL21vZHVsZXMvYXV0aC9zZXNzaW9uLnN0YXRlJztcbmltcG9ydCB7IFNpbmdsZVNpZ25PblByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vc2VydmljZS1wcm94eS9jbG91ZC1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgaXNOdWxsT3JFbXB0eSB9IGZyb20gJy4uLy4uL3V0aWxzL2N1c3RvbS12YWxpZGF0b3IudXRpbCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNU0xBdXRoU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmUsIHByaXZhdGUgbXNhbFNlcnZpY2U6IE1zYWxTZXJ2aWNlKSB7XG4gIH1cblxuICBwdWJsaWMgaW5pdCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8Ym9vbGVhbj4oKHJlc29sdmUpID0+IHtcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KFNlc3Npb25TdGF0ZS50ZW5hbnRJbmZvKS5waXBlKGZpbHRlcih0ZW5hbnRJbmZvID0+IHRlbmFudEluZm8gIT0gbnVsbCksIGZpcnN0KCkpLnN1YnNjcmliZSh0ZW5hbnQgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc1NpbmdsZVNpZ25PbkVuYWJsZWRXaXRoTVNQcm92aWRlcih0ZW5hbnQpKSB7XG4gICAgICAgICAgY29uc3QgY2xpZW50SWQgPSB0ZW5hbnQucHJvcHMuc3NvLmNvbmZpZ3VyYXRpb25zPy5henVyZT8uY2xpZW50SWQ7Ly8gVGhpcyBpcyB0aGUgT05MWSBtYW5kYXRvcnkgZmllbGQgdGhhdCB5b3UgbmVlZCB0byBzdXBwbHkuXG4gICAgICAgICAgY29uc3QgYXV0aG9yaXR5ID0gYGh0dHBzOi8vbG9naW4ubWljcm9zb2Z0b25saW5lLmNvbS8ke3RlbmFudC5wcm9wcy5zc28uY29uZmlndXJhdGlvbnM/LmF6dXJlPy50ZW5hbnRJZH1gO1xuICAgICAgICAgIGNvbnN0IHB1YmxpY0NsaWVudEFwcGxpY2F0aW9uID0gdGhpcy5jcmVhdGVQdWJsaWNDbGllbnRBcHBsaWNhdGlvbihjbGllbnRJZCwgYXV0aG9yaXR5LCB0ZW5hbnQudGVuYW50TmFtZSk7XG4gICAgICAgICAgdGhpcy5tc2FsU2VydmljZS5pbnN0YW5jZSA9IHB1YmxpY0NsaWVudEFwcGxpY2F0aW9uO1xuICAgICAgICAgIHRoaXMubXNhbFNlcnZpY2UuaW5pdGlhbGl6ZSgpLnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNTaW5nbGVTaWduT25FbmFibGVkV2l0aE1TUHJvdmlkZXIodGVuYW50OiBUZW5hbnRJbmZvKSB7XG4gICAgcmV0dXJuIHRlbmFudC5wcm9wcz8uc3NvPy5lbmFibGVkICYmIHRlbmFudC5wcm9wcy5zc28/LnByb3ZpZGVyID09PSBTaW5nbGVTaWduT25Qcm92aWRlci5NaWNyb3NvZnQgJiYgdGVuYW50LnByb3BzLnNzbz8uY29uZmlndXJhdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlQ29uZmlndXJhdGlvbnMoY2xpZW50SWQ6IHN0cmluZywgYXV0aG9yaXR5OiBzdHJpbmcsIHRlbmFudE5hbWU6IHN0cmluZykge1xuICAgIGlmIChpc051bGxPckVtcHR5KGNsaWVudElkPy50cmltKCkpIHx8IGlzTnVsbE9yRW1wdHkoYXV0aG9yaXR5Py50cmltKCkpIHx8IGlzTnVsbE9yRW1wdHkodGVuYW50TmFtZT8udHJpbSgpKSkge1xuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yOiBPbmUgb3IgbW9yZSByZXF1aXJlZCBwYXJhbWV0ZXJzIGZvciBTU08gYXJlIG1pc3Npbmcgb3IgZW1wdHkuXCIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlUHVibGljQ2xpZW50QXBwbGljYXRpb24oY2xpZW50SWQ6IHN0cmluZywgYXV0aG9yaXR5OiBzdHJpbmcsIHRlbmFudE5hbWU6IHN0cmluZyk6IElQdWJsaWNDbGllbnRBcHBsaWNhdGlvbiB7XG4gICAgdGhpcy52YWxpZGF0ZUNvbmZpZ3VyYXRpb25zKGNsaWVudElkLCBhdXRob3JpdHksIHRlbmFudE5hbWUpO1xuXG4gICAgcmV0dXJuIG5ldyBQdWJsaWNDbGllbnRBcHBsaWNhdGlvbih7XG4gICAgICBhdXRoOiB7XG4gICAgICAgIGNsaWVudElkOiBjbGllbnRJZCwgLy8gVGhpcyBpcyB0aGUgT05MWSBtYW5kYXRvcnkgZmllbGQgdGhhdCB5b3UgbmVlZCB0byBzdXBwbHkuXG4gICAgICAgIGF1dGhvcml0eTogYXV0aG9yaXR5LCAvLyBEZWZhdWx0cyB0byBcImh0dHBzOi8vbG9naW4ubWljcm9zb2Z0b25saW5lLmNvbS9jb21tb25cIlxuICAgICAgICByZWRpcmVjdFVyaTogYC8ke3RlbmFudE5hbWV9L2FjY291bnQvbG9naW5gLFxuICAgICAgICBwb3N0TG9nb3V0UmVkaXJlY3RVcmk6ICcvJywgLy8gSW5kaWNhdGVzIHRoZSBwYWdlIHRvIG5hdmlnYXRlIGFmdGVyIGxvZ291dC5cbiAgICAgIH0sXG4gICAgICBjYWNoZToge1xuICAgICAgICBjYWNoZUxvY2F0aW9uOiBCcm93c2VyQ2FjaGVMb2NhdGlvbi5Mb2NhbFN0b3JhZ2UsIC8vIENvbmZpZ3VyZXMgY2FjaGUgbG9jYXRpb24uIFwic2Vzc2lvblN0b3JhZ2VcIiBpcyBtb3JlIHNlY3VyZSwgYnV0IFwibG9jYWxTdG9yYWdlXCIgZ2l2ZXMgeW91IFNTTyBiZXR3ZWVuIHRhYnMuXG4gICAgICAgIC8vc3RvcmVBdXRoU3RhdGVJbkNvb2tpZTogZmFsc2UsIC8vIFNldCB0aGlzIHRvIFwidHJ1ZVwiIGlmIHlvdSBhcmUgaGF2aW5nIGlzc3VlcyBvbiBJRTExIG9yIEVkZ2VcbiAgICAgIH0sXG4gICAgICBzeXN0ZW06IHtcbiAgICAgICAgYWxsb3dOYXRpdmVCcm9rZXI6IGZhbHNlLCAvLyBEaXNhYmxlcyBXQU0gQnJva2VyXG4gICAgICAgIGxvZ2dlck9wdGlvbnM6IHtcbiAgICAgICAgICBsb2dnZXJDYWxsYmFjayxcbiAgICAgICAgICBsb2dMZXZlbDogTG9nTGV2ZWwuRXJyb3IsXG4gICAgICAgICAgcGlpTG9nZ2luZ0VuYWJsZWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBsb2dnZXJDYWxsYmFjayhsb2dMZXZlbDogTG9nTGV2ZWwsIG1lc3NhZ2U6IHN0cmluZykge1xuICBjb25zb2xlLmxvZyhtZXNzYWdlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVNc2FsKGF1dGhTZXJ2aWNlOiBNU0xBdXRoU2VydmljZSk6ICgpID0+IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGF1dGhTZXJ2aWNlLmluaXQoKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBIZXJlIHdlIHBhc3MgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyB0byBjcmVhdGUgYW4gTVNBTCBpbnN0YW5jZS5cbiAqIEZvciBtb3JlIGluZm8sIHZpc2l0OiBodHRwczovL2dpdGh1Yi5jb20vQXp1cmVBRC9taWNyb3NvZnQtYXV0aGVudGljYXRpb24tbGlicmFyeS1mb3ItanMvYmxvYi9kZXYvbGliL21zYWwtYW5ndWxhci9kb2NzL3YyLWRvY3MvY29uZmlndXJhdGlvbi5tZFxuICovXG5leHBvcnQgZnVuY3Rpb24gTVNBTEluc3RhbmNlRmFjdG9yeSgpOiBJUHVibGljQ2xpZW50QXBwbGljYXRpb24ge1xuICByZXR1cm4gbmV3IFB1YmxpY0NsaWVudEFwcGxpY2F0aW9uKHtcbiAgICBhdXRoOiB7XG4gICAgICBjbGllbnRJZDogbnVsbFxuICAgIH0sXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTVNBTEludGVyY2VwdG9yQ29uZmlnRmFjdG9yeSgpOiBNc2FsSW50ZXJjZXB0b3JDb25maWd1cmF0aW9uIHtcbiAgY29uc3QgcHJvdGVjdGVkUmVzb3VyY2VNYXAgPSBuZXcgTWFwPHN0cmluZywgQXJyYXk8c3RyaW5nPj4oKTtcbiAgcHJvdGVjdGVkUmVzb3VyY2VNYXAuc2V0KCdodHRwczovL2dyYXBoLm1pY3Jvc29mdC5jb20vdjEuMC9tZScsIFsndXNlci5yZWFkJ10pO1xuICByZXR1cm4ge1xuICAgIGludGVyYWN0aW9uVHlwZTogSW50ZXJhY3Rpb25UeXBlLlJlZGlyZWN0LFxuICAgIHByb3RlY3RlZFJlc291cmNlTWFwXG4gIH07XG59XG4vKipcbiAqIFNldCB5b3VyIGRlZmF1bHQgaW50ZXJhY3Rpb24gdHlwZSBmb3IgTVNBTEd1YXJkIGhlcmUuIElmIHlvdSBoYXZlIGFueVxuICogYWRkaXRpb25hbCBzY29wZXMgeW91IHdhbnQgdGhlIHVzZXIgdG8gY29uc2VudCB1cG9uIGxvZ2luLCBhZGQgdGhlbSBoZXJlIGFzIHdlbGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBNU0FMR3VhcmRDb25maWdGYWN0b3J5KCk6IE1zYWxHdWFyZENvbmZpZ3VyYXRpb24ge1xuICByZXR1cm4ge1xuICAgIGludGVyYWN0aW9uVHlwZTogSW50ZXJhY3Rpb25UeXBlLlJlZGlyZWN0LFxuICAgIGF1dGhSZXF1ZXN0OiB7XG4gICAgICBzY29wZXM6IFsuLi5bJ3VzZXIucmVhZCddXVxuICAgIH0sXG4gICAgbG9naW5GYWlsZWRSb3V0ZTogJy8nXG4gIH07XG59XG4iXX0=
@@ -4,6 +4,7 @@ import { openBackgroundIframe } from '../utils/helper.util';
4
4
  import { Localization } from '../enums/localization.enum';
5
5
  import { MessageBarPosition } from '../components/message-bar/message-bar-position.enum';
6
6
  import { AuthorizationNotifier, AuthorizationRequest, AuthorizationServiceConfiguration, BaseTokenRequestHandler, GRANT_TYPE_AUTHORIZATION_CODE, RedirectRequestHandler, TokenRequest, TokenResponse } from '@openid/appauth';
7
+ import { isNullOrEmpty } from '../utils/custom-validator.util';
7
8
  import * as i0 from "@angular/core";
8
9
  import * as i1 from "@openid/appauth";
9
10
  import * as i2 from "@ngx-translate/core";
@@ -215,21 +216,26 @@ export class OpenIdAuthService {
215
216
  client_id: clientId,
216
217
  client_secret: clientSecret,
217
218
  redirect_uri: baseUrl,
218
- // extras: {
219
- // 'prompt': 'consent',
220
- // 'access_type': 'offline'
221
- // }
222
219
  scope: OPEN_ID_PROFILE
223
220
  };
224
221
  this.logoutUrl = `${issuerUri}/signoff?client_id=${clientId}`;
225
222
  console.log('authorizationConfig =============> :', this.authorizationConfig);
226
223
  console.log('logoutUrl =============> : ', this.logoutUrl);
224
+ this.validateConfigurations(clientId, clientSecret, tenantName, issuerUri);
227
225
  this.Init();
228
226
  }
227
+ validateConfigurations(clientId, clientSecret, tenantName, issuerUri) {
228
+ let isValid = true;
229
+ if (isNullOrEmpty(clientId?.trim()) || isNullOrEmpty(clientSecret?.trim()) || isNullOrEmpty(tenantName?.trim()) || isNullOrEmpty(issuerUri?.trim())) {
230
+ console.error("Error: One or more required parameters for SSO are missing or empty.");
231
+ isValid = false;
232
+ }
233
+ return isValid;
234
+ }
229
235
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OpenIdAuthService, deps: [{ token: i1.Requestor }, { token: i2.TranslateService }, { token: i3.MessageBarService }], target: i0.ɵɵFactoryTarget.Injectable }); }
230
236
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OpenIdAuthService }); }
231
237
  }
232
238
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OpenIdAuthService, decorators: [{
233
239
  type: Injectable
234
240
  }], ctorParameters: () => [{ type: i1.Requestor }, { type: i2.TranslateService }, { type: i3.MessageBarService }] });
235
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmlkLWF1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvc2VydmljZXMvb3BlbmlkLWF1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBYyxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ3pGLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLGlDQUFpQyxFQUNqQyx1QkFBdUIsRUFDdkIsNkJBQTZCLEVBQzdCLHNCQUFzQixFQUd0QixZQUFZLEVBQ1osYUFBYSxFQUNkLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBRXpCLE1BQU0sYUFBYSxHQUFHLGtDQUFrQyxDQUFDO0FBQ3pELE1BQU0sWUFBWSxHQUFHLGlDQUFpQyxDQUFDO0FBQ3ZELE1BQU0sZ0JBQWdCLEdBQUcsbURBQW1ELENBQUM7QUFDN0UsTUFBTSxpQkFBaUIsR0FBRyxzQ0FBc0MsQ0FBQztBQUNqRSxNQUFNLGFBQWEsR0FBRyxlQUFlLENBQUM7QUFDdEMsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDO0FBQ3RDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQztBQUN6QixNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQztBQWdCekMsTUFBTSxPQUFPLGlCQUFpQjtJQVU1QixZQUFvQixTQUFvQixFQUFVLGdCQUFrQyxFQUFVLGlCQUFvQztRQUE5RyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFVLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFSMUgsYUFBUSxHQUFHLElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUN2Qyx5QkFBb0IsR0FBRyxJQUFJLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxhQUFhO1FBS2xFLGNBQVMsR0FBRyxFQUFFLENBQUM7SUFHdkIsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsb0JBQW9CLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xFLDJGQUEyRjtRQUMzRixJQUFJLGlDQUFpQyxHQUE2QyxJQUFJLENBQUM7UUFDdkYsSUFBSSxhQUFhLEdBQXlCLElBQUksQ0FBQztRQUMvQyxJQUFJLFFBQVEsR0FBb0IsSUFBSSxDQUFDO1FBRXJDLHlFQUF5RTtRQUN6RSxzREFBc0Q7UUFDdEQsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxLQUFLLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDdkYsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFFLENBQUMsQ0FBQztZQUNyRixpQ0FBaUMsR0FBRyxpQkFBaUIsSUFBSSxJQUFJLGlDQUFpQyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDbEgsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFFLENBQUMsQ0FBQztZQUN0RixhQUFhLEdBQUcsaUJBQWlCLElBQUksSUFBSSxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUMxRSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ25FLENBQUM7YUFBTSxDQUFDO1lBQ04sZ0RBQWdEO1lBQ2hELHlEQUF5RDtZQUN6RCxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2hGLE1BQU0sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDakQsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDN0MsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBRUQsb0RBQW9EO1FBQ3BELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQzlFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFaEQsa0NBQWtDO1FBQ2xDLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVyQiwwQkFBMEI7UUFDMUIsSUFBSSxpQ0FBaUMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JGLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDO0lBRU8sYUFBYTtRQUNuQix5RUFBeUU7UUFDekUseUJBQXlCO1FBQ3pCLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2FBQ3hELFNBQVMsQ0FDUixDQUFDLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBbUUsRUFBRSxFQUFFO1lBRTNGLHFGQUFxRjtZQUNyRixJQUFJLGFBQWEsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ2xCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsQyxDQUFDO2dCQUNELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMzQixPQUFPO1lBQ1QsQ0FBQztZQUVELDhEQUE4RDtZQUM5RCxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNCLE9BQU87WUFDVCxDQUFDO1lBRUQsa0VBQWtFO1lBQ2xFLElBQUksYUFBYSxDQUFDLGdCQUFnQixJQUFJLElBQUksRUFBRSxDQUFDO2dCQUMzQyxPQUFPLENBQUMsR0FBRyxDQUFDLDBFQUEwRSxDQUFDLENBQUM7Z0JBQ3hGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMzQixPQUFPO1lBQ1QsQ0FBQztZQUVELDJCQUEyQjtZQUMzQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNsQyxJQUFJLENBQUMsOEJBQThCLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzVELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNULENBQUM7SUFFTyw4QkFBOEIsQ0FBQyxLQUFLLEVBQUUsYUFBYTtRQUN6RCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFXO1lBQzNCLEdBQUcsRUFBRSxhQUFhLENBQUMsZ0JBQWdCO1lBQ25DLE1BQU0sRUFBRSxLQUFLO1lBQ2IsUUFBUSxFQUFFLE1BQU07WUFDaEIsT0FBTyxFQUFFLEVBQUUsZUFBZSxFQUFFLFVBQVUsV0FBVyxFQUFFLEVBQUU7U0FDdEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLDJCQUEyQjtRQUNqQyxrQ0FBa0M7UUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFnRCxFQUFFLEVBQUU7WUFDbEYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBMkIsRUFBRSxFQUFFO1lBQzdELElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQXFCLEVBQUUsRUFBRTtZQUNsRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sZUFBZSxDQUFDLEtBQVUsRUFBRSxHQUFXLEVBQUUsTUFBTSxHQUFHLElBQUk7UUFDNUQsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3JGLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUM7SUFFTSxvQkFBb0I7UUFDekIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVNLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVNLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRU0sU0FBUztRQUNkLElBQUksQ0FBQyxlQUFlO2FBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQzthQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2IsU0FBUyxDQUFDLENBQUMsYUFBZ0QsRUFBRSxFQUFFO1lBQzlELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLElBQUksZUFBZSxDQUFDO1lBQ2hFLG1CQUFtQjtZQUNuQixNQUFNLE9BQU8sR0FBRyxJQUFJLG9CQUFvQixDQUFDO2dCQUN2QyxTQUFTLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVM7Z0JBQzdDLFlBQVksRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWTtnQkFDbkQsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osYUFBYSxFQUFFLG9CQUFvQixDQUFDLGtCQUFrQjtnQkFDdEQsTUFBTSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNO2FBQ3hDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxvQkFBb0IsQ0FBQywyQkFBMkIsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEYsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsT0FBTztRQUNMLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELDRCQUE0QjtRQUMxQixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxlQUFlO2lCQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUM7aUJBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2IsU0FBUyxDQUFDLENBQUMsYUFBZ0QsRUFBRSxFQUFFO2dCQUM5RCxtQ0FBbUM7Z0JBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFO29CQUNsRSw0RUFBNEU7b0JBQzVFLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDOUIsTUFBTSxZQUFZLEdBQUcsSUFBSSx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7d0JBQ2pFLDBDQUEwQzt3QkFDMUMsTUFBTSxNQUFNLEdBQWMsRUFBRSxDQUFDO3dCQUM3QixJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsQ0FBQzs0QkFDNUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUM7d0JBQ2pFLENBQUM7d0JBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7NEJBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUMxRCxDQUFDO3dCQUNELE1BQU0sWUFBWSxHQUFHLElBQUksWUFBWSxDQUFDOzRCQUNwQyxTQUFTLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVM7NEJBQzdDLFlBQVksRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWTs0QkFDbkQsVUFBVSxFQUFFLDZCQUE2Qjs0QkFDekMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJOzRCQUNuQixNQUFNLEVBQUUsTUFBTTt5QkFDZixDQUFDLENBQUM7d0JBRUgsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO29CQUMvRSxDQUFDO3lCQUFNLENBQUM7d0JBQ04sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNoQixDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUVILE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHNDQUFzQyxFQUFFLENBQUM7WUFDckUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sbUJBQW1CLENBQ3pCLE9BQW9FLEVBQ3BFLFlBQXFDLEVBQ3JDLGFBQWdELEVBQ2hELFlBQTBCO1FBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDO2FBQzFELElBQUksQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDekMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDZixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMxRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLEtBQUssQ0FBQyx5QkFBeUI7UUFDckMsTUFBTSxRQUFRLEdBQUcsTUFBTSxpQ0FBaUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUgsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVNLHNCQUFzQixDQUFDLFFBQWdCLEVBQUUsWUFBb0IsRUFBRSxVQUFrQixFQUFFLFNBQWlCO1FBQ3pHLE1BQU0sT0FBTyxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sSUFBSSxVQUFVLDBCQUEwQixDQUFDO1FBQzNFLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFFakQsSUFBSSxDQUFDLG1CQUFtQixHQUFHO1lBQ3pCLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLFNBQVMsRUFBRSxRQUFRO1lBQ25CLGFBQWEsRUFBRSxZQUFZO1lBQzNCLFlBQVksRUFBRSxPQUFPO1lBQ3JCLFlBQVk7WUFDWix5QkFBeUI7WUFDekIsNkJBQTZCO1lBQzdCLElBQUk7WUFDSixLQUFLLEVBQUUsZUFBZTtTQUN2QixDQUFBO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLFNBQVMsc0JBQXNCLFFBQVEsRUFBRSxDQUFDO1FBQzlELE9BQU8sQ0FBQyxHQUFHLENBQUMsc0NBQXNDLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUE7UUFDN0UsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDMUQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQzsrR0FqUFUsaUJBQWlCO21IQUFqQixpQkFBaUI7OzRGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIE9ic2VydmFibGUsIHRha2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFVzZXJJbmZvIH0gZnJvbSAnLi4vbW9kdWxlcy9hdXRoL21vZGVsL3VzZXItaW5mby5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTWVzc2FnZUJhclNlcnZpY2UgfSBmcm9tICcuLi9jb21wb25lbnRzL21lc3NhZ2UtYmFyL21lc3NhZ2UtYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgb3BlbkJhY2tncm91bmRJZnJhbWUgfSBmcm9tICcuLi91dGlscy9oZWxwZXIudXRpbCc7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb24gfSBmcm9tICcuLi9lbnVtcy9sb2NhbGl6YXRpb24uZW51bSc7XG5pbXBvcnQgeyBNZXNzYWdlQmFyUG9zaXRpb24gfSBmcm9tICcuLi9jb21wb25lbnRzL21lc3NhZ2UtYmFyL21lc3NhZ2UtYmFyLXBvc2l0aW9uLmVudW0nO1xuaW1wb3J0IHtcbiAgQXV0aG9yaXphdGlvbk5vdGlmaWVyLFxuICBBdXRob3JpemF0aW9uUmVxdWVzdCxcbiAgQXV0aG9yaXphdGlvblNlcnZpY2VDb25maWd1cmF0aW9uLFxuICBCYXNlVG9rZW5SZXF1ZXN0SGFuZGxlcixcbiAgR1JBTlRfVFlQRV9BVVRIT1JJWkFUSU9OX0NPREUsXG4gIFJlZGlyZWN0UmVxdWVzdEhhbmRsZXIsXG4gIFJlcXVlc3RvcixcbiAgU3RyaW5nTWFwLFxuICBUb2tlblJlcXVlc3QsXG4gIFRva2VuUmVzcG9uc2Vcbn0gZnJvbSAnQG9wZW5pZC9hcHBhdXRoJztcblxuY29uc3QgTFNfSVNTVUVSX1VSSSA9ICdhdXRob3JpemF0aW9uLnNlcnZpY2UuaXNzdWVyX3VyaSc7XG5jb25zdCBMU19VU0VSX0lORk8gPSAnYXV0aG9yaXphdGlvbi5zZXJ2aWNlLnVzZXJfaW5mbyc7XG5jb25zdCBMU19PUEVOSURfQ09ORklHID0gJ2F1dGhvcml6YXRpb24uc2VydmljZS5wYXJzZWRfb3BlbmlkX2NvbmZpZ3VyYXRpb24nO1xuY29uc3QgTFNfVE9LRU5fUkVTUE9OU0UgPSAnYXV0aG9yaXphdGlvbi5zZXJ2aWNlLnRva2VuX3Jlc3BvbnNlJztcbmNvbnN0IENMSUVOVF9TRUNSRVQgPSAnY2xpZW50X3NlY3JldCc7XG5jb25zdCBDT0RFX1ZFUklGSUVSID0gJ2NvZGVfdmVyaWZpZXInO1xuY29uc3QgT1BFTl9JRCA9ICdvcGVuaWQnO1xuY29uc3QgT1BFTl9JRF9QUk9GSUxFID0gJ29wZW5pZCBwcm9maWxlJztcblxuZXhwb3J0IGludGVyZmFjZSBBdXRob3JpemF0aW9uQ29uZmlnIHtcbiAgaXNzdWVyX3VyaTogc3RyaW5nO1xuICBjbGllbnRfaWQ6IHN0cmluZztcbiAgY2xpZW50X3NlY3JldD86IHN0cmluZztcbiAgcmVkaXJlY3RfdXJpOiBzdHJpbmc7XG4gIHNjb3BlPzogc3RyaW5nO1xuICBleHRyYXM/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhbEVudmlyb25tZW50SW5mbyB7XG4gIHByb2R1Y3Rpb24/OiBib29sZWFuO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT3BlbklkQXV0aFNlcnZpY2Uge1xuXG4gIHByaXZhdGUgbm90aWZpZXIgPSBuZXcgQXV0aG9yaXphdGlvbk5vdGlmaWVyKCk7XG4gIHByaXZhdGUgYXV0aG9yaXphdGlvbkhhbmRsZXIgPSBuZXcgUmVkaXJlY3RSZXF1ZXN0SGFuZGxlcigpOyAvLyAgM3JkIHBhcnR5XG4gIHByaXZhdGUgX3Rva2VuUmVzcG9uc2VzOiBCZWhhdmlvclN1YmplY3Q8VG9rZW5SZXNwb25zZSB8IG51bGw+O1xuICBwcml2YXRlIF91c2VySW5mb3M6IEJlaGF2aW9yU3ViamVjdDxVc2VySW5mbyB8IG51bGw+O1xuICBwcml2YXRlIF9zZXJ2aWNlQ29uZmlnczogQmVoYXZpb3JTdWJqZWN0PEF1dGhvcml6YXRpb25TZXJ2aWNlQ29uZmlndXJhdGlvbiB8IG51bGw+O1xuICBwcml2YXRlIGF1dGhvcml6YXRpb25Db25maWc6IEF1dGhvcml6YXRpb25Db25maWcgJiBHZW5lcmFsRW52aXJvbm1lbnRJbmZvO1xuICBwcml2YXRlIGxvZ291dFVybCA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVxdWVzdG9yOiBSZXF1ZXN0b3IsIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSwgcHJpdmF0ZSBtZXNzYWdlQmFyU2VydmljZTogTWVzc2FnZUJhclNlcnZpY2UpIHtcbiAgfVxuXG4gIEluaXQoKSB7XG4gICAgdGhpcy5hdXRob3JpemF0aW9uSGFuZGxlci5zZXRBdXRob3JpemF0aW9uTm90aWZpZXIodGhpcy5ub3RpZmllcik7XG4gICAgLy8gYXR0ZW1wdCB0byByZXN0b3JlIHByZXZpb3VzIHZhbHVlcyBvZiB0aGUgbWV0YWRhdGEgY29uZmlnLCB0b2tlbiByZXNwb25zZSwgYW5kIHVzZXIgaW5mb1xuICAgIGxldCBhdXRob3JpemF0aW9uU2VydmljZUNvbmZpZ3VyYXRpb246IEF1dGhvcml6YXRpb25TZXJ2aWNlQ29uZmlndXJhdGlvbiB8IG51bGwgPSBudWxsO1xuICAgIGxldCB0b2tlblJlc3BvbnNlOiBUb2tlblJlc3BvbnNlIHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IHVzZXJJbmZvOiBVc2VySW5mbyB8IG51bGwgPSBudWxsO1xuXG4gICAgLy8gdmVyaWZ5IHRoYXQgd2UgYXJlIHN0aWxsIHdvcmtpbmcgd2l0aCB0aGUgc2FtZSBJRFAsIHNpbmNlIGEgcmVsb2FkIG1heVxuICAgIC8vIGhhdmUgYmVlbiBkdWUgdG8gYW4gdW5kZXJseWluZyBjb25maWd1cmF0aW9uIGNoYW5nZVxuICAgIGlmICh0aGlzLmF1dGhvcml6YXRpb25Db25maWcuaXNzdWVyX3VyaSA9PT0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKExTX0lTU1VFUl9VUkkpKSB7XG4gICAgICBjb25zdCBzZXJ2aWNlQ29uZmlnSlNPTiA9IEpTT04ucGFyc2Uod2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKExTX09QRU5JRF9DT05GSUcpISk7XG4gICAgICBhdXRob3JpemF0aW9uU2VydmljZUNvbmZpZ3VyYXRpb24gPSBzZXJ2aWNlQ29uZmlnSlNPTiAmJiBuZXcgQXV0aG9yaXphdGlvblNlcnZpY2VDb25maWd1cmF0aW9uKHNlcnZpY2VDb25maWdKU09OKTtcbiAgICAgIGNvbnN0IHRva2VuUmVzcG9uc2VKU09OID0gSlNPTi5wYXJzZSh3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oTFNfVE9LRU5fUkVTUE9OU0UpISk7XG4gICAgICB0b2tlblJlc3BvbnNlID0gdG9rZW5SZXNwb25zZUpTT04gJiYgbmV3IFRva2VuUmVzcG9uc2UodG9rZW5SZXNwb25zZUpTT04pO1xuICAgICAgdXNlckluZm8gPSBKU09OLnBhcnNlKHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShMU19VU0VSX0lORk8pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gbmV3IGlzc3VlciAob3IgZmlyc3QgcnVuLCBvciBjbGVhcmVkIHNlc3Npb24pXG4gICAgICAvLyBtYWtlIHN1cmUgd2Ugc3RvcmUgdGhlIGlzc3VlciwgYW5kIGhhdmUgbm8gb3RoZXIgc3RhdGVcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShMU19JU1NVRVJfVVJJLCB0aGlzLmF1dGhvcml6YXRpb25Db25maWcuaXNzdWVyX3VyaSk7XG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oTFNfT1BFTklEX0NPTkZJRyk7XG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oTFNfVVNFUl9JTkZPKTtcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShMU19UT0tFTl9SRVNQT05TRSk7XG4gICAgfVxuXG4gICAgLy8gY3JlYXRlIHN1YmplY3RzIHdpdGggdGhlIGN1cnJlbnQgdmFsdWVzIChvciBudWxsKVxuICAgIHRoaXMuX3Rva2VuUmVzcG9uc2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0b2tlblJlc3BvbnNlKTtcbiAgICB0aGlzLl9zZXJ2aWNlQ29uZmlncyA9IG5ldyBCZWhhdmlvclN1YmplY3QoYXV0aG9yaXphdGlvblNlcnZpY2VDb25maWd1cmF0aW9uKTtcbiAgICB0aGlzLl91c2VySW5mb3MgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHVzZXJJbmZvKTtcblxuICAgIC8vIHVwZGF0ZSBsb2NhbCBzdG9yYWdlIG9uIGNoYW5nZXNcbiAgICB0aGlzLlVwZGF0ZUxvY2FsU3RvcmFnZU9uQ2hhbmdlcygpO1xuICAgIHRoaXMuaW5pdExpc3RlbmVycygpO1xuXG4gICAgLy8gc3RhcnQgZmV0Y2hpbmcgbWV0YWRhdGFcbiAgICBpZiAoYXV0aG9yaXphdGlvblNlcnZpY2VDb25maWd1cmF0aW9uID09IG51bGwgJiYgdGhpcy5hdXRob3JpemF0aW9uQ29uZmlnLmlzc3Vlcl91cmkpIHtcbiAgICAgIHRoaXMuZmV0Y2hTZXJ2aWNlQ29uZmlndXJhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdExpc3RlbmVycygpIHtcbiAgICAvLyBtb25pdG9yIGNoYW5nZXMgaW4gbWV0YWRhdGEvdG9rZW5zIHRvIHBvc3NpYmx5IGNsZWFyIGRlcGVuZGVudCB2YWx1ZXMsXG4gICAgLy8gYW5kIHRvIGZldGNoIHVzZXJJbmZvLlxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX3NlcnZpY2VDb25maWdzLCB0aGlzLl90b2tlblJlc3BvbnNlc10pXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAoW2NvbmZpZ3VyYXRpb24sIHRva2VuXTogW0F1dGhvcml6YXRpb25TZXJ2aWNlQ29uZmlndXJhdGlvbiB8IG51bGwsIFRva2VuUmVzcG9uc2UgfCBudWxsXSkgPT4ge1xuXG4gICAgICAgICAgLy8gaWYgdGhlIHNlcnZpY2UgY29uZmlnIGlzIGNsZWFyZWQsIHdlIG5lZWQgdG8gaW52YWxpZGF0ZSBhbnkgVG9rZW5SZXNwb25zZS91c2VySW5mb1xuICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uID09PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAodG9rZW4gIT0gbnVsbCkge1xuICAgICAgICAgICAgICB0aGlzLl90b2tlblJlc3BvbnNlcy5uZXh0KG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fdXNlckluZm9zLm5leHQobnVsbCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gaWYgdGhlIHRva2VuIGlzIGNsZWFyZWQsIGFzc3VtZSB1c2VyaW5mbyBpcyBpbnZhbGlkYXRlZCB0b29cbiAgICAgICAgICBpZiAodG9rZW4gPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5fdXNlckluZm9zLm5leHQobnVsbCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gaWYgd2UgZG9uJ3QgaGF2ZSBhIHVzZXIgaW5mbyBlbmRwb2ludCwgd2UgY2FuJ3QgZmV0Y2ggdXNlciBpbmZvXG4gICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24udXNlckluZm9FbmRwb2ludCA9PSBudWxsKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygndXNlcmluZm8gY2Fubm90IGJlIGVtaXR0ZWQgLSB1c2VyaW5mbyBlbmRwb2ludCBub3Qgc3BlY2lmaWVkIGJ5IG1ldGFkYXRhJyk7XG4gICAgICAgICAgICB0aGlzLl91c2VySW5mb3MubmV4dChudWxsKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBmZXRjaCB1c2VyIGluZm8sIGlmIG5vbmVcbiAgICAgICAgICBpZiAodGhpcy5fdXNlckluZm9zLnZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0VXNlckluZm9ybWF0aW9uV2l0aFRoZVRva2VuKHRva2VuLCBjb25maWd1cmF0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRVc2VySW5mb3JtYXRpb25XaXRoVGhlVG9rZW4odG9rZW4sIGNvbmZpZ3VyYXRpb24pIHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IHRva2VuLmFjY2Vzc1Rva2VuO1xuICAgIHRoaXMucmVxdWVzdG9yLnhocjxVc2VySW5mbz4oe1xuICAgICAgdXJsOiBjb25maWd1cmF0aW9uLnVzZXJJbmZvRW5kcG9pbnQsXG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgZGF0YVR5cGU6ICdqc29uJyxcbiAgICAgIGhlYWRlcnM6IHsgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7YWNjZXNzVG9rZW59YCB9XG4gICAgfSkudGhlbigodXNlcmluZm8pID0+IHtcbiAgICAgIHRoaXMuX3VzZXJJbmZvcy5uZXh0KHVzZXJpbmZvKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgVXBkYXRlTG9jYWxTdG9yYWdlT25DaGFuZ2VzKCkge1xuICAgIC8vIHVwZGF0ZSBsb2NhbCBzdG9yYWdlIG9uIGNoYW5nZXNcbiAgICB0aGlzLl9zZXJ2aWNlQ29uZmlncy5zdWJzY3JpYmUoKGNvbmZpZzogQXV0aG9yaXphdGlvblNlcnZpY2VDb25maWd1cmF0aW9uIHwgbnVsbCkgPT4ge1xuICAgICAgdGhpcy5zZXRMb2NhbFN0b3JhZ2UoY29uZmlnLCBMU19PUEVOSURfQ09ORklHKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3Rva2VuUmVzcG9uc2VzLnN1YnNjcmliZSgodG9rZW46IFRva2VuUmVzcG9uc2UgfCBudWxsKSA9PiB7XG4gICAgICB0aGlzLnNldExvY2FsU3RvcmFnZSh0b2tlbiwgTFNfVE9LRU5fUkVTUE9OU0UpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fdXNlckluZm9zLnN1YnNjcmliZSgoaW5mbzogVXNlckluZm8gfCBudWxsKSA9PiB7XG4gICAgICB0aGlzLnNldExvY2FsU3RvcmFnZShpbmZvLCBMU19VU0VSX0lORk8sIGZhbHNlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0TG9jYWxTdG9yYWdlKHBhcmFtOiBhbnksIGtleTogc3RyaW5nLCB0b0pzb24gPSB0cnVlKSB7XG4gICAgaWYgKHBhcmFtKSB7XG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCBKU09OLnN0cmluZ2lmeSh0b0pzb24gPyBwYXJhbT8udG9Kc29uKCkgOiBwYXJhbSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2VydmljZUNvbmZpZ3VyYXRpb24oKTogT2JzZXJ2YWJsZTxBdXRob3JpemF0aW9uU2VydmljZUNvbmZpZ3VyYXRpb24gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlcnZpY2VDb25maWdzLmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gIH1cblxuICBwdWJsaWMgdG9rZW5SZXNwb25zZSgpOiBPYnNlcnZhYmxlPFRva2VuUmVzcG9uc2UgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuUmVzcG9uc2VzLmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gIH1cblxuICBwdWJsaWMgdXNlckluZm9zKCk6IE9ic2VydmFibGU8VXNlckluZm8gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3VzZXJJbmZvcy5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICB9XG5cbiAgcHVibGljIGF1dGhvcml6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zZXJ2aWNlQ29uZmlnc1xuICAgICAgLnBpcGUoZmlsdGVyKCh2YWx1ZTogYW55KSA9PiB2YWx1ZSAhPSBudWxsKSlcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChjb25maWd1cmF0aW9uOiBBdXRob3JpemF0aW9uU2VydmljZUNvbmZpZ3VyYXRpb24pID0+IHtcbiAgICAgICAgY29uc3Qgc2NvcGUgPSB0aGlzLmF1dGhvcml6YXRpb25Db25maWcuc2NvcGUgfHwgT1BFTl9JRF9QUk9GSUxFO1xuICAgICAgICAvLyBjcmVhdGUgYSByZXF1ZXN0XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgQXV0aG9yaXphdGlvblJlcXVlc3Qoe1xuICAgICAgICAgIGNsaWVudF9pZDogdGhpcy5hdXRob3JpemF0aW9uQ29uZmlnLmNsaWVudF9pZCxcbiAgICAgICAgICByZWRpcmVjdF91cmk6IHRoaXMuYXV0aG9yaXphdGlvbkNvbmZpZy5yZWRpcmVjdF91cmksXG4gICAgICAgICAgc2NvcGU6IHNjb3BlLFxuICAgICAgICAgIHJlc3BvbnNlX3R5cGU6IEF1dGhvcml6YXRpb25SZXF1ZXN0LlJFU1BPTlNFX1RZUEVfQ09ERSxcbiAgICAgICAgICBleHRyYXM6IHRoaXMuYXV0aG9yaXphdGlvbkNvbmZpZy5leHRyYXNcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYXV0aG9yaXphdGlvbkhhbmRsZXIucGVyZm9ybUF1dGhvcml6YXRpb25SZXF1ZXN0KGNvbmZpZ3VyYXRpb24sIHJlcXVlc3QpO1xuICAgICAgfSk7XG4gIH1cblxuICBzaWduT3V0KCk6IHZvaWQge1xuICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpO1xuICAgIHRoaXMuX3Rva2VuUmVzcG9uc2VzLm5leHQobnVsbCk7XG4gICAgb3BlbkJhY2tncm91bmRJZnJhbWUodGhpcy5sb2dvdXRVcmwpO1xuICB9XG5cbiAgY29tcGxldGVBdXRob3JpemF0aW9uUmVxdWVzdCgpOiBQcm9taXNlPFRva2VuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5fc2VydmljZUNvbmZpZ3NcbiAgICAgICAgLnBpcGUoZmlsdGVyKCh2YWx1ZTogYW55KSA9PiB2YWx1ZSAhPSBudWxsKSlcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZSgoY29uZmlndXJhdGlvbjogQXV0aG9yaXphdGlvblNlcnZpY2VDb25maWd1cmF0aW9uKSA9PiB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ3NldHRpbmcgbGlzdGVuZXInKTtcbiAgICAgICAgICB0aGlzLm5vdGlmaWVyLnNldEF1dGhvcml6YXRpb25MaXN0ZW5lcigocmVxdWVzdCwgcmVzcG9uc2UsIGVycm9yKSA9PiB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnQXV0aG9yaXphdGlvbiByZXF1ZXN0IGNvbXBsZXRlICcsIHJlcXVlc3QsIHJlc3BvbnNlLCBlcnJvcik7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuY29kZSkge1xuICAgICAgICAgICAgICBjb25zdCB0b2tlbkhhbmRsZXIgPSBuZXcgQmFzZVRva2VuUmVxdWVzdEhhbmRsZXIodGhpcy5yZXF1ZXN0b3IpO1xuICAgICAgICAgICAgICAvLyB1c2UgdGhlIGNvZGUgdG8gbWFrZSB0aGUgdG9rZW4gcmVxdWVzdC5cbiAgICAgICAgICAgICAgY29uc3QgZXh0cmFzOiBTdHJpbmdNYXAgPSB7fTtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYXV0aG9yaXphdGlvbkNvbmZpZz8uY2xpZW50X3NlY3JldCkge1xuICAgICAgICAgICAgICAgIGV4dHJhc1tDTElFTlRfU0VDUkVUXSA9IHRoaXMuYXV0aG9yaXphdGlvbkNvbmZpZy5jbGllbnRfc2VjcmV0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChyZXF1ZXN0LmludGVybmFsKSB7XG4gICAgICAgICAgICAgICAgZXh0cmFzW0NPREVfVkVSSUZJRVJdID0gcmVxdWVzdC5pbnRlcm5hbFtDT0RFX1ZFUklGSUVSXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCB0b2tlblJlcXVlc3QgPSBuZXcgVG9rZW5SZXF1ZXN0KHtcbiAgICAgICAgICAgICAgICBjbGllbnRfaWQ6IHRoaXMuYXV0aG9yaXphdGlvbkNvbmZpZy5jbGllbnRfaWQsXG4gICAgICAgICAgICAgICAgcmVkaXJlY3RfdXJpOiB0aGlzLmF1dGhvcml6YXRpb25Db25maWcucmVkaXJlY3RfdXJpLFxuICAgICAgICAgICAgICAgIGdyYW50X3R5cGU6IEdSQU5UX1RZUEVfQVVUSE9SSVpBVElPTl9DT0RFLFxuICAgICAgICAgICAgICAgIGNvZGU6IHJlc3BvbnNlLmNvZGUsXG4gICAgICAgICAgICAgICAgZXh0cmFzOiBleHRyYXNcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgdGhpcy5wZXJmb3JtVG9rZW5SZXF1ZXN0KHJlc29sdmUsIHRva2VuSGFuZGxlciwgY29uZmlndXJhdGlvbiwgdG9rZW5SZXF1ZXN0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zb2xlLmxvZygnYXR0ZW1wdCB0byBjb21wbGV0ZSByZXF1ZXN0Jyk7XG4gICAgICAgICAgdGhpcy5hdXRob3JpemF0aW9uSGFuZGxlci5jb21wbGV0ZUF1dGhvcml6YXRpb25SZXF1ZXN0SWZQb3NzaWJsZSgpO1xuICAgICAgICB9LCByZWplY3QpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwZXJmb3JtVG9rZW5SZXF1ZXN0KFxuICAgIHJlc29sdmU6ICh2YWx1ZTogVG9rZW5SZXNwb25zZSB8IFByb21pc2VMaWtlPFRva2VuUmVzcG9uc2U+KSA9PiB2b2lkLFxuICAgIHRva2VuSGFuZGxlcjogQmFzZVRva2VuUmVxdWVzdEhhbmRsZXIsXG4gICAgY29uZmlndXJhdGlvbjogQXV0aG9yaXphdGlvblNlcnZpY2VDb25maWd1cmF0aW9uLFxuICAgIHRva2VuUmVxdWVzdDogVG9rZW5SZXF1ZXN0KSB7XG4gICAgY29uc29sZS5sb2coJ21ha2luZyB0b2tlbiByZXF1ZXN0OicgKyBKU09OLnN0cmluZ2lmeSh0b2tlblJlcXVlc3QudG9TdHJpbmdNYXAoKSkpO1xuICAgIHRva2VuSGFuZGxlci5wZXJmb3JtVG9rZW5SZXF1ZXN0KGNvbmZpZ3VyYXRpb24sIHRva2VuUmVxdWVzdClcbiAgICAgIC50aGVuKCh0b2tlblJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdyZWNlaXZlZCB0b2tlbiByZXNwb25zZSAnLCB0b2tlblJlc3BvbnNlKTtcbiAgICAgICAgdGhpcy5fdG9rZW5SZXNwb25zZXMubmV4dCh0b2tlblJlc3BvbnNlKTtcbiAgICAgICAgcmVzb2x2ZSh0b2tlblJlc3BvbnNlKTtcbiAgICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgdGhpcy5zaWduT3V0KCk7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uZ2VuZXJhbF9lcnJvcik7XG4gICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IobWVzc2FnZSwgeyBwb3NpdGlvbjogTWVzc2FnZUJhclBvc2l0aW9uLlN0YXRpYyB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaFNlcnZpY2VDb25maWd1cmF0aW9uKCkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgQXV0aG9yaXphdGlvblNlcnZpY2VDb25maWd1cmF0aW9uLmZldGNoRnJvbUlzc3Vlcih0aGlzLmF1dGhvcml6YXRpb25Db25maWcuaXNzdWVyX3VyaSwgdGhpcy5yZXF1ZXN0b3IpO1xuICAgIHRoaXMuX3NlcnZpY2VDb25maWdzLm5leHQocmVzcG9uc2UpO1xuICB9XG5cbiAgcHVibGljIHNldEF1dGhvcml6YXRpb25Db25maWcoY2xpZW50SWQ6IHN0cmluZywgY2xpZW50U2VjcmV0OiBzdHJpbmcsIHRlbmFudE5hbWU6IHN0cmluZywgaXNzdWVyVXJpOiBzdHJpbmcpIHtcbiAgICBjb25zdCBiYXNlVXJsID0gYCR7bG9jYXRpb24ub3JpZ2lufS8ke3RlbmFudE5hbWV9L2FjY291bnQvb3BlbmlkLWNhbGxiYWNrYDtcbiAgICBjb25zb2xlLmxvZyhgYmFzZVVybCA9PT09PT09PT09PT09PiAke2Jhc2VVcmx9YCk7XG5cbiAgICB0aGlzLmF1dGhvcml6YXRpb25Db25maWcgPSB7XG4gICAgICBwcm9kdWN0aW9uOiBmYWxzZSxcbiAgICAgIGlzc3Vlcl91cmk6IGlzc3VlclVyaSxcbiAgICAgIGNsaWVudF9pZDogY2xpZW50SWQsXG4gICAgICBjbGllbnRfc2VjcmV0OiBjbGllbnRTZWNyZXQsXG4gICAgICByZWRpcmVjdF91cmk6IGJhc2VVcmwsXG4gICAgICAvLyBleHRyYXM6IHtcbiAgICAgIC8vICAgJ3Byb21wdCc6ICdjb25zZW50JyxcbiAgICAgIC8vICAgJ2FjY2Vzc190eXBlJzogJ29mZmxpbmUnXG4gICAgICAvLyB9XG4gICAgICBzY29wZTogT1BFTl9JRF9QUk9GSUxFXG4gICAgfVxuICAgIHRoaXMubG9nb3V0VXJsID0gYCR7aXNzdWVyVXJpfS9zaWdub2ZmP2NsaWVudF9pZD0ke2NsaWVudElkfWA7XG4gICAgY29uc29sZS5sb2coJ2F1dGhvcml6YXRpb25Db25maWcgPT09PT09PT09PT09PT4gOicsIHRoaXMuYXV0aG9yaXphdGlvbkNvbmZpZylcbiAgICBjb25zb2xlLmxvZygnbG9nb3V0VXJsID09PT09PT09PT09PT0+IDogJywgdGhpcy5sb2dvdXRVcmwpXG4gICAgdGhpcy5Jbml0KCk7XG4gIH1cbn0iXX0=
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmlkLWF1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvc2VydmljZXMvb3BlbmlkLWF1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBYyxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ3pGLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLGlDQUFpQyxFQUNqQyx1QkFBdUIsRUFDdkIsNkJBQTZCLEVBQzdCLHNCQUFzQixFQUd0QixZQUFZLEVBQ1osYUFBYSxFQUNkLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7OztBQUcvRCxNQUFNLGFBQWEsR0FBRyxrQ0FBa0MsQ0FBQztBQUN6RCxNQUFNLFlBQVksR0FBRyxpQ0FBaUMsQ0FBQztBQUN2RCxNQUFNLGdCQUFnQixHQUFHLG1EQUFtRCxDQUFDO0FBQzdFLE1BQU0saUJBQWlCLEdBQUcsc0NBQXNDLENBQUM7QUFDakUsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDO0FBQ3RDLE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQztBQUN0QyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUM7QUFDekIsTUFBTSxlQUFlLEdBQUcsZ0JBQWdCLENBQUM7QUFnQnpDLE1BQU0sT0FBTyxp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LG1CQUFtQixDQUFDLENBQUE7UUFDN0UsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxRQUFnQixFQUFFLFlBQW9CLEVBQUUsVUFBa0IsRUFBRSxTQUFpQjtRQUMxRyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFFbkIsSUFBSSxhQUFhLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksYUFBYSxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxhQUFhLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNwSixPQUFPLENBQUMsS0FBSyxDQUFDLHNFQUFzRSxDQUFDLENBQUM7WUFDdEYsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNsQixDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzsrR0ExUFUsaUJBQWlCO21IQUFqQixpQkFBaUI7OzRGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIE9ic2VydmFibGUsIHRha2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFVzZXJJbmZvIH0gZnJvbSAnLi4vbW9kdWxlcy9hdXRoL21vZGVsL3VzZXItaW5mby5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTWVzc2FnZUJhclNlcnZpY2UgfSBmcm9tICcuLi9jb21wb25lbnRzL21lc3NhZ2UtYmFyL21lc3NhZ2UtYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgb3BlbkJhY2tncm91bmRJZnJhbWUgfSBmcm9tICcuLi91dGlscy9oZWxwZXIudXRpbCc7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb24gfSBmcm9tICcuLi9lbnVtcy9sb2NhbGl6YXRpb24uZW51bSc7XG5pbXBvcnQgeyBNZXNzYWdlQmFyUG9zaXRpb24gfSBmcm9tICcuLi9jb21wb25lbnRzL21lc3NhZ2UtYmFyL21lc3NhZ2UtYmFyLXBvc2l0aW9uLmVudW0nO1xuaW1wb3J0IHtcbiAgQXV0aG9yaXphdGlvbk5vdGlmaWVyLFxuICBBdXRob3JpemF0aW9uUmVxdWVzdCxcbiAgQXV0aG9yaXphdGlvblNlcnZpY2VDb25maWd1cmF0aW9uLFxuICBCYXNlVG9rZW5SZXF1ZXN0SGFuZGxlcixcbiAgR1JBTlRfVFlQRV9BVVRIT1JJWkFUSU9OX0NPREUsXG4gIFJlZGlyZWN0UmVxdWVzdEhhbmRsZXIsXG4gIFJlcXVlc3RvcixcbiAgU3RyaW5nTWFwLFxuICBUb2tlblJlcXVlc3QsXG4gIFRva2VuUmVzcG9uc2Vcbn0gZnJvbSAnQG9wZW5pZC9hcHBhdXRoJztcbmltcG9ydCB7IGlzTnVsbE9yRW1wdHkgfSBmcm9tICcuLi91dGlscy9jdXN0b20tdmFsaWRhdG9yLnV0aWwnO1xuXG5cbmNvbnN0IExTX0lTU1VFUl9VUkkgPSAnYXV0aG9yaXphdGlvbi5zZXJ2aWNlLmlzc3Vlcl91cmknO1xuY29uc3QgTFNfVVNFUl9JTkZPID0gJ2F1dGhvcml6YXRpb24uc2VydmljZS51c2VyX2luZm8nO1xuY29uc3QgTFNfT1BFTklEX0NPTkZJRyA9ICdhdXRob3JpemF0aW9uLnNlcnZpY2UucGFyc2VkX29wZW5pZF9jb25maWd1cmF0aW9uJztcbmNvbnN0IExTX1RPS0VOX1JFU1BPTlNFID0gJ2F1dGhvcml6YXRpb24uc2VydmljZS50b2tlbl9yZXNwb25zZSc7XG5jb25zdCBDTElFTlRfU0VDUkVUID0gJ2NsaWVudF9zZWNyZXQnO1xuY29uc3QgQ09ERV9WRVJJRklFUiA9ICdjb2RlX3ZlcmlmaWVyJztcbmNvbnN0IE9QRU5fSUQgPSAnb3BlbmlkJztcbmNvbnN0IE9QRU5fSURfUFJPRklMRSA9ICdvcGVuaWQgcHJvZmlsZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aG9yaXphdGlvbkNvbmZpZyB7XG4gIGlzc3Vlcl91cmk6IHN0cmluZztcbiAgY2xpZW50X2lkOiBzdHJpbmc7XG4gIGNsaWVudF9zZWNyZXQ/OiBzdHJpbmc7XG4gIHJlZGlyZWN0X3VyaTogc3RyaW5nO1xuICBzY29wZT86IHN0cmluZztcbiAgZXh0cmFzPzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYWxFbnZpcm9ubWVudEluZm8ge1xuICBwcm9kdWN0aW9uPzogYm9vbGVhbjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9wZW5JZEF1dGhTZXJ2aWNlIHtcblxuICBwcml2YXRlIG5vdGlmaWVyID0gbmV3IEF1dGhvcml6YXRpb25Ob3RpZmllcigpO1xuICBwcml2YXRlIGF1dGhvcml6YXRpb25IYW5kbGVyID0gbmV3IFJlZGlyZWN0UmVxdWVzdEhhbmRsZXIoKTsgLy8gIDNyZCBwYXJ0eVxuICBwcml2YXRlIF90b2tlblJlc3BvbnNlczogQmVoYXZpb3JTdWJqZWN0PFRva2VuUmVzcG9uc2UgfCBudWxsPjtcbiAgcHJpdmF0ZSBfdXNlckluZm9zOiBCZWhhdmlvclN1YmplY3Q8VXNlckluZm8gfCBudWxsPjtcbiAgcHJpdmF0ZSBfc2VydmljZUNvbmZpZ3M6IEJlaGF2aW9yU3ViamVjdDxBdXRob3JpemF0aW9uU2VydmljZUNvbmZpZ3VyYXRpb24gfCBudWxsPjtcbiAgcHJpdmF0ZSBhdXRob3JpemF0aW9uQ29uZmlnOiBBdXRob3JpemF0aW9uQ29uZmlnICYgR2VuZXJhbEVudmlyb25tZW50SW5mbztcbiAgcHJpdmF0ZSBsb2dvdXRVcmwgPSAnJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlcXVlc3RvcjogUmVxdWVzdG9yLCBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsIHByaXZhdGUgbWVzc2FnZUJhclNlcnZpY2U6IE1lc3NhZ2VCYXJTZXJ2aWNlKSB7XG4gIH1cblxuICBJbml0KCkge1xuICAgIHRoaXMuYXV0aG9yaXphdGlvbkhhbmRsZXIuc2V0QXV0aG9yaXphdGlvbk5vdGlmaWVyKHRoaXMubm90aWZpZXIpO1xuICAgIC8vIGF0dGVtcHQgdG8gcmVzdG9yZSBwcmV2aW91cyB2YWx1ZXMgb2YgdGhlIG1ldGFkYXRhIGNvbmZpZywgdG9rZW4gcmVzcG9uc2UsIGFuZCB1c2VyIGluZm9cbiAgICBsZXQgYXV0aG9yaXphdGlvblNlcnZpY2VDb25maWd1cmF0aW9uOiBBdXRob3JpemF0aW9uU2VydmljZUNvbmZpZ3VyYXRpb24gfCBudWxsID0gbnVsbDtcbiAgICBsZXQgdG9rZW5SZXNwb25zZTogVG9rZW5SZXNwb25zZSB8IG51bGwgPSBudWxsO1xuICAgIGxldCB1c2VySW5mbzogVXNlckluZm8gfCBudWxsID0gbnVsbDtcblxuICAgIC8vIHZlcmlmeSB0aGF0IHdlIGFyZSBzdGlsbCB3b3JraW5nIHdpdGggdGhlIHNhbWUgSURQLCBzaW5jZSBhIHJlbG9hZCBtYXlcbiAgICAvLyBoYXZlIGJlZW4gZHVlIHRvIGFuIHVuZGVybHlpbmcgY29uZmlndXJhdGlvbiBjaGFuZ2VcbiAgICBpZiAodGhpcy5hdXRob3JpemF0aW9uQ29uZmlnLmlzc3Vlcl91cmkgPT09IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShMU19JU1NVRVJfVVJJKSkge1xuICAgICAgY29uc3Qgc2VydmljZUNvbmZpZ0pTT04gPSBKU09OLnBhcnNlKHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShMU19PUEVOSURfQ09ORklHKSEpO1xuICAgICAgYXV0aG9yaXphdGlvblNlcnZpY2VDb25maWd1cmF0aW9uID0gc2VydmljZUNvbmZpZ0pTT04gJiYgbmV3IEF1dGhvcml6YXRpb25TZXJ2aWNlQ29uZmlndXJhdGlvbihzZXJ2aWNlQ29uZmlnSlNPTik7XG4gICAgICBjb25zdCB0b2tlblJlc3BvbnNlSlNPTiA9IEpTT04ucGFyc2Uod2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKExTX1RPS0VOX1JFU1BPTlNFKSEpO1xuICAgICAgdG9rZW5SZXNwb25zZSA9IHRva2VuUmVzcG9uc2VKU09OICYmIG5ldyBUb2tlblJlc3BvbnNlKHRva2VuUmVzcG9uc2VKU09OKTtcbiAgICAgIHVzZXJJbmZvID0gSlNPTi5wYXJzZSh3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oTFNfVVNFUl9JTkZPKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG5ldyBpc3N1ZXIgKG9yIGZpcnN0IHJ1biwgb3IgY2xlYXJlZCBzZXNzaW9uKVxuICAgICAgLy8gbWFrZSBzdXJlIHdlIHN0b3JlIHRoZSBpc3N1ZXIsIGFuZCBoYXZlIG5vIG90aGVyIHN0YXRlXG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oTFNfSVNTVUVSX1VSSSwgdGhpcy5hdXRob3JpemF0aW9uQ29uZmlnLmlzc3Vlcl91cmkpO1xuICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKExTX09QRU5JRF9DT05GSUcpO1xuICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKExTX1VTRVJfSU5GTyk7XG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oTFNfVE9LRU5fUkVTUE9OU0UpO1xuICAgIH1cblxuICAgIC8vIGNyZWF0ZSBzdWJqZWN0cyB3aXRoIHRoZSBjdXJyZW50IHZhbHVlcyAob3IgbnVsbClcbiAgICB0aGlzLl90b2tlblJlc3BvbnNlcyA9IG5ldyBCZWhhdmlvclN1YmplY3QodG9rZW5SZXNwb25zZSk7XG4gICAgdGhpcy5fc2VydmljZUNvbmZpZ3MgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGF1dGhvcml6YXRpb25TZXJ2aWNlQ29uZmlndXJhdGlvbik7XG4gICAgdGhpcy5fdXNlckluZm9zID0gbmV3IEJlaGF2aW9yU3ViamVjdCh1c2VySW5mbyk7XG5cbiAgICAvLyB1cGRhdGUgbG9jYWwgc3RvcmFnZSBvbiBjaGFuZ2VzXG4gICAgdGhpcy5VcGRhdGVMb2NhbFN0b3JhZ2VPbkNoYW5nZXMoKTtcbiAgICB0aGlzLmluaXRMaXN0ZW5lcnMoKTtcblxuICAgIC8vIHN0YXJ0IGZldGNoaW5nIG1ldGFkYXRhXG4gICAgaWYgKGF1dGhvcml6YXRpb25TZXJ2aWNlQ29uZmlndXJhdGlvbiA9PSBudWxsICYmIHRoaXMuYXV0aG9yaXphdGlvbkNvbmZpZy5pc3N1ZXJfdXJpKSB7XG4gICAgICB0aGlzLmZldGNoU2VydmljZUNvbmZpZ3VyYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRMaXN0ZW5lcnMoKSB7XG4gICAgLy8gbW9uaXRvciBjaGFuZ2VzIGluIG1ldGFkYXRhL3Rva2VucyB0byBwb3NzaWJseSBjbGVhciBkZXBlbmRlbnQgdmFsdWVzLFxuICAgIC8vIGFuZCB0byBmZXRjaCB1c2VySW5mby5cbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLl9zZXJ2aWNlQ29uZmlncywgdGhpcy5fdG9rZW5SZXNwb25zZXNdKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKFtjb25maWd1cmF0aW9uLCB0b2tlbl06IFtBdXRob3JpemF0aW9uU2VydmljZUNvbmZpZ3VyYXRpb24gfCBudWxsLCBUb2tlblJlc3BvbnNlIHwgbnVsbF0pID0+IHtcblxuICAgICAgICAgIC8vIGlmIHRoZSBzZXJ2aWNlIGNvbmZpZyBpcyBjbGVhcmVkLCB3ZSBuZWVkIHRvIGludmFsaWRhdGUgYW55IFRva2VuUmVzcG9uc2UvdXNlckluZm9cbiAgICAgICAgICBpZiAoY29uZmlndXJhdGlvbiA9PT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHRva2VuICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgdGhpcy5fdG9rZW5SZXNwb25zZXMubmV4dChudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3VzZXJJbmZvcy5uZXh0KG51bGwpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIGlmIHRoZSB0b2tlbiBpcyBjbGVhcmVkLCBhc3N1bWUgdXNlcmluZm8gaXMgaW52YWxpZGF0ZWQgdG9vXG4gICAgICAgICAgaWYgKHRva2VuID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuX3VzZXJJbmZvcy5uZXh0KG51bGwpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIGlmIHdlIGRvbid0IGhhdmUgYSB1c2VyIGluZm8gZW5kcG9pbnQsIHdlIGNhbid0IGZldGNoIHVzZXIgaW5mb1xuICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uLnVzZXJJbmZvRW5kcG9pbnQgPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ3VzZXJpbmZvIGNhbm5vdCBiZSBlbWl0dGVkIC0gdXNlcmluZm8gZW5kcG9pbnQgbm90IHNwZWNpZmllZCBieSBtZXRhZGF0YScpO1xuICAgICAgICAgICAgdGhpcy5fdXNlckluZm9zLm5leHQobnVsbCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gZmV0Y2ggdXNlciBpbmZvLCBpZiBub25lXG4gICAgICAgICAgaWYgKHRoaXMuX3VzZXJJbmZvcy52YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmdldFVzZXJJbmZvcm1hdGlvbldpdGhUaGVUb2tlbih0b2tlbiwgY29uZmlndXJhdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VXNlckluZm9ybWF0aW9uV2l0aFRoZVRva2VuKHRva2VuLCBjb25maWd1cmF0aW9uKSB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSB0b2tlbi5hY2Nlc3NUb2tlbjtcbiAgICB0aGlzLnJlcXVlc3Rvci54aHI8VXNlckluZm8+KHtcbiAgICAgIHVybDogY29uZmlndXJhdGlvbi51c2VySW5mb0VuZHBvaW50LFxuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIGRhdGFUeXBlOiAnanNvbicsXG4gICAgICBoZWFkZXJzOiB7ICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke2FjY2Vzc1Rva2VufWAgfVxuICAgIH0pLnRoZW4oKHVzZXJpbmZvKSA9PiB7XG4gICAgICB0aGlzLl91c2VySW5mb3MubmV4dCh1c2VyaW5mbyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIFVwZGF0ZUxvY2FsU3RvcmFnZU9uQ2hhbmdlcygpIHtcbiAgICAvLyB1cGRhdGUgbG9jYWwgc3RvcmFnZSBvbiBjaGFuZ2VzXG4gICAgdGhpcy5fc2VydmljZUNvbmZpZ3Muc3Vic2NyaWJlKChjb25maWc6IEF1dGhvcml6YXRpb25TZXJ2aWNlQ29uZmlndXJhdGlvbiB8IG51bGwpID0+IHtcbiAgICAgIHRoaXMuc2V0TG9jYWxTdG9yYWdlKGNvbmZpZywgTFNfT1BFTklEX0NPTkZJRyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl90b2tlblJlc3BvbnNlcy5zdWJzY3JpYmUoKHRva2VuOiBUb2tlblJlc3BvbnNlIHwgbnVsbCkgPT4ge1xuICAgICAgdGhpcy5zZXRMb2NhbFN0b3JhZ2UodG9rZW4sIExTX1RPS0VOX1JFU1BPTlNFKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3VzZXJJbmZvcy5zdWJzY3JpYmUoKGluZm86IFVzZXJJbmZvIHwgbnVsbCkgPT4ge1xuICAgICAgdGhpcy5zZXRMb2NhbFN0b3JhZ2UoaW5mbywgTFNfVVNFUl9JTkZPLCBmYWxzZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldExvY2FsU3RvcmFnZShwYXJhbTogYW55LCBrZXk6IHN0cmluZywgdG9Kc29uID0gdHJ1ZSkge1xuICAgIGlmIChwYXJhbSkge1xuICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkodG9Kc29uID8gcGFyYW0/LnRvSnNvbigpIDogcGFyYW0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNlcnZpY2VDb25maWd1cmF0aW9uKCk6IE9ic2VydmFibGU8QXV0aG9yaXphdGlvblNlcnZpY2VDb25maWd1cmF0aW9uIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9zZXJ2aWNlQ29uZmlncy5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICB9XG5cbiAgcHVibGljIHRva2VuUmVzcG9uc2UoKTogT2JzZXJ2YWJsZTxUb2tlblJlc3BvbnNlIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl90b2tlblJlc3BvbnNlcy5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICB9XG5cbiAgcHVibGljIHVzZXJJbmZvcygpOiBPYnNlcnZhYmxlPFVzZXJJbmZvIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl91c2VySW5mb3MuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgfVxuXG4gIHB1YmxpYyBhdXRob3JpemUoKTogdm9pZCB7XG4gICAgdGhpcy5fc2VydmljZUNvbmZpZ3NcbiAgICAgIC5waXBlKGZpbHRlcigodmFsdWU6IGFueSkgPT4gdmFsdWUgIT0gbnVsbCkpXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoY29uZmlndXJhdGlvbjogQXV0aG9yaXphdGlvblNlcnZpY2VDb25maWd1cmF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHNjb3BlID0gdGhpcy5hdXRob3JpemF0aW9uQ29uZmlnLnNjb3BlIHx8IE9QRU5fSURfUFJPRklMRTtcbiAgICAgICAgLy8gY3JlYXRlIGEgcmVxdWVzdFxuICAgICAgICBjb25zdCByZXF1ZXN0ID0gbmV3IEF1dGhvcml6YXRpb25SZXF1ZXN0KHtcbiAgICAgICAgICBjbGllbnRfaWQ6IHRoaXMuYXV0aG9yaXphdGlvbkNvbmZpZy5jbGllbnRfaWQsXG4gICAgICAgICAgcmVkaXJlY3RfdXJpOiB0aGlzLmF1dGhvcml6YXRpb25Db25maWcucmVkaXJlY3RfdXJpLFxuICAgICAgICAgIHNjb3BlOiBzY29wZSxcbiAgICAgICAgICByZXNwb25zZV90eXBlOiBBdXRob3JpemF0aW9uUmVxdWVzdC5SRVNQT05TRV9UWVBFX0NPREUsXG4gICAgICAgICAgZXh0cmFzOiB0aGlzLmF1dGhvcml6YXRpb25Db25maWcuZXh0cmFzXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmF1dGhvcml6YXRpb25IYW5kbGVyLnBlcmZvcm1BdXRob3JpemF0aW9uUmVxdWVzdChjb25maWd1cmF0aW9uLCByZXF1ZXN0KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgc2lnbk91dCgpOiB2b2lkIHtcbiAgICBsb2NhbFN0b3JhZ2UuY2xlYXIoKTtcbiAgICB0aGlzLl90b2tlblJlc3BvbnNlcy5uZXh0KG51bGwpO1xuICAgIG9wZW5CYWNrZ3JvdW5kSWZyYW1lKHRoaXMubG9nb3V0VXJsKTtcbiAgfVxuXG4gIGNvbXBsZXRlQXV0aG9yaXphdGlvblJlcXVlc3QoKTogUHJvbWlzZTxUb2tlblJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuX3NlcnZpY2VDb25maWdzXG4gICAgICAgIC5waXBlKGZpbHRlcigodmFsdWU6IGFueSkgPT4gdmFsdWUgIT0gbnVsbCkpXG4gICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGNvbmZpZ3VyYXRpb246IEF1dGhvcml6YXRpb25TZXJ2aWNlQ29uZmlndXJhdGlvbikgPT4ge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdzZXR0aW5nIGxpc3RlbmVyJyk7XG4gICAgICAgICAgdGhpcy5ub3RpZmllci5zZXRBdXRob3JpemF0aW9uTGlzdGVuZXIoKHJlcXVlc3QsIHJlc3BvbnNlLCBlcnJvcikgPT4ge1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ0F1dGhvcml6YXRpb24gcmVxdWVzdCBjb21wbGV0ZSAnLCByZXF1ZXN0LCByZXNwb25zZSwgZXJyb3IpO1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmNvZGUpIHtcbiAgICAgICAgICAgICAgY29uc3QgdG9rZW5IYW5kbGVyID0gbmV3IEJhc2VUb2tlblJlcXVlc3RIYW5kbGVyKHRoaXMucmVxdWVzdG9yKTtcbiAgICAgICAgICAgICAgLy8gdXNlIHRoZSBjb2RlIHRvIG1ha2UgdGhlIHRva2VuIHJlcXVlc3QuXG4gICAgICAgICAgICAgIGNvbnN0IGV4dHJhczogU3RyaW5nTWFwID0ge307XG4gICAgICAgICAgICAgIGlmICh0aGlzLmF1dGhvcml6YXRpb25Db25maWc/LmNsaWVudF9zZWNyZXQpIHtcbiAgICAgICAgICAgICAgICBleHRyYXNbQ0xJRU5UX1NFQ1JFVF0gPSB0aGlzLmF1dGhvcml6YXRpb25Db25maWcuY2xpZW50X3NlY3JldDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAocmVxdWVzdC5pbnRlcm5hbCkge1xuICAgICAgICAgICAgICAgIGV4dHJhc1tDT0RFX1ZFUklGSUVSXSA9IHJlcXVlc3QuaW50ZXJuYWxbQ09ERV9WRVJJRklFUl07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgdG9rZW5SZXF1ZXN0ID0gbmV3IFRva2VuUmVxdWVzdCh7XG4gICAgICAgICAgICAgICAgY2xpZW50X2lkOiB0aGlzLmF1dGhvcml6YXRpb25Db25maWcuY2xpZW50X2lkLFxuICAgICAgICAgICAgICAgIHJlZGlyZWN0X3VyaTogdGhpcy5hdXRob3JpemF0aW9uQ29uZmlnLnJlZGlyZWN0X3VyaSxcbiAgICAgICAgICAgICAgICBncmFudF90eXBlOiBHUkFOVF9UWVBFX0FVVEhPUklaQVRJT05fQ09ERSxcbiAgICAgICAgICAgICAgICBjb2RlOiByZXNwb25zZS5jb2RlLFxuICAgICAgICAgICAgICAgIGV4dHJhczogZXh0cmFzXG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIHRoaXMucGVyZm9ybVRva2VuUmVxdWVzdChyZXNvbHZlLCB0b2tlbkhhbmRsZXIsIGNvbmZpZ3VyYXRpb24sIHRva2VuUmVxdWVzdCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc29sZS5sb2coJ2F0dGVtcHQgdG8gY29tcGxldGUgcmVxdWVzdCcpO1xuICAgICAgICAgIHRoaXMuYXV0aG9yaXphdGlvbkhhbmRsZXIuY29tcGxldGVBdXRob3JpemF0aW9uUmVxdWVzdElmUG9zc2libGUoKTtcbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcGVyZm9ybVRva2VuUmVxdWVzdChcbiAgICByZXNvbHZlOiAodmFsdWU6IFRva2VuUmVzcG9uc2UgfCBQcm9taXNlTGlrZTxUb2tlblJlc3BvbnNlPikgPT4gdm9pZCxcbiAgICB0b2tlbkhhbmRsZXI6IEJhc2VUb2tlblJlcXVlc3RIYW5kbGVyLFxuICAgIGNvbmZpZ3VyYXRpb246IEF1dGhvcml6YXRpb25TZXJ2aWNlQ29uZmlndXJhdGlvbixcbiAgICB0b2tlblJlcXVlc3Q6IFRva2VuUmVxdWVzdCkge1xuICAgIGNvbnNvbGUubG9nKCdtYWtpbmcgdG9rZW4gcmVxdWVzdDonICsgSlNPTi5zdHJpbmdpZnkodG9rZW5SZXF1ZXN0LnRvU3RyaW5nTWFwKCkpKTtcbiAgICB0b2tlbkhhbmRsZXIucGVyZm9ybVRva2VuUmVxdWVzdChjb25maWd1cmF0aW9uLCB0b2tlblJlcXVlc3QpXG4gICAgICAudGhlbigodG9rZW5SZXNwb25zZSkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygncmVjZWl2ZWQgdG9rZW4gcmVzcG9uc2UgJywgdG9rZW5SZXNwb25zZSk7XG4gICAgICAgIHRoaXMuX3Rva2VuUmVzcG9uc2VzLm5leHQodG9rZW5SZXNwb25zZSk7XG4gICAgICAgIHJlc29sdmUodG9rZW5SZXNwb25zZSk7XG4gICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2lnbk91dCgpO1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmdlbmVyYWxfZXJyb3IpO1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKG1lc3NhZ2UsIHsgcG9zaXRpb246IE1lc3NhZ2VCYXJQb3NpdGlvbi5TdGF0aWMgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hTZXJ2aWNlQ29uZmlndXJhdGlvbigpIHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IEF1dGhvcml6YXRpb25TZXJ2aWNlQ29uZmlndXJhdGlvbi5mZXRjaEZyb21Jc3N1ZXIodGhpcy5hdXRob3JpemF0aW9uQ29uZmlnLmlzc3Vlcl91cmksIHRoaXMucmVxdWVzdG9yKTtcbiAgICB0aGlzLl9zZXJ2aWNlQ29uZmlncy5uZXh0KHJlc3BvbnNlKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBdXRob3JpemF0aW9uQ29uZmlnKGNsaWVudElkOiBzdHJpbmcsIGNsaWVudFNlY3JldDogc3RyaW5nLCB0ZW5hbnROYW1lOiBzdHJpbmcsIGlzc3VlclVyaTogc3RyaW5nKSB7XG4gICAgY29uc3QgYmFzZVVybCA9IGAke2xvY2F0aW9uLm9yaWdpbn0vJHt0ZW5hbnROYW1lfS9hY2NvdW50L29wZW5pZC1jYWxsYmFja2A7XG4gICAgY29uc29sZS5sb2coYGJhc2VVcmwgPT09PT09PT09PT09PT4gJHtiYXNlVXJsfWApO1xuXG4gICAgdGhpcy5hdXRob3JpemF0aW9uQ29uZmlnID0ge1xuICAgICAgcHJvZHVjdGlvbjogZmFsc2UsXG4gICAgICBpc3N1ZXJfdXJpOiBpc3N1ZXJVcmksXG4gICAgICBjbGllbnRfaWQ6IGNsaWVudElkLFxuICAgICAgY2xpZW50X3NlY3JldDogY2xpZW50U2VjcmV0LFxuICAgICAgcmVkaXJlY3RfdXJpOiBiYXNlVXJsLFxuICAgICAgc2NvcGU6IE9QRU5fSURfUFJPRklMRVxuICAgIH1cblxuICAgIHRoaXMubG9nb3V0VXJsID0gYCR7aXNzdWVyVXJpfS9zaWdub2ZmP2NsaWVudF9pZD0ke2NsaWVudElkfWA7XG4gICAgY29uc29sZS5sb2coJ2F1dGhvcml6YXRpb25Db25maWcgPT09PT09PT09PT09PT4gOicsIHRoaXMuYXV0aG9yaXphdGlvbkNvbmZpZylcbiAgICBjb25zb2xlLmxvZygnbG9nb3V0VXJsID09PT09PT09PT09PT0+IDogJywgdGhpcy5sb2dvdXRVcmwpO1xuICAgIHRoaXMudmFsaWRhdGVDb25maWd1cmF0aW9ucyhjbGllbnRJZCwgY2xpZW50U2VjcmV0LCB0ZW5hbnROYW1lLCBpc3N1ZXJVcmkpO1xuICAgIHRoaXMuSW5pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUNvbmZpZ3VyYXRpb25zKGNsaWVudElkOiBzdHJpbmcsIGNsaWVudFNlY3JldDogc3RyaW5nLCB0ZW5hbnROYW1lOiBzdHJpbmcsIGlzc3VlclVyaTogc3RyaW5nKSB7XG4gICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xuXG4gICAgaWYgKGlzTnVsbE9yRW1wdHkoY2xpZW50SWQ/LnRyaW0oKSkgfHwgaXNOdWxsT3JFbXB0eShjbGllbnRTZWNyZXQ/LnRyaW0oKSkgfHwgaXNOdWxsT3JFbXB0eSh0ZW5hbnROYW1lPy50cmltKCkpIHx8IGlzTnVsbE9yRW1wdHkoaXNzdWVyVXJpPy50cmltKCkpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3I6IE9uZSBvciBtb3JlIHJlcXVpcmVkIHBhcmFtZXRlcnMgZm9yIFNTTyBhcmUgbWlzc2luZyBvciBlbXB0eS5cIik7XG4gICAgICBpc1ZhbGlkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzVmFsaWQ7XG4gIH1cbn0iXX0=