Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

vipera-npm-registry / motif-web-admin-core   js

Repository URL to install this package:

Version: 0.3.1 

/ esm5 / lib / services / RESTContextCatalogService.js

/**
 * @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==