dbweb-common
Version:
用`yarn add dbweb-common`安装,不要忘记修改`angular.json`里的 `architect\build\options\assets`,加上
445 lines • 28.5 kB
JavaScript
var _a;
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from '@angular/core';
import { ElementApiService, fullApiPath, ElementsService } from 'dbweb-core';
import { tap, map } from 'rxjs/operators';
import * as i0 from "@angular/core";
import * as i1 from "dbweb-core";
/** @type {?} */
var indexElementName = 'index';
/** @enum {string} */
var CardType = {
navigation: 'navigation',
calendar: 'calendar',
notice: 'notice',
datalist: 'datalist',
chart: 'chart',
};
export { CardType };
/** @type {?} */
export var defaultCardSize = (_a = {},
_a[CardType.navigation] = 'sm',
_a[CardType.calendar] = 'sm',
_a[CardType.notice] = 'sm',
_a[CardType.datalist] = 'md',
_a[CardType.chart] = 'sm',
_a);
/**
* @record
*/
export function UserIndexCard() { }
if (false) {
/** @type {?} */
UserIndexCard.prototype.Type;
/** @type {?} */
UserIndexCard.prototype.Size;
/** @type {?} */
UserIndexCard.prototype.Setting;
}
/**
* @record
*/
function UserIndexSetting() { }
if (false) {
/** @type {?} */
UserIndexSetting.prototype.Layout;
/** @type {?} */
UserIndexSetting.prototype.Cards;
/** @type {?} */
UserIndexSetting.prototype.NavigationElements;
}
/**
* @record
*/
function BannerSetting() { }
if (false) {
/** @type {?} */
BannerSetting.prototype.DefaultBannerImage;
/** @type {?} */
BannerSetting.prototype.Banners;
}
/**
* @record
*/
function UserDiary() { }
if (false) {
/** @type {?} */
UserDiary.prototype.Day;
/** @type {?} */
UserDiary.prototype.Content;
}
/**
* @record
*/
function UserNotice() { }
if (false) {
/** @type {?} */
UserNotice.prototype.ID;
/** @type {?} */
UserNotice.prototype.Title;
/** @type {?} */
UserNotice.prototype.Time;
/** @type {?} */
UserNotice.prototype.IsReaded;
/** @type {?} */
UserNotice.prototype.URL;
/** @type {?} */
UserNotice.prototype.Sign;
/** @type {?} */
UserNotice.prototype.FrontURL;
}
/**
* @record
*/
function FetchMyNoticeResult() { }
if (false) {
/** @type {?} */
FetchMyNoticeResult.prototype.ElementForBrowseNotice;
/** @type {?} */
FetchMyNoticeResult.prototype.Data;
}
var IndexService = /** @class */ (function () {
function IndexService(api, eles) {
this.api = api;
this.eles = eles;
this.userSetting = (/** @type {?} */ ({}));
this.inited = false; // 是否已经初始化完毕
}
/**
* @private
* @return {?}
*/
IndexService.prototype.fetchIndexSetting = /**
* @private
* @return {?}
*/
function () {
return this.api.get(indexElementName, 'fetch-index-setting');
};
/**
* @private
* @param {?} param
* @return {?}
*/
IndexService.prototype.updateIndexSetting = /**
* @private
* @param {?} param
* @return {?}
*/
function (param) {
return this.api.post(indexElementName, 'update-index-setting', param);
};
/**
* @private
* @return {?}
*/
IndexService.prototype.fetchBanner = /**
* @private
* @return {?}
*/
function () {
return this.api.get(indexElementName, 'fetch-banner');
};
/**
* @private
* @return {?}
*/
IndexService.prototype.fetchIndexUserDiary = /**
* @private
* @return {?}
*/
function () {
// 需要将后端传递过来的字符串转换成date类型
return this.api.get(indexElementName, 'fetch-index-user-diary').pipe(map((/**
* @param {?} vals
* @return {?}
*/
function (vals) {
return vals
? vals.map((/**
* @param {?} v
* @return {?}
*/
function (v) { return ({
Day: new Date(v.Day),
Content: v.Content
// tslint:disable-next-line: indent
}); }))
: [];
})));
};
/**
* @private
* @param {?} day
* @return {?}
*/
IndexService.prototype.removeIndexUserDiary = /**
* @private
* @param {?} day
* @return {?}
*/
function (day) {
return this.api.post(indexElementName, 'remove-index-user-diary', day);
};
/**
* @private
* @param {?} param
* @return {?}
*/
IndexService.prototype.updateIndexUserDiary = /**
* @private
* @param {?} param
* @return {?}
*/
function (param) {
return this.api.post(indexElementName, 'update-index-user-diary', param);
};
/**
* @private
* @return {?}
*/
IndexService.prototype.fetchMyNotice = /**
* @private
* @return {?}
*/
function () {
/**
* @record
*/
function IUserNotice() { }
if (false) {
/** @type {?} */
IUserNotice.prototype.ID;
/** @type {?} */
IUserNotice.prototype.Title;
/** @type {?} */
IUserNotice.prototype.Time;
/** @type {?} */
IUserNotice.prototype.IsReaded;
/** @type {?} */
IUserNotice.prototype.URL;
/** @type {?} */
IUserNotice.prototype.Sign;
}
/**
* @record
*/
function IFetchMyNoticeResult() { }
if (false) {
/** @type {?} */
IFetchMyNoticeResult.prototype.ElementForBrowseNotice;
/** @type {?} */
IFetchMyNoticeResult.prototype.Data;
}
return this.api.get(indexElementName, 'fetch-my-notice').pipe(map((/**
* @param {?} v
* @return {?}
*/
function (v) {
return ((/** @type {?} */ ({
ElementForBrowseNotice: v.ElementForBrowseNotice,
Data: v.Data.map((/**
* @param {?} sv
* @return {?}
*/
function (sv) {
return ((/** @type {?} */ ({
ID: sv.ID,
Title: sv.Title,
Time: new Date(sv.Time),
IsReaded: sv.IsReaded,
URL: sv.URL,
Sign: sv.Sign
})));
}))
})));
})));
};
/**
* @return {?}
*/
IndexService.prototype.init = /**
* @return {?}
*/
function () {
var _this = this;
this.fetchIndexSetting().subscribe((/**
* @param {?} data
* @return {?}
*/
function (data) {
_this.userSetting = data || ((/** @type {?} */ ({})));
// console.log('======', this.userSetting);
_this.userSetting.Cards = _this.userSetting.Cards || [];
_this.userSetting.Layout = _this.userSetting.Layout || 'auto';
// console.log('------', this.userSetting.Layout);
_this.userSetting.NavigationElements = _this.userSetting.NavigationElements || [];
// 找不到的菜单项,或者是没有权限,需要去除
_this.userSetting.NavigationElements = _this.userSetting.NavigationElements.filter((/**
* @param {?} v
* @return {?}
*/
function (v) { return _this.eles.get(v); }));
_this.inited = true;
}));
this.fetchBanner().subscribe((/**
* @param {?} val
* @return {?}
*/
function (val) {
_this.banner = val;
_this.banner.DefaultBannerImage = fullApiPath(_this.banner.DefaultBannerImage);
}));
};
/**
* @return {?}
*/
IndexService.prototype.initCalendar = /**
* @return {?}
*/
function () {
var _this = this;
this.fetchIndexUserDiary().subscribe((/**
* @param {?} v
* @return {?}
*/
function (v) {
_this.userDiary = v;
}));
};
/**
* @return {?}
*/
IndexService.prototype.initNotice = /**
* @return {?}
*/
function () {
var _this = this;
this.fetchMyNotice().subscribe((/**
* @param {?} v
* @return {?}
*/
function (v) {
_this.notice = v.Data;
_this.eles.addElement(v.ElementForBrowseNotice);
v.Data.forEach((/**
* @param {?} one
* @return {?}
*/
function (one) { return _this.eles.setURLSign(one.URL, one.Sign); }));
// 然后才能计算前端url
_this.notice.forEach((/**
* @param {?} one
* @return {?}
*/
function (one) {
one.FrontURL = _this.eles.frontElementURL(v.ElementForBrowseNotice.Name, one.URL);
}));
}));
};
/**
* @param {?} day
* @param {?} content
* @return {?}
*/
IndexService.prototype.updateUserDiary = /**
* @param {?} day
* @param {?} content
* @return {?}
*/
function (day, content) {
var _this = this;
return this.updateIndexUserDiary({ Day: day, Content: content }).pipe(tap((/**
* @return {?}
*/
function () {
/** @type {?} */
var found = _this.userDiary.find((/**
* @param {?} v
* @return {?}
*/
function (v) { return v.Day.getTime() === day.getTime(); }));
if (found) {
found.Content = content;
}
else {
_this.userDiary.push({ Day: day, Content: content });
_this.userDiary.sort((/**
* @param {?} a
* @param {?} b
* @return {?}
*/
function (a, b) {
return a.Day.getTime() - b.Day.getTime();
}));
}
})));
};
/**
* @param {?} day
* @return {?}
*/
IndexService.prototype.removeUserDiary = /**
* @param {?} day
* @return {?}
*/
function (day) {
var _this = this;
return this.removeIndexUserDiary(day).pipe(tap((/**
* @return {?}
*/
function () {
_this.userDiary.splice(_this.userDiary.findIndex((/**
* @param {?} v
* @return {?}
*/
function (v) { return v.Day.getTime() === day.getTime(); })), 1);
})));
};
/**
* @return {?}
*/
IndexService.prototype.updateSetting = /**
* @return {?}
*/
function () {
return this.updateIndexSetting(this.userSetting);
};
IndexService.decorators = [
{ type: Injectable, args: [{ providedIn: 'root' },] }
];
/** @nocollapse */
IndexService.ctorParameters = function () { return [
{ type: ElementApiService },
{ type: ElementsService }
]; };
/** @nocollapse */ IndexService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function IndexService_Factory() { return new IndexService(i0.ɵɵinject(i1.ElementApiService), i0.ɵɵinject(i1.ElementsService)); }, token: IndexService, providedIn: "root" });
return IndexService;
}());
export { IndexService };
if (false) {
/** @type {?} */
IndexService.prototype.userSetting;
/** @type {?} */
IndexService.prototype.banner;
/** @type {?} */
IndexService.prototype.userDiary;
/** @type {?} */
IndexService.prototype.notice;
/** @type {?} */
IndexService.prototype.inited;
/**
* @type {?}
* @private
*/
IndexService.prototype.api;
/**
* @type {?}
* @private
*/
IndexService.prototype.eles;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2Rid2ViLWNvbW1vbi8iLCJzb3VyY2VzIjpbImxpYi9pbmRleC9pbmRleC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBWSxNQUFNLFlBQVksQ0FBQztBQUN2RixPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0lBQ3BDLGdCQUFnQixHQUFHLE9BQU87OztJQUcvQixZQUFhLFlBQVk7SUFDekIsVUFBVyxVQUFVO0lBQ3JCLFFBQVMsUUFBUTtJQUNqQixVQUFXLFVBQVU7SUFDckIsT0FBUSxPQUFPOzs7O0FBRWhCLE1BQU0sS0FBTyxlQUFlO0lBQzNCLEdBQUMsUUFBUSxDQUFDLFVBQVUsSUFBRyxJQUFJO0lBQzNCLEdBQUMsUUFBUSxDQUFDLFFBQVEsSUFBRyxJQUFJO0lBQ3pCLEdBQUMsUUFBUSxDQUFDLE1BQU0sSUFBRyxJQUFJO0lBQ3ZCLEdBQUMsUUFBUSxDQUFDLFFBQVEsSUFBRyxJQUFJO0lBQ3pCLEdBQUMsUUFBUSxDQUFDLEtBQUssSUFBRyxJQUFJO09BQ3RCOzs7O0FBRUQsbUNBSUM7OztJQUhBLDZCQUFlOztJQUNmLDZCQUFlOztJQUNmLGdDQUFnQzs7Ozs7QUFFakMsK0JBSUM7OztJQUhBLGtDQUFvQjs7SUFDcEIsaUNBQXVCOztJQUN2Qiw4Q0FBNkI7Ozs7O0FBRTlCLDRCQU1DOzs7SUFMQSwyQ0FBMkI7O0lBQzNCLGdDQUdJOzs7OztBQUVMLHdCQUdDOzs7SUFGQSx3QkFBVTs7SUFDViw0QkFBZ0I7Ozs7O0FBRWpCLHlCQVFDOzs7SUFQQSx3QkFBVzs7SUFDWCwyQkFBYzs7SUFDZCwwQkFBVzs7SUFDWCw4QkFBa0I7O0lBQ2xCLHlCQUFZOztJQUNaLDBCQUFh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RixDQUFDO0lBQ0gsQ0FBQzs7OztJQUNELG9DQUFhOzs7SUFBYjtRQUNDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDOztnQkFqSUQsVUFBVSxTQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7OztnQkFyRHpCLGlCQUFpQjtnQkFBZSxlQUFlOzs7dUJBRHhEO0NBd0xDLEFBbElELElBa0lDO1NBaklZLFlBQVk7OztJQUN4QixtQ0FBdUQ7O0lBQ3ZELDhCQUFzQjs7SUFDdEIsaUNBQXVCOztJQUN2Qiw4QkFBcUI7O0lBQ3JCLDhCQUFlOzs7OztJQUNILDJCQUE4Qjs7Ozs7SUFBRSw0QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVsZW1lbnRBcGlTZXJ2aWNlLCBmdWxsQXBpUGF0aCwgRWxlbWVudHNTZXJ2aWNlLCBJRWxlbWVudCB9IGZyb20gJ2Rid2ViLWNvcmUnO1xyXG5pbXBvcnQgeyB0YXAsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuY29uc3QgaW5kZXhFbGVtZW50TmFtZSA9ICdpbmRleCc7XHJcbmV4cG9ydCB0eXBlIENhcmRTaXplID0gJ3NtJyB8ICdtZCcgfCAnbGcnO1xyXG5leHBvcnQgZW51bSBDYXJkVHlwZSB7XHJcblx0bmF2aWdhdGlvbiA9ICduYXZpZ2F0aW9uJyxcclxuXHRjYWxlbmRhciA9ICdjYWxlbmRhcicsXHJcblx0bm90aWNlID0gJ25vdGljZScsXHJcblx0ZGF0YWxpc3QgPSAnZGF0YWxpc3QnLFxyXG5cdGNoYXJ0ID0gJ2NoYXJ0J1xyXG59XHJcbmV4cG9ydCBjb25zdCBkZWZhdWx0Q2FyZFNpemU6IHsgW2tleTogc3RyaW5nXTogQ2FyZFNpemUgfSA9IHtcclxuXHRbQ2FyZFR5cGUubmF2aWdhdGlvbl06ICdzbScsXHJcblx0W0NhcmRUeXBlLmNhbGVuZGFyXTogJ3NtJyxcclxuXHRbQ2FyZFR5cGUubm90aWNlXTogJ3NtJyxcclxuXHRbQ2FyZFR5cGUuZGF0YWxpc3RdOiAnbWQnLFxyXG5cdFtDYXJkVHlwZS5jaGFydF06ICdzbSdcclxufTtcclxuZXhwb3J0IHR5cGUgSW5kZXhMYXlvdXQgPSAnYXV0bycgfCAnc2ltcGxlJztcclxuZXhwb3J0IGludGVyZmFjZSBVc2VySW5kZXhDYXJkIHtcclxuXHRUeXBlOiBDYXJkVHlwZTtcclxuXHRTaXplOiBDYXJkU2l6ZTtcclxuXHRTZXR0aW5nOiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xyXG59XHJcbmludGVyZmFjZSBVc2VySW5kZXhTZXR0aW5nIHtcclxuXHRMYXlvdXQ6IEluZGV4TGF5b3V0O1xyXG5cdENhcmRzOiBVc2VySW5kZXhDYXJkW107XHJcblx0TmF2aWdhdGlvbkVsZW1lbnRzOiBzdHJpbmdbXTtcclxufVxyXG5pbnRlcmZhY2UgQmFubmVyU2V0dGluZyB7XHJcblx0RGVmYXVsdEJhbm5lckltYWdlOiBzdHJpbmc7XHJcblx0QmFubmVyczoge1xyXG5cdFx0SW1hZ2VVUkw6IHN0cmluZztcclxuXHRcdE5hdmlnYXRpb25VUkw6IHN0cmluZztcclxuXHR9W107XHJcbn1cclxuaW50ZXJmYWNlIFVzZXJEaWFyeSB7XHJcblx0RGF5OiBEYXRlO1xyXG5cdENvbnRlbnQ6IHN0cmluZztcclxufVxyXG5pbnRlcmZhY2UgVXNlck5vdGljZSB7XHJcblx0SUQ6IHN0cmluZztcclxuXHRUaXRsZTogc3RyaW5nO1xyXG5cdFRpbWU6IERhdGU7XHJcblx0SXNSZWFkZWQ6IGJvb2xlYW47XHJcblx0VVJMOiBzdHJpbmc7XHJcblx0U2lnbjogc3RyaW5nO1xyXG5cdEZyb250VVJMOiBzdHJpbmc7IC8vIOWQjuerr1VSTOi9rOaNouaIkOWJjeerr1VSTFxyXG59XHJcbmludGVyZmFjZSBGZXRjaE15Tm90aWNlUmVzdWx0IHtcclxuXHRFbGVtZW50Rm9yQnJvd3NlTm90aWNlOiBJRWxlbWVudDtcclxuXHREYXRhOiBVc2VyTm90aWNlW107XHJcbn1cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEluZGV4U2VydmljZSB7XHJcblx0dXNlclNldHRpbmc6IFVzZXJJbmRleFNldHRpbmcgPSB7fSBhcyBVc2VySW5kZXhTZXR0aW5nO1xyXG5cdGJhbm5lcjogQmFubmVyU2V0dGluZztcclxuXHR1c2VyRGlhcnk6IFVzZXJEaWFyeVtdO1xyXG5cdG5vdGljZTogVXNlck5vdGljZVtdO1xyXG5cdGluaXRlZCA9IGZhbHNlOyAvLyDmmK/lkKblt7Lnu4/liJ3lp4vljJblrozmr5VcclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGFwaTogRWxlbWVudEFwaVNlcnZpY2UsIHByaXZhdGUgZWxlczogRWxlbWVudHNTZXJ2aWNlKSB7fVxyXG5cdHByaXZhdGUgZmV0Y2hJbmRleFNldHRpbmcoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5hcGkuZ2V0PFVzZXJJbmRleFNldHRpbmc+KGluZGV4RWxlbWVudE5hbWUsICdmZXRjaC1pbmRleC1zZXR0aW5nJyk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHVwZGF0ZUluZGV4U2V0dGluZyhwYXJhbTogVXNlckluZGV4U2V0dGluZykge1xyXG5cdFx0cmV0dXJuIHRoaXMuYXBpLnBvc3QoaW5kZXhFbGVtZW50TmFtZSwgJ3VwZGF0ZS1pbmRleC1zZXR0aW5nJywgcGFyYW0pO1xyXG5cdH1cclxuXHRwcml2YXRlIGZldGNoQmFubmVyKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuYXBpLmdldDxCYW5uZXJTZXR0aW5nPihpbmRleEVsZW1lbnROYW1lLCAnZmV0Y2gtYmFubmVyJyk7XHJcblx0fVxyXG5cdHByaXZhdGUgZmV0Y2hJbmRleFVzZXJEaWFyeSgpIHtcclxuXHRcdC8vIOmcgOimgeWwhuWQjuerr+S8oOmAkui/h+adpeeahOWtl+espuS4sui9rOaNouaIkGRhdGXnsbvlnotcclxuXHRcdHJldHVybiB0aGlzLmFwaS5nZXQ8VXNlckRpYXJ5W10+KGluZGV4RWxlbWVudE5hbWUsICdmZXRjaC1pbmRleC11c2VyLWRpYXJ5JykucGlwZShcclxuXHRcdFx0bWFwKFxyXG5cdFx0XHRcdHZhbHMgPT5cclxuXHRcdFx0XHRcdHZhbHNcclxuXHRcdFx0XHRcdFx0PyB2YWxzLm1hcCh2ID0+ICh7XHJcblx0XHRcdFx0XHRcdFx0XHREYXk6IG5ldyBEYXRlKHYuRGF5KSxcclxuXHRcdFx0XHRcdFx0XHRcdENvbnRlbnQ6IHYuQ29udGVudFxyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBpbmRlbnRcclxuXHRcdFx0XHRcdFx0XHR9KSlcclxuXHRcdFx0XHRcdFx0OiBbXVxyXG5cdFx0XHQpXHJcblx0XHQpO1xyXG5cdH1cclxuXHRwcml2YXRlIHJlbW92ZUluZGV4VXNlckRpYXJ5KGRheTogRGF0ZSkge1xyXG5cdFx0cmV0dXJuIHRoaXMuYXBpLnBvc3Q8Ym9vbGVhbj4oaW5kZXhFbGVtZW50TmFtZSwgJ3JlbW92ZS1pbmRleC11c2VyLWRpYXJ5JywgZGF5KTtcclxuXHR9XHJcblx0cHJpdmF0ZSB1cGRhdGVJbmRleFVzZXJEaWFyeShwYXJhbTogVXNlckRpYXJ5KSB7XHJcblx0XHRyZXR1cm4gdGhpcy5hcGkucG9zdDxib29sZWFuPihpbmRleEVsZW1lbnROYW1lLCAndXBkYXRlLWluZGV4LXVzZXItZGlhcnknLCBwYXJhbSk7XHJcblx0fVxyXG5cdHByaXZhdGUgZmV0Y2hNeU5vdGljZSgpIHtcclxuXHRcdGludGVyZmFjZSBJVXNlck5vdGljZSB7XHJcblx0XHRcdElEOiBzdHJpbmc7XHJcblx0XHRcdFRpdGxlOiBzdHJpbmc7XHJcblx0XHRcdFRpbWU6IHN0cmluZztcclxuXHRcdFx0SXNSZWFkZWQ6IGJvb2xlYW47XHJcblx0XHRcdFVSTDogc3RyaW5nO1xyXG5cdFx0XHRTaWduOiBzdHJpbmc7XHJcblx0XHR9XHJcblx0XHRpbnRlcmZhY2UgSUZldGNoTXlOb3RpY2VSZXN1bHQge1xyXG5cdFx0XHRFbGVtZW50Rm9yQnJvd3NlTm90aWNlOiBJRWxlbWVudDtcclxuXHRcdFx0RGF0YTogSVVzZXJOb3RpY2VbXTtcclxuXHRcdH1cclxuXHRcdHJldHVybiB0aGlzLmFwaS5nZXQ8SUZldGNoTXlOb3RpY2VSZXN1bHQ+KGluZGV4RWxlbWVudE5hbWUsICdmZXRjaC1teS1ub3RpY2UnKS5waXBlKFxyXG5cdFx0XHRtYXAoXHJcblx0XHRcdFx0diA9PlxyXG5cdFx0XHRcdFx0KHtcclxuXHRcdFx0XHRcdFx0RWxlbWVudEZvckJyb3dzZU5vdGljZTogdi5FbGVtZW50Rm9yQnJvd3NlTm90aWNlLFxyXG5cdFx0XHRcdFx0XHREYXRhOiB2LkRhdGEubWFwKFxyXG5cdFx0XHRcdFx0XHRcdHN2ID0+XHJcblx0XHRcdFx0XHRcdFx0XHQoe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRJRDogc3YuSUQsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFRpdGxlOiBzdi5UaXRsZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0VGltZTogbmV3IERhdGUoc3YuVGltZSksXHJcblx0XHRcdFx0XHRcdFx0XHRcdElzUmVhZGVkOiBzdi5Jc1JlYWRlZCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0VVJMOiBzdi5VUkwsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFNpZ246IHN2LlNpZ25cclxuXHRcdFx0XHRcdFx0XHRcdH0gYXMgVXNlck5vdGljZSlcclxuXHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0fSBhcyBGZXRjaE15Tm90aWNlUmVzdWx0KVxyXG5cdFx0XHQpXHJcblx0XHQpO1xyXG5cdH1cclxuXHRpbml0KCkge1xyXG5cdFx0dGhpcy5mZXRjaEluZGV4U2V0dGluZygpLnN1YnNjcmliZShkYXRhID0+IHtcclxuXHRcdFx0dGhpcy51c2VyU2V0dGluZyA9IGRhdGEgfHwgKHt9IGFzIFVzZXJJbmRleFNldHRpbmcpO1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZygnPT09PT09JywgdGhpcy51c2VyU2V0dGluZyk7XHJcblx0XHRcdHRoaXMudXNlclNldHRpbmcuQ2FyZHMgPSB0aGlzLnVzZXJTZXR0aW5nLkNhcmRzIHx8IFtdO1xyXG5cdFx0XHR0aGlzLnVzZXJTZXR0aW5nLkxheW91dCA9IHRoaXMudXNlclNldHRpbmcuTGF5b3V0IHx8ICdhdXRvJztcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coJy0tLS0tLScsIHRoaXMudXNlclNldHRpbmcuTGF5b3V0KTtcclxuXHRcdFx0dGhpcy51c2VyU2V0dGluZy5OYXZpZ2F0aW9uRWxlbWVudHMgPSB0aGlzLnVzZXJTZXR0aW5nLk5hdmlnYXRpb25FbGVtZW50cyB8fCBbXTtcclxuXHRcdFx0Ly8g5om+5LiN5Yiw55qE6I+c5Y2V6aG577yM5oiW6ICF5piv5rKh5pyJ5p2D6ZmQ77yM6ZyA6KaB5Y676ZmkXHJcblx0XHRcdHRoaXMudXNlclNldHRpbmcuTmF2aWdhdGlvbkVsZW1lbnRzID0gdGhpcy51c2VyU2V0dGluZy5OYXZpZ2F0aW9uRWxlbWVudHMuZmlsdGVyKHYgPT4gdGhpcy5lbGVzLmdldCh2KSk7XHJcblx0XHRcdHRoaXMuaW5pdGVkID0gdHJ1ZTtcclxuXHRcdH0pO1xyXG5cdFx0dGhpcy5mZXRjaEJhbm5lcigpLnN1YnNjcmliZSh2YWwgPT4ge1xyXG5cdFx0XHR0aGlzLmJhbm5lciA9IHZhbDtcclxuXHRcdFx0dGhpcy5iYW5uZXIuRGVmYXVsdEJhbm5lckltYWdlID0gZnVsbEFwaVBhdGgodGhpcy5iYW5uZXIuRGVmYXVsdEJhbm5lckltYWdlKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHRpbml0Q2FsZW5kYXIoKSB7XHJcblx0XHR0aGlzLmZldGNoSW5kZXhVc2VyRGlhcnkoKS5zdWJzY3JpYmUodiA9PiB7XHJcblx0XHRcdHRoaXMudXNlckRpYXJ5ID0gdjtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHRpbml0Tm90aWNlKCkge1xyXG5cdFx0dGhpcy5mZXRjaE15Tm90aWNlKCkuc3Vic2NyaWJlKHYgPT4ge1xyXG5cdFx0XHR0aGlzLm5vdGljZSA9IHYuRGF0YTtcclxuXHRcdFx0dGhpcy5lbGVzLmFkZEVsZW1lbnQodi5FbGVtZW50Rm9yQnJvd3NlTm90aWNlKTtcclxuXHRcdFx0di5EYXRhLmZvckVhY2gob25lID0+IHRoaXMuZWxlcy5zZXRVUkxTaWduKG9uZS5VUkwsIG9uZS5TaWduKSk7XHJcblx0XHRcdC8vIOeEtuWQjuaJjeiDveiuoeeul+WJjeerr3VybFxyXG5cdFx0XHR0aGlzLm5vdGljZS5mb3JFYWNoKG9uZSA9PiB7XHJcblx0XHRcdFx0b25lLkZyb250VVJMID0gdGhpcy5lbGVzLmZyb250RWxlbWVudFVSTCh2LkVsZW1lbnRGb3JCcm93c2VOb3RpY2UuTmFtZSwgb25lLlVSTCk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cdHVwZGF0ZVVzZXJEaWFyeShkYXk6IERhdGUsIGNvbnRlbnQ6IHN0cmluZykge1xyXG5cdFx0cmV0dXJuIHRoaXMudXBkYXRlSW5kZXhVc2VyRGlhcnkoeyBEYXk6IGRheSwgQ29udGVudDogY29udGVudCB9KS5waXBlKFxyXG5cdFx0XHR0YXAoKCkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IGZvdW5kID0gdGhpcy51c2VyRGlhcnkuZmluZCh2ID0+IHYuRGF5LmdldFRpbWUoKSA9PT0gZGF5LmdldFRpbWUoKSk7XHJcblx0XHRcdFx0aWYgKGZvdW5kKSB7XHJcblx0XHRcdFx0XHRmb3VuZC5Db250ZW50ID0gY29udGVudDtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dGhpcy51c2VyRGlhcnkucHVzaCh7IERheTogZGF5LCBDb250ZW50OiBjb250ZW50IH0pO1xyXG5cdFx0XHRcdFx0dGhpcy51c2VyRGlhcnkuc29ydCgoYSwgYikgPT4ge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gYS5EYXkuZ2V0VGltZSgpIC0gYi5EYXkuZ2V0VGltZSgpO1xyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KVxyXG5cdFx0KTtcclxuXHR9XHJcblx0cmVtb3ZlVXNlckRpYXJ5KGRheTogRGF0ZSkge1xyXG5cdFx0cmV0dXJuIHRoaXMucmVtb3ZlSW5kZXhVc2VyRGlhcnkoZGF5KS5waXBlKFxyXG5cdFx0XHR0YXAoKCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMudXNlckRpYXJ5LnNwbGljZSh0aGlzLnVzZXJEaWFyeS5maW5kSW5kZXgodiA9PiB2LkRheS5nZXRUaW1lKCkgPT09IGRheS5nZXRUaW1lKCkpLCAxKTtcclxuXHRcdFx0fSlcclxuXHRcdCk7XHJcblx0fVxyXG5cdHVwZGF0ZVNldHRpbmcoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy51cGRhdGVJbmRleFNldHRpbmcodGhpcy51c2VyU2V0dGluZyk7XHJcblx0fVxyXG59XHJcbiJdfQ==