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 

/ esm2015 / 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 {?} */
const LOG_TAG = "[SchedulerSection] [ScheduledTaskDetailsComponent]";
/** @type {?} */
const REFRESH_TOKENS_LIST_ENDPOINT = "/oauth2/refreshTokens/{0}/accessTokens";
export class ScheduledTaskDetailsComponent {
    /**
     * @param {?} logger
     * @param {?} schedulerService
     * @param {?} toaster
     */
    constructor(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 {?}
     */
    ngOnInit() {
        this.refreshData();
    }
    /**
     * Reload the list of access tokens for the selected refresh token
     * @return {?}
     */
    refreshData() {
        this.logger.debug(LOG_TAG, "refreshData");
        this.loadData(this.scheduledTask, this.currentPage, this.pageSize);
    }
    /**
     * @param {?} __0
     * @return {?}
     */
    pageChange({ skip, take }) {
        this.logger.debug(LOG_TAG, 'pageChange skip=', skip, ' take=', take);
        this.skip = skip;
        this.pageSize = take;
        /** @type {?} */
        const newPageIndex = this.calculatePageIndex(skip, take);
        this.loadData(this.scheduledTask, newPageIndex, this.pageSize);
    }
    /**
     * @param {?} sort
     * @return {?}
     */
    sortChange(sort) {
        this.logger.debug(LOG_TAG, 'sortChange sort=', this.sort);
        this.sort = sort;
        this.refreshData();
    }
    /**
     * @private
     * @param {?} scheduledTask
     * @param {?} pageIndex
     * @param {?} pageSize
     * @return {?}
     */
    loadData(scheduledTask, pageIndex, pageSize) {
        this.logger.debug(LOG_TAG, 'loadData pageIndex=', pageIndex, ' pageSize=', pageSize);
        this.loading = true;
        /** @type {?} */
        const sort = this.buildQuerySort();
        this.schedulerService.getTaskExecutionsList(scheduledTask, null, pageIndex, pageSize, sort.encode(new HttpParams()).get('sort'), 'response', false).subscribe((/**
         * @param {?} response
         * @return {?}
         */
        (response) => {
            /** @type {?} */
            const 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 {?}
         */
        error => {
            this.logger.error(LOG_TAG, 'getScheduledTaskExecutions failed: ', error);
            this.loading = false;
        }));
    }
    /**
     * @private
     * @param {?} skip
     * @param {?} take
     * @return {?}
     */
    calculatePageIndex(skip, take) {
        return (skip / take) + 1;
    }
    /**
     * @private
     * @return {?}
     */
    buildQuerySort() {
        this.logger.debug(LOG_TAG, 'buildQuerySort: ', this.sort);
        /** @type {?} */
        let querySort = new MotifQuerySort();
        if (this.sort) {
            for (let i = 0; i < this.sort.length; i++) {
                /** @type {?} */
                let 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 = () => [
    { type: NGXLogger },
    { type: SchedulerService },
    { type: WCToasterService }
];
ScheduledTaskDetailsComponent.propDecorators = {
    scheduledTask: [{ type: Input }]
};
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGVkLXRhc2stZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9tb3RpZi13ZWItYWRtaW4tY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zZWN0aW9ucy9TY2hlZHVsZXIvY29tcG9uZW50cy9zY2hlZHVsZWQtdGFzay1kZXRhaWxzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBZ0MsTUFBTSxzQ0FBc0MsQ0FBQztBQUd0RyxPQUFPLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDOztNQUV0QixPQUFPLEdBQUcsb0RBQW9EOztNQUM5RCw0QkFBNEIsR0FBRyx3Q0FBd0M7QUFPN0UsTUFBTSxPQUFPLDZCQUE2Qjs7Ozs7O0lBdUJ4QyxZQUFvQixNQUFpQixFQUMzQixnQkFBa0MsRUFDbEMsT0FBeUI7UUFGZixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQzNCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7O1FBcEI1Qix1QkFBa0IsR0FBd0MsRUFBRSxDQUFDOztRQUc3RCxTQUFJLEdBQXFCLENBQUM7Z0JBQy9CLEtBQUssRUFBRSxTQUFTO2dCQUNoQixHQUFHLEVBQUUsTUFBTTthQUNaLENBQUMsQ0FBQztRQUVJLFNBQUksR0FBd0IsU0FBUyxDQUFDO1FBQ3RDLGFBQVEsR0FBRyxFQUFFLENBQUM7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USxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUM3QzthQUNGO1NBQ0Y7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDOzs7WUEzR0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQ0FBbUM7Z0JBRTdDLDhxQ0FBc0Q7O2FBQ3ZEOzs7O1lBakJRLFNBQVM7WUFHVCxnQkFBZ0I7WUFEaEIsZ0JBQWdCOzs7NEJBa0J0QixLQUFLOzs7O0lBQU4sc0RBQXNDOztJQUd0QywyREFBb0U7O0lBR3BFLDZDQUdHOztJQUNILGlEQUE0Qjs7SUFDNUIsNkNBQTZDOztJQUM3QyxpREFBcUI7O0lBQ3JCLDZDQUFnQjs7SUFDaEIsb0RBQXVCOztJQUN2QixtREFBc0I7O0lBQ3RCLHFEQUF3Qjs7SUFDeEIsd0RBQStCOztJQUUvQixnREFBaUI7Ozs7O0lBRUwsK0NBQXlCOzs7OztJQUNuQyx5REFBMEM7Ozs7O0lBQzFDLGdEQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5HWExvZ2dlcn0gZnJvbSAnd2ViLWNvbnNvbGUtY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdDVG9hc3RlclNlcnZpY2UgfSBmcm9tICd3ZWItY29uc29sZS11aS1raXQnO1xuaW1wb3J0IHsgU2NoZWR1bGVyU2VydmljZSwgU2NoZWR1bGVkVGFza0V4ZWN1dGlvbkVudGl0eSB9IGZyb20gJ0B3YS1tb3RpZi1vcGVuLWFwaS9zY2hlZHVsZXItc2VydmljZSc7XG5pbXBvcnQgeyBTb3J0RGVzY3JpcHRvciwgR3JvdXBEZXNjcmlwdG9yLCBEYXRhUmVzdWx0IH0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWRhdGEtcXVlcnknO1xuaW1wb3J0IHsgUGFnZUNoYW5nZUV2ZW50LCBHcmlkQ29tcG9uZW50IH0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItZ3JpZCc7XG5pbXBvcnQgeyBNb3RpZlF1ZXJ5U29ydCwgTW90aWZRdWVyeVJlc3VsdHMgfSBmcm9tICd3ZWItY29uc29sZS1jb3JlJztcbmltcG9ydCB7IEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbmNvbnN0IExPR19UQUcgPSBcIltTY2hlZHVsZXJTZWN0aW9uXSBbU2NoZWR1bGVkVGFza0RldGFpbHNDb21wb25lbnRdXCI7XG5jb25zdCBSRUZSRVNIX1RPS0VOU19MSVNUX0VORFBPSU5UID0gXCIvb2F1dGgyL3JlZnJlc2hUb2tlbnMvezB9L2FjY2Vzc1Rva2Vuc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3YS1zY2hlZHVsZXItc2VjdGlvbi10YXNrLWRldGFpbHMnLFxuICBzdHlsZVVybHM6IFsgJy4vc2NoZWR1bGVkLXRhc2stZGV0YWlscy5jb21wb25lbnQuc2NzcycgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NjaGVkdWxlZC10YXNrLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFNjaGVkdWxlZFRhc2tEZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBwdWJsaWMgc2NoZWR1bGVkVGFzazogc3RyaW5nO1xuXG4gIC8vRGF0YVxuICBwdWJsaWMgdGFza0V4ZWN1dGlvbnNMaXN0OiBBcnJheTxTY2hlZHVsZWRUYXNrRXhlY3V0aW9uRW50aXR5PiA9IFtdO1xuXG4gIC8vR3JpZCBPcHRpb25zXG4gIHB1YmxpYyBzb3J0OiBTb3J0RGVzY3JpcHRvcltdID0gW3tcbiAgICBmaWVsZDogJ2NyZWF0ZWQnLFxuICAgIGRpcjogJ2Rlc2MnXG4gIH1dO1xuICBwdWJsaWMgZ3JpZFZpZXc6IERhdGFSZXN1bHQ7XG4gIHB1YmxpYyB0eXBlOiAnbnVtZXJpYycgfCAnaW5wdXQnID0gJ251bWVyaWMnO1xuICBwdWJsaWMgcGFnZVNpemUgPSAxMDtcbiAgcHVibGljIHNraXAgPSAwO1xuICBwdWJsaWMgY3VycmVudFBhZ2UgPSAxO1xuICBwdWJsaWMgdG90YWxQYWdlcyA9IDA7XG4gIHB1YmxpYyB0b3RhbFJlY29yZHMgPSAwO1xuICBwdWJsaWMgaXNGaWVsZFNvcnRhYmxlID0gZmFsc2U7XG5cbiAgbG9hZGluZzogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvZ2dlcjogTkdYTG9nZ2VyLFxuICAgIHByaXZhdGUgc2NoZWR1bGVyU2VydmljZTogU2NoZWR1bGVyU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0ZXI6IFdDVG9hc3RlclNlcnZpY2UpIHtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVmcmVzaERhdGEoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWxvYWQgdGhlIGxpc3Qgb2YgYWNjZXNzIHRva2VucyBmb3IgdGhlIHNlbGVjdGVkIHJlZnJlc2ggdG9rZW5cbiAgICovXG4gIHB1YmxpYyByZWZyZXNoRGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhMT0dfVEFHLCBcInJlZnJlc2hEYXRhXCIpO1xuICAgIHRoaXMubG9hZERhdGEodGhpcy5zY2hlZHVsZWRUYXNrLCB0aGlzLmN1cnJlbnRQYWdlLCB0aGlzLnBhZ2VTaXplKTtcbiAgfVxuXG4gIHB1YmxpYyBwYWdlQ2hhbmdlKHsgc2tpcCwgdGFrZSB9OiBQYWdlQ2hhbmdlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhMT0dfVEFHLCAncGFnZUNoYW5nZSBza2lwPScsIHNraXAsICcgdGFrZT0nLCB0YWtlKTtcbiAgICB0aGlzLnNraXAgPSBza2lwO1xuICAgIHRoaXMucGFnZVNpemUgPSB0YWtlO1xuICAgIGNvbnN0IG5ld1BhZ2VJbmRleCA9IHRoaXMuY2FsY3VsYXRlUGFnZUluZGV4KHNraXAsIHRha2UpO1xuICAgIHRoaXMubG9hZERhdGEodGhpcy5zY2hlZHVsZWRUYXNrLCBuZXdQYWdlSW5kZXgsIHRoaXMucGFnZVNpemUpO1xuICB9XG5cbiAgcHVibGljIHNvcnRDaGFuZ2Uoc29ydDogU29ydERlc2NyaXB0b3JbXSk6IHZvaWQge1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKExPR19UQUcsICdzb3J0Q2hhbmdlIHNvcnQ9JywgdGhpcy5zb3J0KTtcbiAgICB0aGlzLnNvcnQgPSBzb3J0O1xuICAgIHRoaXMucmVmcmVzaERhdGEoKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZERhdGEoc2NoZWR1bGVkVGFzazogc3RyaW5nLCBwYWdlSW5kZXg6IG51bWJlciwgcGFnZVNpemU6IG51bWJlcikge1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKExPR19UQUcsICdsb2FkRGF0YSBwYWdlSW5kZXg9JywgcGFnZUluZGV4LCAnIHBhZ2VTaXplPScsIHBhZ2VTaXplKTtcblxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgY29uc3Qgc29ydDogTW90aWZRdWVyeVNvcnQgPSB0aGlzLmJ1aWxkUXVlcnlTb3J0KCk7XG5cbiAgICB0aGlzLnNjaGVkdWxlclNlcnZpY2UuZ2V0VGFza0V4ZWN1dGlvbnNMaXN0KHNjaGVkdWxlZFRhc2ssIG51bGwsXG4gICAgICBwYWdlSW5kZXgsIHBhZ2VTaXplLCBzb3J0LmVuY29kZShuZXcgSHR0cFBhcmFtcygpKS5nZXQoJ3NvcnQnKSwgJ3Jlc3BvbnNlJywgZmFsc2UpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcblxuICAgICAgICBjb25zdCByZXN1bHRzOiBNb3RpZlF1ZXJ5UmVzdWx0cyA9IE1vdGlmUXVlcnlSZXN1bHRzLmZyb21IdHRwUmVzcG9uc2UocmVzcG9uc2UpO1xuICAgICAgICB0aGlzLnRhc2tFeGVjdXRpb25zTGlzdCA9IHJlc3VsdHMuZGF0YTtcbiAgICAgICAgdGhpcy50b3RhbFBhZ2VzID0gcmVzdWx0cy50b3RhbFBhZ2VzO1xuICAgICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IHJlc3VsdHMudG90YWxSZWNvcmRzO1xuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gcmVzdWx0cy5wYWdlSW5kZXg7XG4gICAgICAgIF8uZm9yRWFjaCh0aGlzLnRhc2tFeGVjdXRpb25zTGlzdCwgZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgICBlbGVtZW50LmNyZWF0ZWQgPSBuZXcgRGF0ZShlbGVtZW50LmNyZWF0ZWQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5ncmlkVmlldyA9IHtcbiAgICAgICAgICBkYXRhOiB0aGlzLnRhc2tFeGVjdXRpb25zTGlzdCxcbiAgICAgICAgICB0b3RhbDogcmVzdWx0cy50b3RhbFJlY29yZHNcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHJlc3VsdHMucGFnZUluZGV4O1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihMT0dfVEFHLCAnZ2V0U2NoZWR1bGVkVGFza0V4ZWN1dGlvbnMgZmFpbGVkOiAnLCBlcnJvcik7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZVBhZ2VJbmRleChza2lwOiBudW1iZXIsIHRha2U6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIChza2lwIC8gdGFrZSkgKyAxO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFF1ZXJ5U29ydCgpOiBNb3RpZlF1ZXJ5U29ydCB7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoTE9HX1RBRywgJ2J1aWxkUXVlcnlTb3J0OiAnLCB0aGlzLnNvcnQpO1xuICAgIGxldCBxdWVyeVNvcnQgPSBuZXcgTW90aWZRdWVyeVNvcnQoKTtcbiAgICBpZiAodGhpcy5zb3J0KSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc29ydC5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgc29ydEluZm8gPSB0aGlzLnNvcnRbaV07XG4gICAgICAgIGlmIChzb3J0SW5mby5kaXIgJiYgc29ydEluZm8uZGlyID09PSAnYXNjJykge1xuICAgICAgICAgIHF1ZXJ5U29ydC5vcmRlckFzY2VuZGluZ0J5KHNvcnRJbmZvLmZpZWxkKTtcbiAgICAgICAgfSBlbHNlIGlmIChzb3J0SW5mby5kaXIgJiYgc29ydEluZm8uZGlyID09PSAnZGVzYycpIHtcbiAgICAgICAgICBxdWVyeVNvcnQub3JkZXJEZXNjZW5kaW5nQnkoc29ydEluZm8uZmllbGQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBxdWVyeVNvcnQ7XG4gIH1cbn1cbiJdfQ==