Repository URL to install this package:
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Injectable } from '@angular/core';
import { DomainsService, ApplicationsService, } from '@wa-motif-open-api/platform-service';
import { ContextsService as RESTContextService } from '@wa-motif-open-api/rest-content-service';
import { ContextsService } from '@wa-motif-open-api/context-service';
import { Observable } from 'rxjs';
import { NGXLogger } from 'web-console-core';
/** @type {?} */
var LOG_TAG = '[RESTContextCatalogService]';
var RESTContextCatalogService = /** @class */ (function () {
function RESTContextCatalogService(domainService, applicationService, restContextService, contextService, logger) {
this.domainService = domainService;
this.applicationService = applicationService;
this.restContextService = restContextService;
this.contextService = contextService;
this.logger = logger;
}
/**
* @param {?} domain
* @param {?} application
* @param {?} contextName
* @return {?}
*/
RESTContextCatalogService.prototype.deleteRESTContext = /**
* @param {?} domain
* @param {?} application
* @param {?} contextName
* @return {?}
*/
function (domain, application, contextName) {
return this.restContextService.deleteContext(domain, application, contextName);
};
/**
* @param {?} domain
* @param {?} application
* @param {?} contextName
* @param {?} url
* @return {?}
*/
RESTContextCatalogService.prototype.createRESTContext = /**
* @param {?} domain
* @param {?} application
* @param {?} contextName
* @param {?} url
* @return {?}
*/
function (domain, application, contextName, url) {
this.logger.debug(LOG_TAG, 'createRESTContext called for ', domain, application, contextName, url);
/** @type {?} */
var createObj = {
context: contextName,
url: url
};
return this.restContextService.createContext(domain, application, createObj);
};
/**
* @param {?} domain
* @param {?} application
* @param {?} contextName
* @param {?} enabled
* @return {?}
*/
RESTContextCatalogService.prototype.enableRESTContext = /**
* @param {?} domain
* @param {?} application
* @param {?} contextName
* @param {?} enabled
* @return {?}
*/
function (domain, application, contextName, enabled) {
this.logger.debug(LOG_TAG, 'enableRESTContext called for ', domain, application, contextName, enabled);
if (enabled) {
return this.contextService.enableContext(domain, application, contextName);
}
else {
return this.contextService.disableContext(domain, application, contextName);
}
};
/**
* @param {?} domain
* @param {?} application
* @param {?} contextName
* @param {?} url
* @return {?}
*/
RESTContextCatalogService.prototype.updateRESTContext = /**
* @param {?} domain
* @param {?} application
* @param {?} contextName
* @param {?} url
* @return {?}
*/
function (domain, application, contextName, url) {
this.logger.debug(LOG_TAG, 'updateRESTContext called for ', domain, application, contextName, url);
/** @type {?} */
var updateObj = {
url: url
};
return this.restContextService.updateContext(domain, application, contextName, updateObj);
};
/**
* Returns a JSON with the Service Catalog Structure
*/
/**
* Returns a JSON with the Service Catalog Structure
* @return {?}
*/
RESTContextCatalogService.prototype.getRESTContextCatalog = /**
* Returns a JSON with the Service Catalog Structure
* @return {?}
*/
function () {
var _this = this;
return new Observable((/**
* @param {?} observer
* @return {?}
*/
function (observer) {
_this.logger.debug(LOG_TAG, 'getRESTContextCatalog called');
/** @type {?} */
var restContextCatalog = [];
// Get all domains
_this.domainService.getDomains().subscribe((/**
* @param {?} domains
* @return {?}
*/
function (domains) {
var e_1, _a;
/** @type {?} */
var domainsCount = domains.length;
/** @type {?} */
var processedDomains = 0;
var _loop_1 = function (domain) {
_this.applicationService.getApplications(domain.name).subscribe((/**
* @param {?} applications
* @return {?}
*/
function (applications) {
var e_2, _a;
/** @type {?} */
var appCount = applications.length;
/** @type {?} */
var processedApps = 0;
if (appCount === 0) {
processedDomains++;
if (processedDomains === domainsCount) {
observer.next(restContextCatalog);
observer.complete();
_this.logger.debug(LOG_TAG, 'getRESTContextCatalog completed');
}
}
var _loop_2 = function (application) {
/** @type {?} */
var applicationInfo = application;
_this.restContextService.getContexts(domain.name, application.name).subscribe((/**
* @param {?} contexts
* @return {?}
*/
function (contexts) {
_this.logger.debug(LOG_TAG, 'getRESTContextCatalog contexts[' + application.name + '@' + domain.name + ']:', contexts);
restContextCatalog = restContextCatalog.concat(contexts);
processedApps++;
if (processedApps === appCount) {
processedDomains++;
if (processedDomains === domainsCount) {
observer.next(restContextCatalog);
observer.complete();
_this.logger.debug(LOG_TAG, 'getRESTContextCatalog completed');
}
}
}), (/**
* @param {?} error
* @return {?}
*/
function (error) {
processedApps++;
if (processedApps === appCount) {
processedDomains++;
if (processedDomains === domainsCount) {
observer.next(restContextCatalog);
observer.complete();
_this.logger.debug(LOG_TAG, 'getRESTContextCatalog completed');
}
}
_this.logger.error(LOG_TAG, 'getRESTContextCatalog error:', error);
observer.error(error);
}), (/**
* @return {?}
*/
function () {
if (processedDomains === domainsCount) {
observer.next(restContextCatalog);
observer.complete();
_this.logger.debug(LOG_TAG, 'getRESTContextCatalog completed');
}
}));
};
try {
for (var applications_1 = tslib_1.__values(applications), applications_1_1 = applications_1.next(); !applications_1_1.done; applications_1_1 = applications_1.next()) {
var application = applications_1_1.value;
_loop_2(application);
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (applications_1_1 && !applications_1_1.done && (_a = applications_1.return)) _a.call(applications_1);
}
finally { if (e_2) throw e_2.error; }
}
}), (/**
* @param {?} error
* @return {?}
*/
function (error) {
_this.logger.error(LOG_TAG, 'getRESTContextCatalog error:', error);
observer.error(error);
}));
if (processedDomains === domainsCount) {
observer.next(restContextCatalog);
observer.complete();
_this.logger.debug(LOG_TAG, 'getRESTContextCatalog completed');
}
};
try {
for (var domains_1 = tslib_1.__values(domains), domains_1_1 = domains_1.next(); !domains_1_1.done; domains_1_1 = domains_1.next()) {
var domain = domains_1_1.value;
_loop_1(domain);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (domains_1_1 && !domains_1_1.done && (_a = domains_1.return)) _a.call(domains_1);
}
finally { if (e_1) throw e_1.error; }
}
}), (/**
* @param {?} error
* @return {?}
*/
function (error) {
_this.logger.error(LOG_TAG, 'getRESTContextCatalog error:', error);
observer.error(error);
}));
}));
};
/**
* @param {?} domain
* @param {?} application
* @return {?}
*/
RESTContextCatalogService.prototype.getRESTContextCatalogFor = /**
* @param {?} domain
* @param {?} application
* @return {?}
*/
function (domain, application) {
return this.restContextService.getContexts(domain, application);
};
RESTContextCatalogService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
RESTContextCatalogService.ctorParameters = function () { return [
{ type: DomainsService },
{ type: ApplicationsService },
{ type: RESTContextService },
{ type: ContextsService },
{ type: NGXLogger }
]; };
return RESTContextCatalogService;
}());
export { RESTContextCatalogService };
if (false) {
/**
* @type {?}
* @private
*/
RESTContextCatalogService.prototype.domainsList;
/**
* @type {?}
* @private
*/
RESTContextCatalogService.prototype.domainService;
/**
* @type {?}
* @private
*/
RESTContextCatalogService.prototype.applicationService;
/**
* @type {?}
* @private
*/
RESTContextCatalogService.prototype.restContextService;
/**
* @type {?}
* @private
*/
RESTContextCatalogService.prototype.contextService;
/**
* @type {?}
* @private
*/
RESTContextCatalogService.prototype.logger;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUkVTVENvbnRleHRDYXRhbG9nU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL21vdGlmLXdlYi1hZG1pbi1jb3JlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL1JFU1RDb250ZXh0Q2F0YWxvZ1NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBRWQsbUJBQW1CLEdBRWpCLE1BQU0scUNBQXFDLENBQUM7QUFNdkQsT0FBTyxFQUFFLGVBQWUsSUFBSSxrQkFBa0IsRUFBd0QsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0SixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0lBRXZDLE9BQU8sR0FBRyw2QkFBNkI7QUFHN0M7SUFLSSxtQ0FBb0IsYUFBNkIsRUFDckMsa0JBQXVDLEVBQ3ZDLGtCQUFzQyxFQUN0QyxjQUErQixFQUMvQixNQUFpQjtRQUpULGtCQUFhLEdBQWIsYUFBYSxDQUFnQjtRQUNyQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXFCO1FBQ3ZDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsbUJBQWMsR0FBZCxjQUFjLENBQWlCO1FBQy9CLFdBQU0sR0FBTixNQUFNLENBQVc7SUFDN0IsQ0FBQzs7Ozs7OztJQUdNLHFEQUFpQjs7Ozs7O0lBQXhCLFVBQXlCLE1BQWEsRUFBRSxXQUFrQixFQUFFLFdBQWtCO1FBQzFFLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ25GLENBQUM7Ozs7Ozs7O0lBRU0scURBQWlCOzs7Ozs7O0lBQXhCLFVBQXlCLE1B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QUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixDQUFDLEVBQUMsQ0FBQztRQUdQLENBQUMsRUFBQyxDQUFDO0lBQ1AsQ0FBQzs7Ozs7O0lBRU0sNERBQXdCOzs7OztJQUEvQixVQUFnQyxNQUFhLEVBQUUsV0FBa0I7UUFDN0QsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNwRSxDQUFDOztnQkEzSUosVUFBVTs7OztnQkFuQkYsY0FBYztnQkFFZCxtQkFBbUI7Z0JBUUEsa0JBQWtCO2dCQUNyQyxlQUFlO2dCQUdmLFNBQVM7O0lBa0psQixnQ0FBQztDQUFBLEFBN0lELElBNklDO1NBNUlZLHlCQUF5Qjs7Ozs7O0lBRWxDLGdEQUFtQzs7Ozs7SUFFdkIsa0RBQXFDOzs7OztJQUM3Qyx1REFBK0M7Ozs7O0lBQy9DLHVEQUE4Qzs7Ozs7SUFDOUMsbURBQXVDOzs7OztJQUN2QywyQ0FBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21haW5zU2VydmljZSxcbiAgICAgICAgIERvbWFpbixcbiAgICAgICAgIEFwcGxpY2F0aW9uc1NlcnZpY2UsXG4gICAgICAgICBBcHBsaWNhdGlvbixcbiAgICAgICAgICB9IGZyb20gJ0B3YS1tb3RpZi1vcGVuLWFwaS9wbGF0Zm9ybS1zZXJ2aWNlJztcbmltcG9ydCB7IFNlcnZpY2VzU2VydmljZSxcbiAgICBTZXJ2aWNlLFxuICAgIFNlcnZpY2VDcmVhdGUsXG4gICAgT3BlcmF0aW9uc1NlcnZpY2UsXG4gICAgU2VydmljZU9wZXJhdGlvbiB9IGZyb20gJ0B3YS1tb3RpZi1vcGVuLWFwaS9jYXRhbG9nLXNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udGV4dHNTZXJ2aWNlIGFzIFJFU1RDb250ZXh0U2VydmljZSwgU2VydmljZUNvbnRleHQsIFJlc3RDb250ZXh0Q3JlYXRlLCBSZXN0Q29udGV4dFVwZGF0ZSB9IGZyb20gJ0B3YS1tb3RpZi1vcGVuLWFwaS9yZXN0LWNvbnRlbnQtc2VydmljZSc7XG5pbXBvcnQgeyBDb250ZXh0c1NlcnZpY2UgfSBmcm9tICdAd2EtbW90aWYtb3Blbi1hcGkvY29udGV4dC1zZXJ2aWNlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTkdYTG9nZ2VyIH0gZnJvbSAnd2ViLWNvbnNvbGUtY29yZSc7XG5cbmNvbnN0IExPR19UQUcgPSAnW1JFU1RDb250ZXh0Q2F0YWxvZ1NlcnZpY2VdJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUkVTVENvbnRleHRDYXRhbG9nU2VydmljZSB7XG5cbiAgICBwcml2YXRlIGRvbWFpbnNMaXN0OiBBcnJheTxEb21haW4+O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkb21haW5TZXJ2aWNlOiBEb21haW5zU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhcHBsaWNhdGlvblNlcnZpY2U6IEFwcGxpY2F0aW9uc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVzdENvbnRleHRTZXJ2aWNlOiBSRVNUQ29udGV4dFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRzU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBsb2dnZXI6IE5HWExvZ2dlcikge1xuICAgIH1cblxuXG4gICAgcHVibGljIGRlbGV0ZVJFU1RDb250ZXh0KGRvbWFpbjpzdHJpbmcsIGFwcGxpY2F0aW9uOnN0cmluZywgY29udGV4dE5hbWU6c3RyaW5nKSA6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc3RDb250ZXh0U2VydmljZS5kZWxldGVDb250ZXh0KGRvbWFpbiwgYXBwbGljYXRpb24sIGNvbnRleHROYW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlUkVTVENvbnRleHQoZG9tYWluOnN0cmluZywgYXBwbGljYXRpb246c3RyaW5nLCBjb250ZXh0TmFtZTpzdHJpbmcsIHVybDpzdHJpbmcpIDogT2JzZXJ2YWJsZTxTZXJ2aWNlQ29udGV4dD4ge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhMT0dfVEFHLCAnY3JlYXRlUkVTVENvbnRleHQgY2FsbGVkIGZvciAnLCBkb21haW4sIGFwcGxpY2F0aW9uLCBjb250ZXh0TmFtZSwgdXJsICk7XG4gICAgICAgIGxldCBjcmVhdGVPYmo6IFJlc3RDb250ZXh0Q3JlYXRlID0ge1xuICAgICAgICAgICAgY29udGV4dDogY29udGV4dE5hbWUsXG4gICAgICAgICAgICB1cmw6IHVybFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gdGhpcy5yZXN0Q29udGV4dFNlcnZpY2UuY3JlYXRlQ29udGV4dChkb21haW4sIGFwcGxpY2F0aW9uLCBjcmVhdGVPYmopO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbmFibGVSRVNUQ29udGV4dChkb21haW46c3RyaW5nLCBhcHBsaWNhdGlvbjpzdHJpbmcsIGNvbnRleHROYW1lOnN0cmluZywgZW5hYmxlZDogYm9vbGVhbikgOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhMT0dfVEFHLCAnZW5hYmxlUkVTVENvbnRleHQgY2FsbGVkIGZvciAnLCBkb21haW4sIGFwcGxpY2F0aW9uLCBjb250ZXh0TmFtZSwgZW5hYmxlZCApO1xuICAgICAgICBpZiAoZW5hYmxlZCl7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0U2VydmljZS5lbmFibGVDb250ZXh0KGRvbWFpbiwgYXBwbGljYXRpb24sIGNvbnRleHROYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRleHRTZXJ2aWNlLmRpc2FibGVDb250ZXh0KGRvbWFpbiwgYXBwbGljYXRpb24sIGNvbnRleHROYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVSRVNUQ29udGV4dChkb21haW46c3RyaW5nLCBhcHBsaWNhdGlvbjpzdHJpbmcsIGNvbnRleHROYW1lOnN0cmluZywgdXJsOnN0cmluZykgOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhMT0dfVEFHLCAndXBkYXRlUkVTVENvbnRleHQgY2FsbGVkIGZvciAnLCBkb21haW4sIGFwcGxpY2F0aW9uLCBjb250ZXh0TmFtZSwgdXJsICk7XG4gICAgICAgIGxldCB1cGRhdGVPYmo6IFJlc3RDb250ZXh0VXBkYXRlID0ge1xuICAgICAgICAgICAgdXJsOiB1cmxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzdENvbnRleHRTZXJ2aWNlLnVwZGF0ZUNvbnRleHQoZG9tYWluLCBhcHBsaWNhdGlvbiwgY29udGV4dE5hbWUsIHVwZGF0ZU9iaik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIEpTT04gd2l0aCB0aGUgU2VydmljZSBDYXRhbG9nIFN0cnVjdHVyZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRSRVNUQ29udGV4dENhdGFsb2coKTogT2JzZXJ2YWJsZTxBcnJheTxTZXJ2aWNlQ29udGV4dD4+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xuXG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhMT0dfVEFHLCAnZ2V0UkVTVENvbnRleHRDYXRhbG9nIGNhbGxlZCcgKTtcblxuICAgICAgICAgICAgdmFyIHJlc3RDb250ZXh0Q2F0YWxvZyA9IFtdO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBHZXQgYWxsIGRvbWFpbnNcbiAgICAgICAgICAgIHRoaXMuZG9tYWluU2VydmljZS5nZXREb21haW5zKCkuc3Vic2NyaWJlKCggZG9tYWluczogQXJyYXk8RG9tYWluPiApID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkb21haW5zQ291bnQgPSBkb21haW5zLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBsZXQgcHJvY2Vzc2VkRG9tYWlucyA9IDA7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBkb21haW4gb2YgZG9tYWlucykge1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLmdldEFwcGxpY2F0aW9ucyhkb21haW4ubmFtZSkuc3Vic2NyaWJlKCggYXBwbGljYXRpb25zOiBBcnJheTxBcHBsaWNhdGlvbj4gKSA9PiB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwcENvdW50ID0gYXBwbGljYXRpb25zLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwcm9jZXNzZWRBcHBzID0gMDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFwcENvdW50ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkRG9tYWlucysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggcHJvY2Vzc2VkRG9tYWlucyA9PT0gZG9tYWluc0NvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoIHJlc3RDb250ZXh0Q2F0YWxvZyApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhMT0dfVEFHLCAnZ2V0UkVTVENvbnRleHRDYXRhbG9nIGNvbXBsZXRlZCcgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXBwbGljYXRpb24gb2YgYXBwbGljYXRpb25zICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwcGxpY2F0aW9uSW5mbzogYW55ID0gYXBwbGljYXRpb247XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3RDb250ZXh0U2VydmljZS5nZXRDb250ZXh0cyhkb21haW4ubmFtZSwgYXBwbGljYXRpb24ubmFtZSkuc3Vic2NyaWJlKChjb250ZXh0czpBcnJheTxTZXJ2aWNlQ29udGV4dD4pPT57XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoTE9HX1RBRywgJ2dldFJFU1RDb250ZXh0Q2F0YWxvZyBjb250ZXh0c1snICsgYXBwbGljYXRpb24ubmFtZSArICdAJyArIGRvbWFpbi5uYW1lICsgJ106JywgY29udGV4dHMgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdENvbnRleHRDYXRhbG9nID0gcmVzdENvbnRleHRDYXRhbG9nLmNvbmNhdChjb250ZXh0cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWRBcHBzKys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzZWRBcHBzID09PSBhcHBDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkRG9tYWlucysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBwcm9jZXNzZWREb21haW5zID09PSBkb21haW5zQ291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KCByZXN0Q29udGV4dENhdGFsb2cgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKExPR19UQUcsICdnZXRSRVNUQ29udGV4dENhdGFsb2cgY29tcGxldGVkJyApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAoZXJyb3IpPT57XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkQXBwcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvY2Vzc2VkQXBwcyA9PT0gYXBwQ291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZERvbWFpbnMrKztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggcHJvY2Vzc2VkRG9tYWlucyA9PT0gZG9tYWluc0NvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCggcmVzdENvbnRleHRDYXRhbG9nICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhMT0dfVEFHLCAnZ2V0UkVTVENvbnRleHRDYXRhbG9nIGNvbXBsZXRlZCcgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihMT0dfVEFHLCAnZ2V0UkVTVENvbnRleHRDYXRhbG9nIGVycm9yOicgLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKGVycm9yKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sKCkgPT4ge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggcHJvY2Vzc2VkRG9tYWlucyA9PT0gZG9tYWluc0NvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KCByZXN0Q29udGV4dENhdGFsb2cgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhMT0dfVEFHLCAnZ2V0UkVTVENvbnRleHRDYXRhbG9nIGNvbXBsZXRlZCcgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgfSwgKCBlcnJvciApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKExPR19UQUcsICdnZXRSRVNUQ29udGV4dENhdGFsb2cgZXJyb3I6JyAsIGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCBwcm9jZXNzZWREb21haW5zID09PSBkb21haW5zQ291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoIHJlc3RDb250ZXh0Q2F0YWxvZyApO1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKExPR19UQUcsICdnZXRSRVNUQ29udGV4dENhdGFsb2cgY29tcGxldGVkJyApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihMT0dfVEFHLCAnZ2V0UkVTVENvbnRleHRDYXRhbG9nIGVycm9yOicgLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfSk7XG5cblxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UkVTVENvbnRleHRDYXRhbG9nRm9yKGRvbWFpbjpzdHJpbmcsIGFwcGxpY2F0aW9uOnN0cmluZyk6IE9ic2VydmFibGU8QXJyYXk8U2VydmljZUNvbnRleHQ+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc3RDb250ZXh0U2VydmljZS5nZXRDb250ZXh0cyhkb21haW4sIGFwcGxpY2F0aW9uKTtcbiAgICB9XG5cbn1cbiJdfQ==