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 / sections / Scheduler / components / scheduled-task-details.component.js

/**
 * @fileoverview added by tsickle
 * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
 */
import { NGXLogger } from 'web-console-core';
import { Component, Input } from '@angular/core';
import { WCToasterService } from 'web-console-ui-kit';
import { SchedulerService } from '@wa-motif-open-api/scheduler-service';
import { MotifQuerySort, MotifQueryResults } from 'web-console-core';
import { HttpParams } from '@angular/common/http';
import * as _ from 'lodash';
/** @type {?} */
var LOG_TAG = "[SchedulerSection] [ScheduledTaskDetailsComponent]";
/** @type {?} */
var REFRESH_TOKENS_LIST_ENDPOINT = "/oauth2/refreshTokens/{0}/accessTokens";
var ScheduledTaskDetailsComponent = /** @class */ (function () {
    function ScheduledTaskDetailsComponent(logger, schedulerService, toaster) {
        this.logger = logger;
        this.schedulerService = schedulerService;
        this.toaster = toaster;
        //Data
        this.taskExecutionsList = [];
        //Grid Options
        this.sort = [{
                field: 'created',
                dir: 'desc'
            }];
        this.type = 'numeric';
        this.pageSize = 10;
        this.skip = 0;
        this.currentPage = 1;
        this.totalPages = 0;
        this.totalRecords = 0;
        this.isFieldSortable = false;
    }
    /**
     * @return {?}
     */
    ScheduledTaskDetailsComponent.prototype.ngOnInit = /**
     * @return {?}
     */
    function () {
        this.refreshData();
    };
    /**
     * Reload the list of access tokens for the selected refresh token
     */
    /**
     * Reload the list of access tokens for the selected refresh token
     * @return {?}
     */
    ScheduledTaskDetailsComponent.prototype.refreshData = /**
     * Reload the list of access tokens for the selected refresh token
     * @return {?}
     */
    function () {
        this.logger.debug(LOG_TAG, "refreshData");
        this.loadData(this.scheduledTask, this.currentPage, this.pageSize);
    };
    /**
     * @param {?} __0
     * @return {?}
     */
    ScheduledTaskDetailsComponent.prototype.pageChange = /**
     * @param {?} __0
     * @return {?}
     */
    function (_a) {
        var skip = _a.skip, take = _a.take;
        this.logger.debug(LOG_TAG, 'pageChange skip=', skip, ' take=', take);
        this.skip = skip;
        this.pageSize = take;
        /** @type {?} */
        var newPageIndex = this.calculatePageIndex(skip, take);
        this.loadData(this.scheduledTask, newPageIndex, this.pageSize);
    };
    /**
     * @param {?} sort
     * @return {?}
     */
    ScheduledTaskDetailsComponent.prototype.sortChange = /**
     * @param {?} sort
     * @return {?}
     */
    function (sort) {
        this.logger.debug(LOG_TAG, 'sortChange sort=', this.sort);
        this.sort = sort;
        this.refreshData();
    };
    /**
     * @private
     * @param {?} scheduledTask
     * @param {?} pageIndex
     * @param {?} pageSize
     * @return {?}
     */
    ScheduledTaskDetailsComponent.prototype.loadData = /**
     * @private
     * @param {?} scheduledTask
     * @param {?} pageIndex
     * @param {?} pageSize
     * @return {?}
     */
    function (scheduledTask, pageIndex, pageSize) {
        var _this = this;
        this.logger.debug(LOG_TAG, 'loadData pageIndex=', pageIndex, ' pageSize=', pageSize);
        this.loading = true;
        /** @type {?} */
        var sort = this.buildQuerySort();
        this.schedulerService.getTaskExecutionsList(scheduledTask, null, pageIndex, pageSize, sort.encode(new HttpParams()).get('sort'), 'response', false).subscribe((/**
         * @param {?} response
         * @return {?}
         */
        function (response) {
            /** @type {?} */
            var results = MotifQueryResults.fromHttpResponse(response);
            _this.taskExecutionsList = results.data;
            _this.totalPages = results.totalPages;
            _this.totalRecords = results.totalRecords;
            _this.currentPage = results.pageIndex;
            _.forEach(_this.taskExecutionsList, (/**
             * @param {?} element
             * @return {?}
             */
            function (element) {
                element.created = new Date(element.created);
            }));
            _this.gridView = {
                data: _this.taskExecutionsList,
                total: results.totalRecords
            };
            _this.currentPage = results.pageIndex;
            _this.loading = false;
        }), (/**
         * @param {?} error
         * @return {?}
         */
        function (error) {
            _this.logger.error(LOG_TAG, 'getScheduledTaskExecutions failed: ', error);
            _this.loading = false;
        }));
    };
    /**
     * @private
     * @param {?} skip
     * @param {?} take
     * @return {?}
     */
    ScheduledTaskDetailsComponent.prototype.calculatePageIndex = /**
     * @private
     * @param {?} skip
     * @param {?} take
     * @return {?}
     */
    function (skip, take) {
        return (skip / take) + 1;
    };
    /**
     * @private
     * @return {?}
     */
    ScheduledTaskDetailsComponent.prototype.buildQuerySort = /**
     * @private
     * @return {?}
     */
    function () {
        this.logger.debug(LOG_TAG, 'buildQuerySort: ', this.sort);
        /** @type {?} */
        var querySort = new MotifQuerySort();
        if (this.sort) {
            for (var i = 0; i < this.sort.length; i++) {
                /** @type {?} */
                var sortInfo = this.sort[i];
                if (sortInfo.dir && sortInfo.dir === 'asc') {
                    querySort.orderAscendingBy(sortInfo.field);
                }
                else if (sortInfo.dir && sortInfo.dir === 'desc') {
                    querySort.orderDescendingBy(sortInfo.field);
                }
            }
        }
        return querySort;
    };
    ScheduledTaskDetailsComponent.decorators = [
        { type: Component, args: [{
                    selector: 'wa-scheduler-section-task-details',
                    template: "<kendo-grid [data]=\"gridView\" [columnMenu]=\"true\" [resizable]=\"true\" [reorderable]=\"true\" [sort]=\"sort\" \n    (sortChange)=\"sortChange($event)\" [sortable]=\"{ allowUnsort: true, mode: 'multiple' }\"\n    [scrollable]=\"true\" [pageSize]=\"pageSize\" [skip]=\"skip\" [pageable]=\"{\n                buttonCount: 5,\n                info: true,\n                type: type,\n                pageSizes: true,\n                previousNext: true\n                }\" (pageChange)=\"pageChange($event)\">\n    <kendo-grid-column field=\"created\" title=\"Created\" width=\"25\" format=\"{0:dd/MM/yyyy HH:mm:ss}\">\n    </kendo-grid-column>\n    <kendo-grid-column field=\"taskExecId\" title=\"Execution ID\" width=\"80\">\n    </kendo-grid-column>\n    <kendo-grid-column field=\"resultCode\" title=\"Result Code\" width=\"30\">\n    </kendo-grid-column>\n    <kendo-grid-column field=\"resultDesc\" title=\"Result Desc\" width=\"100\">\n    </kendo-grid-column>\n    <kendo-grid-column field=\"elapsed\" title=\"Elapsed\" width=\"30\">\n    </kendo-grid-column>\n    <kendo-grid-column field=\"workerId\" title=\"WorkerId\" width=\"30\">\n    </kendo-grid-column>\n</kendo-grid>",
                    styles: [":host ::ng-deep .grid-btn-editor.wc-table-delete-command{justify-content:center}"]
                }] }
    ];
    /** @nocollapse */
    ScheduledTaskDetailsComponent.ctorParameters = function () { return [
        { type: NGXLogger },
        { type: SchedulerService },
        { type: WCToasterService }
    ]; };
    ScheduledTaskDetailsComponent.propDecorators = {
        scheduledTask: [{ type: Input }]
    };
    return ScheduledTaskDetailsComponent;
}());
export { ScheduledTaskDetailsComponent };
if (false) {
    /** @type {?} */
    ScheduledTaskDetailsComponent.prototype.scheduledTask;
    /** @type {?} */
    ScheduledTaskDetailsComponent.prototype.taskExecutionsList;
    /** @type {?} */
    ScheduledTaskDetailsComponent.prototype.sort;
    /** @type {?} */
    ScheduledTaskDetailsComponent.prototype.gridView;
    /** @type {?} */
    ScheduledTaskDetailsComponent.prototype.type;
    /** @type {?} */
    ScheduledTaskDetailsComponent.prototype.pageSize;
    /** @type {?} */
    ScheduledTaskDetailsComponent.prototype.skip;
    /** @type {?} */
    ScheduledTaskDetailsComponent.prototype.currentPage;
    /** @type {?} */
    ScheduledTaskDetailsComponent.prototype.totalPages;
    /** @type {?} */
    ScheduledTaskDetailsComponent.prototype.totalRecords;
    /** @type {?} */
    ScheduledTaskDetailsComponent.prototype.isFieldSortable;
    /** @type {?} */
    ScheduledTaskDetailsComponent.prototype.loading;
    /**
     * @type {?}
     * @private
     */
    ScheduledTaskDetailsComponent.prototype.logger;
    /**
     * @type {?}
     * @private
     */
    ScheduledTaskDetailsComponent.prototype.schedulerService;
    /**
     * @type {?}
     * @private
     */
    ScheduledTaskDetailsComponent.prototype.toaster;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGVkLXRhc2stZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9tb3RpZi13ZWItYWRtaW4tY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zZWN0aW9ucy9TY2hlZHVsZXIvY29tcG9uZW50cy9zY2hlZHVsZWQtdGFzay1kZXRhaWxzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBZ0MsTUFBTSxzQ0FBc0MsQ0FBQztBQUd0RyxPQUFPLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDOztJQUV0QixPQUFPLEdBQUcsb0RBQW9EOztJQUM5RCw0QkFBNEIsR0FBRyx3Q0FBd0M7QUFFN0U7SUE0QkUsdUNBQW9CLE1BQWlCLEVBQzNCLGdCQUFrQyxFQUNsQyxPQUF5QjtRQUZmLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDM0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxZQUFPLEdBQVAsT0FBTyxDQUFrQjs7UUFwQjVCLHVCQUFrQixHQUF3QyxFQUFFLENBQUM7O1FBRzdELFNBQUksR0FBcUIsQ0FBQztnQkFDL0IsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLEdBQUcsRUFBRSxNQUFNO2FBQ1osQ0FBQyxDQUFDO1FBRUksU0FBSSxHQUF3QixTQUFTLENBQUM7UUFDdEMsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLFNBQUksR0FBRyxDQUFDLENB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UUFBUSxDQUFDLEdBQUcsS0FBSyxNQUFNLEVBQUU7b0JBQ2xELFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQzdDO2FBQ0Y7U0FDRjtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7O2dCQTNHRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLG1DQUFtQztvQkFFN0MsOHFDQUFzRDs7aUJBQ3ZEOzs7O2dCQWpCUSxTQUFTO2dCQUdULGdCQUFnQjtnQkFEaEIsZ0JBQWdCOzs7Z0NBa0J0QixLQUFLOztJQXFHUixvQ0FBQztDQUFBLEFBNUdELElBNEdDO1NBdkdZLDZCQUE2Qjs7O0lBRXhDLHNEQUFzQzs7SUFHdEMsMkRBQW9FOztJQUdwRSw2Q0FHRzs7SUFDSCxpREFBNEI7O0lBQzVCLDZDQUE2Qzs7SUFDN0MsaURBQXFCOztJQUNyQiw2Q0FBZ0I7O0lBQ2hCLG9EQUF1Qjs7SUFDdkIsbURBQXNCOztJQUN0QixxREFBd0I7O0lBQ3hCLHdEQUErQjs7SUFFL0IsZ0RBQWlCOzs7OztJQUVMLCtDQUF5Qjs7Ozs7SUFDbkMseURBQTBDOzs7OztJQUMxQyxnREFBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOR1hMb2dnZXJ9IGZyb20gJ3dlYi1jb25zb2xlLWNvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXQ1RvYXN0ZXJTZXJ2aWNlIH0gZnJvbSAnd2ViLWNvbnNvbGUtdWkta2l0JztcbmltcG9ydCB7IFNjaGVkdWxlclNlcnZpY2UsIFNjaGVkdWxlZFRhc2tFeGVjdXRpb25FbnRpdHkgfSBmcm9tICdAd2EtbW90aWYtb3Blbi1hcGkvc2NoZWR1bGVyLXNlcnZpY2UnO1xuaW1wb3J0IHsgU29ydERlc2NyaXB0b3IsIEdyb3VwRGVzY3JpcHRvciwgRGF0YVJlc3VsdCB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1kYXRhLXF1ZXJ5JztcbmltcG9ydCB7IFBhZ2VDaGFuZ2VFdmVudCwgR3JpZENvbXBvbmVudCB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLWdyaWQnO1xuaW1wb3J0IHsgTW90aWZRdWVyeVNvcnQsIE1vdGlmUXVlcnlSZXN1bHRzIH0gZnJvbSAnd2ViLWNvbnNvbGUtY29yZSc7XG5pbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuXG5jb25zdCBMT0dfVEFHID0gXCJbU2NoZWR1bGVyU2VjdGlvbl0gW1NjaGVkdWxlZFRhc2tEZXRhaWxzQ29tcG9uZW50XVwiO1xuY29uc3QgUkVGUkVTSF9UT0tFTlNfTElTVF9FTkRQT0lOVCA9IFwiL29hdXRoMi9yZWZyZXNoVG9rZW5zL3swfS9hY2Nlc3NUb2tlbnNcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2Etc2NoZWR1bGVyLXNlY3Rpb24tdGFzay1kZXRhaWxzJyxcbiAgc3R5bGVVcmxzOiBbICcuL3NjaGVkdWxlZC10YXNrLWRldGFpbHMuY29tcG9uZW50LnNjc3MnIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9zY2hlZHVsZWQtdGFzay1kZXRhaWxzLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBTY2hlZHVsZWRUYXNrRGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgcHVibGljIHNjaGVkdWxlZFRhc2s6IHN0cmluZztcblxuICAvL0RhdGFcbiAgcHVibGljIHRhc2tFeGVjdXRpb25zTGlzdDogQXJyYXk8U2NoZWR1bGVkVGFza0V4ZWN1dGlvbkVudGl0eT4gPSBbXTtcblxuICAvL0dyaWQgT3B0aW9uc1xuICBwdWJsaWMgc29ydDogU29ydERlc2NyaXB0b3JbXSA9IFt7XG4gICAgZmllbGQ6ICdjcmVhdGVkJyxcbiAgICBkaXI6ICdkZXNjJ1xuICB9XTtcbiAgcHVibGljIGdyaWRWaWV3OiBEYXRhUmVzdWx0O1xuICBwdWJsaWMgdHlwZTogJ251bWVyaWMnIHwgJ2lucHV0JyA9ICdudW1lcmljJztcbiAgcHVibGljIHBhZ2VTaXplID0gMTA7XG4gIHB1YmxpYyBza2lwID0gMDtcbiAgcHVibGljIGN1cnJlbnRQYWdlID0gMTtcbiAgcHVibGljIHRvdGFsUGFnZXMgPSAwO1xuICBwdWJsaWMgdG90YWxSZWNvcmRzID0gMDtcbiAgcHVibGljIGlzRmllbGRTb3J0YWJsZSA9IGZhbHNlO1xuXG4gIGxvYWRpbmc6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsb2dnZXI6IE5HWExvZ2dlcixcbiAgICBwcml2YXRlIHNjaGVkdWxlclNlcnZpY2U6IFNjaGVkdWxlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b2FzdGVyOiBXQ1RvYXN0ZXJTZXJ2aWNlKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnJlZnJlc2hEYXRhKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVsb2FkIHRoZSBsaXN0IG9mIGFjY2VzcyB0b2tlbnMgZm9yIHRoZSBzZWxlY3RlZCByZWZyZXNoIHRva2VuXG4gICAqL1xuICBwdWJsaWMgcmVmcmVzaERhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoTE9HX1RBRywgXCJyZWZyZXNoRGF0YVwiKTtcbiAgICB0aGlzLmxvYWREYXRhKHRoaXMuc2NoZWR1bGVkVGFzaywgdGhpcy5jdXJyZW50UGFnZSwgdGhpcy5wYWdlU2l6ZSk7XG4gIH1cblxuICBwdWJsaWMgcGFnZUNoYW5nZSh7IHNraXAsIHRha2UgfTogUGFnZUNoYW5nZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoTE9HX1RBRywgJ3BhZ2VDaGFuZ2Ugc2tpcD0nLCBza2lwLCAnIHRha2U9JywgdGFrZSk7XG4gICAgdGhpcy5za2lwID0gc2tpcDtcbiAgICB0aGlzLnBhZ2VTaXplID0gdGFrZTtcbiAgICBjb25zdCBuZXdQYWdlSW5kZXggPSB0aGlzLmNhbGN1bGF0ZVBhZ2VJbmRleChza2lwLCB0YWtlKTtcbiAgICB0aGlzLmxvYWREYXRhKHRoaXMuc2NoZWR1bGVkVGFzaywgbmV3UGFnZUluZGV4LCB0aGlzLnBhZ2VTaXplKTtcbiAgfVxuXG4gIHB1YmxpYyBzb3J0Q2hhbmdlKHNvcnQ6IFNvcnREZXNjcmlwdG9yW10pOiB2b2lkIHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhMT0dfVEFHLCAnc29ydENoYW5nZSBzb3J0PScsIHRoaXMuc29ydCk7XG4gICAgdGhpcy5zb3J0ID0gc29ydDtcbiAgICB0aGlzLnJlZnJlc2hEYXRhKCk7XG4gIH1cblxuICBwcml2YXRlIGxvYWREYXRhKHNjaGVkdWxlZFRhc2s6IHN0cmluZywgcGFnZUluZGV4OiBudW1iZXIsIHBhZ2VTaXplOiBudW1iZXIpIHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhMT0dfVEFHLCAnbG9hZERhdGEgcGFnZUluZGV4PScsIHBhZ2VJbmRleCwgJyBwYWdlU2l6ZT0nLCBwYWdlU2l6ZSk7XG5cbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIGNvbnN0IHNvcnQ6IE1vdGlmUXVlcnlTb3J0ID0gdGhpcy5idWlsZFF1ZXJ5U29ydCgpO1xuXG4gICAgdGhpcy5zY2hlZHVsZXJTZXJ2aWNlLmdldFRhc2tFeGVjdXRpb25zTGlzdChzY2hlZHVsZWRUYXNrLCBudWxsLFxuICAgICAgcGFnZUluZGV4LCBwYWdlU2l6ZSwgc29ydC5lbmNvZGUobmV3IEh0dHBQYXJhbXMoKSkuZ2V0KCdzb3J0JyksICdyZXNwb25zZScsIGZhbHNlKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0czogTW90aWZRdWVyeVJlc3VsdHMgPSBNb3RpZlF1ZXJ5UmVzdWx0cy5mcm9tSHR0cFJlc3BvbnNlKHJlc3BvbnNlKTtcbiAgICAgICAgdGhpcy50YXNrRXhlY3V0aW9uc0xpc3QgPSByZXN1bHRzLmRhdGE7XG4gICAgICAgIHRoaXMudG90YWxQYWdlcyA9IHJlc3VsdHMudG90YWxQYWdlcztcbiAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSByZXN1bHRzLnRvdGFsUmVjb3JkcztcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHJlc3VsdHMucGFnZUluZGV4O1xuICAgICAgICBfLmZvckVhY2godGhpcy50YXNrRXhlY3V0aW9uc0xpc3QsIGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgICAgZWxlbWVudC5jcmVhdGVkID0gbmV3IERhdGUoZWxlbWVudC5jcmVhdGVkKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZ3JpZFZpZXcgPSB7XG4gICAgICAgICAgZGF0YTogdGhpcy50YXNrRXhlY3V0aW9uc0xpc3QsXG4gICAgICAgICAgdG90YWw6IHJlc3VsdHMudG90YWxSZWNvcmRzXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSByZXN1bHRzLnBhZ2VJbmRleDtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG5cbiAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoTE9HX1RBRywgJ2dldFNjaGVkdWxlZFRhc2tFeGVjdXRpb25zIGZhaWxlZDogJywgZXJyb3IpO1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVQYWdlSW5kZXgoc2tpcDogbnVtYmVyLCB0YWtlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiAoc2tpcCAvIHRha2UpICsgMTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRRdWVyeVNvcnQoKTogTW90aWZRdWVyeVNvcnQge1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKExPR19UQUcsICdidWlsZFF1ZXJ5U29ydDogJywgdGhpcy5zb3J0KTtcbiAgICBsZXQgcXVlcnlTb3J0ID0gbmV3IE1vdGlmUXVlcnlTb3J0KCk7XG4gICAgaWYgKHRoaXMuc29ydCkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNvcnQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IHNvcnRJbmZvID0gdGhpcy5zb3J0W2ldO1xuICAgICAgICBpZiAoc29ydEluZm8uZGlyICYmIHNvcnRJbmZvLmRpciA9PT0gJ2FzYycpIHtcbiAgICAgICAgICBxdWVyeVNvcnQub3JkZXJBc2NlbmRpbmdCeShzb3J0SW5mby5maWVsZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoc29ydEluZm8uZGlyICYmIHNvcnRJbmZvLmRpciA9PT0gJ2Rlc2MnKSB7XG4gICAgICAgICAgcXVlcnlTb3J0Lm9yZGVyRGVzY2VuZGluZ0J5KHNvcnRJbmZvLmZpZWxkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcXVlcnlTb3J0O1xuICB9XG59XG4iXX0=