atr-components 0.0.13 → 0.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/atr-components.d.ts +0 -1
- package/core/base/atr-common.d.ts +45 -0
- package/core/utils/AtrTools.util.d.ts +47 -0
- package/core/utils/localstorage.util.d.ts +15 -0
- package/core/utils/sessionstorage.util.d.ts +9 -0
- package/esm2020/core/base/atr-common.mjs +13 -2
- package/esm2020/core/utils/AtrTools.util.mjs +270 -0
- package/esm2020/core/utils/localstorage.util.mjs +94 -0
- package/esm2020/core/utils/sessionstorage.util.mjs +46 -0
- package/esm2020/public-api.mjs +4 -1
- package/fesm2015/atr-components.mjs +418 -2
- package/fesm2015/atr-components.mjs.map +1 -1
- package/fesm2020/atr-components.mjs +418 -2
- package/fesm2020/atr-components.mjs.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +3 -0
package/atr-components.d.ts
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
export declare const atr_static_datas: {
|
|
2
2
|
test: string;
|
|
3
|
+
/**
|
|
4
|
+
* oss地址前缀
|
|
5
|
+
*/
|
|
6
|
+
OSS_URL: string;
|
|
7
|
+
OSS_POLICY: string;
|
|
8
|
+
STORAGE_PRE: string;
|
|
9
|
+
menu_url: string;
|
|
10
|
+
/**
|
|
11
|
+
* 登录路由
|
|
12
|
+
*/
|
|
13
|
+
login_router: string;
|
|
3
14
|
};
|
|
4
15
|
export declare interface json extends Object {
|
|
5
16
|
[key: string]: any;
|
|
@@ -230,3 +241,37 @@ export declare interface SelectAction {
|
|
|
230
241
|
data?: any;
|
|
231
242
|
key?: string;
|
|
232
243
|
}
|
|
244
|
+
export interface MenuIcon {
|
|
245
|
+
/** Type for icon */
|
|
246
|
+
type: 'class' | 'icon' | 'iconfont' | 'img';
|
|
247
|
+
/** Value for the icon, can be set Class Name, nz-icon of `nzType`, image */
|
|
248
|
+
value?: string;
|
|
249
|
+
/** Type of the ant design icon, default: `outline` */
|
|
250
|
+
theme?: 'outline' | 'twotone' | 'fill';
|
|
251
|
+
/** Rotate icon with animation, default: `false` */
|
|
252
|
+
spin?: boolean;
|
|
253
|
+
/** Only support the two-tone icon. Specific the primary color */
|
|
254
|
+
twoToneColor?: string;
|
|
255
|
+
/** Type of the icon from iconfont */
|
|
256
|
+
iconfont?: string;
|
|
257
|
+
}
|
|
258
|
+
export interface Menu {
|
|
259
|
+
text?: string;
|
|
260
|
+
link?: string;
|
|
261
|
+
realLink?: string;
|
|
262
|
+
isSelected?: Boolean;
|
|
263
|
+
isOpen?: Boolean;
|
|
264
|
+
target?: '_blank' | '_self' | '_parent' | '_top';
|
|
265
|
+
/** Icon for the menu item, only valid for the first level menu */
|
|
266
|
+
icon?: string | MenuIcon | null;
|
|
267
|
+
/** Badget for the menu item when `group` is `true` */
|
|
268
|
+
operation?: string;
|
|
269
|
+
/** Whether shortcut menu item */
|
|
270
|
+
seq?: number;
|
|
271
|
+
level?: number;
|
|
272
|
+
/** Wheter shortcut menu root node */
|
|
273
|
+
linkType?: string;
|
|
274
|
+
/** Whether to allow reuse, need to cooperate with the `reuse-tab` component */
|
|
275
|
+
children?: Menu[];
|
|
276
|
+
isVisible?: '0' | '1';
|
|
277
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { json, AtrFormOpt } from '../base/atr-common';
|
|
2
|
+
import { SimpleChange } from '@angular/core';
|
|
3
|
+
export declare class AtrToolsUtil {
|
|
4
|
+
static ossPrefix: string;
|
|
5
|
+
static getOrgCode: () => string;
|
|
6
|
+
static isNull(val: any): boolean;
|
|
7
|
+
static getControlsConfig(dataFrom: any, requiredRule: string[]): any;
|
|
8
|
+
static httpSucces(res: any): boolean;
|
|
9
|
+
static diffInput(chng: SimpleChange, action: () => void): void;
|
|
10
|
+
static diffInputs(chng: SimpleChange[], action: () => void): void;
|
|
11
|
+
static getYesterday(day: Date): Date;
|
|
12
|
+
static getTomorrowday(day: Date): Date;
|
|
13
|
+
static getNextMonth(day: Date): Date;
|
|
14
|
+
static fistDayOfMonth(day: Date): Date;
|
|
15
|
+
static lastDayOfMonth(day: Date): Date;
|
|
16
|
+
static getRandomFileName: () => string;
|
|
17
|
+
static getFileExt: (fileName: string) => string;
|
|
18
|
+
static getHttpOptions(): any;
|
|
19
|
+
static resetFormValue(opt: AtrFormOpt, json: json): AtrFormOpt;
|
|
20
|
+
static getFormatDate(date: Date): string;
|
|
21
|
+
static getFormatDateFull(date: Date): string;
|
|
22
|
+
static getFormatDateWithoutS(date: Date): string;
|
|
23
|
+
static getOssUrl(url: string): string;
|
|
24
|
+
static mul(...numbers: any): number | undefined;
|
|
25
|
+
static getDigit(...numbers: any[]): number;
|
|
26
|
+
static downloadImg(data: any, fileName?: string, endpoint?: string): void;
|
|
27
|
+
static downloadXls(url: string, params?: any): void;
|
|
28
|
+
static pixelToNum(width: any): number;
|
|
29
|
+
static allEqual: (...array: any[]) => boolean;
|
|
30
|
+
/**
|
|
31
|
+
* array所有参数满足fn函数返回true
|
|
32
|
+
* all(x => x > 1,1,2,3); // true
|
|
33
|
+
* @param callback
|
|
34
|
+
* @param array
|
|
35
|
+
*/
|
|
36
|
+
static satisfiedFn: (callback: (...args: any[]) => boolean, ...array: any[]) => boolean;
|
|
37
|
+
static notEmpty(...arr: any[]): boolean;
|
|
38
|
+
static hasEmpty(...arr: any[]): boolean;
|
|
39
|
+
static allEmpty(...arr: any[]): boolean;
|
|
40
|
+
static encodeValue(params: any): any;
|
|
41
|
+
static windowHeight(): number;
|
|
42
|
+
static windowWidth(): number;
|
|
43
|
+
static modaleStyle(): {
|
|
44
|
+
maxHeight: string;
|
|
45
|
+
'overflow-y': string;
|
|
46
|
+
};
|
|
47
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { json } from '../base/atr-common';
|
|
2
|
+
export declare class LocalStorageUtil {
|
|
3
|
+
static getProvinceByValue(province: string): any;
|
|
4
|
+
static getRegion(): any;
|
|
5
|
+
static putRegion(disList: any[]): void;
|
|
6
|
+
static putUser(userInfo: json): void;
|
|
7
|
+
static putLogin(loginInfo: json): void;
|
|
8
|
+
static getLogin(): any;
|
|
9
|
+
static getUser(): any;
|
|
10
|
+
static getUserToken(): string;
|
|
11
|
+
static getUserId(): string;
|
|
12
|
+
static removeUser(): void;
|
|
13
|
+
static clearUs: () => void;
|
|
14
|
+
static getStorageKey(key: string): string;
|
|
15
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DictGroup } from '../base/atr-common';
|
|
2
|
+
export declare class SessionStorageUtil {
|
|
3
|
+
static getStorageKey(key: string): string;
|
|
4
|
+
static putDictGroup(dictGroup: DictGroup): void;
|
|
5
|
+
static getDictGroupByCode(code: string): DictGroup | any;
|
|
6
|
+
static resetDict(): void;
|
|
7
|
+
static put(key: any, value: any): void;
|
|
8
|
+
static get(key: any): any;
|
|
9
|
+
}
|
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
export const atr_static_datas = {
|
|
2
|
-
test: '1'
|
|
2
|
+
test: '1',
|
|
3
|
+
/**
|
|
4
|
+
* oss地址前缀
|
|
5
|
+
*/
|
|
6
|
+
OSS_URL: '',
|
|
7
|
+
OSS_POLICY: 'third/oss/getPolicy',
|
|
8
|
+
STORAGE_PRE: 'DQ_',
|
|
9
|
+
menu_url: '',
|
|
10
|
+
/**
|
|
11
|
+
* 登录路由
|
|
12
|
+
*/
|
|
13
|
+
login_router: '/p/login',
|
|
3
14
|
};
|
|
4
15
|
export var UserAction;
|
|
5
16
|
(function (UserAction) {
|
|
@@ -9,4 +20,4 @@ export var UserAction;
|
|
|
9
20
|
UserAction[UserAction["QUERY"] = 3] = "QUERY";
|
|
10
21
|
UserAction[UserAction["SUPPERADD"] = 4] = "SUPPERADD";
|
|
11
22
|
})(UserAction || (UserAction = {}));
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRyLWNvbW1vbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2NvcmUvYmFzZS9hdHItY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLElBQUksRUFBRSxHQUFHO0NBQ1YsQ0FBQztBQWtDRixNQUFNLENBQU4sSUFBWSxVQU1YO0FBTkQsV0FBWSxVQUFVO0lBQ3BCLHlDQUFHLENBQUE7SUFDSCwyQ0FBSSxDQUFBO0lBQ0oseUNBQUcsQ0FBQTtJQUNILDZDQUFLLENBQUE7SUFDTCxxREFBUyxDQUFBO0FBQ1gsQ0FBQyxFQU5XLFVBQVUsS0FBVixVQUFVLFFBTXJCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGF0cl9zdGF0aWNfZGF0YXMgPSB7XHJcbiAgdGVzdDogJzEnXHJcbn07XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UganNvbiBleHRlbmRzIE9iamVjdCB7XHJcbiAgW2tleTogc3RyaW5nXTogYW55XHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBTZXJ2ZXJQYWdpbmF0aW9uU3RhbmRhcmQge1xyXG4gIGN1cnJlbnRQYWdlOiBudW1iZXI7XHJcbiAgc2hvd0NvdW50OiBudW1iZXI7XHJcbiAgdG90YWxSZXN1bHQ6IG51bWJlcjtcclxuICB0b3RhbFBhZ2U/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBIdHRwUmVzcG9uc2VEYXRhU3RhbmRhcmQge1xyXG4gIHN0YXRlOiBudW1iZXI7IC8vIOS4ujHmiY3mmK/miJDlip9cclxuICBkYXRhOiBqc29uIHwgW3t9XSB8IG9iamVjdCB8IHN0cmluZyB8IGFueTsgLy/msqHmnInlgLwgZGF0YTogJydcclxuICBtZXNzOiBzdHJpbmc7IC8v6L+U5Zue55qE5raI5oGvXHJcbiAgcGFnZT86IFNlcnZlclBhZ2luYXRpb25TdGFuZGFyZDtcclxufVxyXG5cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBIdHRwUnNlcG9uc2VUcmFuc2Zvcm1DZWxsIHtcclxuICBba2V5OiBzdHJpbmddOiBqc29uXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBIdHRwT3B0aW9ucyB7XHJcbiAgaGVhZGVycz86IHt9LFxyXG4gIGlzSnNvbkVuY29kZT86IGJvb2xlYW5cclxuICBpc1VybEVuY29kZT86IGJvb2xlYW5cclxuICBpc0F1dG9TaG93TWVzc2FnZT86IGJvb2xlYW5cclxuICBpc1dpdGhDcmVkZW50aWFscz86IGJvb2xlYW5cclxuICBpc0NvbW1vbkh0dHBIZWFkZXI/OiBib29sZWFuXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFVzZXJBY3Rpb24ge1xyXG4gIEFERCxcclxuICBFRElULFxyXG4gIERFTCxcclxuICBRVUVSWSxcclxuICBTVVBQRVJBRERcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEF0ckZvcm1PcHQge1xyXG4gIHR5cGU6ICdhZGQnIHwgJ2VkaXQnIHwgJ3ZpZXcnLFxyXG4gIGxheW91dD86IFwiZnVsbFwiIHwgJzFsMmMnIHwgJzFsMWMnLFxyXG4gIGl0ZW1zOiBBdHJGb3JtRGV0YWlsW10sLy/ooajljZXpobnnm65cclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEF0ckZvcm1EZXRhaWwge1xyXG4gIGxhYmVsOiBzdHJpbmcsXHJcbiAgdHlwZTogJ2Nhc2NhZGVyJyB8ICdyYWRpbycgfCAndGV4dCcgfCAnaW1hZ2UnIHwgJ3NlbGVjdCcgfCAnZGF0ZScgfCAnbnVtYmVyJyB8ICd0ZWxwaG9uZScgfCAncGFzc3dvcmQnIHwgJ2NoZWNrYm94JyB8ICdlZGl0b3InIHwgJ3RleHRhcmVhJyB8ICdkYXRlVGltZScgfCAndGl0bGUnIHwgJ2RhdGVSYW5nZScgfCAnc2VsZWN0YycsXHJcbiAga2V5OiBzdHJpbmcsXHJcbiAgaXNIaWRkZW4/OiBib29sZWFuLFxyXG4gIGRlZmF1bHRWYWx1ZT86IGFueSxcclxuICB2YWx1ZT86IGFueSwvL+e8lui+keS4i+WOn+Wni+aVsOWAvFxyXG4gIGRpY3RDb2RlPzogc3RyaW5nLC8vc2VsZWN0IOaooeW8j+S4i+mFjee9rlxyXG4gIHNwYW4/OiBudW1iZXIsLy/mmL7npLrlrr3luqZcclxuICB2YWxpZGF0b3JzPzogQXRyRm9ybVZhbGlkW10sLy/pqozor4HmnaHku7ZcclxuICBpc1JlcXVpcmVkPzogYm9vbGVhbiB8IHN0cmluZywvL+makOaAp+adoeS7tiDml6DpnIDloavlhpksIHN0cmluZ+exu+Wei+agvOW8j+WQjG9wZXJhdG9yXHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmcsXHJcbiAgaW1hZ2VPcHRzPzogSW1hZ2VPcHRzLFxyXG4gIGVkaXRDb250ZW50Pzogc3RyaW5nLFxyXG4gIGhlaWdodD86IG51bWJlciwvL2VkaXRvcuacieaViFxyXG4gIGRpc2FibGU/OiBib29sZWFuLFxyXG4gIGxzcGFuPzogbnVtYmVyLFxyXG4gIGNzcGFuPzogbnVtYmVyLFxyXG4gIHJvd3M/OiBudW1iZXIsLy90ZXh0YXJlYSDmmL7npLrooYzmlbBcclxuICBvcGVyYXRvcj86IHN0cmluZywvL+aYvuekuuaTjeS9nOespiDmoLzlvI8g5aaCOnN0YXR1c3xlcXwwXHJcbiAgYnV0dG9uPzogZm9ybUJ1dHRvbixcclxuICByZWFkb25seT86IGJvb2xlYW4sXHJcbiAgZGF0ZUZvcm1hdD86IHN0cmluZyxcclxuICBkaWN0TGlzdD86IEN1c0RpY3RbXSxcclxuICBzZWxlY3RVcmw/OiB7IHVybDogc3RyaW5nLCBjb252ZXJ0Pzogc3RyaW5nLCB0eXBlPzogJ2dldCcgfCAncG9zdCcsIGhvc3Q/OiAnb3NzJyB8ICdzZXJ2ZScsIGlzTXVsdGlwbGU/OiBib29sZWFuIH0sXHJcbiAgdHJlZUxpc3Q/OiB7IGtleTogc3RyaW5nLCB0aXRsZTogc3RyaW5nIH1bXSxcclxuICBlbmRzPzogc3RyaW5nLFxyXG4gIHByb3Bvc2FsPzogc3RyaW5nLFxyXG4gIHRlbXA/OiBhbnksXHJcbiAgbm90TnVsbD86IGJvb2xlYW5cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBBdHJGb3JtVmFsaWQge1xyXG4gIHR5cGU6ICdyZXF1aXJlZCcgfCAnZW1haWwnIHwgJ3RlbHBob25lJyB8ICdtYXhsZW5ndGgnIHwgJ21pbmxlbmd0aCcgfCAncGF0dGVybicgfCAnb3BlcmF0b3InLFxyXG4gIGVycm9yTGFiZWw6IHN0cmluZyxcclxuICBtYXhsZW5ndGg/OiBudW1iZXIsXHJcbiAgbWlubGVuZ3RoPzogbnVtYmVyLFxyXG4gIHBhdHRlcm5WYWx1ZT86IHN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgZm9ybUJ1dHRvbiB7XHJcbiAgbmFtZTogc3RyaW5nLFxyXG4gIGlzU2hvdzogYm9vbGVhbixcclxuICBjb2RlOiBzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIGNvbG9yT3BlcmF0b3Ige1xyXG4gIGNvbG9yOiBzdHJpbmcsXHJcbiAgb3BlcmF0b3I6IHN0cmluZywvL+inhOWImVxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQXRyUXVleXJPcHQge1xyXG4gIGFjdGlvbnM/OiBUYWJsZUFjdGlvbltdLFxyXG4gIGlzSW5kZXg/OiBib29sZWFuLC8v5piv5ZCm5pi+56S65bqP5Y+3LFxyXG4gIGNvbG9yPzogY29sb3JPcGVyYXRvciwvL+minOiJslxyXG4gIGNoZWNrQm94Pzoge1xyXG4gICAgaXNTaG93Q2hlY2tib3g/OiBib29sZWFuLFxyXG4gICAgaXNSYWRpbz86IGJvb2xlYW4sXHJcbiAgICBpc0ZvcmJpZD86IGJvb2xlYW4sLy90cnVl5pe25Y+q5YWB6K6454K55Ye75aSa6YCJ5qGG6YCJ5oupXHJcbiAgfSxcclxuICAvLyBpc1Nob3dDaGVja2JveD86IGJvb2xlYW4sXHJcbiAgc2hvd051bT86IG51bWJlcixcclxuICB1cmw6IHN0cmluZyxcclxuICBzb3J0Pzogc3RyaW5nLFxyXG4gIGhlYWRlcnM/OiBBdHJRdWVyeUhlYWRlcltdLFxyXG4gIHRhYmxlczogVGFibGVbXSxcclxuICBpc0F1dG9RdWVyeT86IGJvb2xlYW4sLy90cnVl5pe25YCZ6buY6K6k6Kem5Y+R5p+l6K+iXHJcbiAgZGVmYXVsdFBhcmFtcz86IGpzb24sXHJcbiAgaXNIaWRlUXVlcnk/OiBib29sZWFuXHJcbiAgLy8gaXNSYWRpbz86Ym9vbGVhbixcclxuICAvLyBpc0ZvcmJpZD86Ym9vbGVhbiwvL3RydWXml7blj6rlhYHorrjngrnlh7vlpJrpgInmoYbpgInmi6lcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFRhYmxlIHtcclxuICBuYW1lOiBzdHJpbmcsLy/ooajlpLTlkI3np7BcclxuICBrZXk/OiBzdHJpbmcsLy/lrp7pmYXmlbDmja7lrZfmrrVcclxuICBkZWZhdWx0VmFsPzogYW55LFxyXG4gIHNvcnRLZXk/OiBzdHJpbmcsLy/mmK/lkKbmjpLluo9cclxuICBzb3J0YWJsZT86IGJvb2xlYW4sXHJcbiAgdHlwZTogJ3RleHRjb2xvcicgfCAnZml4ZWRUZXh0JyB8ICd0ZXh0JyB8ICdsaW5rJyB8ICdhY3Rpb24nIHwgJ2ltYWdlJyB8ICdkYXRlJyB8ICdkYXRlVGltZScgfCAnc0RhdGVUaW1lJyB8ICdkaWN0JywvL+exu+Wei++8miDmloflrZfjgIHpk77mjqXjgIHmk43kvZxcclxuICBkaWN0Q29kZT86IHN0cmluZyxcclxuICBpc1Nob3c/OiBib29sZWFuLFxyXG4gIHdpZHRoPzogc3RyaW5nLC8vMTUwcHhcclxuICBhY3Rpb25zPzogVGFibGVBY3Rpb25bXSxcclxuICBpc1Jvd1NwYW4/OiBib29sZWFuLFxyXG4gIGlzUmlnaHQ/OiBib29sZWFuXHJcbiAgaXNMZWZ0PzogYm9vbGVhbixcclxuICBjb2xvcj86IGNvbG9yT3BlcmF0b3IsLy/popzoibJcclxuICBjb2xvclNob3c/OiBzdHJpbmcsXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBBdHJRdWVyeUhlYWRlciB7XHJcbiAgbmFtZTogc3RyaW5nLFxyXG4gIHR5cGU6ICdjYXNjYWRlcicgfCAndGV4dCcgfCAnbnVtYmVyJyB8ICdjaGVja2JveCcgfCAnc2VsZWN0JyB8ICdkYXRlcGlja2VyJyB8ICdzZWxlY3RDdXMnIHwgJ2RhdGVSYW5nZScgfCAnc2RhdGUnIHwgJ3RyZWVTZWxlY3QnLFxyXG4gIGtleTogc3RyaW5nLFxyXG4gIGlzU2hvdz86IGJvb2xlYW4sXHJcbiAgY29kZT86IHN0cmluZyxcclxuICBwbGFjZWhvbGRlcj86IHN0cmluZyxcclxuICBzcGFuPzogbnVtYmVyLFxyXG4gIGRpY3RDb2RlPzogc3RyaW5nLC8v5a2X5YW457yW56CBXHJcbiAgZGljdExpc3Q/OiBDdXNEaWN0W10sXHJcbiAgZGVmYXVsdFZhbD86IGFueSAvLyDpu5jorqTlgLxcclxuICBtYXhUYWdDb3VudD86IG51bWJlcixcclxuICBsc3Bhbj86IG51bWJlcixcclxuICBjc3Bhbj86IG51bWJlcixcclxuICBkaXNhYmxlQ2xlYXI/OiBib29sZWFuLFxyXG4gIHRyZWVMaXN0PzogeyBrZXk6IHN0cmluZywgdGl0bGU6IHN0cmluZyB9W11cclxuICAvKipcclxuICAgKiDmoLzlvI9cclxuICAgKiBjb252ZXJ0OidrZXl8aWQsdGl0bGV8cmVhbE5hbWUnKHRyZWVTZWxlY3QpXHJcbiAgICogICAgdmFsdWV8aWQsbGFiZWx8bmFtZShzZWxlY3RDdXMpXHJcbiAgICovXHJcbiAgc2VsZWN0VXJsPzogeyB1cmw6IHN0cmluZywgY29udmVydDogc3RyaW5nLCBpc011bHRpcGxlPzogYm9vbGVhbiB9LC8vY29udmVydDogbmV3S2V5fG9sZEtleSxuZXdLZXl8b2xkS2V5KOaOpeWPo+i/lOWbnueahOWAvClcclxuICBpY29uPzogeyBpc1Nob3c6IGJvb2xlYW4sIGNvZGU6IHN0cmluZywgaWNvbjogYW55IH0sXHJcbiAgZGF0ZU1vZGU/OiAnd2VlaycgfCAnbW9udGgnIHwgJ3llYXInLFxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVGFibGVBY3Rpb24ge1xyXG4gIG5hbWU6IHN0cmluZyxcclxuICBjb2RlOiBzdHJpbmcsXHJcbiAgdXJsPzogc3RyaW5nLFxyXG4gIGdUeXBlPzogJ25vcm1hbCcgfCAndXBsb2FkJyxcclxuICBkYXRhPzogYW55LFxyXG4gIGRhdGFzPzogYW55W10sXHJcbiAgaWNvbj86IHN0cmluZyxcclxuICBudW1iZXJPZkNoZWNrZWQ/OiBudW1iZXIsXHJcbiAgdHlwZT86ICdyb3dzJyB8ICdyb3cnLFxyXG4gIG9wZXJhdG9yPzogc3RyaW5nLC8v5pi+56S65pON5L2c56ymXHJcbiAgYnV0dG9uVHlwZT86ICdwcmltYXJ5JyB8ICdkYXNoZWQnIHwgJ2RhbmdlcicgfCAnZGVmYXVsdCcgfCAnbGluaycsXHJcbiAgdmFsdWU/OiBhbnksXHJcbiAgd2l0aG91dFJvbGU/OiBib29sZWFuLy/kuI3pnIDopoHmnYPpmZDmjqfliLZcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEZvcm1BY3Rpb24ge1xyXG4gIG5hbWU6IHN0cmluZyxcclxuICBjb2RlOiBzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIERpY3Qge1xyXG4gIGlkOiBzdHJpbmcsXHJcbiAgdHlwZU5hbWU6IHN0cmluZyxcclxuXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBEaWN0R3JvdXAge1xyXG4gIGdyb3VwQ29kZTogc3RyaW5nLFxyXG4gIGRpY3RzOiBEaWN0W11cclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEN1c0RpY3Qge1xyXG4gIGxhYmVsOiBzdHJpbmcsXHJcbiAgdmFsdWU6IHN0cmluZyxcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEltYWdlT3B0cyB7XHJcbiAgbGltaXQ/OiBudW1iZXIsXHJcbiAgdXBsb2FkRGlyOiBzdHJpbmcsXHJcbiAgcmVtb3ZlQWN0aW9uPzogc3RyaW5nLFxyXG4gIGltYWdlTGlzdD86IGFueVtdLFxyXG4gIGtleT86IHN0cmluZyxcclxuICBsYWJlPzogc3RyaW5nLFxyXG4gIGZpbGVOYW1lPzogc3RyaW5nLFxyXG4gIHVwbG9hZFR5cGU/OiAnZHJhZycgfCAnJyxcclxuICBuekZpbGVUeXBlPzogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBlcXVpcFRlc3REYXRhIHtcclxuICBjb2RlOiBzdHJpbmdcclxuICBpdGVtTmFtZTogc3RyaW5nXHJcbiAgemhvdTE6IG51bWJlclxyXG4gIHpob3UyOiBudW1iZXJcclxuICB6aG91MzogbnVtYmVyXHJcbiAgemhvdTQ6IG51bWJlclxyXG4gIHpob3U1OiBudW1iZXJcclxuICB6aG91NjogbnVtYmVyXHJcbiAgaXNXcm9uZzE/OiBib29sZWFuXHJcbiAgaXNXcm9uZzI/OiBib29sZWFuXHJcbiAgaXNXcm9uZzM/OiBib29sZWFuXHJcbiAgaXNXcm9uZzQ/OiBib29sZWFuXHJcbiAgaXNXcm9uZzU/OiBib29sZWFuXHJcbiAgaXNXcm9uZzY/OiBib29sZWFuXHJcbn1cclxuXHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgU2VsZWN0QWN0aW9uIHtcclxuICBuYW1lOiBzdHJpbmcsXHJcbiAgY29kZTogXCJuZ01vZGVsQ2hhbmdlXCIgfCAnbnpPcGVuQ2hhbmdlJyxcclxuICBkYXRhPzogYW55LFxyXG4gIGtleT86IHN0cmluZyxcclxufVxyXG4iXX0=
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRyLWNvbW1vbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2NvcmUvYmFzZS9hdHItY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLElBQUksRUFBRSxHQUFHO0lBQ1Q7O09BRUc7SUFDSCxPQUFPLEVBQUMsRUFBRTtJQUNWLFVBQVUsRUFBQyxxQkFBcUI7SUFDaEMsV0FBVyxFQUFDLEtBQUs7SUFDakIsUUFBUSxFQUFDLEVBQUU7SUFDWDs7T0FFRztJQUNILFlBQVksRUFBQyxVQUFVO0NBQ3hCLENBQUM7QUFrQ0YsTUFBTSxDQUFOLElBQVksVUFNWDtBQU5ELFdBQVksVUFBVTtJQUNwQix5Q0FBRyxDQUFBO0lBQ0gsMkNBQUksQ0FBQTtJQUNKLHlDQUFHLENBQUE7SUFDSCw2Q0FBSyxDQUFBO0lBQ0wscURBQVMsQ0FBQTtBQUNYLENBQUMsRUFOVyxVQUFVLEtBQVYsVUFBVSxRQU1yQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBhdHJfc3RhdGljX2RhdGFzID0ge1xyXG4gIHRlc3Q6ICcxJyxcclxuICAvKipcclxuICAgKiBvc3PlnLDlnYDliY3nvIBcclxuICAgKi9cclxuICBPU1NfVVJMOicnLFxyXG4gIE9TU19QT0xJQ1k6J3RoaXJkL29zcy9nZXRQb2xpY3knLFxyXG4gIFNUT1JBR0VfUFJFOidEUV8nLFxyXG4gIG1lbnVfdXJsOicnLFxyXG4gIC8qKlxyXG4gICAqIOeZu+W9lei3r+eUsVxyXG4gICAqL1xyXG4gIGxvZ2luX3JvdXRlcjonL3AvbG9naW4nLFxyXG59O1xyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIGpzb24gZXh0ZW5kcyBPYmplY3Qge1xyXG4gIFtrZXk6IHN0cmluZ106IGFueVxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgU2VydmVyUGFnaW5hdGlvblN0YW5kYXJkIHtcclxuICBjdXJyZW50UGFnZTogbnVtYmVyO1xyXG4gIHNob3dDb3VudDogbnVtYmVyO1xyXG4gIHRvdGFsUmVzdWx0OiBudW1iZXI7XHJcbiAgdG90YWxQYWdlPzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSHR0cFJlc3BvbnNlRGF0YVN0YW5kYXJkIHtcclxuICBzdGF0ZTogbnVtYmVyOyAvLyDkuLox5omN5piv5oiQ5YqfXHJcbiAgZGF0YToganNvbiB8IFt7fV0gfCBvYmplY3QgfCBzdHJpbmcgfCBhbnk7IC8v5rKh5pyJ5YC8IGRhdGE6ICcnXHJcbiAgbWVzczogc3RyaW5nOyAvL+i/lOWbnueahOa2iOaBr1xyXG4gIHBhZ2U/OiBTZXJ2ZXJQYWdpbmF0aW9uU3RhbmRhcmQ7XHJcbn1cclxuXHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSHR0cFJzZXBvbnNlVHJhbnNmb3JtQ2VsbCB7XHJcbiAgW2tleTogc3RyaW5nXToganNvblxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSHR0cE9wdGlvbnMge1xyXG4gIGhlYWRlcnM/OiB7fSxcclxuICBpc0pzb25FbmNvZGU/OiBib29sZWFuXHJcbiAgaXNVcmxFbmNvZGU/OiBib29sZWFuXHJcbiAgaXNBdXRvU2hvd01lc3NhZ2U/OiBib29sZWFuXHJcbiAgaXNXaXRoQ3JlZGVudGlhbHM/OiBib29sZWFuXHJcbiAgaXNDb21tb25IdHRwSGVhZGVyPzogYm9vbGVhblxyXG59XHJcblxyXG5leHBvcnQgZW51bSBVc2VyQWN0aW9uIHtcclxuICBBREQsXHJcbiAgRURJVCxcclxuICBERUwsXHJcbiAgUVVFUlksXHJcbiAgU1VQUEVSQUREXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBBdHJGb3JtT3B0IHtcclxuICB0eXBlOiAnYWRkJyB8ICdlZGl0JyB8ICd2aWV3JyxcclxuICBsYXlvdXQ/OiBcImZ1bGxcIiB8ICcxbDJjJyB8ICcxbDFjJyxcclxuICBpdGVtczogQXRyRm9ybURldGFpbFtdLC8v6KGo5Y2V6aG555uuXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBBdHJGb3JtRGV0YWlsIHtcclxuICBsYWJlbDogc3RyaW5nLFxyXG4gIHR5cGU6ICdjYXNjYWRlcicgfCAncmFkaW8nIHwgJ3RleHQnIHwgJ2ltYWdlJyB8ICdzZWxlY3QnIHwgJ2RhdGUnIHwgJ251bWJlcicgfCAndGVscGhvbmUnIHwgJ3Bhc3N3b3JkJyB8ICdjaGVja2JveCcgfCAnZWRpdG9yJyB8ICd0ZXh0YXJlYScgfCAnZGF0ZVRpbWUnIHwgJ3RpdGxlJyB8ICdkYXRlUmFuZ2UnIHwgJ3NlbGVjdGMnLFxyXG4gIGtleTogc3RyaW5nLFxyXG4gIGlzSGlkZGVuPzogYm9vbGVhbixcclxuICBkZWZhdWx0VmFsdWU/OiBhbnksXHJcbiAgdmFsdWU/OiBhbnksLy/nvJbovpHkuIvljp/lp4vmlbDlgLxcclxuICBkaWN0Q29kZT86IHN0cmluZywvL3NlbGVjdCDmqKHlvI/kuIvphY3nva5cclxuICBzcGFuPzogbnVtYmVyLC8v5pi+56S65a695bqmXHJcbiAgdmFsaWRhdG9ycz86IEF0ckZvcm1WYWxpZFtdLC8v6aqM6K+B5p2h5Lu2XHJcbiAgaXNSZXF1aXJlZD86IGJvb2xlYW4gfCBzdHJpbmcsLy/pmpDmgKfmnaHku7Yg5peg6ZyA5aGr5YaZLCBzdHJpbmfnsbvlnovmoLzlvI/lkIxvcGVyYXRvclxyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nLFxyXG4gIGltYWdlT3B0cz86IEltYWdlT3B0cyxcclxuICBlZGl0Q29udGVudD86IHN0cmluZyxcclxuICBoZWlnaHQ/OiBudW1iZXIsLy9lZGl0b3LmnInmlYhcclxuICBkaXNhYmxlPzogYm9vbGVhbixcclxuICBsc3Bhbj86IG51bWJlcixcclxuICBjc3Bhbj86IG51bWJlcixcclxuICByb3dzPzogbnVtYmVyLC8vdGV4dGFyZWEg5pi+56S66KGM5pWwXHJcbiAgb3BlcmF0b3I/OiBzdHJpbmcsLy/mmL7npLrmk43kvZznrKYg5qC85byPIOWmgjpzdGF0dXN8ZXF8MFxyXG4gIGJ1dHRvbj86IGZvcm1CdXR0b24sXHJcbiAgcmVhZG9ubHk/OiBib29sZWFuLFxyXG4gIGRhdGVGb3JtYXQ/OiBzdHJpbmcsXHJcbiAgZGljdExpc3Q/OiBDdXNEaWN0W10sXHJcbiAgc2VsZWN0VXJsPzogeyB1cmw6IHN0cmluZywgY29udmVydD86IHN0cmluZywgdHlwZT86ICdnZXQnIHwgJ3Bvc3QnLCBob3N0PzogJ29zcycgfCAnc2VydmUnLCBpc011bHRpcGxlPzogYm9vbGVhbiB9LFxyXG4gIHRyZWVMaXN0PzogeyBrZXk6IHN0cmluZywgdGl0bGU6IHN0cmluZyB9W10sXHJcbiAgZW5kcz86IHN0cmluZyxcclxuICBwcm9wb3NhbD86IHN0cmluZyxcclxuICB0ZW1wPzogYW55LFxyXG4gIG5vdE51bGw/OiBib29sZWFuXHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQXRyRm9ybVZhbGlkIHtcclxuICB0eXBlOiAncmVxdWlyZWQnIHwgJ2VtYWlsJyB8ICd0ZWxwaG9uZScgfCAnbWF4bGVuZ3RoJyB8ICdtaW5sZW5ndGgnIHwgJ3BhdHRlcm4nIHwgJ29wZXJhdG9yJyxcclxuICBlcnJvckxhYmVsOiBzdHJpbmcsXHJcbiAgbWF4bGVuZ3RoPzogbnVtYmVyLFxyXG4gIG1pbmxlbmd0aD86IG51bWJlcixcclxuICBwYXR0ZXJuVmFsdWU/OiBzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIGZvcm1CdXR0b24ge1xyXG4gIG5hbWU6IHN0cmluZyxcclxuICBpc1Nob3c6IGJvb2xlYW4sXHJcbiAgY29kZTogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBjb2xvck9wZXJhdG9yIHtcclxuICBjb2xvcjogc3RyaW5nLFxyXG4gIG9wZXJhdG9yOiBzdHJpbmcsLy/op4TliJlcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEF0clF1ZXlyT3B0IHtcclxuICBhY3Rpb25zPzogVGFibGVBY3Rpb25bXSxcclxuICBpc0luZGV4PzogYm9vbGVhbiwvL+aYr+WQpuaYvuekuuW6j+WPtyxcclxuICBjb2xvcj86IGNvbG9yT3BlcmF0b3IsLy/popzoibJcclxuICBjaGVja0JveD86IHtcclxuICAgIGlzU2hvd0NoZWNrYm94PzogYm9vbGVhbixcclxuICAgIGlzUmFkaW8/OiBib29sZWFuLFxyXG4gICAgaXNGb3JiaWQ/OiBib29sZWFuLC8vdHJ1ZeaXtuWPquWFgeiuuOeCueWHu+WkmumAieahhumAieaLqVxyXG4gIH0sXHJcbiAgLy8gaXNTaG93Q2hlY2tib3g/OiBib29sZWFuLFxyXG4gIHNob3dOdW0/OiBudW1iZXIsXHJcbiAgdXJsOiBzdHJpbmcsXHJcbiAgc29ydD86IHN0cmluZyxcclxuICBoZWFkZXJzPzogQXRyUXVlcnlIZWFkZXJbXSxcclxuICB0YWJsZXM6IFRhYmxlW10sXHJcbiAgaXNBdXRvUXVlcnk/OiBib29sZWFuLC8vdHJ1ZeaXtuWAmem7mOiupOinpuWPkeafpeivolxyXG4gIGRlZmF1bHRQYXJhbXM/OiBqc29uLFxyXG4gIGlzSGlkZVF1ZXJ5PzogYm9vbGVhblxyXG4gIC8vIGlzUmFkaW8/OmJvb2xlYW4sXHJcbiAgLy8gaXNGb3JiaWQ/OmJvb2xlYW4sLy90cnVl5pe25Y+q5YWB6K6454K55Ye75aSa6YCJ5qGG6YCJ5oupXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBUYWJsZSB7XHJcbiAgbmFtZTogc3RyaW5nLC8v6KGo5aS05ZCN56ewXHJcbiAga2V5Pzogc3RyaW5nLC8v5a6e6ZmF5pWw5o2u5a2X5q61XHJcbiAgZGVmYXVsdFZhbD86IGFueSxcclxuICBzb3J0S2V5Pzogc3RyaW5nLC8v5piv5ZCm5o6S5bqPXHJcbiAgc29ydGFibGU/OiBib29sZWFuLFxyXG4gIHR5cGU6ICd0ZXh0Y29sb3InIHwgJ2ZpeGVkVGV4dCcgfCAndGV4dCcgfCAnbGluaycgfCAnYWN0aW9uJyB8ICdpbWFnZScgfCAnZGF0ZScgfCAnZGF0ZVRpbWUnIHwgJ3NEYXRlVGltZScgfCAnZGljdCcsLy/nsbvlnovvvJog5paH5a2X44CB6ZO+5o6l44CB5pON5L2cXHJcbiAgZGljdENvZGU/OiBzdHJpbmcsXHJcbiAgaXNTaG93PzogYm9vbGVhbixcclxuICB3aWR0aD86IHN0cmluZywvLzE1MHB4XHJcbiAgYWN0aW9ucz86IFRhYmxlQWN0aW9uW10sXHJcbiAgaXNSb3dTcGFuPzogYm9vbGVhbixcclxuICBpc1JpZ2h0PzogYm9vbGVhblxyXG4gIGlzTGVmdD86IGJvb2xlYW4sXHJcbiAgY29sb3I/OiBjb2xvck9wZXJhdG9yLC8v6aKc6ImyXHJcbiAgY29sb3JTaG93Pzogc3RyaW5nLFxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQXRyUXVlcnlIZWFkZXIge1xyXG4gIG5hbWU6IHN0cmluZyxcclxuICB0eXBlOiAnY2FzY2FkZXInIHwgJ3RleHQnIHwgJ251bWJlcicgfCAnY2hlY2tib3gnIHwgJ3NlbGVjdCcgfCAnZGF0ZXBpY2tlcicgfCAnc2VsZWN0Q3VzJyB8ICdkYXRlUmFuZ2UnIHwgJ3NkYXRlJyB8ICd0cmVlU2VsZWN0JyxcclxuICBrZXk6IHN0cmluZyxcclxuICBpc1Nob3c/OiBib29sZWFuLFxyXG4gIGNvZGU/OiBzdHJpbmcsXHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmcsXHJcbiAgc3Bhbj86IG51bWJlcixcclxuICBkaWN0Q29kZT86IHN0cmluZywvL+Wtl+WFuOe8lueggVxyXG4gIGRpY3RMaXN0PzogQ3VzRGljdFtdLFxyXG4gIGRlZmF1bHRWYWw/OiBhbnkgLy8g6buY6K6k5YC8XHJcbiAgbWF4VGFnQ291bnQ/OiBudW1iZXIsXHJcbiAgbHNwYW4/OiBudW1iZXIsXHJcbiAgY3NwYW4/OiBudW1iZXIsXHJcbiAgZGlzYWJsZUNsZWFyPzogYm9vbGVhbixcclxuICB0cmVlTGlzdD86IHsga2V5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcgfVtdXHJcbiAgLyoqXHJcbiAgICog5qC85byPXHJcbiAgICogY29udmVydDona2V5fGlkLHRpdGxlfHJlYWxOYW1lJyh0cmVlU2VsZWN0KVxyXG4gICAqICAgIHZhbHVlfGlkLGxhYmVsfG5hbWUoc2VsZWN0Q3VzKVxyXG4gICAqL1xyXG4gIHNlbGVjdFVybD86IHsgdXJsOiBzdHJpbmcsIGNvbnZlcnQ6IHN0cmluZywgaXNNdWx0aXBsZT86IGJvb2xlYW4gfSwvL2NvbnZlcnQ6IG5ld0tleXxvbGRLZXksbmV3S2V5fG9sZEtleSjmjqXlj6Pov5Tlm57nmoTlgLwpXHJcbiAgaWNvbj86IHsgaXNTaG93OiBib29sZWFuLCBjb2RlOiBzdHJpbmcsIGljb246IGFueSB9LFxyXG4gIGRhdGVNb2RlPzogJ3dlZWsnIHwgJ21vbnRoJyB8ICd5ZWFyJyxcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFRhYmxlQWN0aW9uIHtcclxuICBuYW1lOiBzdHJpbmcsXHJcbiAgY29kZTogc3RyaW5nLFxyXG4gIHVybD86IHN0cmluZyxcclxuICBnVHlwZT86ICdub3JtYWwnIHwgJ3VwbG9hZCcsXHJcbiAgZGF0YT86IGFueSxcclxuICBkYXRhcz86IGFueVtdLFxyXG4gIGljb24/OiBzdHJpbmcsXHJcbiAgbnVtYmVyT2ZDaGVja2VkPzogbnVtYmVyLFxyXG4gIHR5cGU/OiAncm93cycgfCAncm93JyxcclxuICBvcGVyYXRvcj86IHN0cmluZywvL+aYvuekuuaTjeS9nOesplxyXG4gIGJ1dHRvblR5cGU/OiAncHJpbWFyeScgfCAnZGFzaGVkJyB8ICdkYW5nZXInIHwgJ2RlZmF1bHQnIHwgJ2xpbmsnLFxyXG4gIHZhbHVlPzogYW55LFxyXG4gIHdpdGhvdXRSb2xlPzogYm9vbGVhbi8v5LiN6ZyA6KaB5p2D6ZmQ5o6n5Yi2XHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBGb3JtQWN0aW9uIHtcclxuICBuYW1lOiBzdHJpbmcsXHJcbiAgY29kZTogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBEaWN0IHtcclxuICBpZDogc3RyaW5nLFxyXG4gIHR5cGVOYW1lOiBzdHJpbmcsXHJcblxyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgRGljdEdyb3VwIHtcclxuICBncm91cENvZGU6IHN0cmluZyxcclxuICBkaWN0czogRGljdFtdXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBDdXNEaWN0IHtcclxuICBsYWJlbDogc3RyaW5nLFxyXG4gIHZhbHVlOiBzdHJpbmcsXHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJbWFnZU9wdHMge1xyXG4gIGxpbWl0PzogbnVtYmVyLFxyXG4gIHVwbG9hZERpcjogc3RyaW5nLFxyXG4gIHJlbW92ZUFjdGlvbj86IHN0cmluZyxcclxuICBpbWFnZUxpc3Q/OiBhbnlbXSxcclxuICBrZXk/OiBzdHJpbmcsXHJcbiAgbGFiZT86IHN0cmluZyxcclxuICBmaWxlTmFtZT86IHN0cmluZyxcclxuICB1cGxvYWRUeXBlPzogJ2RyYWcnIHwgJycsXHJcbiAgbnpGaWxlVHlwZT86IHN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgZXF1aXBUZXN0RGF0YSB7XHJcbiAgY29kZTogc3RyaW5nXHJcbiAgaXRlbU5hbWU6IHN0cmluZ1xyXG4gIHpob3UxOiBudW1iZXJcclxuICB6aG91MjogbnVtYmVyXHJcbiAgemhvdTM6IG51bWJlclxyXG4gIHpob3U0OiBudW1iZXJcclxuICB6aG91NTogbnVtYmVyXHJcbiAgemhvdTY6IG51bWJlclxyXG4gIGlzV3JvbmcxPzogYm9vbGVhblxyXG4gIGlzV3JvbmcyPzogYm9vbGVhblxyXG4gIGlzV3JvbmczPzogYm9vbGVhblxyXG4gIGlzV3Jvbmc0PzogYm9vbGVhblxyXG4gIGlzV3Jvbmc1PzogYm9vbGVhblxyXG4gIGlzV3Jvbmc2PzogYm9vbGVhblxyXG59XHJcblxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFNlbGVjdEFjdGlvbiB7XHJcbiAgbmFtZTogc3RyaW5nLFxyXG4gIGNvZGU6IFwibmdNb2RlbENoYW5nZVwiIHwgJ256T3BlbkNoYW5nZScsXHJcbiAgZGF0YT86IGFueSxcclxuICBrZXk/OiBzdHJpbmcsXHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBNZW51SWNvbiB7XHJcbiAgLyoqIFR5cGUgZm9yIGljb24gKi9cclxuICB0eXBlOiAnY2xhc3MnIHwgJ2ljb24nIHwgJ2ljb25mb250JyB8ICdpbWcnO1xyXG4gIC8qKiBWYWx1ZSBmb3IgdGhlIGljb24sIGNhbiBiZSBzZXQgQ2xhc3MgTmFtZSwgbnotaWNvbiBvZiBgbnpUeXBlYCwgaW1hZ2UgKi9cclxuICB2YWx1ZT86IHN0cmluZztcclxuICAvKiogVHlwZSBvZiB0aGUgYW50IGRlc2lnbiBpY29uLCBkZWZhdWx0OiBgb3V0bGluZWAgKi9cclxuICB0aGVtZT86ICdvdXRsaW5lJyB8ICd0d290b25lJyB8ICdmaWxsJztcclxuICAvKiogUm90YXRlIGljb24gd2l0aCBhbmltYXRpb24sIGRlZmF1bHQ6IGBmYWxzZWAgKi9cclxuICBzcGluPzogYm9vbGVhbjtcclxuICAvKiogT25seSBzdXBwb3J0IHRoZSB0d28tdG9uZSBpY29uLiBTcGVjaWZpYyB0aGUgcHJpbWFyeSBjb2xvciAqL1xyXG4gIHR3b1RvbmVDb2xvcj86IHN0cmluZztcclxuICAvKiogVHlwZSBvZiB0aGUgaWNvbiBmcm9tIGljb25mb250ICovXHJcbiAgaWNvbmZvbnQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWVudSB7XHJcbiAgdGV4dD86IHN0cmluZztcclxuICBsaW5rPzogc3RyaW5nO1xyXG4gIHJlYWxMaW5rPzpzdHJpbmc7XHJcbiAgaXNTZWxlY3RlZD86IEJvb2xlYW47XHJcbiAgaXNPcGVuPzogQm9vbGVhbjtcclxuICB0YXJnZXQ/OiAnX2JsYW5rJyB8ICdfc2VsZicgfCAnX3BhcmVudCcgfCAnX3RvcCc7XHJcbiAgLyoqIEljb24gZm9yIHRoZSBtZW51IGl0ZW0sIG9ubHkgdmFsaWQgZm9yIHRoZSBmaXJzdCBsZXZlbCBtZW51ICovXHJcbiAgaWNvbj86IHN0cmluZyB8IE1lbnVJY29uIHwgbnVsbDtcclxuICAvKiogQmFkZ2V0IGZvciB0aGUgbWVudSBpdGVtIHdoZW4gYGdyb3VwYCBpcyBgdHJ1ZWAgKi9cclxuICBvcGVyYXRpb24/OiBzdHJpbmc7XHJcbiAgLyoqIFdoZXRoZXIgc2hvcnRjdXQgbWVudSBpdGVtICovXHJcbiAgc2VxPzogbnVtYmVyO1xyXG4gIGxldmVsPzogbnVtYmVyO1xyXG4gIC8qKiBXaGV0ZXIgc2hvcnRjdXQgbWVudSByb290IG5vZGUgKi9cclxuICBsaW5rVHlwZT86IHN0cmluZztcclxuICAvKiogV2hldGhlciB0byBhbGxvdyByZXVzZSwgbmVlZCB0byBjb29wZXJhdGUgd2l0aCB0aGUgYHJldXNlLXRhYmAgY29tcG9uZW50ICovXHJcbiAgY2hpbGRyZW4/OiBNZW51W107XHJcbiAgaXNWaXNpYmxlPzonMCcgfCcxJ1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
import { atr_static_datas } from '../base/atr-common';
|
|
2
|
+
import { Validators } from "@angular/forms";
|
|
3
|
+
export class AtrToolsUtil {
|
|
4
|
+
static isNull(val) {
|
|
5
|
+
if (val || ['boolean', 'string', 'number'].some(v => typeof val == v)) {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
static getControlsConfig(dataFrom, requiredRule) {
|
|
11
|
+
let controlsConfig = {};
|
|
12
|
+
for (const key in dataFrom) {
|
|
13
|
+
if (requiredRule.some(item => item == key)) {
|
|
14
|
+
controlsConfig[key] = [dataFrom[key], [Validators.required]];
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
controlsConfig[key] = [dataFrom[key]];
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return controlsConfig;
|
|
21
|
+
}
|
|
22
|
+
static httpSucces(res) {
|
|
23
|
+
return res.status == 200;
|
|
24
|
+
}
|
|
25
|
+
static diffInput(chng, action) {
|
|
26
|
+
if (chng === undefined)
|
|
27
|
+
return;
|
|
28
|
+
let cur = JSON.stringify(chng.currentValue);
|
|
29
|
+
let prev = JSON.stringify(chng.previousValue);
|
|
30
|
+
if (cur !== prev) {
|
|
31
|
+
action();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
static diffInputs(chng, action) {
|
|
35
|
+
if (chng === undefined)
|
|
36
|
+
return;
|
|
37
|
+
if (chng.length == 0)
|
|
38
|
+
return;
|
|
39
|
+
for (let i = 0; i < chng.length; i++) {
|
|
40
|
+
let item = chng[i];
|
|
41
|
+
if (item === undefined)
|
|
42
|
+
continue;
|
|
43
|
+
let cur = JSON.stringify(item.currentValue);
|
|
44
|
+
let prev = JSON.stringify(item.previousValue);
|
|
45
|
+
if (cur !== prev) {
|
|
46
|
+
action();
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
static getYesterday(day) {
|
|
52
|
+
let time = day.getTime() - 1000 * 60 * 60 * 24;
|
|
53
|
+
day = new Date(time);
|
|
54
|
+
return day;
|
|
55
|
+
}
|
|
56
|
+
static getTomorrowday(day) {
|
|
57
|
+
let time = day.getTime() + 1000 * 60 * 60 * 24;
|
|
58
|
+
return new Date(time);
|
|
59
|
+
}
|
|
60
|
+
static getNextMonth(day) {
|
|
61
|
+
let ds = new Date(day).setMonth(day.getMonth() + 1);
|
|
62
|
+
return new Date(ds);
|
|
63
|
+
}
|
|
64
|
+
static fistDayOfMonth(day) {
|
|
65
|
+
return new Date(new Date(day).setDate(1));
|
|
66
|
+
}
|
|
67
|
+
static lastDayOfMonth(day) {
|
|
68
|
+
return new Date(AtrToolsUtil.getNextMonth(day).setDate(0));
|
|
69
|
+
}
|
|
70
|
+
static getHttpOptions() {
|
|
71
|
+
return { isCommonHttpHeader: true };
|
|
72
|
+
}
|
|
73
|
+
static resetFormValue(opt, json) {
|
|
74
|
+
for (let item of opt.items) {
|
|
75
|
+
item.value = "";
|
|
76
|
+
// console.log(item.value);
|
|
77
|
+
for (const key of Object.keys(json)) {
|
|
78
|
+
if (json.hasOwnProperty(key) && json[key] != null && json[key] != undefined && key == item.key) {
|
|
79
|
+
if (item.type == 'date')
|
|
80
|
+
item.value = new Date(json[key]);
|
|
81
|
+
else if (item.type == 'dateTime') {
|
|
82
|
+
item.value = new Date(json[key]);
|
|
83
|
+
}
|
|
84
|
+
else
|
|
85
|
+
item.value = json[key];
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return opt;
|
|
90
|
+
}
|
|
91
|
+
static getFormatDate(date) {
|
|
92
|
+
let month = date.getMonth() + 1;
|
|
93
|
+
let strDate = date.getDate();
|
|
94
|
+
if (month <= 9) {
|
|
95
|
+
month = "0" + month;
|
|
96
|
+
}
|
|
97
|
+
if (strDate <= 9) {
|
|
98
|
+
strDate = "0" + strDate;
|
|
99
|
+
}
|
|
100
|
+
return date.getFullYear() + "-" + month + "-" + strDate;
|
|
101
|
+
// + " "
|
|
102
|
+
// + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();
|
|
103
|
+
}
|
|
104
|
+
static getFormatDateFull(date) {
|
|
105
|
+
let month = date.getMonth() + 1;
|
|
106
|
+
let strDate = date.getDate();
|
|
107
|
+
if (month <= 9) {
|
|
108
|
+
month = "0" + month;
|
|
109
|
+
}
|
|
110
|
+
if (strDate <= 9) {
|
|
111
|
+
strDate = "0" + strDate;
|
|
112
|
+
}
|
|
113
|
+
return date.getFullYear() + "-" + month + "-" + strDate + " " + (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ":" + (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ":" + (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());
|
|
114
|
+
}
|
|
115
|
+
static getFormatDateWithoutS(date) {
|
|
116
|
+
let month = date.getMonth() + 1;
|
|
117
|
+
let strDate = date.getDate();
|
|
118
|
+
let hours = date.getHours();
|
|
119
|
+
let seconds = date.getMinutes();
|
|
120
|
+
if (month <= 9) {
|
|
121
|
+
month = "0" + month;
|
|
122
|
+
}
|
|
123
|
+
if (strDate <= 9) {
|
|
124
|
+
strDate = "0" + strDate;
|
|
125
|
+
}
|
|
126
|
+
if (hours <= 9) {
|
|
127
|
+
hours = "0" + hours;
|
|
128
|
+
}
|
|
129
|
+
if (seconds <= 9) {
|
|
130
|
+
seconds = "0" + seconds;
|
|
131
|
+
}
|
|
132
|
+
return date.getFullYear() + "-" + month + "-" + strDate + " " + hours + ":" + seconds;
|
|
133
|
+
}
|
|
134
|
+
static getOssUrl(url) {
|
|
135
|
+
if (!url) {
|
|
136
|
+
return "";
|
|
137
|
+
}
|
|
138
|
+
if (url.startsWith("http")) {
|
|
139
|
+
return url;
|
|
140
|
+
}
|
|
141
|
+
return this.ossPrefix + url;
|
|
142
|
+
}
|
|
143
|
+
static mul(...numbers) {
|
|
144
|
+
if (numbers.length < 2) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
let m = this.getDigit(numbers);
|
|
148
|
+
let result = 1;
|
|
149
|
+
numbers.forEach((num) => {
|
|
150
|
+
let s = num.toString();
|
|
151
|
+
result *= Number(s.replace(".", ""));
|
|
152
|
+
});
|
|
153
|
+
return result / Math.pow(10, m);
|
|
154
|
+
}
|
|
155
|
+
static getDigit(...numbers) {
|
|
156
|
+
let m = 0;
|
|
157
|
+
numbers.forEach(num => {
|
|
158
|
+
let s = num.toString();
|
|
159
|
+
try {
|
|
160
|
+
m += s.split(".")[1].length;
|
|
161
|
+
}
|
|
162
|
+
catch (e) {
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
return m;
|
|
166
|
+
}
|
|
167
|
+
static downloadImg(data, fileName, endpoint) {
|
|
168
|
+
// // 下载类型 xls
|
|
169
|
+
// const contentType = 'image/jpeg';
|
|
170
|
+
// // const contentType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
|
|
171
|
+
// // 下载类型:csv
|
|
172
|
+
// const debug = {hello: "world"};
|
|
173
|
+
// const blob = new Blob([],{type : 'image/jpeg'});
|
|
174
|
+
// const url = window.URL.createObjectURL(blob);
|
|
175
|
+
//
|
|
176
|
+
// // 打开新窗口方式进行下载
|
|
177
|
+
// // window.open(url);
|
|
178
|
+
//
|
|
179
|
+
// // 以动态创建a标签进行下载
|
|
180
|
+
const a = document.createElement('a');
|
|
181
|
+
a.href = data;
|
|
182
|
+
// a.download = fileName;
|
|
183
|
+
a.download = fileName ? fileName : "" + endpoint;
|
|
184
|
+
a.click();
|
|
185
|
+
}
|
|
186
|
+
static downloadXls(url, params) {
|
|
187
|
+
console.log(params);
|
|
188
|
+
if (params) {
|
|
189
|
+
url += "?";
|
|
190
|
+
for (const key of Object.keys(params)) {
|
|
191
|
+
if (params[key]) {
|
|
192
|
+
url += key + "=" + params[key] + "&&";
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
console.log(url);
|
|
197
|
+
// window.open(url);
|
|
198
|
+
const a = document.createElement('a');
|
|
199
|
+
a.href = url;
|
|
200
|
+
// // a.download = fileName;
|
|
201
|
+
// a.download = "3321.xls";
|
|
202
|
+
a.click();
|
|
203
|
+
}
|
|
204
|
+
static pixelToNum(width) {
|
|
205
|
+
const re = /px/gi;
|
|
206
|
+
let widthStr = width.replace(re, "");
|
|
207
|
+
return Number(widthStr);
|
|
208
|
+
}
|
|
209
|
+
//全部不空为true
|
|
210
|
+
static notEmpty(...arr) {
|
|
211
|
+
return arr.every(item => !!item);
|
|
212
|
+
}
|
|
213
|
+
//包含空为true
|
|
214
|
+
static hasEmpty(...arr) {
|
|
215
|
+
return arr.some(item => !item);
|
|
216
|
+
}
|
|
217
|
+
static allEmpty(...arr) {
|
|
218
|
+
return arr.every(item => !item);
|
|
219
|
+
}
|
|
220
|
+
static encodeValue(params) {
|
|
221
|
+
Object.keys(params).forEach(key => params[key] = encodeURIComponent(params[key]));
|
|
222
|
+
return params;
|
|
223
|
+
}
|
|
224
|
+
static windowHeight() {
|
|
225
|
+
return document.documentElement.clientHeight;
|
|
226
|
+
}
|
|
227
|
+
static windowWidth() {
|
|
228
|
+
return document.documentElement.clientWidth;
|
|
229
|
+
}
|
|
230
|
+
static modaleStyle() {
|
|
231
|
+
return { 'maxHeight': AtrToolsUtil.windowHeight() - 200 + 'px', 'overflow-y': 'auto' };
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
AtrToolsUtil.ossPrefix = atr_static_datas.OSS_URL;
|
|
235
|
+
AtrToolsUtil.getOrgCode = function () {
|
|
236
|
+
// var orgCode = '';
|
|
237
|
+
// var hrefs = window.location.href.split('?')
|
|
238
|
+
// if (hrefs.length >= 2) {
|
|
239
|
+
// var paramStr = hrefs[1];
|
|
240
|
+
// //参数字符串里有没带 =?/#
|
|
241
|
+
// orgCode = paramStr.split('=')[0];
|
|
242
|
+
// orgCode = orgCode.split('?')[0];
|
|
243
|
+
// orgCode = orgCode.split('/')[0];
|
|
244
|
+
// orgCode = orgCode.split('#')[0];
|
|
245
|
+
// orgCode = orgCode.split('/')[0];
|
|
246
|
+
// }
|
|
247
|
+
return '';
|
|
248
|
+
};
|
|
249
|
+
AtrToolsUtil.getRandomFileName = function () {
|
|
250
|
+
const expect = 16;
|
|
251
|
+
let str = Math.random().toString(36).substring(2);
|
|
252
|
+
while (str.length < expect) {
|
|
253
|
+
str += Math.random().toString(36).substring(2);
|
|
254
|
+
}
|
|
255
|
+
return str.substring(0, expect);
|
|
256
|
+
};
|
|
257
|
+
AtrToolsUtil.getFileExt = function (fileName) {
|
|
258
|
+
var index = fileName.lastIndexOf(".");
|
|
259
|
+
var suffix = fileName.substr(index + 1);
|
|
260
|
+
return suffix;
|
|
261
|
+
};
|
|
262
|
+
AtrToolsUtil.allEqual = (...array) => array.every(item => item === array[0]);
|
|
263
|
+
/**
|
|
264
|
+
* array所有参数满足fn函数返回true
|
|
265
|
+
* all(x => x > 1,1,2,3); // true
|
|
266
|
+
* @param callback
|
|
267
|
+
* @param array
|
|
268
|
+
*/
|
|
269
|
+
AtrToolsUtil.satisfiedFn = (callback, ...array) => array.every(callback);
|
|
270
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXRyVG9vbHMudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2NvcmUvdXRpbHMvQXRyVG9vbHMudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1CLGdCQUFnQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFJdEUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTFDLE1BQU0sT0FBTyxZQUFZO0lBaUJ2QixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQU87UUFDbkIsSUFBRyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ2xFLE9BQU8sS0FBSyxDQUFBO1NBQ2I7UUFDRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFDRCxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBWSxFQUFFLFlBQXNCO1FBQzNELElBQUksY0FBYyxHQUFRLEVBQUUsQ0FBQTtRQUM1QixLQUFLLE1BQU0sR0FBRyxJQUFJLFFBQVEsRUFBRTtZQUMxQixJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUU7Z0JBQzFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO2FBQzdEO2lCQUFNO2dCQUNMLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO2FBQ3RDO1NBQ0Y7UUFDRCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUs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QyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtqc29uLCBBdHJGb3JtT3B0LCBhdHJfc3RhdGljX2RhdGFzfSBmcm9tICcuLi9iYXNlL2F0ci1jb21tb24nO1xyXG5pbXBvcnQge2Zvcm1hdERhdGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7SHR0cEhlYWRlcnN9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQge1NpbXBsZUNoYW5nZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7VmFsaWRhdG9yc30gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgQXRyVG9vbHNVdGlsIHtcclxuICBzdGF0aWMgb3NzUHJlZml4ID0gYXRyX3N0YXRpY19kYXRhcy5PU1NfVVJMO1xyXG4gIHN0YXRpYyBnZXRPcmdDb2RlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgLy8gdmFyIG9yZ0NvZGUgPSAnJztcclxuICAgIC8vIHZhciBocmVmcyA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KCc/JylcclxuICAgIC8vIGlmIChocmVmcy5sZW5ndGggPj0gMikge1xyXG4gICAgLy8gICB2YXIgcGFyYW1TdHIgPSBocmVmc1sxXTtcclxuICAgIC8vICAgLy/lj4LmlbDlrZfnrKbkuLLph4zmnInmsqHluKYgPT8vI1xyXG4gICAgLy8gICBvcmdDb2RlID0gcGFyYW1TdHIuc3BsaXQoJz0nKVswXTtcclxuICAgIC8vICAgb3JnQ29kZSA9IG9yZ0NvZGUuc3BsaXQoJz8nKVswXTtcclxuICAgIC8vICAgb3JnQ29kZSA9IG9yZ0NvZGUuc3BsaXQoJy8nKVswXTtcclxuICAgIC8vICAgb3JnQ29kZSA9IG9yZ0NvZGUuc3BsaXQoJyMnKVswXTtcclxuICAgIC8vICAgb3JnQ29kZSA9IG9yZ0NvZGUuc3BsaXQoJy8nKVswXTtcclxuICAgIC8vIH1cclxuXHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG4gIHN0YXRpYyBpc051bGwodmFsOmFueSl7XHJcbiAgICBpZih2YWwgfHwgWydib29sZWFuJywnc3RyaW5nJywnbnVtYmVyJ10uc29tZSh2ID0+IHR5cGVvZiB2YWwgPT0gdikgKXtcclxuICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZVxyXG4gIH1cclxuICBzdGF0aWMgZ2V0Q29udHJvbHNDb25maWcoZGF0YUZyb206YW55LCByZXF1aXJlZFJ1bGU6IHN0cmluZ1tdKSB7XHJcbiAgICBsZXQgY29udHJvbHNDb25maWc6IGFueSA9IHt9XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhRnJvbSkge1xyXG4gICAgICBpZiAocmVxdWlyZWRSdWxlLnNvbWUoaXRlbSA9PiBpdGVtID09IGtleSkpIHtcclxuICAgICAgICBjb250cm9sc0NvbmZpZ1trZXldID0gW2RhdGFGcm9tW2tleV0sIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb250cm9sc0NvbmZpZ1trZXldID0gW2RhdGFGcm9tW2tleV1dXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjb250cm9sc0NvbmZpZztcclxuICB9XHJcblxyXG4gIHN0YXRpYyBodHRwU3VjY2VzKHJlczphbnkpIHtcclxuICAgIHJldHVybiByZXMuc3RhdHVzID09IDIwMFxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGRpZmZJbnB1dChjaG5nOiBTaW1wbGVDaGFuZ2UsIGFjdGlvbjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgaWYgKGNobmcgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG5cclxuICAgIGxldCBjdXIgPSBKU09OLnN0cmluZ2lmeShjaG5nLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICBsZXQgcHJldiA9IEpTT04uc3RyaW5naWZ5KGNobmcucHJldmlvdXNWYWx1ZSk7XHJcbiAgICBpZiAoY3VyICE9PSBwcmV2KSB7XHJcbiAgICAgIGFjdGlvbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGRpZmZJbnB1dHMoY2huZzogU2ltcGxlQ2hhbmdlW10sIGFjdGlvbjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgaWYgKGNobmcgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG4gICAgaWYgKGNobmcubGVuZ3RoID09IDApIHJldHVybjtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2huZy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgaXRlbSA9IGNobmdbaV07XHJcbiAgICAgIGlmIChpdGVtID09PSB1bmRlZmluZWQpIGNvbnRpbnVlO1xyXG4gICAgICBsZXQgY3VyID0gSlNPTi5zdHJpbmdpZnkoaXRlbS5jdXJyZW50VmFsdWUpO1xyXG4gICAgICBsZXQgcHJldiA9IEpTT04uc3RyaW5naWZ5KGl0ZW0ucHJldmlvdXNWYWx1ZSk7XHJcbiAgICAgIGlmIChjdXIgIT09IHByZXYpIHtcclxuICAgICAgICBhY3Rpb24oKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldFllc3RlcmRheShkYXk6IERhdGUpOiBEYXRlIHtcclxuXHJcbiAgICBsZXQgdGltZSA9IGRheS5nZXRUaW1lKCkgLSAxMDAwICogNjAgKiA2MCAqIDI0O1xyXG4gICAgZGF5ID0gbmV3IERhdGUodGltZSk7XHJcblxyXG4gICAgcmV0dXJuIGRheTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRUb21vcnJvd2RheShkYXk6IERhdGUpOiBEYXRlIHtcclxuICAgIGxldCB0aW1lID0gZGF5LmdldFRpbWUoKSArIDEwMDAgKiA2MCAqIDYwICogMjQ7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBEYXRlKHRpbWUpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldE5leHRNb250aChkYXk6IERhdGUpIHtcclxuICAgIGxldCBkcyA9IG5ldyBEYXRlKGRheSkuc2V0TW9udGgoZGF5LmdldE1vbnRoKCkgKyAxKTtcclxuICAgIHJldHVybiBuZXcgRGF0ZShkcyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgc3RhdGljIGZpc3REYXlPZk1vbnRoKGRheTogRGF0ZSkge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKG5ldyBEYXRlKGRheSkuc2V0RGF0ZSgxKSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgbGFzdERheU9mTW9udGgoZGF5OiBEYXRlKSB7XHJcbiAgICByZXR1cm4gbmV3IERhdGUoQXRyVG9vbHNVdGlsLmdldE5leHRNb250aChkYXkpLnNldERhdGUoMCkpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldFJhbmRvbUZpbGVOYW1lID0gZnVuY3Rpb24gKCkge1xyXG4gICAgY29uc3QgZXhwZWN0ID0gMTY7XHJcbiAgICBsZXQgc3RyID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIpO1xyXG4gICAgd2hpbGUgKHN0ci5sZW5ndGggPCBleHBlY3QpIHtcclxuICAgICAgc3RyICs9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyKTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdHIuc3Vic3RyaW5nKDAsIGV4cGVjdCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0RmlsZUV4dCA9IGZ1bmN0aW9uIChmaWxlTmFtZTpzdHJpbmcpIHtcclxuICAgIHZhciBpbmRleCA9IGZpbGVOYW1lLmxhc3RJbmRleE9mKFwiLlwiKTtcclxuICAgIHZhciBzdWZmaXggPSBmaWxlTmFtZS5zdWJzdHIoaW5kZXggKyAxKTtcclxuICAgIHJldHVybiBzdWZmaXg7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0SHR0cE9wdGlvbnMoKTogYW55IHtcclxuICAgIHJldHVybiB7aXNDb21tb25IdHRwSGVhZGVyOiB0cnVlfVxyXG4gIH1cclxuXHJcblxyXG4gIHN0YXRpYyByZXNldEZvcm1WYWx1ZShvcHQ6IEF0ckZvcm1PcHQsIGpzb246IGpzb24pOiBBdHJGb3JtT3B0IHtcclxuICAgIGZvciAobGV0IGl0ZW0gb2Ygb3B0Lml0ZW1zKSB7XHJcbiAgICAgIGl0ZW0udmFsdWUgPSBcIlwiO1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhpdGVtLnZhbHVlKTtcclxuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoanNvbikpIHtcclxuICAgICAgICBpZiAoanNvbi5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIGpzb25ba2V5XSAhPSBudWxsICYmIGpzb25ba2V5XSAhPSB1bmRlZmluZWQgJiYga2V5ID09IGl0ZW0ua2V5KSB7XHJcbiAgICAgICAgICBpZiAoaXRlbS50eXBlID09ICdkYXRlJylcclxuICAgICAgICAgICAgaXRlbS52YWx1ZSA9IG5ldyBEYXRlKGpzb25ba2V5XSk7XHJcbiAgICAgICAgICBlbHNlIGlmIChpdGVtLnR5cGUgPT0gJ2RhdGVUaW1lJykge1xyXG4gICAgICAgICAgICBpdGVtLnZhbHVlID0gbmV3IERhdGUoanNvbltrZXldKTtcclxuICAgICAgICAgIH0gZWxzZVxyXG4gICAgICAgICAgICBpdGVtLnZhbHVlID0ganNvbltrZXldXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb3B0O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldEZvcm1hdERhdGUoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICBsZXQgbW9udGg6IHN0cmluZyB8IG51bWJlciA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XHJcbiAgICBsZXQgc3RyRGF0ZTogc3RyaW5nIHwgbnVtYmVyID0gZGF0ZS5nZXREYXRlKCk7XHJcblxyXG4gICAgaWYgKG1vbnRoIDw9IDkpIHtcclxuICAgICAgbW9udGggPSBcIjBcIiArIG1vbnRoO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdHJEYXRlIDw9IDkpIHtcclxuICAgICAgc3RyRGF0ZSA9IFwiMFwiICsgc3RyRGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpICsgXCItXCIgKyBtb250aCArIFwiLVwiICsgc3RyRGF0ZVxyXG4gICAgLy8gKyBcIiBcIlxyXG4gICAgLy8gKyBkYXRlLmdldEhvdXJzKCkgKyBcIjpcIiArIGRhdGUuZ2V0TWludXRlcygpICsgXCI6XCIgKyBkYXRlLmdldFNlY29uZHMoKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRGb3JtYXREYXRlRnVsbChkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGxldCBtb250aDogc3RyaW5nIHwgbnVtYmVyID0gZGF0ZS5nZXRNb250aCgpICsgMTtcclxuICAgIGxldCBzdHJEYXRlOiBzdHJpbmcgfCBudW1iZXIgPSBkYXRlLmdldERhdGUoKTtcclxuXHJcbiAgICBpZiAobW9udGggPD0gOSkge1xyXG4gICAgICBtb250aCA9IFwiMFwiICsgbW9udGg7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHN0ckRhdGUgPD0gOSkge1xyXG4gICAgICBzdHJEYXRlID0gXCIwXCIgKyBzdHJEYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCkgKyBcIi1cIiArIG1vbnRoICsgXCItXCIgKyBzdHJEYXRlICsgXCIgXCIgKyAoZGF0ZS5nZXRIb3VycygpIDwgMTAgPyAnMCcgKyBkYXRlLmdldEhvdXJzKCkgOiBkYXRlLmdldEhvdXJzKCkpICsgXCI6XCIgKyAoZGF0ZS5nZXRNaW51dGVzKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0TWludXRlcygpIDogZGF0ZS5nZXRNaW51dGVzKCkpICsgXCI6XCIgKyAoZGF0ZS5nZXRTZWNvbmRzKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0U2Vjb25kcygpIDogZGF0ZS5nZXRTZWNvbmRzKCkpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldEZvcm1hdERhdGVXaXRob3V0UyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGxldCBtb250aDogc3RyaW5nIHwgbnVtYmVyID0gZGF0ZS5nZXRNb250aCgpICsgMTtcclxuICAgIGxldCBzdHJEYXRlOiBzdHJpbmcgfCBudW1iZXIgPSBkYXRlLmdldERhdGUoKTtcclxuICAgIGxldCBob3Vyczogc3RyaW5nIHwgbnVtYmVyID0gZGF0ZS5nZXRIb3VycygpO1xyXG4gICAgbGV0IHNlY29uZHM6IHN0cmluZyB8IG51bWJlciA9IGRhdGUuZ2V0TWludXRlcygpO1xyXG4gICAgaWYgKG1vbnRoIDw9IDkpIHtcclxuICAgICAgbW9udGggPSBcIjBcIiArIG1vbnRoO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdHJEYXRlIDw9IDkpIHtcclxuICAgICAgc3RyRGF0ZSA9IFwiMFwiICsgc3RyRGF0ZTtcclxuICAgIH1cclxuICAgIGlmIChob3VycyA8PSA5KSB7XHJcbiAgICAgIGhvdXJzID0gXCIwXCIgKyBob3VycztcclxuICAgIH1cclxuICAgIGlmIChzZWNvbmRzIDw9IDkpIHtcclxuICAgICAgc2Vjb25kcyA9IFwiMFwiICsgc2Vjb25kcztcclxuICAgIH1cclxuICAgIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCkgKyBcIi1cIiArIG1vbnRoICsgXCItXCIgKyBzdHJEYXRlICsgXCIgXCIgKyBob3VycyArIFwiOlwiICsgc2Vjb25kcztcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRPc3NVcmwodXJsOiBzdHJpbmcpIHtcclxuICAgIGlmICghdXJsKSB7XHJcbiAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG4gICAgaWYgKHVybC5zdGFydHNXaXRoKFwiaHR0cFwiKSkge1xyXG4gICAgICByZXR1cm4gdXJsXHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5vc3NQcmVmaXggKyB1cmw7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgbXVsKC4uLm51bWJlcnM6YW55KSB7XHJcbiAgICBpZiAobnVtYmVycy5sZW5ndGggPCAyKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBtID0gdGhpcy5nZXREaWdpdChudW1iZXJzKTtcclxuICAgIGxldCByZXN1bHQgPSAxO1xyXG4gICAgbnVtYmVycy5mb3JFYWNoKFxyXG4gICAgICAobnVtOmFueSkgPT4ge1xyXG4gICAgICAgIGxldCBzID0gbnVtLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgcmVzdWx0ICo9IE51bWJlcihzLnJlcGxhY2UoXCIuXCIsIFwiXCIpKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHJldHVybiByZXN1bHQgLyBNYXRoLnBvdygxMCwgbSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0RGlnaXQoLi4ubnVtYmVyczphbnlbXSkge1xyXG4gICAgbGV0IG0gPSAwO1xyXG4gICAgbnVtYmVycy5mb3JFYWNoKFxyXG4gICAgICBudW0gPT4ge1xyXG4gICAgICAgIGxldCBzID0gbnVtLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIG0gKz0gcy5zcGxpdChcIi5cIilbMV0ubGVuZ3RoXHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHJldHVybiBtO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGRvd25sb2FkSW1nKGRhdGE6YW55LCBmaWxlTmFtZT86IHN0cmluZywgZW5kcG9pbnQ/OiBzdHJpbmcpIHtcclxuICAgIC8vIC8vIOS4i+i9veexu+WeiyB4bHNcclxuICAgIC8vIGNvbnN0IGNvbnRlbnRUeXBlID0gJ2ltYWdlL2pwZWcnO1xyXG4gICAgLy8gLy8gY29uc3QgY29udGVudFR5cGUgPSAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnO1xyXG4gICAgLy8gLy8g5LiL6L2957G75Z6L77yaY3N2XHJcbiAgICAvLyBjb25zdCBkZWJ1ZyA9IHtoZWxsbzogXCJ3b3JsZFwifTtcclxuICAgIC8vIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbXSx7dHlwZSA6ICdpbWFnZS9qcGVnJ30pO1xyXG4gICAgLy8gY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICAvL1xyXG4gICAgLy8gLy8g5omT5byA5paw56qX5Y+j5pa55byP6L+b6KGM5LiL6L29XHJcbiAgICAvLyAvLyB3aW5kb3cub3Blbih1cmwpO1xyXG4gICAgLy9cclxuICAgIC8vIC8vIOS7peWKqOaAgeWIm+W7umHmoIfnrb7ov5vooYzkuIvovb1cclxuICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICBhLmhyZWYgPSBkYXRhO1xyXG4gICAgLy8gYS5kb3dubG9hZCA9IGZpbGVOYW1lO1xyXG4gICAgYS5kb3dubG9hZCA9IGZpbGVOYW1lP2ZpbGVOYW1lOlwiXCIgKyBlbmRwb2ludDtcclxuICAgIGEuY2xpY2soKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBkb3dubG9hZFhscyh1cmw6c3RyaW5nLCBwYXJhbXM/OiBhbnksKSB7XHJcbiAgICBjb25zb2xlLmxvZyhwYXJhbXMpO1xyXG4gICAgaWYgKHBhcmFtcykge1xyXG4gICAgICB1cmwgKz0gXCI/XCI7XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHBhcmFtcykpIHtcclxuICAgICAgICBpZiAocGFyYW1zW2tleV0pIHtcclxuICAgICAgICAgIHVybCArPSBrZXkgKyBcIj1cIiArIHBhcmFtc1trZXldICsgXCImJlwiXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyh1cmwpO1xyXG4gICAgLy8gd2luZG93Lm9wZW4odXJsKTtcclxuICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICBhLmhyZWYgPSB1cmw7XHJcbiAgICAvLyAvLyBhLmRvd25sb2FkID0gZmlsZU5hbWU7XHJcbiAgICAvLyBhLmRvd25sb2FkID0gXCIzMzIxLnhsc1wiO1xyXG4gICAgYS5jbGljaygpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHBpeGVsVG9OdW0od2lkdGg6YW55KSB7XHJcbiAgICBjb25zdCByZSA9IC9weC9naTtcclxuICAgIGxldCB3aWR0aFN0ciA9IHdpZHRoLnJlcGxhY2UocmUsIFwiXCIpO1xyXG4gICAgcmV0dXJuIE51bWJlcih3aWR0aFN0cik7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYWxsRXF1YWwgPSAoLi4uYXJyYXk6YW55W10pID0+IGFycmF5LmV2ZXJ5KGl0ZW0gPT4gaXRlbSA9PT0gYXJyYXlbMF0pO1xyXG5cclxuICAvKipcclxuICAgKiBhcnJheeaJgOacieWPguaVsOa7oei2s2Zu5Ye95pWw6L+U5ZuedHJ1ZVxyXG4gICAqIGFsbCh4ID0+IHggPiAxLDEsMiwzKTsgLy8gdHJ1ZVxyXG4gICAqIEBwYXJhbSBjYWxsYmFja1xyXG4gICAqIEBwYXJhbSBhcnJheVxyXG4gICAqL1xyXG4gIHN0YXRpYyBzYXRpc2ZpZWRGbiA9IChjYWxsYmFjazogKC4uLmFyZ3M6IGFueVtdKSA9PiBib29sZWFuLCAuLi5hcnJheTphbnlbXSkgPT4gYXJyYXkuZXZlcnkoY2FsbGJhY2spO1xyXG5cclxuICAvL+WFqOmDqOS4jeepuuS4unRydWVcclxuICBzdGF0aWMgbm90RW1wdHkoLi4uYXJyOmFueVtdKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gYXJyLmV2ZXJ5KGl0ZW0gPT4gISFpdGVtKVxyXG4gIH1cclxuXHJcbiAgLy/ljIXlkKvnqbrkuLp0cnVlXHJcbiAgc3RhdGljIGhhc0VtcHR5KC4uLmFycjphbnlbXSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGFyci5zb21lKGl0ZW0gPT4gIWl0ZW0pO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGFsbEVtcHR5KC4uLmFycjphbnlbXSkge1xyXG4gICAgcmV0dXJuIGFyci5ldmVyeShpdGVtID0+ICFpdGVtKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBlbmNvZGVWYWx1ZShwYXJhbXM6YW55KSB7XHJcbiAgICBPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2goa2V5ID0+IHBhcmFtc1trZXldID0gZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtc1trZXldKSk7XHJcbiAgICByZXR1cm4gcGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHdpbmRvd0hlaWdodCgpIHtcclxuICAgICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcbiAgfVxyXG4gIHN0YXRpYyB3aW5kb3dXaWR0aCgpIHtcclxuXHJcbiAgICAgIHJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgbW9kYWxlU3R5bGUoKSB7XHJcbiAgICByZXR1cm4geydtYXhIZWlnaHQnOiBBdHJUb29sc1V0aWwud2luZG93SGVpZ2h0KCkgLSAyMDAgKyAncHgnLCAnb3ZlcmZsb3cteSc6ICdhdXRvJ307XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { atr_static_datas } from '../base/atr-common';
|
|
2
|
+
import { AtrToolsUtil } from './AtrTools.util';
|
|
3
|
+
export class LocalStorageUtil {
|
|
4
|
+
static getProvinceByValue(province) {
|
|
5
|
+
let regions = this.getRegion();
|
|
6
|
+
if (regions.length == 0 || !province) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
regions = regions.filter((v) => v.value == province);
|
|
10
|
+
return regions && regions.length > 0 ? regions[0].label : null;
|
|
11
|
+
}
|
|
12
|
+
static getRegion() {
|
|
13
|
+
let str = localStorage.getItem(this.getStorageKey('REGION'));
|
|
14
|
+
let loginInfo = null;
|
|
15
|
+
if (str) {
|
|
16
|
+
loginInfo = JSON.parse(str);
|
|
17
|
+
}
|
|
18
|
+
if (loginInfo)
|
|
19
|
+
return loginInfo;
|
|
20
|
+
else
|
|
21
|
+
return [];
|
|
22
|
+
}
|
|
23
|
+
static putRegion(disList) {
|
|
24
|
+
if (disList) {
|
|
25
|
+
localStorage.setItem(this.getStorageKey('REGION'), JSON.stringify(disList));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
static putUser(userInfo) {
|
|
29
|
+
localStorage.removeItem(this.getStorageKey('USER_INFO_') + AtrToolsUtil.getOrgCode());
|
|
30
|
+
if (userInfo) {
|
|
31
|
+
localStorage.setItem(this.getStorageKey('USER_INFO_') + AtrToolsUtil.getOrgCode(), JSON.stringify(userInfo));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
static putLogin(loginInfo) {
|
|
35
|
+
localStorage.removeItem(this.getStorageKey('USER_INFO_L_') + AtrToolsUtil.getOrgCode());
|
|
36
|
+
if (loginInfo) {
|
|
37
|
+
localStorage.setItem(this.getStorageKey('USER_INFO_L_') + AtrToolsUtil.getOrgCode(), JSON.stringify(loginInfo));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
static getLogin() {
|
|
41
|
+
let str = localStorage.getItem(this.getStorageKey('USER_INFO_L_') + AtrToolsUtil.getOrgCode());
|
|
42
|
+
let loginInfo = null;
|
|
43
|
+
if (str) {
|
|
44
|
+
loginInfo = JSON.parse(str);
|
|
45
|
+
}
|
|
46
|
+
if (loginInfo)
|
|
47
|
+
return loginInfo;
|
|
48
|
+
else
|
|
49
|
+
return {};
|
|
50
|
+
}
|
|
51
|
+
static getUser() {
|
|
52
|
+
let str = localStorage.getItem(this.getStorageKey('USER_INFO_') + AtrToolsUtil.getOrgCode());
|
|
53
|
+
let userInfo = null;
|
|
54
|
+
if (str) {
|
|
55
|
+
userInfo = JSON.parse(str);
|
|
56
|
+
}
|
|
57
|
+
if (userInfo)
|
|
58
|
+
return userInfo;
|
|
59
|
+
else
|
|
60
|
+
return {};
|
|
61
|
+
}
|
|
62
|
+
static getUserToken() {
|
|
63
|
+
let str = localStorage.getItem(this.getStorageKey('USER_INFO_') + AtrToolsUtil.getOrgCode());
|
|
64
|
+
let userInfo = null;
|
|
65
|
+
if (str) {
|
|
66
|
+
userInfo = JSON.parse(str);
|
|
67
|
+
}
|
|
68
|
+
if (userInfo && userInfo.token)
|
|
69
|
+
return userInfo.token;
|
|
70
|
+
else
|
|
71
|
+
return "";
|
|
72
|
+
}
|
|
73
|
+
static getUserId() {
|
|
74
|
+
let str = localStorage.getItem(this.getStorageKey('USER_INFO_') + AtrToolsUtil.getOrgCode());
|
|
75
|
+
let userInfo = null;
|
|
76
|
+
if (str) {
|
|
77
|
+
userInfo = JSON.parse(str);
|
|
78
|
+
}
|
|
79
|
+
if (userInfo && userInfo.id)
|
|
80
|
+
return userInfo.id;
|
|
81
|
+
else
|
|
82
|
+
return "";
|
|
83
|
+
}
|
|
84
|
+
static removeUser() {
|
|
85
|
+
localStorage.removeItem(this.getStorageKey('USER_INFO_') + AtrToolsUtil.getOrgCode());
|
|
86
|
+
}
|
|
87
|
+
static getStorageKey(key) {
|
|
88
|
+
return atr_static_datas.STORAGE_PRE + key;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
LocalStorageUtil.clearUs = () => {
|
|
92
|
+
LocalStorageUtil.removeUser();
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxzdG9yYWdlLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9jb3JlL3V0aWxzL2xvY2Fsc3RvcmFnZS51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBTyxNQUFNLG9CQUFvQixDQUFDO0FBQzFELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU3QyxNQUFNLE9BQU8sZ0JBQWdCO0lBRTNCLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxRQUFnQjtRQUN4QyxJQUFJLE9BQU8sR0FBUSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDcEMsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNwQyxPQUFPLElBQUksQ0FBQTtTQUNaO1FBQ0QsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksUUFBUSxDQUFDLENBQUM7UUFDMUQsT0FBTyxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNqRSxDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQVM7UUFDZCxJQUFJLEdBQUcsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM3RCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUE7UUFDcEIsSUFBSSxHQUFHLEVBQUU7WUFDUCxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM3QjtRQUNELElBQUksU0FBUztZQUNYLE9BQU8sU0FBUyxD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Q0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFBO1FBQzVGLElBQUksUUFBUSxHQUFRLElBQUksQ0FBQTtRQUN4QixJQUFJLEdBQUcsRUFBRTtZQUNQLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLEVBQUU7WUFDekIsT0FBTyxRQUFRLENBQUMsRUFBRSxDQUFBOztZQUVsQixPQUFPLEVBQUUsQ0FBQTtJQUNiLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVTtRQUNmLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsR0FBRyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBTUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFXO1FBQzlCLE9BQU8sZ0JBQWdCLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztJQUM1QyxDQUFDOztBQU5NLHdCQUFPLEdBQUcsR0FBRyxFQUFFO0lBQ3BCLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFBO0FBQy9CLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXRyX3N0YXRpY19kYXRhcywganNvbn0gZnJvbSAnLi4vYmFzZS9hdHItY29tbW9uJztcclxuaW1wb3J0IHtBdHJUb29sc1V0aWx9IGZyb20gJy4vQXRyVG9vbHMudXRpbCc7XHJcblxyXG5leHBvcnQgY2xhc3MgTG9jYWxTdG9yYWdlVXRpbCB7XHJcblxyXG4gIHN0YXRpYyBnZXRQcm92aW5jZUJ5VmFsdWUocHJvdmluY2U6IHN0cmluZyk6IGFueSB7XHJcbiAgICBsZXQgcmVnaW9uczogYW55ID0gdGhpcy5nZXRSZWdpb24oKTtcclxuICAgIGlmIChyZWdpb25zLmxlbmd0aCA9PSAwIHx8ICFwcm92aW5jZSkge1xyXG4gICAgICByZXR1cm4gbnVsbFxyXG4gICAgfVxyXG4gICAgcmVnaW9ucyA9IHJlZ2lvbnMuZmlsdGVyKCh2OiBhbnkpID0+IHYudmFsdWUgPT0gcHJvdmluY2UpO1xyXG4gICAgcmV0dXJuIHJlZ2lvbnMgJiYgcmVnaW9ucy5sZW5ndGggPiAwID8gcmVnaW9uc1swXS5sYWJlbCA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0UmVnaW9uKCkge1xyXG4gICAgbGV0IHN0ciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuZ2V0U3RvcmFnZUtleSgnUkVHSU9OJykpO1xyXG4gICAgbGV0IGxvZ2luSW5mbyA9IG51bGxcclxuICAgIGlmIChzdHIpIHtcclxuICAgICAgbG9naW5JbmZvID0gSlNPTi5wYXJzZShzdHIpO1xyXG4gICAgfVxyXG4gICAgaWYgKGxvZ2luSW5mbylcclxuICAgICAgcmV0dXJuIGxvZ2luSW5mb1xyXG4gICAgZWxzZVxyXG4gICAgICByZXR1cm4gW11cclxuICB9XHJcblxyXG4gIHN0YXRpYyBwdXRSZWdpb24oZGlzTGlzdDogYW55W10pOiB2b2lkIHtcclxuICAgIGlmIChkaXNMaXN0KSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuZ2V0U3RvcmFnZUtleSgnUkVHSU9OJyksIEpTT04uc3RyaW5naWZ5KGRpc0xpc3QpKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIHB1dFVzZXIodXNlckluZm86IGpzb24pOiB2b2lkIHtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuZ2V0U3RvcmFnZUtleSgnVVNFUl9JTkZPXycpICsgQXRyVG9vbHNVdGlsLmdldE9yZ0NvZGUoKSk7XHJcbiAgICBpZiAodXNlckluZm8pIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5nZXRTdG9yYWdlS2V5KCdVU0VSX0lORk9fJykgKyBBdHJUb29sc1V0aWwuZ2V0T3JnQ29kZSgpLCBKU09OLnN0cmluZ2lmeSh1c2VySW5mbykpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgcHV0TG9naW4obG9naW5JbmZvOiBqc29uKTogdm9pZCB7XHJcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLmdldFN0b3JhZ2VLZXkoJ1VTRVJfSU5GT19MXycpICsgQXRyVG9vbHNVdGlsLmdldE9yZ0NvZGUoKSk7XHJcbiAgICBpZiAobG9naW5JbmZvKSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuZ2V0U3RvcmFnZUtleSgnVVNFUl9JTkZPX0xfJykgKyBBdHJUb29sc1V0aWwuZ2V0T3JnQ29kZSgpLCBKU09OLnN0cmluZ2lmeShsb2dpbkluZm8pKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldExvZ2luKCk6IGFueSB7XHJcbiAgICBsZXQgc3RyID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5nZXRTdG9yYWdlS2V5KCdVU0VSX0lORk9fTF8nKSArIEF0clRvb2xzVXRpbC5nZXRPcmdDb2RlKCkpXHJcbiAgICBsZXQgbG9naW5JbmZvOiBhbnkgPSBudWxsXHJcbiAgICBpZiAoc3RyKSB7XHJcbiAgICAgIGxvZ2luSW5mbyA9IEpTT04ucGFyc2Uoc3RyKTtcclxuICAgIH1cclxuICAgIGlmIChsb2dpbkluZm8pXHJcbiAgICAgIHJldHVybiBsb2dpbkluZm9cclxuICAgIGVsc2VcclxuICAgICAgcmV0dXJuIHt9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0VXNlcigpOiBhbnkge1xyXG4gICAgbGV0IHN0ciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuZ2V0U3RvcmFnZUtleSgnVVNFUl9JTkZPXycpICsgQXRyVG9vbHNVdGlsLmdldE9yZ0NvZGUoKSlcclxuICAgIGxldCB1c2VySW5mbzogYW55ID0gbnVsbFxyXG4gICAgaWYgKHN0cikge1xyXG4gICAgICB1c2VySW5mbyA9IEpTT04ucGFyc2Uoc3RyKTtcclxuICAgIH1cclxuICAgIGlmICh1c2VySW5mbylcclxuICAgICAgcmV0dXJuIHVzZXJJbmZvXHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiB7fVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldFVzZXJUb2tlbigpOiBzdHJpbmcge1xyXG4gICAgbGV0IHN0ciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuZ2V0U3RvcmFnZUtleSgnVVNFUl9JTkZPXycpICsgQXRyVG9vbHNVdGlsLmdldE9yZ0NvZGUoKSlcclxuICAgIGxldCB1c2VySW5mbzogYW55ID0gbnVsbFxyXG4gICAgaWYgKHN0cikge1xyXG4gICAgICB1c2VySW5mbyA9IEpTT04ucGFyc2Uoc3RyKTtcclxuICAgIH1cclxuICAgIGlmICh1c2VySW5mbyAmJiB1c2VySW5mby50b2tlbilcclxuICAgICAgcmV0dXJuIHVzZXJJbmZvLnRva2VuXHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiBcIlwiXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0VXNlcklkKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgc3RyID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5nZXRTdG9yYWdlS2V5KCdVU0VSX0lORk9fJykgKyBBdHJUb29sc1V0aWwuZ2V0T3JnQ29kZSgpKVxyXG4gICAgbGV0IHVzZXJJbmZvOiBhbnkgPSBudWxsXHJcbiAgICBpZiAoc3RyKSB7XHJcbiAgICAgIHVzZXJJbmZvID0gSlNPTi5wYXJzZShzdHIpO1xyXG4gICAgfVxyXG4gICAgaWYgKHVzZXJJbmZvICYmIHVzZXJJbmZvLmlkKVxyXG4gICAgICByZXR1cm4gdXNlckluZm8uaWRcclxuICAgIGVsc2VcclxuICAgICAgcmV0dXJuIFwiXCJcclxuICB9XHJcblxyXG4gIHN0YXRpYyByZW1vdmVVc2VyKCkge1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5nZXRTdG9yYWdlS2V5KCdVU0VSX0lORk9fJykgKyBBdHJUb29sc1V0aWwuZ2V0T3JnQ29kZSgpKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBjbGVhclVzID0gKCkgPT4ge1xyXG4gICAgTG9jYWxTdG9yYWdlVXRpbC5yZW1vdmVVc2VyKClcclxuICB9XHJcblxyXG4gIHN0YXRpYyBnZXRTdG9yYWdlS2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBhdHJfc3RhdGljX2RhdGFzLlNUT1JBR0VfUFJFICsga2V5O1xyXG4gIH1cclxufVxyXG4iXX0=
|