ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
303 lines • 24.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: src/table-data.service.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { __read, __spread, __values } from "tslib";
/**
* @license
* Copyright Alibaba.com All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
*/
import { Injectable } from '@angular/core';
import { BehaviorSubject, combineLatest, Subject } from 'rxjs';
import { debounceTime, distinctUntilChanged, filter, map, skip, switchMap, takeUntil } from 'rxjs/operators';
var NzTableDataService = /** @class */ (function () {
function NzTableDataService() {
var _this = this;
this.destroy$ = new Subject();
this.pageIndex$ = new BehaviorSubject(1);
this.frontPagination$ = new BehaviorSubject(true);
this.pageSize$ = new BehaviorSubject(10);
this.listOfData$ = new BehaviorSubject([]);
this.pageIndexDistinct$ = this.pageIndex$.pipe(distinctUntilChanged());
this.pageSizeDistinct$ = this.pageSize$.pipe(distinctUntilChanged());
this.listOfCalcOperator$ = new BehaviorSubject([]);
this.queryParams$ = combineLatest([
this.pageIndexDistinct$,
this.pageSizeDistinct$,
this.listOfCalcOperator$
]).pipe(debounceTime(300), skip(1), map((/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var _b = __read(_a, 3), pageIndex = _b[0], pageSize = _b[1], listOfCalc = _b[2];
return {
pageIndex: pageIndex,
pageSize: pageSize,
sort: listOfCalc
.filter((/**
* @param {?} item
* @return {?}
*/
function (item) { return item.sortFn; }))
.map((/**
* @param {?} item
* @return {?}
*/
function (item) {
return {
key: (/** @type {?} */ (item.key)),
value: item.sortOrder
};
})),
filter: listOfCalc
.filter((/**
* @param {?} item
* @return {?}
*/
function (item) { return item.filterFn; }))
.map((/**
* @param {?} item
* @return {?}
*/
function (item) {
return {
key: (/** @type {?} */ (item.key)),
value: item.filterValue
};
}))
};
})));
this.listOfDataAfterCalc$ = combineLatest([this.listOfData$, this.listOfCalcOperator$]).pipe(map((/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var e_1, _b;
var _c = __read(_a, 2), listOfData = _c[0], listOfCalcOperator = _c[1];
/** @type {?} */
var listOfDataAfterCalc = __spread(listOfData);
/** @type {?} */
var listOfFilterOperator = listOfCalcOperator.filter((/**
* @param {?} item
* @return {?}
*/
function (item) {
var filterValue = item.filterValue, filterFn = item.filterFn;
/** @type {?} */
var isReset = filterValue === null || filterValue === undefined || (Array.isArray(filterValue) && (/** @type {?} */ (filterValue)).length === 0);
return !isReset && typeof filterFn === 'function';
}));
var _loop_1 = function (item) {
var filterFn = item.filterFn, filterValue = item.filterValue;
listOfDataAfterCalc = listOfDataAfterCalc.filter((/**
* @param {?} data
* @return {?}
*/
function (data) { return ((/** @type {?} */ (filterFn)))(filterValue, data); }));
};
try {
for (var listOfFilterOperator_1 = __values(listOfFilterOperator), listOfFilterOperator_1_1 = listOfFilterOperator_1.next(); !listOfFilterOperator_1_1.done; listOfFilterOperator_1_1 = listOfFilterOperator_1.next()) {
var item = listOfFilterOperator_1_1.value;
_loop_1(item);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (listOfFilterOperator_1_1 && !listOfFilterOperator_1_1.done && (_b = listOfFilterOperator_1.return)) _b.call(listOfFilterOperator_1);
}
finally { if (e_1) throw e_1.error; }
}
/** @type {?} */
var listOfSortOperator = listOfCalcOperator
.filter((/**
* @param {?} item
* @return {?}
*/
function (item) { return item.sortOrder !== null && typeof item.sortFn === 'function'; }))
.sort((/**
* @param {?} a
* @param {?} b
* @return {?}
*/
function (a, b) { return +b.sortPriority - +a.sortPriority; }));
listOfDataAfterCalc.sort((/**
* @param {?} record1
* @param {?} record2
* @return {?}
*/
function (record1, record2) {
var e_2, _a;
try {
for (var listOfSortOperator_1 = __values(listOfSortOperator), listOfSortOperator_1_1 = listOfSortOperator_1.next(); !listOfSortOperator_1_1.done; listOfSortOperator_1_1 = listOfSortOperator_1.next()) {
var item = listOfSortOperator_1_1.value;
var sortFn = item.sortFn, sortOrder = item.sortOrder;
if (sortFn && sortOrder) {
/** @type {?} */
var compareResult = ((/** @type {?} */ (sortFn)))(record1, record2, sortOrder);
if (compareResult !== 0) {
return sortOrder === 'ascend' ? compareResult : -compareResult;
}
}
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (listOfSortOperator_1_1 && !listOfSortOperator_1_1.done && (_a = listOfSortOperator_1.return)) _a.call(listOfSortOperator_1);
}
finally { if (e_2) throw e_2.error; }
}
return 0;
}));
return listOfDataAfterCalc;
})));
this.listOfFrontEndCurrentPageData$ = combineLatest([this.pageIndexDistinct$, this.pageSizeDistinct$, this.listOfDataAfterCalc$]).pipe(takeUntil(this.destroy$), filter((/**
* @param {?} value
* @return {?}
*/
function (value) {
var _a = __read(value, 3), pageIndex = _a[0], pageSize = _a[1], listOfData = _a[2];
/** @type {?} */
var maxPageIndex = Math.ceil(listOfData.length / pageSize) || 1;
return pageIndex <= maxPageIndex;
})), map((/**
* @param {?} __0
* @return {?}
*/
function (_a) {
var _b = __read(_a, 3), pageIndex = _b[0], pageSize = _b[1], listOfData = _b[2];
return listOfData.slice((pageIndex - 1) * pageSize, pageIndex * pageSize);
})));
this.listOfCurrentPageData$ = this.frontPagination$.pipe(switchMap((/**
* @param {?} pagination
* @return {?}
*/
function (pagination) { return (pagination ? _this.listOfFrontEndCurrentPageData$ : _this.listOfData$); })));
this.total$ = this.frontPagination$.pipe(switchMap((/**
* @param {?} pagination
* @return {?}
*/
function (pagination) { return (pagination ? _this.listOfDataAfterCalc$ : _this.listOfData$); })), map((/**
* @param {?} list
* @return {?}
*/
function (list) { return list.length; })), distinctUntilChanged());
}
/**
* @param {?} size
* @return {?}
*/
NzTableDataService.prototype.updatePageSize = /**
* @param {?} size
* @return {?}
*/
function (size) {
this.pageSize$.next(size);
};
/**
* @param {?} pagination
* @return {?}
*/
NzTableDataService.prototype.updateFrontPagination = /**
* @param {?} pagination
* @return {?}
*/
function (pagination) {
this.frontPagination$.next(pagination);
};
/**
* @param {?} index
* @return {?}
*/
NzTableDataService.prototype.updatePageIndex = /**
* @param {?} index
* @return {?}
*/
function (index) {
this.pageIndex$.next(index);
};
/**
* @param {?} list
* @return {?}
*/
NzTableDataService.prototype.updateListOfData = /**
* @param {?} list
* @return {?}
*/
function (list) {
this.listOfData$.next(list);
};
/**
* @return {?}
*/
NzTableDataService.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
this.destroy$.next();
this.destroy$.complete();
};
NzTableDataService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
NzTableDataService.ctorParameters = function () { return []; };
return NzTableDataService;
}());
export { NzTableDataService };
if (false) {
/**
* @type {?}
* @private
*/
NzTableDataService.prototype.destroy$;
/**
* @type {?}
* @private
*/
NzTableDataService.prototype.pageIndex$;
/**
* @type {?}
* @private
*/
NzTableDataService.prototype.frontPagination$;
/**
* @type {?}
* @private
*/
NzTableDataService.prototype.pageSize$;
/**
* @type {?}
* @private
*/
NzTableDataService.prototype.listOfData$;
/** @type {?} */
NzTableDataService.prototype.pageIndexDistinct$;
/** @type {?} */
NzTableDataService.prototype.pageSizeDistinct$;
/** @type {?} */
NzTableDataService.prototype.listOfCalcOperator$;
/** @type {?} */
NzTableDataService.prototype.queryParams$;
/**
* @type {?}
* @private
*/
NzTableDataService.prototype.listOfDataAfterCalc$;
/**
* @type {?}
* @private
*/
NzTableDataService.prototype.listOfFrontEndCurrentPageData$;
/** @type {?} */
NzTableDataService.prototype.listOfCurrentPageData$;
/** @type {?} */
NzTableDataService.prototype.total$;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctem9ycm8tYW50ZC90YWJsZS8iLCJzb3VyY2VzIjpbInNyYy90YWJsZS1kYXRhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQVFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdHO0lBK0dFO1FBQUEsaUJBQWdCO1FBN0dSLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUM1QyxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUN0RCxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDNUMsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsRUFBRSxDQUFDLENBQUM7UUFDN0QsdUJBQWtCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLHNCQUFpQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztRQUNoRSx3QkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FTdkMsRUFBRSxDQUFDLENBQUM7UUFDTixpQkFBWSxHQUFtQyxhQUFhLENBQUM7WUFDM0QsSUFBSSxDQUFDLGtCQUFrQjtZQUN2QixJQUFJLENBQUMsaUJBQWlCO1lBQ3RCLElBQUksQ0FBQyxtQkFBbUI7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LENBQUM7SUFDOUIsQ0FBQzs7OztJQUVELHdDQUFXOzs7SUFBWDtRQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDOztnQkFuSEYsVUFBVTs7OztJQW9IWCx5QkFBQztDQUFBLEFBcEhELElBb0hDO1NBbkhZLGtCQUFrQjs7Ozs7O0lBQzdCLHNDQUFpQzs7Ozs7SUFDakMsd0NBQW9EOzs7OztJQUNwRCw4Q0FBOEQ7Ozs7O0lBQzlELHVDQUFvRDs7Ozs7SUFDcEQseUNBQTZEOztJQUM3RCxnREFBa0U7O0lBQ2xFLCtDQUFnRTs7SUFDaEUsaURBU007O0lBQ04sMENBNkJFOzs7OztJQUNGLGtEQTZCRTs7Ozs7SUFDRiw0REFVRTs7SUFDRixvREFFRTs7SUFDRixvQ0FJRSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHNraXAsIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTnpUYWJsZURhdGEsIE56VGFibGVGaWx0ZXJGbiwgTnpUYWJsZUZpbHRlclZhbHVlLCBOelRhYmxlUXVlcnlQYXJhbXMsIE56VGFibGVTb3J0Rm4sIE56VGFibGVTb3J0T3JkZXIgfSBmcm9tICcuL3RhYmxlLnR5cGVzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE56VGFibGVEYXRhU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIHBhZ2VJbmRleCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMSk7XG4gIHByaXZhdGUgZnJvbnRQYWdpbmF0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHByaXZhdGUgcGFnZVNpemUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDEwKTtcbiAgcHJpdmF0ZSBsaXN0T2ZEYXRhJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TnpUYWJsZURhdGFbXT4oW10pO1xuICBwYWdlSW5kZXhEaXN0aW5jdCQgPSB0aGlzLnBhZ2VJbmRleCQucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgcGFnZVNpemVEaXN0aW5jdCQgPSB0aGlzLnBhZ2VTaXplJC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICBsaXN0T2ZDYWxjT3BlcmF0b3IkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxcbiAgICBBcnJheTx7XG4gICAgICBrZXk/OiBzdHJpbmc7XG4gICAgICBzb3J0Rm46IE56VGFibGVTb3J0Rm4gfCBudWxsIHwgYm9vbGVhbjtcbiAgICAgIHNvcnRPcmRlcjogTnpUYWJsZVNvcnRPcmRlcjtcbiAgICAgIGZpbHRlckZuOiBOelRhYmxlRmlsdGVyRm4gfCBudWxsIHwgYm9vbGVhbjtcbiAgICAgIGZpbHRlclZhbHVlOiBOelRhYmxlRmlsdGVyVmFsdWU7XG4gICAgICBzb3J0UHJpb3JpdHk6IG51bWJlciB8IGJvb2xlYW47XG4gICAgfT5cbiAgPihbXSk7XG4gIHF1ZXJ5UGFyYW1zJDogT2JzZXJ2YWJsZTxOelRhYmxlUXVlcnlQYXJhbXM+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5wYWdlSW5kZXhEaXN0aW5jdCQsXG4gICAgdGhpcy5wYWdlU2l6ZURpc3RpbmN0JCxcbiAgICB0aGlzLmxpc3RPZkNhbGNPcGVyYXRvciRcbiAgXSkucGlwZShcbiAgICBkZWJvdW5jZVRpbWUoMzAwKSxcbiAgICBza2lwKDEpLFxuICAgIG1hcCgoW3BhZ2VJbmRleCwgcGFnZVNpemUsIGxpc3RPZkNhbGNdKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYWdlSW5kZXgsXG4gICAgICAgIHBhZ2VTaXplLFxuICAgICAgICBzb3J0OiBsaXN0T2ZDYWxjXG4gICAgICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0uc29ydEZuKVxuICAgICAgICAgIC5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBrZXk6IGl0ZW0ua2V5ISxcbiAgICAgICAgICAgICAgdmFsdWU6IGl0ZW0uc29ydE9yZGVyXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pLFxuICAgICAgICBmaWx0ZXI6IGxpc3RPZkNhbGNcbiAgICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbS5maWx0ZXJGbilcbiAgICAgICAgICAubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAga2V5OiBpdGVtLmtleSEsXG4gICAgICAgICAgICAgIHZhbHVlOiBpdGVtLmZpbHRlclZhbHVlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pXG4gICAgICB9O1xuICAgIH0pXG4gICk7XG4gIHByaXZhdGUgbGlzdE9mRGF0YUFmdGVyQ2FsYyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmxpc3RPZkRhdGEkLCB0aGlzLmxpc3RPZkNhbGNPcGVyYXRvciRdKS5waXBlKFxuICAgIG1hcCgoW2xpc3RPZkRhdGEsIGxpc3RPZkNhbGNPcGVyYXRvcl0pID0+IHtcbiAgICAgIGxldCBsaXN0T2ZEYXRhQWZ0ZXJDYWxjID0gWy4uLmxpc3RPZkRhdGFdO1xuICAgICAgY29uc3QgbGlzdE9mRmlsdGVyT3BlcmF0b3IgPSBsaXN0T2ZDYWxjT3BlcmF0b3IuZmlsdGVyKGl0ZW0gPT4ge1xuICAgICAgICBjb25zdCB7IGZpbHRlclZhbHVlLCBmaWx0ZXJGbiB9ID0gaXRlbTtcbiAgICAgICAgY29uc3QgaXNSZXNldCA9IGZpbHRlclZhbHVlID09PSBudWxsIHx8IGZpbHRlclZhbHVlID09PSB1bmRlZmluZWQgfHwgKEFycmF5LmlzQXJyYXkoZmlsdGVyVmFsdWUpICYmIGZpbHRlclZhbHVlIS5sZW5ndGggPT09IDApO1xuICAgICAgICByZXR1cm4gIWlzUmVzZXQgJiYgdHlwZW9mIGZpbHRlckZuID09PSAnZnVuY3Rpb24nO1xuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgbGlzdE9mRmlsdGVyT3BlcmF0b3IpIHtcbiAgICAgICAgY29uc3QgeyBmaWx0ZXJGbiwgZmlsdGVyVmFsdWUgfSA9IGl0ZW07XG4gICAgICAgIGxpc3RPZkRhdGFBZnRlckNhbGMgPSBsaXN0T2ZEYXRhQWZ0ZXJDYWxjLmZpbHRlcihkYXRhID0+IChmaWx0ZXJGbiBhcyBOelRhYmxlRmlsdGVyRm4pKGZpbHRlclZhbHVlLCBkYXRhKSk7XG4gICAgICB9XG4gICAgICBjb25zdCBsaXN0T2ZTb3J0T3BlcmF0b3IgPSBsaXN0T2ZDYWxjT3BlcmF0b3JcbiAgICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0uc29ydE9yZGVyICE9PSBudWxsICYmIHR5cGVvZiBpdGVtLnNvcnRGbiA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+ICtiLnNvcnRQcmlvcml0eSAtICthLnNvcnRQcmlvcml0eSk7XG4gICAgICBsaXN0T2ZEYXRhQWZ0ZXJDYWxjLnNvcnQoKHJlY29yZDEsIHJlY29yZDIpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGxpc3RPZlNvcnRPcGVyYXRvcikge1xuICAgICAgICAgIGNvbnN0IHsgc29ydEZuLCBzb3J0T3JkZXIgfSA9IGl0ZW07XG4gICAgICAgICAgaWYgKHNvcnRGbiAmJiBzb3J0T3JkZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBhcmVSZXN1bHQgPSAoc29ydEZuIGFzIE56VGFibGVTb3J0Rm4pKHJlY29yZDEsIHJlY29yZDIsIHNvcnRPcmRlcik7XG4gICAgICAgICAgICBpZiAoY29tcGFyZVJlc3VsdCAhPT0gMCkge1xuICAgICAgICAgICAgICByZXR1cm4gc29ydE9yZGVyID09PSAnYXNjZW5kJyA/IGNvbXBhcmVSZXN1bHQgOiAtY29tcGFyZVJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBsaXN0T2ZEYXRhQWZ0ZXJDYWxjO1xuICAgIH0pXG4gICk7XG4gIHByaXZhdGUgbGlzdE9mRnJvbnRFbmRDdXJyZW50UGFnZURhdGEkID0gY29tYmluZUxhdGVzdChbdGhpcy5wYWdlSW5kZXhEaXN0aW5jdCQsIHRoaXMucGFnZVNpemVEaXN0aW5jdCQsIHRoaXMubGlzdE9mRGF0YUFmdGVyQ2FsYyRdKS5waXBlKFxuICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICBmaWx0ZXIodmFsdWUgPT4ge1xuICAgICAgY29uc3QgW3BhZ2VJbmRleCwgcGFnZVNpemUsIGxpc3RPZkRhdGFdID0gdmFsdWU7XG4gICAgICBjb25zdCBtYXhQYWdlSW5kZXggPSBNYXRoLmNlaWwobGlzdE9mRGF0YS5sZW5ndGggLyBwYWdlU2l6ZSkgfHwgMTtcbiAgICAgIHJldHVybiBwYWdlSW5kZXggPD0gbWF4UGFnZUluZGV4O1xuICAgIH0pLFxuICAgIG1hcCgoW3BhZ2VJbmRleCwgcGFnZVNpemUsIGxpc3RPZkRhdGFdKSA9PiB7XG4gICAgICByZXR1cm4gbGlzdE9mRGF0YS5zbGljZSgocGFnZUluZGV4IC0gMSkgKiBwYWdlU2l6ZSwgcGFnZUluZGV4ICogcGFnZVNpemUpO1xuICAgIH0pXG4gICk7XG4gIGxpc3RPZkN1cnJlbnRQYWdlRGF0YSQgPSB0aGlzLmZyb250UGFnaW5hdGlvbiQucGlwZShcbiAgICBzd2l0Y2hNYXAocGFnaW5hdGlvbiA9PiAocGFnaW5hdGlvbiA/IHRoaXMubGlzdE9mRnJvbnRFbmRDdXJyZW50UGFnZURhdGEkIDogdGhpcy5saXN0T2ZEYXRhJCkpXG4gICk7XG4gIHRvdGFsJCA9IHRoaXMuZnJvbnRQYWdpbmF0aW9uJC5waXBlKFxuICAgIHN3aXRjaE1hcChwYWdpbmF0aW9uID0+IChwYWdpbmF0aW9uID8gdGhpcy5saXN0T2ZEYXRhQWZ0ZXJDYWxjJCA6IHRoaXMubGlzdE9mRGF0YSQpKSxcbiAgICBtYXAobGlzdCA9PiBsaXN0Lmxlbmd0aCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICApO1xuXG4gIHVwZGF0ZVBhZ2VTaXplKHNpemU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucGFnZVNpemUkLm5leHQoc2l6ZSk7XG4gIH1cbiAgdXBkYXRlRnJvbnRQYWdpbmF0aW9uKHBhZ2luYXRpb246IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmZyb250UGFnaW5hdGlvbiQubmV4dChwYWdpbmF0aW9uKTtcbiAgfVxuICB1cGRhdGVQYWdlSW5kZXgoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucGFnZUluZGV4JC5uZXh0KGluZGV4KTtcbiAgfVxuICB1cGRhdGVMaXN0T2ZEYXRhKGxpc3Q6IE56VGFibGVEYXRhW10pOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RPZkRhdGEkLm5leHQobGlzdCk7XG4gIH1cbiAgY29uc3RydWN0b3IoKSB7fVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==