@agorapulse/ui-components 17.4.15 → 17.5.0-beta.1

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.
Files changed (69) hide show
  1. package/agorapulse-ui-components-1.0.0-SNAPSHOT.tgz +0 -0
  2. package/agorapulse-ui-components-17.5.0-beta.1.tgz +0 -0
  3. package/avatar/avatar.component.d.ts +145 -45
  4. package/esm2022/autocomplete/autocomplete.component.mjs +2 -2
  5. package/esm2022/avatar/avatar.component.mjs +162 -190
  6. package/esm2022/legacy/select/select.component.mjs +2 -2
  7. package/esm2022/select/dropdown-item-multiple-one-line/dropdown-item-multiple-one-line.component.mjs +2 -2
  8. package/esm2022/select/dropdown-item-multiple-two-lines/dropdown-item-multiple-two-lines.component.mjs +2 -2
  9. package/esm2022/select/dropdown-item-single-one-line/dropdown-item-single-one-line.component.mjs +2 -2
  10. package/esm2022/select/dropdown-item-single-two-lines/dropdown-item-single-two-lines.component.mjs +2 -2
  11. package/esm2022/select/select-label-multiple/select-label-multiple.component.mjs +2 -2
  12. package/esm2022/select/select-label-single/select-label-single.component.mjs +1 -1
  13. package/esm2022/toggle/toggle.component.mjs +5 -5
  14. package/fesm2022/agorapulse-ui-components-add-comment.mjs.map +1 -1
  15. package/fesm2022/agorapulse-ui-components-autocomplete.mjs +1 -1
  16. package/fesm2022/agorapulse-ui-components-autocomplete.mjs.map +1 -1
  17. package/fesm2022/agorapulse-ui-components-avatar.mjs +162 -190
  18. package/fesm2022/agorapulse-ui-components-avatar.mjs.map +1 -1
  19. package/fesm2022/agorapulse-ui-components-badge.mjs.map +1 -1
  20. package/fesm2022/agorapulse-ui-components-button.mjs.map +1 -1
  21. package/fesm2022/agorapulse-ui-components-checkbox.mjs.map +1 -1
  22. package/fesm2022/agorapulse-ui-components-confirm-modal.mjs.map +1 -1
  23. package/fesm2022/agorapulse-ui-components-counter.mjs.map +1 -1
  24. package/fesm2022/agorapulse-ui-components-datepicker.mjs.map +1 -1
  25. package/fesm2022/agorapulse-ui-components-directives.mjs.map +1 -1
  26. package/fesm2022/agorapulse-ui-components-dot-stepper.mjs.map +1 -1
  27. package/fesm2022/agorapulse-ui-components-form-field.mjs.map +1 -1
  28. package/fesm2022/agorapulse-ui-components-form-message.mjs.map +1 -1
  29. package/fesm2022/agorapulse-ui-components-icon-button.mjs.map +1 -1
  30. package/fesm2022/agorapulse-ui-components-infobox.mjs.map +1 -1
  31. package/fesm2022/agorapulse-ui-components-input-group.mjs.map +1 -1
  32. package/fesm2022/agorapulse-ui-components-input-search.mjs.map +1 -1
  33. package/fesm2022/agorapulse-ui-components-input.mjs.map +1 -1
  34. package/fesm2022/agorapulse-ui-components-labels-selector.mjs.map +1 -1
  35. package/fesm2022/agorapulse-ui-components-labels.mjs.map +1 -1
  36. package/fesm2022/agorapulse-ui-components-legacy-input.mjs.map +1 -1
  37. package/fesm2022/agorapulse-ui-components-legacy-select.mjs +1 -1
  38. package/fesm2022/agorapulse-ui-components-legacy-select.mjs.map +1 -1
  39. package/fesm2022/agorapulse-ui-components-legacy-textarea.mjs.map +1 -1
  40. package/fesm2022/agorapulse-ui-components-media-display-overlay.mjs.map +1 -1
  41. package/fesm2022/agorapulse-ui-components-modal.mjs.map +1 -1
  42. package/fesm2022/agorapulse-ui-components-neo-datepicker.mjs.map +1 -1
  43. package/fesm2022/agorapulse-ui-components-notification.mjs.map +1 -1
  44. package/fesm2022/agorapulse-ui-components-paginator.mjs.map +1 -1
  45. package/fesm2022/agorapulse-ui-components-password-input.mjs.map +1 -1
  46. package/fesm2022/agorapulse-ui-components-phone-number-input.mjs.map +1 -1
  47. package/fesm2022/agorapulse-ui-components-popmenu.mjs.map +1 -1
  48. package/fesm2022/agorapulse-ui-components-radio.mjs.map +1 -1
  49. package/fesm2022/agorapulse-ui-components-range-slider.mjs.map +1 -1
  50. package/fesm2022/agorapulse-ui-components-select.mjs +6 -6
  51. package/fesm2022/agorapulse-ui-components-select.mjs.map +1 -1
  52. package/fesm2022/agorapulse-ui-components-slide-toggle.mjs.map +1 -1
  53. package/fesm2022/agorapulse-ui-components-snackbars-thread.mjs.map +1 -1
  54. package/fesm2022/agorapulse-ui-components-social-button.mjs.map +1 -1
  55. package/fesm2022/agorapulse-ui-components-split-button.mjs.map +1 -1
  56. package/fesm2022/agorapulse-ui-components-status-card.mjs.map +1 -1
  57. package/fesm2022/agorapulse-ui-components-status.mjs.map +1 -1
  58. package/fesm2022/agorapulse-ui-components-stepper.mjs.map +1 -1
  59. package/fesm2022/agorapulse-ui-components-tag.mjs.map +1 -1
  60. package/fesm2022/agorapulse-ui-components-text-measurement.mjs.map +1 -1
  61. package/fesm2022/agorapulse-ui-components-textarea.mjs.map +1 -1
  62. package/fesm2022/agorapulse-ui-components-toggle.mjs +4 -4
  63. package/fesm2022/agorapulse-ui-components-toggle.mjs.map +1 -1
  64. package/fesm2022/agorapulse-ui-components-tooltip.mjs.map +1 -1
  65. package/fesm2022/agorapulse-ui-components.mjs.map +1 -1
  66. package/package.json +54 -54
  67. package/select/select-label-multiple/select-label-multiple.component.d.ts +1 -1
  68. package/tooltip/tooltip.directive.d.ts +1 -1
  69. package/agorapulse-ui-components-17.4.15.tgz +0 -0
@@ -1,12 +1,66 @@
1
- import { SymbolComponent, apFacebookOfficial, apGoogleMyBusinessOfficial, apLinkedinOfficial, apPinterestOfficial, apNsThreadsLogo, apShowTheaterMaskHappy, apSingleNeutral, apTiktokOfficial, apWebBlogs, apWebNews, apXOfficial, apYoutubeOfficial, apBlueskyOfficial, } from '@agorapulse/ui-symbol';
2
- import { NgClass, NgOptimizedImage } from '@angular/common';
3
- import { ChangeDetectionStrategy, Component, HostBinding, Input, ViewEncapsulation, booleanAttribute, } from '@angular/core';
4
- import { LetDirective } from '@ngrx/component';
5
- import { BehaviorSubject, Observable, combineLatest, map, of } from 'rxjs';
1
+ import { apBlueskyOfficial, apFacebookOfficial, apGoogleMyBusinessOfficial, apLinkedinOfficial, apNsThreadsLogo, apPinterestOfficial, apTiktokOfficial, apWebBlogs, apWebNews, apXOfficial, apYoutubeOfficial, SymbolComponent, } from '@agorapulse/ui-symbol';
2
+ import { NgClass, NgOptimizedImage, NgStyle } from '@angular/common';
3
+ import { booleanAttribute, ChangeDetectionStrategy, Component, computed, effect, input, signal, untracked } from '@angular/core';
6
4
  import * as i0 from "@angular/core";
7
5
  import * as i1 from "@agorapulse/ui-symbol";
