@hestia-earth/ui-components 0.27.3 → 0.27.5
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/common/maps-utils.d.ts +1 -1
- package/common/navigation-menu/navigation-menu.component.d.ts +26 -7
- package/esm2022/common/logs-utils.mjs +2 -2
- package/esm2022/common/maps-utils.mjs +3 -3
- package/esm2022/common/navigation-menu/navigation-menu.component.mjs +14 -6
- package/esm2022/files/files-upload-errors/files-upload-errors.component.mjs +4 -11
- package/esm2022/node/node-store.service.mjs +2 -1
- package/fesm2022/hestia-earth-ui-components.mjs +19 -17
- package/fesm2022/hestia-earth-ui-components.mjs.map +1 -1
- package/files/files-upload-errors/files-upload-errors.component.d.ts +1 -2
- package/package.json +1 -1
- package/variables.scss +1 -1
package/common/maps-utils.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export declare const HE_MAP_LOADED: InjectionToken<Observable<boolean>>;
|
|
|
10
10
|
* imports: [HttpClientJsonpModule]
|
|
11
11
|
*
|
|
12
12
|
* // Inject in module
|
|
13
|
-
* providers: [{ provide: HE_MAP_LOADED, useFactory: loadMapApi(apiKey), deps: [HttpClient]} ]
|
|
13
|
+
* providers: [{ provide: HE_MAP_LOADED, useFactory: loadMapApi(apiKey), deps: [HttpClient] } ]
|
|
14
14
|
*
|
|
15
15
|
* // Inject in component
|
|
16
16
|
* constructor(@Inject(HE_MAP_LOADED) public mapLoaded$: Observable<boolean>) { }
|
|
@@ -2,10 +2,22 @@ import { IsActiveMatchOptions } from '@angular/router';
|
|
|
2
2
|
import { ResponsiveService } from '../responsive.service';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export interface INavigationMenuLink {
|
|
5
|
+
/**
|
|
6
|
+
* The title displayed. Can be HTML or plain text.
|
|
7
|
+
*/
|
|
5
8
|
title: string;
|
|
9
|
+
/**
|
|
10
|
+
* When no URL is provided, link is not clickable.
|
|
11
|
+
*/
|
|
6
12
|
url?: string;
|
|
7
13
|
icon?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Children links to display under this menu item.
|
|
16
|
+
*/
|
|
8
17
|
links?: INavigationMenuLink[];
|
|
18
|
+
/**
|
|
19
|
+
* Query parameters to use with the URL.
|
|
20
|
+
*/
|
|
9
21
|
queryParams?: {
|
|
10
22
|
[key: string]: string;
|
|
11
23
|
};
|
|
@@ -17,6 +29,9 @@ export interface INavigationMenuLink {
|
|
|
17
29
|
* Router active match options override.
|
|
18
30
|
*/
|
|
19
31
|
activeMatchOptions?: IsActiveMatchOptions;
|
|
32
|
+
/**
|
|
33
|
+
* If there is no icon and links are provided, top-level links are not expanded by default.
|
|
34
|
+
*/
|
|
20
35
|
expanded?: boolean;
|
|
21
36
|
}
|
|
22
37
|
export declare class NavigationMenuComponent {
|
|
@@ -32,17 +47,21 @@ export declare class NavigationMenuComponent {
|
|
|
32
47
|
protected sticky: import("@angular/core").InputSignal<boolean>;
|
|
33
48
|
protected collapsible: import("@angular/core").InputSignal<boolean>;
|
|
34
49
|
protected routerLinkMatchOptions: import("@angular/core").InputSignal<IsActiveMatchOptions>;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
50
|
+
protected primaryLinkExpandable: (link: INavigationMenuLink) => boolean;
|
|
51
|
+
protected withPrimaryIcons: import("@angular/core").Signal<boolean>;
|
|
52
|
+
protected collapsed: boolean;
|
|
53
|
+
protected opened: boolean;
|
|
38
54
|
protected classes: string;
|
|
39
55
|
protected get isCollapsed(): boolean;
|
|
40
56
|
constructor();
|
|
41
|
-
get maxHeight(): string;
|
|
42
|
-
toggle(): void;
|
|
57
|
+
protected get maxHeight(): string;
|
|
58
|
+
protected toggle(): void;
|
|
43
59
|
private collapseOtherLinks;
|
|
44
|
-
toggleLinks(item: INavigationMenuLink, index: number): void;
|
|
45
|
-
listActiveLinkChange(item: INavigationMenuLink): void;
|
|
60
|
+
protected toggleLinks(item: INavigationMenuLink, index: number): void;
|
|
61
|
+
protected listActiveLinkChange(item: INavigationMenuLink, index: number): void;
|
|
62
|
+
protected primaryLinkActiveOptions(link: INavigationMenuLink): IsActiveMatchOptions | {
|
|
63
|
+
exact: boolean;
|
|
64
|
+
};
|
|
46
65
|
static ɵfac: i0.ɵɵFactoryDeclaration<NavigationMenuComponent, never>;
|
|
47
66
|
static ɵcmp: i0.ɵɵComponentDeclaration<NavigationMenuComponent, "he-navigation-menu", never, { "links": { "alias": "links"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "routerLinkMatchOptions": { "alias": "routerLinkMatchOptions"; "required": false; "isSignal": true; }; }, {}, never, ["[outer-content]", "[inner-content]"], true, never>;
|
|
48
67
|
}
|
|
@@ -49,7 +49,7 @@ const formatLine = ({ data: { timestamp, message } }) => ({
|
|
|
49
49
|
timestamp,
|
|
50
50
|
...parseMessage(message)
|
|
51
51
|
});
|
|
52
|
-
export const logToCsv = (lines) => json2csv(lines.map(formatLine).filter(data => Object.keys(data).length > 1), {
|
|
52
|
+
export const logToCsv = (lines) => json2csv((lines || []).map(formatLine).filter(data => Object.keys(data).length > 1), {
|
|
53
53
|
emptyFieldValue: ''
|
|
54
54
|
});
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9ncy11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vbG9ncy11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXRDLE1BQU0sQ0FBTixJQUFZLEtBS1g7QUFMRCxXQUFZLEtBQUs7SUFDZix3QkFBZSxDQUFBO0lBQ2Ysc0JBQWEsQ0FBQTtJQUNiLDRCQUFtQixDQUFBO0lBQ25CLHdCQUFlLENBQUE7QUFDakIsQ0FBQyxFQUxXLEtBQUssS0FBTCxLQUFLLFFBS2hCO0FBRUQsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFTM0MsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtJQUNqQyxJQUFJLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDYixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxZQUFZLEdBQUc7SUFDbkIsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsZUFBZTtJQUM5QixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxpQkFBaUI7SUFDaEMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRTtJQUNoQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxrQkFBa0I7Q0FDcEMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQ3JDLENBQUM7SUFDQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7SUFDMUIsSUFBSTtJQUNKLEtBQUssRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUMvQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Q0FDbEIsQ0FBVSxDQUFDO0FBRWQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FDdEMsT0FBTyxJQUFJLEtBQUssUUFBUTtJQUN0QixDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztJQUMvRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUV4QixNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQzdCLENBQ0UsQ0FBQztJQUNDLEdBQUcsRUFBRSxVQUFVO0lBQ2YsSUFBSSxFQUFFLFVBQVU7SUFDaEIsSUFBSSxFQUFFLEVBQUU7SUFDUixJQUFJLEVBQUUsRUFBRTtDQUNULENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQ2YsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUVYLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFFM0YsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUUsQ0FDOUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7SUFDeEMsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixPQUFPO1FBQ0wsR0FBRyxJQUFJO1FBQ1AsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQzlDLENBQUM7QUFDSixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFFVCxNQUFNLFVBQVUsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0QsU0FBUztJQUNULEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQztDQUN6QixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFjLEVBQUUsRUFBRSxDQUN6QyxRQUFRLENBQ04sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUMxRTtJQUNFLGVBQWUsRUFBRSxFQUFFO0NBQ3BCLENBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzb24yY3N2IH0gZnJvbSAnanNvbi0yLWNzdic7XG5cbmV4cG9ydCBlbnVtIExldmVsIHtcbiAgZGVidWcgPSAnREVCVUcnLFxuICBpbmZvID0gJ0lORk8nLFxuICB3YXJuaW5nID0gJ1dBUk5JTkcnLFxuICBlcnJvciA9ICdFUlJPUidcbn1cblxuZXhwb3J0IGNvbnN0IGxldmVscyA9IE9iamVjdC52YWx1ZXMoTGV2ZWwpO1xuXG5leHBvcnQgaW50ZXJmYWNlIElMaW5lIHtcbiAgY29kZTogc3RyaW5nO1xuICBkYXRhOiBhbnk7XG4gIGNsYXNzOiBzdHJpbmc7XG4gIGxldmVsOiBMZXZlbDtcbn1cblxuY29uc3QgcGFyc2VMaW5lID0gKHRleHQ6IHN0cmluZykgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKHRleHQpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4geyBsZXZlbDogTGV2ZWwuZGVidWcgfTtcbiAgfVxufTtcblxuY29uc3QgbGV2ZWxUb0NsYXNzID0ge1xuICBbTGV2ZWwuZGVidWddOiAnaGFzLXRleHQtaW5mbycsXG4gIFtMZXZlbC5lcnJvcl06ICdoYXMtdGV4dC1kYW5nZXInLFxuICBbTGV2ZWwuaW5mb106ICcnLFxuICBbTGV2ZWwud2FybmluZ106ICdoYXMtdGV4dC13YXJuaW5nJ1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlRGF0YSA9IChkYXRhOiBhbnkpID0+XG4gICh7XG4gICAgY29kZTogSlNPTi5zdHJpbmdpZnkoZGF0YSksXG4gICAgZGF0YSxcbiAgICBjbGFzczogbGV2ZWxUb0NsYXNzW2RhdGEubGV2ZWxdLFxuICAgIGxldmVsOiBkYXRhLmxldmVsXG4gIH0pIGFzIElMaW5lO1xuXG5leHBvcnQgY29uc3QgcGFyc2VMaW5lcyA9ICh0ZXh0OiBhbnkpID0+XG4gIHR5cGVvZiB0ZXh0ID09PSAnc3RyaW5nJ1xuICAgID8gKHRleHQgfHwgJycpLnRyaW0oKS5zcGxpdCgnXFxuJykuZmlsdGVyKEJvb2xlYW4pLm1hcChwYXJzZUxpbmUpLm1hcChwYXJzZURhdGEpXG4gICAgOiBbcGFyc2VEYXRhKHRleHQpXTtcblxuY29uc3QgY3N2S2V5ID0gKGtleTogc3RyaW5nKSA9PlxuICAoXG4gICAgKHtcbiAgICAgIGtleTogJ2tleS90ZXJtJyxcbiAgICAgIHRlcm06ICdrZXkvdGVybScsXG4gICAgICB0aW1lOiAnJyxcbiAgICAgIHVuaXQ6ICcnXG4gICAgfSlba2V5XSB8fCBrZXlcbiAgKS50cmltKCk7XG5cbmNvbnN0IGNzdlZhbHVlID0gKHZhbHVlOiBzdHJpbmcpID0+ICh2YWx1ZSB8fCAnJykucmVwbGFjZSgnWycsICcnKS5yZXBsYWNlKCddJywgJycpLnRyaW0oKTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlTWVzc2FnZSA9IChtZXNzYWdlOiBzdHJpbmcpID0+XG4gIG1lc3NhZ2Uuc3BsaXQoJywnKS5yZWR1Y2UoKHByZXYsIHBhcnRzKSA9PiB7XG4gICAgY29uc3QgW2tleSwgdmFsdWVdID0gcGFydHMuc3BsaXQoJz0nKTtcbiAgICBjb25zdCB2YWwgPSBjc3ZWYWx1ZSh2YWx1ZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnByZXYsXG4gICAgICAuLi4oa2V5ICYmIHZhbCA/IHsgW2NzdktleShrZXkpXTogdmFsIH0gOiB7fSlcbiAgICB9O1xuICB9LCB7fSk7XG5cbmNvbnN0IGZvcm1hdExpbmUgPSAoeyBkYXRhOiB7IHRpbWVzdGFtcCwgbWVzc2FnZSB9IH06IElMaW5lKSA9PiAoe1xuICB0aW1lc3RhbXAsXG4gIC4uLnBhcnNlTWVzc2FnZShtZXNzYWdlKVxufSk7XG5cbmV4cG9ydCBjb25zdCBsb2dUb0NzdiA9IChsaW5lczogSUxpbmVbXSkgPT5cbiAganNvbjJjc3YoXG4gICAgKGxpbmVzIHx8IFtdKS5tYXAoZm9ybWF0TGluZSkuZmlsdGVyKGRhdGEgPT4gT2JqZWN0LmtleXMoZGF0YSkubGVuZ3RoID4gMSksXG4gICAge1xuICAgICAgZW1wdHlGaWVsZFZhbHVlOiAnJ1xuICAgIH1cbiAgKTtcbiJdfQ==
|
|
@@ -4,7 +4,7 @@ import { catchError, delay, map, mergeMap, shareReplay } from 'rxjs/operators';
|
|
|
4
4
|
const loadMapUrl = 'https://maps.googleapis.com/maps/api/js';
|
|
5
5
|
const buildMapsUrl = (params) => Object.entries(params)
|
|
6
6
|
.filter(([_key, values]) => values.length)
|
|
7
|
-
.
|
|
7
|
+
.flatMap(([key, values]) => values.map(value => `${key}=${value}`))
|
|
8
8
|
.join('&');
|
|
9
9
|
export const HE_MAP_LOADED = new InjectionToken('Google Maps API Loaded');
|
|
10
10
|
/**
|
|
@@ -14,7 +14,7 @@ export const HE_MAP_LOADED = new InjectionToken('Google Maps API Loaded');
|
|
|
14
14
|
* imports: [HttpClientJsonpModule]
|
|
15
15
|
*
|
|
16
16
|
* // Inject in module
|
|
17
|
-
* providers: [{ provide: HE_MAP_LOADED, useFactory: loadMapApi(apiKey), deps: [HttpClient]} ]
|
|
17
|
+
* providers: [{ provide: HE_MAP_LOADED, useFactory: loadMapApi(apiKey), deps: [HttpClient] } ]
|
|
18
18
|
*
|
|
19
19
|
* // Inject in component
|
|
20
20
|
* constructor(@Inject(HE_MAP_LOADED) public mapLoaded$: Observable<boolean>) { }
|
|
@@ -158,4 +158,4 @@ export const polygonBounds = (polygon) => {
|
|
|
158
158
|
: [];
|
|
159
159
|
return paths.reduce((prev, curr) => prev.extend(curr), new google.maps.LatLngBounds());
|
|
160
160
|
};
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcy11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vbWFwcy11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRSxNQUFNLFVBQVUsR0FBRyx5Q0FBeUMsQ0FBQztBQUM3RCxNQUFNLFlBQVksR0FBRyxDQUFDLE1BQWdDLEVBQUUsRUFBRSxDQUN4RCxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztLQUNuQixNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztLQUN6QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0tBQ3BELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUVmLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBc0Isd0JBQXdCLENBQUMsQ0FBQztBQUUvRjs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQ3JCLENBQUMsTUFBYyxFQUFFLFNBQVMsR0FBRyxDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFLENBQzdELENBQUMsVUFBc0IsRUFBRSxFQUFFLENBQ3pCLEVBQUUsQ0FBQyxHQUFHLFVBQVUsSUFBSSxZQUFZLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENB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RSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxvQkFBb0I7UUFDbEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQ2xDLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FDaEY7UUFDSCxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFFeEYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsT0FBcUQsRUFBRSxFQUFFO0lBQ3JGLE1BQU0sS0FBSyxHQUFHLE9BQU87UUFDbkIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUNyRCxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7UUFDdkMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNQLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7QUFDekYsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZGVsYXksIG1hcCwgbWVyZ2VNYXAsIHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5jb25zdCBsb2FkTWFwVXJsID0gJ2h0dHBzOi8vbWFwcy5nb29nbGVhcGlzLmNvbS9tYXBzL2FwaS9qcyc7XG5jb25zdCBidWlsZE1hcHNVcmwgPSAocGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4pID0+XG4gIE9iamVjdC5lbnRyaWVzKHBhcmFtcylcbiAgICAuZmlsdGVyKChbX2tleSwgdmFsdWVzXSkgPT4gdmFsdWVzLmxlbmd0aClcbiAgICAubWFwKChba2V5LCB2YWx1ZXNdKSA9PiBgJHtrZXl9PSR7dmFsdWVzLmpvaW4oJywnKX1gKVxuICAgIC5qb2luKCcmJyk7XG5cbmV4cG9ydCBjb25zdCBIRV9NQVBfTE9BREVEID0gbmV3IEluamVjdGlvblRva2VuPE9ic2VydmFibGU8Ym9vbGVhbj4+KCdHb29nbGUgTWFwcyBBUEkgTG9hZGVkJyk7XG5cbi8qKlxuICogVXNhZ2U6XG4gKiBgYGBcbiAqIC8vIGltcG9ydCBIdHRwQ2xpZW50SnNvbnBNb2R1bGVcbiAqIGltcG9ydHM6IFtIdHRwQ2xpZW50SnNvbnBNb2R1bGVdXG4gKlxuICogLy8gSW5qZWN0IGluIG1vZHVsZVxuICogcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBIRV9NQVBfTE9BREVELCB1c2VGYWN0b3J5OiBsb2FkTWFwQXBpKGFwaUtleSksIGRlcHM6IFtIdHRwQ2xpZW50XX0gXVxuICpcbiAqIC8vIEluamVjdCBpbiBjb21wb25lbnRcbiAqIGNvbnN0cnVjdG9yKEBJbmplY3QoSEVfTUFQX0xPQURFRCkgcHVibGljIG1hcExvYWRlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4pIHsgfVxuICogYGBgXG4gKiBAcGFyYW0gYXBpS2V5XG4gKiBAcGFyYW0gbGlicmFyaWVzXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgY29uc3QgbG9hZE1hcEFwaSA9XG4gIChhcGlLZXk6IHN0cmluZywgbGlicmFyaWVzID0gWyd2aXN1YWxpemF0aW9uJywgJ2RyYXdpbmcnXSkgPT5cbiAgKGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpID0+XG4gICAgb2YoYCR7bG9hZE1hcFVybH0/JHtidWlsZE1hcHNVcmwoeyBrZXk6IFthcGlLZXldLCBsaWJyYXJpZXMgfSl9YCkucGlwZShcbiAgICAgIG1lcmdlTWFwKHVybCA9PiBodHRwQ2xpZW50Lmpzb25wKHVybCwgJ2NhbGxiYWNrJykpLFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgICAgIGRlbGF5KDEwMCksXG4gICAgICBtYXAoKCkgPT4gdHJ1ZSksXG4gICAgICBjYXRjaEVycm9yKGUgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgfSlcbiAgICApO1xuXG5leHBvcnQgY29uc3QgbG9jYXRpb25RdWVyeSA9IChib3VuZHM6IGdvb2dsZS5tYXBzLkxhdExuZ0JvdW5kcywgc2VhcmNoRmllbGQgPSAnbG9jYXRpb24nKSA9PiB7XG4gIGNvbnN0IHRvcFJpZ2h0ID0gYm91bmRzLmdldE5vcnRoRWFzdCgpO1xuICBjb25zdCBib3R0b21MZWZ0ID0gYm91bmRzLmdldFNvdXRoV2VzdCgpO1xuICByZXR1cm4ge1xuICAgIGdlb19ib3VuZGluZ19ib3g6IHtcbiAgICAgIFtzZWFyY2hGaWVsZF06IHtcbiAgICAgICAgdG9wX2xlZnQ6IHsgbGF0OiB0b3BSaWdodC5sYXQoKSwgbG9uOiBib3R0b21MZWZ0LmxuZygpIH0sXG4gICAgICAgIGJvdHRvbV9yaWdodDogeyBsYXQ6IGJvdHRvbUxlZnQubGF0KCksIGxvbjogdG9wUmlnaHQubG5nKCkgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaWxsQ29sb3IgPSAnIzE5Mzk1Nyc7XG5leHBvcnQgY29uc3Qgc3Ryb2tlQ29sb3IgPSAnIzBDMUIyOSc7XG5cbmV4cG9ydCBjb25zdCBmaWxsU3R5bGUgPSB7XG4gIGZpbGxDb2xvcixcbiAgZmlsbE9wYWNpdHk6IDAuNlxufTtcblxuZXhwb3J0IGNvbnN0IHN0cm9rZVN0eWxlID0ge1xuICBzdHJva2VDb2xvcixcbiAgc3Ryb2tlT3BhY2l0eTogMC42LFxuICBzdHJva2VXZWlnaHQ6IDFcbn07XG5cbmV4cG9ydCBjb25zdCBjbHVzdGVyZXJJbWFnZSA9ICdodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9leGFtcGxlcy9tYXJrZXJjbHVzdGVyZXIvbSc7XG5cbmNvbnN0IGdldENvb3JkaW5hdGVzRm9yUGVyY2VudCA9IChwZXJjZW50OiBudW1iZXIpID0+IHtcbiAgY29uc3QgeCA9IE1hdGguY29zKDIgKiBNYXRoLlBJICogcGVyY2VudCk7XG4gIGNvbnN0IHkgPSBNYXRoLnNpbigyICogTWF0aC5QSSAqIHBlcmNlbnQpO1xuICByZXR1cm4gW3gsIHldO1xufTtcblxuaW50ZXJmYWNlIElNYXJrZXJQaWVDb25maWcge1xuICBwZXJjZW50OiBudW1iZXI7XG4gIGNvbG9yOiBzdHJpbmc7XG59XG5cbmNvbnN0IHBpZVVybCA9IChjb25maWdzOiBJTWFya2VyUGllQ29uZmlnW10sIHNpemU6IG51bWJlcikgPT4ge1xuICBsZXQgY3VtdWxhdGl2ZVBlcmNlbnQgPSAwO1xuXG4gIHJldHVybiAoXG4gICAgJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGYtOCwnICtcbiAgICBlbmNvZGVVUklDb21wb25lbnQoXG4gICAgICBgXG4gICAgPHN2ZyB3aWR0aD1cIiR7c2l6ZX1cIiBoZWlnaHQ9XCIke3NpemV9XCIgdmlld0JveD1cIi0xIC0xIDIgMlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4ke2NvbmZpZ3NcbiAgICAgIC5tYXAoKHsgcGVyY2VudCwgY29sb3IgfSkgPT4ge1xuICAgICAgICBjb25zdCBbc3RhcnRYLCBzdGFydFldID0gZ2V0Q29vcmRpbmF0ZXNGb3JQZXJjZW50KGN1bXVsYXRpdmVQZXJjZW50KTtcbiAgICAgICAgY3VtdWxhdGl2ZVBlcmNlbnQgKz0gcGVyY2VudDtcbiAgICAgICAgY29uc3QgW2VuZFgsIGVuZFldID0gZ2V0Q29vcmRpbmF0ZXNGb3JQZXJjZW50KGN1bXVsYXRpdmVQZXJjZW50KTtcbiAgICAgICAgY29uc3QgbGFyZ2VBcmNGbGFnID0gcGVyY2VudCA+IDAuNSA/IDEgOiAwO1xuICAgICAgICBjb25zdCBwYXRoRGF0YSA9IFtcbiAgICAgICAgICBgTSAke3N0YXJ0WH0gJHtzdGFydFl9YCwgLy8gTW92ZVxuICAgICAgICAgIGBBIDEgMSAwICR7bGFyZ2VBcmNGbGFnfSAxICR7ZW5kWH0gJHtlbmRZfWAsIC8vIEFyY1xuICAgICAgICAgIGBMIDAgMGAgLy8gTGluZVxuICAgICAgICBdLmpvaW4oJyAnKTtcbiAgICAgICAgcmV0dXJuIGA8cGF0aCBmaWxsPVwiJHtjb2xvcn1cIiBkPVwiJHtwYXRoRGF0YX1cIj48L3BhdGg+YDtcbiAgICAgIH0pXG4gICAgICAuam9pbignJyl9PC9zdmc+XG4gIGAudHJpbSgpXG4gICAgKVxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IG1hcmtlclBpZSA9IChjb25maWdzOiBJTWFya2VyUGllQ29uZmlnW10sIHNpemUgPSA3KSA9PiAoe1xuICBhbmNob3I6IG5ldyBnb29nbGUubWFwcy5Qb2ludChzaXplIC8gMiwgc2l6ZSAvIDIpLFxuICB1cmw6IHBpZVVybChjb25maWdzLCBzaXplKSxcbiAgbGFiZWxPcmlnaW46IG5ldyBnb29nbGUubWFwcy5Qb2ludCgwLCAtMilcbn0pO1xuXG5leHBvcnQgY29uc3QgbWFya2VySWNvbiA9IChzY2FsZSA9IDcpOiBnb29nbGUubWFwcy5TeW1ib2wgPT4gKHtcbiAgcGF0aDogZ29vZ2xlLm1hcHMuU3ltYm9sUGF0aC5DSVJDTEUsXG4gIC4uLmZpbGxTdHlsZSxcbiAgLi4uc3Ryb2tlU3R5bGUsXG4gIHNjYWxlLFxuICBsYWJlbE9yaWdpbjogbmV3IGdvb2dsZS5tYXBzLlBvaW50KDAsIC0yKVxufSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1hcmtlciB7XG4gIHBvc2l0aW9uOiBnb29nbGUubWFwcy5MYXRMbmcgfCBnb29nbGUubWFwcy5MYXRMbmdMaXRlcmFsO1xuICBsYWJlbDogZ29vZ2xlLm1hcHMuTWFya2VyTGFiZWw7XG4gIGljb246IGdvb2dsZS5tYXBzLlN5bWJvbDtcbn1cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1hcmtlciA9IChcbiAgcG9zaXRpb24/OiBnb29nbGUubWFwcy5MYXRMbmcgfCBnb29nbGUubWFwcy5MYXRMbmdMaXRlcmFsLFxuICB0ZXh0ID0gJycsXG4gIGNvbG9yID0gZmlsbENvbG9yLFxuICBzY2FsZT86IG51bWJlclxuKTogSU1hcmtlciA9PlxuICBwb3NpdGlvbj8ubGF0ICYmIHBvc2l0aW9uPy5sbmdcbiAgICA/IHtcbiAgICAgICAgcG9zaXRpb24sXG4gICAgICAgIGxhYmVsOiB7IGNvbG9yLCB0ZXh0IH0sXG4gICAgICAgIGljb246IG1hcmtlckljb24oc2NhbGUpXG4gICAgICB9XG4gICAgOiB1bmRlZmluZWQ7XG5cbmludGVyZmFjZSBJUG9seWdvbiB7XG4gIHR5cGU6ICdQb2x5Z29uJztcbiAgY29vcmRpbmF0ZXM6IG51bWJlcltdW11bXTtcbn1cblxuaW50ZXJmYWNlIElNdWx0aVBvbHlnb24ge1xuICB0eXBlOiAnTXVsdGlQb2x5Z29uJztcbiAgY29vcmRpbmF0ZXM6IG51bWJlcltdW11bXTtcbn1cblxudHlwZSBnZW9tZXRyeSA9IElQb2x5Z29uIHwgSU11bHRpUG9seWdvbjtcblxuZXhwb3J0IGludGVyZmFjZSBJRmVhdHVyZSB7XG4gIHR5cGU6ICdGZWF0dXJlJztcbiAgcHJvcGVydGllczogYW55O1xuICBnZW9tZXRyeTogZ2VvbWV0cnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJztcbiAgZmVhdHVyZXM6IElGZWF0dXJlW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdlb21ldHJ5Q29sbGVjdGlvbiB7XG4gIHR5cGU6ICdHZW9tZXRyeUNvbGxlY3Rpb24nO1xuICBnZW9tZXRyaWVzOiBnZW9tZXRyeVtdO1xufVxuXG5leHBvcnQgdHlwZSBmZWF0dXJlID0gSUZlYXR1cmUgfCBJRmVhdHVyZUNvbGxlY3Rpb24gfCBJR2VvbWV0cnlDb2xsZWN0aW9uIHwgSVBvbHlnb24gfCBJTXVsdGlQb2x5Z29uO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEZlYXR1cmUgPSAoKTogSUZlYXR1cmUgPT4gKHtcbiAgdHlwZTogJ0ZlYXR1cmUnLFxuICBwcm9wZXJ0aWVzOiB7fSxcbiAgZ2VvbWV0cnk6IHtcbiAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgY29vcmRpbmF0ZXM6IFtdXG4gIH0gYXMgZ2VvbWV0cnlcbn0pO1xuXG5leHBvcnQgY29uc3QgcG9pbnRUb0Nvb3JkaW5hdGVzID0gKHBvaW50OiBnb29nbGUubWFwcy5MYXRMbmcpID0+IFtwb2ludC5sbmcoKSwgcG9pbnQubGF0KCldO1xuXG5leHBvcnQgY29uc3QgY29vcmRpbmF0ZXNUb1BvaW50ID0gKHZhbHVlczogKG51bWJlciB8IG51bWJlcltdKVtdKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWVzWzBdKVxuICAgICAgPyB2YWx1ZXMubWFwKCh2OiBhbnkpID0+IGNvb3JkaW5hdGVzVG9Qb2ludCh2KSlcbiAgICAgIDogKHZhbHVlcyBhcyBudW1iZXJbXSk/LnNvbWUoaXNOYU4pXG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IG5ldyBnb29nbGUubWFwcy5MYXRMbmcoKHZhbHVlcyBhcyBudW1iZXJbXSlbMV0sICh2YWx1ZXMgYXMgbnVtYmVyW10pWzBdKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBwb2x5Z29uVG9Db29yZGluYXRlcyA9IChwb2x5Z29uOiBnb29nbGUubWFwcy5Qb2x5Z29uKSA9PlxuICBwb2x5Z29uXG4gICAgLmdldFBhdGhzKClcbiAgICAuZ2V0QXJyYXkoKVxuICAgIC5tYXAocGF0aCA9PiB7XG4gICAgICBjb25zdCBwb2ludHMgPSBwYXRoLmdldEFycmF5KCk7XG4gICAgICByZXR1cm4gWy4uLnBvaW50cy5tYXAocG9pbnRUb0Nvb3JkaW5hdGVzKSwgcG9pbnRUb0Nvb3JkaW5hdGVzKHBvaW50c1swXSldO1xuICAgIH0pWzBdO1xuXG5leHBvcnQgaW50ZXJmYWNlIElQb2x5Z29uTWFwIHtcbiAgcGF0aHM6IGdvb2dsZS5tYXBzLk1WQ0FycmF5PGdvb2dsZS5tYXBzLk1WQ0FycmF5PGdvb2dsZS5tYXBzLkxhdExuZz4+O1xuICBvcHRpb25zOiBnb29nbGUubWFwcy5Qb2x5Z29uT3B0aW9ucztcbiAgaWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBwb2x5Z29uVG9NYXAgPSAocG9seWdvbjogZ29vZ2xlLm1hcHMuUG9seWdvbiwgY29sb3IgPSBzdHJva2VDb2xvcik6IElQb2x5Z29uTWFwID0+ICh7XG4gIHBhdGhzOiBwb2x5Z29uLmdldFBhdGhzKCksXG4gIG9wdGlvbnM6IHtcbiAgICAuLi5zdHJva2VTdHlsZSxcbiAgICBzdHJva2VDb2xvcjogY29sb3JcbiAgfVxufSk7XG5cbmNvbnN0IGNvb3JkaW5hdGVzVG9Qb2x5Z29uID0gKGNvb3JkaW5hdGVzOiBudW1iZXJbXVtdLCBjb2xvciA9IHN0cm9rZUNvbG9yKSA9PlxuICBuZXcgZ29vZ2xlLm1hcHMuUG9seWdvbih7XG4gICAgcGF0aHM6IGNvb3JkaW5hdGVzLm1hcChjb29yZGluYXRlc1RvUG9pbnQpLmZpbHRlcihCb29sZWFuKSxcbiAgICAuLi5zdHJva2VTdHlsZSxcbiAgICBzdHJva2VDb2xvcjogY29sb3JcbiAgfSk7XG5cbmNvbnN0IGdldENvb3JkaW5hdGVzID0gKGZlYXQ6IGZlYXR1cmUpID0+XG4gIGZlYXQudHlwZSA9PT0gJ1BvbHlnb24nIHx8IGZlYXQudHlwZSA9PT0gJ011bHRpUG9seWdvbidcbiAgICA/IGZlYXQuY29vcmRpbmF0ZXNcbiAgICA6IGZlYXQudHlwZSA9PT0gJ0ZlYXR1cmUnXG4gICAgICA/IGZlYXQuZ2VvbWV0cnk/LmNvb3JkaW5hdGVzXG4gICAgICA6IFtdO1xuXG5leHBvcnQgY29uc3QgYWRkUG9seWdvblRvRmVhdHVyZSA9IChmZWF0OiBmZWF0dXJlLCBwb2x5Z29uOiBnb29nbGUubWFwcy5Qb2x5Z29uKSA9PlxuICBmZWF0LnR5cGUgPT09ICdGZWF0dXJlQ29sbGVjdGlvbidcbiAgICA/IGZlYXQuZmVhdHVyZXMucHVzaChhZGRQb2x5Z29uVG9GZWF0dXJlKGRlZmF1bHRGZWF0dXJlKCksIHBvbHlnb24pKVxuICAgIDogZmVhdC50eXBlID09PSAnR2VvbWV0cnlDb2xsZWN0aW9uJ1xuICAgICAgPyBmZWF0Lmdlb21ldHJpZXMubWFwKGdlb21ldHJ5ID0+IChnZW9tZXRyeT8uY29vcmRpbmF0ZXMgfHwgW10pLnB1c2gocG9seWdvblRvQ29vcmRpbmF0ZXMocG9seWdvbikpKVxuICAgICAgOiAoZ2V0Q29vcmRpbmF0ZXMoZmVhdCkgfHwgW10pLnB1c2gocG9seWdvblRvQ29vcmRpbmF0ZXMocG9seWdvbikpO1xuXG5leHBvcnQgY29uc3QgcG9seWdvbnNGcm9tRmVhdHVyZSA9IChmZWF0OiBmZWF0dXJlLCBjb2xvcj86IHN0cmluZyk6IGdvb2dsZS5tYXBzLlBvbHlnb25bXSA9PlxuICBmZWF0LnR5cGUgPT09ICdGZWF0dXJlQ29sbGVjdGlvbidcbiAgICA/IGZlYXQuZmVhdHVyZXMuZmxhdE1hcCh2YWx1ZXMgPT4gcG9seWdvbnNGcm9tRmVhdHVyZSh2YWx1ZXMsIGNvbG9yKSlcbiAgICA6IGZlYXQudHlwZSA9PT0gJ0dlb21ldHJ5Q29sbGVjdGlvbidcbiAgICAgID8gZmVhdC5nZW9tZXRyaWVzPy5mbGF0TWFwKGdlb21ldHJ5ID0+XG4gICAgICAgICAgKGdlb21ldHJ5LmNvb3JkaW5hdGVzIHx8IFtdKS5tYXAodmFsdWVzID0+IGNvb3JkaW5hdGVzVG9Qb2x5Z29uKHZhbHVlcywgY29sb3IpKVxuICAgICAgICApXG4gICAgICA6IChnZXRDb29yZGluYXRlcyhmZWF0KSB8fCBbXSkubWFwKHZhbHVlcyA9PiBjb29yZGluYXRlc1RvUG9seWdvbih2YWx1ZXMsIGNvbG9yKSk7XG5cbmV4cG9ydCBjb25zdCBwb2x5Z29uQm91bmRzID0gKHBvbHlnb24/OiBnb29nbGUubWFwcy5Qb2x5Z29uIHwgZ29vZ2xlLm1hcHMuUG9seWdvbltdKSA9PiB7XG4gIGNvbnN0IHBhdGhzID0gcG9seWdvblxuICAgID8gQXJyYXkuaXNBcnJheShwb2x5Z29uKVxuICAgICAgPyBwb2x5Z29uLmZsYXRNYXAocCA9PiBwLmdldFBhdGgoKT8uZ2V0QXJyYXkoKSB8fCBbXSlcbiAgICAgIDogcG9seWdvbi5nZXRQYXRoKCk/LmdldEFycmF5KCkgfHwgW11cbiAgICA6IFtdO1xuICByZXR1cm4gcGF0aHMucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBwcmV2LmV4dGVuZChjdXJyKSwgbmV3IGdvb2dsZS5tYXBzLkxhdExuZ0JvdW5kcygpKTtcbn07XG4iXX0=
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcy11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vbWFwcy11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRSxNQUFNLFVBQVUsR0FBRyx5Q0FBeUMsQ0FBQztBQUM3RCxNQUFNLFlBQVksR0FBRyxDQUFDLE1BQWdDLEVBQUUsRUFBRSxDQUN4RCxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztLQUNuQixNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztLQUN6QyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDbEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRWYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksY0FBYyxDQUFzQix3QkFBd0IsQ0FBQyxDQUFDO0FBRS9GOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FDckIsQ0FBQyxNQUFjLEVBQUUsU0FBUyxHQUFHLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FDN0QsQ0FBQyxVQUFzQixFQUFFLEVBQUUsQ0FDekIsRUFBRSxDQUFDLEdBQUcsVUFBVSxJQUFJLFlBQVksQ0FBQyxFQUFFLEdB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Z3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWxheSwgbWFwLCBtZXJnZU1hcCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmNvbnN0IGxvYWRNYXBVcmwgPSAnaHR0cHM6Ly9tYXBzLmdvb2dsZWFwaXMuY29tL21hcHMvYXBpL2pzJztcbmNvbnN0IGJ1aWxkTWFwc1VybCA9IChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPikgPT5cbiAgT2JqZWN0LmVudHJpZXMocGFyYW1zKVxuICAgIC5maWx0ZXIoKFtfa2V5LCB2YWx1ZXNdKSA9PiB2YWx1ZXMubGVuZ3RoKVxuICAgIC5mbGF0TWFwKChba2V5LCB2YWx1ZXNdKSA9PiB2YWx1ZXMubWFwKHZhbHVlID0+IGAke2tleX09JHt2YWx1ZX1gKSlcbiAgICAuam9pbignJicpO1xuXG5leHBvcnQgY29uc3QgSEVfTUFQX0xPQURFRCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxPYnNlcnZhYmxlPGJvb2xlYW4+PignR29vZ2xlIE1hcHMgQVBJIExvYWRlZCcpO1xuXG4vKipcbiAqIFVzYWdlOlxuICogYGBgXG4gKiAvLyBpbXBvcnQgSHR0cENsaWVudEpzb25wTW9kdWxlXG4gKiBpbXBvcnRzOiBbSHR0cENsaWVudEpzb25wTW9kdWxlXVxuICpcbiAqIC8vIEluamVjdCBpbiBtb2R1bGVcbiAqIHByb3ZpZGVyczogW3sgcHJvdmlkZTogSEVfTUFQX0xPQURFRCwgdXNlRmFjdG9yeTogbG9hZE1hcEFwaShhcGlLZXkpLCBkZXBzOiBbSHR0cENsaWVudF0gfSBdXG4gKlxuICogLy8gSW5qZWN0IGluIGNvbXBvbmVudFxuICogY29uc3RydWN0b3IoQEluamVjdChIRV9NQVBfTE9BREVEKSBwdWJsaWMgbWFwTG9hZGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPikgeyB9XG4gKiBgYGBcbiAqIEBwYXJhbSBhcGlLZXlcbiAqIEBwYXJhbSBsaWJyYXJpZXNcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBjb25zdCBsb2FkTWFwQXBpID1cbiAgKGFwaUtleTogc3RyaW5nLCBsaWJyYXJpZXMgPSBbJ3Zpc3VhbGl6YXRpb24nLCAnZHJhd2luZyddKSA9PlxuICAoaHR0cENsaWVudDogSHR0cENsaWVudCkgPT5cbiAgICBvZihgJHtsb2FkTWFwVXJsfT8ke2J1aWxkTWFwc1VybCh7IGtleTogW2FwaUtleV0sIGxpYnJhcmllcyB9KX1gKS5waXBlKFxuICAgICAgbWVyZ2VNYXAodXJsID0+IGh0dHBDbGllbnQuanNvbnAodXJsLCAnY2FsbGJhY2snKSksXG4gICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pLFxuICAgICAgZGVsYXkoMTAwKSxcbiAgICAgIG1hcCgoKSA9PiB0cnVlKSxcbiAgICAgIGNhdGNoRXJyb3IoZSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICB9KVxuICAgICk7XG5cbmV4cG9ydCBjb25zdCBsb2NhdGlvblF1ZXJ5ID0gKGJvdW5kczogZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzLCBzZWFyY2hGaWVsZCA9ICdsb2NhdGlvbicpID0+IHtcbiAgY29uc3QgdG9wUmlnaHQgPSBib3VuZHMuZ2V0Tm9ydGhFYXN0KCk7XG4gIGNvbnN0IGJvdHRvbUxlZnQgPSBib3VuZHMuZ2V0U291dGhXZXN0KCk7XG4gIHJldHVybiB7XG4gICAgZ2VvX2JvdW5kaW5nX2JveDoge1xuICAgICAgW3NlYXJjaEZpZWxkXToge1xuICAgICAgICB0b3BfbGVmdDogeyBsYXQ6IHRvcFJpZ2h0LmxhdCgpLCBsb246IGJvdHRvbUxlZnQubG5nKCkgfSxcbiAgICAgICAgYm90dG9tX3JpZ2h0OiB7IGxhdDogYm90dG9tTGVmdC5sYXQoKSwgbG9uOiB0b3BSaWdodC5sbmcoKSB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbGxDb2xvciA9ICcjMTkzOTU3JztcbmV4cG9ydCBjb25zdCBzdHJva2VDb2xvciA9ICcjMEMxQjI5JztcblxuZXhwb3J0IGNvbnN0IGZpbGxTdHlsZSA9IHtcbiAgZmlsbENvbG9yLFxuICBmaWxsT3BhY2l0eTogMC42XG59O1xuXG5leHBvcnQgY29uc3Qgc3Ryb2tlU3R5bGUgPSB7XG4gIHN0cm9rZUNvbG9yLFxuICBzdHJva2VPcGFjaXR5OiAwLjYsXG4gIHN0cm9rZVdlaWdodDogMVxufTtcblxuZXhwb3J0IGNvbnN0IGNsdXN0ZXJlckltYWdlID0gJ2h0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L2V4YW1wbGVzL21hcmtlcmNsdXN0ZXJlci9tJztcblxuY29uc3QgZ2V0Q29vcmRpbmF0ZXNGb3JQZXJjZW50ID0gKHBlcmNlbnQ6IG51bWJlcikgPT4ge1xuICBjb25zdCB4ID0gTWF0aC5jb3MoMiAqIE1hdGguUEkgKiBwZXJjZW50KTtcbiAgY29uc3QgeSA9IE1hdGguc2luKDIgKiBNYXRoLlBJICogcGVyY2VudCk7XG4gIHJldHVybiBbeCwgeV07XG59O1xuXG5pbnRlcmZhY2UgSU1hcmtlclBpZUNvbmZpZyB7XG4gIHBlcmNlbnQ6IG51bWJlcjtcbiAgY29sb3I6IHN0cmluZztcbn1cblxuY29uc3QgcGllVXJsID0gKGNvbmZpZ3M6IElNYXJrZXJQaWVDb25maWdbXSwgc2l6ZTogbnVtYmVyKSA9PiB7XG4gIGxldCBjdW11bGF0aXZlUGVyY2VudCA9IDA7XG5cbiAgcmV0dXJuIChcbiAgICAnZGF0YTppbWFnZS9zdmcreG1sO3V0Zi04LCcgK1xuICAgIGVuY29kZVVSSUNvbXBvbmVudChcbiAgICAgIGBcbiAgICA8c3ZnIHdpZHRoPVwiJHtzaXplfVwiIGhlaWdodD1cIiR7c2l6ZX1cIiB2aWV3Qm94PVwiLTEgLTEgMiAyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPiR7Y29uZmlnc1xuICAgICAgLm1hcCgoeyBwZXJjZW50LCBjb2xvciB9KSA9PiB7XG4gICAgICAgIGNvbnN0IFtzdGFydFgsIHN0YXJ0WV0gPSBnZXRDb29yZGluYXRlc0ZvclBlcmNlbnQoY3VtdWxhdGl2ZVBlcmNlbnQpO1xuICAgICAgICBjdW11bGF0aXZlUGVyY2VudCArPSBwZXJjZW50O1xuICAgICAgICBjb25zdCBbZW5kWCwgZW5kWV0gPSBnZXRDb29yZGluYXRlc0ZvclBlcmNlbnQoY3VtdWxhdGl2ZVBlcmNlbnQpO1xuICAgICAgICBjb25zdCBsYXJnZUFyY0ZsYWcgPSBwZXJjZW50ID4gMC41ID8gMSA6IDA7XG4gICAgICAgIGNvbnN0IHBhdGhEYXRhID0gW1xuICAgICAgICAgIGBNICR7c3RhcnRYfSAke3N0YXJ0WX1gLCAvLyBNb3ZlXG4gICAgICAgICAgYEEgMSAxIDAgJHtsYXJnZUFyY0ZsYWd9IDEgJHtlbmRYfSAke2VuZFl9YCwgLy8gQXJjXG4gICAgICAgICAgYEwgMCAwYCAvLyBMaW5lXG4gICAgICAgIF0uam9pbignICcpO1xuICAgICAgICByZXR1cm4gYDxwYXRoIGZpbGw9XCIke2NvbG9yfVwiIGQ9XCIke3BhdGhEYXRhfVwiPjwvcGF0aD5gO1xuICAgICAgfSlcbiAgICAgIC5qb2luKCcnKX08L3N2Zz5cbiAgYC50cmltKClcbiAgICApXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgbWFya2VyUGllID0gKGNvbmZpZ3M6IElNYXJrZXJQaWVDb25maWdbXSwgc2l6ZSA9IDcpID0+ICh7XG4gIGFuY2hvcjogbmV3IGdvb2dsZS5tYXBzLlBvaW50KHNpemUgLyAyLCBzaXplIC8gMiksXG4gIHVybDogcGllVXJsKGNvbmZpZ3MsIHNpemUpLFxuICBsYWJlbE9yaWdpbjogbmV3IGdvb2dsZS5tYXBzLlBvaW50KDAsIC0yKVxufSk7XG5cbmV4cG9ydCBjb25zdCBtYXJrZXJJY29uID0gKHNjYWxlID0gNyk6IGdvb2dsZS5tYXBzLlN5bWJvbCA9PiAoe1xuICBwYXRoOiBnb29nbGUubWFwcy5TeW1ib2xQYXRoLkNJUkNMRSxcbiAgLi4uZmlsbFN0eWxlLFxuICAuLi5zdHJva2VTdHlsZSxcbiAgc2NhbGUsXG4gIGxhYmVsT3JpZ2luOiBuZXcgZ29vZ2xlLm1hcHMuUG9pbnQoMCwgLTIpXG59KTtcblxuZXhwb3J0IGludGVyZmFjZSBJTWFya2VyIHtcbiAgcG9zaXRpb246IGdvb2dsZS5tYXBzLkxhdExuZyB8IGdvb2dsZS5tYXBzLkxhdExuZ0xpdGVyYWw7XG4gIGxhYmVsOiBnb29nbGUubWFwcy5NYXJrZXJMYWJlbDtcbiAgaWNvbjogZ29vZ2xlLm1hcHMuU3ltYm9sO1xufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlTWFya2VyID0gKFxuICBwb3NpdGlvbj86IGdvb2dsZS5tYXBzLkxhdExuZyB8IGdvb2dsZS5tYXBzLkxhdExuZ0xpdGVyYWwsXG4gIHRleHQgPSAnJyxcbiAgY29sb3IgPSBmaWxsQ29sb3IsXG4gIHNjYWxlPzogbnVtYmVyXG4pOiBJTWFya2VyID0+XG4gIHBvc2l0aW9uPy5sYXQgJiYgcG9zaXRpb24/LmxuZ1xuICAgID8ge1xuICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgbGFiZWw6IHsgY29sb3IsIHRleHQgfSxcbiAgICAgICAgaWNvbjogbWFya2VySWNvbihzY2FsZSlcbiAgICAgIH1cbiAgICA6IHVuZGVmaW5lZDtcblxuaW50ZXJmYWNlIElQb2x5Z29uIHtcbiAgdHlwZTogJ1BvbHlnb24nO1xuICBjb29yZGluYXRlczogbnVtYmVyW11bXVtdO1xufVxuXG5pbnRlcmZhY2UgSU11bHRpUG9seWdvbiB7XG4gIHR5cGU6ICdNdWx0aVBvbHlnb24nO1xuICBjb29yZGluYXRlczogbnVtYmVyW11bXVtdO1xufVxuXG50eXBlIGdlb21ldHJ5ID0gSVBvbHlnb24gfCBJTXVsdGlQb2x5Z29uO1xuXG5leHBvcnQgaW50ZXJmYWNlIElGZWF0dXJlIHtcbiAgdHlwZTogJ0ZlYXR1cmUnO1xuICBwcm9wZXJ0aWVzOiBhbnk7XG4gIGdlb21ldHJ5OiBnZW9tZXRyeTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRmVhdHVyZUNvbGxlY3Rpb24ge1xuICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nO1xuICBmZWF0dXJlczogSUZlYXR1cmVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR2VvbWV0cnlDb2xsZWN0aW9uIHtcbiAgdHlwZTogJ0dlb21ldHJ5Q29sbGVjdGlvbic7XG4gIGdlb21ldHJpZXM6IGdlb21ldHJ5W107XG59XG5cbmV4cG9ydCB0eXBlIGZlYXR1cmUgPSBJRmVhdHVyZSB8IElGZWF0dXJlQ29sbGVjdGlvbiB8IElHZW9tZXRyeUNvbGxlY3Rpb24gfCBJUG9seWdvbiB8IElNdWx0aVBvbHlnb247XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0RmVhdHVyZSA9ICgpOiBJRmVhdHVyZSA9PiAoe1xuICB0eXBlOiAnRmVhdHVyZScsXG4gIHByb3BlcnRpZXM6IHt9LFxuICBnZW9tZXRyeToge1xuICAgIHR5cGU6ICdQb2x5Z29uJyxcbiAgICBjb29yZGluYXRlczogW11cbiAgfSBhcyBnZW9tZXRyeVxufSk7XG5cbmV4cG9ydCBjb25zdCBwb2ludFRvQ29vcmRpbmF0ZXMgPSAocG9pbnQ6IGdvb2dsZS5tYXBzLkxhdExuZykgPT4gW3BvaW50LmxuZygpLCBwb2ludC5sYXQoKV07XG5cbmV4cG9ydCBjb25zdCBjb29yZGluYXRlc1RvUG9pbnQgPSAodmFsdWVzOiAobnVtYmVyIHwgbnVtYmVyW10pW10pID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZXNbMF0pXG4gICAgICA/IHZhbHVlcy5tYXAoKHY6IGFueSkgPT4gY29vcmRpbmF0ZXNUb1BvaW50KHYpKVxuICAgICAgOiAodmFsdWVzIGFzIG51bWJlcltdKT8uc29tZShpc05hTilcbiAgICAgICAgPyBudWxsXG4gICAgICAgIDogbmV3IGdvb2dsZS5tYXBzLkxhdExuZygodmFsdWVzIGFzIG51bWJlcltdKVsxXSwgKHZhbHVlcyBhcyBudW1iZXJbXSlbMF0pO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHBvbHlnb25Ub0Nvb3JkaW5hdGVzID0gKHBvbHlnb246IGdvb2dsZS5tYXBzLlBvbHlnb24pID0+XG4gIHBvbHlnb25cbiAgICAuZ2V0UGF0aHMoKVxuICAgIC5nZXRBcnJheSgpXG4gICAgLm1hcChwYXRoID0+IHtcbiAgICAgIGNvbnN0IHBvaW50cyA9IHBhdGguZ2V0QXJyYXkoKTtcbiAgICAgIHJldHVybiBbLi4ucG9pbnRzLm1hcChwb2ludFRvQ29vcmRpbmF0ZXMpLCBwb2ludFRvQ29vcmRpbmF0ZXMocG9pbnRzWzBdKV07XG4gICAgfSlbMF07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBvbHlnb25NYXAge1xuICBwYXRoczogZ29vZ2xlLm1hcHMuTVZDQXJyYXk8Z29vZ2xlLm1hcHMuTVZDQXJyYXk8Z29vZ2xlLm1hcHMuTGF0TG5nPj47XG4gIG9wdGlvbnM6IGdvb2dsZS5tYXBzLlBvbHlnb25PcHRpb25zO1xuICBpZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IHBvbHlnb25Ub01hcCA9IChwb2x5Z29uOiBnb29nbGUubWFwcy5Qb2x5Z29uLCBjb2xvciA9IHN0cm9rZUNvbG9yKTogSVBvbHlnb25NYXAgPT4gKHtcbiAgcGF0aHM6IHBvbHlnb24uZ2V0UGF0aHMoKSxcbiAgb3B0aW9uczoge1xuICAgIC4uLnN0cm9rZVN0eWxlLFxuICAgIHN0cm9rZUNvbG9yOiBjb2xvclxuICB9XG59KTtcblxuY29uc3QgY29vcmRpbmF0ZXNUb1BvbHlnb24gPSAoY29vcmRpbmF0ZXM6IG51bWJlcltdW10sIGNvbG9yID0gc3Ryb2tlQ29sb3IpID0+XG4gIG5ldyBnb29nbGUubWFwcy5Qb2x5Z29uKHtcbiAgICBwYXRoczogY29vcmRpbmF0ZXMubWFwKGNvb3JkaW5hdGVzVG9Qb2ludCkuZmlsdGVyKEJvb2xlYW4pLFxuICAgIC4uLnN0cm9rZVN0eWxlLFxuICAgIHN0cm9rZUNvbG9yOiBjb2xvclxuICB9KTtcblxuY29uc3QgZ2V0Q29vcmRpbmF0ZXMgPSAoZmVhdDogZmVhdHVyZSkgPT5cbiAgZmVhdC50eXBlID09PSAnUG9seWdvbicgfHwgZmVhdC50eXBlID09PSAnTXVsdGlQb2x5Z29uJ1xuICAgID8gZmVhdC5jb29yZGluYXRlc1xuICAgIDogZmVhdC50eXBlID09PSAnRmVhdHVyZSdcbiAgICAgID8gZmVhdC5nZW9tZXRyeT8uY29vcmRpbmF0ZXNcbiAgICAgIDogW107XG5cbmV4cG9ydCBjb25zdCBhZGRQb2x5Z29uVG9GZWF0dXJlID0gKGZlYXQ6IGZlYXR1cmUsIHBvbHlnb246IGdvb2dsZS5tYXBzLlBvbHlnb24pID0+XG4gIGZlYXQudHlwZSA9PT0gJ0ZlYXR1cmVDb2xsZWN0aW9uJ1xuICAgID8gZmVhdC5mZWF0dXJlcy5wdXNoKGFkZFBvbHlnb25Ub0ZlYXR1cmUoZGVmYXVsdEZlYXR1cmUoKSwgcG9seWdvbikpXG4gICAgOiBmZWF0LnR5cGUgPT09ICdHZW9tZXRyeUNvbGxlY3Rpb24nXG4gICAgICA/IGZlYXQuZ2VvbWV0cmllcy5tYXAoZ2VvbWV0cnkgPT4gKGdlb21ldHJ5Py5jb29yZGluYXRlcyB8fCBbXSkucHVzaChwb2x5Z29uVG9Db29yZGluYXRlcyhwb2x5Z29uKSkpXG4gICAgICA6IChnZXRDb29yZGluYXRlcyhmZWF0KSB8fCBbXSkucHVzaChwb2x5Z29uVG9Db29yZGluYXRlcyhwb2x5Z29uKSk7XG5cbmV4cG9ydCBjb25zdCBwb2x5Z29uc0Zyb21GZWF0dXJlID0gKGZlYXQ6IGZlYXR1cmUsIGNvbG9yPzogc3RyaW5nKTogZ29vZ2xlLm1hcHMuUG9seWdvbltdID0+XG4gIGZlYXQudHlwZSA9PT0gJ0ZlYXR1cmVDb2xsZWN0aW9uJ1xuICAgID8gZmVhdC5mZWF0dXJlcy5mbGF0TWFwKHZhbHVlcyA9PiBwb2x5Z29uc0Zyb21GZWF0dXJlKHZhbHVlcywgY29sb3IpKVxuICAgIDogZmVhdC50eXBlID09PSAnR2VvbWV0cnlDb2xsZWN0aW9uJ1xuICAgICAgPyBmZWF0Lmdlb21ldHJpZXM/LmZsYXRNYXAoZ2VvbWV0cnkgPT5cbiAgICAgICAgICAoZ2VvbWV0cnkuY29vcmRpbmF0ZXMgfHwgW10pLm1hcCh2YWx1ZXMgPT4gY29vcmRpbmF0ZXNUb1BvbHlnb24odmFsdWVzLCBjb2xvcikpXG4gICAgICAgIClcbiAgICAgIDogKGdldENvb3JkaW5hdGVzKGZlYXQpIHx8IFtdKS5tYXAodmFsdWVzID0+IGNvb3JkaW5hdGVzVG9Qb2x5Z29uKHZhbHVlcywgY29sb3IpKTtcblxuZXhwb3J0IGNvbnN0IHBvbHlnb25Cb3VuZHMgPSAocG9seWdvbj86IGdvb2dsZS5tYXBzLlBvbHlnb24gfCBnb29nbGUubWFwcy5Qb2x5Z29uW10pID0+IHtcbiAgY29uc3QgcGF0aHMgPSBwb2x5Z29uXG4gICAgPyBBcnJheS5pc0FycmF5KHBvbHlnb24pXG4gICAgICA/IHBvbHlnb24uZmxhdE1hcChwID0+IHAuZ2V0UGF0aCgpPy5nZXRBcnJheSgpIHx8IFtdKVxuICAgICAgOiBwb2x5Z29uLmdldFBhdGgoKT8uZ2V0QXJyYXkoKSB8fCBbXVxuICAgIDogW107XG4gIHJldHVybiBwYXRocy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHByZXYuZXh0ZW5kKGN1cnIpLCBuZXcgZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzKCkpO1xufTtcbiJdfQ==
|