@hestia-earth/ui-components 0.9.0 → 0.9.2
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/common.light.module.d.ts +13 -11
- package/common/compound.d.ts +7 -0
- package/common/compound.directive.d.ts +10 -0
- package/common/compound.pipe.d.ts +7 -0
- package/common/ellipsis.pipe.d.ts +1 -1
- package/common/index.d.ts +4 -1
- package/common/pluralize.pipe.d.ts +1 -1
- package/esm2020/common/common.light.module.mjs +9 -1
- package/esm2020/common/compound.directive.mjs +22 -0
- package/esm2020/common/compound.mjs +12 -0
- package/esm2020/common/compound.pipe.mjs +17 -0
- package/esm2020/common/ellipsis.pipe.mjs +1 -1
- package/esm2020/common/index.mjs +5 -2
- package/esm2020/common/pluralize.pipe.mjs +1 -1
- package/esm2020/cycles/cycles-activity/cycles-activity.component.mjs +7 -6
- package/esm2020/cycles/cycles-emissions/cycles-emissions.component.mjs +8 -7
- package/esm2020/cycles/cycles-practices/cycles-practices.component.mjs +7 -6
- package/esm2020/cycles/cycles-practices-timeline/cycles-practices-timeline.component.mjs +5 -4
- package/esm2020/engine/engine.service.mjs +5 -2
- package/esm2020/files/files-error.model.mjs +4 -2
- package/esm2020/impact-assessments/impact-assessments-products/impact-assessments-products.component.mjs +14 -7
- package/esm2020/node/node-logs-models/node-logs-models.component.mjs +14 -12
- package/esm2020/node/node-logs-models/node-logs-models.model.mjs +1 -1
- package/esm2020/sites/sites-measurements/sites-measurements.component.mjs +7 -6
- package/fesm2015/hestia-earth-ui-components.mjs +82 -19
- package/fesm2015/hestia-earth-ui-components.mjs.map +1 -1
- package/fesm2020/hestia-earth-ui-components.mjs +82 -19
- package/fesm2020/hestia-earth-ui-components.mjs.map +1 -1
- package/impact-assessments/impact-assessments-products/impact-assessments-products.component.d.ts +1 -0
- package/node/node-logs-models/node-logs-models.model.d.ts +2 -2
- package/package.json +1 -1
|
@@ -4,18 +4,20 @@ import * as i2 from "./social-tags/social-tags.component";
|
|
|
4
4
|
import * as i3 from "./toast/toast.component";
|
|
5
5
|
import * as i4 from "./bind-once.directive";
|
|
6
6
|
import * as i5 from "./click-outside.directive";
|
|
7
|
-
import * as i6 from "./
|
|
8
|
-
import * as i7 from "./
|
|
9
|
-
import * as i8 from "./
|
|
10
|
-
import * as i9 from "./
|
|
11
|
-
import * as i10 from "./
|
|
12
|
-
import * as i11 from "./
|
|
13
|
-
import * as i12 from "
|
|
14
|
-
import * as i13 from "
|
|
15
|
-
import * as i14 from "@angular/
|
|
16
|
-
import * as i15 from "
|
|
7
|
+
import * as i6 from "./compound.directive";
|
|
8
|
+
import * as i7 from "./compound.pipe";
|
|
9
|
+
import * as i8 from "./default.pipe";
|
|
10
|
+
import * as i9 from "./ellipsis.pipe";
|
|
11
|
+
import * as i10 from "./keys.pipe";
|
|
12
|
+
import * as i11 from "./pluralize.pipe";
|
|
13
|
+
import * as i12 from "./key-to-label.pipe";
|
|
14
|
+
import * as i13 from "./precision.pipe";
|
|
15
|
+
import * as i14 from "@angular/common";
|
|
16
|
+
import * as i15 from "@angular/forms";
|
|
17
|
+
import * as i16 from "@angular/router";
|
|
18
|
+
import * as i17 from "../fontawesome/fontawesome.module";
|
|
17
19
|
export declare class HeCommonLightModule {
|
|
18
20
|
static ɵfac: i0.ɵɵFactoryDeclaration<HeCommonLightModule, never>;
|
|
19
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<HeCommonLightModule, [typeof i1.IssueConfirmComponent, typeof i2.SocialTagsComponent, typeof i3.ToastComponent, typeof i4.BindOnceDirective, typeof i5.ClickOutsideDirective, typeof i6.
|
|
21
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<HeCommonLightModule, [typeof i1.IssueConfirmComponent, typeof i2.SocialTagsComponent, typeof i3.ToastComponent, typeof i4.BindOnceDirective, typeof i5.ClickOutsideDirective, typeof i6.CompoundDirective, typeof i7.CompoundPipe, typeof i8.DefaultPipe, typeof i9.EllipsisPipe, typeof i10.KeysPipe, typeof i11.PluralizePipe, typeof i12.KeyToLabelPipe, typeof i13.PrecisionPipe], [typeof i14.CommonModule, typeof i15.FormsModule, typeof i16.RouterModule, typeof i17.HeFontawesomeModule], [typeof i17.HeFontawesomeModule, typeof i1.IssueConfirmComponent, typeof i2.SocialTagsComponent, typeof i3.ToastComponent, typeof i4.BindOnceDirective, typeof i5.ClickOutsideDirective, typeof i6.CompoundDirective, typeof i7.CompoundPipe, typeof i8.DefaultPipe, typeof i9.EllipsisPipe, typeof i10.KeysPipe, typeof i11.PluralizePipe, typeof i12.KeyToLabelPipe, typeof i13.PrecisionPipe]>;
|
|
20
22
|
static ɵinj: i0.ɵɵInjectorDeclaration<HeCommonLightModule>;
|
|
21
23
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ElementRef, OnChanges } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class CompoundDirective implements OnChanges {
|
|
4
|
+
private elementRef;
|
|
5
|
+
private appCompound;
|
|
6
|
+
constructor(elementRef: ElementRef);
|
|
7
|
+
ngOnChanges(): void;
|
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CompoundDirective, never>;
|
|
9
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<CompoundDirective, "[appCompound]", never, { "appCompound": "appCompound"; }, {}, never, never, false>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { PipeTransform } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class CompoundPipe implements PipeTransform {
|
|
4
|
+
transform(value: string): string;
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CompoundPipe, never>;
|
|
6
|
+
static ɵpipe: i0.ɵɵPipeDeclaration<CompoundPipe, "compound", false>;
|
|
7
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PipeTransform } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export declare class EllipsisPipe implements PipeTransform {
|
|
4
|
-
transform(value: any, maxLength?: number):
|
|
4
|
+
transform(value: any, maxLength?: number): string;
|
|
5
5
|
static ɵfac: i0.ɵɵFactoryDeclaration<EllipsisPipe, never>;
|
|
6
6
|
static ɵpipe: i0.ɵɵPipeDeclaration<EllipsisPipe, "ellipsis", false>;
|
|
7
7
|
}
|
package/common/index.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
export * from './common.light.module';
|
|
2
2
|
export * from './common.module';
|
|
3
3
|
export * from './common.service';
|
|
4
|
+
export * from './compound';
|
|
4
5
|
export * from './toast.service';
|
|
5
6
|
export * from './delta-utils';
|
|
6
7
|
export * from './logs-utils';
|
|
7
8
|
export * from './maps-utils';
|
|
9
|
+
export * from './pluralize';
|
|
8
10
|
export * from './utils';
|
|
9
|
-
export { pluralize } from './pluralize';
|
|
10
11
|
export { BlankNodeStateComponent } from './blank-node-state/blank-node-state.component';
|
|
11
12
|
export { BlankNodeStateNoticeComponent } from './blank-node-state-notice/blank-node-state-notice.component';
|
|
12
13
|
export { BlankNodeValueDeltaComponent } from './blank-node-value-delta/blank-node-value-delta.component';
|
|
@@ -24,6 +25,8 @@ export { ToastComponent } from './toast/toast.component';
|
|
|
24
25
|
export { UnitConverterComponent } from './unit-converter/unit-converter.component';
|
|
25
26
|
export { BindOnceDirective } from './bind-once.directive';
|
|
26
27
|
export { ClickOutsideDirective } from './click-outside.directive';
|
|
28
|
+
export { CompoundDirective } from './compound.directive';
|
|
29
|
+
export { CompoundPipe } from './compound.pipe';
|
|
27
30
|
export { DefaultPipe } from './default.pipe';
|
|
28
31
|
export { EllipsisPipe } from './ellipsis.pipe';
|
|
29
32
|
export { GetPipe } from './get.pipe';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PipeTransform } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export declare class PluralizePipe implements PipeTransform {
|
|
4
|
-
transform(value: string, times?: number):
|
|
4
|
+
transform(value: string, times?: number): string;
|
|
5
5
|
static ɵfac: i0.ɵɵFactoryDeclaration<PluralizePipe, never>;
|
|
6
6
|
static ɵpipe: i0.ɵɵPipeDeclaration<PluralizePipe, "pluralize", false>;
|
|
7
7
|
}
|
|
@@ -8,6 +8,8 @@ import { SocialTagsComponent } from './social-tags/social-tags.component';
|
|
|
8
8
|
import { ToastComponent } from './toast/toast.component';
|
|
9
9
|
import { BindOnceDirective } from './bind-once.directive';
|
|
10
10
|
import { ClickOutsideDirective } from './click-outside.directive';
|
|
11
|
+
import { CompoundDirective } from './compound.directive';
|
|
12
|
+
import { CompoundPipe } from './compound.pipe';
|
|
11
13
|
import { DefaultPipe } from './default.pipe';
|
|
12
14
|
import { EllipsisPipe } from './ellipsis.pipe';
|
|
13
15
|
import { KeyToLabelPipe } from './key-to-label.pipe';
|
|
@@ -21,6 +23,8 @@ const components = [
|
|
|
21
23
|
ToastComponent,
|
|
22
24
|
BindOnceDirective,
|
|
23
25
|
ClickOutsideDirective,
|
|
26
|
+
CompoundDirective,
|
|
27
|
+
CompoundPipe,
|
|
24
28
|
DefaultPipe,
|
|
25
29
|
EllipsisPipe,
|
|
26
30
|
KeysPipe,
|
|
@@ -36,6 +40,8 @@ HeCommonLightModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
|
|
|
36
40
|
ToastComponent,
|
|
37
41
|
BindOnceDirective,
|
|
38
42
|
ClickOutsideDirective,
|
|
43
|
+
CompoundDirective,
|
|
44
|
+
CompoundPipe,
|
|
39
45
|
DefaultPipe,
|
|
40
46
|
EllipsisPipe,
|
|
41
47
|
KeysPipe,
|
|
@@ -47,6 +53,8 @@ HeCommonLightModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
|
|
|
47
53
|
ToastComponent,
|
|
48
54
|
BindOnceDirective,
|
|
49
55
|
ClickOutsideDirective,
|
|
56
|
+
CompoundDirective,
|
|
57
|
+
CompoundPipe,
|
|
50
58
|
DefaultPipe,
|
|
51
59
|
EllipsisPipe,
|
|
52
60
|
KeysPipe,
|
|
@@ -69,4 +77,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
|
|
|
69
77
|
]
|
|
70
78
|
}]
|
|
71
79
|
}] });
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmxpZ2h0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vY29tbW9uLmxpZ2h0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXhFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQUVqRCxNQUFNLFVBQVUsR0FBRztJQUNqQixxQkFBcUI7SUFDckIsbUJBQW1CO0lBQ25CLGNBQWM7SUFDZCxpQkFBaUI7SUFDakIscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQixZQUFZO0lBQ1osV0FBVztJQUNYLFlBQVk7SUFDWixRQUFRO0lBQ1IsYUFBYTtJQUNiLGNBQWM7SUFDZCxhQUFhO0NBQ2QsQ0FBQztBQWFGLE1BQU0sT0FBTyxtQkFBbUI7O2dIQUFuQixtQkFBbUI7aUhBQW5CLG1CQUFtQixpQkExQjlCLHFCQUFxQjtRQUNyQixtQkFBbUI7UUFDbkIsY0FBYztRQUNkLGlCQUFpQjtRQUNqQixxQkFBcUI7UUFDckIsaUJBQWlCO1FBQ2pCLFlBQVk7UUFDWixXQUFXO1FBQ1gsWUFBWTtRQUNaLFFBQVE7UUFDUixhQUFhO1FBQ2IsY0FBYztRQUNkLGFBQWEsYUFVWCxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVk7UUFDdkMsbUJBQW1CLGFBTG5CLG1CQUFtQixFQWxCckIscUJBQXFCO1FBQ3JCLG1CQUFtQjtRQUNuQixjQUFjO1FBQ2QsaUJBQWlCO1FBQ2pCLHFCQUFxQjtRQUNyQixpQkFBaUI7UUFDakIsWUFBWTtRQUNaLFdBQVc7UUFDWCxZQUFZO1FBQ1osUUFBUTtRQUNSLGFBQWE7UUFDYixjQUFjO1FBQ2QsYUFBYTtpSEFjRixtQkFBbUIsWUFKNUIsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZO1FBQ3ZDLG1CQUFtQixFQUxuQixtQkFBbUI7MkZBUVYsbUJBQW1CO2tCQVgvQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxVQUFVO29CQUN4QixPQUFPLEVBQUU7d0JBQ1AsbUJBQW1CO3dCQUNuQixHQUFHLFVBQVU7cUJBQ2Q7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWTt3QkFDdkMsbUJBQW1CO3FCQUNwQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBIZUZvbnRhd2Vzb21lTW9kdWxlIH0gZnJvbSAnLi4vZm9udGF3ZXNvbWUvZm9udGF3ZXNvbWUubW9kdWxlJztcblxuaW1wb3J0IHsgSXNzdWVDb25maXJtQ29tcG9uZW50IH0gZnJvbSAnLi9pc3N1ZS1jb25maXJtL2lzc3VlLWNvbmZpcm0uY29tcG9uZW50JztcbmltcG9ydCB7IFNvY2lhbFRhZ3NDb21wb25lbnQgfSBmcm9tICcuL3NvY2lhbC10YWdzL3NvY2lhbC10YWdzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb2FzdENvbXBvbmVudCB9IGZyb20gJy4vdG9hc3QvdG9hc3QuY29tcG9uZW50JztcbmltcG9ydCB7IEJpbmRPbmNlRGlyZWN0aXZlIH0gZnJvbSAnLi9iaW5kLW9uY2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IENsaWNrT3V0c2lkZURpcmVjdGl2ZSB9IGZyb20gJy4vY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ29tcG91bmREaXJlY3RpdmUgfSBmcm9tICcuL2NvbXBvdW5kLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDb21wb3VuZFBpcGUgfSBmcm9tICcuL2NvbXBvdW5kLnBpcGUnO1xuaW1wb3J0IHsgRGVmYXVsdFBpcGUgfSBmcm9tICcuL2RlZmF1bHQucGlwZSc7XG5pbXBvcnQgeyBFbGxpcHNpc1BpcGUgfSBmcm9tICcuL2VsbGlwc2lzLnBpcGUnO1xuaW1wb3J0IHsgS2V5VG9MYWJlbFBpcGUgfSBmcm9tICcuL2tleS10by1sYWJlbC5waXBlJztcbmltcG9ydCB7IEtleXNQaXBlIH0gZnJvbSAnLi9rZXlzLnBpcGUnO1xuaW1wb3J0IHsgUGx1cmFsaXplUGlwZSB9IGZyb20gJy4vcGx1cmFsaXplLnBpcGUnO1xuaW1wb3J0IHsgUHJlY2lzaW9uUGlwZSB9IGZyb20gJy4vcHJlY2lzaW9uLnBpcGUnO1xuXG5jb25zdCBjb21wb25lbnRzID0gW1xuICBJc3N1ZUNvbmZpcm1Db21wb25lbnQsXG4gIFNvY2lhbFRhZ3NDb21wb25lbnQsXG4gIFRvYXN0Q29tcG9uZW50LFxuICBCaW5kT25jZURpcmVjdGl2ZSxcbiAgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlLFxuICBDb21wb3VuZERpcmVjdGl2ZSxcbiAgQ29tcG91bmRQaXBlLFxuICBEZWZhdWx0UGlwZSxcbiAgRWxsaXBzaXNQaXBlLFxuICBLZXlzUGlwZSxcbiAgUGx1cmFsaXplUGlwZSxcbiAgS2V5VG9MYWJlbFBpcGUsXG4gIFByZWNpc2lvblBpcGVcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogY29tcG9uZW50cyxcbiAgZXhwb3J0czogW1xuICAgIEhlRm9udGF3ZXNvbWVNb2R1bGUsXG4gICAgLi4uY29tcG9uZW50c1xuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgUm91dGVyTW9kdWxlLFxuICAgIEhlRm9udGF3ZXNvbWVNb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBIZUNvbW1vbkxpZ2h0TW9kdWxlIHsgfVxuIl19
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import { compoundToHtml } from './compound';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class CompoundDirective {
|
|
5
|
+
constructor(elementRef) {
|
|
6
|
+
this.elementRef = elementRef;
|
|
7
|
+
}
|
|
8
|
+
ngOnChanges() {
|
|
9
|
+
this.elementRef.nativeElement.innerHtml = compoundToHtml(this.appCompound);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
CompoundDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: CompoundDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
13
|
+
CompoundDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.8", type: CompoundDirective, selector: "[appCompound]", inputs: { appCompound: "appCompound" }, usesOnChanges: true, ngImport: i0 });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: CompoundDirective, decorators: [{
|
|
15
|
+
type: Directive,
|
|
16
|
+
args: [{
|
|
17
|
+
selector: '[appCompound]'
|
|
18
|
+
}]
|
|
19
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { appCompound: [{
|
|
20
|
+
type: Input
|
|
21
|
+
}] } });
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG91bmQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1vbi9jb21wb3VuZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFLNUMsTUFBTSxPQUFPLGlCQUFpQjtJQUk1QixZQUFvQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQUcsQ0FBQztJQUU5QyxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDN0UsQ0FBQzs7OEdBUlUsaUJBQWlCO2tHQUFqQixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFIN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtpQkFDMUI7aUdBR1MsV0FBVztzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBjb21wb3VuZFRvSHRtbCB9IGZyb20gJy4vY29tcG91bmQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYXBwQ29tcG91bmRdJ1xufSlcbmV4cG9ydCBjbGFzcyBDb21wb3VuZERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgYXBwQ29tcG91bmQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJIdG1sID0gY29tcG91bmRUb0h0bWwodGhpcy5hcHBDb21wb3VuZCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handles <sup> and <sub> html tags for compounds.
|
|
3
|
+
*
|
|
4
|
+
* @param value The compound as a string (e.g. NO3)
|
|
5
|
+
* @returns HTML version with subscript and superscript tags.
|
|
6
|
+
*/
|
|
7
|
+
export const compoundToHtml = (value) => value
|
|
8
|
+
.replace(/([\d])([\d]{1}[\-\+])/g, '$1<sup>$2</sup>')
|
|
9
|
+
.replace(/([^\d\>])([\d]{1})([\-\+])/g, '$1<sub>$2</sub><sup>$3</sup>')
|
|
10
|
+
.replace(/([A-LN-Za-ln-z])(\d+)/g, '$1<sub>$2</sub>')
|
|
11
|
+
.replace(/([O])([x])/g, '$1<sub>$2</sub>');
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG91bmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL2NvbXBvdW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FDOUMsS0FBSztLQUNGLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxpQkFBaUIsQ0FBQztLQUNwRCxPQUFPLENBQUMsNkJBQTZCLEVBQUUsOEJBQThCLENBQUM7S0FDdEUsT0FBTyxDQUFDLHdCQUF3QixFQUFFLGlCQUFpQixDQUFDO0tBQ3BELE9BQU8sQ0FBQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSGFuZGxlcyA8c3VwPiBhbmQgPHN1Yj4gaHRtbCB0YWdzIGZvciBjb21wb3VuZHMuXG4gKlxuICogQHBhcmFtIHZhbHVlIFRoZSBjb21wb3VuZCBhcyBhIHN0cmluZyAoZS5nLiBOTzMpXG4gKiBAcmV0dXJucyBIVE1MIHZlcnNpb24gd2l0aCBzdWJzY3JpcHQgYW5kIHN1cGVyc2NyaXB0IHRhZ3MuXG4gKi9cbmV4cG9ydCBjb25zdCBjb21wb3VuZFRvSHRtbCA9ICh2YWx1ZTogc3RyaW5nKSA9PlxuICB2YWx1ZVxuICAgIC5yZXBsYWNlKC8oW1xcZF0pKFtcXGRdezF9W1xcLVxcK10pL2csICckMTxzdXA+JDI8L3N1cD4nKVxuICAgIC5yZXBsYWNlKC8oW15cXGRcXD5dKShbXFxkXXsxfSkoW1xcLVxcK10pL2csICckMTxzdWI+JDI8L3N1Yj48c3VwPiQzPC9zdXA+JylcbiAgICAucmVwbGFjZSgvKFtBLUxOLVphLWxuLXpdKShcXGQrKS9nLCAnJDE8c3ViPiQyPC9zdWI+JylcbiAgICAucmVwbGFjZSgvKFtPXSkoW3hdKS9nLCAnJDE8c3ViPiQyPC9zdWI+Jyk7XG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import { compoundToHtml } from './compound';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class CompoundPipe {
|
|
5
|
+
transform(value) {
|
|
6
|
+
return compoundToHtml(value);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
CompoundPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: CompoundPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
10
|
+
CompoundPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.8", ngImport: i0, type: CompoundPipe, name: "compound" });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: CompoundPipe, decorators: [{
|
|
12
|
+
type: Pipe,
|
|
13
|
+
args: [{
|
|
14
|
+
name: 'compound'
|
|
15
|
+
}]
|
|
16
|
+
}] });
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG91bmQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vY29tcG91bmQucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDOztBQUs1QyxNQUFNLE9BQU8sWUFBWTtJQUN2QixTQUFTLENBQUMsS0FBYTtRQUNyQixPQUFPLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDOzt5R0FIVSxZQUFZO3VHQUFaLFlBQVk7MkZBQVosWUFBWTtrQkFIeEIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsVUFBVTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGNvbXBvdW5kVG9IdG1sIH0gZnJvbSAnLi9jb21wb3VuZCc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2NvbXBvdW5kJ1xufSlcbmV4cG9ydCBjbGFzcyBDb21wb3VuZFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gY29tcG91bmRUb0h0bWwodmFsdWUpO1xuICB9XG59XG4iXX0=
|
|
@@ -14,4 +14,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
|
|
|
14
14
|
name: 'ellipsis'
|
|
15
15
|
}]
|
|
16
16
|
}] });
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxsaXBzaXMucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vZWxsaXBzaXMucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUtuQyxNQUFNLE9BQU8sWUFBWTtJQUN2QixTQUFTLENBQUMsS0FBVSxFQUFFLFNBQWtCO1FBQ3RDLE9BQU8sUUFBUSxDQUFDLEdBQUcsS0FBSyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDekMsQ0FBQzs7eUdBSFUsWUFBWTt1R0FBWixZQUFZOzJGQUFaLFlBQVk7a0JBSHhCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFVBQVU7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBlbGxpcHNpcyB9IGZyb20gJy4vdXRpbHMnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdlbGxpcHNpcydcbn0pXG5leHBvcnQgY2xhc3MgRWxsaXBzaXNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBtYXhMZW5ndGg/
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxsaXBzaXMucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vZWxsaXBzaXMucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUtuQyxNQUFNLE9BQU8sWUFBWTtJQUN2QixTQUFTLENBQUMsS0FBVSxFQUFFLFNBQWtCO1FBQ3RDLE9BQU8sUUFBUSxDQUFDLEdBQUcsS0FBSyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDekMsQ0FBQzs7eUdBSFUsWUFBWTt1R0FBWixZQUFZOzJGQUFaLFlBQVk7a0JBSHhCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFVBQVU7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBlbGxpcHNpcyB9IGZyb20gJy4vdXRpbHMnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdlbGxpcHNpcydcbn0pXG5leHBvcnQgY2xhc3MgRWxsaXBzaXNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBtYXhMZW5ndGg/OiBudW1iZXIpIHtcbiAgICByZXR1cm4gZWxsaXBzaXMoYCR7dmFsdWV9YCwgbWF4TGVuZ3RoKTtcbiAgfVxufVxuIl19
|
package/esm2020/common/index.mjs
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
export * from './common.light.module';
|
|
2
2
|
export * from './common.module';
|
|
3
3
|
export * from './common.service';
|
|
4
|
+
export * from './compound';
|
|
4
5
|
export * from './toast.service';
|
|
5
6
|
export * from './delta-utils';
|
|
6
7
|
export * from './logs-utils';
|
|
7
8
|
export * from './maps-utils';
|
|
9
|
+
export * from './pluralize';
|
|
8
10
|
export * from './utils';
|
|
9
|
-
export { pluralize } from './pluralize';
|
|
10
11
|
export { BlankNodeStateComponent } from './blank-node-state/blank-node-state.component';
|
|
11
12
|
export { BlankNodeStateNoticeComponent } from './blank-node-state-notice/blank-node-state-notice.component';
|
|
12
13
|
export { BlankNodeValueDeltaComponent } from './blank-node-value-delta/blank-node-value-delta.component';
|
|
@@ -24,6 +25,8 @@ export { ToastComponent } from './toast/toast.component';
|
|
|
24
25
|
export { UnitConverterComponent } from './unit-converter/unit-converter.component';
|
|
25
26
|
export { BindOnceDirective } from './bind-once.directive';
|
|
26
27
|
export { ClickOutsideDirective } from './click-outside.directive';
|
|
28
|
+
export { CompoundDirective } from './compound.directive';
|
|
29
|
+
export { CompoundPipe } from './compound.pipe';
|
|
27
30
|
export { DefaultPipe } from './default.pipe';
|
|
28
31
|
export { EllipsisPipe } from './ellipsis.pipe';
|
|
29
32
|
export { GetPipe } from './get.pipe';
|
|
@@ -36,4 +39,4 @@ export { PrecisionPipe } from './precision.pipe';
|
|
|
36
39
|
export { TagsInputDirective } from './tags-input.directive';
|
|
37
40
|
export { TimesPipe } from './times.pipe';
|
|
38
41
|
export { SortByPipe } from './sort-by.pipe';
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxTQUFTLENBQUM7QUFFeEIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDeEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDNUcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDekcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDcEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDckMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb21tb24ubGlnaHQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vY29tbW9uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1vbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG91bmQnO1xuZXhwb3J0ICogZnJvbSAnLi90b2FzdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZGVsdGEtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2dzLXV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbWFwcy11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3BsdXJhbGl6ZSc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IHsgQmxhbmtOb2RlU3RhdGVDb21wb25lbnQgfSBmcm9tICcuL2JsYW5rLW5vZGUtc3RhdGUvYmxhbmstbm9kZS1zdGF0ZS5jb21wb25lbnQnO1xuZXhwb3J0IHsgQmxhbmtOb2RlU3RhdGVOb3RpY2VDb21wb25lbnQgfSBmcm9tICcuL2JsYW5rLW5vZGUtc3RhdGUtbm90aWNlL2JsYW5rLW5vZGUtc3RhdGUtbm90aWNlLmNvbXBvbmVudCc7XG5leHBvcnQgeyBCbGFua05vZGVWYWx1ZURlbHRhQ29tcG9uZW50IH0gZnJvbSAnLi9ibGFuay1ub2RlLXZhbHVlLWRlbHRhL2JsYW5rLW5vZGUtdmFsdWUtZGVsdGEuY29tcG9uZW50JztcbmV4cG9ydCB7IENsaXBib2FyZENvbXBvbmVudCB9IGZyb20gJy4vY2xpcGJvYXJkL2NsaXBib2FyZC5jb21wb25lbnQnO1xuZXhwb3J0IHsgRGF0YVRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRhLXRhYmxlL2RhdGEtdGFibGUuY29tcG9uZW50JztcbmV4cG9ydCB7IElzc3VlQ29uZmlybUNvbXBvbmVudCB9IGZyb20gJy4vaXNzdWUtY29uZmlybS9pc3N1ZS1jb25maXJtLmNvbXBvbmVudCc7XG5leHBvcnQgeyBMaW5rS2V5VmFsdWVDb21wb25lbnQgfSBmcm9tICcuL2xpbmsta2V5LXZhbHVlL2xpbmsta2V5LXZhbHVlLmNvbXBvbmVudCc7XG5leHBvcnQgeyBNYXBzRHJhd2luZ0NvbmZpcm1Db21wb25lbnQgfSBmcm9tICcuL21hcHMtZHJhd2luZy1jb25maXJtL21hcHMtZHJhd2luZy1jb25maXJtLmNvbXBvbmVudCc7XG5leHBvcnQgeyBQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnLi9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50JztcbmV4cG9ydCB7IFBvcG92ZXJDb25maXJtQ29tcG9uZW50IH0gZnJvbSAnLi9wb3BvdmVyLWNvbmZpcm0vcG9wb3Zlci1jb25maXJtLmNvbXBvbmVudCc7XG5leHBvcnQgeyBTY2hlbWFWZXJzaW9uTGlua0NvbXBvbmVudCB9IGZyb20gJy4vc2NoZW1hLXZlcnNpb24tbGluay9zY2hlbWEtdmVyc2lvbi1saW5rLmNvbXBvbmVudCc7XG5leHBvcnQgeyBTa2VsZXRvblRleHRDb21wb25lbnQgfSBmcm9tICcuL3NrZWxldG9uLXRleHQvc2tlbGV0b24tdGV4dC5jb21wb25lbnQnO1xuZXhwb3J0IHsgU29jaWFsVGFnc0NvbXBvbmVudCB9IGZyb20gJy4vc29jaWFsLXRhZ3Mvc29jaWFsLXRhZ3MuY29tcG9uZW50JztcbmV4cG9ydCB7IFRvYXN0Q29tcG9uZW50IH0gZnJvbSAnLi90b2FzdC90b2FzdC5jb21wb25lbnQnO1xuZXhwb3J0IHsgVW5pdENvbnZlcnRlckNvbXBvbmVudCB9IGZyb20gJy4vdW5pdC1jb252ZXJ0ZXIvdW5pdC1jb252ZXJ0ZXIuY29tcG9uZW50JztcbmV4cG9ydCB7IEJpbmRPbmNlRGlyZWN0aXZlIH0gZnJvbSAnLi9iaW5kLW9uY2UuZGlyZWN0aXZlJztcbmV4cG9ydCB7IENsaWNrT3V0c2lkZURpcmVjdGl2ZSB9IGZyb20gJy4vY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgQ29tcG91bmREaXJlY3RpdmUgfSBmcm9tICcuL2NvbXBvdW5kLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBDb21wb3VuZFBpcGUgfSBmcm9tICcuL2NvbXBvdW5kLnBpcGUnO1xuZXhwb3J0IHsgRGVmYXVsdFBpcGUgfSBmcm9tICcuL2RlZmF1bHQucGlwZSc7XG5leHBvcnQgeyBFbGxpcHNpc1BpcGUgfSBmcm9tICcuL2VsbGlwc2lzLnBpcGUnO1xuZXhwb3J0IHsgR2V0UGlwZSB9IGZyb20gJy4vZ2V0LnBpcGUnO1xuZXhwb3J0IHsgSXNBcnJheVBpcGUgfSBmcm9tICcuL2lzLWFycmF5LnBpcGUnO1xuZXhwb3J0IHsgSXNPYmplY3RQaXBlIH0gZnJvbSAnLi9pcy1vYmplY3QucGlwZSc7XG5leHBvcnQgeyBLZXlUb0xhYmVsUGlwZSB9IGZyb20gJy4va2V5LXRvLWxhYmVsLnBpcGUnO1xuZXhwb3J0IHsgS2V5c1BpcGUgfSBmcm9tICcuL2tleXMucGlwZSc7XG5leHBvcnQgeyBQbHVyYWxpemVQaXBlIH0gZnJvbSAnLi9wbHVyYWxpemUucGlwZSc7XG5leHBvcnQgeyBQcmVjaXNpb25QaXBlIH0gZnJvbSAnLi9wcmVjaXNpb24ucGlwZSc7XG5leHBvcnQgeyBUYWdzSW5wdXREaXJlY3RpdmUgfSBmcm9tICcuL3RhZ3MtaW5wdXQuZGlyZWN0aXZlJztcbmV4cG9ydCB7IFRpbWVzUGlwZSB9IGZyb20gJy4vdGltZXMucGlwZSc7XG5leHBvcnQgeyBTb3J0QnlQaXBlIH0gZnJvbSAnLi9zb3J0LWJ5LnBpcGUnO1xuIl19
|
|
@@ -14,4 +14,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
|
|
|
14
14
|
name: 'pluralize'
|
|
15
15
|
}]
|
|
16
16
|
}] });
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1cmFsaXplLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL3BsdXJhbGl6ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBS3hDLE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFNBQVMsQ0FBQyxLQUFhLEVBQUUsS0FBSyxHQUFHLENBQUM7UUFDaEMsT0FBTyxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7OzBHQUhVLGFBQWE7d0dBQWIsYUFBYTsyRkFBYixhQUFhO2tCQUh6QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxXQUFXO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHBsdXJhbGl6ZSB9IGZyb20gJy4vcGx1cmFsaXplJztcblxuQFBpcGUoe1xuICBuYW1lOiAncGx1cmFsaXplJ1xufSlcbmV4cG9ydCBjbGFzcyBQbHVyYWxpemVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCB0aW1lcyA9IDApIHtcbiAgICByZXR1cm4gcGx1cmFsaXplKHZhbHVlLCB0aW1lcyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -18,9 +18,10 @@ import * as i10 from "../../node/node-value-details/node-value-details.component
|
|
|
18
18
|
import * as i11 from "../cycles-activity-logs/cycles-activity-logs.component";
|
|
19
19
|
import * as i12 from "../cycles-functional-unit-measure/cycles-functional-unit-measure.component";
|
|
20
20
|
import * as i13 from "../cycles-result/cycles-result.component";
|
|
21
|
-
import * as i14 from "../../common/
|
|
22
|
-
import * as i15 from "../../common/
|
|
23
|
-
import * as i16 from "../../common/
|
|
21
|
+
import * as i14 from "../../common/compound.pipe";
|
|
22
|
+
import * as i15 from "../../common/default.pipe";
|
|
23
|
+
import * as i16 from "../../common/ellipsis.pipe";
|
|
24
|
+
import * as i17 from "../../common/precision.pipe";
|
|
24
25
|
var View;
|
|
25
26
|
(function (View) {
|
|
26
27
|
View["table"] = "table";
|
|
@@ -82,10 +83,10 @@ export class CyclesActivityComponent {
|
|
|
82
83
|
}
|
|
83
84
|
}
|
|
84
85
|
CyclesActivityComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: CyclesActivityComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
85
|
-
CyclesActivityComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: CyclesActivityComponent, selector: "he-cycles-activity", inputs: { originalValues: "originalValues", cycles: "cycles", dataState: "dataState", enableCompare: "enableCompare" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"columns is-variable is-align-items-center is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <ng-container *ngIf=\"selectedView === View.table && (inputs.length || products.length)\">\n <div class=\"column is-narrow\">\n <button class=\"button is-dark is-outlined is-small\" (click)=\"showDownload = true\">\n <fa-icon icon=\"download\"></fa-icon>\n <span class=\"pl-2\">Download (CSV)</span>\n </button>\n </div>\n <div class=\"column is-narrow col-sep is-hidden-mobile\"></div>\n </ng-container>\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.table\" (click)=\"selectedView = View.table\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"list\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Table view</span>\n </button>\n </div>\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.chart\" (click)=\"selectedView = View.chart\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Chart view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"!isOriginal\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.logs\" (click)=\"selectedView = View.logs\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"calculator\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Recalculations logs</span>\n </button>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"px-3 pb-3\" [class.is-hidden]=\"selectedView !== View.table\">\n <ng-container *ngIf=\"inputs.length || products.length; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"cycles.length\" maxHeight=\"320\">\n <table class=\"table is-narrow is-striped\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th class=\"has-border-right\"></th>\n <th *ngIf=\"inputs.length\" [attr.colspan]=\"inputs.length\"\n [class.has-border-right]=\"products.length\"\n >Inputs</th>\n <th *ngIf=\"products.length\" [attr.colspan]=\"products.length\">Products</th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th class=\"has-border-right\"></th>\n <th *ngFor=\"let input of inputs; let pl = last\"\n [attr.title]=\"input.value.term.name\"\n [class.has-border-right]=\"products.length && pl\"\n >\n <he-node-link [node]=\"input.value.term\">\n <span>{{input.value.term.name | ellipsis:30}}</span>\n </he-node-link>\n </th>\n <th *ngFor=\"let product of products; let pl = last\"\n [attr.title]=\"product.value.term.name\"\n >\n <he-node-link [node]=\"product.value.term\">\n <span>{{product.value.term.name | ellipsis:30}}</span>\n </he-node-link>\n </th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th class=\"has-border-right\">\n <a [href]=\"baseUrl + '/schema/Cycle#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <th *ngFor=\"let input of inputs; let pl = last\"\n [attr.title]=\"input.value.term.units\"\n [class.has-border-right]=\"products.length && pl\"\n >{{input.value.term.units}}</th>\n <th *ngFor=\"let product of products; let pl = last\"\n [attr.title]=\"product.value.term.units\"\n >{{product.value.term.units}}</th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <tr>\n <td class=\"width-auto\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle.term || cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td class=\"has-border-right\">\n <he-cycles-functional-unit-measure [cycle]=\"cycle\"></he-cycles-functional-unit-measure>\n </td>\n <td class=\"is-nowrap\"\n *ngFor=\"let input of inputs; let pl = last\"\n [class.has-border-right]=\"products.length && pl\"\n >\n <span *ngIf=\"input.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: input.value.values[cycle['@id']], cycle: cycle, key: 'inputs' })\"\n >\n <span pointer>{{propertyValue(input.value.values[cycle['@id']].value, input.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"input.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n <td class=\"is-nowrap\"\n *ngFor=\"let product of products; let pl = last\"\n >\n <span *ngIf=\"product.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: product.value.values[cycle['@id']], cycle: cycle, key: 'products' })\"\n >\n <span pointer>{{propertyValue(product.value.values[cycle['@id']].value, product.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"product.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\"></he-blank-node-state-notice>\n </ng-container>\n</div>\n\n<he-cycles-result *ngIf=\"selectedView === View.chart\"\n [cycles]=\"cycles\"\n></he-cycles-result>\n\n<ng-container *ngIf=\"selectedView === View.logs && !isOriginal\">\n <div class=\"field has-addons pt-2 px-3\" *ngIf=\"cycles.length > 1\">\n <div class=\"control\">\n <span class=\"button is-small is-static\">Select a Cycle</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth\">\n <select (change)=\"selectIndex($event)\">\n <option *ngFor=\"let value of cycles; let i = index\" [value]=\"i\">{{i + 1}}. {{defaultLabel(value)}}</option>\n </select>\n </div>\n </div>\n </div>\n\n <he-cycles-activity-logs *ngIf=\"selectedIndex >= 0\"\n [cycle]=\"cycles[selectedIndex]\"\n [original]=\"originalValues[selectedIndex]\"\n [recalculated]=\"cycles[selectedIndex]\"\n ></he-cycles-activity-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"cycles\" filename=\"inputs-products.csv\" [isUpload]=\"false\"\n [headerKeys]=\"headerKeys\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"has-text-centered\">\n <span>No activity data</span>\n </div>\n</ng-template>\n\n<ng-template #emptyValue>\n <span>-</span>\n</ng-template>\n\n<ng-template #details let-node=\"cycle\" let-data=\"data\" let-key=\"key\">\n <p><b>{{defaultLabel(node)}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n", styles: ["fa-icon{display:inline-block;width:10px}he-data-table ::ng-deep .table thead tr th:nth-child(2),he-data-table ::ng-deep .table tbody tr td:nth-child(2){max-width:102px;width:102px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "ngbPopover", "popoverTitle", "placement", "popperOptions", "triggers", "positionTarget", "container", "disablePopover", "popoverClass", "openDelay", "closeDelay"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }, { kind: "component", type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: i5.BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["dataState", "nodeType", "dataKey", "key", "node", "state"] }, { kind: "component", type: i6.BlankNodeStateNoticeComponent, selector: "he-blank-node-state-notice", inputs: ["dataState", "showAggregated", "showDeleted"] }, { kind: "component", type: i7.DataTableComponent, selector: "he-data-table", inputs: ["minHeight", "maxHeight", "nbRows", "small", "height", "width"] }, { kind: "component", type: i8.NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink"] }, { kind: "component", type: i9.NodeCsvExportConfirmComponent, selector: "he-node-csv-export-confirm", inputs: ["nodes", "filename", "headerKeys", "extension", "isUpload"], outputs: ["closed"] }, { kind: "component", type: i10.NodeValueDetailsComponent, selector: "he-node-value-details", inputs: ["data", "nodeType", "dataKey"] }, { kind: "component", type: i11.CyclesActivityLogsComponent, selector: "he-cycles-activity-logs", inputs: ["cycle", "original", "recalculated"] }, { kind: "component", type: i12.CyclesFunctionalUnitMeasureComponent, selector: "he-cycles-functional-unit-measure", inputs: ["cycle"] }, { kind: "component", type: i13.CyclesResultComponent, selector: "he-cycles-result", inputs: ["cycles"] }, { kind: "pipe", type: i14.DefaultPipe, name: "default" }, { kind: "pipe", type: i15.EllipsisPipe, name: "ellipsis" }, { kind: "pipe", type: i16.PrecisionPipe, name: "precision" }] });
|
|
86
|
+
CyclesActivityComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: CyclesActivityComponent, selector: "he-cycles-activity", inputs: { originalValues: "originalValues", cycles: "cycles", dataState: "dataState", enableCompare: "enableCompare" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"columns is-variable is-align-items-center is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <ng-container *ngIf=\"selectedView === View.table && (inputs.length || products.length)\">\n <div class=\"column is-narrow\">\n <button class=\"button is-dark is-outlined is-small\" (click)=\"showDownload = true\">\n <fa-icon icon=\"download\"></fa-icon>\n <span class=\"pl-2\">Download (CSV)</span>\n </button>\n </div>\n <div class=\"column is-narrow col-sep is-hidden-mobile\"></div>\n </ng-container>\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.table\" (click)=\"selectedView = View.table\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"list\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Table view</span>\n </button>\n </div>\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.chart\" (click)=\"selectedView = View.chart\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Chart view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"!isOriginal\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.logs\" (click)=\"selectedView = View.logs\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"calculator\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Recalculations logs</span>\n </button>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"px-3 pb-3\" [class.is-hidden]=\"selectedView !== View.table\">\n <ng-container *ngIf=\"inputs.length || products.length; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"cycles.length\" maxHeight=\"320\">\n <table class=\"table is-narrow is-striped\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th class=\"has-border-right\"></th>\n <th *ngIf=\"inputs.length\" [attr.colspan]=\"inputs.length\"\n [class.has-border-right]=\"products.length\"\n >Inputs</th>\n <th *ngIf=\"products.length\" [attr.colspan]=\"products.length\">Products</th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th class=\"has-border-right\"></th>\n <th *ngFor=\"let input of inputs; let pl = last\"\n [attr.title]=\"input.value.term.name\"\n [class.has-border-right]=\"products.length && pl\"\n >\n <he-node-link [node]=\"input.value.term\">\n <span [innerHtml]=\"input.value.term.name | ellipsis:30 | compound\"></span>\n </he-node-link>\n </th>\n <th *ngFor=\"let product of products; let pl = last\"\n [attr.title]=\"product.value.term.name\"\n >\n <he-node-link [node]=\"product.value.term\">\n <span [innerHtml]=\"product.value.term.name | ellipsis:30 | compound\"></span>\n </he-node-link>\n </th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th class=\"has-border-right\">\n <a [href]=\"baseUrl + '/schema/Cycle#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <th *ngFor=\"let input of inputs; let pl = last\"\n [attr.title]=\"input.value.term.units\"\n [class.has-border-right]=\"products.length && pl\"\n [innerHtml]=\"input.value.term.units | compound\"\n ></th>\n <th *ngFor=\"let product of products; let pl = last\"\n [attr.title]=\"product.value.term.units\"\n [innerHtml]=\"product.value.term.units | compound\"\n ></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <tr>\n <td class=\"width-auto\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle.term || cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td class=\"has-border-right\">\n <he-cycles-functional-unit-measure [cycle]=\"cycle\"></he-cycles-functional-unit-measure>\n </td>\n <td class=\"is-nowrap\"\n *ngFor=\"let input of inputs; let pl = last\"\n [class.has-border-right]=\"products.length && pl\"\n >\n <span *ngIf=\"input.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: input.value.values[cycle['@id']], cycle: cycle, key: 'inputs' })\"\n >\n <span pointer>{{propertyValue(input.value.values[cycle['@id']].value, input.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"input.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n <td class=\"is-nowrap\"\n *ngFor=\"let product of products; let pl = last\"\n >\n <span *ngIf=\"product.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: product.value.values[cycle['@id']], cycle: cycle, key: 'products' })\"\n >\n <span pointer>{{propertyValue(product.value.values[cycle['@id']].value, product.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"product.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\"></he-blank-node-state-notice>\n </ng-container>\n</div>\n\n<he-cycles-result *ngIf=\"selectedView === View.chart\"\n [cycles]=\"cycles\"\n></he-cycles-result>\n\n<ng-container *ngIf=\"selectedView === View.logs && !isOriginal\">\n <div class=\"field has-addons pt-2 px-3\" *ngIf=\"cycles.length > 1\">\n <div class=\"control\">\n <span class=\"button is-small is-static\">Select a Cycle</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth\">\n <select (change)=\"selectIndex($event)\">\n <option *ngFor=\"let value of cycles; let i = index\" [value]=\"i\">{{i + 1}}. {{defaultLabel(value)}}</option>\n </select>\n </div>\n </div>\n </div>\n\n <he-cycles-activity-logs *ngIf=\"selectedIndex >= 0\"\n [cycle]=\"cycles[selectedIndex]\"\n [original]=\"originalValues[selectedIndex]\"\n [recalculated]=\"cycles[selectedIndex]\"\n ></he-cycles-activity-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"cycles\" filename=\"inputs-products.csv\" [isUpload]=\"false\"\n [headerKeys]=\"headerKeys\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"has-text-centered\">\n <span>No activity data</span>\n </div>\n</ng-template>\n\n<ng-template #emptyValue>\n <span>-</span>\n</ng-template>\n\n<ng-template #details let-node=\"cycle\" let-data=\"data\" let-key=\"key\">\n <p><b>{{defaultLabel(node)}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n", styles: ["fa-icon{display:inline-block;width:10px}he-data-table ::ng-deep .table thead tr th:nth-child(2),he-data-table ::ng-deep .table tbody tr td:nth-child(2){max-width:102px;width:102px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "ngbPopover", "popoverTitle", "placement", "popperOptions", "triggers", "positionTarget", "container", "disablePopover", "popoverClass", "openDelay", "closeDelay"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }, { kind: "component", type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: i5.BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["dataState", "nodeType", "dataKey", "key", "node", "state"] }, { kind: "component", type: i6.BlankNodeStateNoticeComponent, selector: "he-blank-node-state-notice", inputs: ["dataState", "showAggregated", "showDeleted"] }, { kind: "component", type: i7.DataTableComponent, selector: "he-data-table", inputs: ["minHeight", "maxHeight", "nbRows", "small", "height", "width"] }, { kind: "component", type: i8.NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink"] }, { kind: "component", type: i9.NodeCsvExportConfirmComponent, selector: "he-node-csv-export-confirm", inputs: ["nodes", "filename", "headerKeys", "extension", "isUpload"], outputs: ["closed"] }, { kind: "component", type: i10.NodeValueDetailsComponent, selector: "he-node-value-details", inputs: ["data", "nodeType", "dataKey"] }, { kind: "component", type: i11.CyclesActivityLogsComponent, selector: "he-cycles-activity-logs", inputs: ["cycle", "original", "recalculated"] }, { kind: "component", type: i12.CyclesFunctionalUnitMeasureComponent, selector: "he-cycles-functional-unit-measure", inputs: ["cycle"] }, { kind: "component", type: i13.CyclesResultComponent, selector: "he-cycles-result", inputs: ["cycles"] }, { kind: "pipe", type: i14.CompoundPipe, name: "compound" }, { kind: "pipe", type: i15.DefaultPipe, name: "default" }, { kind: "pipe", type: i16.EllipsisPipe, name: "ellipsis" }, { kind: "pipe", type: i17.PrecisionPipe, name: "precision" }] });
|
|
86
87
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: CyclesActivityComponent, decorators: [{
|
|
87
88
|
type: Component,
|
|
88
|
-
args: [{ selector: 'he-cycles-activity', template: "<div class=\"columns is-variable is-align-items-center is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <ng-container *ngIf=\"selectedView === View.table && (inputs.length || products.length)\">\n <div class=\"column is-narrow\">\n <button class=\"button is-dark is-outlined is-small\" (click)=\"showDownload = true\">\n <fa-icon icon=\"download\"></fa-icon>\n <span class=\"pl-2\">Download (CSV)</span>\n </button>\n </div>\n <div class=\"column is-narrow col-sep is-hidden-mobile\"></div>\n </ng-container>\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.table\" (click)=\"selectedView = View.table\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"list\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Table view</span>\n </button>\n </div>\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.chart\" (click)=\"selectedView = View.chart\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Chart view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"!isOriginal\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.logs\" (click)=\"selectedView = View.logs\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"calculator\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Recalculations logs</span>\n </button>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"px-3 pb-3\" [class.is-hidden]=\"selectedView !== View.table\">\n <ng-container *ngIf=\"inputs.length || products.length; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"cycles.length\" maxHeight=\"320\">\n <table class=\"table is-narrow is-striped\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th class=\"has-border-right\"></th>\n <th *ngIf=\"inputs.length\" [attr.colspan]=\"inputs.length\"\n [class.has-border-right]=\"products.length\"\n >Inputs</th>\n <th *ngIf=\"products.length\" [attr.colspan]=\"products.length\">Products</th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th class=\"has-border-right\"></th>\n <th *ngFor=\"let input of inputs; let pl = last\"\n [attr.title]=\"input.value.term.name\"\n [class.has-border-right]=\"products.length && pl\"\n >\n <he-node-link [node]=\"input.value.term\">\n <span
|
|
89
|
+
args: [{ selector: 'he-cycles-activity', template: "<div class=\"columns is-variable is-align-items-center is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <ng-container *ngIf=\"selectedView === View.table && (inputs.length || products.length)\">\n <div class=\"column is-narrow\">\n <button class=\"button is-dark is-outlined is-small\" (click)=\"showDownload = true\">\n <fa-icon icon=\"download\"></fa-icon>\n <span class=\"pl-2\">Download (CSV)</span>\n </button>\n </div>\n <div class=\"column is-narrow col-sep is-hidden-mobile\"></div>\n </ng-container>\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.table\" (click)=\"selectedView = View.table\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"list\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Table view</span>\n </button>\n </div>\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.chart\" (click)=\"selectedView = View.chart\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Chart view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"!isOriginal\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.logs\" (click)=\"selectedView = View.logs\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"calculator\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Recalculations logs</span>\n </button>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"px-3 pb-3\" [class.is-hidden]=\"selectedView !== View.table\">\n <ng-container *ngIf=\"inputs.length || products.length; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"cycles.length\" maxHeight=\"320\">\n <table class=\"table is-narrow is-striped\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th class=\"has-border-right\"></th>\n <th *ngIf=\"inputs.length\" [attr.colspan]=\"inputs.length\"\n [class.has-border-right]=\"products.length\"\n >Inputs</th>\n <th *ngIf=\"products.length\" [attr.colspan]=\"products.length\">Products</th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th class=\"has-border-right\"></th>\n <th *ngFor=\"let input of inputs; let pl = last\"\n [attr.title]=\"input.value.term.name\"\n [class.has-border-right]=\"products.length && pl\"\n >\n <he-node-link [node]=\"input.value.term\">\n <span [innerHtml]=\"input.value.term.name | ellipsis:30 | compound\"></span>\n </he-node-link>\n </th>\n <th *ngFor=\"let product of products; let pl = last\"\n [attr.title]=\"product.value.term.name\"\n >\n <he-node-link [node]=\"product.value.term\">\n <span [innerHtml]=\"product.value.term.name | ellipsis:30 | compound\"></span>\n </he-node-link>\n </th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th class=\"has-border-right\">\n <a [href]=\"baseUrl + '/schema/Cycle#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <th *ngFor=\"let input of inputs; let pl = last\"\n [attr.title]=\"input.value.term.units\"\n [class.has-border-right]=\"products.length && pl\"\n [innerHtml]=\"input.value.term.units | compound\"\n ></th>\n <th *ngFor=\"let product of products; let pl = last\"\n [attr.title]=\"product.value.term.units\"\n [innerHtml]=\"product.value.term.units | compound\"\n ></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <tr>\n <td class=\"width-auto\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle.term || cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td class=\"has-border-right\">\n <he-cycles-functional-unit-measure [cycle]=\"cycle\"></he-cycles-functional-unit-measure>\n </td>\n <td class=\"is-nowrap\"\n *ngFor=\"let input of inputs; let pl = last\"\n [class.has-border-right]=\"products.length && pl\"\n >\n <span *ngIf=\"input.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: input.value.values[cycle['@id']], cycle: cycle, key: 'inputs' })\"\n >\n <span pointer>{{propertyValue(input.value.values[cycle['@id']].value, input.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"input.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n <td class=\"is-nowrap\"\n *ngFor=\"let product of products; let pl = last\"\n >\n <span *ngIf=\"product.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: product.value.values[cycle['@id']], cycle: cycle, key: 'products' })\"\n >\n <span pointer>{{propertyValue(product.value.values[cycle['@id']].value, product.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"product.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\"></he-blank-node-state-notice>\n </ng-container>\n</div>\n\n<he-cycles-result *ngIf=\"selectedView === View.chart\"\n [cycles]=\"cycles\"\n></he-cycles-result>\n\n<ng-container *ngIf=\"selectedView === View.logs && !isOriginal\">\n <div class=\"field has-addons pt-2 px-3\" *ngIf=\"cycles.length > 1\">\n <div class=\"control\">\n <span class=\"button is-small is-static\">Select a Cycle</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth\">\n <select (change)=\"selectIndex($event)\">\n <option *ngFor=\"let value of cycles; let i = index\" [value]=\"i\">{{i + 1}}. {{defaultLabel(value)}}</option>\n </select>\n </div>\n </div>\n </div>\n\n <he-cycles-activity-logs *ngIf=\"selectedIndex >= 0\"\n [cycle]=\"cycles[selectedIndex]\"\n [original]=\"originalValues[selectedIndex]\"\n [recalculated]=\"cycles[selectedIndex]\"\n ></he-cycles-activity-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"cycles\" filename=\"inputs-products.csv\" [isUpload]=\"false\"\n [headerKeys]=\"headerKeys\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"has-text-centered\">\n <span>No activity data</span>\n </div>\n</ng-template>\n\n<ng-template #emptyValue>\n <span>-</span>\n</ng-template>\n\n<ng-template #details let-node=\"cycle\" let-data=\"data\" let-key=\"key\">\n <p><b>{{defaultLabel(node)}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n", styles: ["fa-icon{display:inline-block;width:10px}he-data-table ::ng-deep .table thead tr th:nth-child(2),he-data-table ::ng-deep .table tbody tr td:nth-child(2){max-width:102px;width:102px}\n"] }]
|
|
89
90
|
}], propDecorators: { originalValues: [{
|
|
90
91
|
type: Input
|
|
91
92
|
}], cycles: [{
|
|
@@ -95,4 +96,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
|
|
|
95
96
|
}], enableCompare: [{
|
|
96
97
|
type: Input
|
|
97
98
|
}] } });
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ljbGVzLWFjdGl2aXR5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jeWNsZXMvY3ljbGVzLWFjdGl2aXR5L2N5Y2xlcy1hY3Rpdml0eS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1hY3Rpdml0eS9jeWNsZXMtYWN0aXZpdHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU5QyxPQUFPLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFnQixZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RixPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFM0QsSUFBSyxJQUlKO0FBSkQsV0FBSyxJQUFJO0lBQ1AsdUJBQWUsQ0FBQTtJQUNmLHVCQUFlLENBQUE7SUFDZixxQkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUpJLElBQUksS0FBSixJQUFJLFFBSVI7QUFFRCxNQUFNLFVBQVUsR0FBRztJQUNqQixVQUFVLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxpQkFBaUI7SUFDM0QsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsd0JBQXdCLEVBQUUsMEJBQTBCO0NBQ2hHLENBQUM7QUFPRixNQUFNLE9BQU8sdUJBQXVCO0lBTHBDO1FBT1MsbUJBQWMsR0FBbUIsRUFBRSxDQUFDO1FBRXBDLFdBQU0sR0FBbUIsRUFBRSxDQUFDO1FBSTVCLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBRXJCLFlBQU8sR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUNwQixrQkFBYSxHQUFHLGFBQWEsQ0FBQztRQUM5QixpQkFBWSxHQUFHLFlBQVksQ0FBQztRQUM1QixlQUFVLEdBQUcsVUFBVSxDQUFDO1FBQ3hCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLFNBQUksR0FBRyxJQUFJLENBQUM7UUFDWixpQkFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDMUIsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFFbEIsV0FBTSxHQUFnQyxFQUFFLENBQUM7UUFDekMsYUFBUSxHQUE0QixFQUFFLENBQUM7S0EwQy9DO0lBeENDLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLFFBQVEsSUFBSSxPQUFPLEVBQUU7WUFDdkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUM3QyxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUN0QjtRQUNELElBQUksV0FBVyxJQUFJLE9BQU8sRUFBRTtZQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBRU0sU0FBUyxDQUFDLE1BQWMsRUFBRSxJQUFrQjtRQUNqRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsUUFBUSxDQUFDO0lBQy9DLENBQUM7SUFFTyxNQUFNO1FBQ1osTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQTRCLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvRyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdEUsTUFBTSxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBd0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9HLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFTSxhQUFhLENBQUMsT0FBWSxFQUFFLE9BQVk7UUFDN0MsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQscUJBQXFCO0lBRWIsbUJBQW1CLENBQUMsS0FBYTtRQUN2QyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLDhCQUE4QjtRQUM5QixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVNLFdBQVcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQzs7b0hBN0RVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLHVNQ3pCcEMscXdRQTRMQTsyRkRuS2EsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLG9CQUFvQjs4QkFNdkIsY0FBYztzQkFEcEIsS0FBSztnQkFHQyxNQUFNO3NCQURaLEtBQUs7Z0JBR0MsU0FBUztzQkFEZixLQUFLO2dCQUdDLGFBQWE7c0JBRG5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGFTdGF0ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7IElDeWNsZUpTT05MRCwgSW5wdXQgYXMgSGVzdGlhSW5wdXQsIFByb2R1Y3QgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgb3JkZXJCeSBmcm9tICdsb2Rhc2gub3JkZXJieSc7XG5pbXBvcnQgeyBwcm9wZXJ0eVZhbHVlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscy9kaXN0L3Rlcm0nO1xuXG5pbXBvcnQgeyBncm91cE5vZGVzQnlUZXJtLCBJR3JvdXBlZEtleXMsIGdyb3VwcGVkS2V5cyB9IGZyb20gJy4uLy4uL2NvbW1vbi9ub2RlLXV0aWxzJztcbmltcG9ydCB7IGJhc2VVcmwsIGRlZmF1bHRMYWJlbCB9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlscyc7XG5cbmVudW0gVmlldyB7XG4gIHRhYmxlID0gJ3RhYmxlJyxcbiAgY2hhcnQgPSAnY2hhcnQnLFxuICBsb2dzID0gJ2xvZ3MnXG59XG5cbmNvbnN0IGhlYWRlcktleXMgPSBbXG4gICdjeWNsZS5pZCcsICdjeWNsZS5AaWQnLCAnY3ljbGUuaW5wdXRzLicsICdjeWNsZS5wcm9kdWN0cy4nLFxuICAndHJhbnNmb3JtYXRpb24uaWQnLCAndHJhbnNmb3JtYXRpb24uQGlkJywgJ3RyYW5zZm9ybWF0aW9uLmlucHV0cy4nLCAndHJhbnNmb3JtYXRpb24ucHJvZHVjdHMuJ1xuXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtY3ljbGVzLWFjdGl2aXR5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2N5Y2xlcy1hY3Rpdml0eS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2N5Y2xlcy1hY3Rpdml0eS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEN5Y2xlc0FjdGl2aXR5Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KClcbiAgcHVibGljIG9yaWdpbmFsVmFsdWVzOiBJQ3ljbGVKU09OTERbXSA9IFtdO1xuICBASW5wdXQoKVxuICBwdWJsaWMgY3ljbGVzOiBJQ3ljbGVKU09OTERbXSA9IFtdO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGF0YVN0YXRlPzogRGF0YVN0YXRlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZW5hYmxlQ29tcGFyZSA9IHRydWU7XG5cbiAgcHVibGljIGJhc2VVcmwgPSBiYXNlVXJsKCk7XG4gIHB1YmxpYyBwcm9wZXJ0eVZhbHVlID0gcHJvcGVydHlWYWx1ZTtcbiAgcHVibGljIGRlZmF1bHRMYWJlbCA9IGRlZmF1bHRMYWJlbDtcbiAgcHVibGljIGhlYWRlcktleXMgPSBoZWFkZXJLZXlzO1xuICBwdWJsaWMgc2hvd0Rvd25sb2FkID0gZmFsc2U7XG4gIHB1YmxpYyBWaWV3ID0gVmlldztcbiAgcHVibGljIHNlbGVjdGVkVmlldyA9IFZpZXcudGFibGU7XG4gIHB1YmxpYyBzZWxlY3RlZEluZGV4ID0gMDtcblxuICBwdWJsaWMgaW5wdXRzOiBJR3JvdXBlZEtleXM8SGVzdGlhSW5wdXQ+W10gPSBbXTtcbiAgcHVibGljIHByb2R1Y3RzOiBJR3JvdXBlZEtleXM8UHJvZHVjdD5bXSA9IFtdO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoJ2N5Y2xlcycgaW4gY2hhbmdlcykge1xuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZEluZGV4KHRoaXMuc2VsZWN0ZWRJbmRleCk7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGUoKTtcbiAgICB9XG4gICAgaWYgKCdkYXRhU3RhdGUnIGluIGNoYW5nZXMpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gVmlldy50YWJsZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeUlkKF9pbmRleDogbnVtYmVyLCBpdGVtOiBJQ3ljbGVKU09OTEQpIHtcbiAgICByZXR1cm4gaXRlbVsnQGlkJ107XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzT3JpZ2luYWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVN0YXRlID09PSBEYXRhU3RhdGUub3JpZ2luYWw7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZSgpIHtcbiAgICBjb25zdCBpbnB1dHNQZXJDeWNsZSA9IGdyb3VwTm9kZXNCeVRlcm08SUN5Y2xlSlNPTkxELCBIZXN0aWFJbnB1dD4odGhpcy5jeWNsZXMsICdpbnB1dHMnLCB0aGlzLm9yaWdpbmFsVmFsdWVzKTtcbiAgICB0aGlzLmlucHV0cyA9IG9yZGVyQnkoZ3JvdXBwZWRLZXlzKGlucHV0c1BlckN5Y2xlKSwgWydrZXknXSwgWydhc2MnXSk7XG4gICAgY29uc3QgcHJvZHVjdHNQZXJDeWNsZSA9IGdyb3VwTm9kZXNCeVRlcm08SUN5Y2xlSlNPTkxELCBQcm9kdWN0Pih0aGlzLmN5Y2xlcywgJ3Byb2R1Y3RzJywgdGhpcy5vcmlnaW5hbFZhbHVlcyk7XG4gICAgdGhpcy5wcm9kdWN0cyA9IG9yZGVyQnkoZ3JvdXBwZWRLZXlzKHByb2R1Y3RzUGVyQ3ljbGUpLCBbJ2tleSddLCBbJ2FzYyddKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVQb3BvdmVyKHBvcG92ZXI6IGFueSwgY29udGV4dDogYW55KSB7XG4gICAgcmV0dXJuIHBvcG92ZXIuaXNPcGVuKCkgPyBwb3BvdmVyLmNsb3NlKCkgOiBwb3BvdmVyLm9wZW4oY29udGV4dCk7XG4gIH1cblxuICAvLyBSZWNhbGN1bGF0aW9uIGxvZ3NcblxuICBwcml2YXRlIHVwZGF0ZVNlbGVjdGVkSW5kZXgoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IC0xO1xuICAgIC8vIGZvcmNlIGEgcmVmcmVzaCBvZiB0aGUgbG9nc1xuICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMuc2VsZWN0ZWRJbmRleCA9IGluZGV4KSk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0SW5kZXgoeyB0YXJnZXQ6IHsgdmFsdWUgfX0pIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVTZWxlY3RlZEluZGV4KCt2YWx1ZSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb2x1bW5zIGlzLXZhcmlhYmxlIGlzLWFsaWduLWl0ZW1zLWNlbnRlciBpcy0yIG0tMFwiPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLWhpZGRlbi1tb2JpbGVcIj48L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkVmlldyA9PT0gVmlldy50YWJsZSAmJiAoaW5wdXRzLmxlbmd0aCB8fCBwcm9kdWN0cy5sZW5ndGgpXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3dcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtZGFyayBpcy1vdXRsaW5lZCBpcy1zbWFsbFwiIChjbGljayk9XCJzaG93RG93bmxvYWQgPSB0cnVlXCI+XG4gICAgICAgIDxmYS1pY29uIGljb249XCJkb3dubG9hZFwiPjwvZmEtaWNvbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJwbC0yXCI+RG93bmxvYWQgKENTVik8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLW5hcnJvdyBjb2wtc2VwIGlzLWhpZGRlbi1tb2JpbGVcIj48L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtbmFycm93XCI+XG4gICAgPGRpdiBjbGFzcz1cImZpZWxkIGhhcy1hZGRvbnNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiBbY2xhc3MuaXMtYWN0aXZlXT1cInNlbGVjdGVkVmlldyA9PT0gVmlldy50YWJsZVwiIChjbGljayk9XCJzZWxlY3RlZFZpZXcgPSBWaWV3LnRhYmxlXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwibGlzdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4+VGFibGUgdmlldzwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiBbY2xhc3MuaXMtYWN0aXZlXT1cInNlbGVjdGVkVmlldyA9PT0gVmlldy5jaGFydFwiIChjbGljayk9XCJzZWxlY3RlZFZpZXcgPSBWaWV3LmNoYXJ0XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwiY2hhcnQtYmFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9mYS1pY29uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj5DaGFydCB2aWV3PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIiAqbmdJZj1cIiFpc09yaWdpbmFsXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiBbY2xhc3MuaXMtYWN0aXZlXT1cInNlbGVjdGVkVmlldyA9PT0gVmlldy5sb2dzXCIgKGNsaWNrKT1cInNlbGVjdGVkVmlldyA9IFZpZXcubG9nc1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBpcy1zbWFsbFwiPlxuICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cImNhbGN1bGF0b3JcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2ZhLWljb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuPlJlY2FsY3VsYXRpb25zIGxvZ3M8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJweC0zIHBiLTNcIiBbY2xhc3MuaXMtaGlkZGVuXT1cInNlbGVjdGVkVmlldyAhPT0gVmlldy50YWJsZVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5wdXRzLmxlbmd0aCB8fCBwcm9kdWN0cy5sZW5ndGg7IGVsc2UgZW1wdHlUYWJsZVwiPlxuICAgIDxoZS1kYXRhLXRhYmxlIGNsYXNzPVwibWItMSBpcy1zbWFsbFwiIFtzbWFsbF09XCJ0cnVlXCIgW25iUm93c109XCJjeWNsZXMubGVuZ3RoXCIgbWF4SGVpZ2h0PVwiMzIwXCI+XG4gICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBpcy1uYXJyb3cgaXMtc3RyaXBlZFwiPlxuICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRoIGNsYXNzPVwid2lkdGgtYXV0b1wiPjwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJoYXMtYm9yZGVyLXJpZ2h0XCI+PC90aD5cbiAgICAgICAgICAgIDx0aCAqbmdJZj1cImlucHV0cy5sZW5ndGhcIiBbYXR0ci5jb2xzcGFuXT1cImlucHV0cy5sZW5ndGhcIlxuICAgICAgICAgICAgICBbY2xhc3MuaGFzLWJvcmRlci1yaWdodF09XCJwcm9kdWN0cy5sZW5ndGhcIlxuICAgICAgICAgICAgPklucHV0czwvdGg+XG4gICAgICAgICAgICA8dGggKm5nSWY9XCJwcm9kdWN0cy5sZW5ndGhcIiBbYXR0ci5jb2xzcGFuXT1cInByb2R1Y3RzLmxlbmd0aFwiPlByb2R1Y3RzPC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cIndpZHRoLWF1dG9cIj48L3RoPlxuICAgICAgICAgICAgPHRoIGNsYXNzPVwiaGFzLWJvcmRlci1yaWdodFwiPjwvdGg+XG4gICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGlucHV0IG9mIGlucHV0czsgbGV0IHBsID0gbGFzdFwiXG4gICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cImlucHV0LnZhbHVlLnRlcm0ubmFtZVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5oYXMtYm9yZGVyLXJpZ2h0XT1cInByb2R1Y3RzLmxlbmd0aCAmJiBwbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxoZS1ub2RlLWxpbmsgW25vZGVdPVwiaW5wdXQudmFsdWUudGVybVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7aW5wdXQudmFsdWUudGVybS5uYW1lIHwgZWxsaXBzaXM6MzB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9oZS1ub2RlLWxpbms+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBwcm9kdWN0IG9mIHByb2R1Y3RzOyBsZXQgcGwgPSBsYXN0XCJcbiAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwicHJvZHVjdC52YWx1ZS50ZXJtLm5hbWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aGUtbm9kZS1saW5rIFtub2RlXT1cInByb2R1Y3QudmFsdWUudGVybVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7cHJvZHVjdC52YWx1ZS50ZXJtLm5hbWUgfCBlbGxpcHNpczozMH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2hlLW5vZGUtbGluaz5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJ3aWR0aC1hdXRvXCI+PC90aD5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cImhhcy1ib3JkZXItcmlnaHRcIj5cbiAgICAgICAgICAgICAgPGEgW2hyZWZdPVwiYmFzZVVybCArICcvc2NoZW1hL0N5Y2xlI2Z1bmN0aW9uYWxVbml0J1wiIHRhcmdldD1cIl9ibGFua1wiPkZ1bmN0aW9uYWwgdW5pdDwvYT5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGlucHV0IG9mIGlucHV0czsgbGV0IHBsID0gbGFzdFwiXG4gICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cImlucHV0LnZhbHVlLnRlcm0udW5pdHNcIlxuICAgICAgICAgICAgICBbY2xhc3MuaGFzLWJvcmRlci1yaWdodF09XCJwcm9kdWN0cy5sZW5ndGggJiYgcGxcIlxuICAgICAgICAgICAgPnt7aW5wdXQudmFsdWUudGVybS51bml0c319PC90aD5cbiAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBwcm9kdWN0czsgbGV0IHBsID0gbGFzdFwiXG4gICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cInByb2R1Y3QudmFsdWUudGVybS51bml0c1wiXG4gICAgICAgICAgICA+e3twcm9kdWN0LnZhbHVlLnRlcm0udW5pdHN9fTwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGN5Y2xlIG9mIGN5Y2xlczsgdHJhY2tCeTogdHJhY2tCeUlkOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIndpZHRoLWF1dG9cIiBbYXR0ci50aXRsZV09XCJkZWZhdWx0TGFiZWwoY3ljbGUpXCI+XG4gICAgICAgICAgICAgICAgPGhlLW5vZGUtbGluayBbbm9kZV09XCJjeWNsZS50ZXJtIHx8IGN5Y2xlXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlzLW5vd3JhcCBoYXMtdGV4dC1lbGxpcHNpc1wiPnt7aSArIDF9fS4ge3tkZWZhdWx0TGFiZWwoY3ljbGUpfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9oZS1ub2RlLWxpbms+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImhhcy1ib3JkZXItcmlnaHRcIj5cbiAgICAgICAgICAgICAgICA8aGUtY3ljbGVzLWZ1bmN0aW9uYWwtdW5pdC1tZWFzdXJlIFtjeWNsZV09XCJjeWNsZVwiPjwvaGUtY3ljbGVzLWZ1bmN0aW9uYWwtdW5pdC1tZWFzdXJlPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJpcy1ub3dyYXBcIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpbnB1dCBvZiBpbnB1dHM7IGxldCBwbCA9IGxhc3RcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtYm9yZGVyLXJpZ2h0XT1cInByb2R1Y3RzLmxlbmd0aCAmJiBwbFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImlucHV0LnZhbHVlLnZhbHVlc1tjeWNsZVsnQGlkJ11dOyBlbHNlIGVtcHR5VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0cmlnZ2VyLXBvcG92ZXJcIlxuICAgICAgICAgICAgICAgICAgW25nYlBvcG92ZXJdPVwiZGV0YWlsc1wiIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcbiAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCIgI3A9XCJuZ2JQb3BvdmVyXCIgcGxhY2VtZW50PVwibGVmdFwiIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBvcG92ZXIocCwgeyBkYXRhOiBpbnB1dC52YWx1ZS52YWx1ZXNbY3ljbGVbJ0BpZCddXSwgY3ljbGU6IGN5Y2xlLCBrZXk6ICdpbnB1dHMnIH0pXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBwb2ludGVyPnt7cHJvcGVydHlWYWx1ZShpbnB1dC52YWx1ZS52YWx1ZXNbY3ljbGVbJ0BpZCddXS52YWx1ZSwgaW5wdXQudmFsdWUudGVybVsnQGlkJ10pIHwgcHJlY2lzaW9uOjMgfCBkZWZhdWx0OictJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGhlLWJsYW5rLW5vZGUtc3RhdGUgY2xhc3M9XCJtbC0xXCIgW2RhdGFTdGF0ZV09XCJkYXRhU3RhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbm9kZV09XCJpbnB1dC52YWx1ZS52YWx1ZXNbY3ljbGVbJ0BpZCddXS5ub2RlXCJcbiAgICAgICAgICAgICAgICAgICAga2V5PVwidmFsdWVcIlxuICAgICAgICAgICAgICAgICAgPjwvaGUtYmxhbmstbm9kZS1zdGF0ZT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImlzLW5vd3JhcFwiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgcHJvZHVjdHM7IGxldCBwbCA9IGxhc3RcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwcm9kdWN0LnZhbHVlLnZhbHVlc1tjeWNsZVsnQGlkJ11dOyBlbHNlIGVtcHR5VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0cmlnZ2VyLXBvcG92ZXJcIlxuICAgICAgICAgICAgICAgICAgW25nYlBvcG92ZXJdPVwiZGV0YWlsc1wiIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcbiAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCIgI3A9XCJuZ2JQb3BvdmVyXCIgcGxhY2VtZW50PVwibGVmdFwiIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBvcG92ZXIocCwgeyBkYXRhOiBwcm9kdWN0LnZhbHVlLnZhbHVlc1tjeWNsZVsnQGlkJ11dLCBjeWNsZTogY3ljbGUsIGtleTogJ3Byb2R1Y3RzJyB9KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gcG9pbnRlcj57e3Byb3BlcnR5VmFsdWUocHJvZHVjdC52YWx1ZS52YWx1ZXNbY3ljbGVbJ0BpZCddXS52YWx1ZSwgcHJvZHVjdC52YWx1ZS50ZXJtWydAaWQnXSkgfCBwcmVjaXNpb246MyB8IGRlZmF1bHQ6Jy0nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8aGUtYmxhbmstbm9kZS1zdGF0ZSBjbGFzcz1cIm1sLTFcIiBbZGF0YVN0YXRlXT1cImRhdGFTdGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtub2RlXT1cInByb2R1Y3QudmFsdWUudmFsdWVzW2N5Y2xlWydAaWQnXV0ubm9kZVwiXG4gICAgICAgICAgICAgICAgICAgIGtleT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgID48L2hlLWJsYW5rLW5vZGUtc3RhdGU+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9oZS1kYXRhLXRhYmxlPlxuXG4gICAgPGhlLWJsYW5rLW5vZGUtc3RhdGUtbm90aWNlIFtkYXRhU3RhdGVdPVwiZGF0YVN0YXRlXCI+PC9oZS1ibGFuay1ub2RlLXN0YXRlLW5vdGljZT5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPGhlLWN5Y2xlcy1yZXN1bHQgKm5nSWY9XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcuY2hhcnRcIlxuICBbY3ljbGVzXT1cImN5Y2xlc1wiXG4+PC9oZS1jeWNsZXMtcmVzdWx0PlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRWaWV3ID09PSBWaWV3LmxvZ3MgJiYgIWlzT3JpZ2luYWxcIj5cbiAgPGRpdiBjbGFzcz1cImZpZWxkIGhhcy1hZGRvbnMgcHQtMiBweC0zXCIgKm5nSWY9XCJjeWNsZXMubGVuZ3RoID4gMVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbCBpcy1zdGF0aWNcIj5TZWxlY3QgYSBDeWNsZTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdCBpcy1zbWFsbCBpcy1mdWxsd2lkdGhcIj5cbiAgICAgICAgPHNlbGVjdCAoY2hhbmdlKT1cInNlbGVjdEluZGV4KCRldmVudClcIj5cbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB2YWx1ZSBvZiBjeWNsZXM7IGxldCBpID0gaW5kZXhcIiBbdmFsdWVdPVwiaVwiPnt7aSArIDF9fS4ge3tkZWZhdWx0TGFiZWwodmFsdWUpfX08L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGhlLWN5Y2xlcy1hY3Rpdml0eS1sb2dzICpuZ0lmPVwic2VsZWN0ZWRJbmRleCA+PSAwXCJcbiAgICBbY3ljbGVdPVwiY3ljbGVzW3NlbGVjdGVkSW5kZXhdXCJcbiAgICBbb3JpZ2luYWxdPVwib3JpZ2luYWxWYWx1ZXNbc2VsZWN0ZWRJbmRleF1cIlxuICAgIFtyZWNhbGN1bGF0ZWRdPVwiY3ljbGVzW3NlbGVjdGVkSW5kZXhdXCJcbiAgPjwvaGUtY3ljbGVzLWFjdGl2aXR5LWxvZ3M+XG48L25nLWNvbnRhaW5lcj5cblxuPGhlLW5vZGUtY3N2LWV4cG9ydC1jb25maXJtICpuZ0lmPVwic2hvd0Rvd25sb2FkXCJcbiAgW25vZGVzXT1cImN5Y2xlc1wiIGZpbGVuYW1lPVwiaW5wdXRzLXByb2R1Y3RzLmNzdlwiIFtpc1VwbG9hZF09XCJmYWxzZVwiXG4gIFtoZWFkZXJLZXlzXT1cImhlYWRlcktleXNcIlxuICAoY2xvc2VkKT1cInNob3dEb3dubG9hZCA9IGZhbHNlXCJcbj48L2hlLW5vZGUtY3N2LWV4cG9ydC1jb25maXJtPlxuXG48bmctdGVtcGxhdGUgI2VtcHR5VGFibGU+XG4gIDxkaXYgY2xhc3M9XCJoYXMtdGV4dC1jZW50ZXJlZFwiPlxuICAgIDxzcGFuPk5vIGFjdGl2aXR5IGRhdGE8L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNlbXB0eVZhbHVlPlxuICA8c3Bhbj4tPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZXRhaWxzIGxldC1ub2RlPVwiY3ljbGVcIiBsZXQtZGF0YT1cImRhdGFcIiBsZXQta2V5PVwia2V5XCI+XG4gIDxwPjxiPnt7ZGVmYXVsdExhYmVsKG5vZGUpfX08L2I+PC9wPlxuICA8aGUtbm9kZS12YWx1ZS1kZXRhaWxzXG4gICAgW2RhdGFdPVwiZGF0YVwiIFtub2RlVHlwZV09XCJub2RlWydAdHlwZSddXCIgW2RhdGFLZXldPVwia2V5XCJcbiAgPjwvaGUtbm9kZS12YWx1ZS1kZXRhaWxzPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ljbGVzLWFjdGl2aXR5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jeWNsZXMvY3ljbGVzLWFjdGl2aXR5L2N5Y2xlcy1hY3Rpdml0eS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1hY3Rpdml0eS9jeWNsZXMtYWN0aXZpdHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU5QyxPQUFPLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFnQixZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RixPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTNELElBQUssSUFJSjtBQUpELFdBQUssSUFBSTtJQUNQLHVCQUFlLENBQUE7SUFDZix1QkFBZSxDQUFBO0lBQ2YscUJBQWEsQ0FBQTtBQUNmLENBQUMsRUFKSSxJQUFJLEtBQUosSUFBSSxRQUlSO0FBRUQsTUFBTSxVQUFVLEdBQUc7SUFDakIsVUFBVSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsaUJBQWlCO0lBQzNELG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLHdCQUF3QixFQUFFLDBCQUEwQjtDQUNoRyxDQUFDO0FBT0YsTUFBTSxPQUFPLHVCQUF1QjtJQUxwQztRQU9TLG1CQUFjLEdBQW1CLEVBQUUsQ0FBQztRQUVwQyxXQUFNLEdBQW1CLEVBQUUsQ0FBQztRQUk1QixrQkFBYSxHQUFHLElBQUksQ0FBQztRQUVyQixZQUFPLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDcEIsa0JBQWEsR0FBRyxhQUFhLENBQUM7UUFDOUIsaUJBQVksR0FBRyxZQUFZLENBQUM7UUFDNUIsZUFBVSxHQUFHLFVBQVUsQ0FBQztRQUN4QixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixTQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ1osaUJBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzFCLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBRWxCLFdBQU0sR0FBZ0MsRUFBRSxDQUFDO1FBQ3pDLGFBQVEsR0FBNEIsRUFBRSxDQUFDO0tBMEMvQztJQXhDQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxRQUFRLElBQUksT0FBTyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDN0MsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDdEI7UUFDRCxJQUFJLFdBQVcsSUFBSSxPQUFPLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVNLFNBQVMsQ0FBQyxNQUFjLEVBQUUsSUFBa0I7UUFDakQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLFFBQVEsQ0FBQztJQUMvQyxDQUFDO0lBRU8sTUFBTTtRQUNaLE1BQU0sY0FBYyxHQUFHLGdCQUFnQixDQUE0QixJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDL0csSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQXdCLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvRyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRU0sYUFBYSxDQUFDLE9BQVksRUFBRSxPQUFZO1FBQzdDLE9BQU8sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELHFCQUFxQjtJQUViLG1CQUFtQixDQUFDLEtBQWE7UUFDdkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4Qiw4QkFBOEI7UUFDOUIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTSxXQUFXLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBQztRQUNyQyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7O29IQTdEVSx1QkFBdUI7d0dBQXZCLHVCQUF1Qix1TUN6QnBDLG00UUE4TEE7MkZEckthLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxvQkFBb0I7OEJBTXZCLGNBQWM7c0JBRHBCLEtBQUs7Z0JBR0MsTUFBTTtzQkFEWixLQUFLO2dCQUdDLFNBQVM7c0JBRGYsS0FBSztnQkFHQyxhQUFhO3NCQURuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhU3RhdGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL2FwaSc7XG5pbXBvcnQgeyBJQ3ljbGVKU09OTEQsIElucHV0IGFzIEhlc3RpYUlucHV0LCBQcm9kdWN0IH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IG9yZGVyQnkgZnJvbSAnbG9kYXNoLm9yZGVyYnknO1xuaW1wb3J0IHsgcHJvcGVydHlWYWx1ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMvZGlzdC90ZXJtJztcblxuaW1wb3J0IHsgZ3JvdXBOb2Rlc0J5VGVybSwgSUdyb3VwZWRLZXlzLCBncm91cHBlZEtleXMgfSBmcm9tICcuLi8uLi9jb21tb24vbm9kZS11dGlscyc7XG5pbXBvcnQgeyBiYXNlVXJsLCBkZWZhdWx0TGFiZWwgfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbHMnO1xuXG5lbnVtIFZpZXcge1xuICB0YWJsZSA9ICd0YWJsZScsXG4gIGNoYXJ0ID0gJ2NoYXJ0JyxcbiAgbG9ncyA9ICdsb2dzJ1xufVxuXG5jb25zdCBoZWFkZXJLZXlzID0gW1xuICAnY3ljbGUuaWQnLCAnY3ljbGUuQGlkJywgJ2N5Y2xlLmlucHV0cy4nLCAnY3ljbGUucHJvZHVjdHMuJyxcbiAgJ3RyYW5zZm9ybWF0aW9uLmlkJywgJ3RyYW5zZm9ybWF0aW9uLkBpZCcsICd0cmFuc2Zvcm1hdGlvbi5pbnB1dHMuJywgJ3RyYW5zZm9ybWF0aW9uLnByb2R1Y3RzLidcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWN5Y2xlcy1hY3Rpdml0eScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jeWNsZXMtYWN0aXZpdHkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jeWNsZXMtYWN0aXZpdHkuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDeWNsZXNBY3Rpdml0eUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvcmlnaW5hbFZhbHVlczogSUN5Y2xlSlNPTkxEW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGN5Y2xlczogSUN5Y2xlSlNPTkxEW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGRhdGFTdGF0ZT86IERhdGFTdGF0ZTtcbiAgQElucHV0KClcbiAgcHVibGljIGVuYWJsZUNvbXBhcmUgPSB0cnVlO1xuXG4gIHB1YmxpYyBiYXNlVXJsID0gYmFzZVVybCgpO1xuICBwdWJsaWMgcHJvcGVydHlWYWx1ZSA9IHByb3BlcnR5VmFsdWU7XG4gIHB1YmxpYyBkZWZhdWx0TGFiZWwgPSBkZWZhdWx0TGFiZWw7XG4gIHB1YmxpYyBoZWFkZXJLZXlzID0gaGVhZGVyS2V5cztcbiAgcHVibGljIHNob3dEb3dubG9hZCA9IGZhbHNlO1xuICBwdWJsaWMgVmlldyA9IFZpZXc7XG4gIHB1YmxpYyBzZWxlY3RlZFZpZXcgPSBWaWV3LnRhYmxlO1xuICBwdWJsaWMgc2VsZWN0ZWRJbmRleCA9IDA7XG5cbiAgcHVibGljIGlucHV0czogSUdyb3VwZWRLZXlzPEhlc3RpYUlucHV0PltdID0gW107XG4gIHB1YmxpYyBwcm9kdWN0czogSUdyb3VwZWRLZXlzPFByb2R1Y3Q+W10gPSBbXTtcblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKCdjeWNsZXMnIGluIGNoYW5nZXMpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRJbmRleCh0aGlzLnNlbGVjdGVkSW5kZXgpO1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlKCk7XG4gICAgfVxuICAgIGlmICgnZGF0YVN0YXRlJyBpbiBjaGFuZ2VzKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVmlldyA9IFZpZXcudGFibGU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRyYWNrQnlJZChfaW5kZXg6IG51bWJlciwgaXRlbTogSUN5Y2xlSlNPTkxEKSB7XG4gICAgcmV0dXJuIGl0ZW1bJ0BpZCddO1xuICB9XG5cbiAgcHVibGljIGdldCBpc09yaWdpbmFsKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGFTdGF0ZSA9PT0gRGF0YVN0YXRlLm9yaWdpbmFsO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGUoKSB7XG4gICAgY29uc3QgaW5wdXRzUGVyQ3ljbGUgPSBncm91cE5vZGVzQnlUZXJtPElDeWNsZUpTT05MRCwgSGVzdGlhSW5wdXQ+KHRoaXMuY3ljbGVzLCAnaW5wdXRzJywgdGhpcy5vcmlnaW5hbFZhbHVlcyk7XG4gICAgdGhpcy5pbnB1dHMgPSBvcmRlckJ5KGdyb3VwcGVkS2V5cyhpbnB1dHNQZXJDeWNsZSksIFsna2V5J10sIFsnYXNjJ10pO1xuICAgIGNvbnN0IHByb2R1Y3RzUGVyQ3ljbGUgPSBncm91cE5vZGVzQnlUZXJtPElDeWNsZUpTT05MRCwgUHJvZHVjdD4odGhpcy5jeWNsZXMsICdwcm9kdWN0cycsIHRoaXMub3JpZ2luYWxWYWx1ZXMpO1xuICAgIHRoaXMucHJvZHVjdHMgPSBvcmRlckJ5KGdyb3VwcGVkS2V5cyhwcm9kdWN0c1BlckN5Y2xlKSwgWydrZXknXSwgWydhc2MnXSk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlUG9wb3Zlcihwb3BvdmVyOiBhbnksIGNvbnRleHQ6IGFueSkge1xuICAgIHJldHVybiBwb3BvdmVyLmlzT3BlbigpID8gcG9wb3Zlci5jbG9zZSgpIDogcG9wb3Zlci5vcGVuKGNvbnRleHQpO1xuICB9XG5cbiAgLy8gUmVjYWxjdWxhdGlvbiBsb2dzXG5cbiAgcHJpdmF0ZSB1cGRhdGVTZWxlY3RlZEluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAtMTtcbiAgICAvLyBmb3JjZSBhIHJlZnJlc2ggb2YgdGhlIGxvZ3NcbiAgICBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLnNlbGVjdGVkSW5kZXggPSBpbmRleCkpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdEluZGV4KHsgdGFyZ2V0OiB7IHZhbHVlIH19KSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlU2VsZWN0ZWRJbmRleCgrdmFsdWUpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29sdW1ucyBpcy12YXJpYWJsZSBpcy1hbGlnbi1pdGVtcy1jZW50ZXIgaXMtMiBtLTBcIj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1oaWRkZW4tbW9iaWxlXCI+PC9kaXY+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcudGFibGUgJiYgKGlucHV0cy5sZW5ndGggfHwgcHJvZHVjdHMubGVuZ3RoKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtbmFycm93XCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLWRhcmsgaXMtb3V0bGluZWQgaXMtc21hbGxcIiAoY2xpY2spPVwic2hvd0Rvd25sb2FkID0gdHJ1ZVwiPlxuICAgICAgICA8ZmEtaWNvbiBpY29uPVwiZG93bmxvYWRcIj48L2ZhLWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicGwtMlwiPkRvd25sb2FkIChDU1YpPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3cgY29sLXNlcCBpcy1oaWRkZW4tbW9iaWxlXCI+PC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLW5hcnJvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgW2NsYXNzLmlzLWFjdGl2ZV09XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcudGFibGVcIiAoY2xpY2spPVwic2VsZWN0ZWRWaWV3ID0gVmlldy50YWJsZVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBpcy1zbWFsbFwiPlxuICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cImxpc3RcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2ZhLWljb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuPlRhYmxlIHZpZXc8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgW2NsYXNzLmlzLWFjdGl2ZV09XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcuY2hhcnRcIiAoY2xpY2spPVwic2VsZWN0ZWRWaWV3ID0gVmlldy5jaGFydFwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBpcy1zbWFsbFwiPlxuICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cImNoYXJ0LWJhclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4+Q2hhcnQgdmlldzwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCIgKm5nSWY9XCIhaXNPcmlnaW5hbFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgW2NsYXNzLmlzLWFjdGl2ZV09XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcubG9nc1wiIChjbGljayk9XCJzZWxlY3RlZFZpZXcgPSBWaWV3LmxvZ3NcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gaXMtc21hbGxcIj5cbiAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJjYWxjdWxhdG9yXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9mYS1pY29uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj5SZWNhbGN1bGF0aW9ucyBsb2dzPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwicHgtMyBwYi0zXCIgW2NsYXNzLmlzLWhpZGRlbl09XCJzZWxlY3RlZFZpZXcgIT09IFZpZXcudGFibGVcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlucHV0cy5sZW5ndGggfHwgcHJvZHVjdHMubGVuZ3RoOyBlbHNlIGVtcHR5VGFibGVcIj5cbiAgICA8aGUtZGF0YS10YWJsZSBjbGFzcz1cIm1iLTEgaXMtc21hbGxcIiBbc21hbGxdPVwidHJ1ZVwiIFtuYlJvd3NdPVwiY3ljbGVzLmxlbmd0aFwiIG1heEhlaWdodD1cIjMyMFwiPlxuICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgaXMtbmFycm93IGlzLXN0cmlwZWRcIj5cbiAgICAgICAgPHRoZWFkPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cIndpZHRoLWF1dG9cIj48L3RoPlxuICAgICAgICAgICAgPHRoIGNsYXNzPVwiaGFzLWJvcmRlci1yaWdodFwiPjwvdGg+XG4gICAgICAgICAgICA8dGggKm5nSWY9XCJpbnB1dHMubGVuZ3RoXCIgW2F0dHIuY29sc3Bhbl09XCJpbnB1dHMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmhhcy1ib3JkZXItcmlnaHRdPVwicHJvZHVjdHMubGVuZ3RoXCJcbiAgICAgICAgICAgID5JbnB1dHM8L3RoPlxuICAgICAgICAgICAgPHRoICpuZ0lmPVwicHJvZHVjdHMubGVuZ3RoXCIgW2F0dHIuY29sc3Bhbl09XCJwcm9kdWN0cy5sZW5ndGhcIj5Qcm9kdWN0czwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJ3aWR0aC1hdXRvXCI+PC90aD5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cImhhcy1ib3JkZXItcmlnaHRcIj48L3RoPlxuICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBpbnB1dCBvZiBpbnB1dHM7IGxldCBwbCA9IGxhc3RcIlxuICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJpbnB1dC52YWx1ZS50ZXJtLm5hbWVcIlxuICAgICAgICAgICAgICBbY2xhc3MuaGFzLWJvcmRlci1yaWdodF09XCJwcm9kdWN0cy5sZW5ndGggJiYgcGxcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aGUtbm9kZS1saW5rIFtub2RlXT1cImlucHV0LnZhbHVlLnRlcm1cIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cImlucHV0LnZhbHVlLnRlcm0ubmFtZSB8IGVsbGlwc2lzOjMwIHwgY29tcG91bmRcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDwvaGUtbm9kZS1saW5rPlxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBwcm9kdWN0czsgbGV0IHBsID0gbGFzdFwiXG4gICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cInByb2R1Y3QudmFsdWUudGVybS5uYW1lXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGhlLW5vZGUtbGluayBbbm9kZV09XCJwcm9kdWN0LnZhbHVlLnRlcm1cIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cInByb2R1Y3QudmFsdWUudGVybS5uYW1lIHwgZWxsaXBzaXM6MzAgfCBjb21wb3VuZFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9oZS1ub2RlLWxpbms+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRoIGNsYXNzPVwid2lkdGgtYXV0b1wiPjwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJoYXMtYm9yZGVyLXJpZ2h0XCI+XG4gICAgICAgICAgICAgIDxhIFtocmVmXT1cImJhc2VVcmwgKyAnL3NjaGVtYS9DeWNsZSNmdW5jdGlvbmFsVW5pdCdcIiB0YXJnZXQ9XCJfYmxhbmtcIj5GdW5jdGlvbmFsIHVuaXQ8L2E+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBpbnB1dCBvZiBpbnB1dHM7IGxldCBwbCA9IGxhc3RcIlxuICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJpbnB1dC52YWx1ZS50ZXJtLnVuaXRzXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmhhcy1ib3JkZXItcmlnaHRdPVwicHJvZHVjdHMubGVuZ3RoICYmIHBsXCJcbiAgICAgICAgICAgICAgW2lubmVySHRtbF09XCJpbnB1dC52YWx1ZS50ZXJtLnVuaXRzIHwgY29tcG91bmRcIlxuICAgICAgICAgICAgPjwvdGg+XG4gICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgcHJvZHVjdHM7IGxldCBwbCA9IGxhc3RcIlxuICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJwcm9kdWN0LnZhbHVlLnRlcm0udW5pdHNcIlxuICAgICAgICAgICAgICBbaW5uZXJIdG1sXT1cInByb2R1Y3QudmFsdWUudGVybS51bml0cyB8IGNvbXBvdW5kXCJcbiAgICAgICAgICAgID48L3RoPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGhlYWQ+XG4gICAgICAgIDx0Ym9keT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjeWNsZSBvZiBjeWNsZXM7IHRyYWNrQnk6IHRyYWNrQnlJZDsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ3aWR0aC1hdXRvXCIgW2F0dHIudGl0bGVdPVwiZGVmYXVsdExhYmVsKGN5Y2xlKVwiPlxuICAgICAgICAgICAgICAgIDxoZS1ub2RlLWxpbmsgW25vZGVdPVwiY3ljbGUudGVybSB8fCBjeWNsZVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpcy1ub3dyYXAgaGFzLXRleHQtZWxsaXBzaXNcIj57e2kgKyAxfX0uIHt7ZGVmYXVsdExhYmVsKGN5Y2xlKX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvaGUtbm9kZS1saW5rPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJoYXMtYm9yZGVyLXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgPGhlLWN5Y2xlcy1mdW5jdGlvbmFsLXVuaXQtbWVhc3VyZSBbY3ljbGVdPVwiY3ljbGVcIj48L2hlLWN5Y2xlcy1mdW5jdGlvbmFsLXVuaXQtbWVhc3VyZT5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiaXMtbm93cmFwXCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaW5wdXQgb2YgaW5wdXRzOyBsZXQgcGwgPSBsYXN0XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaGFzLWJvcmRlci1yaWdodF09XCJwcm9kdWN0cy5sZW5ndGggJiYgcGxcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpbnB1dC52YWx1ZS52YWx1ZXNbY3ljbGVbJ0BpZCddXTsgZWxzZSBlbXB0eVZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHJpZ2dlci1wb3BvdmVyXCJcbiAgICAgICAgICAgICAgICAgIFtuZ2JQb3BvdmVyXT1cImRldGFpbHNcIiBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXG4gICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cIm1hbnVhbFwiICNwPVwibmdiUG9wb3ZlclwiIHBsYWNlbWVudD1cImxlZnRcIiBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVQb3BvdmVyKHAsIHsgZGF0YTogaW5wdXQudmFsdWUudmFsdWVzW2N5Y2xlWydAaWQnXV0sIGN5Y2xlOiBjeWNsZSwga2V5OiAnaW5wdXRzJyB9KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gcG9pbnRlcj57e3Byb3BlcnR5VmFsdWUoaW5wdXQudmFsdWUudmFsdWVzW2N5Y2xlWydAaWQnXV0udmFsdWUsIGlucHV0LnZhbHVlLnRlcm1bJ0BpZCddKSB8IHByZWNpc2lvbjozIHwgZGVmYXVsdDonLSd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxoZS1ibGFuay1ub2RlLXN0YXRlIGNsYXNzPVwibWwtMVwiIFtkYXRhU3RhdGVdPVwiZGF0YVN0YXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW25vZGVdPVwiaW5wdXQudmFsdWUudmFsdWVzW2N5Y2xlWydAaWQnXV0ubm9kZVwiXG4gICAgICAgICAgICAgICAgICAgIGtleT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgID48L2hlLWJsYW5rLW5vZGUtc3RhdGU+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJpcy1ub3dyYXBcIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwcm9kdWN0IG9mIHByb2R1Y3RzOyBsZXQgcGwgPSBsYXN0XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicHJvZHVjdC52YWx1ZS52YWx1ZXNbY3ljbGVbJ0BpZCddXTsgZWxzZSBlbXB0eVZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHJpZ2dlci1wb3BvdmVyXCJcbiAgICAgICAgICAgICAgICAgIFtuZ2JQb3BvdmVyXT1cImRldGFpbHNcIiBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXG4gICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cIm1hbnVhbFwiICNwPVwibmdiUG9wb3ZlclwiIHBsYWNlbWVudD1cImxlZnRcIiBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVQb3BvdmVyKHAsIHsgZGF0YTogcHJvZHVjdC52YWx1ZS52YWx1ZXNbY3ljbGVbJ0BpZCddXSwgY3ljbGU6IGN5Y2xlLCBrZXk6ICdwcm9kdWN0cycgfSlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIHBvaW50ZXI+e3twcm9wZXJ0eVZhbHVlKHByb2R1Y3QudmFsdWUudmFsdWVzW2N5Y2xlWydAaWQnXV0udmFsdWUsIHByb2R1Y3QudmFsdWUudGVybVsnQGlkJ10pIHwgcHJlY2lzaW9uOjMgfCBkZWZhdWx0OictJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGhlLWJsYW5rLW5vZGUtc3RhdGUgY2xhc3M9XCJtbC0xXCIgW2RhdGFTdGF0ZV09XCJkYXRhU3RhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbm9kZV09XCJwcm9kdWN0LnZhbHVlLnZhbHVlc1tjeWNsZVsnQGlkJ11dLm5vZGVcIlxuICAgICAgICAgICAgICAgICAgICBrZXk9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICA+PC9oZS1ibGFuay1ub2RlLXN0YXRlPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICAgIDwvaGUtZGF0YS10YWJsZT5cblxuICAgIDxoZS1ibGFuay1ub2RlLXN0YXRlLW5vdGljZSBbZGF0YVN0YXRlXT1cImRhdGFTdGF0ZVwiPjwvaGUtYmxhbmstbm9kZS1zdGF0ZS1ub3RpY2U+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxoZS1jeWNsZXMtcmVzdWx0ICpuZ0lmPVwic2VsZWN0ZWRWaWV3ID09PSBWaWV3LmNoYXJ0XCJcbiAgW2N5Y2xlc109XCJjeWNsZXNcIlxuPjwvaGUtY3ljbGVzLXJlc3VsdD5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkVmlldyA9PT0gVmlldy5sb2dzICYmICFpc09yaWdpbmFsXCI+XG4gIDxkaXYgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zIHB0LTIgcHgtM1wiICpuZ0lmPVwiY3ljbGVzLmxlbmd0aCA+IDFcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJidXR0b24gaXMtc21hbGwgaXMtc3RhdGljXCI+U2VsZWN0IGEgQ3ljbGU8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRyb2wgaXMtZXhwYW5kZWRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QgaXMtc21hbGwgaXMtZnVsbHdpZHRoXCI+XG4gICAgICAgIDxzZWxlY3QgKGNoYW5nZSk9XCJzZWxlY3RJbmRleCgkZXZlbnQpXCI+XG4gICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdmFsdWUgb2YgY3ljbGVzOyBsZXQgaSA9IGluZGV4XCIgW3ZhbHVlXT1cImlcIj57e2kgKyAxfX0uIHt7ZGVmYXVsdExhYmVsKHZhbHVlKX19PC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxoZS1jeWNsZXMtYWN0aXZpdHktbG9ncyAqbmdJZj1cInNlbGVjdGVkSW5kZXggPj0gMFwiXG4gICAgW2N5Y2xlXT1cImN5Y2xlc1tzZWxlY3RlZEluZGV4XVwiXG4gICAgW29yaWdpbmFsXT1cIm9yaWdpbmFsVmFsdWVzW3NlbGVjdGVkSW5kZXhdXCJcbiAgICBbcmVjYWxjdWxhdGVkXT1cImN5Y2xlc1tzZWxlY3RlZEluZGV4XVwiXG4gID48L2hlLWN5Y2xlcy1hY3Rpdml0eS1sb2dzPlxuPC9uZy1jb250YWluZXI+XG5cbjxoZS1ub2RlLWNzdi1leHBvcnQtY29uZmlybSAqbmdJZj1cInNob3dEb3dubG9hZFwiXG4gIFtub2Rlc109XCJjeWNsZXNcIiBmaWxlbmFtZT1cImlucHV0cy1wcm9kdWN0cy5jc3ZcIiBbaXNVcGxvYWRdPVwiZmFsc2VcIlxuICBbaGVhZGVyS2V5c109XCJoZWFkZXJLZXlzXCJcbiAgKGNsb3NlZCk9XCJzaG93RG93bmxvYWQgPSBmYWxzZVwiXG4+PC9oZS1ub2RlLWNzdi1leHBvcnQtY29uZmlybT5cblxuPG5nLXRlbXBsYXRlICNlbXB0eVRhYmxlPlxuICA8ZGl2IGNsYXNzPVwiaGFzLXRleHQtY2VudGVyZWRcIj5cbiAgICA8c3Bhbj5ObyBhY3Rpdml0eSBkYXRhPC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZW1wdHlWYWx1ZT5cbiAgPHNwYW4+LTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGV0YWlscyBsZXQtbm9kZT1cImN5Y2xlXCIgbGV0LWRhdGE9XCJkYXRhXCIgbGV0LWtleT1cImtleVwiPlxuICA8cD48Yj57e2RlZmF1bHRMYWJlbChub2RlKX19PC9iPjwvcD5cbiAgPGhlLW5vZGUtdmFsdWUtZGV0YWlsc1xuICAgIFtkYXRhXT1cImRhdGFcIiBbbm9kZVR5cGVdPVwibm9kZVsnQHR5cGUnXVwiIFtkYXRhS2V5XT1cImtleVwiXG4gID48L2hlLW5vZGUtdmFsdWUtZGV0YWlscz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|