8
- export const AVATAR_NETWORK_ARRAY = ['facebook', 'linkedin', 'twitter', 'X', 'youtube', 'googleMyBusiness', 'google', 'instagram', 'threads', 'tiktok', 'pinterest', 'webBlog', 'webNews', 'bluesky'];
9
- const ROUND_BORDER_AVATAR_NETWORK = ['facebook', 'twitter', 'youtube', 'tiktok', 'X', 'pinterest', 'webBlog', 'webNews', 'threads', 'bluesky'];
6
+ import * as i2 from "@angular/common";
7
+ export const networkSymbolByNetwork = {
8
+ bluesky: {
9
+ round: true,
10
+ symbol: apBlueskyOfficial,
11
+ },
12
+ facebook: {
13
+ round: true,
14
+ symbol: apFacebookOfficial,
15
+ },
16
+ google: {
17
+ round: false,
18
+ symbol: apGoogleMyBusinessOfficial,
19
+ },
20
+ instagram: {
21
+ round: false,
22
+ symbol: 'instagram-official', // embedded
23
+ },
24
+ linkedin: {
25
+ round: false,
26
+ symbol: apLinkedinOfficial,
27
+ },
28
+ pinterest: {
29
+ round: true,
30
+ symbol: apPinterestOfficial,
31
+ },
32
+ threads: {
33
+ round: true,
34
+ symbol: apNsThreadsLogo,
35
+ },
36
+ tiktok: {
37
+ round: true,
38
+ symbol: apTiktokOfficial,
39
+ },
40
+ twitter: {
41
+ round: true,
42
+ symbol: apXOfficial,
43
+ },
44
+ webBlog: {
45
+ round: true,
46
+ symbol: apWebBlogs,
47
+ },
48
+ webNews: {
49
+ round: true,
50
+ symbol: apWebNews,
51
+ },
52
+ X: {
53
+ round: true,
54
+ symbol: apXOfficial,
55
+ },
56
+ youtube: {
57
+ round: true,
58
+ symbol: apYoutubeOfficial,
59
+ },
60
+ };
61
+ function toSymbol(symbol) {
62
+ return typeof symbol == 'string' ? symbol : symbol.name;
63
+ }
10
64
  const onlineIconSizeByAvatarSize = {
11
65
  56: 16,
12
66
  48: 12,
@@ -43,198 +97,116 @@ const initialSizeByAvatarSize = {
43
97
  24: 14,
44
98
  16: 10,
45
99
  };
100
+ const automaticBigSymbolNetwork = ['youtube'];
46
101
  export class AvatarComponent {
47
- symbolRegistry;
48
- elementRef;
49
- networkSymbolByNetwork = {
50
- facebook: 'facebook-official',
51
- instagram: 'instagram-official',
52
- X: 'x-official',
53
- twitter: 'x-official',
54
- linkedin: 'linkedin-official',
55
- tiktok: 'tiktok-official',
56
- youtube: 'youtube-official',
57
- pinterest: 'pinterest-official',
58
- threads: 'ns-threads-logo',
59
- googleMyBusiness: 'google-my-business-official',
60
- google: 'google-my-business-official',
61
- webNews: 'web-news',
62
- webBlog: 'web-blogs',
63
- bluesky: 'bluesky-official'
64
- };
65
- size$ = new BehaviorSubject(40);
66
- profilePicture$ = new BehaviorSubject('');
67
- network$ = new BehaviorSubject(undefined);
68
- alternativeText$ = new BehaviorSubject('');
69
- anonymous$ = new BehaviorSubject(false);
70
- username$ = new BehaviorSubject('');
71
- online$ = new BehaviorSubject(false);
72
- showInitials$ = new BehaviorSubject(false);
73
- rounded$ = new BehaviorSubject(true);
74
- set alternativeText(alternativeText) {
75
- this.alternativeText$.next(alternativeText);
102
+ ngStyle;
103
+ profilePicture = input();
104
+ alt = input('');
105
+ network = input(undefined, {
106
+ transform: (v) => (v !== undefined ? v : v),
107
+ });
108
+ size = input(40);
109
+ username = input('');
110
+ showInitials = input();
111
+ bigNetwork = input(false);
112
+ anonymous = input(false);
113
+ online = input(false);
114
+ hideNetwork = input(false, { alias: 'youtubeAvatarMode' });
115
+ rounded = input(true, { transform: booleanAttribute });
116
+ imageError = signal(false);
117
+ backgroundView = computed(() => this.buildBackgroundView());
118
+ overlayView = computed(() => this.buildOverlayView());
119
+ useBigNetwork = computed(() => {
120
+ return (this.automaticBigSymbolNetwork() || this.bigNetwork()) && !this.hideNetwork();
121
+ });
122
+ automaticBigSymbolNetwork = computed(() => {
123
+ return automaticBigSymbolNetwork.includes(this.network());
124
+ });
125
+ constructor(symbolRegistry, ngStyle) {
126
+ this.ngStyle = ngStyle;
127
+ symbolRegistry.registerSymbols(Object.values(networkSymbolByNetwork).flatMap(({ symbol }) => (typeof symbol !== 'string' ? [symbol] : [])));
128
+ effect(() => {
129
+ this.ngStyle.ngStyle = this.buildHostStyle();
130
+ this.ngStyle.ngDoCheck();
131
+ });
132
+ effect(() => {
133
+ this.profilePicture(); // on change
134
+ untracked(() => this.imageError.set(false));
135
+ });
76
136
  }
77
- set anonymous(anonymous) {
78
- this.anonymous$.next(anonymous);
79
- }
80
- set username(username) {
81
- this.username$.next(username);
137
+ onImageError() {
138
+ this.imageError.set(true);
82
139
  }
83
- set network(network) {
84
- this.network$.next(network);
85
- if (network === 'youtube') {
86
- this.youtubeAvatar = true;
140
+ buildBackgroundView() {
141
+ let bgView = {};
142
+ if (this.useBigNetwork()) {
143
+ bgView = { mode: 'symbol', symbolId: toSymbol(networkSymbolByNetwork[this.network()].symbol), big: true };
87
144
  }
88
- this.elementRef.nativeElement.style.setProperty('--ap-avatar-network-size', `${networkSizeByAvatarSize[this.size$.value]}px`);
89
- }
90
- set online(online) {
91
- this.online$.next(online);
92
- }
93
- set profilePicture(profilePicture) {
94
- this.profilePicture$.next(profilePicture);
95
- this.imageError$.next(false);
96
- }
97
- set showInitials(showInitials) {
98
- this.showInitials$.next(showInitials);
99
- }
100
- alt = '';
101
- youtubeAvatarMode = false;
102
- roundedAvatar = true;
103
- youtubeAvatar = false;
104
- set rounded(rounded) {
105
- this.roundedAvatar = rounded;
106
- this.rounded$.next(rounded);
107
- }
108
- // TODO - migrate to signal input and remove size input
109
- set size(size) {
110
- this.size$.next(+size);
111
- this.elementRef.nativeElement.style.setProperty('--ap-avatar-size', `${size}px`);
112
- this.elementRef.nativeElement.style.setProperty('--ap-avatar-symbol-size', `${symbolSizeByAvatarSize[size]}px`);
113
- this.elementRef.nativeElement.style.setProperty('--ap-avatar-online-icon-size', `${onlineIconSizeByAvatarSize[size]}px`);
114
- }
115
- displayProfilePicture$ = new Observable();
116
- displaySingleNeutralSvg$ = new Observable();
117
- displayInitials$ = new Observable();
118
- displayAnonymous$ = new Observable();
119
- displayNetwork$ = new Observable();
120
- displayOnline$ = new Observable();
121
- imageError$ = new BehaviorSubject(false);
122
- initials$ = new Observable();
123
- initialsAvailable$ = of(false);
124
- socialNetwork$ = of(false);
125
- constructor(symbolRegistry, elementRef) {
126
- this.symbolRegistry = symbolRegistry;
127
- this.elementRef = elementRef;
128
- this.symbolRegistry.registerSymbols([
129
- apSingleNeutral,
130
- apShowTheaterMaskHappy,
131
- apFacebookOfficial,
132
- apLinkedinOfficial,
133
- apYoutubeOfficial,
134
- apTiktokOfficial,
135
- apGoogleMyBusinessOfficial,
136
- apPinterestOfficial,
137
- apNsThreadsLogo,
138
- apXOfficial,
139
- apBlueskyOfficial,
140
- apWebBlogs,
141
- apWebNews,
142
- ]);
143
- this.elementRef.nativeElement.style.setProperty('--ap-avatar-size', `40px`);
144
- this.elementRef.nativeElement.style.setProperty('--ap-avatar-symbol-size', `${symbolSizeByAvatarSize[this.size$.value]}px`);
145
+ else if (this.anonymous()) {
146
+ bgView = { mode: 'symbol', symbolId: 'show-theater-mask-happy' };
147
+ }
148
+ else {
149
+ const profilePicture = this.profilePicture();
150
+ if (profilePicture && !this.useBigNetwork() && !this.imageError()) {
151
+ bgView = {
152
+ mode: 'image',
153
+ image: {
154
+ src: profilePicture,
155
+ size: +this.size(),
156
+ alt: this.alt(),
157
+ },
158
+ };
159
+ }
160
+ else {
161
+ const initials = this.showInitials();
162
+ if (initials !== false && initials !== undefined) {
163
+ const useDefault = initials === true || initials === '';
164
+ const candidateName = (useDefault ? this.username().charAt(0) : initials.slice(0, 2)).toUpperCase();
165
+ bgView = { mode: 'initials', text: candidateName };
166
+ }
167
+ else {
168
+ if (!this.useBigNetwork()) {
169
+ bgView = { mode: 'symbol', symbolId: 'single-neutral' };
170
+ }
171
+ }
172
+ }
173
+ }
174
+ return bgView;
145
175
  }
146
- ngOnInit() {
147
- this.initialsAvailable$ = this.username$.pipe(map(username => {
148
- return !!username;
149
- }));
150
- this.displayProfilePicture$ = combineLatest([this.profilePicture$, this.anonymous$, this.imageError$, this.showInitials$]).pipe(map(([profilePicture, anonymous, imageError]) => {
151
- return !!profilePicture && !anonymous && !imageError;
152
- }));
153
- this.displayInitials$ = combineLatest([
154
- this.showInitials$,
155
- this.anonymous$,
156
- this.initialsAvailable$,
157
- this.displayProfilePicture$,
158
- ]).pipe(map(([showInitials, anonymous, initialsAvailable, displayProfilePicture]) => {
159
- return showInitials && !anonymous && initialsAvailable && !displayProfilePicture;
160
- }));
161
- this.displaySingleNeutralSvg$ = combineLatest([
162
- this.profilePicture$,
163
- this.imageError$,
164
- this.initialsAvailable$,
165
- this.showInitials$,
166
- this.anonymous$,
167
- this.displayInitials$,
168
- this.displayProfilePicture$,
169
- ]).pipe(map(([profilePicture, imageError, initialsAvailable, showInitials, anonymous, displayInitials, displayProfilePicture]) => {
170
- return ((!profilePicture || imageError || !initialsAvailable || (initialsAvailable && !showInitials)) &&
171
- !anonymous &&
172
- !displayInitials &&
173
- !displayProfilePicture);
174
- }));
175
- this.displayAnonymous$ = combineLatest([this.anonymous$, this.rounded$]).pipe(map(([anonymous, rounded]) => {
176
- return anonymous && rounded;
177
- }));
178
- this.displayOnline$ = combineLatest([this.online$, this.rounded$]).pipe(map(([online, rounded]) => {
179
- return online && rounded;
180
- }));
181
- this.displayNetwork$ = combineLatest([this.network$, this.rounded$]).pipe(map(([network, rounded]) => {
182
- return !!network && rounded;
183
- }));
184
- this.socialNetwork$ = this.network$.pipe(map(network => {
185
- if (!network) {
186
- return false;
176
+ buildOverlayView() {
177
+ let ovlView = {};
178
+ const network = this.network();
179
+ if (!this.automaticBigSymbolNetwork()) {
180
+ if (network && !this.bigNetwork() && !this.hideNetwork()) {
181
+ const { symbol, round } = networkSymbolByNetwork[network];
182
+ ovlView = { mode: 'network', network, symbolId: toSymbol(symbol), round };
187
183
  }
188
- return ROUND_BORDER_AVATAR_NETWORK.indexOf(network) > -1;
189
- }));
190
- this.initials$ = combineLatest([this.displayInitials$, this.username$]).pipe(map(([displayInitials, username]) => {
191
- if ((displayInitials && !username) || !displayInitials) {
192
- return '';
184
+ else if (this.online()) {
185
+ ovlView = { mode: 'online' };
193
186
  }
194
- this.elementRef.nativeElement.style.setProperty('--ap-avatar-initials-size', `${initialSizeByAvatarSize[this.size$.value]}px`);
195
- const names = username?.split(' ');
196
- return `${names[0].charAt(0).toUpperCase()}`;
197
- }));
187
+ }
188
+ return ovlView;
198
189
  }
199
- onImageError() {
200
- this.imageError$.next(true);
190
+ buildHostStyle() {
191
+ const bgView = this.backgroundView();
192
+ const ovlMode = this.overlayView().mode;
193
+ const size = this.size();
194
+ return {
195
+ '--ap-avatar-size': `${size}px`,
196
+ '--ap-avatar-border-radius': this.rounded() ? '100%' : 'var(--sys-border-radius-sm)',
197
+ '--ap-avatar-initials-size': bgView.mode == 'initials' ? `${initialSizeByAvatarSize[size]}px` : '',
198
+ '--ap-avatar-symbol-size': bgView.mode == 'symbol' ? `${bgView.big ? size : symbolSizeByAvatarSize[size]}px` : '',
199
+ '--ap-avatar-network-size': ovlMode == 'network' ? `${networkSizeByAvatarSize[size]}px` : '',
200
+ '--ap-avatar-online-icon-size': ovlMode == 'online' ? `${onlineIconSizeByAvatarSize[size]}px` : '',
201
+ };
201
202
  }
202
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: AvatarComponent, deps: [{ token: i1.SymbolRegistry }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
203
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: AvatarComponent, isStandalone: true, selector: "ap-avatar", inputs: { alternativeText: "alternativeText", anonymous: "anonymous", username: "username", network: "network", online: "online", profilePicture: "profilePicture", showInitials: "showInitials", alt: "alt", youtubeAvatarMode: "youtubeAvatarMode", rounded: ["rounded", "rounded", booleanAttribute], size: "size" }, host: { properties: { "class.rounded-avatar": "this.roundedAvatar", "class.youtube-avatar": "this.youtubeAvatar" } }, ngImport: i0, template: "<ng-container\n *ngrxLet=\"{\n displayProfilePicture: displayProfilePicture$,\n displaySingleNeutralSvg: displaySingleNeutralSvg$,\n displayInitials: displayInitials$,\n displayAnonymous: displayAnonymous$,\n displayOnline: displayOnline$,\n displayNetwork: displayNetwork$,\n initials: initials$,\n profilePicture: profilePicture$,\n size: size$,\n network: network$,\n socialNetwork: socialNetwork$\n } as avatarViewModel\">\n @if (avatarViewModel.displayProfilePicture) {\n @if (avatarViewModel.network !== 'youtube' || youtubeAvatarMode) {\n <img\n [src]=\"avatarViewModel.profilePicture\"\n [width]=\"avatarViewModel.size\"\n [height]=\"avatarViewModel.size\"\n [alt]=\"alt\"\n (error)=\"onImageError()\" />\n } @else {\n <ap-symbol [symbolId]=\"networkSymbolByNetwork[avatarViewModel.network]\" />\n }\n }\n @if (avatarViewModel.displaySingleNeutralSvg) {\n <div class=\"no-profile-picture\">\n <ap-symbol symbolId=\"single-neutral\" />\n </div>\n }\n\n @if (avatarViewModel.displayAnonymous) {\n <div class=\"anonymous\">\n <ap-symbol symbolId=\"show-theater-mask-happy\" />\n </div>\n }\n @if (avatarViewModel.displayOnline) {\n <div class=\"online\"></div>\n }\n @if (avatarViewModel.displayNetwork && avatarViewModel.network && avatarViewModel.network !== 'youtube') {\n <div\n class=\"network\"\n [class.social-network]=\"avatarViewModel.socialNetwork\"\n [ngClass]=\"avatarViewModel.network\">\n <ap-symbol [symbolId]=\"networkSymbolByNetwork[avatarViewModel.network]\" />\n </div>\n }\n\n @if (avatarViewModel.displayInitials) {\n <div class=\"initials\">\n {{ avatarViewModel.initials }}\n </div>\n }\n</ng-container>\n", styles: ["ap-avatar{display:flex;justify-content:center;align-items:center;height:var(--ap-avatar-size);min-height:var(--ap-avatar-size);max-height:var(--ap-avatar-size);width:var(--ap-avatar-size);min-width:var(--ap-avatar-size);max-width:var(--ap-avatar-size);border-radius:var(--sys-border-radius-sm);background:var(--ref-color-grey-40);box-sizing:border-box;position:relative;box-shadow:0 0 0 1px var(--ref-color-grey-10)}ap-avatar.rounded-avatar{border-radius:100%}ap-avatar.rounded-avatar img,ap-avatar.rounded-avatar .no-profile-picture,ap-avatar.rounded-avatar .anonymous{border-radius:100%}ap-avatar.youtube-avatar{box-shadow:unset;background:unset}ap-avatar.youtube-avatar ap-symbol .svg.youtube-official{position:relative;top:unset!important;left:unset!important;width:104.35%!important;height:unset!important}ap-avatar img{overflow:hidden;border-radius:var(--sys-border-radius-sm);box-sizing:border-box}ap-avatar .no-profile-picture,ap-avatar .anonymous{display:flex;justify-content:center;align-items:center;background:var(--ref-color-grey-40);border-radius:var(--sys-border-radius-sm)}ap-avatar .no-profile-picture ap-symbol,ap-avatar .anonymous ap-symbol{color:var(--ref-color-white);width:var(--ap-avatar-symbol-size);min-width:var(--ap-avatar-symbol-size);max-width:var(--ap-avatar-symbol-size);height:var(--ap-avatar-symbol-size);min-height:var(--ap-avatar-symbol-size);max-height:var(--ap-avatar-symbol-size)}ap-avatar .anonymous{margin-top:7%}ap-avatar .online{position:absolute;height:var(--ap-avatar-online-icon-size);min-height:var(--ap-avatar-online-icon-size);max-height:var(--ap-avatar-online-icon-size);width:var(--ap-avatar-online-icon-size);min-width:var(--ap-avatar-online-icon-size);max-width:var(--ap-avatar-online-icon-size);border-radius:100%;overflow:hidden;background:var(--ref-color-grey-40);box-sizing:border-box;border:1px solid var(--ref-color-white);bottom:0;right:0;background:var(--ref-color-green-100)}ap-avatar .initials{font-weight:var(--ref-font-weight-bold);font-size:var(--ap-avatar-initials-size);line-height:var(--ref-font-line-height-xl);font-family:Averta;color:var(--ref-color-white)}ap-avatar .network{position:absolute;height:var(--ap-avatar-online-icon-size);min-height:var(--ap-avatar-network-size);max-height:var(--ap-avatar-network-size);width:var(--ap-avatar-network-size);min-width:var(--ap-avatar-network-size);max-width:var(--ap-avatar-network-size);overflow:hidden;box-sizing:border-box;bottom:0;right:0;box-shadow:0 0 0 1px var(--ref-color-grey-10)}ap-avatar .network.social-network{border-radius:100%}ap-avatar .network.instagram{border-radius:28%}ap-avatar .network.linkedin{border-radius:6%}ap-avatar .network.googleMyBusiness,ap-avatar .network.google{box-shadow:none;border-radius:unset}ap-avatar .network ap-symbol img{border-radius:0;border:none}\n"], dependencies: [{ kind: "component", type: SymbolComponent, selector: "ap-symbol", inputs: ["color", "symbolId", "size"] }, { kind: "directive", type: LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet", "ngrxLetSuspenseTpl"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
203
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: AvatarComponent, deps: [{ token: i1.SymbolRegistry }, { token: i2.NgStyle }], target: i0.ɵɵFactoryTarget.Component });
204
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: AvatarComponent, isStandalone: true, selector: "ap-avatar", inputs: { profilePicture: { classPropertyName: "profilePicture", publicName: "profilePicture", isSignal: true, isRequired: false, transformFunction: null }, alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: false, transformFunction: null }, network: { classPropertyName: "network", publicName: "network", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, username: { classPropertyName: "username", publicName: "username", isSignal: true, isRequired: false, transformFunction: null }, showInitials: { classPropertyName: "showInitials", publicName: "showInitials", isSignal: true, isRequired: false, transformFunction: null }, bigNetwork: { classPropertyName: "bigNetwork", publicName: "bigNetwork", isSignal: true, isRequired: false, transformFunction: null }, anonymous: { classPropertyName: "anonymous", publicName: "anonymous", isSignal: true, isRequired: false, transformFunction: null }, online: { classPropertyName: "online", publicName: "online", isSignal: true, isRequired: false, transformFunction: null }, hideNetwork: { classPropertyName: "hideNetwork", publicName: "youtubeAvatarMode", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.background-default": "!useBigNetwork()" } }, hostDirectives: [{ directive: i2.NgStyle }], ngImport: i0, template: "<!-- background -->\n@if (backgroundView(); as bgView) {\n @switch (bgView.mode) {\n @case ('image') {\n <img\n class=\"bg-image\"\n [ngSrc]=\"bgView.image.src\"\n [width]=\"bgView.image.size\"\n [height]=\"bgView.image.size\"\n [alt]=\"bgView.image.alt\"\n (error)=\"onImageError()\" />\n }\n @case ('initials') {\n <div class=\"bg-initials\">\n {{ bgView.text }}\n </div>\n }\n @case ('symbol') {\n <div\n class=\"bg-symbol\"\n [ngClass]=\"['sym-' + bgView.symbolId, bgView.big ? 'big' : '']\">\n <ap-symbol [symbolId]=\"bgView.symbolId\" />\n </div>\n }\n }\n}\n\n<!-- overlay -->\n@if (overlayView(); as ovlView) {\n @switch (ovlView.mode) {\n @case ('network') {\n <div\n class=\"ovl-network\"\n [class.round]=\"ovlView.round\"\n [ngClass]=\"ovlView.network\">\n <ap-symbol [symbolId]=\"ovlView.symbolId\" />\n </div>\n }\n @case ('online') {\n <div class=\"ovl-online\"></div>\n }\n }\n}\n", styles: [":host{display:flex;justify-content:center;align-items:center;height:var(--ap-avatar-size);min-height:var(--ap-avatar-size);max-height:var(--ap-avatar-size);width:var(--ap-avatar-size);min-width:var(--ap-avatar-size);max-width:var(--ap-avatar-size);box-sizing:border-box;position:relative;border-radius:var(--ap-avatar-border-radius)}:host.background-default{background:var(--ref-color-grey-40);box-shadow:0 0 0 1px var(--ref-color-grey-10)}.bg-image{overflow:hidden;box-sizing:border-box;border-radius:var(--ap-avatar-border-radius)}.bg-symbol{display:flex;justify-content:center;align-items:center}.bg-symbol:not(.big) ap-symbol{color:var(--ref-color-white);width:var(--ap-avatar-symbol-size);min-width:var(--ap-avatar-symbol-size);max-width:var(--ap-avatar-symbol-size);height:var(--ap-avatar-symbol-size);min-height:var(--ap-avatar-symbol-size);max-height:var(--ap-avatar-symbol-size)}.bg-symbol.big ap-symbol ::ng-deep .svg{top:unset!important;left:unset!important;width:104.35%!important;height:unset!important}.bg-initials{font-weight:var(--ref-font-weight-bold);font-size:var(--ap-avatar-initials-size);line-height:var(--ref-font-line-height-xl);font-family:Averta;color:var(--ref-color-white)}.ovl-network{position:absolute;height:var(--ap-avatar-online-icon-size);min-height:var(--ap-avatar-network-size);max-height:var(--ap-avatar-network-size);width:var(--ap-avatar-network-size);min-width:var(--ap-avatar-network-size);max-width:var(--ap-avatar-network-size);overflow:hidden;box-sizing:border-box;bottom:0;right:0;box-shadow:0 0 0 1px var(--ref-color-grey-10)}.ovl-network.round{border-radius:100%}.ovl-network.instagram{border-radius:28%}.ovl-network.linkedin{border-radius:6%}.ovl-network.googleMyBusiness,.ovl-network.google{box-shadow:none;border-radius:unset}.ovl-network ap-symbol ::ng-deep img{border-radius:0;border:none}.ovl-online{position:absolute;height:var(--ap-avatar-online-icon-size);min-height:var(--ap-avatar-online-icon-size);max-height:var(--ap-avatar-online-icon-size);width:var(--ap-avatar-online-icon-size);min-width:var(--ap-avatar-online-icon-size);max-width:var(--ap-avatar-online-icon-size);border-radius:100%;overflow:hidden;background:var(--ref-color-grey-40);box-sizing:border-box;border:1px solid var(--ref-color-white);bottom:0;right:0;background:var(--ref-color-green-100)}\n"], dependencies: [{ kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }, { kind: "component", type: SymbolComponent, selector: "ap-symbol", inputs: ["color", "symbolId", "size"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
204
205
  }
205
206
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: AvatarComponent, decorators: [{
206
207
  type: Component,
207
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'ap-avatar', standalone: true, imports: [NgOptimizedImage, SymbolComponent, LetDirective, NgClass], encapsulation: ViewEncapsulation.None, template: "<ng-container\n *ngrxLet=\"{\n displayProfilePicture: displayProfilePicture$,\n displaySingleNeutralSvg: displaySingleNeutralSvg$,\n displayInitials: displayInitials$,\n displayAnonymous: displayAnonymous$,\n displayOnline: displayOnline$,\n displayNetwork: displayNetwork$,\n initials: initials$,\n profilePicture: profilePicture$,\n size: size$,\n network: network$,\n socialNetwork: socialNetwork$\n } as avatarViewModel\">\n @if (avatarViewModel.displayProfilePicture) {\n @if (avatarViewModel.network !== 'youtube' || youtubeAvatarMode) {\n <img\n [src]=\"avatarViewModel.profilePicture\"\n [width]=\"avatarViewModel.size\"\n [height]=\"avatarViewModel.size\"\n [alt]=\"alt\"\n (error)=\"onImageError()\" />\n } @else {\n <ap-symbol [symbolId]=\"networkSymbolByNetwork[avatarViewModel.network]\" />\n }\n }\n @if (avatarViewModel.displaySingleNeutralSvg) {\n <div class=\"no-profile-picture\">\n <ap-symbol symbolId=\"single-neutral\" />\n </div>\n }\n\n @if (avatarViewModel.displayAnonymous) {\n <div class=\"anonymous\">\n <ap-symbol symbolId=\"show-theater-mask-happy\" />\n </div>\n }\n @if (avatarViewModel.displayOnline) {\n <div class=\"online\"></div>\n }\n @if (avatarViewModel.displayNetwork && avatarViewModel.network && avatarViewModel.network !== 'youtube') {\n <div\n class=\"network\"\n [class.social-network]=\"avatarViewModel.socialNetwork\"\n [ngClass]=\"avatarViewModel.network\">\n <ap-symbol [symbolId]=\"networkSymbolByNetwork[avatarViewModel.network]\" />\n </div>\n }\n\n @if (avatarViewModel.displayInitials) {\n <div class=\"initials\">\n {{ avatarViewModel.initials }}\n </div>\n }\n</ng-container>\n", styles: ["ap-avatar{display:flex;justify-content:center;align-items:center;height:var(--ap-avatar-size);min-height:var(--ap-avatar-size);max-height:var(--ap-avatar-size);width:var(--ap-avatar-size);min-width:var(--ap-avatar-size);max-width:var(--ap-avatar-size);border-radius:var(--sys-border-radius-sm);background:var(--ref-color-grey-40);box-sizing:border-box;position:relative;box-shadow:0 0 0 1px var(--ref-color-grey-10)}ap-avatar.rounded-avatar{border-radius:100%}ap-avatar.rounded-avatar img,ap-avatar.rounded-avatar .no-profile-picture,ap-avatar.rounded-avatar .anonymous{border-radius:100%}ap-avatar.youtube-avatar{box-shadow:unset;background:unset}ap-avatar.youtube-avatar ap-symbol .svg.youtube-official{position:relative;top:unset!important;left:unset!important;width:104.35%!important;height:unset!important}ap-avatar img{overflow:hidden;border-radius:var(--sys-border-radius-sm);box-sizing:border-box}ap-avatar .no-profile-picture,ap-avatar .anonymous{display:flex;justify-content:center;align-items:center;background:var(--ref-color-grey-40);border-radius:var(--sys-border-radius-sm)}ap-avatar .no-profile-picture ap-symbol,ap-avatar .anonymous ap-symbol{color:var(--ref-color-white);width:var(--ap-avatar-symbol-size);min-width:var(--ap-avatar-symbol-size);max-width:var(--ap-avatar-symbol-size);height:var(--ap-avatar-symbol-size);min-height:var(--ap-avatar-symbol-size);max-height:var(--ap-avatar-symbol-size)}ap-avatar .anonymous{margin-top:7%}ap-avatar .online{position:absolute;height:var(--ap-avatar-online-icon-size);min-height:var(--ap-avatar-online-icon-size);max-height:var(--ap-avatar-online-icon-size);width:var(--ap-avatar-online-icon-size);min-width:var(--ap-avatar-online-icon-size);max-width:var(--ap-avatar-online-icon-size);border-radius:100%;overflow:hidden;background:var(--ref-color-grey-40);box-sizing:border-box;border:1px solid var(--ref-color-white);bottom:0;right:0;background:var(--ref-color-green-100)}ap-avatar .initials{font-weight:var(--ref-font-weight-bold);font-size:var(--ap-avatar-initials-size);line-height:var(--ref-font-line-height-xl);font-family:Averta;color:var(--ref-color-white)}ap-avatar .network{position:absolute;height:var(--ap-avatar-online-icon-size);min-height:var(--ap-avatar-network-size);max-height:var(--ap-avatar-network-size);width:var(--ap-avatar-network-size);min-width:var(--ap-avatar-network-size);max-width:var(--ap-avatar-network-size);overflow:hidden;box-sizing:border-box;bottom:0;right:0;box-shadow:0 0 0 1px var(--ref-color-grey-10)}ap-avatar .network.social-network{border-radius:100%}ap-avatar .network.instagram{border-radius:28%}ap-avatar .network.linkedin{border-radius:6%}ap-avatar .network.googleMyBusiness,ap-avatar .network.google{box-shadow:none;border-radius:unset}ap-avatar .network ap-symbol img{border-radius:0;border:none}\n"] }]
208
- }], ctorParameters: () => [{ type: i1.SymbolRegistry }, { type: i0.ElementRef }], propDecorators: { alternativeText: [{
209
- type: Input
210
- }], anonymous: [{
211
- type: Input
212
- }], username: [{
213
- type: Input
214
- }], network: [{
215
- type: Input
216
- }], online: [{
217
- type: Input
218
- }], profilePicture: [{
219
- type: Input
220
- }], showInitials: [{
221
- type: Input
222
- }], alt: [{
223
- type: Input
224
- }], youtubeAvatarMode: [{
225
- type: Input
226
- }], roundedAvatar: [{
227
- type: HostBinding,
228
- args: ['class.rounded-avatar']
229
- }], youtubeAvatar: [{
230
- type: HostBinding,
231
- args: ['class.youtube-avatar']
232
- }], rounded: [{
233
- type: Input,
234
- args: [{
235
- transform: booleanAttribute,
236
- }]
237
- }], size: [{
238
- type: Input
239
- }] } });
240
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9hdmF0YXIvc3JjL2F2YXRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvYXZhdGFyL3NyYy9hdmF0YXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGVBQWUsRUFFZixrQkFBa0IsRUFDbEIsMEJBQTBCLEVBQzFCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLHNCQUFzQixFQUN0QixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVixTQUFTLEVBQ1QsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixpQkFBaUIsR0FDcEIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUMsT0FBTyxFQUFFLGdCQUFnQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBRVQsV0FBVyxFQUNYLEtBQUssRUFFTCxpQkFBaUIsRUFDakIsZ0JBQWdCLEdBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBSTNFLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDdE0sTUFBTSwyQkFB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QVk7c0JBQXhCLEtBQUs7Z0JBR0csR0FBRztzQkFBWCxLQUFLO2dCQUVHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHTixhQUFhO3NCQURaLFdBQVc7dUJBQUMsc0JBQXNCO2dCQUluQyxhQUFhO3NCQURaLFdBQVc7dUJBQUMsc0JBQXNCO2dCQU0vQixPQUFPO3NCQUhWLEtBQUs7dUJBQUM7d0JBQ0gsU0FBUyxFQUFFLGdCQUFnQjtxQkFDOUI7Z0JBUUcsSUFBSTtzQkFEUCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBTeW1ib2xDb21wb25lbnQsXG4gICAgU3ltYm9sUmVnaXN0cnksXG4gICAgYXBGYWNlYm9va09mZmljaWFsLFxuICAgIGFwR29vZ2xlTXlCdXNpbmVzc09mZmljaWFsLFxuICAgIGFwTGlua2VkaW5PZmZpY2lhbCxcbiAgICBhcFBpbnRlcmVzdE9mZmljaWFsLFxuICAgIGFwTnNUaHJlYWRzTG9nbyxcbiAgICBhcFNob3dUaGVhdGVyTWFza0hhcHB5LFxuICAgIGFwU2luZ2xlTmV1dHJhbCxcbiAgICBhcFRpa3Rva09mZmljaWFsLFxuICAgIGFwV2ViQmxvZ3MsXG4gICAgYXBXZWJOZXdzLFxuICAgIGFwWE9mZmljaWFsLFxuICAgIGFwWW91dHViZU9mZmljaWFsLFxuICAgIGFwQmx1ZXNreU9mZmljaWFsLFxufSBmcm9tICdAYWdvcmFwdWxzZS91aS1zeW1ib2wnO1xuaW1wb3J0IHtOZ0NsYXNzLCBOZ09wdGltaXplZEltYWdlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMZXREaXJlY3RpdmUgfSBmcm9tICdAbmdyeC9jb21wb25lbnQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBjb21iaW5lTGF0ZXN0LCBtYXAsIG9mIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCB0eXBlIEF2YXRhclNpemUgPSA1NiB8IDQ4IHwgNDAgfCAzNiB8IDMyIHwgMjQgfCAxNjtcblxuZXhwb3J0IGNvbnN0IEFWQVRBUl9ORVRXT1JLX0FSUkFZID0gWydmYWNlYm9vaycsICdsaW5rZWRpbicsICd0d2l0dGVyJywgJ1gnLCAneW91dHViZScsICdnb29nbGVNeUJ1c2luZXNzJywgJ2dvb2dsZScsICdpbnN0YWdyYW0nLCAndGhyZWFkcycsICd0aWt0b2snLCAncGludGVyZXN0JywgJ3dlYkJsb2cnLCAnd2ViTmV3cycsICdibHVlc2t5J107XG5jb25zdCBST1VORF9CT1JERVJfQVZBVEFSX05FVFdPUks6IHR5cGVvZiBBVkFUQVJfTkVUV09SS19BUlJBWVtudW1iZXJdW10gPSBbJ2ZhY2Vib29rJywgJ3R3aXR0ZXInLCAneW91dHViZScsICd0aWt0b2snLCAnWCcsICdwaW50ZXJlc3QnLCAnd2ViQmxvZycsICd3ZWJOZXdzJywgJ3RocmVhZHMnLCAnYmx1ZXNreSddO1xuZXhwb3J0IHR5cGUgQXZhdGFyTmV0d29yayA9IHR5cGVvZiBBVkFUQVJfTkVUV09SS19BUlJBWVtudW1iZXJdO1xuXG5jb25zdCBvbmxpbmVJY29uU2l6ZUJ5QXZhdGFyU2l6ZTogUmVjb3JkPEF2YXRhclNpemUsIG51bWJlcj4gPSB7XG4gICAgNTY6IDE2LFxuICAgIDQ4OiAxMixcbiAgICA0MDogMTIsXG4gICAgMzY6IDgsXG4gICAgMzI6IDgsXG4gICAgMjQ6IDYsXG4gICAgMTY6IDYsXG59O1xuXG5jb25zdCBzeW1ib2xTaXplQnlBdmF0YXJTaXplOiBSZWNvcmQ8QXZhdGFyU2l6ZSwgbnVtYmVyPiA9IHtcbiAgICA1NjogMjgsXG4gICAgNDg6IDI0LFxuICAgIDQwOiAyMCxcbiAgICAzNjogMTgsXG4gICAgMzI6IDE2LFxuICAgIDI0OiAxMixcbiAgICAxNjogOCxcbn07XG5cbmNvbnN0IG5ldHdvcmtTaXplQnlBdmF0YXJTaXplOiBSZWNvcmQ8QXZhdGFyU2l6ZSwgbnVtYmVyPiA9IHtcbiAgICA1NjogMTYsXG4gICAgNDg6IDE2LFxuICAgIDQwOiAxNixcbiAgICAzNjogMTYsXG4gICAgMzI6IDEyLFxuICAgIDI0OiAxMixcbiAgICAxNjogOCxcbn07XG5cbmNvbnN0IGluaXRpYWxTaXplQnlBdmF0YXJTaXplOiBSZWNvcmQ8QXZhdGFyU2l6ZSwgbnVtYmVyPiA9IHtcbiAgICA1NjogMjgsXG4gICAgNDg6IDI0LFxuICAgIDQwOiAyMixcbiAgICAzNjogMTgsXG4gICAgMzI6IDE4LFxuICAgIDI0OiAxNCxcbiAgICAxNjogMTAsXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzZWxlY3RvcjogJ2FwLWF2YXRhcicsXG4gICAgc3R5bGVVcmxzOiBbJy4vYXZhdGFyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdPcHRpbWl6ZWRJbWFnZSwgU3ltYm9sQ29tcG9uZW50LCBMZXREaXJlY3RpdmUsIE5nQ2xhc3NdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hdmF0YXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEF2YXRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcmVhZG9ubHkgbmV0d29ya1N5bWJvbEJ5TmV0d29yazogUmVjb3JkPEF2YXRhck5ldHdvcmssIHN0cmluZz4gPSB7XG4gICAgICAgIGZhY2Vib29rOiAnZmFjZWJvb2stb2ZmaWNpYWwnLFxuICAgICAgICBpbnN0YWdyYW06ICdpbnN0YWdyYW0tb2ZmaWNpYWwnLFxuICAgICAgICBYOiAneC1vZmZpY2lhbCcsXG4gICAgICAgIHR3aXR0ZXI6ICd4LW9mZmljaWFsJyxcbiAgICAgICAgbGlua2VkaW46ICdsaW5rZWRpbi1vZmZpY2lhbCcsXG4gICAgICAgIHRpa3RvazogJ3Rpa3Rvay1vZmZpY2lhbCcsXG4gICAgICAgIHlvdXR1YmU6ICd5b3V0dWJlLW9mZmljaWFsJyxcbiAgICAgICAgcGludGVyZXN0OiAncGludGVyZXN0LW9mZmljaWFsJyxcbiAgICAgICAgdGhyZWFkczogJ25zLXRocmVhZHMtbG9nbycsXG4gICAgICAgIGdvb2dsZU15QnVzaW5lc3M6ICdnb29nbGUtbXktYnVzaW5lc3Mtb2ZmaWNpYWwnLFxuICAgICAgICBnb29nbGU6ICdnb29nbGUtbXktYnVzaW5lc3Mtb2ZmaWNpYWwnLFxuICAgICAgICB3ZWJOZXdzOiAnd2ViLW5ld3MnLFxuICAgICAgICB3ZWJCbG9nOiAnd2ViLWJsb2dzJyxcbiAgICAgICAgYmx1ZXNreTogJ2JsdWVza3ktb2ZmaWNpYWwnXG4gICAgfTtcblxuICAgIHNpemUkOiBCZWhhdmlvclN1YmplY3Q8QXZhdGFyU2l6ZT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEF2YXRhclNpemU+KDQwKTtcbiAgICBwcm9maWxlUGljdHVyZSQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+KCcnKTtcbiAgICBuZXR3b3JrJDogQmVoYXZpb3JTdWJqZWN0PEF2YXRhck5ldHdvcmsgfCB1bmRlZmluZWQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdmF0YXJOZXR3b3JrIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gICAgcHJpdmF0ZSBhbHRlcm5hdGl2ZVRleHQkOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gICAgcHJpdmF0ZSBhbm9ueW1vdXMkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIHVzZXJuYW1lJDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICAgIHByaXZhdGUgb25saW5lJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSBzaG93SW5pdGlhbHMkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIHJvdW5kZWQkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuXG4gICAgQElucHV0KCkgc2V0IGFsdGVybmF0aXZlVGV4dChhbHRlcm5hdGl2ZVRleHQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLmFsdGVybmF0aXZlVGV4dCQubmV4dChhbHRlcm5hdGl2ZVRleHQpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBhbm9ueW1vdXMoYW5vbnltb3VzOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuYW5vbnltb3VzJC5uZXh0KGFub255bW91cyk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHVzZXJuYW1lKHVzZXJuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy51c2VybmFtZSQubmV4dCh1c2VybmFtZSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IG5ldHdvcmsobmV0d29yazogQXZhdGFyTmV0d29yayB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLm5ldHdvcmskLm5leHQobmV0d29yayk7XG5cbiAgICAgICAgaWYgKG5ldHdvcmsgPT09ICd5b3V0dWJlJykge1xuICAgICAgICAgICAgdGhpcy55b3V0dWJlQXZhdGFyID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWFwLWF2YXRhci1uZXR3b3JrLXNpemUnLCBgJHtuZXR3b3JrU2l6ZUJ5QXZhdGFyU2l6ZVt0aGlzLnNpemUkLnZhbHVlXX1weGApO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBvbmxpbmUob25saW5lOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMub25saW5lJC5uZXh0KG9ubGluZSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHByb2ZpbGVQaWN0dXJlKHByb2ZpbGVQaWN0dXJlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5wcm9maWxlUGljdHVyZSQubmV4dChwcm9maWxlUGljdHVyZSk7XG4gICAgICAgIHRoaXMuaW1hZ2VFcnJvciQubmV4dChmYWxzZSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHNob3dJbml0aWFscyhzaG93SW5pdGlhbHM6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zaG93SW5pdGlhbHMkLm5leHQoc2hvd0luaXRpYWxzKTtcbiAgICB9XG4gICAgQElucHV0KCkgYWx0ID0gJyc7XG5cbiAgICBASW5wdXQoKSB5b3V0dWJlQXZhdGFyTW9kZSA9IGZhbHNlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5yb3VuZGVkLWF2YXRhcicpXG4gICAgcm91bmRlZEF2YXRhciA9IHRydWU7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnlvdXR1YmUtYXZhdGFyJylcbiAgICB5b3V0dWJlQXZhdGFyID0gZmFsc2U7XG5cbiAgICBASW5wdXQoe1xuICAgICAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgfSlcbiAgICBzZXQgcm91bmRlZChyb3VuZGVkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMucm91bmRlZEF2YXRhciA9IHJvdW5kZWQ7XG4gICAgICAgIHRoaXMucm91bmRlZCQubmV4dChyb3VuZGVkKTtcbiAgICB9XG5cbiAgICAvLyBUT0RPIC0gbWlncmF0ZSB0byBzaWduYWwgaW5wdXQgYW5kIHJlbW92ZSBzaXplIGlucHV0XG4gICAgQElucHV0KClcbiAgICBzZXQgc2l6ZShzaXplOiBBdmF0YXJTaXplIHwgYCR7QXZhdGFyU2l6ZX1gKSB7XG4gICAgICAgIHRoaXMuc2l6ZSQubmV4dCgrc2l6ZSBhcyBBdmF0YXJTaXplKTtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tYXAtYXZhdGFyLXNpemUnLCBgJHtzaXplfXB4YCk7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWFwLWF2YXRhci1zeW1ib2wtc2l6ZScsIGAke3N5bWJvbFNpemVCeUF2YXRhclNpemVbc2l6ZV19cHhgKTtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tYXAtYXZhdGFyLW9ubGluZS1pY29uLXNpemUnLCBgJHtvbmxpbmVJY29uU2l6ZUJ5QXZhdGFyU2l6ZVtzaXplXX1weGApO1xuICAgIH1cblxuICAgIGRpc3BsYXlQcm9maWxlUGljdHVyZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBuZXcgT2JzZXJ2YWJsZTxib29sZWFuPigpO1xuICAgIGRpc3BsYXlTaW5nbGVOZXV0cmFsU3ZnJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IG5ldyBPYnNlcnZhYmxlPGJvb2xlYW4+KCk7XG4gICAgZGlzcGxheUluaXRpYWxzJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IG5ldyBPYnNlcnZhYmxlPGJvb2xlYW4+KCk7XG4gICAgZGlzcGxheUFub255bW91cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBuZXcgT2JzZXJ2YWJsZTxib29sZWFuPigpO1xuICAgIGRpc3BsYXlOZXR3b3JrJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IG5ldyBPYnNlcnZhYmxlPGJvb2xlYW4+KCk7XG4gICAgZGlzcGxheU9ubGluZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBuZXcgT2JzZXJ2YWJsZTxib29sZWFuPigpO1xuICAgIGltYWdlRXJyb3IkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBpbml0aWFscyQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IG5ldyBPYnNlcnZhYmxlPHN0cmluZz4oKTtcbiAgICBpbml0aWFsc0F2YWlsYWJsZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBvZihmYWxzZSk7XG4gICAgc29jaWFsTmV0d29yayQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBvZihmYWxzZSk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBzeW1ib2xSZWdpc3RyeTogU3ltYm9sUmVnaXN0cnksXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICAgICkge1xuICAgICAgICB0aGlzLnN5bWJvbFJlZ2lzdHJ5LnJlZ2lzdGVyU3ltYm9scyhbXG4gICAgICAgICAgICBhcFNpbmdsZU5ldXRyYWwsXG4gICAgICAgICAgICBhcFNob3dUaGVhdGVyTWFza0hhcHB5LFxuICAgICAgICAgICAgYXBGYWNlYm9va09mZmljaWFsLFxuICAgICAgICAgICAgYXBMaW5rZWRpbk9mZmljaWFsLFxuICAgICAgICAgICAgYXBZb3V0dWJlT2ZmaWNpYWwsXG4gICAgICAgICAgICBhcFRpa3Rva09mZmljaWFsLFxuICAgICAgICAgICAgYXBHb29nbGVNeUJ1c2luZXNzT2ZmaWNpYWwsXG4gICAgICAgICAgICBhcFBpbnRlcmVzdE9mZmljaWFsLFxuICAgICAgICAgICAgYXBOc1RocmVhZHNMb2dvLFxuICAgICAgICAgICAgYXBYT2ZmaWNpYWwsXG4gICAgICAgICAgICBhcEJsdWVza3lPZmZpY2lhbCxcbiAgICAgICAgICAgIGFwV2ViQmxvZ3MsXG4gICAgICAgICAgICBhcFdlYk5ld3MsXG4gICAgICAgIF0pO1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1hcC1hdmF0YXItc2l6ZScsIGA0MHB4YCk7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWFwLWF2YXRhci1zeW1ib2wtc2l6ZScsIGAke3N5bWJvbFNpemVCeUF2YXRhclNpemVbdGhpcy5zaXplJC52YWx1ZV19cHhgKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0aWFsc0F2YWlsYWJsZSQgPSB0aGlzLnVzZXJuYW1lJC5waXBlKFxuICAgICAgICAgICAgbWFwKHVzZXJuYW1lID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gISF1c2VybmFtZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5kaXNwbGF5UHJvZmlsZVBpY3R1cmUkID0gY29tYmluZUxhdGVzdChbdGhpcy5wcm9maWxlUGljdHVyZSQsIHRoaXMuYW5vbnltb3VzJCwgdGhpcy5pbWFnZUVycm9yJCwgdGhpcy5zaG93SW5pdGlhbHMkXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW3Byb2ZpbGVQaWN0dXJlLCBhbm9ueW1vdXMsIGltYWdlRXJyb3JdKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICEhcHJvZmlsZVBpY3R1cmUgJiYgIWFub255bW91cyAmJiAhaW1hZ2VFcnJvcjtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5kaXNwbGF5SW5pdGlhbHMkID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICB0aGlzLnNob3dJbml0aWFscyQsXG4gICAgICAgICAgICB0aGlzLmFub255bW91cyQsXG4gICAgICAgICAgICB0aGlzLmluaXRpYWxzQXZhaWxhYmxlJCxcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVByb2ZpbGVQaWN0dXJlJCxcbiAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW3Nob3dJbml0aWFscywgYW5vbnltb3VzLCBpbml0aWFsc0F2YWlsYWJsZSwgZGlzcGxheVByb2ZpbGVQaWN0dXJlXSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzaG93SW5pdGlhbHMgJiYgIWFub255bW91cyAmJiBpbml0aWFsc0F2YWlsYWJsZSAmJiAhZGlzcGxheVByb2ZpbGVQaWN0dXJlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmRpc3BsYXlTaW5nbGVOZXV0cmFsU3ZnJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy5wcm9maWxlUGljdHVyZSQsXG4gICAgICAgICAgICB0aGlzLmltYWdlRXJyb3IkLFxuICAgICAgICAgICAgdGhpcy5pbml0aWFsc0F2YWlsYWJsZSQsXG4gICAgICAgICAgICB0aGlzLnNob3dJbml0aWFscyQsXG4gICAgICAgICAgICB0aGlzLmFub255bW91cyQsXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlJbml0aWFscyQsXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlQcm9maWxlUGljdHVyZSQsXG4gICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFtwcm9maWxlUGljdHVyZSwgaW1hZ2VFcnJvciwgaW5pdGlhbHNBdmFpbGFibGUsIHNob3dJbml0aWFscywgYW5vbnltb3VzLCBkaXNwbGF5SW5pdGlhbHMsIGRpc3BsYXlQcm9maWxlUGljdHVyZV0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAoIXByb2ZpbGVQaWN0dXJlIHx8IGltYWdlRXJyb3IgfHwgIWluaXRpYWxzQXZhaWxhYmxlIHx8IChpbml0aWFsc0F2YWlsYWJsZSAmJiAhc2hvd0luaXRpYWxzKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgIWFub255bW91cyAmJlxuICAgICAgICAgICAgICAgICAgICAhZGlzcGxheUluaXRpYWxzICYmXG4gICAgICAgICAgICAgICAgICAgICFkaXNwbGF5UHJvZmlsZVBpY3R1cmVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmRpc3BsYXlBbm9ueW1vdXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5hbm9ueW1vdXMkLCB0aGlzLnJvdW5kZWQkXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW2Fub255bW91cywgcm91bmRlZF0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYW5vbnltb3VzICYmIHJvdW5kZWQ7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZGlzcGxheU9ubGluZSQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLm9ubGluZSQsIHRoaXMucm91bmRlZCRdKS5waXBlKFxuICAgICAgICAgICAgbWFwKChbb25saW5lLCByb3VuZGVkXSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBvbmxpbmUgJiYgcm91bmRlZDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5kaXNwbGF5TmV0d29yayQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLm5ldHdvcmskLCB0aGlzLnJvdW5kZWQkXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW25ldHdvcmssIHJvdW5kZWRdKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICEhbmV0d29yayAmJiByb3VuZGVkO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnNvY2lhbE5ldHdvcmskID0gdGhpcy5uZXR3b3JrJC5waXBlKG1hcChuZXR3b3JrID0+IHtcbiAgICAgICAgICAgIGlmICghbmV0d29yaykge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIFJPVU5EX0JPUkRFUl9BVkFUQVJfTkVUV09SSy5pbmRleE9mKG5ldHdvcmspID4gLTE7XG4gICAgICAgIH0pKTtcblxuXG4gICAgICAgIHRoaXMuaW5pdGlhbHMkID0gY29tYmluZUxhdGVzdChbdGhpcy5kaXNwbGF5SW5pdGlhbHMkLCB0aGlzLnVzZXJuYW1lJF0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFtkaXNwbGF5SW5pdGlhbHMsIHVzZXJuYW1lXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICgoZGlzcGxheUluaXRpYWxzICYmICF1c2VybmFtZSkgfHwgIWRpc3BsYXlJbml0aWFscykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICAgICAgICAgICAgICAnLS1hcC1hdmF0YXItaW5pdGlhbHMtc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgIGAke2luaXRpYWxTaXplQnlBdmF0YXJTaXplW3RoaXMuc2l6ZSQudmFsdWVdfXB4YFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZXMgPSB1c2VybmFtZT8uc3BsaXQoJyAnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7bmFtZXNbMF0uY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9YDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgb25JbWFnZUVycm9yKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmltYWdlRXJyb3IkLm5leHQodHJ1ZSk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lclxuICAgICpuZ3J4TGV0PVwie1xuICAgICAgICBkaXNwbGF5UHJvZmlsZVBpY3R1cmU6IGRpc3BsYXlQcm9maWxlUGljdHVyZSQsXG4gICAgICAgIGRpc3BsYXlTaW5nbGVOZXV0cmFsU3ZnOiBkaXNwbGF5U2luZ2xlTmV1dHJhbFN2ZyQsXG4gICAgICAgIGRpc3BsYXlJbml0aWFsczogZGlzcGxheUluaXRpYWxzJCxcbiAgICAgICAgZGlzcGxheUFub255bW91czogZGlzcGxheUFub255bW91cyQsXG4gICAgICAgIGRpc3BsYXlPbmxpbmU6IGRpc3BsYXlPbmxpbmUkLFxuICAgICAgICBkaXNwbGF5TmV0d29yazogZGlzcGxheU5ldHdvcmskLFxuICAgICAgICBpbml0aWFsczogaW5pdGlhbHMkLFxuICAgICAgICBwcm9maWxlUGljdHVyZTogcHJvZmlsZVBpY3R1cmUkLFxuICAgICAgICBzaXplOiBzaXplJCxcbiAgICAgICAgbmV0d29yazogbmV0d29yayQsXG4gICAgICAgIHNvY2lhbE5ldHdvcms6IHNvY2lhbE5ldHdvcmskXG4gICAgfSBhcyBhdmF0YXJWaWV3TW9kZWxcIj5cbiAgICBAaWYgKGF2YXRhclZpZXdNb2RlbC5kaXNwbGF5UHJvZmlsZVBpY3R1cmUpIHtcbiAgICAgICAgQGlmIChhdmF0YXJWaWV3TW9kZWwubmV0d29yayAhPT0gJ3lvdXR1YmUnIHx8IHlvdXR1YmVBdmF0YXJNb2RlKSB7XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgW3NyY109XCJhdmF0YXJWaWV3TW9kZWwucHJvZmlsZVBpY3R1cmVcIlxuICAgICAgICAgICAgICAgIFt3aWR0aF09XCJhdmF0YXJWaWV3TW9kZWwuc2l6ZVwiXG4gICAgICAgICAgICAgICAgW2hlaWdodF09XCJhdmF0YXJWaWV3TW9kZWwuc2l6ZVwiXG4gICAgICAgICAgICAgICAgW2FsdF09XCJhbHRcIlxuICAgICAgICAgICAgICAgIChlcnJvcik9XCJvbkltYWdlRXJyb3IoKVwiIC8+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGFwLXN5bWJvbCBbc3ltYm9sSWRdPVwibmV0d29ya1N5bWJvbEJ5TmV0d29ya1thdmF0YXJWaWV3TW9kZWwubmV0d29ya11cIiAvPlxuICAgICAgICB9XG4gICAgfVxuICAgIEBpZiAoYXZhdGFyVmlld01vZGVsLmRpc3BsYXlTaW5nbGVOZXV0cmFsU3ZnKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJuby1wcm9maWxlLXBpY3R1cmVcIj5cbiAgICAgICAgICAgIDxhcC1zeW1ib2wgc3ltYm9sSWQ9XCJzaW5nbGUtbmV1dHJhbFwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIEBpZiAoYXZhdGFyVmlld01vZGVsLmRpc3BsYXlBbm9ueW1vdXMpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImFub255bW91c1wiPlxuICAgICAgICAgICAgPGFwLXN5bWJvbCBzeW1ib2xJZD1cInNob3ctdGhlYXRlci1tYXNrLWhhcHB5XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBpZiAoYXZhdGFyVmlld01vZGVsLmRpc3BsYXlPbmxpbmUpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIm9ubGluZVwiPjwvZGl2PlxuICAgIH1cbiAgICBAaWYgKGF2YXRhclZpZXdNb2RlbC5kaXNwbGF5TmV0d29yayAmJiBhdmF0YXJWaWV3TW9kZWwubmV0d29yayAmJiBhdmF0YXJWaWV3TW9kZWwubmV0d29yayAhPT0gJ3lvdXR1YmUnKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwibmV0d29ya1wiXG4gICAgICAgICAgICBbY2xhc3Muc29jaWFsLW5ldHdvcmtdPVwiYXZhdGFyVmlld01vZGVsLnNvY2lhbE5ldHdvcmtcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiYXZhdGFyVmlld01vZGVsLm5ldHdvcmtcIj5cbiAgICAgICAgICAgIDxhcC1zeW1ib2wgW3N5bWJvbElkXT1cIm5ldHdvcmtTeW1ib2xCeU5ldHdvcmtbYXZhdGFyVmlld01vZGVsLm5ldHdvcmtdXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgQGlmIChhdmF0YXJWaWV3TW9kZWwuZGlzcGxheUluaXRpYWxzKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbml0aWFsc1wiPlxuICAgICAgICAgICAge3sgYXZhdGFyVmlld01vZGVsLmluaXRpYWxzIH19XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvbmctY29udGFpbmVyPlxuIl19
208
+ args: [{ selector: 'ap-avatar', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgOptimizedImage, SymbolComponent, NgClass], hostDirectives: [NgStyle], host: {
209
+ '[class.background-default]': '!useBigNetwork()',
210
+ }, template: "<!-- background -->\n@if (backgroundView(); as bgView) {\n @switch (bgView.mode) {\n @case ('image') {\n <img\n class=\"bg-image\"\n [ngSrc]=\"bgView.image.src\"\n [width]=\"bgView.image.size\"\n [height]=\"bgView.image.size\"\n [alt]=\"bgView.image.alt\"\n (error)=\"onImageError()\" />\n }\n @case ('initials') {\n <div class=\"bg-initials\">\n {{ bgView.text }}\n </div>\n }\n @case ('symbol') {\n <div\n class=\"bg-symbol\"\n [ngClass]=\"['sym-' + bgView.symbolId, bgView.big ? 'big' : '']\">\n <ap-symbol [symbolId]=\"bgView.symbolId\" />\n </div>\n }\n }\n}\n\n<!-- overlay -->\n@if (overlayView(); as ovlView) {\n @switch (ovlView.mode) {\n @case ('network') {\n <div\n class=\"ovl-network\"\n [class.round]=\"ovlView.round\"\n [ngClass]=\"ovlView.network\">\n <ap-symbol [symbolId]=\"ovlView.symbolId\" />\n </div>\n }\n @case ('online') {\n <div class=\"ovl-online\"></div>\n }\n }\n}\n", styles: [":host{display:flex;justify-content:center;align-items:center;height:var(--ap-avatar-size);min-height:var(--ap-avatar-size);max-height:var(--ap-avatar-size);width:var(--ap-avatar-size);min-width:var(--ap-avatar-size);max-width:var(--ap-avatar-size);box-sizing:border-box;position:relative;border-radius:var(--ap-avatar-border-radius)}:host.background-default{background:var(--ref-color-grey-40);box-shadow:0 0 0 1px var(--ref-color-grey-10)}.bg-image{overflow:hidden;box-sizing:border-box;border-radius:var(--ap-avatar-border-radius)}.bg-symbol{display:flex;justify-content:center;align-items:center}.bg-symbol:not(.big) ap-symbol{color:var(--ref-color-white);width:var(--ap-avatar-symbol-size);min-width:var(--ap-avatar-symbol-size);max-width:var(--ap-avatar-symbol-size);height:var(--ap-avatar-symbol-size);min-height:var(--ap-avatar-symbol-size);max-height:var(--ap-avatar-symbol-size)}.bg-symbol.big ap-symbol ::ng-deep .svg{top:unset!important;left:unset!important;width:104.35%!important;height:unset!important}.bg-initials{font-weight:var(--ref-font-weight-bold);font-size:var(--ap-avatar-initials-size);line-height:var(--ref-font-line-height-xl);font-family:Averta;color:var(--ref-color-white)}.ovl-network{position:absolute;height:var(--ap-avatar-online-icon-size);min-height:var(--ap-avatar-network-size);max-height:var(--ap-avatar-network-size);width:var(--ap-avatar-network-size);min-width:var(--ap-avatar-network-size);max-width:var(--ap-avatar-network-size);overflow:hidden;box-sizing:border-box;bottom:0;right:0;box-shadow:0 0 0 1px var(--ref-color-grey-10)}.ovl-network.round{border-radius:100%}.ovl-network.instagram{border-radius:28%}.ovl-network.linkedin{border-radius:6%}.ovl-network.googleMyBusiness,.ovl-network.google{box-shadow:none;border-radius:unset}.ovl-network ap-symbol ::ng-deep img{border-radius:0;border:none}.ovl-online{position:absolute;height:var(--ap-avatar-online-icon-size);min-height:var(--ap-avatar-online-icon-size);max-height:var(--ap-avatar-online-icon-size);width:var(--ap-avatar-online-icon-size);min-width:var(--ap-avatar-online-icon-size);max-width:var(--ap-avatar-online-icon-size);border-radius:100%;overflow:hidden;background:var(--ref-color-grey-40);box-sizing:border-box;border:1px solid var(--ref-color-white);bottom:0;right:0;background:var(--ref-color-green-100)}\n"] }]
211
+ }], ctorParameters: () => [{ type: i1.SymbolRegistry }, { type: i2.NgStyle }] });
212
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9hdmF0YXIvc3JjL2F2YXRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvYXZhdGFyL3NyYy9hdmF0YXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsMEJBQTBCLEVBQzFCLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixVQUFVLEVBQ1YsU0FBUyxFQUNULFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsZUFBZSxHQUVsQixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBRWpJLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHO0lBQ2xDLE9BQU8sRUFBRTtRQUNMLEtBQUssRUFBRSxJQUFJO1FBQ1gsTUFBTSxFQUFFLGlCQUFpQjtLQUM1QjtJQUNELFFBQVEsRUFBRTtRQUNOLEtBQUssRUFBRSxJQUFJO1FBQ1gsTUFBTSxFQUFFLGtCQUFrQjtLQUM3QjtJQUNELE1BQU0sRUFBRTtRQUNKLEtBQUssRUFBRSxLQUFLO1FBQ1osTUFBTSxFQUFFLDBCQUEwQjtLQUNyQztJQUNELFNBQVMsRUFBRTtRQUNQLEtBQUssRUFBRSxLQUFLO1FBQ1osTUFBTSxFQUFFLG9CQUFvQixFQUFFLFdBQVc7S0FDNUM7SUFDRCxRQUFRLEVBQUU7UUFDTixLQUFL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QyxDQUFDLENBQUMsRUFBRTtZQUNsRyx5QkFBeUIsRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDakgsMEJBQTBCLEVBQUUsT0FBTyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzVGLDhCQUE4QixFQUFFLE9BQU8sSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsMEJBQTBCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUNyRyxDQUFDO0lBQ04sQ0FBQzt1R0FsSFEsZUFBZTsyRkFBZixlQUFlLGttREMxSjVCLDZ2Q0EyQ0EsMDBFRHlHYyxnQkFBZ0IsZ1BBQUUsZUFBZSw2RkFBRSxPQUFPOzsyRkFNM0MsZUFBZTtrQkFaM0IsU0FBUzsrQkFDSSxXQUFXLG1CQUNKLHVCQUF1QixDQUFDLE1BQU0sY0FHbkMsSUFBSSxXQUNQLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxrQkFDckMsQ0FBQyxPQUFPLENBQUMsUUFDbkI7d0JBQ0YsNEJBQTRCLEVBQUUsa0JBQWtCO3FCQUNuRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWdvcmFwdWxzZVN5bWJvbCxcbiAgICBhZ29yYXB1bHNlU3ltYm9sLFxuICAgIGFwQmx1ZXNreU9mZmljaWFsLFxuICAgIGFwRmFjZWJvb2tPZmZpY2lhbCxcbiAgICBhcEdvb2dsZU15QnVzaW5lc3NPZmZpY2lhbCxcbiAgICBhcExpbmtlZGluT2ZmaWNpYWwsXG4gICAgYXBOc1RocmVhZHNMb2dvLFxuICAgIGFwUGludGVyZXN0T2ZmaWNpYWwsXG4gICAgYXBUaWt0b2tPZmZpY2lhbCxcbiAgICBhcFdlYkJsb2dzLFxuICAgIGFwV2ViTmV3cyxcbiAgICBhcFhPZmZpY2lhbCxcbiAgICBhcFlvdXR1YmVPZmZpY2lhbCxcbiAgICBTeW1ib2xDb21wb25lbnQsXG4gICAgU3ltYm9sUmVnaXN0cnksXG59IGZyb20gJ0BhZ29yYXB1bHNlL3VpLXN5bWJvbCc7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ09wdGltaXplZEltYWdlLCBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGJvb2xlYW5BdHRyaWJ1dGUsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIGlucHV0LCBzaWduYWwsIHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgbmV0d29ya1N5bWJvbEJ5TmV0d29yayA9IHtcbiAgICBibHVlc2t5OiB7XG4gICAgICAgIHJvdW5kOiB0cnVlLFxuICAgICAgICBzeW1ib2w6IGFwQmx1ZXNreU9mZmljaWFsLFxuICAgIH0sXG4gICAgZmFjZWJvb2s6IHtcbiAgICAgICAgcm91bmQ6IHRydWUsXG4gICAgICAgIHN5bWJvbDogYXBGYWNlYm9va09mZmljaWFsLFxuICAgIH0sXG4gICAgZ29vZ2xlOiB7XG4gICAgICAgIHJvdW5kOiBmYWxzZSxcbiAgICAgICAgc3ltYm9sOiBhcEdvb2dsZU15QnVzaW5lc3NPZmZpY2lhbCxcbiAgICB9LFxuICAgIGluc3RhZ3JhbToge1xuICAgICAgICByb3VuZDogZmFsc2UsXG4gICAgICAgIHN5bWJvbDogJ2luc3RhZ3JhbS1vZmZpY2lhbCcsIC8vIGVtYmVkZGVkXG4gICAgfSxcbiAgICBsaW5rZWRpbjoge1xuICAgICAgICByb3VuZDogZmFsc2UsXG4gICAgICAgIHN5bWJvbDogYXBMaW5rZWRpbk9mZmljaWFsLFxuICAgIH0sXG4gICAgcGludGVyZXN0OiB7XG4gICAgICAgIHJvdW5kOiB0cnVlLFxuICAgICAgICBzeW1ib2w6IGFwUGludGVyZXN0T2ZmaWNpYWwsXG4gICAgfSxcbiAgICB0aHJlYWRzOiB7XG4gICAgICAgIHJvdW5kOiB0cnVlLFxuICAgICAgICBzeW1ib2w6IGFwTnNUaHJlYWRzTG9nbyxcbiAgICB9LFxuICAgIHRpa3Rvazoge1xuICAgICAgICByb3VuZDogdHJ1ZSxcbiAgICAgICAgc3ltYm9sOiBhcFRpa3Rva09mZmljaWFsLFxuICAgIH0sXG4gICAgdHdpdHRlcjoge1xuICAgICAgICByb3VuZDogdHJ1ZSxcbiAgICAgICAgc3ltYm9sOiBhcFhPZmZpY2lhbCxcbiAgICB9LFxuICAgIHdlYkJsb2c6IHtcbiAgICAgICAgcm91bmQ6IHRydWUsXG4gICAgICAgIHN5bWJvbDogYXBXZWJCbG9ncyxcbiAgICB9LFxuICAgIHdlYk5ld3M6IHtcbiAgICAgICAgcm91bmQ6IHRydWUsXG4gICAgICAgIHN5bWJvbDogYXBXZWJOZXdzLFxuICAgIH0sXG4gICAgWDoge1xuICAgICAgICByb3VuZDogdHJ1ZSxcbiAgICAgICAgc3ltYm9sOiBhcFhPZmZpY2lhbCxcbiAgICB9LFxuICAgIHlvdXR1YmU6IHtcbiAgICAgICAgcm91bmQ6IHRydWUsXG4gICAgICAgIHN5bWJvbDogYXBZb3V0dWJlT2ZmaWNpYWwsXG4gICAgfSxcbn0gc2F0aXNmaWVzIFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAge1xuICAgICAgICByb3VuZDogYm9vbGVhbjtcbiAgICAgICAgc3ltYm9sOiBBZ29yYXB1bHNlU3ltYm9sIHwgc3RyaW5nO1xuICAgIH1cbj47XG5cbmV4cG9ydCB0eXBlIEF2YXRhck5ldHdvcmsgPSBrZXlvZiB0eXBlb2YgbmV0d29ya1N5bWJvbEJ5TmV0d29yaztcblxuZnVuY3Rpb24gdG9TeW1ib2woc3ltYm9sOiBBZ29yYXB1bHNlU3ltYm9sIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdHlwZW9mIHN5bWJvbCA9PSAnc3RyaW5nJyA/IHN5bWJvbCA6IHN5bWJvbC5uYW1lO1xufVxuXG5leHBvcnQgdHlwZSBBdmF0YXJTaXplID0gNTYgfCA0OCB8IDQwIHwgMzYgfCAzMiB8IDI0IHwgMTY7XG5cbmNvbnN0IG9ubGluZUljb25TaXplQnlBdmF0YXJTaXplOiBSZWNvcmQ8QXZhdGFyU2l6ZSwgbnVtYmVyPiA9IHtcbiAgICA1NjogMTYsXG4gICAgNDg6IDEyLFxuICAgIDQwOiAxMixcbiAgICAzNjogOCxcbiAgICAzMjogOCxcbiAgICAyNDogNixcbiAgICAxNjogNixcbn07XG5cbmNvbnN0IHN5bWJvbFNpemVCeUF2YXRhclNpemU6IFJlY29yZDxBdmF0YXJTaXplLCBudW1iZXI+ID0ge1xuICAgIDU2OiAyOCxcbiAgICA0ODogMjQsXG4gICAgNDA6IDIwLFxuICAgIDM2OiAxOCxcbiAgICAzMjogMTYsXG4gICAgMjQ6IDEyLFxuICAgIDE2OiA4LFxufTtcblxuY29uc3QgbmV0d29ya1NpemVCeUF2YXRhclNpemU6IFJlY29yZDxBdmF0YXJTaXplLCBudW1iZXI+ID0ge1xuICAgIDU2OiAxNixcbiAgICA0ODogMTYsXG4gICAgNDA6IDE2LFxuICAgIDM2OiAxNixcbiAgICAzMjogMTIsXG4gICAgMjQ6IDEyLFxuICAgIDE2OiA4LFxufTtcblxuY29uc3QgaW5pdGlhbFNpemVCeUF2YXRhclNpemU6IFJlY29yZDxBdmF0YXJTaXplLCBudW1iZXI+ID0ge1xuICAgIDU2OiAyOCxcbiAgICA0ODogMjQsXG4gICAgNDA6IDIyLFxuICAgIDM2OiAxOCxcbiAgICAzMjogMTgsXG4gICAgMjQ6IDE0LFxuICAgIDE2OiAxMCxcbn07XG5cbmNvbnN0IGF1dG9tYXRpY0JpZ1N5bWJvbE5ldHdvcms6IEF2YXRhck5ldHdvcmtbXSA9IFsneW91dHViZSddO1xuXG50eXBlIEJhY2tncm91bmRWaWV3ID1cbiAgICB8IHsgbW9kZTogJ2ltYWdlJzsgaW1hZ2U6IHsgc3JjOiBzdHJpbmc7IHNpemU6IG51bWJlcjsgYWx0Pzogc3RyaW5nIH0gfVxuICAgIHwgeyBtb2RlOiAnaW5pdGlhbHMnOyB0ZXh0OiBzdHJpbmcgfVxuICAgIHwgeyBtb2RlOiAnc3ltYm9sJzsgc3ltYm9sSWQ6IGFnb3JhcHVsc2VTeW1ib2w7IGJpZz86IGJvb2xlYW4gfVxuICAgIHwgeyBtb2RlPzogbmV2ZXIgfTtcblxudHlwZSBPdmVybGF5VmlldyA9XG4gICAgfCB7IG1vZGU6ICdvbmxpbmUnIH1cbiAgICB8IHsgbW9kZTogJ25ldHdvcmsnOyBuZXR3b3JrOiBBdmF0YXJOZXR3b3JrOyBzeW1ib2xJZDogYWdvcmFwdWxzZVN5bWJvbDsgcm91bmQ6IGJvb2xlYW4gfVxuICAgIHwgeyBtb2RlPzogbmV2ZXIgfTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcC1hdmF0YXInLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hdmF0YXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2F2YXRhci5jb21wb25lbnQuc2NzcyddLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nT3B0aW1pemVkSW1hZ2UsIFN5bWJvbENvbXBvbmVudCwgTmdDbGFzc10sXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtOZ1N0eWxlXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3MuYmFja2dyb3VuZC1kZWZhdWx0XSc6ICchdXNlQmlnTmV0d29yaygpJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBBdmF0YXJDb21wb25lbnQge1xuICAgIHByb2ZpbGVQaWN0dXJlID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIGFsdCA9IGlucHV0KCcnKTtcbiAgICBuZXR3b3JrID0gaW5wdXQodW5kZWZpbmVkLCB7XG4gICAgICAgIHRyYW5zZm9ybTogKHY/OiBBdmF0YXJOZXR3b3JrIHwgc3RyaW5nKSA9PiAodiAhPT0gdW5kZWZpbmVkID8gKHYgYXMgQXZhdGFyTmV0d29yaykgOiB2KSxcbiAgICB9KTtcbiAgICBzaXplID0gaW5wdXQ8QXZhdGFyU2l6ZSB8IGAke0F2YXRhclNpemV9YD4oNDApO1xuICAgIHVzZXJuYW1lID0gaW5wdXQoJycpO1xuICAgIHNob3dJbml0aWFscyA9IGlucHV0PGJvb2xlYW4gfCBzdHJpbmc+KCk7XG4gICAgYmlnTmV0d29yayA9IGlucHV0KGZhbHNlKTtcbiAgICBhbm9ueW1vdXMgPSBpbnB1dChmYWxzZSk7XG4gICAgb25saW5lID0gaW5wdXQoZmFsc2UpO1xuICAgIGhpZGVOZXR3b3JrID0gaW5wdXQoZmFsc2UsIHsgYWxpYXM6ICd5b3V0dWJlQXZhdGFyTW9kZScgfSk7XG4gICAgcm91bmRlZCA9IGlucHV0KHRydWUsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gICAgcHJpdmF0ZSBpbWFnZUVycm9yID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIGJhY2tncm91bmRWaWV3ID0gY29tcHV0ZWQ8QmFja2dyb3VuZFZpZXc+KCgpID0+IHRoaXMuYnVpbGRCYWNrZ3JvdW5kVmlldygpKTtcbiAgICBvdmVybGF5VmlldyA9IGNvbXB1dGVkPE92ZXJsYXlWaWV3PigoKSA9PiB0aGlzLmJ1aWxkT3ZlcmxheVZpZXcoKSk7XG4gICAgcHJvdGVjdGVkIHVzZUJpZ05ldHdvcmsgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiAodGhpcy5hdXRvbWF0aWNCaWdTeW1ib2xOZXR3b3JrKCkgfHwgdGhpcy5iaWdOZXR3b3JrKCkpICYmICF0aGlzLmhpZGVOZXR3b3JrKCk7XG4gICAgfSk7XG4gICAgcHJpdmF0ZSBhdXRvbWF0aWNCaWdTeW1ib2xOZXR3b3JrID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gYXV0b21hdGljQmlnU3ltYm9sTmV0d29yay5pbmNsdWRlcyh0aGlzLm5ldHdvcmsoKSBhcyBBdmF0YXJOZXR3b3JrKTtcbiAgICB9KTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBzeW1ib2xSZWdpc3RyeTogU3ltYm9sUmVnaXN0cnksXG4gICAgICAgIHByaXZhdGUgbmdTdHlsZTogTmdTdHlsZVxuICAgICkge1xuICAgICAgICBzeW1ib2xSZWdpc3RyeS5yZWdpc3RlclN5bWJvbHMoXG4gICAgICAgICAgICBPYmplY3QudmFsdWVzKG5ldHdvcmtTeW1ib2xCeU5ldHdvcmspLmZsYXRNYXAoKHsgc3ltYm9sIH0pID0+ICh0eXBlb2Ygc3ltYm9sICE9PSAnc3RyaW5nJyA/IFtzeW1ib2xdIDogW10pKVxuICAgICAgICApO1xuXG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5nU3R5bGUubmdTdHlsZSA9IHRoaXMuYnVpbGRIb3N0U3R5bGUoKTtcbiAgICAgICAgICAgIHRoaXMubmdTdHlsZS5uZ0RvQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnByb2ZpbGVQaWN0dXJlKCk7IC8vIG9uIGNoYW5nZVxuICAgICAgICAgICAgdW50cmFja2VkKCgpID0+IHRoaXMuaW1hZ2VFcnJvci5zZXQoZmFsc2UpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25JbWFnZUVycm9yKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmltYWdlRXJyb3Iuc2V0KHRydWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRCYWNrZ3JvdW5kVmlldygpOiBCYWNrZ3JvdW5kVmlldyB7XG4gICAgICAgIGxldCBiZ1ZpZXc6IEJhY2tncm91bmRWaWV3ID0ge307XG5cbiAgICAgICAgaWYgKHRoaXMudXNlQmlnTmV0d29yaygpKSB7XG4gICAgICAgICAgICBiZ1ZpZXcgPSB7IG1vZGU6ICdzeW1ib2wnLCBzeW1ib2xJZDogdG9TeW1ib2wobmV0d29ya1N5bWJvbEJ5TmV0d29ya1t0aGlzLm5ldHdvcmsoKSFdLnN5bWJvbCksIGJpZzogdHJ1ZSB9O1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYW5vbnltb3VzKCkpIHtcbiAgICAgICAgICAgIGJnVmlldyA9IHsgbW9kZTogJ3N5bWJvbCcsIHN5bWJvbElkOiAnc2hvdy10aGVhdGVyLW1hc2staGFwcHknIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwcm9maWxlUGljdHVyZSA9IHRoaXMucHJvZmlsZVBpY3R1cmUoKTtcblxuICAgICAgICAgICAgaWYgKHByb2ZpbGVQaWN0dXJlICYmICF0aGlzLnVzZUJpZ05ldHdvcmsoKSAmJiAhdGhpcy5pbWFnZUVycm9yKCkpIHtcbiAgICAgICAgICAgICAgICBiZ1ZpZXcgPSB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGU6ICdpbWFnZScsXG4gICAgICAgICAgICAgICAgICAgIGltYWdlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHByb2ZpbGVQaWN0dXJlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogK3RoaXMuc2l6ZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWx0OiB0aGlzLmFsdCgpLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluaXRpYWxzID0gdGhpcy5zaG93SW5pdGlhbHMoKTtcblxuICAgICAgICAgICAgICAgIGlmIChpbml0aWFscyAhPT0gZmFsc2UgJiYgaW5pdGlhbHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1c2VEZWZhdWx0ID0gaW5pdGlhbHMgPT09IHRydWUgfHwgaW5pdGlhbHMgPT09ICcnO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5kaWRhdGVOYW1lID0gKHVzZURlZmF1bHQgPyB0aGlzLnVzZXJuYW1lKCkuY2hhckF0KDApIDogaW5pdGlhbHMuc2xpY2UoMCwgMikpLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgIGJnVmlldyA9IHsgbW9kZTogJ2luaXRpYWxzJywgdGV4dDogY2FuZGlkYXRlTmFtZSB9O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy51c2VCaWdOZXR3b3JrKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJnVmlldyA9IHsgbW9kZTogJ3N5bWJvbCcsIHN5bWJvbElkOiAnc2luZ2xlLW5ldXRyYWwnIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYmdWaWV3O1xuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRPdmVybGF5VmlldygpOiBPdmVybGF5VmlldyB7XG4gICAgICAgIGxldCBvdmxWaWV3OiBPdmVybGF5VmlldyA9IHt9O1xuICAgICAgICBjb25zdCBuZXR3b3JrID0gdGhpcy5uZXR3b3JrKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmF1dG9tYXRpY0JpZ1N5bWJvbE5ldHdvcmsoKSkge1xuICAgICAgICAgICAgaWYgKG5ldHdvcmsgJiYgIXRoaXMuYmlnTmV0d29yaygpICYmICF0aGlzLmhpZGVOZXR3b3JrKCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHN5bWJvbCwgcm91bmQgfSA9IG5ldHdvcmtTeW1ib2xCeU5ldHdvcmtbbmV0d29ya107XG4gICAgICAgICAgICAgICAgb3ZsVmlldyA9IHsgbW9kZTogJ25ldHdvcmsnLCBuZXR3b3JrLCBzeW1ib2xJZDogdG9TeW1ib2woc3ltYm9sKSwgcm91bmQgfTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5vbmxpbmUoKSkge1xuICAgICAgICAgICAgICAgIG92bFZpZXcgPSB7IG1vZGU6ICdvbmxpbmUnIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3ZsVmlldztcbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkSG9zdFN0eWxlKCkge1xuICAgICAgICBjb25zdCBiZ1ZpZXcgPSB0aGlzLmJhY2tncm91bmRWaWV3KCk7XG4gICAgICAgIGNvbnN0IG92bE1vZGUgPSB0aGlzLm92ZXJsYXlWaWV3KCkubW9kZTtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMuc2l6ZSgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnLS1hcC1hdmF0YXItc2l6ZSc6IGAke3NpemV9cHhgLFxuICAgICAgICAgICAgJy0tYXAtYXZhdGFyLWJvcmRlci1yYWRpdXMnOiB0aGlzLnJvdW5kZWQoKSA/ICcxMDAlJyA6ICd2YXIoLS1zeXMtYm9yZGVyLXJhZGl1cy1zbSknLFxuICAgICAgICAgICAgJy0tYXAtYXZhdGFyLWluaXRpYWxzLXNpemUnOiBiZ1ZpZXcubW9kZSA9PSAnaW5pdGlhbHMnID8gYCR7aW5pdGlhbFNpemVCeUF2YXRhclNpemVbc2l6ZV19cHhgIDogJycsXG4gICAgICAgICAgICAnLS1hcC1hdmF0YXItc3ltYm9sLXNpemUnOiBiZ1ZpZXcubW9kZSA9PSAnc3ltYm9sJyA/IGAke2JnVmlldy5iaWcgPyBzaXplIDogc3ltYm9sU2l6ZUJ5QXZhdGFyU2l6ZVtzaXplXX1weGAgOiAnJyxcbiAgICAgICAgICAgICctLWFwLWF2YXRhci1uZXR3b3JrLXNpemUnOiBvdmxNb2RlID09ICduZXR3b3JrJyA/IGAke25ldHdvcmtTaXplQnlBdmF0YXJTaXplW3NpemVdfXB4YCA6ICcnLFxuICAgICAgICAgICAgJy0tYXAtYXZhdGFyLW9ubGluZS1pY29uLXNpemUnOiBvdmxNb2RlID09ICdvbmxpbmUnID8gYCR7b25saW5lSWNvblNpemVCeUF2YXRhclNpemVbc2l6ZV19cHhgIDogJycsXG4gICAgICAgIH07XG4gICAgfVxufVxuIiwiPCEtLSBiYWNrZ3JvdW5kIC0tPlxuQGlmIChiYWNrZ3JvdW5kVmlldygpOyBhcyBiZ1ZpZXcpIHtcbiAgICBAc3dpdGNoIChiZ1ZpZXcubW9kZSkge1xuICAgICAgICBAY2FzZSAoJ2ltYWdlJykge1xuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIGNsYXNzPVwiYmctaW1hZ2VcIlxuICAgICAgICAgICAgICAgIFtuZ1NyY109XCJiZ1ZpZXcuaW1hZ2Uuc3JjXCJcbiAgICAgICAgICAgICAgICBbd2lkdGhdPVwiYmdWaWV3LmltYWdlLnNpemVcIlxuICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiYmdWaWV3LmltYWdlLnNpemVcIlxuICAgICAgICAgICAgICAgIFthbHRdPVwiYmdWaWV3LmltYWdlLmFsdFwiXG4gICAgICAgICAgICAgICAgKGVycm9yKT1cIm9uSW1hZ2VFcnJvcigpXCIgLz5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ2luaXRpYWxzJykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJnLWluaXRpYWxzXCI+XG4gICAgICAgICAgICAgICAge3sgYmdWaWV3LnRleHQgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnc3ltYm9sJykge1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYmctc3ltYm9sXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJbJ3N5bS0nICsgYmdWaWV3LnN5bWJvbElkLCBiZ1ZpZXcuYmlnID8gJ2JpZycgOiAnJ11cIj5cbiAgICAgICAgICAgICAgICA8YXAtc3ltYm9sIFtzeW1ib2xJZF09XCJiZ1ZpZXcuc3ltYm9sSWRcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICB9XG59XG5cbjwhLS0gb3ZlcmxheSAtLT5cbkBpZiAob3ZlcmxheVZpZXcoKTsgYXMgb3ZsVmlldykge1xuICAgIEBzd2l0Y2ggKG92bFZpZXcubW9kZSkge1xuICAgICAgICBAY2FzZSAoJ25ldHdvcmsnKSB7XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJvdmwtbmV0d29ya1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnJvdW5kXT1cIm92bFZpZXcucm91bmRcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIm92bFZpZXcubmV0d29ya1wiPlxuICAgICAgICAgICAgICAgIDxhcC1zeW1ib2wgW3N5bWJvbElkXT1cIm92bFZpZXcuc3ltYm9sSWRcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdvbmxpbmUnKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3ZsLW9ubGluZVwiPjwvZGl2PlxuICAgICAgICB9XG4gICAgfVxufVxuIl19