Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@azure/msal-angular

Package Overview
Dependencies
Maintainers
3
Versions
107
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@azure/msal-angular - npm Package Compare versions

Comparing version 2.0.0-beta.5 to 2.0.0-beta.6

azure-msal-angular.d.ts.map

1

azure-msal-angular.d.ts

@@ -5,1 +5,2 @@ /**

export * from './public-api';
//# sourceMappingURL=azure-msal-angular.d.ts.map

2

azure-msal-angular.metadata.json

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":4,"metadata":{"MsalService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":30,"character":9},"arguments":[{"__symbolic":"reference","name":"MSAL_INSTANCE"}]}],null],"parameters":[{"__symbolic":"reference","module":"@azure/msal-browser","name":"IPublicClientApplication","line":30,"character":48},{"__symbolic":"reference","module":"@angular/common","name":"Location","line":31,"character":26}]}],"acquireTokenPopup":[{"__symbolic":"method"}],"acquireTokenRedirect":[{"__symbolic":"method"}],"acquireTokenSilent":[{"__symbolic":"method"}],"handleRedirectObservable":[{"__symbolic":"method"}],"loginPopup":[{"__symbolic":"method"}],"loginRedirect":[{"__symbolic":"method"}],"logout":[{"__symbolic":"method"}],"logoutRedirect":[{"__symbolic":"method"}],"logoutPopup":[{"__symbolic":"method"}],"ssoSilent":[{"__symbolic":"method"}],"getLogger":[{"__symbolic":"method"}],"setLogger":[{"__symbolic":"method"}]}},"IMsalService":{"__symbolic":"interface"},"MsalGuard":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":16,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":21,"character":9},"arguments":[{"__symbolic":"reference","name":"MSAL_GUARD_CONFIG"}]}],null,null,null,null],"parameters":[{"__symbolic":"reference","name":"MsalGuardConfiguration"},{"__symbolic":"reference","name":"MsalBroadcastService"},{"__symbolic":"reference","name":"MsalService"},{"__symbolic":"reference","module":"@angular/common","name":"Location","line":24,"character":26},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":25,"character":24}]}],"parseUrl":[{"__symbolic":"method"}],"getDestinationUrl":[{"__symbolic":"method"}],"loginInteractively":[{"__symbolic":"method"}],"activateHelper":[{"__symbolic":"method"}],"canActivate":[{"__symbolic":"method"}],"canActivateChild":[{"__symbolic":"method"}],"canLoad":[{"__symbolic":"method"}]}},"MsalGuardConfiguration":{"__symbolic":"interface"},"MsalGuardAuthRequest":{"__symbolic":"interface"},"MsalInterceptor":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":20,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":23,"character":9},"arguments":[{"__symbolic":"reference","name":"MSAL_INTERCEPTOR_CONFIG"}]}],null,null],"parameters":[{"__symbolic":"reference","name":"MsalInterceptorConfiguration"},{"__symbolic":"reference","name":"MsalService"},{"__symbolic":"reference","module":"@angular/common","name":"Location","line":25,"character":26}]}],"intercept":[{"__symbolic":"method"}],"acquireTokenInteractively":[{"__symbolic":"method"}],"getScopesForEndpoint":[{"__symbolic":"method"}]}},"MsalInterceptorConfiguration":{"__symbolic":"interface"},"MsalInterceptorAuthRequest":{"__symbolic":"interface"},"MSAL_INSTANCE":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":7,"character":33},"arguments":["MSAL_INSTANCE"]},"MSAL_GUARD_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":9,"character":37},"arguments":["MSAL_GUARD_CONFIG"]},"MSAL_INTERCEPTOR_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":11,"character":43},"arguments":["MSAL_INTERCEPTOR_CONFIG"]},"MsalBroadcastService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":11,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":19,"character":9},"arguments":[{"__symbolic":"reference","name":"MSAL_INSTANCE"}]}],null],"parameters":[{"__symbolic":"reference","module":"@azure/msal-browser","name":"IPublicClientApplication","line":19,"character":53},{"__symbolic":"reference","name":"MsalService"}]}]}},"MsalModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":16,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"MsalRedirectComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":19,"character":8}],"providers":[{"__symbolic":"reference","name":"MsalGuard"},{"__symbolic":"reference","name":"MsalBroadcastService"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["msalInstance","guardConfig","interceptorConfig"],"value":{"ngModule":{"__symbolic":"reference","name":"MsalModule"},"providers":[{"provide":{"__symbolic":"reference","name":"MSAL_INSTANCE"},"useValue":{"__symbolic":"reference","name":"msalInstance"}},{"provide":{"__symbolic":"reference","name":"MSAL_GUARD_CONFIG"},"useValue":{"__symbolic":"reference","name":"guardConfig"}},{"provide":{"__symbolic":"reference","name":"MSAL_INTERCEPTOR_CONFIG"},"useValue":{"__symbolic":"reference","name":"interceptorConfig"}},{"__symbolic":"reference","name":"MsalService"}]}}}},"MsalRedirectComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":14,"character":1},"arguments":[{"selector":"app-redirect","template":""}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"MsalService"}]}],"ngOnInit":[{"__symbolic":"method"}]}},"MsalCustomNavigationClient":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@azure/msal-browser","name":"NavigationClient","line":17,"character":48},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":16,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"MsalService"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":21,"character":24},{"__symbolic":"reference","module":"@angular/common","name":"Location","line":22,"character":26}]}],"navigateInternal":[{"__symbolic":"method"}]}}},"origins":{"MsalService":"./msal.service","IMsalService":"./IMsalService","MsalGuard":"./msal.guard","MsalGuardConfiguration":"./msal.guard.config","MsalGuardAuthRequest":"./msal.guard.config","MsalInterceptor":"./msal.interceptor","MsalInterceptorConfiguration":"./msal.interceptor.config","MsalInterceptorAuthRequest":"./msal.interceptor.config","MSAL_INSTANCE":"./constants","MSAL_GUARD_CONFIG":"./constants","MSAL_INTERCEPTOR_CONFIG":"./constants","MsalBroadcastService":"./msal.broadcast.service","MsalModule":"./msal.module","MsalRedirectComponent":"./msal.redirect.component","MsalCustomNavigationClient":"./msal.navigation.client"},"importAs":"@azure/msal-angular"}
{"__symbolic":"module","version":4,"metadata":{"MsalService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":30,"character":9},"arguments":[{"__symbolic":"reference","name":"MSAL_INSTANCE"}]}],null],"parameters":[{"__symbolic":"reference","module":"@azure/msal-browser","name":"IPublicClientApplication","line":30,"character":48},{"__symbolic":"reference","module":"@angular/common","name":"Location","line":31,"character":26}]}],"acquireTokenPopup":[{"__symbolic":"method"}],"acquireTokenRedirect":[{"__symbolic":"method"}],"acquireTokenSilent":[{"__symbolic":"method"}],"handleRedirectObservable":[{"__symbolic":"method"}],"loginPopup":[{"__symbolic":"method"}],"loginRedirect":[{"__symbolic":"method"}],"logout":[{"__symbolic":"method"}],"logoutRedirect":[{"__symbolic":"method"}],"logoutPopup":[{"__symbolic":"method"}],"ssoSilent":[{"__symbolic":"method"}],"getLogger":[{"__symbolic":"method"}],"setLogger":[{"__symbolic":"method"}]}},"IMsalService":{"__symbolic":"interface"},"MsalGuard":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":16,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":21,"character":9},"arguments":[{"__symbolic":"reference","name":"MSAL_GUARD_CONFIG"}]}],null,null,null,null],"parameters":[{"__symbolic":"reference","name":"MsalGuardConfiguration"},{"__symbolic":"reference","name":"MsalBroadcastService"},{"__symbolic":"reference","name":"MsalService"},{"__symbolic":"reference","module":"@angular/common","name":"Location","line":24,"character":26},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":25,"character":24}]}],"parseUrl":[{"__symbolic":"method"}],"getDestinationUrl":[{"__symbolic":"method"}],"loginInteractively":[{"__symbolic":"method"}],"activateHelper":[{"__symbolic":"method"}],"canActivate":[{"__symbolic":"method"}],"canActivateChild":[{"__symbolic":"method"}],"canLoad":[{"__symbolic":"method"}]}},"MsalGuardConfiguration":{"__symbolic":"interface"},"MsalGuardAuthRequest":{"__symbolic":"interface"},"MsalInterceptor":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":20,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":23,"character":9},"arguments":[{"__symbolic":"reference","name":"MSAL_INTERCEPTOR_CONFIG"}]}],null,null],"parameters":[{"__symbolic":"reference","name":"MsalInterceptorConfiguration"},{"__symbolic":"reference","name":"MsalService"},{"__symbolic":"reference","module":"@angular/common","name":"Location","line":25,"character":26}]}],"intercept":[{"__symbolic":"method"}],"acquireTokenInteractively":[{"__symbolic":"method"}],"getScopesForEndpoint":[{"__symbolic":"method"}],"matchResourcesToEndpoint":[{"__symbolic":"method"}],"matchScopesToEndpoint":[{"__symbolic":"method"}]}},"MsalInterceptorConfiguration":{"__symbolic":"interface"},"MsalInterceptorAuthRequest":{"__symbolic":"interface"},"ProtectedResourceScopes":{"__symbolic":"interface"},"MSAL_INSTANCE":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":7,"character":33},"arguments":["MSAL_INSTANCE"]},"MSAL_GUARD_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":9,"character":37},"arguments":["MSAL_GUARD_CONFIG"]},"MSAL_INTERCEPTOR_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":11,"character":43},"arguments":["MSAL_INTERCEPTOR_CONFIG"]},"MsalBroadcastService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":11,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":19,"character":9},"arguments":[{"__symbolic":"reference","name":"MSAL_INSTANCE"}]}],null],"parameters":[{"__symbolic":"reference","module":"@azure/msal-browser","name":"IPublicClientApplication","line":19,"character":53},{"__symbolic":"reference","name":"MsalService"}]}]}},"MsalModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":16,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"MsalRedirectComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":19,"character":8}],"providers":[{"__symbolic":"reference","name":"MsalGuard"},{"__symbolic":"reference","name":"MsalBroadcastService"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["msalInstance","guardConfig","interceptorConfig"],"value":{"ngModule":{"__symbolic":"reference","name":"MsalModule"},"providers":[{"provide":{"__symbolic":"reference","name":"MSAL_INSTANCE"},"useValue":{"__symbolic":"reference","name":"msalInstance"}},{"provide":{"__symbolic":"reference","name":"MSAL_GUARD_CONFIG"},"useValue":{"__symbolic":"reference","name":"guardConfig"}},{"provide":{"__symbolic":"reference","name":"MSAL_INTERCEPTOR_CONFIG"},"useValue":{"__symbolic":"reference","name":"interceptorConfig"}},{"__symbolic":"reference","name":"MsalService"}]}}}},"MsalRedirectComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":14,"character":1},"arguments":[{"selector":"app-redirect","template":""}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"MsalService"}]}],"ngOnInit":[{"__symbolic":"method"}]}},"MsalCustomNavigationClient":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@azure/msal-browser","name":"NavigationClient","line":17,"character":48},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":16,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"MsalService"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":21,"character":24},{"__symbolic":"reference","module":"@angular/common","name":"Location","line":22,"character":26}]}],"navigateInternal":[{"__symbolic":"method"}]}}},"origins":{"MsalService":"./msal.service","IMsalService":"./IMsalService","MsalGuard":"./msal.guard","MsalGuardConfiguration":"./msal.guard.config","MsalGuardAuthRequest":"./msal.guard.config","MsalInterceptor":"./msal.interceptor","MsalInterceptorConfiguration":"./msal.interceptor.config","MsalInterceptorAuthRequest":"./msal.interceptor.config","ProtectedResourceScopes":"./msal.interceptor.config","MSAL_INSTANCE":"./constants","MSAL_GUARD_CONFIG":"./constants","MSAL_INTERCEPTOR_CONFIG":"./constants","MsalBroadcastService":"./msal.broadcast.service","MsalModule":"./msal.module","MsalRedirectComponent":"./msal.redirect.component","MsalCustomNavigationClient":"./msal.navigation.client"},"importAs":"@azure/msal-angular"}
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@azure/msal-browser'), require('rxjs'), require('@angular/router'), require('rxjs/operators')) :
typeof define === 'function' && define.amd ? define('@azure/msal-angular', ['exports', '@angular/core', '@angular/common', '@azure/msal-browser', 'rxjs', '@angular/router', 'rxjs/operators'], factory) :
(global = global || self, factory((global.azure = global.azure || {}, global.azure['msal-angular'] = {}), global.ng.core, global.ng.common, global['@azure/msal-browser'], global.rxjs, global.ng.router, global.rxjs.operators));
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.azure = global.azure || {}, global.azure['msal-angular'] = {}), global.ng.core, global.ng.common, global['@azure/msal-browser'], global.rxjs, global.ng.router, global.rxjs.operators));
}(this, (function (exports, core, common, msalBrowser, rxjs, router, operators) { 'use strict';

@@ -17,3 +17,3 @@

var name = "@azure/msal-angular";
var version = "2.0.0-beta.5";
var version = "2.0.0-beta.6";

@@ -214,2 +214,4 @@ /*

}
// Capture current path before it gets changed by handleRedirectObservable
var currentPath = this.location.path(true);
return this.authService.handleRedirectObservable()

@@ -226,10 +228,16 @@ .pipe(operators.concatMap(function () {

_this.authService.getLogger().verbose("Guard - at least 1 account exists, can activate or load");
// Prevent navigating the app to /#code=
if (state && state.url.indexOf("#") > -1 && state.url.indexOf("code=") > -1) {
// Prevent navigating the app to /#code= or /code=
if (state && currentPath.indexOf("code=") > -1) {
_this.authService.getLogger().info("Guard - Hash contains known code response, stopping navigation.");
return rxjs.of(false);
// Path routing (navigate to current path without hash)
if (currentPath.indexOf("#") > -1) {
return rxjs.of(_this.parseUrl(_this.location.path()));
}
// Hash routing (navigate to root path)
return rxjs.of(_this.parseUrl(""));
}
return rxjs.of(true);
}), operators.catchError(function () {
_this.authService.getLogger().verbose("Guard - error while logging in, unable to activate");
}), operators.catchError(function (error) {
_this.authService.getLogger().error("Guard - error while logging in, unable to activate");
_this.authService.getLogger().errorPii("Guard - error: " + error.message);
/**

@@ -289,3 +297,3 @@ * If a loginFailedRoute is set, checks to see if Angular 10+ is used and state is passed in before returning route

this.authService.getLogger().verbose("MSAL Interceptor activated");
var scopes = this.getScopesForEndpoint(req.url);
var scopes = this.getScopesForEndpoint(req.url, req.method);
// If no scopes for endpoint, does not acquire token

@@ -348,7 +356,7 @@ if (!scopes || scopes.length === 0) {

* @param endpoint Url of the request
* @param endpoint Http method of the request
* @returns Array of scopes, or null if not found
*
*/
MsalInterceptor.prototype.getScopesForEndpoint = function (endpoint) {
var _this = this;
MsalInterceptor.prototype.getScopesForEndpoint = function (endpoint, httpMethod) {
this.authService.getLogger().verbose("Interceptor - getting scopes for endpoint");

@@ -358,3 +366,18 @@ // Ensures endpoints and protected resources compared are normalized

var protectedResourcesArray = Array.from(this.msalInterceptorConfig.protectedResourceMap.keys());
var keyMatchesEndpointArray = protectedResourcesArray.filter(function (key) {
var matchingProtectedResources = this.matchResourcesToEndpoint(protectedResourcesArray, normalizedEndpoint);
if (matchingProtectedResources.length > 0) {
return this.matchScopesToEndpoint(this.msalInterceptorConfig.protectedResourceMap, matchingProtectedResources, httpMethod);
}
return null;
};
/**
* Finds resource endpoints that match request endpoint
* @param protectedResourcesArray
* @param endpoint
* @param location
* @returns
*/
MsalInterceptor.prototype.matchResourcesToEndpoint = function (protectedResourcesEndpoints, endpoint) {
var _this = this;
return protectedResourcesEndpoints.filter(function (key) {
var normalizedKey = _this.location.normalize(key);

@@ -366,15 +389,56 @@ // Normalized key should include query strings if applicable

if (relativeNormalizedKey === "" || relativeNormalizedKey === "/*") {
return msalBrowser.StringUtils.matchPattern(normalizedKey, normalizedEndpoint);
return msalBrowser.StringUtils.matchPattern(normalizedKey, endpoint);
}
else {
// Matching endpoint with both protected resource and relative url of protected resource
return msalBrowser.StringUtils.matchPattern(normalizedKey, normalizedEndpoint) || msalBrowser.StringUtils.matchPattern(relativeNormalizedKey, normalizedEndpoint);
return msalBrowser.StringUtils.matchPattern(normalizedKey, endpoint) || msalBrowser.StringUtils.matchPattern(relativeNormalizedKey, endpoint);
}
});
// Process all protected resources and send the first matched resource
if (keyMatchesEndpointArray.length > 0) {
var keyForEndpoint = keyMatchesEndpointArray[0];
if (keyForEndpoint) {
return this.msalInterceptorConfig.protectedResourceMap.get(keyForEndpoint);
};
/**
* Finds scopes from first matching endpoint with HTTP method that matches request
* @param protectedResourceMap Protected resource map
* @param endpointArray Array of resources that match request endpoint
* @param httpMethod Http method of the request
* @returns
*/
MsalInterceptor.prototype.matchScopesToEndpoint = function (protectedResourceMap, endpointArray, httpMethod) {
var allMatchedScopes = [];
// Check each matched endpoint for matching HttpMethod and scopes
endpointArray.forEach(function (matchedEndpoint) {
var scopesForEndpoint = [];
var methodAndScopesArray = protectedResourceMap.get(matchedEndpoint);
// Return if resource is unprotected
if (methodAndScopesArray === null) {
allMatchedScopes.push(null);
return;
}
methodAndScopesArray.forEach(function (entry) {
// Entry is either array of scopes or ProtectedResourceScopes object
if (typeof entry === "string") {
scopesForEndpoint.push(entry);
}
else {
// Ensure methods being compared are normalized
var normalizedRequestMethod = httpMethod.toLowerCase();
var normalizedResourceMethod = entry.httpMethod.toLowerCase();
// Method in protectedResourceMap matches request http method
if (normalizedResourceMethod === normalizedRequestMethod) {
entry.scopes.forEach(function (scope) {
scopesForEndpoint.push(scope);
});
}
}
});
// Only add to all scopes if scopes for endpoint and method is found
if (scopesForEndpoint.length > 0) {
allMatchedScopes.push(scopesForEndpoint);
}
});
if (allMatchedScopes.length > 0) {
if (allMatchedScopes.length > 1) {
this.authService.getLogger().warning("Interceptor - More than 1 matching scopes for endpoint found.");
}
// Returns scopes for first matching endpoint
return allMatchedScopes[0];
}

@@ -484,2 +548,4 @@ return null;

function __extends(d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);

@@ -670,2 +736,3 @@ function __() { this.constructor = d; }

}
/** @deprecated */
function __spread() {

@@ -676,2 +743,3 @@ for (var ar = [], i = 0; i < arguments.length; i++)

}
/** @deprecated */
function __spreadArrays() {

@@ -685,3 +753,7 @@ for (var s = 0, i = 0, il = arguments.length; i < il; i++)

}
;
function __spreadArray(to, from) {
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
to[j] = from[i];
return to;
}
function __await(v) {

@@ -751,14 +823,17 @@ return this instanceof __await ? (this.v = v, this) : new __await(v);

}
function __classPrivateFieldGet(receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
function __classPrivateFieldGet(receiver, state, kind, f) {
if (kind === "a" && !f)
throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
}
function __classPrivateFieldSet(receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
}
privateMap.set(receiver, value);
return value;
function __classPrivateFieldSet(receiver, state, value, kind, f) {
if (kind === "m")
throw new TypeError("Private method is not writable");
if (kind === "a" && !f)
throw new TypeError("Private accessor was defined without a setter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
throw new TypeError("Cannot write private member to an object whose class did not declare it");
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
}

@@ -789,4 +864,10 @@

this.authService.getLogger().verbosePii("MsalCustomNavigationClient - navigating to newUrl: " + newUrl);
this.router.navigateByUrl(newUrl, { replaceUrl: options.noHistory });
return [2 /*return*/, Promise.resolve(false)];
// Prevent hash clearing from causing an issue with Client-side navigation after redirect is handled
if (options.noHistory) {
window.location.replace(newUrl);
}
else {
this.router.navigateByUrl(newUrl, { replaceUrl: options.noHistory });
}
return [2 /*return*/, Promise.resolve(options.noHistory)];
});

@@ -793,0 +874,0 @@ });

@@ -1,2 +0,2 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/common"),require("@azure/msal-browser"),require("rxjs"),require("@angular/router"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("@azure/msal-angular",["exports","@angular/core","@angular/common","@azure/msal-browser","rxjs","@angular/router","rxjs/operators"],t):t(((e=e||self).azure=e.azure||{},e.azure["msal-angular"]={}),e.ng.core,e.ng.common,e["@azure/msal-browser"],e.rxjs,e.ng.router,e.rxjs.operators)}(this,(function(e,t,r,n,o,i,a){"use strict";var c=new t.InjectionToken("MSAL_INSTANCE"),s=new t.InjectionToken("MSAL_GUARD_CONFIG"),u=new t.InjectionToken("MSAL_INTERCEPTOR_CONFIG"),l="@azure/msal-angular",p="2.0.0-beta.5",g=function(){function e(e,t){this.instance=e,this.location=t;var r=this.location.path(!0).split("#").pop();r&&(this.redirectHash="#"+r),this.instance.initializeWrapperLibrary(n.WrapperSKU.Angular,p)}return e.prototype.acquireTokenPopup=function(e){return o.from(this.instance.acquireTokenPopup(e))},e.prototype.acquireTokenRedirect=function(e){return o.from(this.instance.acquireTokenRedirect(e))},e.prototype.acquireTokenSilent=function(e){return o.from(this.instance.acquireTokenSilent(e))},e.prototype.handleRedirectObservable=function(e){return o.from(this.instance.handleRedirectPromise(e||this.redirectHash))},e.prototype.loginPopup=function(e){return o.from(this.instance.loginPopup(e))},e.prototype.loginRedirect=function(e){return o.from(this.instance.loginRedirect(e))},e.prototype.logout=function(e){return o.from(this.instance.logout(e))},e.prototype.logoutRedirect=function(e){return o.from(this.instance.logoutRedirect(e))},e.prototype.logoutPopup=function(e){return o.from(this.instance.logoutPopup(e))},e.prototype.ssoSilent=function(e){return o.from(this.instance.ssoSilent(e))},e.prototype.getLogger=function(){return this.logger||(this.logger=this.instance.getLogger().clone(l,p)),this.logger},e.prototype.setLogger=function(e){this.logger=e.clone(l,p),this.instance.setLogger(e)},e}();g.decorators=[{type:t.Injectable}],g.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[c]}]},{type:r.Location}]};var h=function(e,t){var r=this;this.msalInstance=e,this.authService=t,this._msalSubject=new o.Subject,this.msalSubject$=this._msalSubject.asObservable(),this._inProgress=new o.BehaviorSubject(n.InteractionStatus.Startup),this.inProgress$=this._inProgress.asObservable(),this.msalInstance.addEventCallback((function(e){r._msalSubject.next(e);var t=n.EventMessageUtils.getInteractionStatusFromEvent(e);null!==t&&(r.authService.getLogger().verbose("BroadcastService - "+e.eventType+" results in setting inProgress to "+t),r._inProgress.next(t))}))};h.decorators=[{type:t.Injectable}],h.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[c]}]},{type:g}]};var v=function(){function e(e,t,r,n,o){this.msalGuardConfig=e,this.msalBroadcastService=t,this.authService=r,this.location=n,this.router=o,this.msalBroadcastService.inProgress$.subscribe()}return e.prototype.parseUrl=function(e){return this.router.parseUrl(e)},e.prototype.getDestinationUrl=function(e){this.authService.getLogger().verbose("Guard - getting destination url");var t=document.getElementsByTagName("base"),r=this.location.normalize(t.length?t[0].href:window.location.origin),n=this.location.prepareExternalUrl(e);return n.startsWith("#")?(this.authService.getLogger().verbose("Guard - destination by hash routing"),r+"/"+n):""+r+e},e.prototype.loginInteractively=function(e){var t=this,r="function"==typeof this.msalGuardConfig.authRequest?this.msalGuardConfig.authRequest(this.authService,e):Object.assign({},this.msalGuardConfig.authRequest);if(this.msalGuardConfig.interactionType===n.InteractionType.Popup)return this.authService.getLogger().verbose("Guard - logging in by popup"),this.authService.loginPopup(r).pipe(a.map((function(e){return t.authService.getLogger().verbose("Guard - login by popup successful, can activate, setting active account"),t.authService.instance.setActiveAccount(e.account),!0})));this.authService.getLogger().verbose("Guard - logging in by redirect");var o=this.getDestinationUrl(e.url);return this.authService.loginRedirect(Object.assign({redirectStartPage:o},r)).pipe(a.map((function(){return!1})))},e.prototype.activateHelper=function(e){var r=this;if(this.msalGuardConfig.interactionType!==n.InteractionType.Popup&&this.msalGuardConfig.interactionType!==n.InteractionType.Redirect)throw new n.BrowserConfigurationAuthError("invalid_interaction_type","Invalid interaction type provided to MSAL Guard. InteractionType.Popup or InteractionType.Redirect must be provided in the MsalGuardConfiguration");return this.authService.getLogger().verbose("MSAL Guard activated"),n.UrlString.hashContainsKnownProperties(window.location.hash)&&n.BrowserUtils.isInIframe()?(this.authService.getLogger().warning("Guard - redirectUri set to page with MSAL Guard. It is recommended to not set redirectUri to a page that requires authentication."),o.of(!1)):(this.msalGuardConfig.loginFailedRoute&&(this.loginFailedRoute=this.parseUrl(this.msalGuardConfig.loginFailedRoute)),this.authService.handleRedirectObservable().pipe(a.concatMap((function(){return r.authService.instance.getAllAccounts().length?(r.authService.getLogger().verbose("Guard - at least 1 account exists, can activate or load"),e&&e.url.indexOf("#")>-1&&e.url.indexOf("code=")>-1?(r.authService.getLogger().info("Guard - Hash contains known code response, stopping navigation."),o.of(!1)):o.of(!0)):e?(r.authService.getLogger().verbose("Guard - no accounts retrieved, log in required to activate"),r.loginInteractively(e)):(r.authService.getLogger().verbose("Guard - no accounts retrieved, no state, cannot load"),o.of(!1))})),a.catchError((function(){return r.authService.getLogger().verbose("Guard - error while logging in, unable to activate"),r.loginFailedRoute&&parseInt(t.VERSION.major,10)>9&&e?(r.authService.getLogger().verbose("Guard - loginFailedRoute set, redirecting"),o.of(r.loginFailedRoute)):o.of(!1)}))))},e.prototype.canActivate=function(e,t){return this.authService.getLogger().verbose("Guard - canActivate"),this.activateHelper(t)},e.prototype.canActivateChild=function(e,t){return this.authService.getLogger().verbose("Guard - canActivateChild"),this.activateHelper(t)},e.prototype.canLoad=function(){return this.authService.getLogger().verbose("Guard - canLoad"),this.activateHelper()},e}();v.decorators=[{type:t.Injectable}],v.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[s]}]},{type:h},{type:g},{type:r.Location},{type:i.Router}]};var f=function(){function e(e,t,r){this.msalInterceptorConfig=e,this.authService=t,this.location=r}return e.prototype.intercept=function(e,t){var r=this;if(this.msalInterceptorConfig.interactionType!==n.InteractionType.Popup&&this.msalInterceptorConfig.interactionType!==n.InteractionType.Redirect)throw new n.BrowserConfigurationAuthError("invalid_interaction_type","Invalid interaction type provided to MSAL Interceptor. InteractionType.Popup, InteractionType.Redirect must be provided in the msalInterceptorConfiguration");this.authService.getLogger().verbose("MSAL Interceptor activated");var i,c=this.getScopesForEndpoint(e.url);if(!c||0===c.length)return this.authService.getLogger().verbose("Interceptor - no scopes for endpoint"),t.handle(e);this.authService.instance.getActiveAccount()?(this.authService.getLogger().verbose("Interceptor - active account selected"),i=this.authService.instance.getActiveAccount()):(this.authService.getLogger().verbose("Interceptor - no active account, fallback to first account"),i=this.authService.instance.getAllAccounts()[0]);var s="function"==typeof this.msalInterceptorConfig.authRequest?this.msalInterceptorConfig.authRequest(this.authService,e,{account:i}):Object.assign(Object.assign({},this.msalInterceptorConfig.authRequest),{account:i});return this.authService.getLogger().info("Interceptor - "+c.length+" scopes found for endpoint"),this.authService.getLogger().infoPii("Interceptor - ["+c+"] scopes found for "+e.url),this.authService.acquireTokenSilent(Object.assign(Object.assign({},s),{scopes:c,account:i})).pipe(a.catchError((function(){return r.authService.getLogger().error("Interceptor - acquireTokenSilent rejected with error. Invoking interaction to resolve."),r.acquireTokenInteractively(s,c)})),a.switchMap((function(e){return e.accessToken?o.of(e):(r.authService.getLogger().error("Interceptor - acquireTokenSilent resolved with null access token. Known issue with B2C tenants, invoking interaction to resolve."),r.acquireTokenInteractively(s,c))})),a.switchMap((function(n){r.authService.getLogger().verbose("Interceptor - setting authorization headers");var o=e.headers.set("Authorization","Bearer "+n.accessToken),i=e.clone({headers:o});return t.handle(i)})))},e.prototype.acquireTokenInteractively=function(e,t){if(this.msalInterceptorConfig.interactionType===n.InteractionType.Popup)return this.authService.getLogger().verbose("Interceptor - error acquiring token silently, acquiring by popup"),this.authService.acquireTokenPopup(Object.assign(Object.assign({},e),{scopes:t}));this.authService.getLogger().verbose("Interceptor - error acquiring token silently, acquiring by redirect");var r=window.location.href;return this.authService.acquireTokenRedirect(Object.assign(Object.assign({},e),{scopes:t,redirectStartPage:r})),o.EMPTY},e.prototype.getScopesForEndpoint=function(e){var t=this;this.authService.getLogger().verbose("Interceptor - getting scopes for endpoint");var r=this.location.normalize(e),o=Array.from(this.msalInterceptorConfig.protectedResourceMap.keys()).filter((function(e){var o=t.location.normalize(e),i=new n.UrlString(e).getUrlComponents(),a=i.QueryString?i.AbsolutePath+"?"+i.QueryString:t.location.normalize(i.AbsolutePath);return""===a||"/*"===a?n.StringUtils.matchPattern(o,r):n.StringUtils.matchPattern(o,r)||n.StringUtils.matchPattern(a,r)}));if(o.length>0){var i=o[0];if(i)return this.msalInterceptorConfig.protectedResourceMap.get(i)}return null},e}();f.decorators=[{type:t.Injectable}],f.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[u]}]},{type:g},{type:r.Location}]};var d=function(){function e(e){this.authService=e}return e.prototype.ngOnInit=function(){this.authService.getLogger().verbose("MsalRedirectComponent activated"),this.authService.handleRedirectObservable().subscribe()},e}();d.decorators=[{type:t.Component,args:[{selector:"app-redirect",template:""}]}],d.ctorParameters=function(){return[{type:g}]};var y=function(){function e(){}return e.forRoot=function(t,r,n){return{ngModule:e,providers:[{provide:c,useValue:t},{provide:s,useValue:r},{provide:u,useValue:n},g]}},e}();y.decorators=[{type:t.NgModule,args:[{declarations:[d],imports:[r.CommonModule],providers:[v,h]}]}];
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/common"),require("@azure/msal-browser"),require("rxjs"),require("@angular/router"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("@azure/msal-angular",["exports","@angular/core","@angular/common","@azure/msal-browser","rxjs","@angular/router","rxjs/operators"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).azure=e.azure||{},e.azure["msal-angular"]={}),e.ng.core,e.ng.common,e["@azure/msal-browser"],e.rxjs,e.ng.router,e.rxjs.operators)}(this,(function(e,t,r,o,n,i,a){"use strict";var c=new t.InjectionToken("MSAL_INSTANCE"),s=new t.InjectionToken("MSAL_GUARD_CONFIG"),u=new t.InjectionToken("MSAL_INTERCEPTOR_CONFIG"),l="@azure/msal-angular",p="2.0.0-beta.6",g=function(){function e(e,t){this.instance=e,this.location=t;var r=this.location.path(!0).split("#").pop();r&&(this.redirectHash="#"+r),this.instance.initializeWrapperLibrary(o.WrapperSKU.Angular,p)}return e.prototype.acquireTokenPopup=function(e){return n.from(this.instance.acquireTokenPopup(e))},e.prototype.acquireTokenRedirect=function(e){return n.from(this.instance.acquireTokenRedirect(e))},e.prototype.acquireTokenSilent=function(e){return n.from(this.instance.acquireTokenSilent(e))},e.prototype.handleRedirectObservable=function(e){return n.from(this.instance.handleRedirectPromise(e||this.redirectHash))},e.prototype.loginPopup=function(e){return n.from(this.instance.loginPopup(e))},e.prototype.loginRedirect=function(e){return n.from(this.instance.loginRedirect(e))},e.prototype.logout=function(e){return n.from(this.instance.logout(e))},e.prototype.logoutRedirect=function(e){return n.from(this.instance.logoutRedirect(e))},e.prototype.logoutPopup=function(e){return n.from(this.instance.logoutPopup(e))},e.prototype.ssoSilent=function(e){return n.from(this.instance.ssoSilent(e))},e.prototype.getLogger=function(){return this.logger||(this.logger=this.instance.getLogger().clone(l,p)),this.logger},e.prototype.setLogger=function(e){this.logger=e.clone(l,p),this.instance.setLogger(e)},e}();g.decorators=[{type:t.Injectable}],g.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[c]}]},{type:r.Location}]};var h=function(e,t){var r=this;this.msalInstance=e,this.authService=t,this._msalSubject=new n.Subject,this.msalSubject$=this._msalSubject.asObservable(),this._inProgress=new n.BehaviorSubject(o.InteractionStatus.Startup),this.inProgress$=this._inProgress.asObservable(),this.msalInstance.addEventCallback((function(e){r._msalSubject.next(e);var t=o.EventMessageUtils.getInteractionStatusFromEvent(e);null!==t&&(r.authService.getLogger().verbose("BroadcastService - "+e.eventType+" results in setting inProgress to "+t),r._inProgress.next(t))}))};h.decorators=[{type:t.Injectable}],h.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[c]}]},{type:g}]};var v=function(){function e(e,t,r,o,n){this.msalGuardConfig=e,this.msalBroadcastService=t,this.authService=r,this.location=o,this.router=n,this.msalBroadcastService.inProgress$.subscribe()}return e.prototype.parseUrl=function(e){return this.router.parseUrl(e)},e.prototype.getDestinationUrl=function(e){this.authService.getLogger().verbose("Guard - getting destination url");var t=document.getElementsByTagName("base"),r=this.location.normalize(t.length?t[0].href:window.location.origin),o=this.location.prepareExternalUrl(e);return o.startsWith("#")?(this.authService.getLogger().verbose("Guard - destination by hash routing"),r+"/"+o):""+r+e},e.prototype.loginInteractively=function(e){var t=this,r="function"==typeof this.msalGuardConfig.authRequest?this.msalGuardConfig.authRequest(this.authService,e):Object.assign({},this.msalGuardConfig.authRequest);if(this.msalGuardConfig.interactionType===o.InteractionType.Popup)return this.authService.getLogger().verbose("Guard - logging in by popup"),this.authService.loginPopup(r).pipe(a.map((function(e){return t.authService.getLogger().verbose("Guard - login by popup successful, can activate, setting active account"),t.authService.instance.setActiveAccount(e.account),!0})));this.authService.getLogger().verbose("Guard - logging in by redirect");var n=this.getDestinationUrl(e.url);return this.authService.loginRedirect(Object.assign({redirectStartPage:n},r)).pipe(a.map((function(){return!1})))},e.prototype.activateHelper=function(e){var r=this;if(this.msalGuardConfig.interactionType!==o.InteractionType.Popup&&this.msalGuardConfig.interactionType!==o.InteractionType.Redirect)throw new o.BrowserConfigurationAuthError("invalid_interaction_type","Invalid interaction type provided to MSAL Guard. InteractionType.Popup or InteractionType.Redirect must be provided in the MsalGuardConfiguration");if(this.authService.getLogger().verbose("MSAL Guard activated"),o.UrlString.hashContainsKnownProperties(window.location.hash)&&o.BrowserUtils.isInIframe())return this.authService.getLogger().warning("Guard - redirectUri set to page with MSAL Guard. It is recommended to not set redirectUri to a page that requires authentication."),n.of(!1);this.msalGuardConfig.loginFailedRoute&&(this.loginFailedRoute=this.parseUrl(this.msalGuardConfig.loginFailedRoute));var i=this.location.path(!0);return this.authService.handleRedirectObservable().pipe(a.concatMap((function(){return r.authService.instance.getAllAccounts().length?(r.authService.getLogger().verbose("Guard - at least 1 account exists, can activate or load"),e&&i.indexOf("code=")>-1?(r.authService.getLogger().info("Guard - Hash contains known code response, stopping navigation."),i.indexOf("#")>-1?n.of(r.parseUrl(r.location.path())):n.of(r.parseUrl(""))):n.of(!0)):e?(r.authService.getLogger().verbose("Guard - no accounts retrieved, log in required to activate"),r.loginInteractively(e)):(r.authService.getLogger().verbose("Guard - no accounts retrieved, no state, cannot load"),n.of(!1))})),a.catchError((function(o){return r.authService.getLogger().error("Guard - error while logging in, unable to activate"),r.authService.getLogger().errorPii("Guard - error: "+o.message),r.loginFailedRoute&&parseInt(t.VERSION.major,10)>9&&e?(r.authService.getLogger().verbose("Guard - loginFailedRoute set, redirecting"),n.of(r.loginFailedRoute)):n.of(!1)})))},e.prototype.canActivate=function(e,t){return this.authService.getLogger().verbose("Guard - canActivate"),this.activateHelper(t)},e.prototype.canActivateChild=function(e,t){return this.authService.getLogger().verbose("Guard - canActivateChild"),this.activateHelper(t)},e.prototype.canLoad=function(){return this.authService.getLogger().verbose("Guard - canLoad"),this.activateHelper()},e}();v.decorators=[{type:t.Injectable}],v.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[s]}]},{type:h},{type:g},{type:r.Location},{type:i.Router}]};var f=function(){function e(e,t,r){this.msalInterceptorConfig=e,this.authService=t,this.location=r}return e.prototype.intercept=function(e,t){var r=this;if(this.msalInterceptorConfig.interactionType!==o.InteractionType.Popup&&this.msalInterceptorConfig.interactionType!==o.InteractionType.Redirect)throw new o.BrowserConfigurationAuthError("invalid_interaction_type","Invalid interaction type provided to MSAL Interceptor. InteractionType.Popup, InteractionType.Redirect must be provided in the msalInterceptorConfiguration");this.authService.getLogger().verbose("MSAL Interceptor activated");var i,c=this.getScopesForEndpoint(e.url,e.method);if(!c||0===c.length)return this.authService.getLogger().verbose("Interceptor - no scopes for endpoint"),t.handle(e);this.authService.instance.getActiveAccount()?(this.authService.getLogger().verbose("Interceptor - active account selected"),i=this.authService.instance.getActiveAccount()):(this.authService.getLogger().verbose("Interceptor - no active account, fallback to first account"),i=this.authService.instance.getAllAccounts()[0]);var s="function"==typeof this.msalInterceptorConfig.authRequest?this.msalInterceptorConfig.authRequest(this.authService,e,{account:i}):Object.assign(Object.assign({},this.msalInterceptorConfig.authRequest),{account:i});return this.authService.getLogger().info("Interceptor - "+c.length+" scopes found for endpoint"),this.authService.getLogger().infoPii("Interceptor - ["+c+"] scopes found for "+e.url),this.authService.acquireTokenSilent(Object.assign(Object.assign({},s),{scopes:c,account:i})).pipe(a.catchError((function(){return r.authService.getLogger().error("Interceptor - acquireTokenSilent rejected with error. Invoking interaction to resolve."),r.acquireTokenInteractively(s,c)})),a.switchMap((function(e){return e.accessToken?n.of(e):(r.authService.getLogger().error("Interceptor - acquireTokenSilent resolved with null access token. Known issue with B2C tenants, invoking interaction to resolve."),r.acquireTokenInteractively(s,c))})),a.switchMap((function(o){r.authService.getLogger().verbose("Interceptor - setting authorization headers");var n=e.headers.set("Authorization","Bearer "+o.accessToken),i=e.clone({headers:n});return t.handle(i)})))},e.prototype.acquireTokenInteractively=function(e,t){if(this.msalInterceptorConfig.interactionType===o.InteractionType.Popup)return this.authService.getLogger().verbose("Interceptor - error acquiring token silently, acquiring by popup"),this.authService.acquireTokenPopup(Object.assign(Object.assign({},e),{scopes:t}));this.authService.getLogger().verbose("Interceptor - error acquiring token silently, acquiring by redirect");var r=window.location.href;return this.authService.acquireTokenRedirect(Object.assign(Object.assign({},e),{scopes:t,redirectStartPage:r})),n.EMPTY},e.prototype.getScopesForEndpoint=function(e,t){this.authService.getLogger().verbose("Interceptor - getting scopes for endpoint");var r=this.location.normalize(e),o=Array.from(this.msalInterceptorConfig.protectedResourceMap.keys()),n=this.matchResourcesToEndpoint(o,r);return n.length>0?this.matchScopesToEndpoint(this.msalInterceptorConfig.protectedResourceMap,n,t):null},e.prototype.matchResourcesToEndpoint=function(e,t){var r=this;return e.filter((function(e){var n=r.location.normalize(e),i=new o.UrlString(e).getUrlComponents(),a=i.QueryString?i.AbsolutePath+"?"+i.QueryString:r.location.normalize(i.AbsolutePath);return""===a||"/*"===a?o.StringUtils.matchPattern(n,t):o.StringUtils.matchPattern(n,t)||o.StringUtils.matchPattern(a,t)}))},e.prototype.matchScopesToEndpoint=function(e,t,r){var o=[];return t.forEach((function(t){var n=[],i=e.get(t);null!==i?(i.forEach((function(e){if("string"==typeof e)n.push(e);else{var t=r.toLowerCase();e.httpMethod.toLowerCase()===t&&e.scopes.forEach((function(e){n.push(e)}))}})),n.length>0&&o.push(n)):o.push(null)})),o.length>0?(o.length>1&&this.authService.getLogger().warning("Interceptor - More than 1 matching scopes for endpoint found."),o[0]):null},e}();f.decorators=[{type:t.Injectable}],f.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[u]}]},{type:g},{type:r.Location}]};var d=function(){function e(e){this.authService=e}return e.prototype.ngOnInit=function(){this.authService.getLogger().verbose("MsalRedirectComponent activated"),this.authService.handleRedirectObservable().subscribe()},e}();d.decorators=[{type:t.Component,args:[{selector:"app-redirect",template:""}]}],d.ctorParameters=function(){return[{type:g}]};var y=function(){function e(){}return e.forRoot=function(t,r,o){return{ngModule:e,providers:[{provide:c,useValue:t},{provide:s,useValue:r},{provide:u,useValue:o},g]}},e}();y.decorators=[{type:t.NgModule,args:[{declarations:[d],imports:[r.CommonModule],providers:[v,h]}]}];
/*! *****************************************************************************

@@ -16,3 +16,3 @@ Copyright (c) Microsoft Corporation.

***************************************************************************** */
var b=function(e,t){return(b=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(e,t)};function S(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{s(n.next(e))}catch(e){i(e)}}function c(e){try{s(n.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,c)}s((n=n.apply(e,t||[])).next())}))}function m(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(i){return function(c){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,c])}}}Object.create;Object.create;var I=function(e){function t(t,r,n){var o=e.call(this)||this;return o.authService=t,o.router=r,o.location=n,o}return function(e,t){function r(){this.constructor=e}b(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}(t,e),t.prototype.navigateInternal=function(e,t){return S(this,void 0,void 0,(function(){var r,o;return m(this,(function(i){return this.authService.getLogger().verbose("MsalCustomNavigationClient called"),r=new n.UrlString(e).getUrlComponents(),o=r.QueryString?r.AbsolutePath+"?"+r.QueryString:this.location.normalize(r.AbsolutePath),this.authService.getLogger().verbosePii("MsalCustomNavigationClient - navigating to newUrl: "+o),this.router.navigateByUrl(o,{replaceUrl:t.noHistory}),[2,Promise.resolve(!1)]}))}))},t}(n.NavigationClient);I.decorators=[{type:t.Injectable}],I.ctorParameters=function(){return[{type:g},{type:i.Router},{type:r.Location}]},e.MSAL_GUARD_CONFIG=s,e.MSAL_INSTANCE=c,e.MSAL_INTERCEPTOR_CONFIG=u,e.MsalBroadcastService=h,e.MsalCustomNavigationClient=I,e.MsalGuard=v,e.MsalInterceptor=f,e.MsalModule=y,e.MsalRedirectComponent=d,e.MsalService=g,Object.defineProperty(e,"__esModule",{value:!0})}));
var S=function(e,t){return(S=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(e,t)};function b(e,t,r,o){return new(r||(r=Promise))((function(n,i){function a(e){try{s(o.next(e))}catch(e){i(e)}}function c(e){try{s(o.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,c)}s((o=o.apply(e,t||[])).next())}))}function m(e,t){var r,o,n,i,a={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(i){return function(c){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,o&&(n=2&i[0]?o.return:i[0]?o.throw||((n=o.return)&&n.call(o),0):o.next)&&!(n=n.call(o,i[1])).done)return n;switch(o=0,n&&(i=[2&i[0],n.value]),i[0]){case 0:case 1:n=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,o=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(n=a.trys,(n=n.length>0&&n[n.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!n||i[1]>n[0]&&i[1]<n[3])){a.label=i[1];break}if(6===i[0]&&a.label<n[1]){a.label=n[1],n=i;break}if(n&&a.label<n[2]){a.label=n[2],a.ops.push(i);break}n[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],o=0}finally{r=n=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,c])}}}Object.create;Object.create;var I=function(e){function t(t,r,o){var n=e.call(this)||this;return n.authService=t,n.router=r,n.location=o,n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}S(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}(t,e),t.prototype.navigateInternal=function(e,t){return b(this,void 0,void 0,(function(){var r,n;return m(this,(function(i){return this.authService.getLogger().verbose("MsalCustomNavigationClient called"),r=new o.UrlString(e).getUrlComponents(),n=r.QueryString?r.AbsolutePath+"?"+r.QueryString:this.location.normalize(r.AbsolutePath),this.authService.getLogger().verbosePii("MsalCustomNavigationClient - navigating to newUrl: "+n),t.noHistory?window.location.replace(n):this.router.navigateByUrl(n,{replaceUrl:t.noHistory}),[2,Promise.resolve(t.noHistory)]}))}))},t}(o.NavigationClient);I.decorators=[{type:t.Injectable}],I.ctorParameters=function(){return[{type:g},{type:i.Router},{type:r.Location}]},e.MSAL_GUARD_CONFIG=s,e.MSAL_INSTANCE=c,e.MSAL_INTERCEPTOR_CONFIG=u,e.MsalBroadcastService=h,e.MsalCustomNavigationClient=I,e.MsalGuard=v,e.MsalInterceptor=f,e.MsalModule=y,e.MsalRedirectComponent=d,e.MsalService=g,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=azure-msal-angular.umd.min.js.map

@@ -5,1 +5,2 @@ import { InjectionToken } from "@angular/core";

export declare const MSAL_INTERCEPTOR_CONFIG: InjectionToken<string>;
//# sourceMappingURL=constants.d.ts.map

@@ -5,2 +5,2 @@ /**

export * from './public-api';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp1cmUtbXNhbC1hbmd1bGFyLmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL2phbnV0dGVyL0NvZGUvbWljcm9zb2Z0LWF1dGhlbnRpY2F0aW9uLWxpYnJhcnktZm9yLWpzL2xpYi9tc2FsLWFuZ3VsYXIvc3JjLyIsInNvdXJjZXMiOlsiYXp1cmUtbXNhbC1hbmd1bGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp1cmUtbXNhbC1hbmd1bGFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F6dXJlLW1zYWwtYW5ndWxhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19

@@ -9,2 +9,2 @@ /*

export const MSAL_INTERCEPTOR_CONFIG = new InjectionToken("MSAL_INTERCEPTOR_CONFIG");
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL2phbnV0dGVyL0NvZGUvbWljcm9zb2Z0LWF1dGhlbnRpY2F0aW9uLWxpYnJhcnktZm9yLWpzL2xpYi9tc2FsLWFuZ3VsYXIvc3JjLyIsInNvdXJjZXMiOlsiY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksY0FBYyxDQUFTLGVBQWUsQ0FBQyxDQUFDO0FBRXpFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUFTLG1CQUFtQixDQUFDLENBQUM7QUFFakYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxjQUFjLENBQVMseUJBQXlCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IE1TQUxfSU5TVEFOQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPihcIk1TQUxfSU5TVEFOQ0VcIik7XHJcblxyXG5leHBvcnQgY29uc3QgTVNBTF9HVUFSRF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPihcIk1TQUxfR1VBUkRfQ09ORklHXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IE1TQUxfSU5URVJDRVBUT1JfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oXCJNU0FMX0lOVEVSQ0VQVE9SX0NPTkZJR1wiKTtcclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBUyxlQUFlLENBQUMsQ0FBQztBQUV6RSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBUyxtQkFBbUIsQ0FBQyxDQUFDO0FBRWpGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUFTLHlCQUF5QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBNU0FMX0lOU1RBTkNFID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oXCJNU0FMX0lOU1RBTkNFXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IE1TQUxfR1VBUkRfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oXCJNU0FMX0dVQVJEX0NPTkZJR1wiKTtcclxuXHJcbmV4cG9ydCBjb25zdCBNU0FMX0lOVEVSQ0VQVE9SX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KFwiTVNBTF9JTlRFUkNFUFRPUl9DT05GSUdcIik7XHJcbiJdfQ==

@@ -5,2 +5,3 @@ /*

*/
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSU1zYWxTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL2phbnV0dGVyL0NvZGUvbWljcm9zb2Z0LWF1dGhlbnRpY2F0aW9uLWxpYnJhcnktZm9yLWpzL2xpYi9tc2FsLWFuZ3VsYXIvc3JjLyIsInNvdXJjZXMiOlsiSU1zYWxTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHtcclxuICAgIEVuZFNlc3Npb25SZXF1ZXN0LFxyXG4gICAgQXV0aG9yaXphdGlvblVybFJlcXVlc3QsXHJcbiAgICBBdXRoZW50aWNhdGlvblJlc3VsdCxcclxuICAgIFBvcHVwUmVxdWVzdCxcclxuICAgIFJlZGlyZWN0UmVxdWVzdCxcclxuICAgIFNpbGVudFJlcXVlc3QsXHJcbiAgICBMb2dnZXJcclxufSBmcm9tIFwiQGF6dXJlL21zYWwtYnJvd3NlclwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU1zYWxTZXJ2aWNlIHtcclxuICAgIGFjcXVpcmVUb2tlblBvcHVwKHJlcXVlc3Q6IFBvcHVwUmVxdWVzdCk6IE9ic2VydmFibGU8QXV0aGVudGljYXRpb25SZXN1bHQ+O1xyXG4gICAgYWNxdWlyZVRva2VuUmVkaXJlY3QocmVxdWVzdDogUmVkaXJlY3RSZXF1ZXN0KTogT2JzZXJ2YWJsZTx2b2lkPjtcclxuICAgIGFjcXVpcmVUb2tlblNpbGVudChzaWxlbnRSZXF1ZXN0OiBTaWxlbnRSZXF1ZXN0KTogT2JzZXJ2YWJsZTxBdXRoZW50aWNhdGlvblJlc3VsdD47XHJcbiAgICBoYW5kbGVSZWRpcmVjdE9ic2VydmFibGUoKTogT2JzZXJ2YWJsZTxBdXRoZW50aWNhdGlvblJlc3VsdCB8IG51bGw+O1xyXG4gICAgbG9naW5Qb3B1cChyZXF1ZXN0PzogUG9wdXBSZXF1ZXN0KTogT2JzZXJ2YWJsZTxBdXRoZW50aWNhdGlvblJlc3VsdD47XHJcbiAgICBsb2dpblJlZGlyZWN0KHJlcXVlc3Q/OiBSZWRpcmVjdFJlcXVlc3QpOiBPYnNlcnZhYmxlPHZvaWQ+O1xyXG4gICAgbG9nb3V0KGxvZ291dFJlcXVlc3Q/OiBFbmRTZXNzaW9uUmVxdWVzdCk6IE9ic2VydmFibGU8dm9pZD47XHJcbiAgICBzc29TaWxlbnQocmVxdWVzdDogQXV0aG9yaXphdGlvblVybFJlcXVlc3QpOiBPYnNlcnZhYmxlPEF1dGhlbnRpY2F0aW9uUmVzdWx0PjtcclxuICAgIGdldExvZ2dlcigpOiBMb2dnZXI7XHJcbiAgICBzZXRMb2dnZXIobG9nZ2VyOiBMb2dnZXIpOiB2b2lkO1xyXG59XHJcbiJdfQ==
export {};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSU1zYWxTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0lNc2FsU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7XHJcbiAgICBFbmRTZXNzaW9uUmVxdWVzdCxcclxuICAgIEF1dGhvcml6YXRpb25VcmxSZXF1ZXN0LFxyXG4gICAgQXV0aGVudGljYXRpb25SZXN1bHQsXHJcbiAgICBQb3B1cFJlcXVlc3QsXHJcbiAgICBSZWRpcmVjdFJlcXVlc3QsXHJcbiAgICBTaWxlbnRSZXF1ZXN0LFxyXG4gICAgTG9nZ2VyXHJcbn0gZnJvbSBcIkBhenVyZS9tc2FsLWJyb3dzZXJcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElNc2FsU2VydmljZSB7XHJcbiAgICBhY3F1aXJlVG9rZW5Qb3B1cChyZXF1ZXN0OiBQb3B1cFJlcXVlc3QpOiBPYnNlcnZhYmxlPEF1dGhlbnRpY2F0aW9uUmVzdWx0PjtcclxuICAgIGFjcXVpcmVUb2tlblJlZGlyZWN0KHJlcXVlc3Q6IFJlZGlyZWN0UmVxdWVzdCk6IE9ic2VydmFibGU8dm9pZD47XHJcbiAgICBhY3F1aXJlVG9rZW5TaWxlbnQoc2lsZW50UmVxdWVzdDogU2lsZW50UmVxdWVzdCk6IE9ic2VydmFibGU8QXV0aGVudGljYXRpb25SZXN1bHQ+O1xyXG4gICAgaGFuZGxlUmVkaXJlY3RPYnNlcnZhYmxlKCk6IE9ic2VydmFibGU8QXV0aGVudGljYXRpb25SZXN1bHQgfCBudWxsPjtcclxuICAgIGxvZ2luUG9wdXAocmVxdWVzdD86IFBvcHVwUmVxdWVzdCk6IE9ic2VydmFibGU8QXV0aGVudGljYXRpb25SZXN1bHQ+O1xyXG4gICAgbG9naW5SZWRpcmVjdChyZXF1ZXN0PzogUmVkaXJlY3RSZXF1ZXN0KTogT2JzZXJ2YWJsZTx2b2lkPjtcclxuICAgIGxvZ291dChsb2dvdXRSZXF1ZXN0PzogRW5kU2Vzc2lvblJlcXVlc3QpOiBPYnNlcnZhYmxlPHZvaWQ+O1xyXG4gICAgc3NvU2lsZW50KHJlcXVlc3Q6IEF1dGhvcml6YXRpb25VcmxSZXF1ZXN0KTogT2JzZXJ2YWJsZTxBdXRoZW50aWNhdGlvblJlc3VsdD47XHJcbiAgICBnZXRMb2dnZXIoKTogTG9nZ2VyO1xyXG4gICAgc2V0TG9nZ2VyKGxvZ2dlcjogTG9nZ2VyKTogdm9pZDtcclxufVxyXG4iXX0=

@@ -36,2 +36,2 @@ /*

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5icm9hZGNhc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9qYW51dHRlci9Db2RlL21pY3Jvc29mdC1hdXRoZW50aWNhdGlvbi1saWJyYXJ5LWZvci1qcy9saWIvbXNhbC1hbmd1bGFyL3NyYy8iLCJzb3VyY2VzIjpbIm1zYWwuYnJvYWRjYXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQWdCLGlCQUFpQixFQUE0QixpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc3QyxNQUFNLE9BQU8sb0JBQW9CO0lBTTdCLFlBQ21DLFlBQXNDLEVBQzdELFdBQXdCO1FBREQsaUJBQVksR0FBWixZQUFZLENBQTBCO1FBQzdELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRWhDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQWdCLENBQUM7UUFDaEQsSUFBSSxDQUFDLFlBQVksR0FBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXRELG9HQUFvRztRQUNwRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksZUFBZSxDQUFvQixpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQXFCLEVBQUUsRUFBRTtZQUN6RCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNoQyxNQUFNLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyw2QkFBNkIsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN4RSxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDLHNCQUFzQixPQUFPLENBQUMsU0FBUyxxQ0FBcUMsTUFBTSxFQUFFLENBQUMsQ0FBQztnQkFDM0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDakM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OztZQTFCSixVQUFVOzs7NENBUUYsTUFBTSxTQUFDLGFBQWE7WUFWcEIsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgTVNBTF9JTlNUQU5DRSB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBFdmVudE1lc3NhZ2UsIEV2ZW50TWVzc2FnZVV0aWxzLCBJUHVibGljQ2xpZW50QXBwbGljYXRpb24sIEludGVyYWN0aW9uU3RhdHVzIH0gZnJvbSBcIkBhenVyZS9tc2FsLWJyb3dzZXJcIjtcclxuaW1wb3J0IHsgTXNhbFNlcnZpY2UgfSBmcm9tIFwiLi9tc2FsLnNlcnZpY2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE1zYWxCcm9hZGNhc3RTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgX21zYWxTdWJqZWN0OiBTdWJqZWN0PEV2ZW50TWVzc2FnZT47XHJcbiAgICBwdWJsaWMgbXNhbFN1YmplY3QkOiBPYnNlcnZhYmxlPEV2ZW50TWVzc2FnZT47XHJcbiAgICBwcml2YXRlIF9pblByb2dyZXNzOiBCZWhhdmlvclN1YmplY3Q8SW50ZXJhY3Rpb25TdGF0dXM+O1xyXG4gICAgcHVibGljIGluUHJvZ3Jlc3MkOiBPYnNlcnZhYmxlPEludGVyYWN0aW9uU3RhdHVzPjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KE1TQUxfSU5TVEFOQ0UpIHByaXZhdGUgbXNhbEluc3RhbmNlOiBJUHVibGljQ2xpZW50QXBwbGljYXRpb24sXHJcbiAgICAgICAgcHJpdmF0ZSBhdXRoU2VydmljZTogTXNhbFNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuX21zYWxTdWJqZWN0ID0gbmV3IFN1YmplY3Q8RXZlbnRNZXNzYWdlPigpO1xyXG4gICAgICAgIHRoaXMubXNhbFN1YmplY3QkICA9IHRoaXMuX21zYWxTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAgICAgICAvLyBJblByb2dyZXNzIGFzIEJlaGF2aW9yU3ViamVjdCBzbyBtb3N0IHJlY2VudCBpblByb2dyZXNzIHN0YXRlIHdpbGwgYmUgYXZhaWxhYmxlIHVwb24gc3Vic2NyaXB0aW9uXHJcbiAgICAgICAgdGhpcy5faW5Qcm9ncmVzcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SW50ZXJhY3Rpb25TdGF0dXM+KEludGVyYWN0aW9uU3RhdHVzLlN0YXJ0dXApO1xyXG4gICAgICAgIHRoaXMuaW5Qcm9ncmVzcyQgPSB0aGlzLl9pblByb2dyZXNzLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAgICAgICB0aGlzLm1zYWxJbnN0YW5jZS5hZGRFdmVudENhbGxiYWNrKChtZXNzYWdlOiBFdmVudE1lc3NhZ2UpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fbXNhbFN1YmplY3QubmV4dChtZXNzYWdlKTtcclxuICAgICAgICAgICAgY29uc3Qgc3RhdHVzID0gRXZlbnRNZXNzYWdlVXRpbHMuZ2V0SW50ZXJhY3Rpb25TdGF0dXNGcm9tRXZlbnQobWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGlmIChzdGF0dXMgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0TG9nZ2VyKCkudmVyYm9zZShgQnJvYWRjYXN0U2VydmljZSAtICR7bWVzc2FnZS5ldmVudFR5cGV9IHJlc3VsdHMgaW4gc2V0dGluZyBpblByb2dyZXNzIHRvICR7c3RhdHVzfWApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faW5Qcm9ncmVzcy5uZXh0KHN0YXR1cyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5icm9hZGNhc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tc2FsLmJyb2FkY2FzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFnQixpQkFBaUIsRUFBNEIsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0MsTUFBTSxPQUFPLG9CQUFvQjtJQU03QixZQUNtQyxZQUFzQyxFQUM3RCxXQUF3QjtRQURELGlCQUFZLEdBQVosWUFBWSxDQUEwQjtRQUM3RCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUVoQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksT0FBTyxFQUFnQixDQUFDO1FBQ2hELElBQUksQ0FBQyxZQUFZLEdBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV0RCxvR0FBb0c7UUFDcEcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBb0IsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckYsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRW5ELElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFxQixFQUFFLEVBQUU7WUFDekQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDaEMsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsNkJBQTZCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDeEUsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO2dCQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsT0FBTyxDQUFDLFNBQVMscUNBQXFDLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQzNILElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2pDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzs7WUExQkosVUFBVTs7OzRDQVFGLE1BQU0sU0FBQyxhQUFhO1lBVnBCLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IE1TQUxfSU5TVEFOQ0UgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgRXZlbnRNZXNzYWdlLCBFdmVudE1lc3NhZ2VVdGlscywgSVB1YmxpY0NsaWVudEFwcGxpY2F0aW9uLCBJbnRlcmFjdGlvblN0YXR1cyB9IGZyb20gXCJAYXp1cmUvbXNhbC1icm93c2VyXCI7XHJcbmltcG9ydCB7IE1zYWxTZXJ2aWNlIH0gZnJvbSBcIi4vbXNhbC5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBNc2FsQnJvYWRjYXN0U2VydmljZSB7XHJcbiAgICBwcml2YXRlIF9tc2FsU3ViamVjdDogU3ViamVjdDxFdmVudE1lc3NhZ2U+O1xyXG4gICAgcHVibGljIG1zYWxTdWJqZWN0JDogT2JzZXJ2YWJsZTxFdmVudE1lc3NhZ2U+O1xyXG4gICAgcHJpdmF0ZSBfaW5Qcm9ncmVzczogQmVoYXZpb3JTdWJqZWN0PEludGVyYWN0aW9uU3RhdHVzPjtcclxuICAgIHB1YmxpYyBpblByb2dyZXNzJDogT2JzZXJ2YWJsZTxJbnRlcmFjdGlvblN0YXR1cz47XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgQEluamVjdChNU0FMX0lOU1RBTkNFKSBwcml2YXRlIG1zYWxJbnN0YW5jZTogSVB1YmxpY0NsaWVudEFwcGxpY2F0aW9uLFxyXG4gICAgICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IE1zYWxTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLl9tc2FsU3ViamVjdCA9IG5ldyBTdWJqZWN0PEV2ZW50TWVzc2FnZT4oKTtcclxuICAgICAgICB0aGlzLm1zYWxTdWJqZWN0JCAgPSB0aGlzLl9tc2FsU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICAgICAgLy8gSW5Qcm9ncmVzcyBhcyBCZWhhdmlvclN1YmplY3Qgc28gbW9zdCByZWNlbnQgaW5Qcm9ncmVzcyBzdGF0ZSB3aWxsIGJlIGF2YWlsYWJsZSB1cG9uIHN1YnNjcmlwdGlvblxyXG4gICAgICAgIHRoaXMuX2luUHJvZ3Jlc3MgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEludGVyYWN0aW9uU3RhdHVzPihJbnRlcmFjdGlvblN0YXR1cy5TdGFydHVwKTtcclxuICAgICAgICB0aGlzLmluUHJvZ3Jlc3MkID0gdGhpcy5faW5Qcm9ncmVzcy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICAgICAgdGhpcy5tc2FsSW5zdGFuY2UuYWRkRXZlbnRDYWxsYmFjaygobWVzc2FnZTogRXZlbnRNZXNzYWdlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX21zYWxTdWJqZWN0Lm5leHQobWVzc2FnZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IEV2ZW50TWVzc2FnZVV0aWxzLmdldEludGVyYWN0aW9uU3RhdHVzRnJvbUV2ZW50KG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBpZiAoc3RhdHVzICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLnZlcmJvc2UoYEJyb2FkY2FzdFNlcnZpY2UgLSAke21lc3NhZ2UuZXZlbnRUeXBlfSByZXN1bHRzIGluIHNldHRpbmcgaW5Qcm9ncmVzcyB0byAke3N0YXR1c31gKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2luUHJvZ3Jlc3MubmV4dChzdGF0dXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIl19

@@ -5,2 +5,3 @@ /*

*/
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5ndWFyZC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvamFudXR0ZXIvQ29kZS9taWNyb3NvZnQtYXV0aGVudGljYXRpb24tbGlicmFyeS1mb3ItanMvbGliL21zYWwtYW5ndWxhci9zcmMvIiwic291cmNlcyI6WyJtc2FsLmd1YXJkLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IFJvdXRlclN0YXRlU25hcHNob3QgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IFBvcHVwUmVxdWVzdCwgUmVkaXJlY3RSZXF1ZXN0LEludGVyYWN0aW9uVHlwZSB9IGZyb20gXCJAYXp1cmUvbXNhbC1icm93c2VyXCI7XHJcbmltcG9ydCB7IE1zYWxTZXJ2aWNlIH0gZnJvbSBcIi4vbXNhbC5zZXJ2aWNlXCI7XHJcblxyXG5leHBvcnQgZGVjbGFyZSB0eXBlIE1zYWxHdWFyZEF1dGhSZXF1ZXN0ID0gUGFydGlhbDxQb3B1cFJlcXVlc3Q+IHwgUGFydGlhbDxPbWl0PFJlZGlyZWN0UmVxdWVzdCwgXCJyZWRpcmVjdFN0YXJ0UGFnZVwiPj47XHJcblxyXG5leHBvcnQgdHlwZSBNc2FsR3VhcmRDb25maWd1cmF0aW9uID0ge1xyXG4gICAgaW50ZXJhY3Rpb25UeXBlOiBJbnRlcmFjdGlvblR5cGUuUG9wdXAgfCBJbnRlcmFjdGlvblR5cGUuUmVkaXJlY3Q7XHJcbiAgICBhdXRoUmVxdWVzdD86IE1zYWxHdWFyZEF1dGhSZXF1ZXN0IHwgKChhdXRoU2VydmljZTogTXNhbFNlcnZpY2UsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KSA9PiBNc2FsR3VhcmRBdXRoUmVxdWVzdCk7XHJcbiAgICBsb2dpbkZhaWxlZFJvdXRlPzogc3RyaW5nO1xyXG59O1xyXG4iXX0=
export {};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5ndWFyZC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbXNhbC5ndWFyZC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cclxuICovXHJcblxyXG5pbXBvcnQgeyBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBQb3B1cFJlcXVlc3QsIFJlZGlyZWN0UmVxdWVzdCxJbnRlcmFjdGlvblR5cGUgfSBmcm9tIFwiQGF6dXJlL21zYWwtYnJvd3NlclwiO1xyXG5pbXBvcnQgeyBNc2FsU2VydmljZSB9IGZyb20gXCIuL21zYWwuc2VydmljZVwiO1xyXG5cclxuZXhwb3J0IGRlY2xhcmUgdHlwZSBNc2FsR3VhcmRBdXRoUmVxdWVzdCA9IFBhcnRpYWw8UG9wdXBSZXF1ZXN0PiB8IFBhcnRpYWw8T21pdDxSZWRpcmVjdFJlcXVlc3QsIFwicmVkaXJlY3RTdGFydFBhZ2VcIj4+O1xyXG5cclxuZXhwb3J0IHR5cGUgTXNhbEd1YXJkQ29uZmlndXJhdGlvbiA9IHtcclxuICAgIGludGVyYWN0aW9uVHlwZTogSW50ZXJhY3Rpb25UeXBlLlBvcHVwIHwgSW50ZXJhY3Rpb25UeXBlLlJlZGlyZWN0O1xyXG4gICAgYXV0aFJlcXVlc3Q/OiBNc2FsR3VhcmRBdXRoUmVxdWVzdCB8ICgoYXV0aFNlcnZpY2U6IE1zYWxTZXJ2aWNlLCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCkgPT4gTXNhbEd1YXJkQXV0aFJlcXVlc3QpO1xyXG4gICAgbG9naW5GYWlsZWRSb3V0ZT86IHN0cmluZztcclxufTtcclxuIl19

@@ -100,2 +100,4 @@ /*

}
// Capture current path before it gets changed by handleRedirectObservable
const currentPath = this.location.path(true);
return this.authService.handleRedirectObservable()

@@ -112,10 +114,16 @@ .pipe(concatMap(() => {

this.authService.getLogger().verbose("Guard - at least 1 account exists, can activate or load");
// Prevent navigating the app to /#code=
if (state && state.url.indexOf("#") > -1 && state.url.indexOf("code=") > -1) {
// Prevent navigating the app to /#code= or /code=
if (state && currentPath.indexOf("code=") > -1) {
this.authService.getLogger().info("Guard - Hash contains known code response, stopping navigation.");
return of(false);
// Path routing (navigate to current path without hash)
if (currentPath.indexOf("#") > -1) {
return of(this.parseUrl(this.location.path()));
}
// Hash routing (navigate to root path)
return of(this.parseUrl(""));
}
return of(true);
}), catchError(() => {
this.authService.getLogger().verbose("Guard - error while logging in, unable to activate");
}), catchError((error) => {
this.authService.getLogger().error("Guard - error while logging in, unable to activate");
this.authService.getLogger().errorPii(`Guard - error: ${error.message}`);
/**

@@ -156,2 +164,2 @@ * If a loginFailedRoute is set, checks to see if Angular 10+ is used and state is passed in before returning route

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9qYW51dHRlci9Db2RlL21pY3Jvc29mdC1hdXRoZW50aWNhdGlvbi1saWJyYXJ5LWZvci1qcy9saWIvbXNhbC1hbmd1bGFyL3NyYy8iLCJzb3VyY2VzIjpbIm1zYWwuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFnRyxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2SSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLDZCQUE2QixFQUFFLFlBQVksRUFBRSxTQUFTLEVBQXVELE1BQU0scUJBQXFCLENBQUM7QUFFbkssT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHaEUsTUFBTSxPQUFPLFNBQVM7SUFHbEIsWUFDdUMsZUFBdUMsRUFDbEUsb0JBQTBDLEVBQzFDLFdBQXdCLEVBQ3hCLFFBQWtCLEVBQ2xCLE1BQWM7UUFKYSxvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7UUFDbEUseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFFdEIscUVBQXFFO1FBQ3JF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RSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzVELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBNkIsRUFBRSxLQUEwQjtRQUN0RSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsT0FBTztRQUNILElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDeEQsYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2pDLENBQUM7OztZQWhLSixVQUFVOzs7NENBS0YsTUFBTSxTQUFDLGlCQUFpQjtZQVB4QixvQkFBb0I7WUFScEIsV0FBVztZQUVYLFFBQVE7WUFIc0YsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQ2FuQWN0aXZhdGUsIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJvdXRlclN0YXRlU25hcHNob3QsIENhbkFjdGl2YXRlQ2hpbGQsIENhbkxvYWQsIFVybFRyZWUsIFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgTXNhbFNlcnZpY2UgfSBmcm9tIFwiLi9tc2FsLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBWRVJTSU9OIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IEludGVyYWN0aW9uVHlwZSwgQnJvd3NlckNvbmZpZ3VyYXRpb25BdXRoRXJyb3IsIEJyb3dzZXJVdGlscywgVXJsU3RyaW5nLCBQb3B1cFJlcXVlc3QsIFJlZGlyZWN0UmVxdWVzdCwgQXV0aGVudGljYXRpb25SZXN1bHQgfSBmcm9tIFwiQGF6dXJlL21zYWwtYnJvd3NlclwiO1xyXG5pbXBvcnQgeyBNc2FsR3VhcmRDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4vbXNhbC5ndWFyZC5jb25maWdcIjtcclxuaW1wb3J0IHsgTVNBTF9HVUFSRF9DT05GSUcgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgY29uY2F0TWFwLCBjYXRjaEVycm9yLCBtYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBNc2FsQnJvYWRjYXN0U2VydmljZSB9IGZyb20gXCIuL21zYWwuYnJvYWRjYXN0LnNlcnZpY2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE1zYWxHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlLCBDYW5BY3RpdmF0ZUNoaWxkLCBDYW5Mb2FkIHtcclxuICAgIHByaXZhdGUgbG9naW5GYWlsZWRSb3V0ZT86IFVybFRyZWU7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgQEluamVjdChNU0FMX0dVQVJEX0NPTkZJRykgcHJpdmF0ZSBtc2FsR3VhcmRDb25maWc6IE1zYWxHdWFyZENvbmZpZ3VyYXRpb24sXHJcbiAgICAgICAgcHJpdmF0ZSBtc2FsQnJvYWRjYXN0U2VydmljZTogTXNhbEJyb2FkY2FzdFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBhdXRoU2VydmljZTogTXNhbFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXHJcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxyXG4gICAgKSB7IFxyXG4gICAgICAgIC8vIFN1YnNjcmliaW5nIHNvIGV2ZW50cyBpbiBNc2FsR3VhcmQgd2lsbCBzZXQgaW5Qcm9ncmVzcyQgb2JzZXJ2YWJsZVxyXG4gICAgICAgIHRoaXMubXNhbEJyb2FkY2FzdFNlcnZpY2UuaW5Qcm9ncmVzcyQuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQYXJzZXMgdXJsIHN0cmluZyB0byBVcmxUcmVlXHJcbiAgICAgKiBAcGFyYW0gdXJsIFxyXG4gICAgICovXHJcbiAgICBwYXJzZVVybCh1cmw6IHN0cmluZyk6IFVybFRyZWUge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5wYXJzZVVybCh1cmwpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQnVpbGRzIHRoZSBhYnNvbHV0ZSB1cmwgZm9yIHRoZSBkZXN0aW5hdGlvbiBwYWdlXHJcbiAgICAgKiBAcGFyYW0gcGF0aCBSZWxhdGl2ZSBwYXRoIG9mIHJlcXVlc3RlZCBwYWdlXHJcbiAgICAgKiBAcmV0dXJucyBGdWxsIGRlc3RpbmF0aW9uIHVybFxyXG4gICAgICovXHJcbiAgICBnZXREZXN0aW5hdGlvblVybChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0TG9nZ2VyKCkudmVyYm9zZShcIkd1YXJkIC0gZ2V0dGluZyBkZXN0aW5hdGlvbiB1cmxcIik7XHJcbiAgICAgICAgLy8gQWJzb2x1dGUgYmFzZSB1cmwgZm9yIHRoZSBhcHBsaWNhdGlvbiAoZGVmYXVsdCB0byBvcmlnaW4gaWYgYmFzZSBlbGVtZW50IG5vdCBwcmVzZW50KVxyXG4gICAgICAgIGNvbnN0IGJhc2VFbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYmFzZVwiKTtcclxuICAgICAgICBjb25zdCBiYXNlVXJsID0gdGhpcy5sb2NhdGlvbi5ub3JtYWxpemUoYmFzZUVsZW1lbnRzLmxlbmd0aCA/IGJhc2VFbGVtZW50c1swXS5ocmVmIDogd2luZG93LmxvY2F0aW9uLm9yaWdpbik7XHJcblxyXG4gICAgICAgIC8vIFBhdGggb2YgcGFnZSAoaW5jbHVkaW5nIGhhc2gsIGlmIHVzaW5nIGhhc2ggcm91dGluZylcclxuICAgICAgICBjb25zdCBwYXRoVXJsID0gdGhpcy5sb2NhdGlvbi5wcmVwYXJlRXh0ZXJuYWxVcmwocGF0aCk7XHJcblxyXG4gICAgICAgIC8vIEhhc2ggbG9jYXRpb24gc3RyYXRlZ3lcclxuICAgICAgICBpZiAocGF0aFVybC5zdGFydHNXaXRoKFwiI1wiKSkge1xyXG4gICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLnZlcmJvc2UoXCJHdWFyZCAtIGRlc3RpbmF0aW9uIGJ5IGhhc2ggcm91dGluZ1wiKTtcclxuICAgICAgICAgICAgcmV0dXJuIGAke2Jhc2VVcmx9LyR7cGF0aFVybH1gO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLypcclxuICAgICAgICAgKiBJZiB1c2luZyBwYXRoIGxvY2F0aW9uIHN0cmF0ZWd5LCBwYXRoVXJsIHdpbGwgaW5jbHVkZSB0aGUgcmVsYXRpdmUgcG9ydGlvbiBvZiB0aGUgYmFzZSBwYXRoIChlLmcuIC9iYXNlL3BhZ2UpLlxyXG4gICAgICAgICAqIFNpbmNlIGJhc2VVcmwgYWxzbyBpbmNsdWRlcyAvYmFzZSwgY2FuIGp1c3QgY29uY2F0ZW50YXRlIGJhc2VVcmwgKyBwYXRoXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgcmV0dXJuIGAke2Jhc2VVcmx9JHtwYXRofWA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbnRlcmFjdGl2ZWx5IHByb21wdCB0aGUgdXNlciB0byBsb2dpblxyXG4gICAgICogQHBhcmFtIHVybCBQYXRoIG9mIHRoZSByZXF1ZXN0ZWQgcGFnZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGxvZ2luSW50ZXJhY3RpdmVseShzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGNvbnN0IGF1dGhSZXF1ZXN0ID0gdHlwZW9mIHRoaXMubXNhbEd1YXJkQ29uZmlnLmF1dGhSZXF1ZXN0ID09PSBcImZ1bmN0aW9uXCJcclxuICAgICAgICAgICAgPyB0aGlzLm1zYWxHdWFyZENvbmZpZy5hdXRoUmVxdWVzdCh0aGlzLmF1dGhTZXJ2aWNlLCBzdGF0ZSlcclxuICAgICAgICAgICAgOiB7IC4uLnRoaXMubXNhbEd1YXJkQ29uZmlnLmF1dGhSZXF1ZXN0IH07XHJcbiAgICAgICAgaWYgKHRoaXMubXNhbEd1YXJkQ29uZmlnLmludGVyYWN0aW9uVHlwZSA9PT0gSW50ZXJhY3Rpb25UeXBlLlBvcHVwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0TG9nZ2VyKCkudmVyYm9zZShcIkd1YXJkIC0gbG9nZ2luZyBpbiBieSBwb3B1cFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UubG9naW5Qb3B1cChhdXRoUmVxdWVzdCBhcyBQb3B1cFJlcXVlc3QpXHJcbiAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBBdXRoZW50aWNhdGlvblJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLnZlcmJvc2UoXCJHdWFyZCAtIGxvZ2luIGJ5IHBvcHVwIHN1Y2Nlc3NmdWwsIGNhbiBhY3RpdmF0ZSwgc2V0dGluZyBhY3RpdmUgYWNjb3VudFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5pbnN0YW5jZS5zZXRBY3RpdmVBY2NvdW50KHJlc3BvbnNlLmFjY291bnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0TG9nZ2VyKCkudmVyYm9zZShcIkd1YXJkIC0gbG9nZ2luZyBpbiBieSByZWRpcmVjdFwiKTtcclxuICAgICAgICBjb25zdCByZWRpcmVjdFN0YXJ0UGFnZSA9IHRoaXMuZ2V0RGVzdGluYXRpb25Vcmwoc3RhdGUudXJsKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5sb2dpblJlZGlyZWN0KHtcclxuICAgICAgICAgICAgcmVkaXJlY3RTdGFydFBhZ2UsXHJcbiAgICAgICAgICAgIC4uLmF1dGhSZXF1ZXN0XHJcbiAgICAgICAgfSBhcyBSZWRpcmVjdFJlcXVlc3QpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKCgpID0+IGZhbHNlKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGVscGVyIHdoaWNoIGNoZWNrcyBmb3IgdGhlIGNvcnJlY3QgaW50ZXJhY3Rpb24gdHlwZSwgcHJldmVudHMgcGFnZSB3aXRoIEd1YXJkIHRvIGJlIHNldCBhcyByZWlkcmVjdCwgYW5kIGNhbGxzIGhhbmRsZVJlZGlyZWN0T2JzZXJ2YWJsZVxyXG4gICAgICogQHBhcmFtIHN0YXRlIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGFjdGl2YXRlSGVscGVyKHN0YXRlPzogUm91dGVyU3RhdGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbnxVcmxUcmVlPiB7XHJcbiAgICAgICAgaWYgKHRoaXMubXNhbEd1YXJkQ29uZmlnLmludGVyYWN0aW9uVHlwZSAhPT0gSW50ZXJhY3Rpb25UeXBlLlBvcHVwICYmIHRoaXMubXNhbEd1YXJkQ29uZmlnLmludGVyYWN0aW9uVHlwZSAhPT0gSW50ZXJhY3Rpb25UeXBlLlJlZGlyZWN0KSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBCcm93c2VyQ29uZmlndXJhdGlvbkF1dGhFcnJvcihcImludmFsaWRfaW50ZXJhY3Rpb25fdHlwZVwiLCBcIkludmFsaWQgaW50ZXJhY3Rpb24gdHlwZSBwcm92aWRlZCB0byBNU0FMIEd1YXJkLiBJbnRlcmFjdGlvblR5cGUuUG9wdXAgb3IgSW50ZXJhY3Rpb25UeXBlLlJlZGlyZWN0IG11c3QgYmUgcHJvdmlkZWQgaW4gdGhlIE1zYWxHdWFyZENvbmZpZ3VyYXRpb25cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0TG9nZ2VyKCkudmVyYm9zZShcIk1TQUwgR3VhcmQgYWN0aXZhdGVkXCIpO1xyXG5cclxuICAgICAgICAvKlxyXG4gICAgICAgICAqIElmIGEgcGFnZSB3aXRoIE1TQUwgR3VhcmQgaXMgc2V0IGFzIHRoZSByZWRpcmVjdCBmb3IgYWNxdWlyZVRva2VuU2lsZW50LFxyXG4gICAgICAgICAqIHNob3J0LWNpcmN1aXQgdG8gcHJldmVudCByZWRpcmVjdGluZyBvciBwb3B1cHMuXHJcbiAgICAgICAgICogVE9ETzogVXBkYXRlIHRvIGFsbG93IHJ1bm5pbmcgaW4gaWZyYW1lIG9uY2UgYWxsb3dSZWRpcmVjdEluSWZyYW1lIGlzIGltcGxlbWVudGVkXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgaWYgKFVybFN0cmluZy5oYXNoQ29udGFpbnNLbm93blByb3BlcnRpZXMod2luZG93LmxvY2F0aW9uLmhhc2gpICYmIEJyb3dzZXJVdGlscy5pc0luSWZyYW1lKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRMb2dnZXIoKS53YXJuaW5nKFwiR3VhcmQgLSByZWRpcmVjdFVyaSBzZXQgdG8gcGFnZSB3aXRoIE1TQUwgR3VhcmQuIEl0IGlzIHJlY29tbWVuZGVkIHRvIG5vdCBzZXQgcmVkaXJlY3RVcmkgdG8gYSBwYWdlIHRoYXQgcmVxdWlyZXMgYXV0aGVudGljYXRpb24uXCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogSWYgYSBsb2dpbkZhaWxlZFJvdXRlIGlzIHNldCBpbiB0aGUgY29uZmlnLCBzZXQgdGhpcyBhcyB0aGUgbG9naW5GYWlsZWRSb3V0ZVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGlmICh0aGlzLm1zYWxHdWFyZENvbmZpZy5sb2dpbkZhaWxlZFJvdXRlKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9naW5GYWlsZWRSb3V0ZSA9IHRoaXMucGFyc2VVcmwodGhpcy5tc2FsR3VhcmRDb25maWcubG9naW5GYWlsZWRSb3V0ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5oYW5kbGVSZWRpcmVjdE9ic2VydmFibGUoKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIGNvbmNhdE1hcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmF1dGhTZXJ2aWNlLmluc3RhbmNlLmdldEFsbEFjY291bnRzKCkubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRMb2dnZXIoKS52ZXJib3NlKFwiR3VhcmQgLSBubyBhY2NvdW50cyByZXRyaWV2ZWQsIGxvZyBpbiByZXF1aXJlZCB0byBhY3RpdmF0ZVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvZ2luSW50ZXJhY3RpdmVseShzdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0TG9nZ2VyKCkudmVyYm9zZShcIkd1YXJkIC0gbm8gYWNjb3VudHMgcmV0cmlldmVkLCBubyBzdGF0ZSwgY2Fubm90IGxvYWRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLnZlcmJvc2UoXCJHdWFyZCAtIGF0IGxlYXN0IDEgYWNjb3VudCBleGlzdHMsIGNhbiBhY3RpdmF0ZSBvciBsb2FkXCIpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyBQcmV2ZW50IG5hdmlnYXRpbmcgdGhlIGFwcCB0byAvI2NvZGU9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlICYmIHN0YXRlLnVybC5pbmRleE9mKFwiI1wiKSA+IC0xICYmIHN0YXRlLnVybC5pbmRleE9mKFwiY29kZT1cIikgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLmluZm8oXCJHdWFyZCAtIEhhc2ggY29udGFpbnMga25vd24gY29kZSByZXNwb25zZSwgc3RvcHBpbmcgbmF2aWdhdGlvbi5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLnZlcmJvc2UoXCJHdWFyZCAtIGVycm9yIHdoaWxlIGxvZ2dpbmcgaW4sIHVuYWJsZSB0byBhY3RpdmF0ZVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICAgICAgICAgKiBJZiBhIGxvZ2luRmFpbGVkUm91dGUgaXMgc2V0LCBjaGVja3MgdG8gc2VlIGlmIEFuZ3VsYXIgMTArIGlzIHVzZWQgYW5kIHN0YXRlIGlzIHBhc3NlZCBpbiBiZWZvcmUgcmV0dXJuaW5nIHJvdXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICogQXBwcyB1c2luZyBBbmd1bGFyIDkgd2lsbCByZWNlaXZlIG9mKGZhbHNlKSBpbiBjYW5Mb2FkIGludGVyZmFjZSwgYXMgaXQgZG9lcyBub3Qgc3VwcG9ydCBVcmxUcmVlIHJldHVybiB0eXBlc1xyXG4gICAgICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2luRmFpbGVkUm91dGUgJiYgcGFyc2VJbnQoVkVSU0lPTi5tYWpvciwgMTApID4gOSAmJiBzdGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLnZlcmJvc2UoXCJHdWFyZCAtIGxvZ2luRmFpbGVkUm91dGUgc2V0LCByZWRpcmVjdGluZ1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMubG9naW5GYWlsZWRSb3V0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbkFjdGl2YXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbnxVcmxUcmVlPiB7XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRMb2dnZXIoKS52ZXJib3NlKFwiR3VhcmQgLSBjYW5BY3RpdmF0ZVwiKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmF0ZUhlbHBlcihzdGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2FuQWN0aXZhdGVDaGlsZChyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW58VXJsVHJlZT4ge1xyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0TG9nZ2VyKCkudmVyYm9zZShcIkd1YXJkIC0gY2FuQWN0aXZhdGVDaGlsZFwiKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmF0ZUhlbHBlcihzdGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2FuTG9hZCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLnZlcmJvc2UoXCJHdWFyZCAtIGNhbkxvYWRcIik7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2YXRlSGVscGVyKCk7XHJcbiAgICB9XHJcbn1cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tc2FsLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBZ0csTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkksT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSw2QkFBNkIsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUF1RCxNQUFNLHFCQUFxQixDQUFDO0FBRW5LLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR2hFLE1BQU0sT0FBTyxTQUFTO0lBR2xCLFlBQ3VDLGVBQXVDLEVBQ2xFLG9CQUEwQyxFQUMxQyxXQUF3QixFQUN4QixRQUFrQixFQUNsQixNQUFjO1FBSmEsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ2xFLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBRXRCLHFFQUFxRTtRQUNyRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFRDs7O09BR0c7SUFD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LEtBQUssRUFBRTtnQkFDbkUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUMsMkNBQTJDLENBQUMsQ0FBQztnQkFDbEYsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7YUFDcEM7WUFDRCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ1YsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUE2QixFQUFFLEtBQTBCO1FBQ2pFLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDNUQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUE2QixFQUFFLEtBQTBCO1FBQ3RFLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN4RCxhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDakMsQ0FBQzs7O1lBM0tKLFVBQVU7Ozs0Q0FLRixNQUFNLFNBQUMsaUJBQWlCO1lBUHhCLG9CQUFvQjtZQVJwQixXQUFXO1lBRVgsUUFBUTtZQUhzRixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cclxuICovXHJcblxyXG5pbXBvcnQgeyBDYW5BY3RpdmF0ZSwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUm91dGVyU3RhdGVTbmFwc2hvdCwgQ2FuQWN0aXZhdGVDaGlsZCwgQ2FuTG9hZCwgVXJsVHJlZSwgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBNc2FsU2VydmljZSB9IGZyb20gXCIuL21zYWwuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIFZFUlNJT04gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgSW50ZXJhY3Rpb25UeXBlLCBCcm93c2VyQ29uZmlndXJhdGlvbkF1dGhFcnJvciwgQnJvd3NlclV0aWxzLCBVcmxTdHJpbmcsIFBvcHVwUmVxdWVzdCwgUmVkaXJlY3RSZXF1ZXN0LCBBdXRoZW50aWNhdGlvblJlc3VsdCB9IGZyb20gXCJAYXp1cmUvbXNhbC1icm93c2VyXCI7XHJcbmltcG9ydCB7IE1zYWxHdWFyZENvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi9tc2FsLmd1YXJkLmNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBNU0FMX0dVQVJEX0NPTkZJRyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBjb25jYXRNYXAsIGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IE1zYWxCcm9hZGNhc3RTZXJ2aWNlIH0gZnJvbSBcIi4vbXNhbC5icm9hZGNhc3Quc2VydmljZVwiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTXNhbEd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGQsIENhbkxvYWQge1xyXG4gICAgcHJpdmF0ZSBsb2dpbkZhaWxlZFJvdXRlPzogVXJsVHJlZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KE1TQUxfR1VBUkRfQ09ORklHKSBwcml2YXRlIG1zYWxHdWFyZENvbmZpZzogTXNhbEd1YXJkQ29uZmlndXJhdGlvbixcclxuICAgICAgICBwcml2YXRlIG1zYWxCcm9hZGNhc3RTZXJ2aWNlOiBNc2FsQnJvYWRjYXN0U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBNc2FsU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcclxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXHJcbiAgICApIHsgXHJcbiAgICAgICAgLy8gU3Vic2NyaWJpbmcgc28gZXZlbnRzIGluIE1zYWxHdWFyZCB3aWxsIHNldCBpblByb2dyZXNzJCBvYnNlcnZhYmxlXHJcbiAgICAgICAgdGhpcy5tc2FsQnJvYWRjYXN0U2VydmljZS5pblByb2dyZXNzJC5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBhcnNlcyB1cmwgc3RyaW5nIHRvIFVybFRyZWVcclxuICAgICAqIEBwYXJhbSB1cmwgXHJcbiAgICAgKi9cclxuICAgIHBhcnNlVXJsKHVybDogc3RyaW5nKTogVXJsVHJlZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLnBhcnNlVXJsKHVybCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBCdWlsZHMgdGhlIGFic29sdXRlIHVybCBmb3IgdGhlIGRlc3RpbmF0aW9uIHBhZ2VcclxuICAgICAqIEBwYXJhbSBwYXRoIFJlbGF0aXZlIHBhdGggb2YgcmVxdWVzdGVkIHBhZ2VcclxuICAgICAqIEByZXR1cm5zIEZ1bGwgZGVzdGluYXRpb24gdXJsXHJcbiAgICAgKi9cclxuICAgIGdldERlc3RpbmF0aW9uVXJsKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRMb2dnZXIoKS52ZXJib3NlKFwiR3VhcmQgLSBnZXR0aW5nIGRlc3RpbmF0aW9uIHVybFwiKTtcclxuICAgICAgICAvLyBBYnNvbHV0ZSBiYXNlIHVybCBmb3IgdGhlIGFwcGxpY2F0aW9uIChkZWZhdWx0IHRvIG9yaWdpbiBpZiBiYXNlIGVsZW1lbnQgbm90IHByZXNlbnQpXHJcbiAgICAgICAgY29uc3QgYmFzZUVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJiYXNlXCIpO1xyXG4gICAgICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzLmxvY2F0aW9uLm5vcm1hbGl6ZShiYXNlRWxlbWVudHMubGVuZ3RoID8gYmFzZUVsZW1lbnRzWzBdLmhyZWYgOiB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcclxuXHJcbiAgICAgICAgLy8gUGF0aCBvZiBwYWdlIChpbmNsdWRpbmcgaGFzaCwgaWYgdXNpbmcgaGFzaCByb3V0aW5nKVxyXG4gICAgICAgIGNvbnN0IHBhdGhVcmwgPSB0aGlzLmxvY2F0aW9uLnByZXBhcmVFeHRlcm5hbFVybChwYXRoKTtcclxuXHJcbiAgICAgICAgLy8gSGFzaCBsb2NhdGlvbiBzdHJhdGVneVxyXG4gICAgICAgIGlmIChwYXRoVXJsLnN0YXJ0c1dpdGgoXCIjXCIpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0TG9nZ2VyKCkudmVyYm9zZShcIkd1YXJkIC0gZGVzdGluYXRpb24gYnkgaGFzaCByb3V0aW5nXCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gYCR7YmFzZVVybH0vJHtwYXRoVXJsfWA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKlxyXG4gICAgICAgICAqIElmIHVzaW5nIHBhdGggbG9jYXRpb24gc3RyYXRlZ3ksIHBhdGhVcmwgd2lsbCBpbmNsdWRlIHRoZSByZWxhdGl2ZSBwb3J0aW9uIG9mIHRoZSBiYXNlIHBhdGggKGUuZy4gL2Jhc2UvcGFnZSkuXHJcbiAgICAgICAgICogU2luY2UgYmFzZVVybCBhbHNvIGluY2x1ZGVzIC9iYXNlLCBjYW4ganVzdCBjb25jYXRlbnRhdGUgYmFzZVVybCArIHBhdGhcclxuICAgICAgICAgKi9cclxuICAgICAgICByZXR1cm4gYCR7YmFzZVVybH0ke3BhdGh9YDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEludGVyYWN0aXZlbHkgcHJvbXB0IHRoZSB1c2VyIHRvIGxvZ2luXHJcbiAgICAgKiBAcGFyYW0gdXJsIFBhdGggb2YgdGhlIHJlcXVlc3RlZCBwYWdlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbG9naW5JbnRlcmFjdGl2ZWx5KHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICAgICAgY29uc3QgYXV0aFJlcXVlc3QgPSB0eXBlb2YgdGhpcy5tc2FsR3VhcmRDb25maWcuYXV0aFJlcXVlc3QgPT09IFwiZnVuY3Rpb25cIlxyXG4gICAgICAgICAgICA/IHRoaXMubXNhbEd1YXJkQ29uZmlnLmF1dGhSZXF1ZXN0KHRoaXMuYXV0aFNlcnZpY2UsIHN0YXRlKVxyXG4gICAgICAgICAgICA6IHsgLi4udGhpcy5tc2FsR3VhcmRDb25maWcuYXV0aFJlcXVlc3QgfTtcclxuICAgICAgICBpZiAodGhpcy5tc2FsR3VhcmRDb25maWcuaW50ZXJhY3Rpb25UeXBlID09PSBJbnRlcmFjdGlvblR5cGUuUG9wdXApIHtcclxuICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRMb2dnZXIoKS52ZXJib3NlKFwiR3VhcmQgLSBsb2dnaW5nIGluIGJ5IHBvcHVwXCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5sb2dpblBvcHVwKGF1dGhSZXF1ZXN0IGFzIFBvcHVwUmVxdWVzdClcclxuICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2U6IEF1dGhlbnRpY2F0aW9uUmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0TG9nZ2VyKCkudmVyYm9zZShcIkd1YXJkIC0gbG9naW4gYnkgcG9wdXAgc3VjY2Vzc2Z1bCwgY2FuIGFjdGl2YXRlLCBzZXR0aW5nIGFjdGl2ZSBhY2NvdW50XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmluc3RhbmNlLnNldEFjdGl2ZUFjY291bnQocmVzcG9uc2UuYWNjb3VudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRMb2dnZXIoKS52ZXJib3NlKFwiR3VhcmQgLSBsb2dnaW5nIGluIGJ5IHJlZGlyZWN0XCIpO1xyXG4gICAgICAgIGNvbnN0IHJlZGlyZWN0U3RhcnRQYWdlID0gdGhpcy5nZXREZXN0aW5hdGlvblVybChzdGF0ZS51cmwpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLmxvZ2luUmVkaXJlY3Qoe1xyXG4gICAgICAgICAgICByZWRpcmVjdFN0YXJ0UGFnZSxcclxuICAgICAgICAgICAgLi4uYXV0aFJlcXVlc3RcclxuICAgICAgICB9IGFzIFJlZGlyZWN0UmVxdWVzdClcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKCkgPT4gZmFsc2UpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIZWxwZXIgd2hpY2ggY2hlY2tzIGZvciB0aGUgY29ycmVjdCBpbnRlcmFjdGlvbiB0eXBlLCBwcmV2ZW50cyBwYWdlIHdpdGggR3VhcmQgdG8gYmUgc2V0IGFzIHJlaWRyZWN0LCBhbmQgY2FsbHMgaGFuZGxlUmVkaXJlY3RPYnNlcnZhYmxlXHJcbiAgICAgKiBAcGFyYW0gc3RhdGUgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgYWN0aXZhdGVIZWxwZXIoc3RhdGU/OiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFufFVybFRyZWU+IHtcclxuICAgICAgICBpZiAodGhpcy5tc2FsR3VhcmRDb25maWcuaW50ZXJhY3Rpb25UeXBlICE9PSBJbnRlcmFjdGlvblR5cGUuUG9wdXAgJiYgdGhpcy5tc2FsR3VhcmRDb25maWcuaW50ZXJhY3Rpb25UeXBlICE9PSBJbnRlcmFjdGlvblR5cGUuUmVkaXJlY3QpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEJyb3dzZXJDb25maWd1cmF0aW9uQXV0aEVycm9yKFwiaW52YWxpZF9pbnRlcmFjdGlvbl90eXBlXCIsIFwiSW52YWxpZCBpbnRlcmFjdGlvbiB0eXBlIHByb3ZpZGVkIHRvIE1TQUwgR3VhcmQuIEludGVyYWN0aW9uVHlwZS5Qb3B1cCBvciBJbnRlcmFjdGlvblR5cGUuUmVkaXJlY3QgbXVzdCBiZSBwcm92aWRlZCBpbiB0aGUgTXNhbEd1YXJkQ29uZmlndXJhdGlvblwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRMb2dnZXIoKS52ZXJib3NlKFwiTVNBTCBHdWFyZCBhY3RpdmF0ZWRcIik7XHJcblxyXG4gICAgICAgIC8qXHJcbiAgICAgICAgICogSWYgYSBwYWdlIHdpdGggTVNBTCBHdWFyZCBpcyBzZXQgYXMgdGhlIHJlZGlyZWN0IGZvciBhY3F1aXJlVG9rZW5TaWxlbnQsXHJcbiAgICAgICAgICogc2hvcnQtY2lyY3VpdCB0byBwcmV2ZW50IHJlZGlyZWN0aW5nIG9yIHBvcHVwcy5cclxuICAgICAgICAgKiBUT0RPOiBVcGRhdGUgdG8gYWxsb3cgcnVubmluZyBpbiBpZnJhbWUgb25jZSBhbGxvd1JlZGlyZWN0SW5JZnJhbWUgaXMgaW1wbGVtZW50ZWRcclxuICAgICAgICAgKi9cclxuICAgICAgICBpZiAoVXJsU3RyaW5nLmhhc2hDb250YWluc0tub3duUHJvcGVydGllcyh3aW5kb3cubG9jYXRpb24uaGFzaCkgJiYgQnJvd3NlclV0aWxzLmlzSW5JZnJhbWUoKSkge1xyXG4gICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLndhcm5pbmcoXCJHdWFyZCAtIHJlZGlyZWN0VXJpIHNldCB0byBwYWdlIHdpdGggTVNBTCBHdWFyZC4gSXQgaXMgcmVjb21tZW5kZWQgdG8gbm90IHNldCByZWRpcmVjdFVyaSB0byBhIHBhZ2UgdGhhdCByZXF1aXJlcyBhdXRoZW50aWNhdGlvbi5cIik7XHJcbiAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBJZiBhIGxvZ2luRmFpbGVkUm91dGUgaXMgc2V0IGluIHRoZSBjb25maWcsIHNldCB0aGlzIGFzIHRoZSBsb2dpbkZhaWxlZFJvdXRlXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgaWYgKHRoaXMubXNhbEd1YXJkQ29uZmlnLmxvZ2luRmFpbGVkUm91dGUpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2dpbkZhaWxlZFJvdXRlID0gdGhpcy5wYXJzZVVybCh0aGlzLm1zYWxHdWFyZENvbmZpZy5sb2dpbkZhaWxlZFJvdXRlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENhcHR1cmUgY3VycmVudCBwYXRoIGJlZm9yZSBpdCBnZXRzIGNoYW5nZWQgYnkgaGFuZGxlUmVkaXJlY3RPYnNlcnZhYmxlXHJcbiAgICAgICAgY29uc3QgY3VycmVudFBhdGggPSB0aGlzLmxvY2F0aW9uLnBhdGgodHJ1ZSk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLmhhbmRsZVJlZGlyZWN0T2JzZXJ2YWJsZSgpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgY29uY2F0TWFwKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuYXV0aFNlcnZpY2UuaW5zdGFuY2UuZ2V0QWxsQWNjb3VudHMoKS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLnZlcmJvc2UoXCJHdWFyZCAtIG5vIGFjY291bnRzIHJldHJpZXZlZCwgbG9nIGluIHJlcXVpcmVkIHRvIGFjdGl2YXRlXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9naW5JbnRlcmFjdGl2ZWx5KHN0YXRlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRMb2dnZXIoKS52ZXJib3NlKFwiR3VhcmQgLSBubyBhY2NvdW50cyByZXRyaWV2ZWQsIG5vIHN0YXRlLCBjYW5ub3QgbG9hZFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0TG9nZ2VyKCkudmVyYm9zZShcIkd1YXJkIC0gYXQgbGVhc3QgMSBhY2NvdW50IGV4aXN0cywgY2FuIGFjdGl2YXRlIG9yIGxvYWRcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFByZXZlbnQgbmF2aWdhdGluZyB0aGUgYXBwIHRvIC8jY29kZT0gb3IgL2NvZGU9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlICYmIGN1cnJlbnRQYXRoLmluZGV4T2YoXCJjb2RlPVwiKT4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRMb2dnZXIoKS5pbmZvKFwiR3VhcmQgLSBIYXNoIGNvbnRhaW5zIGtub3duIGNvZGUgcmVzcG9uc2UsIHN0b3BwaW5nIG5hdmlnYXRpb24uXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGF0aCByb3V0aW5nIChuYXZpZ2F0ZSB0byBjdXJyZW50IHBhdGggd2l0aG91dCBoYXNoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFBhdGguaW5kZXhPZihcIiNcIikgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMucGFyc2VVcmwodGhpcy5sb2NhdGlvbi5wYXRoKCkpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGFzaCByb3V0aW5nIChuYXZpZ2F0ZSB0byByb290IHBhdGgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih0aGlzLnBhcnNlVXJsKFwiXCIpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcclxuXHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBFcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0TG9nZ2VyKCkuZXJyb3IoXCJHdWFyZCAtIGVycm9yIHdoaWxlIGxvZ2dpbmcgaW4sIHVuYWJsZSB0byBhY3RpdmF0ZVwiKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLmVycm9yUGlpKGBHdWFyZCAtIGVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAgICAgICAgICogSWYgYSBsb2dpbkZhaWxlZFJvdXRlIGlzIHNldCwgY2hlY2tzIHRvIHNlZSBpZiBBbmd1bGFyIDEwKyBpcyB1c2VkIGFuZCBzdGF0ZSBpcyBwYXNzZWQgaW4gYmVmb3JlIHJldHVybmluZyByb3V0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAqIEFwcHMgdXNpbmcgQW5ndWxhciA5IHdpbGwgcmVjZWl2ZSBvZihmYWxzZSkgaW4gY2FuTG9hZCBpbnRlcmZhY2UsIGFzIGl0IGRvZXMgbm90IHN1cHBvcnQgVXJsVHJlZSByZXR1cm4gdHlwZXNcclxuICAgICAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2dpbkZhaWxlZFJvdXRlICYmIHBhcnNlSW50KFZFUlNJT04ubWFqb3IsIDEwKSA+IDkgJiYgc3RhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRMb2dnZXIoKS52ZXJib3NlKFwiR3VhcmQgLSBsb2dpbkZhaWxlZFJvdXRlIHNldCwgcmVkaXJlY3RpbmdcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih0aGlzLmxvZ2luRmFpbGVkUm91dGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBjYW5BY3RpdmF0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW58VXJsVHJlZT4ge1xyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0TG9nZ2VyKCkudmVyYm9zZShcIkd1YXJkIC0gY2FuQWN0aXZhdGVcIik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZhdGVIZWxwZXIoc3RhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbkFjdGl2YXRlQ2hpbGQocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFufFVybFRyZWU+IHtcclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLnZlcmJvc2UoXCJHdWFyZCAtIGNhbkFjdGl2YXRlQ2hpbGRcIik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZhdGVIZWxwZXIoc3RhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbkxvYWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRMb2dnZXIoKS52ZXJib3NlKFwiR3VhcmQgLSBjYW5Mb2FkXCIpO1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmF0ZUhlbHBlcigpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==

@@ -5,2 +5,3 @@ /*

*/
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5pbnRlcmNlcHRvci5jb25maWcuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvamFudXR0ZXIvQ29kZS9taWNyb3NvZnQtYXV0aGVudGljYXRpb24tbGlicmFyeS1mb3ItanMvbGliL21zYWwtYW5ndWxhci9zcmMvIiwic291cmNlcyI6WyJtc2FsLmludGVyY2VwdG9yLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEh0dHBSZXF1ZXN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IFBvcHVwUmVxdWVzdCwgUmVkaXJlY3RSZXF1ZXN0LCBJbnRlcmFjdGlvblR5cGUsIFNpbGVudFJlcXVlc3QgfSBmcm9tIFwiQGF6dXJlL21zYWwtYnJvd3NlclwiO1xyXG5pbXBvcnQgeyBNc2FsU2VydmljZSB9IGZyb20gXCIuL21zYWwuc2VydmljZVwiO1xyXG5cclxuZXhwb3J0IGRlY2xhcmUgdHlwZSBNc2FsSW50ZXJjZXB0b3JBdXRoUmVxdWVzdCA9IE9taXQ8UG9wdXBSZXF1ZXN0LCBcInNjb3Blc1wiPiB8IE9taXQ8UmVkaXJlY3RSZXF1ZXN0LCBcInNjb3Blc1wiPiB8IE9taXQ8U2lsZW50UmVxdWVzdCwgXCJzY29wZXNcIj4gO1xyXG5cclxuZXhwb3J0IHR5cGUgTXNhbEludGVyY2VwdG9yQ29uZmlndXJhdGlvbiA9IHtcclxuICAgIGludGVyYWN0aW9uVHlwZTogSW50ZXJhY3Rpb25UeXBlLlBvcHVwIHwgSW50ZXJhY3Rpb25UeXBlLlJlZGlyZWN0O1xyXG4gICAgcHJvdGVjdGVkUmVzb3VyY2VNYXA6IE1hcDxzdHJpbmcsIEFycmF5PHN0cmluZz4gfCBudWxsPjtcclxuICAgIGF1dGhSZXF1ZXN0PzogTXNhbEludGVyY2VwdG9yQXV0aFJlcXVlc3QgfCAoKG1zYWxTZXJ2aWNlOiBNc2FsU2VydmljZSwgcmVxOiBIdHRwUmVxdWVzdDx1bmtub3duPiwgb3JpZ2luYWxBdXRoUmVxdWVzdDogTXNhbEludGVyY2VwdG9yQXV0aFJlcXVlc3QpID0+IE1zYWxJbnRlcmNlcHRvckF1dGhSZXF1ZXN0KTtcclxufTtcclxuIl19
export {};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5pbnRlcmNlcHRvci5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbXNhbC5pbnRlcmNlcHRvci5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cclxuICovXHJcblxyXG5pbXBvcnQgeyBIdHRwUmVxdWVzdCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBQb3B1cFJlcXVlc3QsIFJlZGlyZWN0UmVxdWVzdCwgSW50ZXJhY3Rpb25UeXBlLCBTaWxlbnRSZXF1ZXN0IH0gZnJvbSBcIkBhenVyZS9tc2FsLWJyb3dzZXJcIjtcclxuaW1wb3J0IHsgTXNhbFNlcnZpY2UgfSBmcm9tIFwiLi9tc2FsLnNlcnZpY2VcIjtcclxuXHJcbmV4cG9ydCBkZWNsYXJlIHR5cGUgTXNhbEludGVyY2VwdG9yQXV0aFJlcXVlc3QgPSBPbWl0PFBvcHVwUmVxdWVzdCwgXCJzY29wZXNcIj4gfCBPbWl0PFJlZGlyZWN0UmVxdWVzdCwgXCJzY29wZXNcIj4gfCBPbWl0PFNpbGVudFJlcXVlc3QsIFwic2NvcGVzXCI+IDtcclxuXHJcbmV4cG9ydCB0eXBlIE1zYWxJbnRlcmNlcHRvckNvbmZpZ3VyYXRpb24gPSB7XHJcbiAgICBpbnRlcmFjdGlvblR5cGU6IEludGVyYWN0aW9uVHlwZS5Qb3B1cCB8IEludGVyYWN0aW9uVHlwZS5SZWRpcmVjdDtcclxuICAgIHByb3RlY3RlZFJlc291cmNlTWFwOiBNYXA8c3RyaW5nLCBBcnJheTxzdHJpbmd8UHJvdGVjdGVkUmVzb3VyY2VTY29wZXM+IHwgbnVsbD47XHJcbiAgICBhdXRoUmVxdWVzdD86IE1zYWxJbnRlcmNlcHRvckF1dGhSZXF1ZXN0IHwgKChtc2FsU2VydmljZTogTXNhbFNlcnZpY2UsIHJlcTogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIG9yaWdpbmFsQXV0aFJlcXVlc3Q6IE1zYWxJbnRlcmNlcHRvckF1dGhSZXF1ZXN0KSA9PiBNc2FsSW50ZXJjZXB0b3JBdXRoUmVxdWVzdCk7XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBQcm90ZWN0ZWRSZXNvdXJjZVNjb3BlcyA9IHtcclxuICAgIGh0dHBNZXRob2Q6IHN0cmluZyxcclxuICAgIHNjb3BlczogQXJyYXk8c3RyaW5nPlxyXG59O1xyXG4iXX0=

@@ -24,3 +24,3 @@ /*

this.authService.getLogger().verbose("MSAL Interceptor activated");
const scopes = this.getScopesForEndpoint(req.url);
const scopes = this.getScopesForEndpoint(req.url, req.method);
// If no scopes for endpoint, does not acquire token

@@ -83,6 +83,7 @@ if (!scopes || scopes.length === 0) {

* @param endpoint Url of the request
* @param endpoint Http method of the request
* @returns Array of scopes, or null if not found
*
*/
getScopesForEndpoint(endpoint) {
getScopesForEndpoint(endpoint, httpMethod) {
this.authService.getLogger().verbose("Interceptor - getting scopes for endpoint");

@@ -92,3 +93,17 @@ // Ensures endpoints and protected resources compared are normalized

const protectedResourcesArray = Array.from(this.msalInterceptorConfig.protectedResourceMap.keys());
const keyMatchesEndpointArray = protectedResourcesArray.filter(key => {
const matchingProtectedResources = this.matchResourcesToEndpoint(protectedResourcesArray, normalizedEndpoint);
if (matchingProtectedResources.length > 0) {
return this.matchScopesToEndpoint(this.msalInterceptorConfig.protectedResourceMap, matchingProtectedResources, httpMethod);
}
return null;
}
/**
* Finds resource endpoints that match request endpoint
* @param protectedResourcesArray
* @param endpoint
* @param location
* @returns
*/
matchResourcesToEndpoint(protectedResourcesEndpoints, endpoint) {
return protectedResourcesEndpoints.filter(key => {
const normalizedKey = this.location.normalize(key);

@@ -100,15 +115,56 @@ // Normalized key should include query strings if applicable

if (relativeNormalizedKey === "" || relativeNormalizedKey === "/*") {
return StringUtils.matchPattern(normalizedKey, normalizedEndpoint);
return StringUtils.matchPattern(normalizedKey, endpoint);
}
else {
// Matching endpoint with both protected resource and relative url of protected resource
return StringUtils.matchPattern(normalizedKey, normalizedEndpoint) || StringUtils.matchPattern(relativeNormalizedKey, normalizedEndpoint);
return StringUtils.matchPattern(normalizedKey, endpoint) || StringUtils.matchPattern(relativeNormalizedKey, endpoint);
}
});
// Process all protected resources and send the first matched resource
if (keyMatchesEndpointArray.length > 0) {
const keyForEndpoint = keyMatchesEndpointArray[0];
if (keyForEndpoint) {
return this.msalInterceptorConfig.protectedResourceMap.get(keyForEndpoint);
}
/**
* Finds scopes from first matching endpoint with HTTP method that matches request
* @param protectedResourceMap Protected resource map
* @param endpointArray Array of resources that match request endpoint
* @param httpMethod Http method of the request
* @returns
*/
matchScopesToEndpoint(protectedResourceMap, endpointArray, httpMethod) {
const allMatchedScopes = [];
// Check each matched endpoint for matching HttpMethod and scopes
endpointArray.forEach(matchedEndpoint => {
const scopesForEndpoint = [];
const methodAndScopesArray = protectedResourceMap.get(matchedEndpoint);
// Return if resource is unprotected
if (methodAndScopesArray === null) {
allMatchedScopes.push(null);
return;
}
methodAndScopesArray.forEach(entry => {
// Entry is either array of scopes or ProtectedResourceScopes object
if (typeof entry === "string") {
scopesForEndpoint.push(entry);
}
else {
// Ensure methods being compared are normalized
const normalizedRequestMethod = httpMethod.toLowerCase();
const normalizedResourceMethod = entry.httpMethod.toLowerCase();
// Method in protectedResourceMap matches request http method
if (normalizedResourceMethod === normalizedRequestMethod) {
entry.scopes.forEach(scope => {
scopesForEndpoint.push(scope);
});
}
}
});
// Only add to all scopes if scopes for endpoint and method is found
if (scopesForEndpoint.length > 0) {
allMatchedScopes.push(scopesForEndpoint);
}
});
if (allMatchedScopes.length > 0) {
if (allMatchedScopes.length > 1) {
this.authService.getLogger().warning("Interceptor - More than 1 matching scopes for endpoint found.");
}
// Returns scopes for first matching endpoint
return allMatchedScopes[0];
}

@@ -126,2 +182,2 @@ return null;

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9qYW51dHRlci9Db2RlL21pY3Jvc29mdC1hdXRoZW50aWNhdGlvbi1saWJyYXJ5LWZvci1qcy9saWIvbXNhbC1hbmd1bGFyL3NyYy8iLCJzb3VyY2VzIjpbIm1zYWwuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBUUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBYyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBcUMsNkJBQTZCLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoSixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJdEQsTUFBTSxPQUFPLGVBQWU7SUFDeEIsWUFDNkMscUJBQW1ELEVBQ3BGLFdBQXdCLEVBQ3hCLFFBQWtCO1FBRmUsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUE4QjtRQUNwRixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQzNCLENBQUM7SUFFSiw4REFBOEQ7SUFDOUQsU0FBUyxDQUFDLEdBQXFCLEVBQUUsSUFBaUI7UUFDOUMsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsZUFBZSxLQUFLLGVBQWUsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLGVBQWUsS0FBSyxlQUFlLENBQUMsUUFBUSxFQUFFO1lBQ2pKLE1BQU0s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QUksY0FBYyxFQUFFO2dCQUNoQixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDOUU7U0FDSjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7OztZQXhISixVQUFVOzs7NENBR0YsTUFBTSxTQUFDLHVCQUF1QjtZQVQ5QixXQUFXO1lBSFgsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHtcclxuICAgIEh0dHBSZXF1ZXN0LFxyXG4gICAgSHR0cEhhbmRsZXIsXHJcbiAgICBIdHRwRXZlbnQsXHJcbiAgICBIdHRwSW50ZXJjZXB0b3JcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIEVNUFRZLCBvZiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCwgY2F0Y2hFcnJvciB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBNc2FsU2VydmljZSB9IGZyb20gXCIuL21zYWwuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBBY2NvdW50SW5mbywgQXV0aGVudGljYXRpb25SZXN1bHQsIEJyb3dzZXJDb25maWd1cmF0aW9uQXV0aEVycm9yLCBJbnRlcmFjdGlvblR5cGUsIFN0cmluZ1V0aWxzLCBVcmxTdHJpbmcgfSBmcm9tIFwiQGF6dXJlL21zYWwtYnJvd3NlclwiO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBNU0FMX0lOVEVSQ0VQVE9SX0NPTkZJRyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBNc2FsSW50ZXJjZXB0b3JBdXRoUmVxdWVzdCwgTXNhbEludGVyY2VwdG9yQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuL21zYWwuaW50ZXJjZXB0b3IuY29uZmlnXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBNc2FsSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgQEluamVjdChNU0FMX0lOVEVSQ0VQVE9SX0NPTkZJRykgcHJpdmF0ZSBtc2FsSW50ZXJjZXB0b3JDb25maWc6IE1zYWxJbnRlcmNlcHRvckNvbmZpZ3VyYXRpb24sXHJcbiAgICAgICAgcHJpdmF0ZSBhdXRoU2VydmljZTogTXNhbFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb25cclxuICAgICkge31cclxuXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XHJcbiAgICAgICAgaWYgKHRoaXMubXNhbEludGVyY2VwdG9yQ29uZmlnLmludGVyYWN0aW9uVHlwZSAhPT0gSW50ZXJhY3Rpb25UeXBlLlBvcHVwICYmIHRoaXMubXNhbEludGVyY2VwdG9yQ29uZmlnLmludGVyYWN0aW9uVHlwZSAhPT0gSW50ZXJhY3Rpb25UeXBlLlJlZGlyZWN0KSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBCcm93c2VyQ29uZmlndXJhdGlvbkF1dGhFcnJvcihcImludmFsaWRfaW50ZXJhY3Rpb25fdHlwZVwiLCBcIkludmFsaWQgaW50ZXJhY3Rpb24gdHlwZSBwcm92aWRlZCB0byBNU0FMIEludGVyY2VwdG9yLiBJbnRlcmFjdGlvblR5cGUuUG9wdXAsIEludGVyYWN0aW9uVHlwZS5SZWRpcmVjdCBtdXN0IGJlIHByb3ZpZGVkIGluIHRoZSBtc2FsSW50ZXJjZXB0b3JDb25maWd1cmF0aW9uXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRMb2dnZXIoKS52ZXJib3NlKFwiTVNBTCBJbnRlcmNlcHRvciBhY3RpdmF0ZWRcIik7XHJcbiAgICAgICAgY29uc3Qgc2NvcGVzID0gdGhpcy5nZXRTY29wZXNGb3JFbmRwb2ludChyZXEudXJsKTtcclxuXHJcbiAgICAgICAgLy8gSWYgbm8gc2NvcGVzIGZvciBlbmRwb2ludCwgZG9lcyBub3QgYWNxdWlyZSB0b2tlblxyXG4gICAgICAgIGlmICghc2NvcGVzIHx8IHNjb3Blcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRMb2dnZXIoKS52ZXJib3NlKFwiSW50ZXJjZXB0b3IgLSBubyBzY29wZXMgZm9yIGVuZHBvaW50XCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFNldHMgYWNjb3VudCBhcyBhY3RpdmUgYWNjb3VudCBvciBmaXJzdCBhY2NvdW50XHJcbiAgICAgICAgbGV0IGFjY291bnQ6IEFjY291bnRJbmZvO1xyXG4gICAgICAgIGlmICghIXRoaXMuYXV0aFNlcnZpY2UuaW5zdGFuY2UuZ2V0QWN0aXZlQWNjb3VudCgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0TG9nZ2VyKCkudmVyYm9zZShcIkludGVyY2VwdG9yIC0gYWN0aXZlIGFjY291bnQgc2VsZWN0ZWRcIik7XHJcbiAgICAgICAgICAgIGFjY291bnQgPSB0aGlzLmF1dGhTZXJ2aWNlLmluc3RhbmNlLmdldEFjdGl2ZUFjY291bnQoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLnZlcmJvc2UoXCJJbnRlcmNlcHRvciAtIG5vIGFjdGl2ZSBhY2NvdW50LCBmYWxsYmFjayB0byBmaXJzdCBhY2NvdW50XCIpO1xyXG4gICAgICAgICAgICBhY2NvdW50ID0gdGhpcy5hdXRoU2VydmljZS5pbnN0YW5jZS5nZXRBbGxBY2NvdW50cygpWzBdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgYXV0aFJlcXVlc3QgPSB0eXBlb2YgdGhpcy5tc2FsSW50ZXJjZXB0b3JDb25maWcuYXV0aFJlcXVlc3QgPT09IFwiZnVuY3Rpb25cIlxyXG4gICAgICAgICAgICA/IHRoaXMubXNhbEludGVyY2VwdG9yQ29uZmlnLmF1dGhSZXF1ZXN0KHRoaXMuYXV0aFNlcnZpY2UsIHJlcSwgeyBhY2NvdW50OiBhY2NvdW50IH0pXHJcbiAgICAgICAgICAgIDogeyAuLi50aGlzLm1zYWxJbnRlcmNlcHRvckNvbmZpZy5hdXRoUmVxdWVzdCwgYWNjb3VudCB9O1xyXG5cclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLmluZm8oYEludGVyY2VwdG9yIC0gJHtzY29wZXMubGVuZ3RofSBzY29wZXMgZm91bmQgZm9yIGVuZHBvaW50YCk7XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRMb2dnZXIoKS5pbmZvUGlpKGBJbnRlcmNlcHRvciAtIFske3Njb3Blc31dIHNjb3BlcyBmb3VuZCBmb3IgJHtyZXEudXJsfWApO1xyXG5cclxuICAgICAgICAvLyBOb3RlOiBGb3IgTVNBIGFjY291bnRzLCBpbmNsdWRlIG9wZW5pZCBzY29wZSB3aGVuIGNhbGxpbmcgYWNxdWlyZVRva2VuU2lsZW50IHRvIHJldHVybiBpZFRva2VuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuYWNxdWlyZVRva2VuU2lsZW50KHsuLi5hdXRoUmVxdWVzdCwgc2NvcGVzLCBhY2NvdW50IH0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRMb2dnZXIoKS5lcnJvcihcIkludGVyY2VwdG9yIC0gYWNxdWlyZVRva2VuU2lsZW50IHJlamVjdGVkIHdpdGggZXJyb3IuIEludm9raW5nIGludGVyYWN0aW9uIHRvIHJlc29sdmUuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFjcXVpcmVUb2tlbkludGVyYWN0aXZlbHkoYXV0aFJlcXVlc3QsIHNjb3Blcyk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgocmVzdWx0OiBBdXRoZW50aWNhdGlvblJlc3VsdCkgID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5hY2Nlc3NUb2tlbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLmVycm9yKFwiSW50ZXJjZXB0b3IgLSBhY3F1aXJlVG9rZW5TaWxlbnQgcmVzb2x2ZWQgd2l0aCBudWxsIGFjY2VzcyB0b2tlbi4gS25vd24gaXNzdWUgd2l0aCBCMkMgdGVuYW50cywgaW52b2tpbmcgaW50ZXJhY3Rpb24gdG8gcmVzb2x2ZS5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFjcXVpcmVUb2tlbkludGVyYWN0aXZlbHkoYXV0aFJlcXVlc3QsIHNjb3Blcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihyZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHJlc3VsdDogQXV0aGVudGljYXRpb25SZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLnZlcmJvc2UoXCJJbnRlcmNlcHRvciAtIHNldHRpbmcgYXV0aG9yaXphdGlvbiBoZWFkZXJzXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSByZXEuaGVhZGVyc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0KFwiQXV0aG9yaXphdGlvblwiLCBgQmVhcmVyICR7cmVzdWx0LmFjY2Vzc1Rva2VufWApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0Q2xvbmUgPSByZXEuY2xvbmUoe2hlYWRlcnN9KTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdENsb25lKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbnZva2UgaW50ZXJhY3Rpb24gZm9yIHRoZSBnaXZlbiBzZXQgb2Ygc2NvcGVzXHJcbiAgICAgKiBAcGFyYW0gc2NvcGVzIEFycmF5IG9mIHNjb3BlcyBmb3IgdGhlIHJlcXVlc3RcclxuICAgICAqIEByZXR1cm5zIFJlc3VsdCBmcm9tIHRoZSBpbnRlcmFjdGl2ZSByZXF1ZXN0XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgYWNxdWlyZVRva2VuSW50ZXJhY3RpdmVseShhdXRoUmVxdWVzdDogTXNhbEludGVyY2VwdG9yQXV0aFJlcXVlc3QsIHNjb3Blczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPEF1dGhlbnRpY2F0aW9uUmVzdWx0PiB7XHJcbiAgICAgICAgaWYgKHRoaXMubXNhbEludGVyY2VwdG9yQ29uZmlnLmludGVyYWN0aW9uVHlwZSA9PT0gSW50ZXJhY3Rpb25UeXBlLlBvcHVwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0TG9nZ2VyKCkudmVyYm9zZShcIkludGVyY2VwdG9yIC0gZXJyb3IgYWNxdWlyaW5nIHRva2VuIHNpbGVudGx5LCBhY3F1aXJpbmcgYnkgcG9wdXBcIik7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLmFjcXVpcmVUb2tlblBvcHVwKHsgLi4uYXV0aFJlcXVlc3QsIHNjb3BlcyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRMb2dnZXIoKS52ZXJib3NlKFwiSW50ZXJjZXB0b3IgLSBlcnJvciBhY3F1aXJpbmcgdG9rZW4gc2lsZW50bHksIGFjcXVpcmluZyBieSByZWRpcmVjdFwiKTtcclxuICAgICAgICBjb25zdCByZWRpcmVjdFN0YXJ0UGFnZSA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuYWNxdWlyZVRva2VuUmVkaXJlY3Qoey4uLmF1dGhSZXF1ZXN0LCBzY29wZXMsIHJlZGlyZWN0U3RhcnRQYWdlIH0pO1xyXG4gICAgICAgIHJldHVybiBFTVBUWTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIExvb2tzIHVwIHRoZSBzY29wZXMgZm9yIHRoZSBnaXZlbiBlbmRwb2ludCBmcm9tIHRoZSBwcm90ZWN0ZWRSZXNvdXJjZU1hcFxyXG4gICAgICogQHBhcmFtIGVuZHBvaW50IFVybCBvZiB0aGUgcmVxdWVzdFxyXG4gICAgICogQHJldHVybnMgQXJyYXkgb2Ygc2NvcGVzLCBvciBudWxsIGlmIG5vdCBmb3VuZFxyXG4gICAgICpcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnZXRTY29wZXNGb3JFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKTogQXJyYXk8c3RyaW5nPnxudWxsIHtcclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLnZlcmJvc2UoXCJJbnRlcmNlcHRvciAtIGdldHRpbmcgc2NvcGVzIGZvciBlbmRwb2ludFwiKTtcclxuXHJcbiAgICAgICAgLy8gRW5zdXJlcyBlbmRwb2ludHMgYW5kIHByb3RlY3RlZCByZXNvdXJjZXMgY29tcGFyZWQgYXJlIG5vcm1hbGl6ZWRcclxuICAgICAgICBjb25zdCBub3JtYWxpemVkRW5kcG9pbnQgPSB0aGlzLmxvY2F0aW9uLm5vcm1hbGl6ZShlbmRwb2ludCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHByb3RlY3RlZFJlc291cmNlc0FycmF5ID0gQXJyYXkuZnJvbSh0aGlzLm1zYWxJbnRlcmNlcHRvckNvbmZpZy5wcm90ZWN0ZWRSZXNvdXJjZU1hcC5rZXlzKCkpO1xyXG5cclxuICAgICAgICBjb25zdCBrZXlNYXRjaGVzRW5kcG9pbnRBcnJheSA9IHByb3RlY3RlZFJlc291cmNlc0FycmF5LmZpbHRlcihrZXkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkS2V5ID0gdGhpcy5sb2NhdGlvbi5ub3JtYWxpemUoa2V5KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIE5vcm1hbGl6ZWQga2V5IHNob3VsZCBpbmNsdWRlIHF1ZXJ5IHN0cmluZ3MgaWYgYXBwbGljYWJsZVxyXG4gICAgICAgICAgICBjb25zdCBrZXlDb21wb25lbnRzID0gbmV3IFVybFN0cmluZyhrZXkpLmdldFVybENvbXBvbmVudHMoKTtcclxuICAgICAgICAgICAgY29uc3QgcmVsYXRpdmVOb3JtYWxpemVkS2V5ID0ga2V5Q29tcG9uZW50cy5RdWVyeVN0cmluZyA/IGAke2tleUNvbXBvbmVudHMuQWJzb2x1dGVQYXRofT8ke2tleUNvbXBvbmVudHMuUXVlcnlTdHJpbmd9YCA6IHRoaXMubG9jYXRpb24ubm9ybWFsaXplKGtleUNvbXBvbmVudHMuQWJzb2x1dGVQYXRoKTtcclxuXHJcbiAgICAgICAgICAgIC8vIFJlbGF0aXZlIGVuZHBvaW50IG5vdCBhcHBsaWNhYmxlLCBtYXRjaGluZyBlbmRwb2ludCB3aXRoIHByb3RlY3RlZCByZXNvdXJjZS4gU3RyaW5nVXRpbHMubWF0Y2hQYXR0ZXJuIGFjY291bnRzIGZvciB3aWxkY2FyZHNcclxuICAgICAgICAgICAgaWYgKHJlbGF0aXZlTm9ybWFsaXplZEtleSA9PT0gXCJcIiB8fCByZWxhdGl2ZU5vcm1hbGl6ZWRLZXkgPT09IFwiLypcIikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZ1V0aWxzLm1hdGNoUGF0dGVybihub3JtYWxpemVkS2V5LCBub3JtYWxpemVkRW5kcG9pbnQpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gTWF0Y2hpbmcgZW5kcG9pbnQgd2l0aCBib3RoIHByb3RlY3RlZCByZXNvdXJjZSBhbmQgcmVsYXRpdmUgdXJsIG9mIHByb3RlY3RlZCByZXNvdXJjZVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZ1V0aWxzLm1hdGNoUGF0dGVybihub3JtYWxpemVkS2V5LCBub3JtYWxpemVkRW5kcG9pbnQpIHx8IFN0cmluZ1V0aWxzLm1hdGNoUGF0dGVybihyZWxhdGl2ZU5vcm1hbGl6ZWRLZXksIG5vcm1hbGl6ZWRFbmRwb2ludCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gUHJvY2VzcyBhbGwgcHJvdGVjdGVkIHJlc291cmNlcyBhbmQgc2VuZCB0aGUgZmlyc3QgbWF0Y2hlZCByZXNvdXJjZVxyXG4gICAgICAgIGlmIChrZXlNYXRjaGVzRW5kcG9pbnRBcnJheS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGtleUZvckVuZHBvaW50ID0ga2V5TWF0Y2hlc0VuZHBvaW50QXJyYXlbMF07XHJcbiAgICAgICAgICAgIGlmIChrZXlGb3JFbmRwb2ludCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubXNhbEludGVyY2VwdG9yQ29uZmlnLnByb3RlY3RlZFJlc291cmNlTWFwLmdldChrZXlGb3JFbmRwb2ludCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tc2FsLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQVFILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQWMsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQXFDLDZCQUE2QixFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEosT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSXRELE1BQU0sT0FBTyxlQUFlO0lBQ3hCLFlBQzZDLHFCQUFtRCxFQUNwRixXQUF3QixFQUN4QixRQUFrQjtRQUZlLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBOEI7UUFDcEYsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUMzQixDQUFDO0lBRUosOERBQThEO0lBQzlELFNBQVMsQ0FBQyxHQUFxQixFQUFFLElBQWlCO1FBQzlDLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLGVBQWUsS0FBSyxlQUFlLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLEtBQUssZUFBZSxDQUFDLFFBQVEsRUFBRTtZQUNqSixNQUFNLElBQUksNkJBQTZCLENBQUMsMEJBQTBCLEVBQUUsNkpBQTZKLENBQUMsQ0FBQztTQUN0TztRQUVELElBQUksQ0FBQyxXQUFXLENB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Qzt3QkFDbEMsQ0FBQyxDQUFDLENBQUM7cUJBQ047aUJBQ0o7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUVILG9FQUFvRTtZQUNwRSxJQUFJLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzlCLGdCQUFnQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2FBQzVDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDN0IsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQywrREFBK0QsQ0FBQyxDQUFDO2FBQ3pHO1lBQ0QsNkNBQTZDO1lBQzdDLE9BQU8sZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDOUI7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOzs7WUF4TEosVUFBVTs7OzRDQUdGLE1BQU0sU0FBQyx1QkFBdUI7WUFUOUIsV0FBVztZQUhYLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7XHJcbiAgICBIdHRwUmVxdWVzdCxcclxuICAgIEh0dHBIYW5kbGVyLFxyXG4gICAgSHR0cEV2ZW50LFxyXG4gICAgSHR0cEludGVyY2VwdG9yXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBFTVBUWSwgb2YgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAsIGNhdGNoRXJyb3IgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgTXNhbFNlcnZpY2UgfSBmcm9tIFwiLi9tc2FsLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQWNjb3VudEluZm8sIEF1dGhlbnRpY2F0aW9uUmVzdWx0LCBCcm93c2VyQ29uZmlndXJhdGlvbkF1dGhFcnJvciwgSW50ZXJhY3Rpb25UeXBlLCBTdHJpbmdVdGlscywgVXJsU3RyaW5nIH0gZnJvbSBcIkBhenVyZS9tc2FsLWJyb3dzZXJcIjtcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTVNBTF9JTlRFUkNFUFRPUl9DT05GSUcgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgTXNhbEludGVyY2VwdG9yQXV0aFJlcXVlc3QsIE1zYWxJbnRlcmNlcHRvckNvbmZpZ3VyYXRpb24sIFByb3RlY3RlZFJlc291cmNlU2NvcGVzIH0gZnJvbSBcIi4vbXNhbC5pbnRlcmNlcHRvci5jb25maWdcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE1zYWxJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KE1TQUxfSU5URVJDRVBUT1JfQ09ORklHKSBwcml2YXRlIG1zYWxJbnRlcmNlcHRvckNvbmZpZzogTXNhbEludGVyY2VwdG9yQ29uZmlndXJhdGlvbixcclxuICAgICAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBNc2FsU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvblxyXG4gICAgKSB7fVxyXG5cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcclxuICAgICAgICBpZiAodGhpcy5tc2FsSW50ZXJjZXB0b3JDb25maWcuaW50ZXJhY3Rpb25UeXBlICE9PSBJbnRlcmFjdGlvblR5cGUuUG9wdXAgJiYgdGhpcy5tc2FsSW50ZXJjZXB0b3JDb25maWcuaW50ZXJhY3Rpb25UeXBlICE9PSBJbnRlcmFjdGlvblR5cGUuUmVkaXJlY3QpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEJyb3dzZXJDb25maWd1cmF0aW9uQXV0aEVycm9yKFwiaW52YWxpZF9pbnRlcmFjdGlvbl90eXBlXCIsIFwiSW52YWxpZCBpbnRlcmFjdGlvbiB0eXBlIHByb3ZpZGVkIHRvIE1TQUwgSW50ZXJjZXB0b3IuIEludGVyYWN0aW9uVHlwZS5Qb3B1cCwgSW50ZXJhY3Rpb25UeXBlLlJlZGlyZWN0IG11c3QgYmUgcHJvdmlkZWQgaW4gdGhlIG1zYWxJbnRlcmNlcHRvckNvbmZpZ3VyYXRpb25cIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLnZlcmJvc2UoXCJNU0FMIEludGVyY2VwdG9yIGFjdGl2YXRlZFwiKTtcclxuICAgICAgICBjb25zdCBzY29wZXMgPSB0aGlzLmdldFNjb3Blc0ZvckVuZHBvaW50KHJlcS51cmwsIHJlcS5tZXRob2QpO1xyXG5cclxuICAgICAgICAvLyBJZiBubyBzY29wZXMgZm9yIGVuZHBvaW50LCBkb2VzIG5vdCBhY3F1aXJlIHRva2VuXHJcbiAgICAgICAgaWYgKCFzY29wZXMgfHwgc2NvcGVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLnZlcmJvc2UoXCJJbnRlcmNlcHRvciAtIG5vIHNjb3BlcyBmb3IgZW5kcG9pbnRcIik7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gU2V0cyBhY2NvdW50IGFzIGFjdGl2ZSBhY2NvdW50IG9yIGZpcnN0IGFjY291bnRcclxuICAgICAgICBsZXQgYWNjb3VudDogQWNjb3VudEluZm87XHJcbiAgICAgICAgaWYgKCEhdGhpcy5hdXRoU2VydmljZS5pbnN0YW5jZS5nZXRBY3RpdmVBY2NvdW50KCkpIHtcclxuICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRMb2dnZXIoKS52ZXJib3NlKFwiSW50ZXJjZXB0b3IgLSBhY3RpdmUgYWNjb3VudCBzZWxlY3RlZFwiKTtcclxuICAgICAgICAgICAgYWNjb3VudCA9IHRoaXMuYXV0aFNlcnZpY2UuaW5zdGFuY2UuZ2V0QWN0aXZlQWNjb3VudCgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0TG9nZ2VyKCkudmVyYm9zZShcIkludGVyY2VwdG9yIC0gbm8gYWN0aXZlIGFjY291bnQsIGZhbGxiYWNrIHRvIGZpcnN0IGFjY291bnRcIik7XHJcbiAgICAgICAgICAgIGFjY291bnQgPSB0aGlzLmF1dGhTZXJ2aWNlLmluc3RhbmNlLmdldEFsbEFjY291bnRzKClbMF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBhdXRoUmVxdWVzdCA9IHR5cGVvZiB0aGlzLm1zYWxJbnRlcmNlcHRvckNvbmZpZy5hdXRoUmVxdWVzdCA9PT0gXCJmdW5jdGlvblwiXHJcbiAgICAgICAgICAgID8gdGhpcy5tc2FsSW50ZXJjZXB0b3JDb25maWcuYXV0aFJlcXVlc3QodGhpcy5hdXRoU2VydmljZSwgcmVxLCB7IGFjY291bnQ6IGFjY291bnQgfSlcclxuICAgICAgICAgICAgOiB7IC4uLnRoaXMubXNhbEludGVyY2VwdG9yQ29uZmlnLmF1dGhSZXF1ZXN0LCBhY2NvdW50IH07XHJcblxyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0TG9nZ2VyKCkuaW5mbyhgSW50ZXJjZXB0b3IgLSAke3Njb3Blcy5sZW5ndGh9IHNjb3BlcyBmb3VuZCBmb3IgZW5kcG9pbnRgKTtcclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLmluZm9QaWkoYEludGVyY2VwdG9yIC0gWyR7c2NvcGVzfV0gc2NvcGVzIGZvdW5kIGZvciAke3JlcS51cmx9YCk7XHJcblxyXG4gICAgICAgIC8vIE5vdGU6IEZvciBNU0EgYWNjb3VudHMsIGluY2x1ZGUgb3BlbmlkIHNjb3BlIHdoZW4gY2FsbGluZyBhY3F1aXJlVG9rZW5TaWxlbnQgdG8gcmV0dXJuIGlkVG9rZW5cclxuICAgICAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5hY3F1aXJlVG9rZW5TaWxlbnQoey4uLmF1dGhSZXF1ZXN0LCBzY29wZXMsIGFjY291bnQgfSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLmVycm9yKFwiSW50ZXJjZXB0b3IgLSBhY3F1aXJlVG9rZW5TaWxlbnQgcmVqZWN0ZWQgd2l0aCBlcnJvci4gSW52b2tpbmcgaW50ZXJhY3Rpb24gdG8gcmVzb2x2ZS5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWNxdWlyZVRva2VuSW50ZXJhY3RpdmVseShhdXRoUmVxdWVzdCwgc2NvcGVzKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKChyZXN1bHQ6IEF1dGhlbnRpY2F0aW9uUmVzdWx0KSAgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmFjY2Vzc1Rva2VuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0TG9nZ2VyKCkuZXJyb3IoXCJJbnRlcmNlcHRvciAtIGFjcXVpcmVUb2tlblNpbGVudCByZXNvbHZlZCB3aXRoIG51bGwgYWNjZXNzIHRva2VuLiBLbm93biBpc3N1ZSB3aXRoIEIyQyB0ZW5hbnRzLCBpbnZva2luZyBpbnRlcmFjdGlvbiB0byByZXNvbHZlLlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWNxdWlyZVRva2VuSW50ZXJhY3RpdmVseShhdXRoUmVxdWVzdCwgc2NvcGVzKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgocmVzdWx0OiBBdXRoZW50aWNhdGlvblJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0TG9nZ2VyKCkudmVyYm9zZShcIkludGVyY2VwdG9yIC0gc2V0dGluZyBhdXRob3JpemF0aW9uIGhlYWRlcnNcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGVhZGVycyA9IHJlcS5oZWFkZXJzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZXQoXCJBdXRob3JpemF0aW9uXCIsIGBCZWFyZXIgJHtyZXN1bHQuYWNjZXNzVG9rZW59YCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RDbG9uZSA9IHJlcS5jbG9uZSh7aGVhZGVyc30pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0Q2xvbmUpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEludm9rZSBpbnRlcmFjdGlvbiBmb3IgdGhlIGdpdmVuIHNldCBvZiBzY29wZXNcclxuICAgICAqIEBwYXJhbSBzY29wZXMgQXJyYXkgb2Ygc2NvcGVzIGZvciB0aGUgcmVxdWVzdFxyXG4gICAgICogQHJldHVybnMgUmVzdWx0IGZyb20gdGhlIGludGVyYWN0aXZlIHJlcXVlc3RcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBhY3F1aXJlVG9rZW5JbnRlcmFjdGl2ZWx5KGF1dGhSZXF1ZXN0OiBNc2FsSW50ZXJjZXB0b3JBdXRoUmVxdWVzdCwgc2NvcGVzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8QXV0aGVudGljYXRpb25SZXN1bHQ+IHtcclxuICAgICAgICBpZiAodGhpcy5tc2FsSW50ZXJjZXB0b3JDb25maWcuaW50ZXJhY3Rpb25UeXBlID09PSBJbnRlcmFjdGlvblR5cGUuUG9wdXApIHtcclxuICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRMb2dnZXIoKS52ZXJib3NlKFwiSW50ZXJjZXB0b3IgLSBlcnJvciBhY3F1aXJpbmcgdG9rZW4gc2lsZW50bHksIGFjcXVpcmluZyBieSBwb3B1cFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuYWNxdWlyZVRva2VuUG9wdXAoeyAuLi5hdXRoUmVxdWVzdCwgc2NvcGVzIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLnZlcmJvc2UoXCJJbnRlcmNlcHRvciAtIGVycm9yIGFjcXVpcmluZyB0b2tlbiBzaWxlbnRseSwgYWNxdWlyaW5nIGJ5IHJlZGlyZWN0XCIpO1xyXG4gICAgICAgIGNvbnN0IHJlZGlyZWN0U3RhcnRQYWdlID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5hY3F1aXJlVG9rZW5SZWRpcmVjdCh7Li4uYXV0aFJlcXVlc3QsIHNjb3BlcywgcmVkaXJlY3RTdGFydFBhZ2UgfSk7XHJcbiAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTG9va3MgdXAgdGhlIHNjb3BlcyBmb3IgdGhlIGdpdmVuIGVuZHBvaW50IGZyb20gdGhlIHByb3RlY3RlZFJlc291cmNlTWFwXHJcbiAgICAgKiBAcGFyYW0gZW5kcG9pbnQgVXJsIG9mIHRoZSByZXF1ZXN0XHJcbiAgICAgKiBAcGFyYW0gZW5kcG9pbnQgSHR0cCBtZXRob2Qgb2YgdGhlIHJlcXVlc3RcclxuICAgICAqIEByZXR1cm5zIEFycmF5IG9mIHNjb3Blcywgb3IgbnVsbCBpZiBub3QgZm91bmRcclxuICAgICAqXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2V0U2NvcGVzRm9yRW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZywgaHR0cE1ldGhvZDogc3RyaW5nKTogQXJyYXk8c3RyaW5nPnxudWxsIHtcclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLnZlcmJvc2UoXCJJbnRlcmNlcHRvciAtIGdldHRpbmcgc2NvcGVzIGZvciBlbmRwb2ludFwiKTtcclxuXHJcbiAgICAgICAgLy8gRW5zdXJlcyBlbmRwb2ludHMgYW5kIHByb3RlY3RlZCByZXNvdXJjZXMgY29tcGFyZWQgYXJlIG5vcm1hbGl6ZWRcclxuICAgICAgICBjb25zdCBub3JtYWxpemVkRW5kcG9pbnQgPSB0aGlzLmxvY2F0aW9uLm5vcm1hbGl6ZShlbmRwb2ludCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHByb3RlY3RlZFJlc291cmNlc0FycmF5ID0gQXJyYXkuZnJvbSh0aGlzLm1zYWxJbnRlcmNlcHRvckNvbmZpZy5wcm90ZWN0ZWRSZXNvdXJjZU1hcC5rZXlzKCkpO1xyXG5cclxuICAgICAgICBjb25zdCBtYXRjaGluZ1Byb3RlY3RlZFJlc291cmNlcyA9IHRoaXMubWF0Y2hSZXNvdXJjZXNUb0VuZHBvaW50KHByb3RlY3RlZFJlc291cmNlc0FycmF5LCBub3JtYWxpemVkRW5kcG9pbnQpO1xyXG5cclxuICAgICAgICBpZiAobWF0Y2hpbmdQcm90ZWN0ZWRSZXNvdXJjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXRjaFNjb3Blc1RvRW5kcG9pbnQodGhpcy5tc2FsSW50ZXJjZXB0b3JDb25maWcucHJvdGVjdGVkUmVzb3VyY2VNYXAsIG1hdGNoaW5nUHJvdGVjdGVkUmVzb3VyY2VzLCBodHRwTWV0aG9kKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmluZHMgcmVzb3VyY2UgZW5kcG9pbnRzIHRoYXQgbWF0Y2ggcmVxdWVzdCBlbmRwb2ludFxyXG4gICAgICogQHBhcmFtIHByb3RlY3RlZFJlc291cmNlc0FycmF5IFxyXG4gICAgICogQHBhcmFtIGVuZHBvaW50IFxyXG4gICAgICogQHBhcmFtIGxvY2F0aW9uIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbWF0Y2hSZXNvdXJjZXNUb0VuZHBvaW50KHByb3RlY3RlZFJlc291cmNlc0VuZHBvaW50czogc3RyaW5nW10sIGVuZHBvaW50OiBzdHJpbmcpOiBBcnJheTxzdHJpbmc+IHtcclxuICAgICAgICByZXR1cm4gcHJvdGVjdGVkUmVzb3VyY2VzRW5kcG9pbnRzLmZpbHRlcihrZXkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkS2V5ID0gdGhpcy5sb2NhdGlvbi5ub3JtYWxpemUoa2V5KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIE5vcm1hbGl6ZWQga2V5IHNob3VsZCBpbmNsdWRlIHF1ZXJ5IHN0cmluZ3MgaWYgYXBwbGljYWJsZVxyXG4gICAgICAgICAgICBjb25zdCBrZXlDb21wb25lbnRzID0gbmV3IFVybFN0cmluZyhrZXkpLmdldFVybENvbXBvbmVudHMoKTtcclxuICAgICAgICAgICAgY29uc3QgcmVsYXRpdmVOb3JtYWxpemVkS2V5ID0ga2V5Q29tcG9uZW50cy5RdWVyeVN0cmluZyA/IGAke2tleUNvbXBvbmVudHMuQWJzb2x1dGVQYXRofT8ke2tleUNvbXBvbmVudHMuUXVlcnlTdHJpbmd9YCA6IHRoaXMubG9jYXRpb24ubm9ybWFsaXplKGtleUNvbXBvbmVudHMuQWJzb2x1dGVQYXRoKTtcclxuXHJcbiAgICAgICAgICAgIC8vIFJlbGF0aXZlIGVuZHBvaW50IG5vdCBhcHBsaWNhYmxlLCBtYXRjaGluZyBlbmRwb2ludCB3aXRoIHByb3RlY3RlZCByZXNvdXJjZS4gU3RyaW5nVXRpbHMubWF0Y2hQYXR0ZXJuIGFjY291bnRzIGZvciB3aWxkY2FyZHNcclxuICAgICAgICAgICAgaWYgKHJlbGF0aXZlTm9ybWFsaXplZEtleSA9PT0gXCJcIiB8fCByZWxhdGl2ZU5vcm1hbGl6ZWRLZXkgPT09IFwiLypcIikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZ1V0aWxzLm1hdGNoUGF0dGVybihub3JtYWxpemVkS2V5LCBlbmRwb2ludCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBNYXRjaGluZyBlbmRwb2ludCB3aXRoIGJvdGggcHJvdGVjdGVkIHJlc291cmNlIGFuZCByZWxhdGl2ZSB1cmwgb2YgcHJvdGVjdGVkIHJlc291cmNlXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nVXRpbHMubWF0Y2hQYXR0ZXJuKG5vcm1hbGl6ZWRLZXksIGVuZHBvaW50KSB8fCBTdHJpbmdVdGlscy5tYXRjaFBhdHRlcm4ocmVsYXRpdmVOb3JtYWxpemVkS2V5LCBlbmRwb2ludCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpbmRzIHNjb3BlcyBmcm9tIGZpcnN0IG1hdGNoaW5nIGVuZHBvaW50IHdpdGggSFRUUCBtZXRob2QgdGhhdCBtYXRjaGVzIHJlcXVlc3RcclxuICAgICAqIEBwYXJhbSBwcm90ZWN0ZWRSZXNvdXJjZU1hcCBQcm90ZWN0ZWQgcmVzb3VyY2UgbWFwXHJcbiAgICAgKiBAcGFyYW0gZW5kcG9pbnRBcnJheSBBcnJheSBvZiByZXNvdXJjZXMgdGhhdCBtYXRjaCByZXF1ZXN0IGVuZHBvaW50XHJcbiAgICAgKiBAcGFyYW0gaHR0cE1ldGhvZCBIdHRwIG1ldGhvZCBvZiB0aGUgcmVxdWVzdFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbWF0Y2hTY29wZXNUb0VuZHBvaW50KHByb3RlY3RlZFJlc291cmNlTWFwOiBNYXA8c3RyaW5nLCBBcnJheTxzdHJpbmd8UHJvdGVjdGVkUmVzb3VyY2VTY29wZXM+IHwgbnVsbD4sIGVuZHBvaW50QXJyYXk6IHN0cmluZ1tdLCBodHRwTWV0aG9kOiBzdHJpbmcpOiBBcnJheTxzdHJpbmc+fG51bGwge1xyXG4gICAgICAgIGNvbnN0IGFsbE1hdGNoZWRTY29wZXMgPSBbXTtcclxuXHJcbiAgICAgICAgLy8gQ2hlY2sgZWFjaCBtYXRjaGVkIGVuZHBvaW50IGZvciBtYXRjaGluZyBIdHRwTWV0aG9kIGFuZCBzY29wZXNcclxuICAgICAgICBlbmRwb2ludEFycmF5LmZvckVhY2gobWF0Y2hlZEVuZHBvaW50ID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc2NvcGVzRm9yRW5kcG9pbnQgPSBbXTtcclxuICAgICAgICAgICAgY29uc3QgbWV0aG9kQW5kU2NvcGVzQXJyYXkgPSBwcm90ZWN0ZWRSZXNvdXJjZU1hcC5nZXQobWF0Y2hlZEVuZHBvaW50KTtcclxuXHJcbiAgICAgICAgICAgIC8vIFJldHVybiBpZiByZXNvdXJjZSBpcyB1bnByb3RlY3RlZFxyXG4gICAgICAgICAgICBpZiAobWV0aG9kQW5kU2NvcGVzQXJyYXkgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIGFsbE1hdGNoZWRTY29wZXMucHVzaChudWxsKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbWV0aG9kQW5kU2NvcGVzQXJyYXkuZm9yRWFjaChlbnRyeSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBFbnRyeSBpcyBlaXRoZXIgYXJyYXkgb2Ygc2NvcGVzIG9yIFByb3RlY3RlZFJlc291cmNlU2NvcGVzIG9iamVjdFxyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBlbnRyeSA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHNjb3Blc0ZvckVuZHBvaW50LnB1c2goZW50cnkpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBFbnN1cmUgbWV0aG9kcyBiZWluZyBjb21wYXJlZCBhcmUgbm9ybWFsaXplZFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRSZXF1ZXN0TWV0aG9kID0gaHR0cE1ldGhvZC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRSZXNvdXJjZU1ldGhvZCA9IGVudHJ5Lmh0dHBNZXRob2QudG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gTWV0aG9kIGluIHByb3RlY3RlZFJlc291cmNlTWFwIG1hdGNoZXMgcmVxdWVzdCBodHRwIG1ldGhvZFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChub3JtYWxpemVkUmVzb3VyY2VNZXRob2QgPT09IG5vcm1hbGl6ZWRSZXF1ZXN0TWV0aG9kKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LnNjb3Blcy5mb3JFYWNoKHNjb3BlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3Blc0ZvckVuZHBvaW50LnB1c2goc2NvcGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgLy8gT25seSBhZGQgdG8gYWxsIHNjb3BlcyBpZiBzY29wZXMgZm9yIGVuZHBvaW50IGFuZCBtZXRob2QgaXMgZm91bmRcclxuICAgICAgICAgICAgaWYgKHNjb3Blc0ZvckVuZHBvaW50Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGFsbE1hdGNoZWRTY29wZXMucHVzaChzY29wZXNGb3JFbmRwb2ludCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKGFsbE1hdGNoZWRTY29wZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBpZiAoYWxsTWF0Y2hlZFNjb3Blcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLndhcm5pbmcoXCJJbnRlcmNlcHRvciAtIE1vcmUgdGhhbiAxIG1hdGNoaW5nIHNjb3BlcyBmb3IgZW5kcG9pbnQgZm91bmQuXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIFJldHVybnMgc2NvcGVzIGZvciBmaXJzdCBtYXRjaGluZyBlbmRwb2ludFxyXG4gICAgICAgICAgICByZXR1cm4gYWxsTWF0Y2hlZFNjb3Blc1swXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=

@@ -46,2 +46,2 @@ /*

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvamFudXR0ZXIvQ29kZS9taWNyb3NvZnQtYXV0aGVudGljYXRpb24tbGlicmFyeS1mb3ItanMvbGliL21zYWwtYW5ndWxhci9zcmMvIiwic291cmNlcyI6WyJtc2FsLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRyxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQVlsRSxNQUFNLE9BQU8sVUFBVTtJQUNuQixNQUFNLENBQUMsT0FBTyxDQUNWLFlBQXNDLEVBQ3RDLFdBQW1DLEVBQ25DLGlCQUErQztRQUUvQyxPQUFPO1lBQ0gsUUFBUSxFQUFFLFVBQVU7WUFDcEIsU0FBUyxFQUFFO2dCQUNQO29CQUNJLE9BQU8sRUFBRSxhQUFhO29CQUN0QixRQUFRLEVBQUUsWUFBWTtpQkFDekI7Z0JBQ0Q7b0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjtvQkFDMUIsUUFBUSxFQUFFLFdBQVc7aUJBQ3hCO2dCQUNEO29CQUNJLE9BQU8sRUFBRSx1QkFBdUI7b0JBQ2hDLFFBQVEsRUFBRSxpQkFBaUI7aUJBQzlCO2dCQUNELFdBQVc7YUFDZDtTQUNKLENBQUM7SUFDTixDQUFDOzs7WUFsQ0osUUFBUSxTQUFDO2dCQUNOLFlBQVksRUFBRSxDQUFDLHFCQUFxQixDQUFDO2dCQUNyQyxPQUFPLEVBQUU7b0JBQ0wsWUFBWTtpQkFDZjtnQkFDRCxTQUFTLEVBQUU7b0JBQ1AsU0FBUztvQkFDVCxvQkFBb0I7aUJBQ3ZCO2FBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBJUHVibGljQ2xpZW50QXBwbGljYXRpb24gfSBmcm9tIFwiQGF6dXJlL21zYWwtYnJvd3NlclwiO1xyXG5pbXBvcnQgeyBNc2FsR3VhcmRDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4vbXNhbC5ndWFyZC5jb25maWdcIjtcclxuaW1wb3J0IHsgTXNhbEludGVyY2VwdG9yQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuL21zYWwuaW50ZXJjZXB0b3IuY29uZmlnXCI7XHJcbmltcG9ydCB7IE1zYWxHdWFyZCB9IGZyb20gXCIuL21zYWwuZ3VhcmRcIjtcclxuaW1wb3J0IHsgTXNhbEJyb2FkY2FzdFNlcnZpY2UgfSBmcm9tIFwiLi9tc2FsLmJyb2FkY2FzdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE1zYWxTZXJ2aWNlIH0gZnJvbSBcIi4vbXNhbC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE1TQUxfSU5TVEFOQ0UgLCBNU0FMX0dVQVJEX0NPTkZJRywgTVNBTF9JTlRFUkNFUFRPUl9DT05GSUcgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgTXNhbFJlZGlyZWN0Q29tcG9uZW50IH0gZnJvbSBcIi4vbXNhbC5yZWRpcmVjdC5jb21wb25lbnRcIjtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBkZWNsYXJhdGlvbnM6IFtNc2FsUmVkaXJlY3RDb21wb25lbnRdLFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIENvbW1vbk1vZHVsZVxyXG4gICAgXSxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIE1zYWxHdWFyZCxcclxuICAgICAgICBNc2FsQnJvYWRjYXN0U2VydmljZVxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTXNhbE1vZHVsZSB7XHJcbiAgICBzdGF0aWMgZm9yUm9vdChcclxuICAgICAgICBtc2FsSW5zdGFuY2U6IElQdWJsaWNDbGllbnRBcHBsaWNhdGlvbixcclxuICAgICAgICBndWFyZENvbmZpZzogTXNhbEd1YXJkQ29uZmlndXJhdGlvbixcclxuICAgICAgICBpbnRlcmNlcHRvckNvbmZpZzogTXNhbEludGVyY2VwdG9yQ29uZmlndXJhdGlvblxyXG4gICAgKTogTW9kdWxlV2l0aFByb3ZpZGVyczxNc2FsTW9kdWxlPiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbmdNb2R1bGU6IE1zYWxNb2R1bGUsXHJcbiAgICAgICAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGU6IE1TQUxfSU5TVEFOQ0UsXHJcbiAgICAgICAgICAgICAgICAgICAgdXNlVmFsdWU6IG1zYWxJbnN0YW5jZVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBNU0FMX0dVQVJEX0NPTkZJRyxcclxuICAgICAgICAgICAgICAgICAgICB1c2VWYWx1ZTogZ3VhcmRDb25maWdcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogTVNBTF9JTlRFUkNFUFRPUl9DT05GSUcsXHJcbiAgICAgICAgICAgICAgICAgICAgdXNlVmFsdWU6IGludGVyY2VwdG9yQ29uZmlnXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgTXNhbFNlcnZpY2VcclxuICAgICAgICAgICAgXVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbXNhbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBSS9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUcsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFZbEUsTUFBTSxPQUFPLFVBQVU7SUFDbkIsTUFBTSxDQUFDLE9BQU8sQ0FDVixZQUFzQyxFQUN0QyxXQUFtQyxFQUNuQyxpQkFBK0M7UUFFL0MsT0FBTztZQUNILFFBQVEsRUFBRSxVQUFVO1lBQ3BCLFNBQVMsRUFBRTtnQkFDUDtvQkFDSSxPQUFPLEVBQUUsYUFBYTtvQkFDdEIsUUFBUSxFQUFFLFlBQVk7aUJBQ3pCO2dCQUNEO29CQUNJLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFFBQVEsRUFBRSxXQUFXO2lCQUN4QjtnQkFDRDtvQkFDSSxPQUFPLEVBQUUsdUJBQXVCO29CQUNoQyxRQUFRLEVBQUUsaUJBQWlCO2lCQUM5QjtnQkFDRCxXQUFXO2FBQ2Q7U0FDSixDQUFDO0lBQ04sQ0FBQzs7O1lBbENKLFFBQVEsU0FBQztnQkFDTixZQUFZLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDckMsT0FBTyxFQUFFO29CQUNMLFlBQVk7aUJBQ2Y7Z0JBQ0QsU0FBUyxFQUFFO29CQUNQLFNBQVM7b0JBQ1Qsb0JBQW9CO2lCQUN2QjthQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cclxuICovXHJcblxyXG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgSVB1YmxpY0NsaWVudEFwcGxpY2F0aW9uIH0gZnJvbSBcIkBhenVyZS9tc2FsLWJyb3dzZXJcIjtcclxuaW1wb3J0IHsgTXNhbEd1YXJkQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuL21zYWwuZ3VhcmQuY29uZmlnXCI7XHJcbmltcG9ydCB7IE1zYWxJbnRlcmNlcHRvckNvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi9tc2FsLmludGVyY2VwdG9yLmNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBNc2FsR3VhcmQgfSBmcm9tIFwiLi9tc2FsLmd1YXJkXCI7XHJcbmltcG9ydCB7IE1zYWxCcm9hZGNhc3RTZXJ2aWNlIH0gZnJvbSBcIi4vbXNhbC5icm9hZGNhc3Quc2VydmljZVwiO1xyXG5pbXBvcnQgeyBNc2FsU2VydmljZSB9IGZyb20gXCIuL21zYWwuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBNU0FMX0lOU1RBTkNFICwgTVNBTF9HVUFSRF9DT05GSUcsIE1TQUxfSU5URVJDRVBUT1JfQ09ORklHIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IE1zYWxSZWRpcmVjdENvbXBvbmVudCB9IGZyb20gXCIuL21zYWwucmVkaXJlY3QuY29tcG9uZW50XCI7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgZGVjbGFyYXRpb25zOiBbTXNhbFJlZGlyZWN0Q29tcG9uZW50XSxcclxuICAgIGltcG9ydHM6IFtcclxuICAgICAgICBDb21tb25Nb2R1bGVcclxuICAgIF0sXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICBNc2FsR3VhcmQsXHJcbiAgICAgICAgTXNhbEJyb2FkY2FzdFNlcnZpY2VcclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIE1zYWxNb2R1bGUge1xyXG4gICAgc3RhdGljIGZvclJvb3QoXHJcbiAgICAgICAgbXNhbEluc3RhbmNlOiBJUHVibGljQ2xpZW50QXBwbGljYXRpb24sXHJcbiAgICAgICAgZ3VhcmRDb25maWc6IE1zYWxHdWFyZENvbmZpZ3VyYXRpb24sXHJcbiAgICAgICAgaW50ZXJjZXB0b3JDb25maWc6IE1zYWxJbnRlcmNlcHRvckNvbmZpZ3VyYXRpb25cclxuICAgICk6IE1vZHVsZVdpdGhQcm92aWRlcnM8TXNhbE1vZHVsZT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIG5nTW9kdWxlOiBNc2FsTW9kdWxlLFxyXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBNU0FMX0lOU1RBTkNFLFxyXG4gICAgICAgICAgICAgICAgICAgIHVzZVZhbHVlOiBtc2FsSW5zdGFuY2VcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogTVNBTF9HVUFSRF9DT05GSUcsXHJcbiAgICAgICAgICAgICAgICAgICAgdXNlVmFsdWU6IGd1YXJkQ29uZmlnXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGU6IE1TQUxfSU5URVJDRVBUT1JfQ09ORklHLFxyXG4gICAgICAgICAgICAgICAgICAgIHVzZVZhbHVlOiBpbnRlcmNlcHRvckNvbmZpZ1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIE1zYWxTZXJ2aWNlXHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=

@@ -31,4 +31,10 @@ /*

this.authService.getLogger().verbosePii(`MsalCustomNavigationClient - navigating to newUrl: ${newUrl}`);
this.router.navigateByUrl(newUrl, { replaceUrl: options.noHistory });
return Promise.resolve(false);
// Prevent hash clearing from causing an issue with Client-side navigation after redirect is handled
if (options.noHistory) {
window.location.replace(newUrl);
}
else {
this.router.navigateByUrl(newUrl, { replaceUrl: options.noHistory });
}
return Promise.resolve(options.noHistory);
});

@@ -45,2 +51,2 @@ }

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5uYXZpZ2F0aW9uLmNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9qYW51dHRlci9Db2RlL21pY3Jvc29mdC1hdXRoZW50aWNhdGlvbi1saWJyYXJ5LWZvci1qcy9saWIvbXNhbC1hbmd1bGFyL3NyYy8iLCJzb3VyY2VzIjpbIm1zYWwubmF2aWdhdGlvbi5jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHOztBQUVILE9BQU8sRUFBRSxnQkFBZ0IsRUFBcUIsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQzs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLDBCQUEyQixTQUFRLGdCQUFnQjtJQUU1RCxZQUNZLFdBQXdCLEVBQ3hCLE1BQWMsRUFDZCxRQUFrQjtRQUUxQixLQUFLLEVBQUUsQ0FBQztRQUpBLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFVO0lBRzlCLENBQUM7SUFFSyxnQkFBZ0IsQ0FBQyxHQUFVLEVBQUUsT0FBMEI7O1lBQ3pELElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7WUFDMUUsTUFBTSxhQUFhLEdBQUcsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUU1RCx3Q0FBd0M7WUFDeEMsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsWUFBWSxJQUFJLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRTlKLHVEQUF1RDtZQUN2RCxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxzREFBc0QsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUN4RyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFFckUsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLENBQUM7S0FBQTs7O1lBdkJKLFVBQVU7OztZQVJGLFdBQVc7WUFGWCxNQUFNO1lBQ04sUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgTmF2aWdhdGlvbkNsaWVudCwgTmF2aWdhdGlvbk9wdGlvbnMsIFVybFN0cmluZyB9IGZyb20gXCJAYXp1cmUvbXNhbC1icm93c2VyXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IE1zYWxTZXJ2aWNlIH0gZnJvbSBcIi4vbXNhbC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLyoqXHJcbiAqIEN1c3RvbSBuYXZpZ2F0aW9uIHVzZWQgZm9yIEFuZ3VsYXIgY2xpZW50LXNpZGUgbmF2aWdhdGlvbi5cclxuICogU2VlIHBlcmZvcm1hbmNlIGRvYyBmb3IgZGV0YWlsczpcclxuICogaHR0cHM6Ly9naXRodWIuY29tL0F6dXJlQUQvbWljcm9zb2Z0LWF1dGhlbnRpY2F0aW9uLWxpYnJhcnktZm9yLWpzL3RyZWUvZGV2L2xpYi9tc2FsLWFuZ3VsYXIvZG9jcy92Mi1kb2NzL3BlcmZvcm1hbmNlLm1kXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBNc2FsQ3VzdG9tTmF2aWdhdGlvbkNsaWVudCBleHRlbmRzIE5hdmlnYXRpb25DbGllbnQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IE1zYWxTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIFxyXG4gICAgICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG5hdmlnYXRlSW50ZXJuYWwodXJsOnN0cmluZywgb3B0aW9uczogTmF2aWdhdGlvbk9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLnZlcmJvc2UoXCJNc2FsQ3VzdG9tTmF2aWdhdGlvbkNsaWVudCBjYWxsZWRcIik7XHJcbiAgICAgICAgY29uc3QgdXJsQ29tcG9uZW50cyA9IG5ldyBVcmxTdHJpbmcodXJsKS5nZXRVcmxDb21wb25lbnRzKCk7XHJcblxyXG4gICAgICAgIC8vIE5vcm1hbGl6aW5nIG5ld1VybCBpZiBubyBxdWVyeSBzdHJpbmdcclxuICAgICAgICBjb25zdCBuZXdVcmwgPSB1cmxDb21wb25lbnRzLlF1ZXJ5U3RyaW5nID8gYCR7dXJsQ29tcG9uZW50cy5BYnNvbHV0ZVBhdGh9PyR7dXJsQ29tcG9uZW50cy5RdWVyeVN0cmluZ31gIDogdGhpcy5sb2NhdGlvbi5ub3JtYWxpemUodXJsQ29tcG9uZW50cy5BYnNvbHV0ZVBhdGgpO1xyXG5cclxuICAgICAgICAvLyBSZXBsYWNlcyBjdXJyZW50IHN0YXRlIGlmIG5vSGlzdG9yeSBmbGFnIHNldCB0byB0cnVlXHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRMb2dnZXIoKS52ZXJib3NlUGlpKGBNc2FsQ3VzdG9tTmF2aWdhdGlvbkNsaWVudCAtIG5hdmlnYXRpbmcgdG8gbmV3VXJsOiAke25ld1VybH1gKTtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKG5ld1VybCwgeyByZXBsYWNlVXJsOiBvcHRpb25zLm5vSGlzdG9yeSB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XHJcbiAgICB9XHJcbn1cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5uYXZpZ2F0aW9uLmNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tc2FsLm5hdmlnYXRpb24uY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRzs7QUFFSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQXFCLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0M7Ozs7R0FJRztBQUVILE1BQU0sT0FBTywwQkFBMkIsU0FBUSxnQkFBZ0I7SUFFNUQsWUFDWSxXQUF3QixFQUN4QixNQUFjLEVBQ2QsUUFBa0I7UUFFMUIsS0FBSyxFQUFFLENBQUM7UUFKQSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUc5QixDQUFDO0lBRUssZ0JBQWdCLENBQUMsR0FBVSxFQUFFLE9BQTBCOztZQUN6RCxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1lBQzFFLE1BQU0sYUFBYSxHQUFHLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFFNUQsd0NBQXdDO1lBQ3hDLE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLFlBQVksSUFBSSxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUU5Six1REFBdUQ7WUFDdkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxVQUFVLENBQUMsc0RBQXNELE1BQU0sRUFBRSxDQUFDLENBQUM7WUFFeEcsb0dBQW9HO1lBQ3BHLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRTtnQkFDbkIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDbkM7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO2FBQ3hFO1lBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QyxDQUFDO0tBQUE7OztZQTVCSixVQUFVOzs7WUFSRixXQUFXO1lBRlgsTUFBTTtZQUNOLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IE5hdmlnYXRpb25DbGllbnQsIE5hdmlnYXRpb25PcHRpb25zLCBVcmxTdHJpbmcgfSBmcm9tIFwiQGF6dXJlL21zYWwtYnJvd3NlclwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBNc2FsU2VydmljZSB9IGZyb20gXCIuL21zYWwuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8qKlxyXG4gKiBDdXN0b20gbmF2aWdhdGlvbiB1c2VkIGZvciBBbmd1bGFyIGNsaWVudC1zaWRlIG5hdmlnYXRpb24uXHJcbiAqIFNlZSBwZXJmb3JtYW5jZSBkb2MgZm9yIGRldGFpbHM6XHJcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9BenVyZUFEL21pY3Jvc29mdC1hdXRoZW50aWNhdGlvbi1saWJyYXJ5LWZvci1qcy90cmVlL2Rldi9saWIvbXNhbC1hbmd1bGFyL2RvY3MvdjItZG9jcy9wZXJmb3JtYW5jZS5tZFxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTXNhbEN1c3RvbU5hdmlnYXRpb25DbGllbnQgZXh0ZW5kcyBOYXZpZ2F0aW9uQ2xpZW50IHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBNc2FsU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBcclxuICAgICAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvblxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBuYXZpZ2F0ZUludGVybmFsKHVybDpzdHJpbmcsIG9wdGlvbnM6IE5hdmlnYXRpb25PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRMb2dnZXIoKS52ZXJib3NlKFwiTXNhbEN1c3RvbU5hdmlnYXRpb25DbGllbnQgY2FsbGVkXCIpO1xyXG4gICAgICAgIGNvbnN0IHVybENvbXBvbmVudHMgPSBuZXcgVXJsU3RyaW5nKHVybCkuZ2V0VXJsQ29tcG9uZW50cygpO1xyXG5cclxuICAgICAgICAvLyBOb3JtYWxpemluZyBuZXdVcmwgaWYgbm8gcXVlcnkgc3RyaW5nXHJcbiAgICAgICAgY29uc3QgbmV3VXJsID0gdXJsQ29tcG9uZW50cy5RdWVyeVN0cmluZyA/IGAke3VybENvbXBvbmVudHMuQWJzb2x1dGVQYXRofT8ke3VybENvbXBvbmVudHMuUXVlcnlTdHJpbmd9YCA6IHRoaXMubG9jYXRpb24ubm9ybWFsaXplKHVybENvbXBvbmVudHMuQWJzb2x1dGVQYXRoKTtcclxuXHJcbiAgICAgICAgLy8gUmVwbGFjZXMgY3VycmVudCBzdGF0ZSBpZiBub0hpc3RvcnkgZmxhZyBzZXQgdG8gdHJ1ZVxyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0TG9nZ2VyKCkudmVyYm9zZVBpaShgTXNhbEN1c3RvbU5hdmlnYXRpb25DbGllbnQgLSBuYXZpZ2F0aW5nIHRvIG5ld1VybDogJHtuZXdVcmx9YCk7XHJcblxyXG4gICAgICAgIC8vIFByZXZlbnQgaGFzaCBjbGVhcmluZyBmcm9tIGNhdXNpbmcgYW4gaXNzdWUgd2l0aCBDbGllbnQtc2lkZSBuYXZpZ2F0aW9uIGFmdGVyIHJlZGlyZWN0IGlzIGhhbmRsZWRcclxuICAgICAgICBpZiAob3B0aW9ucy5ub0hpc3RvcnkpIHtcclxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2UobmV3VXJsKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKG5ld1VybCwgeyByZXBsYWNlVXJsOiBvcHRpb25zLm5vSGlzdG9yeSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShvcHRpb25zLm5vSGlzdG9yeSk7XHJcbiAgICB9XHJcbn1cclxuIl19

@@ -30,2 +30,2 @@ /*

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5yZWRpcmVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvamFudXR0ZXIvQ29kZS9taWNyb3NvZnQtYXV0aGVudGljYXRpb24tbGlicmFyeS1mb3ItanMvbGliL21zYWwtYW5ndWxhci9zcmMvIiwic291cmNlcyI6WyJtc2FsLnJlZGlyZWN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSDs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFNN0MsTUFBTSxPQUFPLHFCQUFxQjtJQUU5QixZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUFJLENBQUM7SUFFakQsUUFBUTtRQUNKLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzVELENBQUM7OztZQVhKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsY0FBYztnQkFDeEIsUUFBUSxFQUFFLEVBQUU7YUFDZjs7O1lBTFEsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIFRoaXMgaXMgYSBkZWRpY2F0ZWQgcmVkaXJlY3QgY29tcG9uZW50IHRvIGJlIGFkZGVkIHRvIEFuZ3VsYXIgYXBwcyB0byBcclxuICogaGFuZGxlIHJlZGlyZWN0cyB3aGVuIHVzaW5nIEBhenVyZS9tc2FsLWFuZ3VsYXIuXHJcbiAqIEltcG9ydCB0aGlzIGNvbXBvbmVudCB0byB1c2UgcmVkaXJlY3RzIGluIHlvdXIgYXBwLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTXNhbFNlcnZpY2UgfSBmcm9tIFwiLi9tc2FsLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwiYXBwLXJlZGlyZWN0XCIsXHJcbiAgICB0ZW1wbGF0ZTogXCJcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgTXNhbFJlZGlyZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGhTZXJ2aWNlOiBNc2FsU2VydmljZSkgeyB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7ICAgIFxyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0TG9nZ2VyKCkudmVyYm9zZShcIk1zYWxSZWRpcmVjdENvbXBvbmVudCBhY3RpdmF0ZWRcIik7XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5oYW5kbGVSZWRpcmVjdE9ic2VydmFibGUoKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbn1cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5yZWRpcmVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbXNhbC5yZWRpcmVjdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUg7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTTdDLE1BQU0sT0FBTyxxQkFBcUI7SUFFOUIsWUFBb0IsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFBSSxDQUFDO0lBRWpELFFBQVE7UUFDSixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxXQUFXLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM1RCxDQUFDOzs7WUFYSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLGNBQWM7Z0JBQ3hCLFFBQVEsRUFBRSxFQUFFO2FBQ2Y7OztZQUxRLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBUaGlzIGlzIGEgZGVkaWNhdGVkIHJlZGlyZWN0IGNvbXBvbmVudCB0byBiZSBhZGRlZCB0byBBbmd1bGFyIGFwcHMgdG8gXHJcbiAqIGhhbmRsZSByZWRpcmVjdHMgd2hlbiB1c2luZyBAYXp1cmUvbXNhbC1hbmd1bGFyLlxyXG4gKiBJbXBvcnQgdGhpcyBjb21wb25lbnQgdG8gdXNlIHJlZGlyZWN0cyBpbiB5b3VyIGFwcC5cclxuICovXHJcblxyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1zYWxTZXJ2aWNlIH0gZnJvbSBcIi4vbXNhbC5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImFwcC1yZWRpcmVjdFwiLFxyXG4gICAgdGVtcGxhdGU6IFwiXCJcclxufSlcclxuZXhwb3J0IGNsYXNzIE1zYWxSZWRpcmVjdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBhdXRoU2VydmljZTogTXNhbFNlcnZpY2UpIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQgeyAgICBcclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLnZlcmJvc2UoXCJNc2FsUmVkaXJlY3RDb21wb25lbnQgYWN0aXZhdGVkXCIpO1xyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuaGFuZGxlUmVkaXJlY3RPYnNlcnZhYmxlKCkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==

@@ -74,2 +74,2 @@ /*

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL2phbnV0dGVyL0NvZGUvbWljcm9zb2Z0LWF1dGhlbnRpY2F0aW9uLWxpYnJhcnktZm9yLWpzL2xpYi9tc2FsLWFuZ3VsYXIvc3JjLyIsInNvdXJjZXMiOlsibXNhbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBVUgsVUFBVSxFQUNiLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXhDLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHbEQsTUFBTSxPQUFPLFdBQVc7SUFJcEIsWUFDa0MsUUFBa0MsRUFDeEQsUUFBa0I7UUFESSxhQUFRLEdBQVIsUUFBUSxDQUEwQjtRQUN4RCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRTFCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN2RCxJQUFJLElBQUksRUFBRTtZQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztTQUNsQztRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsaUJBQWlCLENBQUMsT0FBcUI7UUFDbkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFDRCxvQkFBb0IsQ0FBQyxPQUF3QjtRQUN6QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUNELGtCQUFrQixDQUFDLGFBQTRCO1FBQzNDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBQ0Qsd0JBQXdCLENBQUMsSUFBYTtRQUNsQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBQ0QsVUFBVSxDQUFDLE9BQXNCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUNELGFBQWEsQ0FBQyxPQUF5QjtRQUNuQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRCxNQUFNLENBQUMsYUFBaUM7UUFDcEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBQ0QsY0FBYyxDQUFDLGFBQWlDO1FBQzVDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUNELFdBQVcsQ0FBQyxhQUFzQztRQUM5QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFDRCxTQUFTLENBQUMsT0FBeUI7UUFDL0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsU0FBUztRQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDaEU7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUNELGtGQUFrRjtJQUNsRixTQUFTLENBQUMsTUFBYztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7OztZQTVESixVQUFVOzs7NENBTUYsTUFBTSxTQUFDLGFBQWE7WUF4QnBCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge1xyXG4gICAgSVB1YmxpY0NsaWVudEFwcGxpY2F0aW9uLFxyXG4gICAgRW5kU2Vzc2lvblJlcXVlc3QsXHJcbiAgICBFbmRTZXNzaW9uUG9wdXBSZXF1ZXN0LFxyXG4gICAgQXV0aGVudGljYXRpb25SZXN1bHQsXHJcbiAgICBSZWRpcmVjdFJlcXVlc3QsXHJcbiAgICBTaWxlbnRSZXF1ZXN0LFxyXG4gICAgUG9wdXBSZXF1ZXN0LFxyXG4gICAgU3NvU2lsZW50UmVxdWVzdCxcclxuICAgIExvZ2dlcixcclxuICAgIFdyYXBwZXJTS1VcclxufSBmcm9tIFwiQGF6dXJlL21zYWwtYnJvd3NlclwiO1xyXG5pbXBvcnQgeyBNU0FMX0lOU1RBTkNFIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGZyb20gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBJTXNhbFNlcnZpY2UgfSBmcm9tIFwiLi9JTXNhbFNlcnZpY2VcIjtcclxuaW1wb3J0IHsgbmFtZSwgdmVyc2lvbiB9IGZyb20gXCIuL3BhY2thZ2VNZXRhZGF0YVwiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTXNhbFNlcnZpY2UgaW1wbGVtZW50cyBJTXNhbFNlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSByZWRpcmVjdEhhc2g6IHN0cmluZztcclxuICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgQEluamVjdChNU0FMX0lOU1RBTkNFKSBwdWJsaWMgaW5zdGFuY2U6IElQdWJsaWNDbGllbnRBcHBsaWNhdGlvbixcclxuICAgICAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvblxyXG4gICAgKSB7XHJcbiAgICAgICAgY29uc3QgaGFzaCA9IHRoaXMubG9jYXRpb24ucGF0aCh0cnVlKS5zcGxpdChcIiNcIikucG9wKCk7XHJcbiAgICAgICAgaWYgKGhhc2gpIHtcclxuICAgICAgICAgICAgdGhpcy5yZWRpcmVjdEhhc2ggPSBgIyR7aGFzaH1gO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmluc3RhbmNlLmluaXRpYWxpemVXcmFwcGVyTGlicmFyeShXcmFwcGVyU0tVLkFuZ3VsYXIsIHZlcnNpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIGFjcXVpcmVUb2tlblBvcHVwKHJlcXVlc3Q6IFBvcHVwUmVxdWVzdCk6IE9ic2VydmFibGU8QXV0aGVudGljYXRpb25SZXN1bHQ+IHtcclxuICAgICAgICByZXR1cm4gZnJvbSh0aGlzLmluc3RhbmNlLmFjcXVpcmVUb2tlblBvcHVwKHJlcXVlc3QpKTtcclxuICAgIH1cclxuICAgIGFjcXVpcmVUb2tlblJlZGlyZWN0KHJlcXVlc3Q6IFJlZGlyZWN0UmVxdWVzdCk6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gICAgICAgIHJldHVybiBmcm9tKHRoaXMuaW5zdGFuY2UuYWNxdWlyZVRva2VuUmVkaXJlY3QocmVxdWVzdCkpO1xyXG4gICAgfVxyXG4gICAgYWNxdWlyZVRva2VuU2lsZW50KHNpbGVudFJlcXVlc3Q6IFNpbGVudFJlcXVlc3QpOiBPYnNlcnZhYmxlPEF1dGhlbnRpY2F0aW9uUmVzdWx0PiB7XHJcbiAgICAgICAgcmV0dXJuIGZyb20odGhpcy5pbnN0YW5jZS5hY3F1aXJlVG9rZW5TaWxlbnQoc2lsZW50UmVxdWVzdCkpO1xyXG4gICAgfVxyXG4gICAgaGFuZGxlUmVkaXJlY3RPYnNlcnZhYmxlKGhhc2g/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEF1dGhlbnRpY2F0aW9uUmVzdWx0PiB7XHJcbiAgICAgICAgcmV0dXJuIGZyb20odGhpcy5pbnN0YW5jZS5oYW5kbGVSZWRpcmVjdFByb21pc2UoaGFzaCB8fCB0aGlzLnJlZGlyZWN0SGFzaCkpO1xyXG4gICAgfVxyXG4gICAgbG9naW5Qb3B1cChyZXF1ZXN0PzogUG9wdXBSZXF1ZXN0KTogT2JzZXJ2YWJsZTxBdXRoZW50aWNhdGlvblJlc3VsdD4ge1xyXG4gICAgICAgIHJldHVybiBmcm9tKHRoaXMuaW5zdGFuY2UubG9naW5Qb3B1cChyZXF1ZXN0KSk7XHJcbiAgICB9XHJcbiAgICBsb2dpblJlZGlyZWN0KHJlcXVlc3Q/OiBSZWRpcmVjdFJlcXVlc3QpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcclxuICAgICAgICByZXR1cm4gZnJvbSh0aGlzLmluc3RhbmNlLmxvZ2luUmVkaXJlY3QocmVxdWVzdCkpO1xyXG4gICAgfVxyXG4gICAgbG9nb3V0KGxvZ291dFJlcXVlc3Q/OiBFbmRTZXNzaW9uUmVxdWVzdCk6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gICAgICAgIHJldHVybiBmcm9tKHRoaXMuaW5zdGFuY2UubG9nb3V0KGxvZ291dFJlcXVlc3QpKTtcclxuICAgIH1cclxuICAgIGxvZ291dFJlZGlyZWN0KGxvZ291dFJlcXVlc3Q/OiBFbmRTZXNzaW9uUmVxdWVzdCk6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gICAgICAgIHJldHVybiBmcm9tKHRoaXMuaW5zdGFuY2UubG9nb3V0UmVkaXJlY3QobG9nb3V0UmVxdWVzdCkpO1xyXG4gICAgfVxyXG4gICAgbG9nb3V0UG9wdXAobG9nb3V0UmVxdWVzdD86IEVuZFNlc3Npb25Qb3B1cFJlcXVlc3QpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcclxuICAgICAgICByZXR1cm4gZnJvbSh0aGlzLmluc3RhbmNlLmxvZ291dFBvcHVwKGxvZ291dFJlcXVlc3QpKTtcclxuICAgIH1cclxuICAgIHNzb1NpbGVudChyZXF1ZXN0OiBTc29TaWxlbnRSZXF1ZXN0KTogT2JzZXJ2YWJsZTxBdXRoZW50aWNhdGlvblJlc3VsdD4ge1xyXG4gICAgICAgIHJldHVybiBmcm9tKHRoaXMuaW5zdGFuY2Uuc3NvU2lsZW50KHJlcXVlc3QpKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBsb2dnZXIgZm9yIG1zYWwtYW5ndWxhci5cclxuICAgICAqIElmIG5vIGxvZ2dlciBzZXQsIHJldHVybnMgbG9nZ2VyIGluc3RhbmNlIGNyZWF0ZWQgd2l0aCBzYW1lIG9wdGlvbnMgYXMgbXNhbC1icm93c2VyXHJcbiAgICAgKi9cclxuICAgIGdldExvZ2dlcigpOiBMb2dnZXIge1xyXG4gICAgICAgIGlmICghdGhpcy5sb2dnZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2dnZXIgPSB0aGlzLmluc3RhbmNlLmdldExvZ2dlcigpLmNsb25lKG5hbWUsIHZlcnNpb24pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5sb2dnZXI7XHJcbiAgICB9XHJcbiAgICAvLyBDcmVhdGUgYSBsb2dnZXIgaW5zdGFuY2UgZm9yIG1zYWwtYW5ndWxhciB3aXRoIHRoZSBzYW1lIG9wdGlvbnMgYXMgbXNhbC1icm93c2VyXHJcbiAgICBzZXRMb2dnZXIobG9nZ2VyOiBMb2dnZXIpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlci5jbG9uZShuYW1lLCB2ZXJzaW9uKTtcclxuICAgICAgICB0aGlzLmluc3RhbmNlLnNldExvZ2dlcihsb2dnZXIpO1xyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21zYWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQVVILFVBQVUsRUFDYixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV4QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2xELE1BQU0sT0FBTyxXQUFXO0lBSXBCLFlBQ2tDLFFBQWtDLEVBQ3hELFFBQWtCO1FBREksYUFBUSxHQUFSLFFBQVEsQ0FBMEI7UUFDeEQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUUxQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdkQsSUFBSSxJQUFJLEVBQUU7WUFDTixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7U0FDbEM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELGlCQUFpQixDQUFDLE9BQXFCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBQ0Qsb0JBQW9CLENBQUMsT0FBd0I7UUFDekMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxhQUE0QjtRQUMzQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUNELHdCQUF3QixDQUFDLElBQWE7UUFDbEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUNELFVBQVUsQ0FBQyxPQUFzQjtRQUM3QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFDRCxhQUFhLENBQUMsT0FBeUI7UUFDbkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsTUFBTSxDQUFDLGFBQWlDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELGNBQWMsQ0FBQyxhQUFpQztRQUM1QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFDRCxXQUFXLENBQUMsYUFBc0M7UUFDOUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBQ0QsU0FBUyxDQUFDLE9BQXlCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNEOzs7T0FHRztJQUNILFNBQVM7UUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNkLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ2hFO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxrRkFBa0Y7SUFDbEYsU0FBUyxDQUFDLE1BQWM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDOzs7WUE1REosVUFBVTs7OzRDQU1GLE1BQU0sU0FBQyxhQUFhO1lBeEJwQixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cclxuICovXHJcblxyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtcclxuICAgIElQdWJsaWNDbGllbnRBcHBsaWNhdGlvbixcclxuICAgIEVuZFNlc3Npb25SZXF1ZXN0LFxyXG4gICAgRW5kU2Vzc2lvblBvcHVwUmVxdWVzdCxcclxuICAgIEF1dGhlbnRpY2F0aW9uUmVzdWx0LFxyXG4gICAgUmVkaXJlY3RSZXF1ZXN0LFxyXG4gICAgU2lsZW50UmVxdWVzdCxcclxuICAgIFBvcHVwUmVxdWVzdCxcclxuICAgIFNzb1NpbGVudFJlcXVlc3QsXHJcbiAgICBMb2dnZXIsXHJcbiAgICBXcmFwcGVyU0tVXHJcbn0gZnJvbSBcIkBhenVyZS9tc2FsLWJyb3dzZXJcIjtcclxuaW1wb3J0IHsgTVNBTF9JTlNUQU5DRSB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmcm9tIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgSU1zYWxTZXJ2aWNlIH0gZnJvbSBcIi4vSU1zYWxTZXJ2aWNlXCI7XHJcbmltcG9ydCB7IG5hbWUsIHZlcnNpb24gfSBmcm9tIFwiLi9wYWNrYWdlTWV0YWRhdGFcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE1zYWxTZXJ2aWNlIGltcGxlbWVudHMgSU1zYWxTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgcmVkaXJlY3RIYXNoOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoTVNBTF9JTlNUQU5DRSkgcHVibGljIGluc3RhbmNlOiBJUHVibGljQ2xpZW50QXBwbGljYXRpb24sXHJcbiAgICAgICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb25cclxuICAgICkge1xyXG4gICAgICAgIGNvbnN0IGhhc2ggPSB0aGlzLmxvY2F0aW9uLnBhdGgodHJ1ZSkuc3BsaXQoXCIjXCIpLnBvcCgpO1xyXG4gICAgICAgIGlmIChoYXNoKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVkaXJlY3RIYXNoID0gYCMke2hhc2h9YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pbnN0YW5jZS5pbml0aWFsaXplV3JhcHBlckxpYnJhcnkoV3JhcHBlclNLVS5Bbmd1bGFyLCB2ZXJzaW9uKTtcclxuICAgIH1cclxuXHJcbiAgICBhY3F1aXJlVG9rZW5Qb3B1cChyZXF1ZXN0OiBQb3B1cFJlcXVlc3QpOiBPYnNlcnZhYmxlPEF1dGhlbnRpY2F0aW9uUmVzdWx0PiB7XHJcbiAgICAgICAgcmV0dXJuIGZyb20odGhpcy5pbnN0YW5jZS5hY3F1aXJlVG9rZW5Qb3B1cChyZXF1ZXN0KSk7XHJcbiAgICB9XHJcbiAgICBhY3F1aXJlVG9rZW5SZWRpcmVjdChyZXF1ZXN0OiBSZWRpcmVjdFJlcXVlc3QpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcclxuICAgICAgICByZXR1cm4gZnJvbSh0aGlzLmluc3RhbmNlLmFjcXVpcmVUb2tlblJlZGlyZWN0KHJlcXVlc3QpKTtcclxuICAgIH1cclxuICAgIGFjcXVpcmVUb2tlblNpbGVudChzaWxlbnRSZXF1ZXN0OiBTaWxlbnRSZXF1ZXN0KTogT2JzZXJ2YWJsZTxBdXRoZW50aWNhdGlvblJlc3VsdD4ge1xyXG4gICAgICAgIHJldHVybiBmcm9tKHRoaXMuaW5zdGFuY2UuYWNxdWlyZVRva2VuU2lsZW50KHNpbGVudFJlcXVlc3QpKTtcclxuICAgIH1cclxuICAgIGhhbmRsZVJlZGlyZWN0T2JzZXJ2YWJsZShoYXNoPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxBdXRoZW50aWNhdGlvblJlc3VsdD4ge1xyXG4gICAgICAgIHJldHVybiBmcm9tKHRoaXMuaW5zdGFuY2UuaGFuZGxlUmVkaXJlY3RQcm9taXNlKGhhc2ggfHwgdGhpcy5yZWRpcmVjdEhhc2gpKTtcclxuICAgIH1cclxuICAgIGxvZ2luUG9wdXAocmVxdWVzdD86IFBvcHVwUmVxdWVzdCk6IE9ic2VydmFibGU8QXV0aGVudGljYXRpb25SZXN1bHQ+IHtcclxuICAgICAgICByZXR1cm4gZnJvbSh0aGlzLmluc3RhbmNlLmxvZ2luUG9wdXAocmVxdWVzdCkpO1xyXG4gICAgfVxyXG4gICAgbG9naW5SZWRpcmVjdChyZXF1ZXN0PzogUmVkaXJlY3RSZXF1ZXN0KTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICAgICAgcmV0dXJuIGZyb20odGhpcy5pbnN0YW5jZS5sb2dpblJlZGlyZWN0KHJlcXVlc3QpKTtcclxuICAgIH1cclxuICAgIGxvZ291dChsb2dvdXRSZXF1ZXN0PzogRW5kU2Vzc2lvblJlcXVlc3QpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcclxuICAgICAgICByZXR1cm4gZnJvbSh0aGlzLmluc3RhbmNlLmxvZ291dChsb2dvdXRSZXF1ZXN0KSk7XHJcbiAgICB9XHJcbiAgICBsb2dvdXRSZWRpcmVjdChsb2dvdXRSZXF1ZXN0PzogRW5kU2Vzc2lvblJlcXVlc3QpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcclxuICAgICAgICByZXR1cm4gZnJvbSh0aGlzLmluc3RhbmNlLmxvZ291dFJlZGlyZWN0KGxvZ291dFJlcXVlc3QpKTtcclxuICAgIH1cclxuICAgIGxvZ291dFBvcHVwKGxvZ291dFJlcXVlc3Q/OiBFbmRTZXNzaW9uUG9wdXBSZXF1ZXN0KTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICAgICAgcmV0dXJuIGZyb20odGhpcy5pbnN0YW5jZS5sb2dvdXRQb3B1cChsb2dvdXRSZXF1ZXN0KSk7XHJcbiAgICB9XHJcbiAgICBzc29TaWxlbnQocmVxdWVzdDogU3NvU2lsZW50UmVxdWVzdCk6IE9ic2VydmFibGU8QXV0aGVudGljYXRpb25SZXN1bHQ+IHtcclxuICAgICAgICByZXR1cm4gZnJvbSh0aGlzLmluc3RhbmNlLnNzb1NpbGVudChyZXF1ZXN0KSk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEdldHMgbG9nZ2VyIGZvciBtc2FsLWFuZ3VsYXIuXHJcbiAgICAgKiBJZiBubyBsb2dnZXIgc2V0LCByZXR1cm5zIGxvZ2dlciBpbnN0YW5jZSBjcmVhdGVkIHdpdGggc2FtZSBvcHRpb25zIGFzIG1zYWwtYnJvd3NlclxyXG4gICAgICovXHJcbiAgICBnZXRMb2dnZXIoKTogTG9nZ2VyIHtcclxuICAgICAgICBpZiAoIXRoaXMubG9nZ2VyKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyID0gdGhpcy5pbnN0YW5jZS5nZXRMb2dnZXIoKS5jbG9uZShuYW1lLCB2ZXJzaW9uKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubG9nZ2VyO1xyXG4gICAgfVxyXG4gICAgLy8gQ3JlYXRlIGEgbG9nZ2VyIGluc3RhbmNlIGZvciBtc2FsLWFuZ3VsYXIgd2l0aCB0aGUgc2FtZSBvcHRpb25zIGFzIG1zYWwtYnJvd3NlclxyXG4gICAgc2V0TG9nZ2VyKGxvZ2dlcjogTG9nZ2VyKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIgPSBsb2dnZXIuY2xvbmUobmFtZSwgdmVyc2lvbik7XHJcbiAgICAgICAgdGhpcy5pbnN0YW5jZS5zZXRMb2dnZXIobG9nZ2VyKTtcclxuICAgIH1cclxuXHJcbn1cclxuIl19
/* eslint-disable header/header */
export const name = "@azure/msal-angular";
export const version = "2.0.0-beta.5";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZU1ldGFkYXRhLmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL2phbnV0dGVyL0NvZGUvbWljcm9zb2Z0LWF1dGhlbnRpY2F0aW9uLWxpYnJhcnktZm9yLWpzL2xpYi9tc2FsLWFuZ3VsYXIvc3JjLyIsInNvdXJjZXMiOlsicGFja2FnZU1ldGFkYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtDQUFrQztBQUNsQyxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcscUJBQXFCLENBQUM7QUFDMUMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGhlYWRlci9oZWFkZXIgKi9cbmV4cG9ydCBjb25zdCBuYW1lID0gXCJAYXp1cmUvbXNhbC1hbmd1bGFyXCI7XG5leHBvcnQgY29uc3QgdmVyc2lvbiA9IFwiMi4wLjAtYmV0YS41XCI7XG4iXX0=
export const version = "2.0.0-beta.6";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZU1ldGFkYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BhY2thZ2VNZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQ0FBa0M7QUFDbEMsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLHFCQUFxQixDQUFDO0FBQzFDLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBoZWFkZXIvaGVhZGVyICovXG5leHBvcnQgY29uc3QgbmFtZSA9IFwiQGF6dXJlL21zYWwtYW5ndWxhclwiO1xuZXhwb3J0IGNvbnN0IHZlcnNpb24gPSBcIjIuMC4wLWJldGEuNlwiO1xuIl19

@@ -17,2 +17,2 @@ /*

export { MsalCustomNavigationClient } from "./msal.navigation.client";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9qYW51dHRlci9Db2RlL21pY3Jvc29mdC1hdXRoZW50aWNhdGlvbi1saWJyYXJ5LWZvci1qcy9saWIvbXNhbC1hbmd1bGFyL3NyYy8iLCJzb3VyY2VzIjpbInB1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUg7OztHQUdHO0FBRUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJELE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxyXG4gKiBAbW9kdWxlIEBhenVyZS9tc2FsLWFuZ3VsYXJcclxuICovXHJcblxyXG5leHBvcnQgeyBNc2FsU2VydmljZSB9IGZyb20gXCIuL21zYWwuc2VydmljZVwiO1xyXG5leHBvcnQgeyBJTXNhbFNlcnZpY2UgfSBmcm9tIFwiLi9JTXNhbFNlcnZpY2VcIjtcclxuZXhwb3J0IHsgTXNhbEd1YXJkIH0gZnJvbSBcIi4vbXNhbC5ndWFyZFwiO1xyXG5leHBvcnQgeyBNc2FsR3VhcmRDb25maWd1cmF0aW9uLCBNc2FsR3VhcmRBdXRoUmVxdWVzdCB9IGZyb20gXCIuL21zYWwuZ3VhcmQuY29uZmlnXCI7XHJcbmV4cG9ydCB7IE1zYWxJbnRlcmNlcHRvciB9IGZyb20gXCIuL21zYWwuaW50ZXJjZXB0b3JcIjtcclxuZXhwb3J0IHsgTXNhbEludGVyY2VwdG9yQ29uZmlndXJhdGlvbiwgTXNhbEludGVyY2VwdG9yQXV0aFJlcXVlc3QgfSBmcm9tIFwiLi9tc2FsLmludGVyY2VwdG9yLmNvbmZpZ1wiO1xyXG5leHBvcnQgeyBNU0FMX0lOU1RBTkNFLCBNU0FMX0dVQVJEX0NPTkZJRywgTVNBTF9JTlRFUkNFUFRPUl9DT05GSUcgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuZXhwb3J0IHsgTXNhbEJyb2FkY2FzdFNlcnZpY2UgfSBmcm9tIFwiLi9tc2FsLmJyb2FkY2FzdC5zZXJ2aWNlXCI7XHJcbmV4cG9ydCB7IE1zYWxNb2R1bGUgfSBmcm9tIFwiLi9tc2FsLm1vZHVsZVwiO1xyXG5leHBvcnQgeyBNc2FsUmVkaXJlY3RDb21wb25lbnQgfSBmcm9tIFwiLi9tc2FsLnJlZGlyZWN0LmNvbXBvbmVudFwiO1xyXG5leHBvcnQgeyBNc2FsQ3VzdG9tTmF2aWdhdGlvbkNsaWVudCB9IGZyb20gXCIuL21zYWwubmF2aWdhdGlvbi5jbGllbnRcIjtcclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVIOzs7R0FHRztBQUVILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXpDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cclxuICogQG1vZHVsZSBAYXp1cmUvbXNhbC1hbmd1bGFyXHJcbiAqL1xyXG5cclxuZXhwb3J0IHsgTXNhbFNlcnZpY2UgfSBmcm9tIFwiLi9tc2FsLnNlcnZpY2VcIjtcclxuZXhwb3J0IHsgSU1zYWxTZXJ2aWNlIH0gZnJvbSBcIi4vSU1zYWxTZXJ2aWNlXCI7XHJcbmV4cG9ydCB7IE1zYWxHdWFyZCB9IGZyb20gXCIuL21zYWwuZ3VhcmRcIjtcclxuZXhwb3J0IHsgTXNhbEd1YXJkQ29uZmlndXJhdGlvbiwgTXNhbEd1YXJkQXV0aFJlcXVlc3QgfSBmcm9tIFwiLi9tc2FsLmd1YXJkLmNvbmZpZ1wiO1xyXG5leHBvcnQgeyBNc2FsSW50ZXJjZXB0b3IgfSBmcm9tIFwiLi9tc2FsLmludGVyY2VwdG9yXCI7XHJcbmV4cG9ydCB7IE1zYWxJbnRlcmNlcHRvckNvbmZpZ3VyYXRpb24sIE1zYWxJbnRlcmNlcHRvckF1dGhSZXF1ZXN0LCBQcm90ZWN0ZWRSZXNvdXJjZVNjb3BlcyB9IGZyb20gXCIuL21zYWwuaW50ZXJjZXB0b3IuY29uZmlnXCI7XHJcbmV4cG9ydCB7IE1TQUxfSU5TVEFOQ0UsIE1TQUxfR1VBUkRfQ09ORklHLCBNU0FMX0lOVEVSQ0VQVE9SX0NPTkZJRyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xyXG5leHBvcnQgeyBNc2FsQnJvYWRjYXN0U2VydmljZSB9IGZyb20gXCIuL21zYWwuYnJvYWRjYXN0LnNlcnZpY2VcIjtcclxuZXhwb3J0IHsgTXNhbE1vZHVsZSB9IGZyb20gXCIuL21zYWwubW9kdWxlXCI7XHJcbmV4cG9ydCB7IE1zYWxSZWRpcmVjdENvbXBvbmVudCB9IGZyb20gXCIuL21zYWwucmVkaXJlY3QuY29tcG9uZW50XCI7XHJcbmV4cG9ydCB7IE1zYWxDdXN0b21OYXZpZ2F0aW9uQ2xpZW50IH0gZnJvbSBcIi4vbXNhbC5uYXZpZ2F0aW9uLmNsaWVudFwiO1xyXG4iXX0=

@@ -19,3 +19,3 @@ import { InjectionToken, Injectable, Inject, VERSION, Component, NgModule } from '@angular/core';

const name = "@azure/msal-angular";
const version = "2.0.0-beta.5";
const version = "2.0.0-beta.6";

@@ -211,2 +211,4 @@ /*

}
// Capture current path before it gets changed by handleRedirectObservable
const currentPath = this.location.path(true);
return this.authService.handleRedirectObservable()

@@ -223,10 +225,16 @@ .pipe(concatMap(() => {

this.authService.getLogger().verbose("Guard - at least 1 account exists, can activate or load");
// Prevent navigating the app to /#code=
if (state && state.url.indexOf("#") > -1 && state.url.indexOf("code=") > -1) {
// Prevent navigating the app to /#code= or /code=
if (state && currentPath.indexOf("code=") > -1) {
this.authService.getLogger().info("Guard - Hash contains known code response, stopping navigation.");
return of(false);
// Path routing (navigate to current path without hash)
if (currentPath.indexOf("#") > -1) {
return of(this.parseUrl(this.location.path()));
}
// Hash routing (navigate to root path)
return of(this.parseUrl(""));
}
return of(true);
}), catchError(() => {
this.authService.getLogger().verbose("Guard - error while logging in, unable to activate");
}), catchError((error) => {
this.authService.getLogger().error("Guard - error while logging in, unable to activate");
this.authService.getLogger().errorPii(`Guard - error: ${error.message}`);
/**

@@ -284,3 +292,3 @@ * If a loginFailedRoute is set, checks to see if Angular 10+ is used and state is passed in before returning route

this.authService.getLogger().verbose("MSAL Interceptor activated");
const scopes = this.getScopesForEndpoint(req.url);
const scopes = this.getScopesForEndpoint(req.url, req.method);
// If no scopes for endpoint, does not acquire token

@@ -343,6 +351,7 @@ if (!scopes || scopes.length === 0) {

* @param endpoint Url of the request
* @param endpoint Http method of the request
* @returns Array of scopes, or null if not found
*
*/
getScopesForEndpoint(endpoint) {
getScopesForEndpoint(endpoint, httpMethod) {
this.authService.getLogger().verbose("Interceptor - getting scopes for endpoint");

@@ -352,3 +361,17 @@ // Ensures endpoints and protected resources compared are normalized

const protectedResourcesArray = Array.from(this.msalInterceptorConfig.protectedResourceMap.keys());
const keyMatchesEndpointArray = protectedResourcesArray.filter(key => {
const matchingProtectedResources = this.matchResourcesToEndpoint(protectedResourcesArray, normalizedEndpoint);
if (matchingProtectedResources.length > 0) {
return this.matchScopesToEndpoint(this.msalInterceptorConfig.protectedResourceMap, matchingProtectedResources, httpMethod);
}
return null;
}
/**
* Finds resource endpoints that match request endpoint
* @param protectedResourcesArray
* @param endpoint
* @param location
* @returns
*/
matchResourcesToEndpoint(protectedResourcesEndpoints, endpoint) {
return protectedResourcesEndpoints.filter(key => {
const normalizedKey = this.location.normalize(key);

@@ -360,15 +383,56 @@ // Normalized key should include query strings if applicable

if (relativeNormalizedKey === "" || relativeNormalizedKey === "/*") {
return StringUtils.matchPattern(normalizedKey, normalizedEndpoint);
return StringUtils.matchPattern(normalizedKey, endpoint);
}
else {
// Matching endpoint with both protected resource and relative url of protected resource
return StringUtils.matchPattern(normalizedKey, normalizedEndpoint) || StringUtils.matchPattern(relativeNormalizedKey, normalizedEndpoint);
return StringUtils.matchPattern(normalizedKey, endpoint) || StringUtils.matchPattern(relativeNormalizedKey, endpoint);
}
});
// Process all protected resources and send the first matched resource
if (keyMatchesEndpointArray.length > 0) {
const keyForEndpoint = keyMatchesEndpointArray[0];
if (keyForEndpoint) {
return this.msalInterceptorConfig.protectedResourceMap.get(keyForEndpoint);
}
/**
* Finds scopes from first matching endpoint with HTTP method that matches request
* @param protectedResourceMap Protected resource map
* @param endpointArray Array of resources that match request endpoint
* @param httpMethod Http method of the request
* @returns
*/
matchScopesToEndpoint(protectedResourceMap, endpointArray, httpMethod) {
const allMatchedScopes = [];
// Check each matched endpoint for matching HttpMethod and scopes
endpointArray.forEach(matchedEndpoint => {
const scopesForEndpoint = [];
const methodAndScopesArray = protectedResourceMap.get(matchedEndpoint);
// Return if resource is unprotected
if (methodAndScopesArray === null) {
allMatchedScopes.push(null);
return;
}
methodAndScopesArray.forEach(entry => {
// Entry is either array of scopes or ProtectedResourceScopes object
if (typeof entry === "string") {
scopesForEndpoint.push(entry);
}
else {
// Ensure methods being compared are normalized
const normalizedRequestMethod = httpMethod.toLowerCase();
const normalizedResourceMethod = entry.httpMethod.toLowerCase();
// Method in protectedResourceMap matches request http method
if (normalizedResourceMethod === normalizedRequestMethod) {
entry.scopes.forEach(scope => {
scopesForEndpoint.push(scope);
});
}
}
});
// Only add to all scopes if scopes for endpoint and method is found
if (scopesForEndpoint.length > 0) {
allMatchedScopes.push(scopesForEndpoint);
}
});
if (allMatchedScopes.length > 0) {
if (allMatchedScopes.length > 1) {
this.authService.getLogger().warning("Interceptor - More than 1 matching scopes for endpoint found.");
}
// Returns scopes for first matching endpoint
return allMatchedScopes[0];
}

@@ -473,4 +537,10 @@ return null;

this.authService.getLogger().verbosePii(`MsalCustomNavigationClient - navigating to newUrl: ${newUrl}`);
this.router.navigateByUrl(newUrl, { replaceUrl: options.noHistory });
return Promise.resolve(false);
// Prevent hash clearing from causing an issue with Client-side navigation after redirect is handled
if (options.noHistory) {
window.location.replace(newUrl);
}
else {
this.router.navigateByUrl(newUrl, { replaceUrl: options.noHistory });
}
return Promise.resolve(options.noHistory);
});

@@ -477,0 +547,0 @@ }

@@ -15,1 +15,2 @@ import { EndSessionRequest, AuthorizationUrlRequest, AuthenticationResult, PopupRequest, RedirectRequest, SilentRequest, Logger } from "@azure/msal-browser";

}
//# sourceMappingURL=IMsalService.d.ts.map

@@ -13,1 +13,2 @@ import { Observable } from "rxjs";

}
//# sourceMappingURL=msal.broadcast.service.d.ts.map

@@ -10,1 +10,2 @@ import { RouterStateSnapshot } from "@angular/router";

};
//# sourceMappingURL=msal.guard.config.d.ts.map

@@ -40,1 +40,2 @@ import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, CanActivateChild, CanLoad, UrlTree, Router } from "@angular/router";

}
//# sourceMappingURL=msal.guard.d.ts.map

@@ -7,4 +7,9 @@ import { HttpRequest } from "@angular/common/http";

interactionType: InteractionType.Popup | InteractionType.Redirect;
protectedResourceMap: Map<string, Array<string> | null>;
protectedResourceMap: Map<string, Array<string | ProtectedResourceScopes> | null>;
authRequest?: MsalInterceptorAuthRequest | ((msalService: MsalService, req: HttpRequest<unknown>, originalAuthRequest: MsalInterceptorAuthRequest) => MsalInterceptorAuthRequest);
};
export declare type ProtectedResourceScopes = {
httpMethod: string;
scopes: Array<string>;
};
//# sourceMappingURL=msal.interceptor.config.d.ts.map

@@ -21,2 +21,3 @@ import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from "@angular/common/http";

* @param endpoint Url of the request
* @param endpoint Http method of the request
* @returns Array of scopes, or null if not found

@@ -26,2 +27,19 @@ *

private getScopesForEndpoint;
/**
* Finds resource endpoints that match request endpoint
* @param protectedResourcesArray
* @param endpoint
* @param location
* @returns
*/
private matchResourcesToEndpoint;
/**
* Finds scopes from first matching endpoint with HTTP method that matches request
* @param protectedResourceMap Protected resource map
* @param endpointArray Array of resources that match request endpoint
* @param httpMethod Http method of the request
* @returns
*/
private matchScopesToEndpoint;
}
//# sourceMappingURL=msal.interceptor.d.ts.map

@@ -8,1 +8,2 @@ import { ModuleWithProviders } from "@angular/core";

}
//# sourceMappingURL=msal.module.d.ts.map

@@ -17,1 +17,2 @@ import { NavigationClient, NavigationOptions } from "@azure/msal-browser";

}
//# sourceMappingURL=msal.navigation.client.d.ts.map

@@ -13,1 +13,2 @@ /**

}
//# sourceMappingURL=msal.redirect.component.d.ts.map

@@ -28,1 +28,2 @@ import { Location } from "@angular/common";

}
//# sourceMappingURL=msal.service.d.ts.map
{
"name": "@azure/msal-angular",
"version": "2.0.0-beta.5",
"version": "2.0.0-beta.6",
"main": "bundles/azure-msal-angular.umd.js",
"typings": "azure-msal-angular.d.ts",
"peerDependencies": {
"@angular/common": "9 - 11",
"@angular/core": "9 - 11",
"@azure/msal-browser": "^2.14.1",
"@azure/msal-browser": "^2.14.2",
"rxjs": "^6.0.0"

@@ -21,2 +19,2 @@ },

"sideEffects": false
}
}
export declare const name = "@azure/msal-angular";
export declare const version = "2.0.0-beta.5";
export declare const version = "2.0.0-beta.6";
//# sourceMappingURL=packageMetadata.d.ts.map

@@ -10,3 +10,3 @@ /**

export { MsalInterceptor } from "./msal.interceptor";
export { MsalInterceptorConfiguration, MsalInterceptorAuthRequest } from "./msal.interceptor.config";
export { MsalInterceptorConfiguration, MsalInterceptorAuthRequest, ProtectedResourceScopes } from "./msal.interceptor.config";
export { MSAL_INSTANCE, MSAL_GUARD_CONFIG, MSAL_INTERCEPTOR_CONFIG } from "./constants";

@@ -17,1 +17,2 @@ export { MsalBroadcastService } from "./msal.broadcast.service";

export { MsalCustomNavigationClient } from "./msal.navigation.client";
//# sourceMappingURL=public-api.d.ts.map

@@ -44,3 +44,3 @@ # Microsoft Authentication Library for Angular

|----------------------|-------------------------|----------------------------|
| MSAL Angular v2 | Active development | 9, 10, 11 |
| MSAL Angular v2 | Active development | 9, 10, 11, 12 |
| MSAL Angular v1 | Active development | 6, 7, 8, 9 |

@@ -66,2 +66,3 @@ | MSAL Angular v0 | In maintenance | 4, 5 |

1. [Using redirects](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular/docs/v2-docs/redirects.md)
1. [Using the MsalInterceptor](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/msal-interceptor.md)
1. [Known issues](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular/docs/v2-docs/known-issues.md)

@@ -96,2 +97,3 @@

* [Angular v11 B2C Sample](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/samples/msal-angular-v2-samples/angular11-b2c-sample)
* [Angular v12](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/samples/msal-angular-v2-samples/angular12-sample-app)

@@ -101,5 +103,5 @@ See [here](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/samples/msal-angular-v2-samples/README.md) for specific features demonstrated by our MSAL Angular v2 samples.

### Advanced MSAL Angular v2 Samples
* [Angular SPA with ASP.NET Core web API](https://github.com/Azure-Samples/ms-identity-javascript-angular-spa-aspnetcore-webapi)
* [Angular SPA with APS.NET Core web API using App Roles and RBAC](https://github.com/Azure-Samples/ms-identity-javascript-angular-spa-dotnetcore-webapi-roles-groups)
* [Multi-tenant tutorial using MSAL Angular v2](https://github.com/Azure-Samples/ms-identity-javascript-angular-spa-aspnet-webapi-multitenant)
* [Angular SPA with ASP.NET Core web API](https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial/tree/main/3-Authorization-II/1-call-api)
* [Angular SPA with APS.NET Core web API using App Roles and RBAC](https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial/tree/main/5-AccessControl/1-call-api-roles)
* [Multi-tenant tutorial using MSAL Angular v2](https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial/tree/main/6-Multitenancy/1-call-api-mt)

@@ -106,0 +108,0 @@

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc