valtech-components 4.0.418 → 4.0.419

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.
@@ -1,11 +1,13 @@
1
- import { Component, computed, inject, signal } from '@angular/core';
2
- import { IonIcon } from '@ionic/angular/standalone';
1
+ import { Component, Input, computed, inject, signal } from '@angular/core';
2
+ import { Router } from '@angular/router';
3
+ import { IonIcon, IonModal } from '@ionic/angular/standalone';
3
4
  import { addIcons } from 'ionicons';
4
5
  import { musicalNotesOutline, refreshOutline, trophyOutline, } from 'ionicons/icons';
5
6
  import { I18nService } from '../../../services/i18n';
6
7
  import { MINI_GAMES_I18N } from './mini-games.i18n';
7
8
  import { MiniGamePlayerProfileService } from './mini-game-player-profile.service';
8
9
  import { RetroAudioService } from './retro-audio.service';
10
+ import { ModalLayoutComponent } from '../../molecules/modal-layout/modal-layout.component';
9
11
  import * as i0 from "@angular/core";
10
12
  addIcons({ musicalNotesOutline, refreshOutline, trophyOutline });
11
13
  const SYMBOLS = ['⭐', '🚀', '🎵', '⚡', '🌙', '💎', '🎈', '🍀', '🧩', '🎲', '🌈', '🔥', '🍓', '🦄', '🎁', '☀️'];
@@ -31,8 +33,10 @@ const LEADERBOARD_KEY = 'val-mini-games-memory-leaderboard:v1';
31
33
  export class MemoryGameComponent {
32
34
  constructor() {
33
35
  this.i18n = inject(I18nService);
36
+ this.router = inject(Router);
34
37
  this.playerProfiles = inject(MiniGamePlayerProfileService);
35
38
  this.audio = inject(RetroAudioService);
39
+ this.miniGamesRoute = '/mini-games';
36
40
  this.profiles = ['kid', 'classic', 'ninja'];
37
41
  this.confettiPieces = Array.from({ length: 14 }, (_, index) => index);
38
42
  this.phase = signal('home');
@@ -49,6 +53,7 @@ export class MemoryGameComponent {
49
53
  this.failed = signal(false);
50
54
  this.lockBoard = signal(false);
51
55
  this.leaderboard = signal(this.readLeaderboard());
56
+ this.confirmAction = signal(undefined);
52
57
  this.profileConfig = computed(() => PROFILE_CONFIG[this.profile()]);
53
58
  this.pairCount = computed(() => this.profileConfig().pairs);
54
59
  this.boardClass = computed(() => `memory-board ${this.profileConfig().boardClass}`);
@@ -74,6 +79,46 @@ export class MemoryGameComponent {
74
79
  .replace('{attempts}', String(this.attempts()))
75
80
  .replace('{time}', this.formatSeconds(this.resultSeconds()))
76
81
  .replace('{streak}', String(this.bestStreak())));
82
+ this.confirmTitle = computed(() => {
83
+ const action = this.confirmAction();
84
+ if (action === 'restart')
85
+ return this.t('confirmRestartTitle');
86
+ if (action === 'games')
87
+ return this.t('confirmGamesTitle');
88
+ return this.t('confirmModeTitle');
89
+ });
90
+ this.confirmBody = computed(() => {
91
+ const action = this.confirmAction();
92
+ if (action === 'restart')
93
+ return this.t('confirmRestartBody');
94
+ if (action === 'games')
95
+ return this.t('confirmGamesBody');
96
+ return this.t('confirmModeBody');
97
+ });
98
+ this.confirmActions = computed(() => [
99
+ {
100
+ text: this.t('cancel'),
101
+ color: 'dark',
102
+ state: 'ENABLED',
103
+ fill: 'outline',
104
+ shape: 'round',
105
+ type: 'button',
106
+ token: 'cancel',
107
+ },
108
+ {
109
+ text: this.confirmAction() === 'restart'
110
+ ? this.t('restart')
111
+ : this.confirmAction() === 'games'
112
+ ? this.t('changeGame')
113
+ : this.t('backToSetup'),
114
+ color: 'dark',
115
+ state: 'ENABLED',
116
+ fill: 'outline',
117
+ shape: 'round',
118
+ type: 'button',
119
+ token: 'confirm',
120
+ },
121
+ ]);
77
122
  this.i18n.registerDefaults('MiniGames', MINI_GAMES_I18N);
78
123
  window.setTimeout(() => void this.audio.startMenuMusic().catch(() => undefined), 0);
79
124
  }
@@ -131,6 +176,40 @@ export class MemoryGameComponent {
131
176
  this.stopTimer();
132
177
  void this.audio.startMenuMusic().catch(() => undefined);
133
178
  }
179
+ requestRestartGame() {
180
+ this.confirmAction.set('restart');
181
+ this.audio.flip();
182
+ }
183
+ requestChangeMode() {
184
+ this.confirmAction.set('mode');
185
+ this.audio.flip();
186
+ }
187
+ requestChangeGame() {
188
+ this.confirmAction.set('games');
189
+ this.audio.flip();
190
+ }
191
+ closeConfirmModal() {
192
+ this.confirmAction.set(undefined);
193
+ }
194
+ confirmPendingAction(token) {
195
+ if (token !== 'confirm') {
196
+ this.closeConfirmModal();
197
+ return;
198
+ }
199
+ const action = this.confirmAction();
200
+ this.confirmAction.set(undefined);
201
+ if (action === 'restart') {
202
+ this.start();
203
+ return;
204
+ }
205
+ if (action === 'mode') {
206
+ this.resetToSetup();
207
+ return;
208
+ }
209
+ if (action === 'games') {
210
+ this.resetToGamesMenu();
211
+ }
212
+ }
134
213
  flip(card) {
135
214
  if (this.lockBoard() || card.flipped || card.matched || this.won() || this.failed())
136
215
  return;
@@ -195,6 +274,14 @@ export class MemoryGameComponent {
195
274
  this.timer = undefined;
196
275
  }
197
276
  }
277
+ resetToGamesMenu() {
278
+ this.resetToSetup();
279
+ void this.router.navigateByUrl(this.miniGamesBaseRoute()).catch(() => undefined);
280
+ }
281
+ miniGamesBaseRoute() {
282
+ const route = (this.miniGamesRoute || '/mini-games').trim();
283
+ return `/${route.replace(/^\/+|\/+$/g, '') || 'mini-games'}`;
284
+ }
198
285
  shuffle(items) {
199
286
  const copy = [...items];
200
287
  for (let i = copy.length - 1; i > 0; i -= 1) {
@@ -297,7 +384,7 @@ export class MemoryGameComponent {
297
384
  return `${min}:${String(sec).padStart(2, '0')}`;
298
385
  }
299
386
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MemoryGameComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
300
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: MemoryGameComponent, isStandalone: true, selector: "val-memory-game", ngImport: i0, template: `
387
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: MemoryGameComponent, isStandalone: true, selector: "val-memory-game", inputs: { miniGamesRoute: "miniGamesRoute" }, ngImport: i0, template: `
301
388
  <main class="memory-shell">
302
389
  @if (phase() === 'home') {
303
390
  <section class="memory-hero">
@@ -331,6 +418,11 @@ export class MemoryGameComponent {
331
418
  </div>
332
419
 
333
420
  <button class="memory-primary" type="button" (click)="start()">{{ t('startGame') }}</button>
421
+ <div class="memory-menu-actions">
422
+ <button class="memory-secondary" type="button" (click)="requestChangeGame()">
423
+ {{ t('changeGame') }}
424
+ </button>
425
+ </div>
334
426
  </div>
335
427
  </section>
336
428
  } @else {
@@ -398,10 +490,11 @@ export class MemoryGameComponent {
398
490
  }
399
491
 
400
492
  <div class="memory-actions">
401
- <button class="memory-secondary" type="button" (click)="resetToSetup()">{{ t('backToSetup') }}</button>
402
- <button class="memory-primary" type="button" (click)="start()">
493
+ <button class="memory-secondary" type="button" (click)="requestChangeMode()">{{ t('backToSetup') }}</button>
494
+ <button class="memory-secondary" type="button" (click)="requestChangeGame()">{{ t('changeGame') }}</button>
495
+ <button class="memory-primary" type="button" (click)="requestRestartGame()">
403
496
  <ion-icon name="refresh-outline" aria-hidden="true"></ion-icon>
404
- {{ t(phase() === 'playing' ? 'restart' : 'playAgain') }}
497
+ {{ t('restart') }}
405
498
  </button>
406
499
  </div>
407
500
  </section>
@@ -427,11 +520,29 @@ export class MemoryGameComponent {
427
520
  }
428
521
  </section>
429
522
  </main>
430
- `, isInline: true, styles: [":host{display:block;min-height:100%;--memory-panel: var(--ion-card-background, #ffffff);--memory-panel-strong: #f8f6fb;--memory-border: var(--ion-border-color, #e7e4ea);--memory-text: var(--ion-color-dark, #2f2a3a);--memory-muted: var(--ion-color-medium, #6f6a7a);--memory-soft: rgba(var(--ion-color-primary-rgb, 255, 0, 178), .08);--memory-row: rgba(var(--ion-color-dark-rgb, 47, 42, 58), .04);--memory-primary: var(--ion-color-primary, #ff00b2);--memory-secondary: var(--ion-color-tertiary, #6a2de2)}:host-context(html.ion-palette-dark),:host-context([data-theme=\"dark\"]){--memory-panel: #231f2d;--memory-panel-strong: #2f2939;--memory-border: rgba(255, 255, 255, .13);--memory-text: #fff8ff;--memory-muted: rgba(255, 248, 255, .68);--memory-soft: rgba(255, 255, 255, .045);--memory-row: rgba(255, 255, 255, .055)}.memory-shell{min-height:calc(100vh - 120px);display:flex;flex-direction:column;gap:20px;padding:18px 0 32px;color:var(--memory-text)}.memory-hero{position:relative;overflow:hidden;border-radius:28px;padding:clamp(28px,8vw,52px) 20px;text-align:center;color:#fff;background:radial-gradient(circle at 18% 20%,rgba(255,255,255,.32),transparent 24%),linear-gradient(135deg,var(--memory-primary),var(--memory-secondary));box-shadow:0 24px 70px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.25)}.memory-hero:after{content:\"\";position:absolute;inset:auto -20% -42%;height:55%;background:repeating-linear-gradient(90deg,rgba(255,255,255,.18) 0 10px,transparent 10px 20px);opacity:.18;transform:rotate(-4deg)}.memory-hero__badge{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:#ffffff29;font-size:.78rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.memory-hero h1{margin:14px 0 6px;font-size:clamp(2.25rem,9vw,3.625rem);line-height:.95;font-weight:900}.memory-hero p{max-width:520px;margin:0 auto;font-size:clamp(1rem,3vw,1.25rem);line-height:1.35;opacity:.88}.memory-panel,.memory-game{border:1px solid var(--memory-border);border-radius:24px;padding:clamp(16px,4vw,28px);background:var(--memory-panel);box-shadow:inset 0 1px #ffffff08}.memory-options{display:grid;gap:14px}.memory-howto{display:grid;gap:6px;padding:16px;border:1px solid var(--memory-border);border-radius:20px;background:var(--memory-soft)}.memory-options h2,.memory-howto h2,.memory-leaderboard h2{margin:8px 0 0;color:var(--memory-text);font-size:1.25rem;font-weight:900}.memory-howto h2,.memory-leaderboard h2{margin:0}.memory-howto p,.memory-leaderboard p{margin:0;color:var(--memory-muted);font-size:1rem;line-height:1.45}.memory-profiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.memory-profiles button,.memory-secondary{border:1px solid var(--memory-border);border-radius:999px;background:transparent;color:var(--memory-text);font:inherit;font-weight:850}.memory-profiles button{min-height:92px;display:grid;align-content:center;gap:5px;padding:12px 18px;text-align:center}.memory-profiles button.is-selected{border-color:var(--memory-primary);background:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.12);color:var(--memory-primary)}.memory-profiles strong{font-size:1.02rem}.memory-profiles small{color:var(--memory-muted);font-size:.88rem;line-height:1.25}.memory-profiles button.is-selected small{color:inherit}.memory-primary{min-height:58px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:999px;background:var(--memory-primary);color:var(--ion-color-primary-contrast, #fff);font:inherit;font-weight:900;box-shadow:0 18px 45px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.28)}.memory-primary ion-icon{flex:0 0 auto;width:1.25em;height:1.25em;font-size:1.25em;line-height:1}.memory-score{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:16px}.memory-score span{border-radius:18px;padding:12px;background:var(--memory-row);text-align:center}.memory-score small,.memory-win p{color:var(--memory-muted)}.memory-score small{display:block;font-size:.72rem;font-weight:850;text-transform:uppercase;letter-spacing:.08em}.memory-score strong{display:block;color:var(--memory-text);font-size:1.35rem;font-weight:950}.memory-board{display:grid;grid-template-columns:repeat(4,minmax(58px,1fr));gap:clamp(8px,2vw,12px)}.memory-board--kid,.memory-board--classic{grid-template-columns:repeat(4,minmax(58px,1fr))}.memory-board--ninja{grid-template-columns:repeat(8,minmax(40px,1fr))}.memory-card{position:relative;aspect-ratio:1;border:0;border-radius:clamp(14px,4vw,22px);background:transparent;perspective:800px;font-size:clamp(24px,7vw,42px)}.memory-card__back,.memory-card__front{position:absolute;inset:0;display:grid;place-items:center;border-radius:inherit;backface-visibility:hidden;transition:transform .28s ease,box-shadow .2s ease,opacity .2s ease}.memory-card__back{background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.3),transparent 24%),linear-gradient(135deg,var(--memory-secondary),var(--memory-primary));color:#fff;font-weight:950;box-shadow:0 10px 24px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.2)}.memory-card__front{transform:rotateY(180deg);border:1px solid var(--memory-border);background:var(--memory-panel-strong)}.memory-card.is-flipped .memory-card__back{transform:rotateY(180deg)}.memory-card.is-flipped .memory-card__front{transform:rotateY(360deg)}.memory-card.is-matched .memory-card__front{box-shadow:inset 0 0 0 3px var(--memory-primary)}.memory-win{position:relative;overflow:hidden;margin-top:16px;padding:16px;border-radius:20px;background:rgba(var(--ion-color-success-rgb, 45, 211, 111),.12);text-align:center}.memory-win ion-icon{display:block;margin:0 auto 8px;color:var(--ion-color-success, #2dd36f);font-size:2rem}.memory-win strong{color:var(--memory-text);font-size:1.35rem;font-weight:950}.memory-win p{margin:4px 0 0}.memory-result{position:relative;z-index:1;display:inline-flex;align-items:center;gap:10px;margin-top:12px;padding:10px 14px;border-radius:999px;background:#ffffffb8;color:#2f2a3a}:host-context(html.ion-palette-dark) .memory-result,:host-context([data-theme=\"dark\"]) .memory-result{background:#ffffff1a;color:var(--memory-text)}.memory-result>span{display:grid;place-items:center;width:38px;height:38px;border-radius:999px;background:var(--player-color, var(--memory-primary));font-size:1.3rem}.memory-result div{display:grid;text-align:left}.memory-result small{color:var(--memory-muted);font-weight:800}.memory-confetti span{position:absolute;top:-16px;left:8%;width:9px;height:16px;border-radius:4px;background:var(--memory-primary);opacity:0;animation:memory-confetti-fall 1.5s ease-out forwards;transform:rotate(20deg)}.memory-confetti span:nth-child(2n){background:var(--memory-secondary);animation-delay:.08s;left:20%}.memory-confetti span:nth-child(3n){background:#ffcf3f;animation-delay:.16s;left:38%}.memory-confetti span:nth-child(4n){background:#2dd36f;animation-delay:.24s;left:55%}.memory-confetti span:nth-child(5n){left:72%}.memory-confetti span:nth-child(6n){left:86%}.memory-win--failed{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.memory-actions{position:sticky;bottom:10px;z-index:2;display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px;padding-top:10px;background:linear-gradient(to bottom,transparent,var(--memory-panel) 28%)}.memory-secondary{min-height:58px}.memory-leaderboard{display:grid;gap:12px;border:1px solid var(--memory-border);border-radius:24px;padding:clamp(16px,4vw,22px);background:var(--memory-panel)}.memory-leaderboard__title{display:flex;align-items:center;gap:10px}.memory-leaderboard__title ion-icon{color:var(--memory-primary);font-size:1.4rem}.memory-leaderboard ol{display:grid;gap:8px;margin:0;padding:0;list-style:none}.memory-leaderboard li{display:grid;grid-template-columns:38px 1fr;gap:2px 10px;align-items:center;padding:12px;border-radius:16px;background:var(--memory-row)}.memory-leaderboard li>span{grid-row:span 2;display:grid;place-items:center;width:34px;height:34px;border-radius:999px;background:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.18);color:var(--memory-primary);font-weight:950}.memory-leaderboard strong{color:var(--memory-text);font-size:.98rem}.memory-leaderboard small{color:var(--memory-muted);font-size:.88rem}.memory-player{display:grid;gap:12px;padding:14px;border:1px solid var(--memory-border);border-radius:22px;background:var(--memory-soft)}.memory-player h2,.memory-player p{margin:0}.memory-player p{color:var(--memory-muted)}.memory-player label{display:grid;gap:6px;font-weight:850}.memory-player input{width:100%;min-height:52px;border:1px solid var(--memory-border);border-radius:999px;padding:0 18px;background:var(--memory-panel);color:var(--memory-text);font:inherit;font-weight:850}.memory-avatar-list,.memory-color-list{display:flex;flex-wrap:wrap;gap:8px}.memory-avatar-list button,.memory-color-list button{display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--memory-border);border-radius:999px;background:var(--memory-panel);color:var(--memory-text);font-size:1.15rem}.memory-avatar-list button.is-selected,.memory-color-list button.is-selected{border-color:var(--memory-primary);box-shadow:0 0 0 3px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.14)}.memory-color-list button{background:var(--player-color)}@keyframes memory-confetti-fall{0%{opacity:0;transform:translateY(0) rotate(0)}18%{opacity:1}to{opacity:0;transform:translateY(170px) rotate(300deg)}}@media (max-width: 520px){.memory-score{grid-template-columns:repeat(2,1fr)}.memory-board--ninja{grid-template-columns:repeat(4,minmax(54px,1fr))}.memory-actions,.memory-profiles{grid-template-columns:1fr}}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
523
+
524
+ <ion-modal
525
+ [isOpen]="!!confirmAction()"
526
+ cssClass="val-modal-adaptive"
527
+ (didDismiss)="closeConfirmModal()"
528
+ >
529
+ <ng-template>
530
+ <val-modal-layout
531
+ [title]="confirmTitle()"
532
+ [subtitle]="confirmBody()"
533
+ [closeLabel]="t('close')"
534
+ [actions]="confirmActions()"
535
+ actionsAlign="end"
536
+ (close)="closeConfirmModal()"
537
+ (actionClick)="confirmPendingAction($event.action?.token)"
538
+ />
539
+ </ng-template>
540
+ </ion-modal>
541
+ `, isInline: true, styles: [":host{display:block;min-height:100%;--memory-panel: var(--ion-card-background, #ffffff);--memory-panel-strong: #f8f6fb;--memory-border: var(--ion-border-color, #e7e4ea);--memory-text: var(--ion-color-dark, #2f2a3a);--memory-muted: var(--ion-color-medium, #6f6a7a);--memory-soft: rgba(var(--ion-color-primary-rgb, 255, 0, 178), .08);--memory-row: rgba(var(--ion-color-dark-rgb, 47, 42, 58), .04);--memory-primary: var(--ion-color-primary, #ff00b2);--memory-secondary: var(--ion-color-tertiary, #6a2de2)}:host-context(html.ion-palette-dark),:host-context([data-theme=\"dark\"]){--memory-panel: #231f2d;--memory-panel-strong: #2f2939;--memory-border: rgba(255, 255, 255, .13);--memory-text: #fff8ff;--memory-muted: rgba(255, 248, 255, .68);--memory-soft: rgba(255, 255, 255, .045);--memory-row: rgba(255, 255, 255, .055)}.memory-shell{min-height:calc(100vh - 120px);display:flex;flex-direction:column;gap:20px;padding:18px 0 32px;color:var(--memory-text)}.memory-hero{position:relative;overflow:hidden;border-radius:28px;padding:clamp(28px,8vw,52px) 20px;text-align:center;color:#fff;background:radial-gradient(circle at 18% 20%,rgba(255,255,255,.32),transparent 24%),linear-gradient(135deg,var(--memory-primary),var(--memory-secondary));box-shadow:0 24px 70px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.25)}.memory-hero:after{content:\"\";position:absolute;inset:auto -20% -42%;height:55%;background:repeating-linear-gradient(90deg,rgba(255,255,255,.18) 0 10px,transparent 10px 20px);opacity:.18;transform:rotate(-4deg)}.memory-hero__badge{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:#ffffff29;font-size:.78rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.memory-hero h1{margin:14px 0 6px;font-size:clamp(2.25rem,9vw,3.625rem);line-height:.95;font-weight:900}.memory-hero p{max-width:520px;margin:0 auto;font-size:clamp(1rem,3vw,1.25rem);line-height:1.35;opacity:.88}.memory-panel,.memory-game{border:1px solid var(--memory-border);border-radius:24px;padding:clamp(16px,4vw,28px);background:var(--memory-panel);box-shadow:inset 0 1px #ffffff08}.memory-options{display:grid;gap:14px}.memory-howto{display:grid;gap:6px;padding:16px;border:1px solid var(--memory-border);border-radius:20px;background:var(--memory-soft)}.memory-options h2,.memory-howto h2,.memory-leaderboard h2{margin:8px 0 0;color:var(--memory-text);font-size:1.25rem;font-weight:900}.memory-howto h2,.memory-leaderboard h2{margin:0}.memory-howto p,.memory-leaderboard p{margin:0;color:var(--memory-muted);font-size:1rem;line-height:1.45}.memory-profiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.memory-profiles button,.memory-secondary{border:1px solid var(--memory-border);border-radius:999px;background:transparent;color:var(--memory-text);font:inherit;font-weight:850}.memory-profiles button{min-height:92px;display:grid;align-content:center;gap:5px;padding:12px 18px;text-align:center}.memory-profiles button.is-selected{border-color:var(--memory-primary);background:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.12);color:var(--memory-primary)}.memory-profiles strong{font-size:1.02rem}.memory-profiles small{color:var(--memory-muted);font-size:.88rem;line-height:1.25}.memory-profiles button.is-selected small{color:inherit}.memory-primary{min-height:58px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:999px;background:var(--memory-primary);color:var(--ion-color-primary-contrast, #fff);font:inherit;font-weight:900;box-shadow:0 18px 45px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.28)}.memory-primary ion-icon{flex:0 0 auto;width:1.25em;height:1.25em;font-size:1.25em;line-height:1}.memory-score{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:16px}.memory-score span{border-radius:18px;padding:12px;background:var(--memory-row);text-align:center}.memory-score small,.memory-win p{color:var(--memory-muted)}.memory-score small{display:block;font-size:.72rem;font-weight:850;text-transform:uppercase;letter-spacing:.08em}.memory-score strong{display:block;color:var(--memory-text);font-size:1.35rem;font-weight:950}.memory-board{display:grid;grid-template-columns:repeat(4,minmax(58px,1fr));gap:clamp(8px,2vw,12px)}.memory-board--kid,.memory-board--classic{grid-template-columns:repeat(4,minmax(58px,1fr))}.memory-board--ninja{grid-template-columns:repeat(8,minmax(40px,1fr))}.memory-card{position:relative;aspect-ratio:1;border:0;border-radius:clamp(14px,4vw,22px);background:transparent;perspective:800px;font-size:clamp(24px,7vw,42px)}.memory-card__back,.memory-card__front{position:absolute;inset:0;display:grid;place-items:center;border-radius:inherit;backface-visibility:hidden;transition:transform .28s ease,box-shadow .2s ease,opacity .2s ease}.memory-card__back{background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.3),transparent 24%),linear-gradient(135deg,var(--memory-secondary),var(--memory-primary));color:#fff;font-weight:950;box-shadow:0 10px 24px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.2)}.memory-card__front{transform:rotateY(180deg);border:1px solid var(--memory-border);background:var(--memory-panel-strong)}.memory-card.is-flipped .memory-card__back{transform:rotateY(180deg)}.memory-card.is-flipped .memory-card__front{transform:rotateY(360deg)}.memory-card.is-matched .memory-card__front{box-shadow:inset 0 0 0 3px var(--memory-primary)}.memory-win{position:relative;overflow:hidden;margin-top:16px;padding:16px;border-radius:20px;background:rgba(var(--ion-color-success-rgb, 45, 211, 111),.12);text-align:center}.memory-win ion-icon{display:block;margin:0 auto 8px;color:var(--ion-color-success, #2dd36f);font-size:2rem}.memory-win strong{color:var(--memory-text);font-size:1.35rem;font-weight:950}.memory-win p{margin:4px 0 0}.memory-result{position:relative;z-index:1;display:inline-flex;align-items:center;gap:10px;margin-top:12px;padding:10px 14px;border-radius:999px;background:#ffffffb8;color:#2f2a3a}:host-context(html.ion-palette-dark) .memory-result,:host-context([data-theme=\"dark\"]) .memory-result{background:#ffffff1a;color:var(--memory-text)}.memory-result>span{display:grid;place-items:center;width:38px;height:38px;border-radius:999px;background:var(--player-color, var(--memory-primary));font-size:1.3rem}.memory-result div{display:grid;text-align:left}.memory-result small{color:var(--memory-muted);font-weight:800}.memory-confetti span{position:absolute;top:-16px;left:8%;width:9px;height:16px;border-radius:4px;background:var(--memory-primary);opacity:0;animation:memory-confetti-fall 1.5s ease-out forwards;transform:rotate(20deg)}.memory-confetti span:nth-child(2n){background:var(--memory-secondary);animation-delay:.08s;left:20%}.memory-confetti span:nth-child(3n){background:#ffcf3f;animation-delay:.16s;left:38%}.memory-confetti span:nth-child(4n){background:#2dd36f;animation-delay:.24s;left:55%}.memory-confetti span:nth-child(5n){left:72%}.memory-confetti span:nth-child(6n){left:86%}.memory-win--failed{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.memory-actions{position:sticky;bottom:10px;z-index:2;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px;padding-top:10px;background:linear-gradient(to bottom,transparent,var(--memory-panel) 28%)}.memory-menu-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:10px}.memory-secondary{min-height:58px}.memory-leaderboard{display:grid;gap:12px;border:1px solid var(--memory-border);border-radius:24px;padding:clamp(16px,4vw,22px);background:var(--memory-panel)}.memory-leaderboard__title{display:flex;align-items:center;gap:10px}.memory-leaderboard__title ion-icon{color:var(--memory-primary);font-size:1.4rem}.memory-leaderboard ol{display:grid;gap:8px;margin:0;padding:0;list-style:none}.memory-leaderboard li{display:grid;grid-template-columns:38px 1fr;gap:2px 10px;align-items:center;padding:12px;border-radius:16px;background:var(--memory-row)}.memory-leaderboard li>span{grid-row:span 2;display:grid;place-items:center;width:34px;height:34px;border-radius:999px;background:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.18);color:var(--memory-primary);font-weight:950}.memory-leaderboard strong{color:var(--memory-text);font-size:.98rem}.memory-leaderboard small{color:var(--memory-muted);font-size:.88rem}.memory-player{display:grid;gap:12px;padding:14px;border:1px solid var(--memory-border);border-radius:22px;background:var(--memory-soft)}.memory-player h2,.memory-player p{margin:0}.memory-player p{color:var(--memory-muted)}.memory-player label{display:grid;gap:6px;font-weight:850}.memory-player input{width:100%;min-height:52px;border:1px solid var(--memory-border);border-radius:999px;padding:0 18px;background:var(--memory-panel);color:var(--memory-text);font:inherit;font-weight:850}.memory-avatar-list,.memory-color-list{display:flex;flex-wrap:wrap;gap:8px}.memory-avatar-list button,.memory-color-list button{display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--memory-border);border-radius:999px;background:var(--memory-panel);color:var(--memory-text);font-size:1.15rem}.memory-avatar-list button.is-selected,.memory-color-list button.is-selected{border-color:var(--memory-primary);box-shadow:0 0 0 3px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.14)}.memory-color-list button{background:var(--player-color)}@keyframes memory-confetti-fall{0%{opacity:0;transform:translateY(0) rotate(0)}18%{opacity:1}to{opacity:0;transform:translateY(170px) rotate(300deg)}}@media (max-width: 520px){.memory-score{grid-template-columns:repeat(2,1fr)}.memory-board--ninja{grid-template-columns:repeat(4,minmax(54px,1fr))}.memory-actions,.memory-menu-actions,.memory-profiles{grid-template-columns:1fr}}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: ModalLayoutComponent, selector: "val-modal-layout", inputs: ["title", "subtitle", "closeLabel", "showClose", "actions", "actionsAlign", "footer", "footerClass"], outputs: ["close", "actionClick"] }] }); }
431
542
  }
432
543
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MemoryGameComponent, decorators: [{
433
544
  type: Component,
434
- args: [{ selector: 'val-memory-game', standalone: true, imports: [IonIcon], template: `
545
+ args: [{ selector: 'val-memory-game', standalone: true, imports: [IonIcon, IonModal, ModalLayoutComponent], template: `
435
546
  <main class="memory-shell">
436
547
  @if (phase() === 'home') {
437
548
  <section class="memory-hero">
@@ -465,6 +576,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
465
576
  </div>
466
577
 
467
578
  <button class="memory-primary" type="button" (click)="start()">{{ t('startGame') }}</button>
579
+ <div class="memory-menu-actions">
580
+ <button class="memory-secondary" type="button" (click)="requestChangeGame()">
581
+ {{ t('changeGame') }}
582
+ </button>
583
+ </div>
468
584
  </div>
469
585
  </section>
470
586
  } @else {
@@ -532,10 +648,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
532
648
  }
533
649
 
534
650
  <div class="memory-actions">
535
- <button class="memory-secondary" type="button" (click)="resetToSetup()">{{ t('backToSetup') }}</button>
536
- <button class="memory-primary" type="button" (click)="start()">
651
+ <button class="memory-secondary" type="button" (click)="requestChangeMode()">{{ t('backToSetup') }}</button>
652
+ <button class="memory-secondary" type="button" (click)="requestChangeGame()">{{ t('changeGame') }}</button>
653
+ <button class="memory-primary" type="button" (click)="requestRestartGame()">
537
654
  <ion-icon name="refresh-outline" aria-hidden="true"></ion-icon>
538
- {{ t(phase() === 'playing' ? 'restart' : 'playAgain') }}
655
+ {{ t('restart') }}
539
656
  </button>
540
657
  </div>
541
658
  </section>
@@ -561,6 +678,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
561
678
  }
562
679
  </section>
563
680
  </main>
564
- `, styles: [":host{display:block;min-height:100%;--memory-panel: var(--ion-card-background, #ffffff);--memory-panel-strong: #f8f6fb;--memory-border: var(--ion-border-color, #e7e4ea);--memory-text: var(--ion-color-dark, #2f2a3a);--memory-muted: var(--ion-color-medium, #6f6a7a);--memory-soft: rgba(var(--ion-color-primary-rgb, 255, 0, 178), .08);--memory-row: rgba(var(--ion-color-dark-rgb, 47, 42, 58), .04);--memory-primary: var(--ion-color-primary, #ff00b2);--memory-secondary: var(--ion-color-tertiary, #6a2de2)}:host-context(html.ion-palette-dark),:host-context([data-theme=\"dark\"]){--memory-panel: #231f2d;--memory-panel-strong: #2f2939;--memory-border: rgba(255, 255, 255, .13);--memory-text: #fff8ff;--memory-muted: rgba(255, 248, 255, .68);--memory-soft: rgba(255, 255, 255, .045);--memory-row: rgba(255, 255, 255, .055)}.memory-shell{min-height:calc(100vh - 120px);display:flex;flex-direction:column;gap:20px;padding:18px 0 32px;color:var(--memory-text)}.memory-hero{position:relative;overflow:hidden;border-radius:28px;padding:clamp(28px,8vw,52px) 20px;text-align:center;color:#fff;background:radial-gradient(circle at 18% 20%,rgba(255,255,255,.32),transparent 24%),linear-gradient(135deg,var(--memory-primary),var(--memory-secondary));box-shadow:0 24px 70px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.25)}.memory-hero:after{content:\"\";position:absolute;inset:auto -20% -42%;height:55%;background:repeating-linear-gradient(90deg,rgba(255,255,255,.18) 0 10px,transparent 10px 20px);opacity:.18;transform:rotate(-4deg)}.memory-hero__badge{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:#ffffff29;font-size:.78rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.memory-hero h1{margin:14px 0 6px;font-size:clamp(2.25rem,9vw,3.625rem);line-height:.95;font-weight:900}.memory-hero p{max-width:520px;margin:0 auto;font-size:clamp(1rem,3vw,1.25rem);line-height:1.35;opacity:.88}.memory-panel,.memory-game{border:1px solid var(--memory-border);border-radius:24px;padding:clamp(16px,4vw,28px);background:var(--memory-panel);box-shadow:inset 0 1px #ffffff08}.memory-options{display:grid;gap:14px}.memory-howto{display:grid;gap:6px;padding:16px;border:1px solid var(--memory-border);border-radius:20px;background:var(--memory-soft)}.memory-options h2,.memory-howto h2,.memory-leaderboard h2{margin:8px 0 0;color:var(--memory-text);font-size:1.25rem;font-weight:900}.memory-howto h2,.memory-leaderboard h2{margin:0}.memory-howto p,.memory-leaderboard p{margin:0;color:var(--memory-muted);font-size:1rem;line-height:1.45}.memory-profiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.memory-profiles button,.memory-secondary{border:1px solid var(--memory-border);border-radius:999px;background:transparent;color:var(--memory-text);font:inherit;font-weight:850}.memory-profiles button{min-height:92px;display:grid;align-content:center;gap:5px;padding:12px 18px;text-align:center}.memory-profiles button.is-selected{border-color:var(--memory-primary);background:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.12);color:var(--memory-primary)}.memory-profiles strong{font-size:1.02rem}.memory-profiles small{color:var(--memory-muted);font-size:.88rem;line-height:1.25}.memory-profiles button.is-selected small{color:inherit}.memory-primary{min-height:58px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:999px;background:var(--memory-primary);color:var(--ion-color-primary-contrast, #fff);font:inherit;font-weight:900;box-shadow:0 18px 45px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.28)}.memory-primary ion-icon{flex:0 0 auto;width:1.25em;height:1.25em;font-size:1.25em;line-height:1}.memory-score{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:16px}.memory-score span{border-radius:18px;padding:12px;background:var(--memory-row);text-align:center}.memory-score small,.memory-win p{color:var(--memory-muted)}.memory-score small{display:block;font-size:.72rem;font-weight:850;text-transform:uppercase;letter-spacing:.08em}.memory-score strong{display:block;color:var(--memory-text);font-size:1.35rem;font-weight:950}.memory-board{display:grid;grid-template-columns:repeat(4,minmax(58px,1fr));gap:clamp(8px,2vw,12px)}.memory-board--kid,.memory-board--classic{grid-template-columns:repeat(4,minmax(58px,1fr))}.memory-board--ninja{grid-template-columns:repeat(8,minmax(40px,1fr))}.memory-card{position:relative;aspect-ratio:1;border:0;border-radius:clamp(14px,4vw,22px);background:transparent;perspective:800px;font-size:clamp(24px,7vw,42px)}.memory-card__back,.memory-card__front{position:absolute;inset:0;display:grid;place-items:center;border-radius:inherit;backface-visibility:hidden;transition:transform .28s ease,box-shadow .2s ease,opacity .2s ease}.memory-card__back{background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.3),transparent 24%),linear-gradient(135deg,var(--memory-secondary),var(--memory-primary));color:#fff;font-weight:950;box-shadow:0 10px 24px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.2)}.memory-card__front{transform:rotateY(180deg);border:1px solid var(--memory-border);background:var(--memory-panel-strong)}.memory-card.is-flipped .memory-card__back{transform:rotateY(180deg)}.memory-card.is-flipped .memory-card__front{transform:rotateY(360deg)}.memory-card.is-matched .memory-card__front{box-shadow:inset 0 0 0 3px var(--memory-primary)}.memory-win{position:relative;overflow:hidden;margin-top:16px;padding:16px;border-radius:20px;background:rgba(var(--ion-color-success-rgb, 45, 211, 111),.12);text-align:center}.memory-win ion-icon{display:block;margin:0 auto 8px;color:var(--ion-color-success, #2dd36f);font-size:2rem}.memory-win strong{color:var(--memory-text);font-size:1.35rem;font-weight:950}.memory-win p{margin:4px 0 0}.memory-result{position:relative;z-index:1;display:inline-flex;align-items:center;gap:10px;margin-top:12px;padding:10px 14px;border-radius:999px;background:#ffffffb8;color:#2f2a3a}:host-context(html.ion-palette-dark) .memory-result,:host-context([data-theme=\"dark\"]) .memory-result{background:#ffffff1a;color:var(--memory-text)}.memory-result>span{display:grid;place-items:center;width:38px;height:38px;border-radius:999px;background:var(--player-color, var(--memory-primary));font-size:1.3rem}.memory-result div{display:grid;text-align:left}.memory-result small{color:var(--memory-muted);font-weight:800}.memory-confetti span{position:absolute;top:-16px;left:8%;width:9px;height:16px;border-radius:4px;background:var(--memory-primary);opacity:0;animation:memory-confetti-fall 1.5s ease-out forwards;transform:rotate(20deg)}.memory-confetti span:nth-child(2n){background:var(--memory-secondary);animation-delay:.08s;left:20%}.memory-confetti span:nth-child(3n){background:#ffcf3f;animation-delay:.16s;left:38%}.memory-confetti span:nth-child(4n){background:#2dd36f;animation-delay:.24s;left:55%}.memory-confetti span:nth-child(5n){left:72%}.memory-confetti span:nth-child(6n){left:86%}.memory-win--failed{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.memory-actions{position:sticky;bottom:10px;z-index:2;display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px;padding-top:10px;background:linear-gradient(to bottom,transparent,var(--memory-panel) 28%)}.memory-secondary{min-height:58px}.memory-leaderboard{display:grid;gap:12px;border:1px solid var(--memory-border);border-radius:24px;padding:clamp(16px,4vw,22px);background:var(--memory-panel)}.memory-leaderboard__title{display:flex;align-items:center;gap:10px}.memory-leaderboard__title ion-icon{color:var(--memory-primary);font-size:1.4rem}.memory-leaderboard ol{display:grid;gap:8px;margin:0;padding:0;list-style:none}.memory-leaderboard li{display:grid;grid-template-columns:38px 1fr;gap:2px 10px;align-items:center;padding:12px;border-radius:16px;background:var(--memory-row)}.memory-leaderboard li>span{grid-row:span 2;display:grid;place-items:center;width:34px;height:34px;border-radius:999px;background:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.18);color:var(--memory-primary);font-weight:950}.memory-leaderboard strong{color:var(--memory-text);font-size:.98rem}.memory-leaderboard small{color:var(--memory-muted);font-size:.88rem}.memory-player{display:grid;gap:12px;padding:14px;border:1px solid var(--memory-border);border-radius:22px;background:var(--memory-soft)}.memory-player h2,.memory-player p{margin:0}.memory-player p{color:var(--memory-muted)}.memory-player label{display:grid;gap:6px;font-weight:850}.memory-player input{width:100%;min-height:52px;border:1px solid var(--memory-border);border-radius:999px;padding:0 18px;background:var(--memory-panel);color:var(--memory-text);font:inherit;font-weight:850}.memory-avatar-list,.memory-color-list{display:flex;flex-wrap:wrap;gap:8px}.memory-avatar-list button,.memory-color-list button{display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--memory-border);border-radius:999px;background:var(--memory-panel);color:var(--memory-text);font-size:1.15rem}.memory-avatar-list button.is-selected,.memory-color-list button.is-selected{border-color:var(--memory-primary);box-shadow:0 0 0 3px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.14)}.memory-color-list button{background:var(--player-color)}@keyframes memory-confetti-fall{0%{opacity:0;transform:translateY(0) rotate(0)}18%{opacity:1}to{opacity:0;transform:translateY(170px) rotate(300deg)}}@media (max-width: 520px){.memory-score{grid-template-columns:repeat(2,1fr)}.memory-board--ninja{grid-template-columns:repeat(4,minmax(54px,1fr))}.memory-actions,.memory-profiles{grid-template-columns:1fr}}\n"] }]
565
- }], ctorParameters: () => [] });
566
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LWdhbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9taW5pLWdhbWVzL21lbW9yeS1nYW1lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFhLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsY0FBYyxFQUNkLGFBQWEsR0FDZCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBRzFELFFBQVEsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0FBRWpFLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFL0csTUFBTSxjQUFjLEdBUWhCO0lBQ0YsR0FBRyxFQUFFO1FBQ0gsS0FBSyxFQUFFLENBQUM7UUFDUixh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LENBQUM7UUFDckMsTUFBTSxHQUFHLEdBQUcsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUN6QixPQUFPLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDbEQsQ0FBQzsrR0F6U1UsbUJBQW1CO21HQUFuQixtQkFBbUIsMkVBN3NCcEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrSVQsMi9TQW5JUyxPQUFPOzs0RkE4c0JOLG1CQUFtQjtrQkFqdEIvQixTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUCxDQUFDLE9BQU8sQ0FBQyxZQUNSOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0lUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uSWNvbiB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQge1xuICBtdXNpY2FsTm90ZXNPdXRsaW5lLFxuICByZWZyZXNoT3V0bGluZSxcbiAgdHJvcGh5T3V0bGluZSxcbn0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgTUlOSV9HQU1FU19JMThOIH0gZnJvbSAnLi9taW5pLWdhbWVzLmkxOG4nO1xuaW1wb3J0IHsgTWluaUdhbWVQbGF5ZXJQcm9maWxlU2VydmljZSB9IGZyb20gJy4vbWluaS1nYW1lLXBsYXllci1wcm9maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmV0cm9BdWRpb1NlcnZpY2UgfSBmcm9tICcuL3JldHJvLWF1ZGlvLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWVtb3J5R2FtZUNhcmQsIE1lbW9yeUdhbWVEaWZmaWN1bHR5LCBNZW1vcnlHYW1lTW9kZSwgTWVtb3J5R2FtZVByb2ZpbGUgfSBmcm9tICcuL3R5cGVzJztcblxuYWRkSWNvbnMoeyBtdXNpY2FsTm90ZXNPdXRsaW5lLCByZWZyZXNoT3V0bGluZSwgdHJvcGh5T3V0bGluZSB9KTtcblxuY29uc3QgU1lNQk9MUyA9IFsn4q2QJywgJ/CfmoAnLCAn8J+OtScsICfimqEnLCAn8J+MmScsICfwn5KOJywgJ/CfjognLCAn8J+NgCcsICfwn6epJywgJ/CfjrInLCAn8J+MiCcsICfwn5SlJywgJ/CfjZMnLCAn8J+mhCcsICfwn46BJywgJ+KYgO+4jyddO1xuXG5jb25zdCBQUk9GSUxFX0NPTkZJRzogUmVjb3JkPFxuICBNZW1vcnlHYW1lUHJvZmlsZSxcbiAge1xuICAgIHBhaXJzOiBudW1iZXI7XG4gICAgdGltZWRTZWNvbmRzPzogbnVtYmVyO1xuICAgIG1pc21hdGNoRGVsYXk6IG51bWJlcjtcbiAgICBib2FyZENsYXNzOiBzdHJpbmc7XG4gIH1cbj4gPSB7XG4gIGtpZDoge1xuICAgIHBhaXJzOiA0LFxuICAgIG1pc21hdGNoRGVsYXk6IDE0MDAsXG4gICAgYm9hcmRDbGFzczogJ21lbW9yeS1ib2FyZC0ta2lkJyxcbiAgfSxcbiAgY2xhc3NpYzoge1xuICAgIHBhaXJzOiA4LFxuICAgIG1pc21hdGNoRGVsYXk6IDkwMCxcbiAgICBib2FyZENsYXNzOiAnbWVtb3J5LWJvYXJkLS1jbGFzc2ljJyxcbiAgfSxcbiAgbmluamE6IHtcbiAgICBwYWlyczogMTYsXG4gICAgdGltZWRTZWNvbmRzOiAxNTAsXG4gICAgbWlzbWF0Y2hEZWxheTogNTYwLFxuICAgIGJvYXJkQ2xhc3M6ICdtZW1vcnktYm9hcmQtLW5pbmphJyxcbiAgfSxcbn07XG5cbnR5cGUgTWVtb3J5R2FtZVBoYXNlID0gJ2hvbWUnIHwgJ3BsYXlpbmcnIHwgJ3dvbicgfCAnbG9zdCc7XG5cbmludGVyZmFjZSBNZW1vcnlMZWFkZXJib2FyZEVudHJ5IHtcbiAgaWQ6IHN0cmluZztcbiAgcHJvZmlsZT86IE1lbW9yeUdhbWVQcm9maWxlO1xuICBwbGF5ZXJOYW1lPzogc3RyaW5nO1xuICBwbGF5ZXJBdmF0YXI/OiBzdHJpbmc7XG4gIG1lZGFsPzogTWVtb3J5TWVkYWw7XG4gIGRpZmZpY3VsdHk6IE1lbW9yeUdhbWVEaWZmaWN1bHR5O1xuICBtb2RlOiBNZW1vcnlHYW1lTW9kZTtcbiAgYXR0ZW1wdHM6IG51bWJlcjtcbiAgc2Vjb25kczogbnVtYmVyO1xuICBjb21wbGV0ZWRBdDogc3RyaW5nO1xufVxuXG5jb25zdCBMRUFERVJCT0FSRF9LRVkgPSAndmFsLW1pbmktZ2FtZXMtbWVtb3J5LWxlYWRlcmJvYXJkOnYxJztcblxudHlwZSBNZW1vcnlNZWRhbCA9ICdnb2xkJyB8ICdzaWx2ZXInIHwgJ2Jyb256ZScgfCAnc3BhcmsnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbWVtb3J5LWdhbWUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbSW9uSWNvbl0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPG1haW4gY2xhc3M9XCJtZW1vcnktc2hlbGxcIj5cbiAgICAgIEBpZiAocGhhc2UoKSA9PT0gJ2hvbWUnKSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwibWVtb3J5LWhlcm9cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LWhlcm9fX2JhZGdlXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cIm11c2ljYWwtbm90ZXMtb3V0bGluZVwiIC8+XG4gICAgICAgICAgICB7eyB0KCdtZW1vcnlUaXRsZScpIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGgxPnt7IHQoJ2hvbWVUaXRsZScpIH19PC9oMT5cbiAgICAgICAgICA8cD57eyB0KCdob21lU3VidGl0bGUnKSB9fTwvcD5cbiAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwibWVtb3J5LXBhbmVsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1vcHRpb25zXCI+XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cIm1lbW9yeS1ob3d0b1wiPlxuICAgICAgICAgICAgICA8aDI+e3sgdCgnaW5zdHJ1Y3Rpb25zVGl0bGUnKSB9fTwvaDI+XG4gICAgICAgICAgICAgIDxwPnt7IHQoJ2luc3RydWN0aW9uc0JvZHknKSB9fTwvcD5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgPGgyPnt7IHQoJ3Byb2ZpbGVUaXRsZScpIH19PC9oMj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW1vcnktcHJvZmlsZXNcIiByb2xlPVwicmFkaW9ncm91cFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgncHJvZmlsZVRpdGxlJylcIj5cbiAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBwcm9maWxlczsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cInByb2ZpbGUoKSA9PT0gaXRlbVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UHJvZmlsZShpdGVtKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KGl0ZW0pIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdChpdGVtICsgJ0Rlc2NyaXB0aW9uJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1lbW9yeS1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzdGFydCgpXCI+e3sgdCgnc3RhcnRHYW1lJykgfX08L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwibWVtb3J5LWdhbWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LXNjb3JlXCI+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2F0dGVtcHRzJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IGF0dGVtcHRzKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICA8c21hbGw+e3sgdCgncGFpcnMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgbWF0Y2hlZFBhaXJzKCkgfX0ve3sgcGFpckNvdW50KCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICA8c21hbGw+e3sgdCh0aW1lTGFiZWwoKSkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IGZvcm1hdHRlZFRpbWUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdzdHJlYWsnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgc3RyZWFrKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW1vcnktYm9hcmRcIiBbY2xhc3NdPVwiYm9hcmRDbGFzcygpXCI+XG4gICAgICAgICAgICBAZm9yIChjYXJkIG9mIGNhcmRzKCk7IHRyYWNrIGNhcmQuaWQpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWVtb3J5LWNhcmRcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1mbGlwcGVkXT1cImNhcmQuZmxpcHBlZCB8fCBjYXJkLm1hdGNoZWRcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1tYXRjaGVkXT1cImNhcmQubWF0Y2hlZFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNhcmQubWF0Y2hlZCB8fCBsb2NrQm9hcmQoKSB8fCBmYWlsZWQoKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImZsaXAoY2FyZClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW1vcnktY2FyZF9fYmFja1wiPj88L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW1vcnktY2FyZF9fZnJvbnRcIj57eyBjYXJkLnN5bWJvbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICBAaWYgKHBoYXNlKCkgPT09ICd3b24nKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LXdpblwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LWNvbmZldHRpXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgQGZvciAocGllY2Ugb2YgY29uZmV0dGlQaWVjZXM7IHRyYWNrIHBpZWNlKSB7XG4gICAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJ0cm9waHktb3V0bGluZVwiIC8+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnd2luVGl0bGUnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8cD57eyB3aW5Cb2R5KCkgfX08L3A+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW1vcnktcmVzdWx0XCIgW3N0eWxlLi0tcGxheWVyLWNvbG9yXT1cImFjdGl2ZVBsYXllckNvbG9yKClcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBhY3RpdmVQbGF5ZXJBdmF0YXIoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHBsYXllck5hbWUoKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IG1lZGFsSWNvbihyZXN1bHRNZWRhbCgpKSB9fSB7eyB0KHJlc3VsdE1lZGFsKCkpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChwaGFzZSgpID09PSAnbG9zdCcpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW1vcnktd2luIG1lbW9yeS13aW4tLWZhaWxlZFwiPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2xvc2VUaXRsZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxwPnt7IHQoJ2xvc2VCb2R5JykgfX08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LWFjdGlvbnNcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtZW1vcnktc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXNldFRvU2V0dXAoKVwiPnt7IHQoJ2JhY2tUb1NldHVwJykgfX08L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtZW1vcnktcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic3RhcnQoKVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInJlZnJlc2gtb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIHt7IHQocGhhc2UoKSA9PT0gJ3BsYXlpbmcnID8gJ3Jlc3RhcnQnIDogJ3BsYXlBZ2FpbicpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfVxuXG4gICAgICA8c2VjdGlvbiBjbGFzcz1cIm1lbW9yeS1sZWFkZXJib2FyZFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LWxlYWRlcmJvYXJkX190aXRsZVwiPlxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJvcGh5LW91dGxpbmVcIiAvPlxuICAgICAgICAgIDxoMj57eyBsZWFkZXJib2FyZEhlYWRpbmcoKSB9fTwvaDI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKHByb2ZpbGVMZWFkZXJib2FyZCgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIDxwPnt7IHQoJ2xlYWRlcmJvYXJkRW1wdHknKSB9fTwvcD5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPG9sPlxuICAgICAgICAgICAgQGZvciAoZW50cnkgb2YgcHJvZmlsZUxlYWRlcmJvYXJkKCk7IHRyYWNrIGVudHJ5LmlkOyBsZXQgaW5kZXggPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGluZGV4ICsgMSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGxlYWRlcmJvYXJkVGl0bGUoZW50cnkpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IGxlYWRlcmJvYXJkTGluZShlbnRyeSkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvb2w+XG4gICAgICAgIH1cbiAgICAgIDwvc2VjdGlvbj5cbiAgICA8L21haW4+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgICAgIC0tbWVtb3J5LXBhbmVsOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCAjZmZmZmZmKTtcbiAgICAgICAgLS1tZW1vcnktcGFuZWwtc3Ryb25nOiAjZjhmNmZiO1xuICAgICAgICAtLW1lbW9yeS1ib3JkZXI6IHZhcigtLWlvbi1ib3JkZXItY29sb3IsICNlN2U0ZWEpO1xuICAgICAgICAtLW1lbW9yeS10ZXh0OiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzJmMmEzYSk7XG4gICAgICAgIC0tbWVtb3J5LW11dGVkOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjNmY2YTdhKTtcbiAgICAgICAgLS1tZW1vcnktc29mdDogcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4wOCk7XG4gICAgICAgIC0tbWVtb3J5LXJvdzogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFyay1yZ2IsIDQ3LCA0MiwgNTgpLCAwLjA0KTtcbiAgICAgICAgLS1tZW1vcnktcHJpbWFyeTogdmFyKC0taW9uLWNvbG9yLXByaW1hcnksICNmZjAwYjIpO1xuICAgICAgICAtLW1lbW9yeS1zZWNvbmRhcnk6IHZhcigtLWlvbi1jb2xvci10ZXJ0aWFyeSwgIzZhMmRlMik7XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkge1xuICAgICAgICAtLW1lbW9yeS1wYW5lbDogIzIzMWYyZDtcbiAgICAgICAgLS1tZW1vcnktcGFuZWwtc3Ryb25nOiAjMmYyOTM5O1xuICAgICAgICAtLW1lbW9yeS1ib3JkZXI6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMyk7XG4gICAgICAgIC0tbWVtb3J5LXRleHQ6ICNmZmY4ZmY7XG4gICAgICAgIC0tbWVtb3J5LW11dGVkOiByZ2JhKDI1NSwgMjQ4LCAyNTUsIDAuNjgpO1xuICAgICAgICAtLW1lbW9yeS1zb2Z0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDQ1KTtcbiAgICAgICAgLS1tZW1vcnktcm93OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDU1KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1zaGVsbCB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggLSAxMjBweCk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMjBweDtcbiAgICAgICAgcGFkZGluZzogMThweCAwIDMycHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktaGVybyB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMjhweDtcbiAgICAgICAgcGFkZGluZzogY2xhbXAoMjhweCwgOHZ3LCA1MnB4KSAyMHB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTglIDIwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMyKSwgdHJhbnNwYXJlbnQgMjQlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1tZW1vcnktcHJpbWFyeSksIHZhcigtLW1lbW9yeS1zZWNvbmRhcnkpKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAyNHB4IDcwcHggcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4yNSk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktaGVybzo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiBhdXRvIC0yMCUgLTQyJSAtMjAlO1xuICAgICAgICBoZWlnaHQ6IDU1JTtcbiAgICAgICAgYmFja2dyb3VuZDogcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudChcbiAgICAgICAgICA5MGRlZyxcbiAgICAgICAgICByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTgpIDAgMTBweCxcbiAgICAgICAgICB0cmFuc3BhcmVudCAxMHB4IDIwcHhcbiAgICAgICAgKTtcbiAgICAgICAgb3BhY2l0eTogMC4xODtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTRkZWcpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWhlcm9fX2JhZGdlIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgICBwYWRkaW5nOiA2cHggMTJweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNik7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1oZXJvIGgxIHtcbiAgICAgICAgbWFyZ2luOiAxNHB4IDAgNnB4O1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDIuMjVyZW0sIDl2dywgMy42MjVyZW0pO1xuICAgICAgICBsaW5lLWhlaWdodDogMC45NTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1oZXJvIHAge1xuICAgICAgICBtYXgtd2lkdGg6IDUyMHB4O1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxcmVtLCAzdncsIDEuMjVyZW0pO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zNTtcbiAgICAgICAgb3BhY2l0eTogMC44ODtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wYW5lbCxcbiAgICAgIC5tZW1vcnktZ2FtZSB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW1lbW9yeS1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyNHB4O1xuICAgICAgICBwYWRkaW5nOiBjbGFtcCgxNnB4LCA0dncsIDI4cHgpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktcGFuZWwpO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMyk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktb3B0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMTRweDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1ob3d0byB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgICBwYWRkaW5nOiAxNnB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1tZW1vcnktYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWVtb3J5LXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LW9wdGlvbnMgaDIsXG4gICAgICAubWVtb3J5LWhvd3RvIGgyLFxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZCBoMiB7XG4gICAgICAgIG1hcmdpbjogOHB4IDAgMDtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWhvd3RvIGgyLFxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZCBoMiB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1ob3d0byBwLFxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZCBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS40NTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wcm9maWxlcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJvZmlsZXMgYnV0dG9uLFxuICAgICAgLm1lbW9yeS1zZWNvbmRhcnkge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1tZW1vcnktYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogODUwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXByb2ZpbGVzIGJ1dHRvbiB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDkycHg7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA1cHg7XG4gICAgICAgIHBhZGRpbmc6IDEycHggMThweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXByb2ZpbGVzIGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tbWVtb3J5LXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1wcmltYXJ5KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wcm9maWxlcyBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IDEuMDJyZW07XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJvZmlsZXMgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg4cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yNTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wcm9maWxlcyBidXR0b24uaXMtc2VsZWN0ZWQgc21hbGwge1xuICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wcmltYXJ5IHtcbiAgICAgICAgbWluLWhlaWdodDogNThweDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWVtb3J5LXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnktY29udHJhc3QsICNmZmYpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICBib3gtc2hhZG93OiAwIDE4cHggNDVweCByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjI4KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wcmltYXJ5IGlvbi1pY29uIHtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICAgIHdpZHRoOiAxLjI1ZW07XG4gICAgICAgIGhlaWdodDogMS4yNWVtO1xuICAgICAgICBmb250LXNpemU6IDEuMjVlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktc2NvcmUge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCAxZnIpO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1zY29yZSBzcGFuIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMThweDtcbiAgICAgICAgcGFkZGluZzogMTJweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWVtb3J5LXJvdyk7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1zY29yZSBzbWFsbCxcbiAgICAgIC5tZW1vcnktd2luIHAge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LW11dGVkKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1zY29yZSBzbWFsbCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4NTA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktc2NvcmUgc3Ryb25nIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4zNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1ib2FyZCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCg1OHB4LCAxZnIpKTtcbiAgICAgICAgZ2FwOiBjbGFtcCg4cHgsIDJ2dywgMTJweCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktYm9hcmQtLWtpZCB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCg1OHB4LCAxZnIpKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1ib2FyZC0tY2xhc3NpYyB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCg1OHB4LCAxZnIpKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1ib2FyZC0tbmluamEge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg4LCBtaW5tYXgoNDBweCwgMWZyKSk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY2FyZCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgYXNwZWN0LXJhdGlvOiAxO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IGNsYW1wKDE0cHgsIDR2dywgMjJweCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBwZXJzcGVjdGl2ZTogODAwcHg7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMjRweCwgN3Z3LCA0MnB4KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jYXJkX19iYWNrLFxuICAgICAgLm1lbW9yeS1jYXJkX19mcm9udCB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDA7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG4gICAgICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMjhzIGVhc2UsIGJveC1zaGFkb3cgMC4ycyBlYXNlLCBvcGFjaXR5IDAuMnMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jYXJkX19iYWNrIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDMyJSAyOCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKSwgdHJhbnNwYXJlbnQgMjQlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1tZW1vcnktc2Vjb25kYXJ5KSwgdmFyKC0tbWVtb3J5LXByaW1hcnkpKTtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMTBweCAyNHB4IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMik7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY2FyZF9fZnJvbnQge1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbWVtb3J5LWJvcmRlcik7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1wYW5lbC1zdHJvbmcpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNhcmQuaXMtZmxpcHBlZCAubWVtb3J5LWNhcmRfX2JhY2sge1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jYXJkLmlzLWZsaXBwZWQgLm1lbW9yeS1jYXJkX19mcm9udCB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlWSgzNjBkZWcpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNhcmQuaXMtbWF0Y2hlZCAubWVtb3J5LWNhcmRfX2Zyb250IHtcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgM3B4IHZhcigtLW1lbW9yeS1wcmltYXJ5KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS13aW4ge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgICAgIHBhZGRpbmc6IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjEyKTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXdpbiBpb24taWNvbiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW46IDAgYXV0byA4cHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3Itc3VjY2VzcywgIzJkZDM2Zik7XG4gICAgICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS13aW4gc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxLjM1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXdpbiBwIHtcbiAgICAgICAgbWFyZ2luOiA0cHggMCAwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXJlc3VsdCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgbWFyZ2luLXRvcDogMTJweDtcbiAgICAgICAgcGFkZGluZzogMTBweCAxNHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcyKTtcbiAgICAgICAgY29sb3I6ICMyZjJhM2E7XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAubWVtb3J5LXJlc3VsdCxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLm1lbW9yeS1yZXN1bHQge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcmVzdWx0ID4gc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAzOHB4O1xuICAgICAgICBoZWlnaHQ6IDM4cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wbGF5ZXItY29sb3IsIHZhcigtLW1lbW9yeS1wcmltYXJ5KSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXJlc3VsdCBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXJlc3VsdCBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktbXV0ZWQpO1xuICAgICAgICBmb250LXdlaWdodDogODAwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNvbmZldHRpIHNwYW4ge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLTE2cHg7XG4gICAgICAgIGxlZnQ6IDglO1xuICAgICAgICB3aWR0aDogOXB4O1xuICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWVtb3J5LXByaW1hcnkpO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICBhbmltYXRpb246IG1lbW9yeS1jb25mZXR0aS1mYWxsIDEuNXMgZWFzZS1vdXQgZm9yd2FyZHM7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDIwZGVnKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jb25mZXR0aSBzcGFuOm50aC1jaGlsZCgybikge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktc2Vjb25kYXJ5KTtcbiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwLjA4cztcbiAgICAgICAgbGVmdDogMjAlO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNvbmZldHRpIHNwYW46bnRoLWNoaWxkKDNuKSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmNmM2Y7XG4gICAgICAgIGFuaW1hdGlvbi1kZWxheTogMC4xNnM7XG4gICAgICAgIGxlZnQ6IDM4JTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jb25mZXR0aSBzcGFuOm50aC1jaGlsZCg0bikge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjMmRkMzZmO1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuMjRzO1xuICAgICAgICBsZWZ0OiA1NSU7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY29uZmV0dGkgc3BhbjpudGgtY2hpbGQoNW4pIHtcbiAgICAgICAgbGVmdDogNzIlO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNvbmZldHRpIHNwYW46bnRoLWNoaWxkKDZuKSB7XG4gICAgICAgIGxlZnQ6IDg2JTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS13aW4tLWZhaWxlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4xMik7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktYWN0aW9ucyB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgICAgIGJvdHRvbTogMTBweDtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgICAgIHBhZGRpbmctdG9wOiAxMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCB0cmFuc3BhcmVudCwgdmFyKC0tbWVtb3J5LXBhbmVsKSAyOCUpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXNlY29uZGFyeSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDU4cHg7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDEycHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW1lbW9yeS1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyNHB4O1xuICAgICAgICBwYWRkaW5nOiBjbGFtcCgxNnB4LCA0dncsIDIycHgpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWxlYWRlcmJvYXJkX190aXRsZSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZF9fdGl0bGUgaW9uLWljb24ge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZCBvbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmQgbGkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDM4cHggMWZyO1xuICAgICAgICBnYXA6IDJweCAxMHB4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAxMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktcm93KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZCBsaSA+IHNwYW4ge1xuICAgICAgICBncmlkLXJvdzogc3BhbiAyO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMzRweDtcbiAgICAgICAgaGVpZ2h0OiAzNHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4xOCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmQgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjk4cmVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWxlYWRlcmJvYXJkIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44OHJlbTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wbGF5ZXIge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDEycHg7XG4gICAgICAgIHBhZGRpbmc6IDE0cHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW1lbW9yeS1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcGxheWVyIGgyLFxuICAgICAgLm1lbW9yeS1wbGF5ZXIgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wbGF5ZXIgcCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktbXV0ZWQpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXBsYXllciBsYWJlbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgICBmb250LXdlaWdodDogODUwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXBsYXllciBpbnB1dCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtaW4taGVpZ2h0OiA1MnB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1tZW1vcnktYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAgMThweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWVtb3J5LXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDg1MDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1hdmF0YXItbGlzdCxcbiAgICAgIC5tZW1vcnktY29sb3ItbGlzdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktYXZhdGFyLWxpc3QgYnV0dG9uLFxuICAgICAgLm1lbW9yeS1jb2xvci1saXN0IGJ1dHRvbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiA0NHB4O1xuICAgICAgICBoZWlnaHQ6IDQ0cHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW1lbW9yeS1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWVtb3J5LXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxLjE1cmVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWF2YXRhci1saXN0IGJ1dHRvbi5pcy1zZWxlY3RlZCxcbiAgICAgIC5tZW1vcnktY29sb3ItbGlzdCBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLW1lbW9yeS1wcmltYXJ5KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMTQpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNvbG9yLWxpc3QgYnV0dG9uIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcGxheWVyLWNvbG9yKTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBtZW1vcnktY29uZmV0dGktZmFsbCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSByb3RhdGUoMGRlZyk7XG4gICAgICAgIH1cbiAgICAgICAgMTglIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDE3MHB4KSByb3RhdGUoMzAwZGVnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogNTIwcHgpIHtcbiAgICAgICAgLm1lbW9yeS1zY29yZSB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5tZW1vcnktYm9hcmQtLW5pbmphIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoNTRweCwgMWZyKSk7XG4gICAgICAgIH1cblxuICAgICAgICAubWVtb3J5LWFjdGlvbnMsXG4gICAgICAgIC5tZW1vcnktcHJvZmlsZXMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVtb3J5R2FtZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGxheWVyUHJvZmlsZXMgPSBpbmplY3QoTWluaUdhbWVQbGF5ZXJQcm9maWxlU2VydmljZSk7XG4gIHJlYWRvbmx5IGF1ZGlvID0gaW5qZWN0KFJldHJvQXVkaW9TZXJ2aWNlKTtcblxuICByZWFkb25seSBwcm9maWxlczogTWVtb3J5R2FtZVByb2ZpbGVbXSA9IFsna2lkJywgJ2NsYXNzaWMnLCAnbmluamEnXTtcbiAgcmVhZG9ubHkgY29uZmV0dGlQaWVjZXMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiAxNCB9LCAoXywgaW5kZXgpID0+IGluZGV4KTtcblxuICByZWFkb25seSBwaGFzZSA9IHNpZ25hbDxNZW1vcnlHYW1lUGhhc2U+KCdob21lJyk7XG4gIHJlYWRvbmx5IHByb2ZpbGUgPSBzaWduYWw8TWVtb3J5R2FtZVByb2ZpbGU+KCdraWQnKTtcbiAgcmVhZG9ubHkgZGlmZmljdWx0eSA9IHNpZ25hbDxNZW1vcnlHYW1lRGlmZmljdWx0eT4oJ2Vhc3knKTtcbiAgcmVhZG9ubHkgbW9kZSA9IHNpZ25hbDxNZW1vcnlHYW1lTW9kZT4oJ2NsYXNzaWMnKTtcbiAgcmVhZG9ubHkgcGxheWluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGNhcmRzID0gc2lnbmFsPE1lbW9yeUdhbWVDYXJkW10+KFtdKTtcbiAgcmVhZG9ubHkgYXR0ZW1wdHMgPSBzaWduYWwoMCk7XG4gIHJlYWRvbmx5IHN0cmVhayA9IHNpZ25hbCgwKTtcbiAgcmVhZG9ubHkgYmVzdFN0cmVhayA9IHNpZ25hbCgwKTtcbiAgcmVhZG9ubHkgZWxhcHNlZCA9IHNpZ25hbCgwKTtcbiAgcmVhZG9ubHkgcmVtYWluaW5nID0gc2lnbmFsKDApO1xuICByZWFkb25seSBmYWlsZWQgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBsb2NrQm9hcmQgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBsZWFkZXJib2FyZCA9IHNpZ25hbDxNZW1vcnlMZWFkZXJib2FyZEVudHJ5W10+KHRoaXMucmVhZExlYWRlcmJvYXJkKCkpO1xuXG4gIHByaXZhdGUgdGltZXI/OiBudW1iZXI7XG4gIHByaXZhdGUgZmlyc3RQaWNrPzogTWVtb3J5R2FtZUNhcmQ7XG5cbiAgcmVhZG9ubHkgcHJvZmlsZUNvbmZpZyA9IGNvbXB1dGVkKCgpID0+IFBST0ZJTEVfQ09ORklHW3RoaXMucHJvZmlsZSgpXSk7XG4gIHJlYWRvbmx5IHBhaXJDb3VudCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucHJvZmlsZUNvbmZpZygpLnBhaXJzKTtcbiAgcmVhZG9ubHkgYm9hcmRDbGFzcyA9IGNvbXB1dGVkKCgpID0+IGBtZW1vcnktYm9hcmQgJHt0aGlzLnByb2ZpbGVDb25maWcoKS5ib2FyZENsYXNzfWApO1xuICByZWFkb25seSBwcm9maWxlTGVhZGVyYm9hcmQgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMubGVhZGVyYm9hcmQoKVxuICAgICAgLmZpbHRlcigoZW50cnkpID0+IHRoaXMuZW50cnlQcm9maWxlKGVudHJ5KSA9PT0gdGhpcy5wcm9maWxlKCkpXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5zZWNvbmRzIC0gYi5zZWNvbmRzIHx8IGEuYXR0ZW1wdHMgLSBiLmF0dGVtcHRzKVxuICAgICAgLnNsaWNlKDAsIDUpXG4gICk7XG4gIHJlYWRvbmx5IG1hdGNoZWRQYWlycyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY2FyZHMoKS5maWx0ZXIoKGNhcmQpID0+IGNhcmQubWF0Y2hlZCkubGVuZ3RoIC8gMik7XG4gIHJlYWRvbmx5IHdvbiA9IGNvbXB1dGVkKFxuICAgICgpID0+ICF0aGlzLmZhaWxlZCgpICYmIHRoaXMucGxheWluZygpICYmIHRoaXMuY2FyZHMoKS5sZW5ndGggPiAwICYmIHRoaXMubWF0Y2hlZFBhaXJzKCkgPT09IHRoaXMucGFpckNvdW50KClcbiAgKTtcbiAgcmVhZG9ubHkgcGxheWVyTmFtZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5wbGF5ZXJQcm9maWxlcy5kaXNwbGF5TmFtZSh0aGlzLnBsYXllclByb2ZpbGVzLmFjdGl2ZVByb2ZpbGUoKSwgdGhpcy50KCdkZWZhdWx0UGxheWVyTmFtZScpKVxuICApO1xuICByZWFkb25seSBhY3RpdmVQbGF5ZXJBdmF0YXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnBsYXllclByb2ZpbGVzLmFjdGl2ZVByb2ZpbGUoKT8uYXZhdGFyID8/ICfwn4yfJyk7XG4gIHJlYWRvbmx5IGFjdGl2ZVBsYXllckNvbG9yID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wbGF5ZXJQcm9maWxlcy5hY3RpdmVQcm9maWxlKCk/LmNvbG9yID8/ICcjZmYwMGIyJyk7XG4gIHJlYWRvbmx5IHRpbWVMYWJlbCA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLnByb2ZpbGVDb25maWcoKS50aW1lZFNlY29uZHMgPyAndGltZUxlZnQnIDogJ3RpbWUnKSk7XG4gIHJlYWRvbmx5IGZvcm1hdHRlZFRpbWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc2Vjb25kcyA9IHRoaXMucHJvZmlsZUNvbmZpZygpLnRpbWVkU2Vjb25kcyA/IHRoaXMucmVtYWluaW5nKCkgOiB0aGlzLmVsYXBzZWQoKTtcbiAgICBjb25zdCBtaW4gPSBNYXRoLmZsb29yKHNlY29uZHMgLyA2MCk7XG4gICAgY29uc3Qgc2VjID0gc2Vjb25kcyAlIDYwO1xuICAgIHJldHVybiBgJHttaW59OiR7U3RyaW5nKHNlYykucGFkU3RhcnQoMiwgJzAnKX1gO1xuICB9KTtcbiAgcmVhZG9ubHkgcmVzdWx0TWVkYWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNhbGN1bGF0ZU1lZGFsKHRoaXMuYXR0ZW1wdHMoKSwgdGhpcy5yZXN1bHRTZWNvbmRzKCksIHRoaXMuYmVzdFN0cmVhaygpKSk7XG4gIHJlYWRvbmx5IHJlc3VsdFNlY29uZHMgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMucHJvZmlsZUNvbmZpZygpLnRpbWVkU2Vjb25kcyA/IHRoaXMucHJvZmlsZUNvbmZpZygpLnRpbWVkU2Vjb25kcyAtIHRoaXMucmVtYWluaW5nKCkgOiB0aGlzLmVsYXBzZWQoKVxuICApO1xuICByZWFkb25seSB3aW5Cb2R5ID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnQoJ3dpbkJvZHknKVxuICAgICAgLnJlcGxhY2UoJ3thdHRlbXB0c30nLCBTdHJpbmcodGhpcy5hdHRlbXB0cygpKSlcbiAgICAgIC5yZXBsYWNlKCd7dGltZX0nLCB0aGlzLmZvcm1hdFNlY29uZHModGhpcy5yZXN1bHRTZWNvbmRzKCkpKVxuICAgICAgLnJlcGxhY2UoJ3tzdHJlYWt9JywgU3RyaW5nKHRoaXMuYmVzdFN0cmVhaygpKSlcbiAgKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cygnTWluaUdhbWVzJywgTUlOSV9HQU1FU19JMThOKTtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB2b2lkIHRoaXMuYXVkaW8uc3RhcnRNZW51TXVzaWMoKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpLCAwKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcFRpbWVyKCk7XG4gICAgdGhpcy5hdWRpby5zdG9wTXVzaWMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksICdNaW5pR2FtZXMnKTtcbiAgfVxuXG4gIHNlbGVjdFByb2ZpbGUocHJvZmlsZTogTWVtb3J5R2FtZVByb2ZpbGUpOiB2b2lkIHtcbiAgICB0aGlzLnByb2ZpbGUuc2V0KHByb2ZpbGUpO1xuICAgIGlmIChwcm9maWxlID09PSAna2lkJykge1xuICAgICAgdGhpcy5kaWZmaWN1bHR5LnNldCgnZWFzeScpO1xuICAgICAgdGhpcy5tb2RlLnNldCgncmVsYXhlZCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocHJvZmlsZSA9PT0gJ25pbmphJykge1xuICAgICAgdGhpcy5kaWZmaWN1bHR5LnNldCgnaGFyZCcpO1xuICAgICAgdGhpcy5tb2RlLnNldCgndGltZWQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kaWZmaWN1bHR5LnNldCgnbWVkaXVtJyk7XG4gICAgdGhpcy5tb2RlLnNldCgnY2xhc3NpYycpO1xuICB9XG5cbiAgc3RhcnQoKTogdm9pZCB7XG4gICAgY29uc3Qgc3ltYm9scyA9IFNZTUJPTFMuc2xpY2UoMCwgdGhpcy5wYWlyQ291bnQoKSk7XG4gICAgY29uc3QgZGVjayA9IHRoaXMuc2h1ZmZsZShbLi4uc3ltYm9scywgLi4uc3ltYm9sc10pLm1hcCgoc3ltYm9sLCBpbmRleCkgPT4gKHtcbiAgICAgIGlkOiBgJHtzeW1ib2x9LSR7aW5kZXh9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMil9YCxcbiAgICAgIHN5bWJvbCxcbiAgICAgIG1hdGNoZWQ6IGZhbHNlLFxuICAgICAgZmxpcHBlZDogZmFsc2UsXG4gICAgfSkpO1xuICAgIHRoaXMuY2FyZHMuc2V0KGRlY2spO1xuICAgIHRoaXMuZmlyc3RQaWNrID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYXR0ZW1wdHMuc2V0KDApO1xuICAgIHRoaXMuc3RyZWFrLnNldCgwKTtcbiAgICB0aGlzLmJlc3RTdHJlYWsuc2V0KDApO1xuICAgIHRoaXMuZWxhcHNlZC5zZXQoMCk7XG4gICAgdGhpcy5yZW1haW5pbmcuc2V0KHRoaXMucHJvZmlsZUNvbmZpZygpLnRpbWVkU2Vjb25kcyA/PyAwKTtcbiAgICB0aGlzLmZhaWxlZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMubG9ja0JvYXJkLnNldChmYWxzZSk7XG4gICAgdGhpcy5waGFzZS5zZXQoJ3BsYXlpbmcnKTtcbiAgICB0aGlzLnBsYXlpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuc3RhcnRUaW1lcigpO1xuICAgIHZvaWQgdGhpcy5hdWRpby5zdGFydEdhbWVNdXNpYygpLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gIH1cblxuICByZXNldFRvU2V0dXAoKTogdm9pZCB7XG4gICAgdGhpcy5wbGF5aW5nLnNldChmYWxzZSk7XG4gICAgdGhpcy5jYXJkcy5zZXQoW10pO1xuICAgIHRoaXMuZmlyc3RQaWNrID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZmFpbGVkLnNldChmYWxzZSk7XG4gICAgdGhpcy5waGFzZS5zZXQoJ2hvbWUnKTtcbiAgICB0aGlzLnN0b3BUaW1lcigpO1xuICAgIHZvaWQgdGhpcy5hdWRpby5zdGFydE1lbnVNdXNpYygpLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gIH1cblxuICBmbGlwKGNhcmQ6IE1lbW9yeUdhbWVDYXJkKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubG9ja0JvYXJkKCkgfHwgY2FyZC5mbGlwcGVkIHx8IGNhcmQubWF0Y2hlZCB8fCB0aGlzLndvbigpIHx8IHRoaXMuZmFpbGVkKCkpIHJldHVybjtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICB0aGlzLmNhcmRzLnVwZGF0ZSgoY2FyZHMpID0+IGNhcmRzLm1hcCgoaXRlbSkgPT4gKGl0ZW0uaWQgPT09IGNhcmQuaWQgPyB7IC4uLml0ZW0sIGZsaXBwZWQ6IHRydWUgfSA6IGl0ZW0pKSk7XG4gICAgY29uc3QgdXBkYXRlZCA9IHRoaXMuY2FyZHMoKS5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBjYXJkLmlkKTtcbiAgICBpZiAoIXVwZGF0ZWQpIHJldHVybjtcbiAgICBpZiAoIXRoaXMuZmlyc3RQaWNrKSB7XG4gICAgICB0aGlzLmZpcnN0UGljayA9IHVwZGF0ZWQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hdHRlbXB0cy51cGRhdGUoKHZhbHVlKSA9PiB2YWx1ZSArIDEpO1xuICAgIGNvbnN0IGZpcnN0ID0gdGhpcy5maXJzdFBpY2s7XG4gICAgdGhpcy5maXJzdFBpY2sgPSB1bmRlZmluZWQ7XG4gICAgaWYgKGZpcnN0LnN5bWJvbCA9PT0gdXBkYXRlZC5zeW1ib2wpIHtcbiAgICAgIHRoaXMuc3RyZWFrLnVwZGF0ZSgodmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dCA9IHZhbHVlICsgMTtcbiAgICAgICAgdGhpcy5iZXN0U3RyZWFrLnVwZGF0ZSgoYmVzdCkgPT4gTWF0aC5tYXgoYmVzdCwgbmV4dCkpO1xuICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jYXJkcy51cGRhdGUoKGNhcmRzKSA9PlxuICAgICAgICBjYXJkcy5tYXAoKGl0ZW0pID0+IChpdGVtLmlkID09PSBmaXJzdC5pZCB8fCBpdGVtLmlkID09PSB1cGRhdGVkLmlkID8geyAuLi5pdGVtLCBtYXRjaGVkOiB0cnVlIH0gOiBpdGVtKSlcbiAgICAgICk7XG4gICAgICB0aGlzLmF1ZGlvLm1hdGNoKCk7XG4gICAgICBpZiAodGhpcy5jYXJkcygpLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5tYXRjaGVkKS5sZW5ndGggPT09IHRoaXMuY2FyZHMoKS5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5zdG9wVGltZXIoKTtcbiAgICAgICAgdGhpcy5waGFzZS5zZXQoJ3dvbicpO1xuICAgICAgICB0aGlzLnNhdmVTY29yZSgpO1xuICAgICAgICB0aGlzLmF1ZGlvLndpbigpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9ja0JvYXJkLnNldCh0cnVlKTtcbiAgICB0aGlzLnN0cmVhay5zZXQoMCk7XG4gICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jYXJkcy51cGRhdGUoKGNhcmRzKSA9PlxuICAgICAgICBjYXJkcy5tYXAoKGl0ZW0pID0+IChpdGVtLmlkID09PSBmaXJzdC5pZCB8fCBpdGVtLmlkID09PSB1cGRhdGVkLmlkID8geyAuLi5pdGVtLCBmbGlwcGVkOiBmYWxzZSB9IDogaXRlbSkpXG4gICAgICApO1xuICAgICAgdGhpcy5sb2NrQm9hcmQuc2V0KGZhbHNlKTtcbiAgICB9LCB0aGlzLnByb2ZpbGVDb25maWcoKS5taXNtYXRjaERlbGF5KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRUaW1lcigpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BUaW1lcigpO1xuICAgIHRoaXMudGltZXIgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLnByb2ZpbGVDb25maWcoKS50aW1lZFNlY29uZHMpIHtcbiAgICAgICAgdGhpcy5lbGFwc2VkLnVwZGF0ZSgodmFsdWUpID0+IHZhbHVlICsgMSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVtYWluaW5nLnVwZGF0ZSgodmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dCA9IE1hdGgubWF4KDAsIHZhbHVlIC0gMSk7XG4gICAgICAgIGlmIChuZXh0ID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5mYWlsZWQuc2V0KHRydWUpO1xuICAgICAgICAgIHRoaXMucGhhc2Uuc2V0KCdsb3N0Jyk7XG4gICAgICAgICAgdGhpcy5zdG9wVGltZXIoKTtcbiAgICAgICAgICB0aGlzLmF1ZGlvLmxvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgIH0pO1xuICAgIH0sIDEwMDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9wVGltZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudGltZXIpIHtcbiAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKHRoaXMudGltZXIpO1xuICAgICAgdGhpcy50aW1lciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNodWZmbGU8VD4oaXRlbXM6IFRbXSk6IFRbXSB7XG4gICAgY29uc3QgY29weSA9IFsuLi5pdGVtc107XG4gICAgZm9yIChsZXQgaSA9IGNvcHkubGVuZ3RoIC0gMTsgaSA+IDA7IGkgLT0gMSkge1xuICAgICAgY29uc3QgaiA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChpICsgMSkpO1xuICAgICAgW2NvcHlbaV0sIGNvcHlbal1dID0gW2NvcHlbal0sIGNvcHlbaV1dO1xuICAgIH1cbiAgICByZXR1cm4gY29weTtcbiAgfVxuXG4gIHByb3RlY3RlZCBsZWFkZXJib2FyZExpbmUoZW50cnk6IE1lbW9yeUxlYWRlcmJvYXJkRW50cnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1vdmVzID0gdGhpcy50KCdsZWFkZXJib2FyZE1vdmVzJykucmVwbGFjZSgne21vdmVzfScsIFN0cmluZyhlbnRyeS5hdHRlbXB0cykpO1xuICAgIGNvbnN0IHRpbWUgPSB0aGlzLnQoJ2xlYWRlcmJvYXJkVGltZScpLnJlcGxhY2UoJ3t0aW1lfScsIHRoaXMuZm9ybWF0U2Vjb25kcyhlbnRyeS5zZWNvbmRzKSk7XG4gICAgcmV0dXJuIGAke21vdmVzfSDCtyAke3RpbWV9YDtcbiAgfVxuXG4gIHByb3RlY3RlZCBsZWFkZXJib2FyZFRpdGxlKGVudHJ5OiBNZW1vcnlMZWFkZXJib2FyZEVudHJ5KTogc3RyaW5nIHtcbiAgICBjb25zdCBuYW1lID0gZW50cnkucGxheWVyTmFtZSB8fCB0aGlzLnQoJ2RlZmF1bHRQbGF5ZXJOYW1lJyk7XG4gICAgaWYgKGVudHJ5LnByb2ZpbGUpIHJldHVybiBgJHtlbnRyeS5wbGF5ZXJBdmF0YXIgfHwgJ+KtkCd9ICR7bmFtZX0gwrcgJHt0aGlzLnQoZW50cnkucHJvZmlsZSl9YDtcbiAgICByZXR1cm4gYCR7dGhpcy50KGVudHJ5LmRpZmZpY3VsdHkpfSDCtyAke3RoaXMudChlbnRyeS5tb2RlKX1gO1xuICB9XG5cbiAgcHJvdGVjdGVkIGxlYWRlcmJvYXJkSGVhZGluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoJ2xlYWRlcmJvYXJkUHJvZmlsZVRpdGxlJykucmVwbGFjZSgne3Byb2ZpbGV9JywgdGhpcy50KHRoaXMucHJvZmlsZSgpKSk7XG4gIH1cblxuICBwcml2YXRlIHNhdmVTY29yZSgpOiB2b2lkIHtcbiAgICBjb25zdCBtZWRhbCA9IHRoaXMuY2FsY3VsYXRlTWVkYWwodGhpcy5hdHRlbXB0cygpLCB0aGlzLnJlc3VsdFNlY29uZHMoKSwgdGhpcy5iZXN0U3RyZWFrKCkpO1xuICAgIGNvbnN0IGVudHJ5OiBNZW1vcnlMZWFkZXJib2FyZEVudHJ5ID0ge1xuICAgICAgaWQ6IGAke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMil9YCxcbiAgICAgIHByb2ZpbGU6IHRoaXMucHJvZmlsZSgpLFxuICAgICAgcGxheWVyTmFtZTogdGhpcy5wbGF5ZXJOYW1lKCksXG4gICAgICBwbGF5ZXJBdmF0YXI6IHRoaXMuYWN0aXZlUGxheWVyQXZhdGFyKCksXG4gICAgICBtZWRhbCxcbiAgICAgIGRpZmZpY3VsdHk6IHRoaXMuZGlmZmljdWx0eSgpLFxuICAgICAgbW9kZTogdGhpcy5tb2RlKCksXG4gICAgICBhdHRlbXB0czogdGhpcy5hdHRlbXB0cygpLFxuICAgICAgc2Vjb25kczogdGhpcy5yZXN1bHRTZWNvbmRzKCksXG4gICAgICBjb21wbGV0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH07XG4gICAgY29uc3QgbmV4dCA9IHRoaXMubGltaXRMZWFkZXJib2FyZChbLi4udGhpcy5sZWFkZXJib2FyZCgpLCBlbnRyeV0pO1xuICAgIHRoaXMubGVhZGVyYm9hcmQuc2V0KG5leHQpO1xuICAgIHRyeSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMRUFERVJCT0FSRF9LRVksIEpTT04uc3RyaW5naWZ5KG5leHQpKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIGxvY2FsU3RvcmFnZSBwdWVkZSBubyBlc3RhciBkaXNwb25pYmxlIGVuIFNTUi90ZXN0cy5cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlYWRMZWFkZXJib2FyZCgpOiBNZW1vcnlMZWFkZXJib2FyZEVudHJ5W10ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByYXcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMRUFERVJCT0FSRF9LRVkpO1xuICAgICAgaWYgKCFyYXcpIHJldHVybiBbXTtcbiAgICAgIGNvbnN0IGVudHJpZXMgPSBKU09OLnBhcnNlKHJhdykgYXMgTWVtb3J5TGVhZGVyYm9hcmRFbnRyeVtdO1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGVudHJpZXMpKSByZXR1cm4gW107XG4gICAgICByZXR1cm4gdGhpcy5saW1pdExlYWRlcmJvYXJkKFxuICAgICAgICBlbnRyaWVzLmZpbHRlcigoZW50cnkpID0+IGVudHJ5Py5kaWZmaWN1bHR5ICYmIGVudHJ5Py5tb2RlICYmIE51bWJlci5pc0Zpbml0ZShlbnRyeT8uYXR0ZW1wdHMpKVxuICAgICAgKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxpbWl0TGVhZGVyYm9hcmQoZW50cmllczogTWVtb3J5TGVhZGVyYm9hcmRFbnRyeVtdKTogTWVtb3J5TGVhZGVyYm9hcmRFbnRyeVtdIHtcbiAgICByZXR1cm4gdGhpcy5wcm9maWxlcy5mbGF0TWFwKChwcm9maWxlKSA9PlxuICAgICAgZW50cmllc1xuICAgICAgICAuZmlsdGVyKChlbnRyeSkgPT4gdGhpcy5lbnRyeVByb2ZpbGUoZW50cnkpID09PSBwcm9maWxlKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5zZWNvbmRzIC0gYi5zZWNvbmRzIHx8IGEuYXR0ZW1wdHMgLSBiLmF0dGVtcHRzKVxuICAgICAgICAuc2xpY2UoMCwgNSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBlbnRyeVByb2ZpbGUoZW50cnk6IE1lbW9yeUxlYWRlcmJvYXJkRW50cnkpOiBNZW1vcnlHYW1lUHJvZmlsZSB7XG4gICAgaWYgKGVudHJ5LnByb2ZpbGUpIHJldHVybiBlbnRyeS5wcm9maWxlO1xuICAgIGlmIChlbnRyeS5tb2RlID09PSAndGltZWQnIHx8IGVudHJ5LmRpZmZpY3VsdHkgPT09ICdoYXJkJykgcmV0dXJuICduaW5qYSc7XG4gICAgaWYgKGVudHJ5Lm1vZGUgPT09ICdyZWxheGVkJyB8fCBlbnRyeS5kaWZmaWN1bHR5ID09PSAnZWFzeScpIHJldHVybiAna2lkJztcbiAgICByZXR1cm4gJ2NsYXNzaWMnO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVNZWRhbChhdHRlbXB0czogbnVtYmVyLCBzZWNvbmRzOiBudW1iZXIsIGJlc3RTdHJlYWs6IG51bWJlcik6IE1lbW9yeU1lZGFsIHtcbiAgICBjb25zdCBwYWlycyA9IHRoaXMucGFpckNvdW50KCk7XG4gICAgY29uc3QgcGVyZmVjdGlzaCA9IGF0dGVtcHRzIDw9IHBhaXJzICsgTWF0aC5jZWlsKHBhaXJzICogMC4zNSk7XG4gICAgY29uc3Qgc29saWQgPSBhdHRlbXB0cyA8PSBwYWlycyAqIDI7XG4gICAgY29uc3QgZmFzdCA9ICF0aGlzLnByb2ZpbGVDb25maWcoKS50aW1lZFNlY29uZHMgfHwgc2Vjb25kcyA8PSBNYXRoLm1heCgzMCwgcGFpcnMgKiA4KTtcbiAgICBpZiAocGVyZmVjdGlzaCAmJiBmYXN0ICYmIGJlc3RTdHJlYWsgPj0gTWF0aC5jZWlsKHBhaXJzICogMC40NSkpIHJldHVybiAnZ29sZCc7XG4gICAgaWYgKHNvbGlkICYmIGJlc3RTdHJlYWsgPj0gTWF0aC5jZWlsKHBhaXJzICogMC4yNSkpIHJldHVybiAnc2lsdmVyJztcbiAgICBpZiAoc29saWQpIHJldHVybiAnYnJvbnplJztcbiAgICByZXR1cm4gJ3NwYXJrJztcbiAgfVxuXG4gIHByb3RlY3RlZCBtZWRhbEljb24obWVkYWw6IE1lbW9yeU1lZGFsKTogc3RyaW5nIHtcbiAgICBpZiAobWVkYWwgPT09ICdnb2xkJykgcmV0dXJuICfwn6WHJztcbiAgICBpZiAobWVkYWwgPT09ICdzaWx2ZXInKSByZXR1cm4gJ/CfpYgnO1xuICAgIGlmIChtZWRhbCA9PT0gJ2Jyb256ZScpIHJldHVybiAn8J+liSc7XG4gICAgcmV0dXJuICfinKgnO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRTZWNvbmRzKHNlY29uZHM6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgbWluID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gNjApO1xuICAgIGNvbnN0IHNlYyA9IHNlY29uZHMgJSA2MDtcbiAgICByZXR1cm4gYCR7bWlufToke1N0cmluZyhzZWMpLnBhZFN0YXJ0KDIsICcwJyl9YDtcbiAgfVxufVxuIl19
681
+
682
+ <ion-modal
683
+ [isOpen]="!!confirmAction()"
684
+ cssClass="val-modal-adaptive"
685
+ (didDismiss)="closeConfirmModal()"
686
+ >
687
+ <ng-template>
688
+ <val-modal-layout
689
+ [title]="confirmTitle()"
690
+ [subtitle]="confirmBody()"
691
+ [closeLabel]="t('close')"
692
+ [actions]="confirmActions()"
693
+ actionsAlign="end"
694
+ (close)="closeConfirmModal()"
695
+ (actionClick)="confirmPendingAction($event.action?.token)"
696
+ />
697
+ </ng-template>
698
+ </ion-modal>
699
+ `, styles: [":host{display:block;min-height:100%;--memory-panel: var(--ion-card-background, #ffffff);--memory-panel-strong: #f8f6fb;--memory-border: var(--ion-border-color, #e7e4ea);--memory-text: var(--ion-color-dark, #2f2a3a);--memory-muted: var(--ion-color-medium, #6f6a7a);--memory-soft: rgba(var(--ion-color-primary-rgb, 255, 0, 178), .08);--memory-row: rgba(var(--ion-color-dark-rgb, 47, 42, 58), .04);--memory-primary: var(--ion-color-primary, #ff00b2);--memory-secondary: var(--ion-color-tertiary, #6a2de2)}:host-context(html.ion-palette-dark),:host-context([data-theme=\"dark\"]){--memory-panel: #231f2d;--memory-panel-strong: #2f2939;--memory-border: rgba(255, 255, 255, .13);--memory-text: #fff8ff;--memory-muted: rgba(255, 248, 255, .68);--memory-soft: rgba(255, 255, 255, .045);--memory-row: rgba(255, 255, 255, .055)}.memory-shell{min-height:calc(100vh - 120px);display:flex;flex-direction:column;gap:20px;padding:18px 0 32px;color:var(--memory-text)}.memory-hero{position:relative;overflow:hidden;border-radius:28px;padding:clamp(28px,8vw,52px) 20px;text-align:center;color:#fff;background:radial-gradient(circle at 18% 20%,rgba(255,255,255,.32),transparent 24%),linear-gradient(135deg,var(--memory-primary),var(--memory-secondary));box-shadow:0 24px 70px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.25)}.memory-hero:after{content:\"\";position:absolute;inset:auto -20% -42%;height:55%;background:repeating-linear-gradient(90deg,rgba(255,255,255,.18) 0 10px,transparent 10px 20px);opacity:.18;transform:rotate(-4deg)}.memory-hero__badge{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:#ffffff29;font-size:.78rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.memory-hero h1{margin:14px 0 6px;font-size:clamp(2.25rem,9vw,3.625rem);line-height:.95;font-weight:900}.memory-hero p{max-width:520px;margin:0 auto;font-size:clamp(1rem,3vw,1.25rem);line-height:1.35;opacity:.88}.memory-panel,.memory-game{border:1px solid var(--memory-border);border-radius:24px;padding:clamp(16px,4vw,28px);background:var(--memory-panel);box-shadow:inset 0 1px #ffffff08}.memory-options{display:grid;gap:14px}.memory-howto{display:grid;gap:6px;padding:16px;border:1px solid var(--memory-border);border-radius:20px;background:var(--memory-soft)}.memory-options h2,.memory-howto h2,.memory-leaderboard h2{margin:8px 0 0;color:var(--memory-text);font-size:1.25rem;font-weight:900}.memory-howto h2,.memory-leaderboard h2{margin:0}.memory-howto p,.memory-leaderboard p{margin:0;color:var(--memory-muted);font-size:1rem;line-height:1.45}.memory-profiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.memory-profiles button,.memory-secondary{border:1px solid var(--memory-border);border-radius:999px;background:transparent;color:var(--memory-text);font:inherit;font-weight:850}.memory-profiles button{min-height:92px;display:grid;align-content:center;gap:5px;padding:12px 18px;text-align:center}.memory-profiles button.is-selected{border-color:var(--memory-primary);background:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.12);color:var(--memory-primary)}.memory-profiles strong{font-size:1.02rem}.memory-profiles small{color:var(--memory-muted);font-size:.88rem;line-height:1.25}.memory-profiles button.is-selected small{color:inherit}.memory-primary{min-height:58px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:999px;background:var(--memory-primary);color:var(--ion-color-primary-contrast, #fff);font:inherit;font-weight:900;box-shadow:0 18px 45px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.28)}.memory-primary ion-icon{flex:0 0 auto;width:1.25em;height:1.25em;font-size:1.25em;line-height:1}.memory-score{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:16px}.memory-score span{border-radius:18px;padding:12px;background:var(--memory-row);text-align:center}.memory-score small,.memory-win p{color:var(--memory-muted)}.memory-score small{display:block;font-size:.72rem;font-weight:850;text-transform:uppercase;letter-spacing:.08em}.memory-score strong{display:block;color:var(--memory-text);font-size:1.35rem;font-weight:950}.memory-board{display:grid;grid-template-columns:repeat(4,minmax(58px,1fr));gap:clamp(8px,2vw,12px)}.memory-board--kid,.memory-board--classic{grid-template-columns:repeat(4,minmax(58px,1fr))}.memory-board--ninja{grid-template-columns:repeat(8,minmax(40px,1fr))}.memory-card{position:relative;aspect-ratio:1;border:0;border-radius:clamp(14px,4vw,22px);background:transparent;perspective:800px;font-size:clamp(24px,7vw,42px)}.memory-card__back,.memory-card__front{position:absolute;inset:0;display:grid;place-items:center;border-radius:inherit;backface-visibility:hidden;transition:transform .28s ease,box-shadow .2s ease,opacity .2s ease}.memory-card__back{background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.3),transparent 24%),linear-gradient(135deg,var(--memory-secondary),var(--memory-primary));color:#fff;font-weight:950;box-shadow:0 10px 24px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.2)}.memory-card__front{transform:rotateY(180deg);border:1px solid var(--memory-border);background:var(--memory-panel-strong)}.memory-card.is-flipped .memory-card__back{transform:rotateY(180deg)}.memory-card.is-flipped .memory-card__front{transform:rotateY(360deg)}.memory-card.is-matched .memory-card__front{box-shadow:inset 0 0 0 3px var(--memory-primary)}.memory-win{position:relative;overflow:hidden;margin-top:16px;padding:16px;border-radius:20px;background:rgba(var(--ion-color-success-rgb, 45, 211, 111),.12);text-align:center}.memory-win ion-icon{display:block;margin:0 auto 8px;color:var(--ion-color-success, #2dd36f);font-size:2rem}.memory-win strong{color:var(--memory-text);font-size:1.35rem;font-weight:950}.memory-win p{margin:4px 0 0}.memory-result{position:relative;z-index:1;display:inline-flex;align-items:center;gap:10px;margin-top:12px;padding:10px 14px;border-radius:999px;background:#ffffffb8;color:#2f2a3a}:host-context(html.ion-palette-dark) .memory-result,:host-context([data-theme=\"dark\"]) .memory-result{background:#ffffff1a;color:var(--memory-text)}.memory-result>span{display:grid;place-items:center;width:38px;height:38px;border-radius:999px;background:var(--player-color, var(--memory-primary));font-size:1.3rem}.memory-result div{display:grid;text-align:left}.memory-result small{color:var(--memory-muted);font-weight:800}.memory-confetti span{position:absolute;top:-16px;left:8%;width:9px;height:16px;border-radius:4px;background:var(--memory-primary);opacity:0;animation:memory-confetti-fall 1.5s ease-out forwards;transform:rotate(20deg)}.memory-confetti span:nth-child(2n){background:var(--memory-secondary);animation-delay:.08s;left:20%}.memory-confetti span:nth-child(3n){background:#ffcf3f;animation-delay:.16s;left:38%}.memory-confetti span:nth-child(4n){background:#2dd36f;animation-delay:.24s;left:55%}.memory-confetti span:nth-child(5n){left:72%}.memory-confetti span:nth-child(6n){left:86%}.memory-win--failed{background:rgba(var(--ion-color-danger-rgb, 235, 68, 90),.12)}.memory-actions{position:sticky;bottom:10px;z-index:2;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px;padding-top:10px;background:linear-gradient(to bottom,transparent,var(--memory-panel) 28%)}.memory-menu-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:10px}.memory-secondary{min-height:58px}.memory-leaderboard{display:grid;gap:12px;border:1px solid var(--memory-border);border-radius:24px;padding:clamp(16px,4vw,22px);background:var(--memory-panel)}.memory-leaderboard__title{display:flex;align-items:center;gap:10px}.memory-leaderboard__title ion-icon{color:var(--memory-primary);font-size:1.4rem}.memory-leaderboard ol{display:grid;gap:8px;margin:0;padding:0;list-style:none}.memory-leaderboard li{display:grid;grid-template-columns:38px 1fr;gap:2px 10px;align-items:center;padding:12px;border-radius:16px;background:var(--memory-row)}.memory-leaderboard li>span{grid-row:span 2;display:grid;place-items:center;width:34px;height:34px;border-radius:999px;background:rgba(var(--ion-color-primary-rgb, 255, 0, 178),.18);color:var(--memory-primary);font-weight:950}.memory-leaderboard strong{color:var(--memory-text);font-size:.98rem}.memory-leaderboard small{color:var(--memory-muted);font-size:.88rem}.memory-player{display:grid;gap:12px;padding:14px;border:1px solid var(--memory-border);border-radius:22px;background:var(--memory-soft)}.memory-player h2,.memory-player p{margin:0}.memory-player p{color:var(--memory-muted)}.memory-player label{display:grid;gap:6px;font-weight:850}.memory-player input{width:100%;min-height:52px;border:1px solid var(--memory-border);border-radius:999px;padding:0 18px;background:var(--memory-panel);color:var(--memory-text);font:inherit;font-weight:850}.memory-avatar-list,.memory-color-list{display:flex;flex-wrap:wrap;gap:8px}.memory-avatar-list button,.memory-color-list button{display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--memory-border);border-radius:999px;background:var(--memory-panel);color:var(--memory-text);font-size:1.15rem}.memory-avatar-list button.is-selected,.memory-color-list button.is-selected{border-color:var(--memory-primary);box-shadow:0 0 0 3px rgba(var(--ion-color-primary-rgb, 255, 0, 178),.14)}.memory-color-list button{background:var(--player-color)}@keyframes memory-confetti-fall{0%{opacity:0;transform:translateY(0) rotate(0)}18%{opacity:1}to{opacity:0;transform:translateY(170px) rotate(300deg)}}@media (max-width: 520px){.memory-score{grid-template-columns:repeat(2,1fr)}.memory-board--ninja{grid-template-columns:repeat(4,minmax(54px,1fr))}.memory-actions,.memory-menu-actions,.memory-profiles{grid-template-columns:1fr}}\n"] }]
700
+ }], ctorParameters: () => [], propDecorators: { miniGamesRoute: [{
701
+ type: Input
702
+ }] } });
703
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LWdhbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9taW5pLWdhbWVzL21lbW9yeS1nYW1lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsY0FBYyxFQUNkLGFBQWEsR0FDZCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scURBQXFELENBQUM7O0FBRzNGLFFBQVEsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0FBRWpFLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUs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QUFFLENBQUM7UUFDekIsT0FBTyxHQUFHLEdBQUcsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ2xELENBQUM7K0dBbllVLG1CQUFtQjttR0FBbkIsbUJBQW1CLHlIQTV1QnBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEpULG1vVEEzSlMsT0FBTywySkFBRSxRQUFRLHNEQUFFLG9CQUFvQjs7NEZBNnVCdEMsbUJBQW1CO2tCQWh2Qi9CLFNBQVM7K0JBQ0UsaUJBQWlCLGNBQ2YsSUFBSSxXQUNQLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsQ0FBQyxZQUN4Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBKVDt3REF3bEJRLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElvbkljb24sIElvbk1vZGFsIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7XG4gIG11c2ljYWxOb3Rlc091dGxpbmUsXG4gIHJlZnJlc2hPdXRsaW5lLFxuICB0cm9waHlPdXRsaW5lLFxufSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5cbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBNSU5JX0dBTUVTX0kxOE4gfSBmcm9tICcuL21pbmktZ2FtZXMuaTE4bic7XG5pbXBvcnQgeyBNaW5pR2FtZVBsYXllclByb2ZpbGVTZXJ2aWNlIH0gZnJvbSAnLi9taW5pLWdhbWUtcGxheWVyLXByb2ZpbGUuc2VydmljZSc7XG5pbXBvcnQgeyBSZXRyb0F1ZGlvU2VydmljZSB9IGZyb20gJy4vcmV0cm8tYXVkaW8uc2VydmljZSc7XG5pbXBvcnQgeyBNZW1vcnlHYW1lQ2FyZCwgTWVtb3J5R2FtZURpZmZpY3VsdHksIE1lbW9yeUdhbWVNb2RlLCBNZW1vcnlHYW1lUHJvZmlsZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgTW9kYWxMYXlvdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvbW9kYWwtbGF5b3V0L21vZGFsLWxheW91dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uTWV0YWRhdGEgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmFkZEljb25zKHsgbXVzaWNhbE5vdGVzT3V0bGluZSwgcmVmcmVzaE91dGxpbmUsIHRyb3BoeU91dGxpbmUgfSk7XG5cbmNvbnN0IFNZTUJPTFMgPSBbJ+KtkCcsICfwn5qAJywgJ/CfjrUnLCAn4pqhJywgJ/CfjJknLCAn8J+SjicsICfwn46IJywgJ/CfjYAnLCAn8J+nqScsICfwn46yJywgJ/CfjIgnLCAn8J+UpScsICfwn42TJywgJ/CfpoQnLCAn8J+OgScsICfimIDvuI8nXTtcblxuY29uc3QgUFJPRklMRV9DT05GSUc6IFJlY29yZDxcbiAgTWVtb3J5R2FtZVByb2ZpbGUsXG4gIHtcbiAgICBwYWlyczogbnVtYmVyO1xuICAgIHRpbWVkU2Vjb25kcz86IG51bWJlcjtcbiAgICBtaXNtYXRjaERlbGF5OiBudW1iZXI7XG4gICAgYm9hcmRDbGFzczogc3RyaW5nO1xuICB9XG4+ID0ge1xuICBraWQ6IHtcbiAgICBwYWlyczogNCxcbiAgICBtaXNtYXRjaERlbGF5OiAxNDAwLFxuICAgIGJvYXJkQ2xhc3M6ICdtZW1vcnktYm9hcmQtLWtpZCcsXG4gIH0sXG4gIGNsYXNzaWM6IHtcbiAgICBwYWlyczogOCxcbiAgICBtaXNtYXRjaERlbGF5OiA5MDAsXG4gICAgYm9hcmRDbGFzczogJ21lbW9yeS1ib2FyZC0tY2xhc3NpYycsXG4gIH0sXG4gIG5pbmphOiB7XG4gICAgcGFpcnM6IDE2LFxuICAgIHRpbWVkU2Vjb25kczogMTUwLFxuICAgIG1pc21hdGNoRGVsYXk6IDU2MCxcbiAgICBib2FyZENsYXNzOiAnbWVtb3J5LWJvYXJkLS1uaW5qYScsXG4gIH0sXG59O1xuXG50eXBlIE1lbW9yeUdhbWVQaGFzZSA9ICdob21lJyB8ICdwbGF5aW5nJyB8ICd3b24nIHwgJ2xvc3QnO1xuXG5pbnRlcmZhY2UgTWVtb3J5TGVhZGVyYm9hcmRFbnRyeSB7XG4gIGlkOiBzdHJpbmc7XG4gIHByb2ZpbGU/OiBNZW1vcnlHYW1lUHJvZmlsZTtcbiAgcGxheWVyTmFtZT86IHN0cmluZztcbiAgcGxheWVyQXZhdGFyPzogc3RyaW5nO1xuICBtZWRhbD86IE1lbW9yeU1lZGFsO1xuICBkaWZmaWN1bHR5OiBNZW1vcnlHYW1lRGlmZmljdWx0eTtcbiAgbW9kZTogTWVtb3J5R2FtZU1vZGU7XG4gIGF0dGVtcHRzOiBudW1iZXI7XG4gIHNlY29uZHM6IG51bWJlcjtcbiAgY29tcGxldGVkQXQ6IHN0cmluZztcbn1cblxuY29uc3QgTEVBREVSQk9BUkRfS0VZID0gJ3ZhbC1taW5pLWdhbWVzLW1lbW9yeS1sZWFkZXJib2FyZDp2MSc7XG5cbnR5cGUgTWVtb3J5TWVkYWwgPSAnZ29sZCcgfCAnc2lsdmVyJyB8ICdicm9uemUnIHwgJ3NwYXJrJztcbnR5cGUgTWVtb3J5Q29uZmlybUFjdGlvbiA9ICdyZXN0YXJ0JyB8ICdtb2RlJyB8ICdnYW1lcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1tZW1vcnktZ2FtZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtJb25JY29uLCBJb25Nb2RhbCwgTW9kYWxMYXlvdXRDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxtYWluIGNsYXNzPVwibWVtb3J5LXNoZWxsXCI+XG4gICAgICBAaWYgKHBoYXNlKCkgPT09ICdob21lJykge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cIm1lbW9yeS1oZXJvXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1oZXJvX19iYWRnZVwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJtdXNpY2FsLW5vdGVzLW91dGxpbmVcIiAvPlxuICAgICAgICAgICAge3sgdCgnbWVtb3J5VGl0bGUnKSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxoMT57eyB0KCdob21lVGl0bGUnKSB9fTwvaDE+XG4gICAgICAgICAgPHA+e3sgdCgnaG9tZVN1YnRpdGxlJykgfX08L3A+XG4gICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cIm1lbW9yeS1wYW5lbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW1vcnktb3B0aW9uc1wiPlxuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJtZW1vcnktaG93dG9cIj5cbiAgICAgICAgICAgICAgPGgyPnt7IHQoJ2luc3RydWN0aW9uc1RpdGxlJykgfX08L2gyPlxuICAgICAgICAgICAgICA8cD57eyB0KCdpbnN0cnVjdGlvbnNCb2R5JykgfX08L3A+XG4gICAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICAgIDxoMj57eyB0KCdwcm9maWxlVGl0bGUnKSB9fTwvaDI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LXByb2ZpbGVzXCIgcm9sZT1cInJhZGlvZ3JvdXBcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ3Byb2ZpbGVUaXRsZScpXCI+XG4gICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgcHJvZmlsZXM7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJwcm9maWxlKCkgPT09IGl0ZW1cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFByb2ZpbGUoaXRlbSlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgdChpdGVtKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoaXRlbSArICdEZXNjcmlwdGlvbicpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtZW1vcnktcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic3RhcnQoKVwiPnt7IHQoJ3N0YXJ0R2FtZScpIH19PC9idXR0b24+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVtb3J5LW1lbnUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWVtb3J5LXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdENoYW5nZUdhbWUoKVwiPlxuICAgICAgICAgICAgICAgIHt7IHQoJ2NoYW5nZUdhbWUnKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJtZW1vcnktZ2FtZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW1vcnktc2NvcmVcIj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnYXR0ZW1wdHMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgYXR0ZW1wdHMoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdwYWlycycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyBtYXRjaGVkUGFpcnMoKSB9fS97eyBwYWlyQ291bnQoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyB0KHRpbWVMYWJlbCgpKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgZm9ybWF0dGVkVGltZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ3N0cmVhaycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyBzdHJlYWsoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1ib2FyZFwiIFtjbGFzc109XCJib2FyZENsYXNzKClcIj5cbiAgICAgICAgICAgIEBmb3IgKGNhcmQgb2YgY2FyZHMoKTsgdHJhY2sgY2FyZC5pZCkge1xuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtZW1vcnktY2FyZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLWZsaXBwZWRdPVwiY2FyZC5mbGlwcGVkIHx8IGNhcmQubWF0Y2hlZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLW1hdGNoZWRdPVwiY2FyZC5tYXRjaGVkXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY2FyZC5tYXRjaGVkIHx8IGxvY2tCb2FyZCgpIHx8IGZhaWxlZCgpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmxpcChjYXJkKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbW9yeS1jYXJkX19iYWNrXCI+Pzwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbW9yeS1jYXJkX19mcm9udFwiPnt7IGNhcmQuc3ltYm9sIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIEBpZiAocGhhc2UoKSA9PT0gJ3dvbicpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW1vcnktd2luXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW1vcnktY29uZmV0dGlcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChwaWVjZSBvZiBjb25mZXR0aVBpZWNlczsgdHJhY2sgcGllY2UpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInRyb3BoeS1vdXRsaW5lXCIgLz5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCd3aW5UaXRsZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxwPnt7IHdpbkJvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1yZXN1bHRcIiBbc3R5bGUuLS1wbGF5ZXItY29sb3JdPVwiYWN0aXZlUGxheWVyQ29sb3IoKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGFjdGl2ZVBsYXllckF2YXRhcigpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgcGxheWVyTmFtZSgpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgbWVkYWxJY29uKHJlc3VsdE1lZGFsKCkpIH19IHt7IHQocmVzdWx0TWVkYWwoKSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKHBoYXNlKCkgPT09ICdsb3N0Jykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS13aW4gbWVtb3J5LXdpbi0tZmFpbGVkXCI+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnbG9zZVRpdGxlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHA+e3sgdCgnbG9zZUJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW1vcnktYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1lbW9yeS1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RDaGFuZ2VNb2RlKClcIj57eyB0KCdiYWNrVG9TZXR1cCcpIH19PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWVtb3J5LXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdENoYW5nZUdhbWUoKVwiPnt7IHQoJ2NoYW5nZUdhbWUnKSB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1lbW9yeS1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0UmVzdGFydEdhbWUoKVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInJlZnJlc2gtb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIHt7IHQoJ3Jlc3RhcnQnKSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cblxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJtZW1vcnktbGVhZGVyYm9hcmRcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lbW9yeS1sZWFkZXJib2FyZF9fdGl0bGVcIj5cbiAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInRyb3BoeS1vdXRsaW5lXCIgLz5cbiAgICAgICAgICA8aDI+e3sgbGVhZGVyYm9hcmRIZWFkaW5nKCkgfX08L2gyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmIChwcm9maWxlTGVhZGVyYm9hcmQoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICA8cD57eyB0KCdsZWFkZXJib2FyZEVtcHR5JykgfX08L3A+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxvbD5cbiAgICAgICAgICAgIEBmb3IgKGVudHJ5IG9mIHByb2ZpbGVMZWFkZXJib2FyZCgpOyB0cmFjayBlbnRyeS5pZDsgbGV0IGluZGV4ID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBpbmRleCArIDEgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBsZWFkZXJib2FyZFRpdGxlKGVudHJ5KSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyBsZWFkZXJib2FyZExpbmUoZW50cnkpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L29sPlxuICAgICAgICB9XG4gICAgICA8L3NlY3Rpb24+XG4gICAgPC9tYWluPlxuXG4gICAgPGlvbi1tb2RhbFxuICAgICAgW2lzT3Blbl09XCIhIWNvbmZpcm1BY3Rpb24oKVwiXG4gICAgICBjc3NDbGFzcz1cInZhbC1tb2RhbC1hZGFwdGl2ZVwiXG4gICAgICAoZGlkRGlzbWlzcyk9XCJjbG9zZUNvbmZpcm1Nb2RhbCgpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDx2YWwtbW9kYWwtbGF5b3V0XG4gICAgICAgICAgW3RpdGxlXT1cImNvbmZpcm1UaXRsZSgpXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwiY29uZmlybUJvZHkoKVwiXG4gICAgICAgICAgW2Nsb3NlTGFiZWxdPVwidCgnY2xvc2UnKVwiXG4gICAgICAgICAgW2FjdGlvbnNdPVwiY29uZmlybUFjdGlvbnMoKVwiXG4gICAgICAgICAgYWN0aW9uc0FsaWduPVwiZW5kXCJcbiAgICAgICAgICAoY2xvc2UpPVwiY2xvc2VDb25maXJtTW9kYWwoKVwiXG4gICAgICAgICAgKGFjdGlvbkNsaWNrKT1cImNvbmZpcm1QZW5kaW5nQWN0aW9uKCRldmVudC5hY3Rpb24/LnRva2VuKVwiXG4gICAgICAgIC8+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgICAgICAtLW1lbW9yeS1wYW5lbDogdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgI2ZmZmZmZik7XG4gICAgICAgIC0tbWVtb3J5LXBhbmVsLXN0cm9uZzogI2Y4ZjZmYjtcbiAgICAgICAgLS1tZW1vcnktYm9yZGVyOiB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCAjZTdlNGVhKTtcbiAgICAgICAgLS1tZW1vcnktdGV4dDogdmFyKC0taW9uLWNvbG9yLWRhcmssICMyZjJhM2EpO1xuICAgICAgICAtLW1lbW9yeS1tdXRlZDogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzZmNmE3YSk7XG4gICAgICAgIC0tbWVtb3J5LXNvZnQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMDgpO1xuICAgICAgICAtLW1lbW9yeS1yb3c6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhcmstcmdiLCA0NywgNDIsIDU4KSwgMC4wNCk7XG4gICAgICAgIC0tbWVtb3J5LXByaW1hcnk6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LCAjZmYwMGIyKTtcbiAgICAgICAgLS1tZW1vcnktc2Vjb25kYXJ5OiB2YXIoLS1pb24tY29sb3ItdGVydGlhcnksICM2YTJkZTIpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyayksXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIHtcbiAgICAgICAgLS1tZW1vcnktcGFuZWw6ICMyMzFmMmQ7XG4gICAgICAgIC0tbWVtb3J5LXBhbmVsLXN0cm9uZzogIzJmMjkzOTtcbiAgICAgICAgLS1tZW1vcnktYm9yZGVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTMpO1xuICAgICAgICAtLW1lbW9yeS10ZXh0OiAjZmZmOGZmO1xuICAgICAgICAtLW1lbW9yeS1tdXRlZDogcmdiYSgyNTUsIDI0OCwgMjU1LCAwLjY4KTtcbiAgICAgICAgLS1tZW1vcnktc29mdDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA0NSk7XG4gICAgICAgIC0tbWVtb3J5LXJvdzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1NSk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktc2hlbGwge1xuICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gMTIwcHgpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDIwcHg7XG4gICAgICAgIHBhZGRpbmc6IDE4cHggMCAzMnB4O1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWhlcm8ge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDI4cHg7XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDI4cHgsIDh2dywgNTJweCkgMjBweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE4JSAyMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zMiksIHRyYW5zcGFyZW50IDI0JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tbWVtb3J5LXByaW1hcnkpLCB2YXIoLS1tZW1vcnktc2Vjb25kYXJ5KSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMjRweCA3MHB4IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAyNTUsIDAsIDE3OCksIDAuMjUpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWhlcm86OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogYXV0byAtMjAlIC00MiUgLTIwJTtcbiAgICAgICAgaGVpZ2h0OiA1NSU7XG4gICAgICAgIGJhY2tncm91bmQ6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoXG4gICAgICAgICAgOTBkZWcsXG4gICAgICAgICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE4KSAwIDEwcHgsXG4gICAgICAgICAgdHJhbnNwYXJlbnQgMTBweCAyMHB4XG4gICAgICAgICk7XG4gICAgICAgIG9wYWNpdHk6IDAuMTg7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00ZGVnKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1oZXJvX19iYWRnZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgcGFkZGluZzogNnB4IDEycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTYpO1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktaGVybyBoMSB7XG4gICAgICAgIG1hcmdpbjogMTRweCAwIDZweDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgyLjI1cmVtLCA5dncsIDMuNjI1cmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDAuOTU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktaGVybyBwIHtcbiAgICAgICAgbWF4LXdpZHRoOiA1MjBweDtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMXJlbSwgM3Z3LCAxLjI1cmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICAgIG9wYWNpdHk6IDAuODg7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcGFuZWwsXG4gICAgICAubWVtb3J5LWdhbWUge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1tZW1vcnktYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMjRweDtcbiAgICAgICAgcGFkZGluZzogY2xhbXAoMTZweCwgNHZ3LCAyOHB4KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWVtb3J5LXBhbmVsKTtcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDMpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LW9wdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDE0cHg7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktaG93dG8ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgcGFkZGluZzogMTZweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbWVtb3J5LWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1vcHRpb25zIGgyLFxuICAgICAgLm1lbW9yeS1ob3d0byBoMixcbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmQgaDIge1xuICAgICAgICBtYXJnaW46IDhweCAwIDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1ob3d0byBoMixcbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmQgaDIge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktaG93dG8gcCxcbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmQgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDU7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJvZmlsZXMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXByb2ZpbGVzIGJ1dHRvbixcbiAgICAgIC5tZW1vcnktc2Vjb25kYXJ5IHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbWVtb3J5LWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDg1MDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wcm9maWxlcyBidXR0b24ge1xuICAgICAgICBtaW4taGVpZ2h0OiA5MnB4O1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogNXB4O1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDE4cHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wcm9maWxlcyBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLW1lbW9yeS1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4xMik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktcHJpbWFyeSk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJvZmlsZXMgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjAycmVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXByb2ZpbGVzIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44OHJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjU7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJvZmlsZXMgYnV0dG9uLmlzLXNlbGVjdGVkIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJpbWFyeSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDU4cHg7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LWNvbnRyYXN0LCAjZmZmKTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxOHB4IDQ1cHggcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4yOCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcHJpbWFyeSBpb24taWNvbiB7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICB3aWR0aDogMS4yNWVtO1xuICAgICAgICBoZWlnaHQ6IDEuMjVlbTtcbiAgICAgICAgZm9udC1zaXplOiAxLjI1ZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXNjb3JlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgMWZyKTtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktc2NvcmUgc3BhbiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE4cHg7XG4gICAgICAgIHBhZGRpbmc6IDEycHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1yb3cpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktc2NvcmUgc21hbGwsXG4gICAgICAubWVtb3J5LXdpbiBwIHtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktc2NvcmUgc21hbGwge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgZm9udC1zaXplOiAwLjcycmVtO1xuICAgICAgICBmb250LXdlaWdodDogODUwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXNjb3JlIHN0cm9uZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDEuMzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktYm9hcmQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoNThweCwgMWZyKSk7XG4gICAgICAgIGdhcDogY2xhbXAoOHB4LCAydncsIDEycHgpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWJvYXJkLS1raWQge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoNThweCwgMWZyKSk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktYm9hcmQtLWNsYXNzaWMge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoNThweCwgMWZyKSk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktYm9hcmQtLW5pbmphIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoOCwgbWlubWF4KDQwcHgsIDFmcikpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNhcmQge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGFzcGVjdC1yYXRpbzogMTtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiBjbGFtcCgxNHB4LCA0dncsIDIycHgpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgcGVyc3BlY3RpdmU6IDgwMHB4O1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDI0cHgsIDd2dywgNDJweCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY2FyZF9fYmFjayxcbiAgICAgIC5tZW1vcnktY2FyZF9fZnJvbnQge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xuICAgICAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjI4cyBlYXNlLCBib3gtc2hhZG93IDAuMnMgZWFzZSwgb3BhY2l0eSAwLjJzIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY2FyZF9fYmFjayB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzMiUgMjglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyksIHRyYW5zcGFyZW50IDI0JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tbWVtb3J5LXNlY29uZGFyeSksIHZhcigtLW1lbW9yeS1wcmltYXJ5KSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBib3gtc2hhZG93OiAwIDEwcHggMjRweCByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjIpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNhcmRfX2Zyb250IHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW1lbW9yeS1ib3JkZXIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktcGFuZWwtc3Ryb25nKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jYXJkLmlzLWZsaXBwZWQgLm1lbW9yeS1jYXJkX19iYWNrIHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY2FyZC5pcy1mbGlwcGVkIC5tZW1vcnktY2FyZF9fZnJvbnQge1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZVkoMzYwZGVnKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jYXJkLmlzLW1hdGNoZWQgLm1lbW9yeS1jYXJkX19mcm9udCB7XG4gICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDNweCB2YXIoLS1tZW1vcnktcHJpbWFyeSk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktd2luIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICAgICAgICBwYWRkaW5nOiAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC4xMik7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS13aW4gaW9uLWljb24ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luOiAwIGF1dG8gOHB4O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MsICMyZGQzNmYpO1xuICAgICAgICBmb250LXNpemU6IDJyZW07XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktd2luIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4zNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS13aW4gcCB7XG4gICAgICAgIG1hcmdpbjogNHB4IDAgMDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1yZXN1bHQge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDEycHg7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMTRweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43Mik7XG4gICAgICAgIGNvbG9yOiAjMmYyYTNhO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLm1lbW9yeS1yZXN1bHQsXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5tZW1vcnktcmVzdWx0IHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXJlc3VsdCA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMzhweDtcbiAgICAgICAgaGVpZ2h0OiAzOHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcGxheWVyLWNvbG9yLCB2YXIoLS1tZW1vcnktcHJpbWFyeSkpO1xuICAgICAgICBmb250LXNpemU6IDEuM3JlbTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1yZXN1bHQgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1yZXN1bHQgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LW11dGVkKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jb25mZXR0aSBzcGFuIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IC0xNnB4O1xuICAgICAgICBsZWZ0OiA4JTtcbiAgICAgICAgd2lkdGg6IDlweDtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1wcmltYXJ5KTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgYW5pbWF0aW9uOiBtZW1vcnktY29uZmV0dGktZmFsbCAxLjVzIGVhc2Utb3V0IGZvcndhcmRzO1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgyMGRlZyk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY29uZmV0dGkgc3BhbjpudGgtY2hpbGQoMm4pIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbWVtb3J5LXNlY29uZGFyeSk7XG4gICAgICAgIGFuaW1hdGlvbi1kZWxheTogMC4wOHM7XG4gICAgICAgIGxlZnQ6IDIwJTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jb25mZXR0aSBzcGFuOm50aC1jaGlsZCgzbikge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZjZjNmO1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuMTZzO1xuICAgICAgICBsZWZ0OiAzOCU7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY29uZmV0dGkgc3BhbjpudGgtY2hpbGQoNG4pIHtcbiAgICAgICAgYmFja2dyb3VuZDogIzJkZDM2ZjtcbiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwLjI0cztcbiAgICAgICAgbGVmdDogNTUlO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWNvbmZldHRpIHNwYW46bnRoLWNoaWxkKDVuKSB7XG4gICAgICAgIGxlZnQ6IDcyJTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1jb25mZXR0aSBzcGFuOm50aC1jaGlsZCg2bikge1xuICAgICAgICBsZWZ0OiA4NiU7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktd2luLS1mYWlsZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWFjdGlvbnMge1xuICAgICAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgICAgICBib3R0b206IDEwcHg7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICAgICAgICBwYWRkaW5nLXRvcDogMTBweDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdHJhbnNwYXJlbnQsIHZhcigtLW1lbW9yeS1wYW5lbCkgMjglKTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1tZW51LWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDlyZW0sIDFmcikpO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktc2Vjb25kYXJ5IHtcbiAgICAgICAgbWluLWhlaWdodDogNThweDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbWVtb3J5LWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDI0cHg7XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDE2cHgsIDR2dywgMjJweCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmRfX3RpdGxlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWxlYWRlcmJvYXJkX190aXRsZSBpb24taWNvbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZW1vcnktcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS40cmVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWxlYWRlcmJvYXJkIG9sIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZCBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMzhweCAxZnI7XG4gICAgICAgIGdhcDogMnB4IDEwcHg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDEycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1yb3cpO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWxlYWRlcmJvYXJkIGxpID4gc3BhbiB7XG4gICAgICAgIGdyaWQtcm93OiBzcGFuIDI7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAzNHB4O1xuICAgICAgICBoZWlnaHQ6IDM0cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgMjU1LCAwLCAxNzgpLCAwLjE4KTtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1wcmltYXJ5KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1sZWFkZXJib2FyZCBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuOThyZW07XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktbGVhZGVyYm9hcmQgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg4cmVtO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXBsYXllciB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgcGFkZGluZzogMTRweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbWVtb3J5LWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIycHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW1lbW9yeS1zb2Z0KTtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1wbGF5ZXIgaDIsXG4gICAgICAubWVtb3J5LXBsYXllciBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LXBsYXllciBwIHtcbiAgICAgICAgY29sb3I6IHZhcigtLW1lbW9yeS1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcGxheWVyIGxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4NTA7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktcGxheWVyIGlucHV0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDUycHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW1lbW9yeS1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMCAxOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogODUwO1xuICAgICAgfVxuXG4gICAgICAubWVtb3J5LWF2YXRhci1saXN0LFxuICAgICAgLm1lbW9yeS1jb2xvci1saXN0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgIH1cblxuICAgICAgLm1lbW9yeS1hdmF0YXItbGlzdCBidXR0b24sXG4gICAgICAubWVtb3J5LWNvbG9yLWxpc3QgYnV0dG9uIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDQ0cHg7XG4gICAgICAgIGhlaWdodDogNDRweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbWVtb3J5LWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1tZW1vcnktcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWVtb3J5LXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDEuMTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktYXZhdGFyLWxpc3QgYnV0dG9uLmlzLXNlbGVjdGVkLFxuICAgICAgLm1lbW9yeS1jb2xvci1saXN0IGJ1dHRvbi5pcy1zZWxlY3RlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tbWVtb3J5LXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDI1NSwgMCwgMTc4KSwgMC4xNCk7XG4gICAgICB9XG5cbiAgICAgIC5tZW1vcnktY29sb3ItbGlzdCBidXR0b24ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wbGF5ZXItY29sb3IpO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIG1lbW9yeS1jb25mZXR0aS1mYWxsIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHJvdGF0ZSgwZGVnKTtcbiAgICAgICAgfVxuICAgICAgICAxOCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTcwcHgpIHJvdGF0ZSgzMDBkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1MjBweCkge1xuICAgICAgICAubWVtb3J5LXNjb3JlIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLm1lbW9yeS1ib2FyZC0tbmluamEge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCg1NHB4LCAxZnIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5tZW1vcnktYWN0aW9ucyxcbiAgICAgICAgLm1lbW9yeS1tZW51LWFjdGlvbnMsXG4gICAgICAgIC5tZW1vcnktcHJvZmlsZXMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVtb3J5R2FtZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGxheWVyUHJvZmlsZXMgPSBpbmplY3QoTWluaUdhbWVQbGF5ZXJQcm9maWxlU2VydmljZSk7XG4gIHJlYWRvbmx5IGF1ZGlvID0gaW5qZWN0KFJldHJvQXVkaW9TZXJ2aWNlKTtcblxuICBASW5wdXQoKSBtaW5pR2FtZXNSb3V0ZSA9ICcvbWluaS1nYW1lcyc7XG5cbiAgcmVhZG9ubHkgcHJvZmlsZXM6IE1lbW9yeUdhbWVQcm9maWxlW10gPSBbJ2tpZCcsICdjbGFzc2ljJywgJ25pbmphJ107XG4gIHJlYWRvbmx5IGNvbmZldHRpUGllY2VzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogMTQgfSwgKF8sIGluZGV4KSA9PiBpbmRleCk7XG5cbiAgcmVhZG9ubHkgcGhhc2UgPSBzaWduYWw8TWVtb3J5R2FtZVBoYXNlPignaG9tZScpO1xuICByZWFkb25seSBwcm9maWxlID0gc2lnbmFsPE1lbW9yeUdhbWVQcm9maWxlPigna2lkJyk7XG4gIHJlYWRvbmx5IGRpZmZpY3VsdHkgPSBzaWduYWw8TWVtb3J5R2FtZURpZmZpY3VsdHk+KCdlYXN5Jyk7XG4gIHJlYWRvbmx5IG1vZGUgPSBzaWduYWw8TWVtb3J5R2FtZU1vZGU+KCdjbGFzc2ljJyk7XG4gIHJlYWRvbmx5IHBsYXlpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBjYXJkcyA9IHNpZ25hbDxNZW1vcnlHYW1lQ2FyZFtdPihbXSk7XG4gIHJlYWRvbmx5IGF0dGVtcHRzID0gc2lnbmFsKDApO1xuICByZWFkb25seSBzdHJlYWsgPSBzaWduYWwoMCk7XG4gIHJlYWRvbmx5IGJlc3RTdHJlYWsgPSBzaWduYWwoMCk7XG4gIHJlYWRvbmx5IGVsYXBzZWQgPSBzaWduYWwoMCk7XG4gIHJlYWRvbmx5IHJlbWFpbmluZyA9IHNpZ25hbCgwKTtcbiAgcmVhZG9ubHkgZmFpbGVkID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbG9ja0JvYXJkID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbGVhZGVyYm9hcmQgPSBzaWduYWw8TWVtb3J5TGVhZGVyYm9hcmRFbnRyeVtdPih0aGlzLnJlYWRMZWFkZXJib2FyZCgpKTtcbiAgcmVhZG9ubHkgY29uZmlybUFjdGlvbiA9IHNpZ25hbDxNZW1vcnlDb25maXJtQWN0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIHByaXZhdGUgdGltZXI/OiBudW1iZXI7XG4gIHByaXZhdGUgZmlyc3RQaWNrPzogTWVtb3J5R2FtZUNhcmQ7XG5cbiAgcmVhZG9ubHkgcHJvZmlsZUNvbmZpZyA9IGNvbXB1dGVkKCgpID0+IFBST0ZJTEVfQ09ORklHW3RoaXMucHJvZmlsZSgpXSk7XG4gIHJlYWRvbmx5IHBhaXJDb3VudCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucHJvZmlsZUNvbmZpZygpLnBhaXJzKTtcbiAgcmVhZG9ubHkgYm9hcmRDbGFzcyA9IGNvbXB1dGVkKCgpID0+IGBtZW1vcnktYm9hcmQgJHt0aGlzLnByb2ZpbGVDb25maWcoKS5ib2FyZENsYXNzfWApO1xuICByZWFkb25seSBwcm9maWxlTGVhZGVyYm9hcmQgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMubGVhZGVyYm9hcmQoKVxuICAgICAgLmZpbHRlcigoZW50cnkpID0+IHRoaXMuZW50cnlQcm9maWxlKGVudHJ5KSA9PT0gdGhpcy5wcm9maWxlKCkpXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5zZWNvbmRzIC0gYi5zZWNvbmRzIHx8IGEuYXR0ZW1wdHMgLSBiLmF0dGVtcHRzKVxuICAgICAgLnNsaWNlKDAsIDUpXG4gICk7XG4gIHJlYWRvbmx5IG1hdGNoZWRQYWlycyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY2FyZHMoKS5maWx0ZXIoKGNhcmQpID0+IGNhcmQubWF0Y2hlZCkubGVuZ3RoIC8gMik7XG4gIHJlYWRvbmx5IHdvbiA9IGNvbXB1dGVkKFxuICAgICgpID0+ICF0aGlzLmZhaWxlZCgpICYmIHRoaXMucGxheWluZygpICYmIHRoaXMuY2FyZHMoKS5sZW5ndGggPiAwICYmIHRoaXMubWF0Y2hlZFBhaXJzKCkgPT09IHRoaXMucGFpckNvdW50KClcbiAgKTtcbiAgcmVhZG9ubHkgcGxheWVyTmFtZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5wbGF5ZXJQcm9maWxlcy5kaXNwbGF5TmFtZSh0aGlzLnBsYXllclByb2ZpbGVzLmFjdGl2ZVByb2ZpbGUoKSwgdGhpcy50KCdkZWZhdWx0UGxheWVyTmFtZScpKVxuICApO1xuICByZWFkb25seSBhY3RpdmVQbGF5ZXJBdmF0YXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnBsYXllclByb2ZpbGVzLmFjdGl2ZVByb2ZpbGUoKT8uYXZhdGFyID8/ICfwn4yfJyk7XG4gIHJlYWRvbmx5IGFjdGl2ZVBsYXllckNvbG9yID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wbGF5ZXJQcm9maWxlcy5hY3RpdmVQcm9maWxlKCk/LmNvbG9yID8/ICcjZmYwMGIyJyk7XG4gIHJlYWRvbmx5IHRpbWVMYWJlbCA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLnByb2ZpbGVDb25maWcoKS50aW1lZFNlY29uZHMgPyAndGltZUxlZnQnIDogJ3RpbWUnKSk7XG4gIHJlYWRvbmx5IGZvcm1hdHRlZFRpbWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc2Vjb25kcyA9IHRoaXMucHJvZmlsZUNvbmZpZygpLnRpbWVkU2Vjb25kcyA/IHRoaXMucmVtYWluaW5nKCkgOiB0aGlzLmVsYXBzZWQoKTtcbiAgICBjb25zdCBtaW4gPSBNYXRoLmZsb29yKHNlY29uZHMgLyA2MCk7XG4gICAgY29uc3Qgc2VjID0gc2Vjb25kcyAlIDYwO1xuICAgIHJldHVybiBgJHttaW59OiR7U3RyaW5nKHNlYykucGFkU3RhcnQoMiwgJzAnKX1gO1xuICB9KTtcbiAgcmVhZG9ubHkgcmVzdWx0TWVkYWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNhbGN1bGF0ZU1lZGFsKHRoaXMuYXR0ZW1wdHMoKSwgdGhpcy5yZXN1bHRTZWNvbmRzKCksIHRoaXMuYmVzdFN0cmVhaygpKSk7XG4gIHJlYWRvbmx5IHJlc3VsdFNlY29uZHMgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMucHJvZmlsZUNvbmZpZygpLnRpbWVkU2Vjb25kcyA/IHRoaXMucHJvZmlsZUNvbmZpZygpLnRpbWVkU2Vjb25kcyAtIHRoaXMucmVtYWluaW5nKCkgOiB0aGlzLmVsYXBzZWQoKVxuICApO1xuICByZWFkb25seSB3aW5Cb2R5ID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnQoJ3dpbkJvZHknKVxuICAgICAgLnJlcGxhY2UoJ3thdHRlbXB0c30nLCBTdHJpbmcodGhpcy5hdHRlbXB0cygpKSlcbiAgICAgIC5yZXBsYWNlKCd7dGltZX0nLCB0aGlzLmZvcm1hdFNlY29uZHModGhpcy5yZXN1bHRTZWNvbmRzKCkpKVxuICAgICAgLnJlcGxhY2UoJ3tzdHJlYWt9JywgU3RyaW5nKHRoaXMuYmVzdFN0cmVhaygpKSlcbiAgKTtcbiAgcmVhZG9ubHkgY29uZmlybVRpdGxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIGlmIChhY3Rpb24gPT09ICdyZXN0YXJ0JykgcmV0dXJuIHRoaXMudCgnY29uZmlybVJlc3RhcnRUaXRsZScpO1xuICAgIGlmIChhY3Rpb24gPT09ICdnYW1lcycpIHJldHVybiB0aGlzLnQoJ2NvbmZpcm1HYW1lc1RpdGxlJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY29uZmlybU1vZGVUaXRsZScpO1xuICB9KTtcbiAgcmVhZG9ubHkgY29uZmlybUJvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc3RhcnQnKSByZXR1cm4gdGhpcy50KCdjb25maXJtUmVzdGFydEJvZHknKTtcbiAgICBpZiAoYWN0aW9uID09PSAnZ2FtZXMnKSByZXR1cm4gdGhpcy50KCdjb25maXJtR2FtZXNCb2R5Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY29uZmlybU1vZGVCb2R5Jyk7XG4gIH0pO1xuICByZWFkb25seSBjb25maXJtQWN0aW9ucyA9IGNvbXB1dGVkPEJ1dHRvbk1ldGFkYXRhW10+KCgpID0+IFtcbiAgICB7XG4gICAgICB0ZXh0OiB0aGlzLnQoJ2NhbmNlbCcpLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIHN0YXRlOiAnRU5BQkxFRCcsXG4gICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgdG9rZW46ICdjYW5jZWwnLFxuICAgIH0sXG4gICAge1xuICAgICAgdGV4dDpcbiAgICAgICAgdGhpcy5jb25maXJtQWN0aW9uKCkgPT09ICdyZXN0YXJ0J1xuICAgICAgICAgID8gdGhpcy50KCdyZXN0YXJ0JylcbiAgICAgICAgICA6IHRoaXMuY29uZmlybUFjdGlvbigpID09PSAnZ2FtZXMnXG4gICAgICAgICAgICA/IHRoaXMudCgnY2hhbmdlR2FtZScpXG4gICAgICAgICAgICA6IHRoaXMudCgnYmFja1RvU2V0dXAnKSxcbiAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgZmlsbDogJ291dGxpbmUnLFxuICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgIHRva2VuOiAnY29uZmlybScsXG4gICAgfSxcbiAgXSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pMThuLnJlZ2lzdGVyRGVmYXVsdHMoJ01pbmlHYW1lcycsIE1JTklfR0FNRVNfSTE4Tik7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLmF1ZGlvLnN0YXJ0TWVudU11c2ljKCkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKSwgMCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BUaW1lcigpO1xuICAgIHRoaXMuYXVkaW8uc3RvcE11c2ljKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCAnTWluaUdhbWVzJyk7XG4gIH1cblxuICBzZWxlY3RQcm9maWxlKHByb2ZpbGU6IE1lbW9yeUdhbWVQcm9maWxlKTogdm9pZCB7XG4gICAgdGhpcy5wcm9maWxlLnNldChwcm9maWxlKTtcbiAgICBpZiAocHJvZmlsZSA9PT0gJ2tpZCcpIHtcbiAgICAgIHRoaXMuZGlmZmljdWx0eS5zZXQoJ2Vhc3knKTtcbiAgICAgIHRoaXMubW9kZS5zZXQoJ3JlbGF4ZWQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHByb2ZpbGUgPT09ICduaW5qYScpIHtcbiAgICAgIHRoaXMuZGlmZmljdWx0eS5zZXQoJ2hhcmQnKTtcbiAgICAgIHRoaXMubW9kZS5zZXQoJ3RpbWVkJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGlmZmljdWx0eS5zZXQoJ21lZGl1bScpO1xuICAgIHRoaXMubW9kZS5zZXQoJ2NsYXNzaWMnKTtcbiAgfVxuXG4gIHN0YXJ0KCk6IHZvaWQge1xuICAgIGNvbnN0IHN5bWJvbHMgPSBTWU1CT0xTLnNsaWNlKDAsIHRoaXMucGFpckNvdW50KCkpO1xuICAgIGNvbnN0IGRlY2sgPSB0aGlzLnNodWZmbGUoWy4uLnN5bWJvbHMsIC4uLnN5bWJvbHNdKS5tYXAoKHN5bWJvbCwgaW5kZXgpID0+ICh7XG4gICAgICBpZDogYCR7c3ltYm9sfS0ke2luZGV4fS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpfWAsXG4gICAgICBzeW1ib2wsXG4gICAgICBtYXRjaGVkOiBmYWxzZSxcbiAgICAgIGZsaXBwZWQ6IGZhbHNlLFxuICAgIH0pKTtcbiAgICB0aGlzLmNhcmRzLnNldChkZWNrKTtcbiAgICB0aGlzLmZpcnN0UGljayA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmF0dGVtcHRzLnNldCgwKTtcbiAgICB0aGlzLnN0cmVhay5zZXQoMCk7XG4gICAgdGhpcy5iZXN0U3RyZWFrLnNldCgwKTtcbiAgICB0aGlzLmVsYXBzZWQuc2V0KDApO1xuICAgIHRoaXMucmVtYWluaW5nLnNldCh0aGlzLnByb2ZpbGVDb25maWcoKS50aW1lZFNlY29uZHMgPz8gMCk7XG4gICAgdGhpcy5mYWlsZWQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmxvY2tCb2FyZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMucGhhc2Uuc2V0KCdwbGF5aW5nJyk7XG4gICAgdGhpcy5wbGF5aW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLnN0YXJ0VGltZXIoKTtcbiAgICB2b2lkIHRoaXMuYXVkaW8uc3RhcnRHYW1lTXVzaWMoKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICB9XG5cbiAgcmVzZXRUb1NldHVwKCk6IHZvaWQge1xuICAgIHRoaXMucGxheWluZy5zZXQoZmFsc2UpO1xuICAgIHRoaXMuY2FyZHMuc2V0KFtdKTtcbiAgICB0aGlzLmZpcnN0UGljayA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmZhaWxlZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMucGhhc2Uuc2V0KCdob21lJyk7XG4gICAgdGhpcy5zdG9wVGltZXIoKTtcbiAgICB2b2lkIHRoaXMuYXVkaW8uc3RhcnRNZW51TXVzaWMoKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICB9XG5cbiAgcmVxdWVzdFJlc3RhcnRHYW1lKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ3Jlc3RhcnQnKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIHJlcXVlc3RDaGFuZ2VNb2RlKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ21vZGUnKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIHJlcXVlc3RDaGFuZ2VHYW1lKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ2dhbWVzJyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICBjbG9zZUNvbmZpcm1Nb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICBjb25maXJtUGVuZGluZ0FjdGlvbih0b2tlbj86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0b2tlbiAhPT0gJ2NvbmZpcm0nKSB7XG4gICAgICB0aGlzLmNsb3NlQ29uZmlybU1vZGFsKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICBpZiAoYWN0aW9uID09PSAncmVzdGFydCcpIHtcbiAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFjdGlvbiA9PT0gJ21vZGUnKSB7XG4gICAgICB0aGlzLnJlc2V0VG9TZXR1cCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAnZ2FtZXMnKSB7XG4gICAgICB0aGlzLnJlc2V0VG9HYW1lc01lbnUoKTtcbiAgICB9XG4gIH1cblxuICBmbGlwKGNhcmQ6IE1lbW9yeUdhbWVDYXJkKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubG9ja0JvYXJkKCkgfHwgY2FyZC5mbGlwcGVkIHx8IGNhcmQubWF0Y2hlZCB8fCB0aGlzLndvbigpIHx8IHRoaXMuZmFpbGVkKCkpIHJldHVybjtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICB0aGlzLmNhcmRzLnVwZGF0ZSgoY2FyZHMpID0+IGNhcmRzLm1hcCgoaXRlbSkgPT4gKGl0ZW0uaWQgPT09IGNhcmQuaWQgPyB7IC4uLml0ZW0sIGZsaXBwZWQ6IHRydWUgfSA6IGl0ZW0pKSk7XG4gICAgY29uc3QgdXBkYXRlZCA9IHRoaXMuY2FyZHMoKS5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBjYXJkLmlkKTtcbiAgICBpZiAoIXVwZGF0ZWQpIHJldHVybjtcbiAgICBpZiAoIXRoaXMuZmlyc3RQaWNrKSB7XG4gICAgICB0aGlzLmZpcnN0UGljayA9IHVwZGF0ZWQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hdHRlbXB0cy51cGRhdGUoKHZhbHVlKSA9PiB2YWx1ZSArIDEpO1xuICAgIGNvbnN0IGZpcnN0ID0gdGhpcy5maXJzdFBpY2s7XG4gICAgdGhpcy5maXJzdFBpY2sgPSB1bmRlZmluZWQ7XG4gICAgaWYgKGZpcnN0LnN5bWJvbCA9PT0gdXBkYXRlZC5zeW1ib2wpIHtcbiAgICAgIHRoaXMuc3RyZWFrLnVwZGF0ZSgodmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dCA9IHZhbHVlICsgMTtcbiAgICAgICAgdGhpcy5iZXN0U3RyZWFrLnVwZGF0ZSgoYmVzdCkgPT4gTWF0aC5tYXgoYmVzdCwgbmV4dCkpO1xuICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jYXJkcy51cGRhdGUoKGNhcmRzKSA9PlxuICAgICAgICBjYXJkcy5tYXAoKGl0ZW0pID0+IChpdGVtLmlkID09PSBmaXJzdC5pZCB8fCBpdGVtLmlkID09PSB1cGRhdGVkLmlkID8geyAuLi5pdGVtLCBtYXRjaGVkOiB0cnVlIH0gOiBpdGVtKSlcbiAgICAgICk7XG4gICAgICB0aGlzLmF1ZGlvLm1hdGNoKCk7XG4gICAgICBpZiAodGhpcy5jYXJkcygpLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5tYXRjaGVkKS5sZW5ndGggPT09IHRoaXMuY2FyZHMoKS5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5zdG9wVGltZXIoKTtcbiAgICAgICAgdGhpcy5waGFzZS5zZXQoJ3dvbicpO1xuICAgICAgICB0aGlzLnNhdmVTY29yZSgpO1xuICAgICAgICB0aGlzLmF1ZGlvLndpbigpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9ja0JvYXJkLnNldCh0cnVlKTtcbiAgICB0aGlzLnN0cmVhay5zZXQoMCk7XG4gICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jYXJkcy51cGRhdGUoKGNhcmRzKSA9PlxuICAgICAgICBjYXJkcy5tYXAoKGl0ZW0pID0+IChpdGVtLmlkID09PSBmaXJzdC5pZCB8fCBpdGVtLmlkID09PSB1cGRhdGVkLmlkID8geyAuLi5pdGVtLCBmbGlwcGVkOiBmYWxzZSB9IDogaXRlbSkpXG4gICAgICApO1xuICAgICAgdGhpcy5sb2NrQm9hcmQuc2V0KGZhbHNlKTtcbiAgICB9LCB0aGlzLnByb2ZpbGVDb25maWcoKS5taXNtYXRjaERlbGF5KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRUaW1lcigpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BUaW1lcigpO1xuICAgIHRoaXMudGltZXIgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLnByb2ZpbGVDb25maWcoKS50aW1lZFNlY29uZHMpIHtcbiAgICAgICAgdGhpcy5lbGFwc2VkLnVwZGF0ZSgodmFsdWUpID0+IHZhbHVlICsgMSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVtYWluaW5nLnVwZGF0ZSgodmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dCA9IE1hdGgubWF4KDAsIHZhbHVlIC0gMSk7XG4gICAgICAgIGlmIChuZXh0ID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5mYWlsZWQuc2V0KHRydWUpO1xuICAgICAgICAgIHRoaXMucGhhc2Uuc2V0KCdsb3N0Jyk7XG4gICAgICAgICAgdGhpcy5zdG9wVGltZXIoKTtcbiAgICAgICAgICB0aGlzLmF1ZGlvLmxvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgIH0pO1xuICAgIH0sIDEwMDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9wVGltZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudGltZXIpIHtcbiAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKHRoaXMudGltZXIpO1xuICAgICAgdGhpcy50aW1lciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc2V0VG9HYW1lc01lbnUoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldFRvU2V0dXAoKTtcbiAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5taW5pR2FtZXNCYXNlUm91dGUoKSkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgbWluaUdhbWVzQmFzZVJvdXRlKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgcm91dGUgPSAodGhpcy5taW5pR2FtZXNSb3V0ZSB8fCAnL21pbmktZ2FtZXMnKS50cmltKCk7XG4gICAgcmV0dXJuIGAvJHtyb3V0ZS5yZXBsYWNlKC9eXFwvK3xcXC8rJC9nLCAnJykgfHwgJ21pbmktZ2FtZXMnfWA7XG4gIH1cblxuICBwcml2YXRlIHNodWZmbGU8VD4oaXRlbXM6IFRbXSk6IFRbXSB7XG4gICAgY29uc3QgY29weSA9IFsuLi5pdGVtc107XG4gICAgZm9yIChsZXQgaSA9IGNvcHkubGVuZ3RoIC0gMTsgaSA+IDA7IGkgLT0gMSkge1xuICAgICAgY29uc3QgaiA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChpICsgMSkpO1xuICAgICAgW2NvcHlbaV0sIGNvcHlbal1dID0gW2NvcHlbal0sIGNvcHlbaV1dO1xuICAgIH1cbiAgICByZXR1cm4gY29weTtcbiAgfVxuXG4gIHByb3RlY3RlZCBsZWFkZXJib2FyZExpbmUoZW50cnk6IE1lbW9yeUxlYWRlcmJvYXJkRW50cnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1vdmVzID0gdGhpcy50KCdsZWFkZXJib2FyZE1vdmVzJykucmVwbGFjZSgne21vdmVzfScsIFN0cmluZyhlbnRyeS5hdHRlbXB0cykpO1xuICAgIGNvbnN0IHRpbWUgPSB0aGlzLnQoJ2xlYWRlcmJvYXJkVGltZScpLnJlcGxhY2UoJ3t0aW1lfScsIHRoaXMuZm9ybWF0U2Vjb25kcyhlbnRyeS5zZWNvbmRzKSk7XG4gICAgcmV0dXJuIGAke21vdmVzfSDCtyAke3RpbWV9YDtcbiAgfVxuXG4gIHByb3RlY3RlZCBsZWFkZXJib2FyZFRpdGxlKGVudHJ5OiBNZW1vcnlMZWFkZXJib2FyZEVudHJ5KTogc3RyaW5nIHtcbiAgICBjb25zdCBuYW1lID0gZW50cnkucGxheWVyTmFtZSB8fCB0aGlzLnQoJ2RlZmF1bHRQbGF5ZXJOYW1lJyk7XG4gICAgaWYgKGVudHJ5LnByb2ZpbGUpIHJldHVybiBgJHtlbnRyeS5wbGF5ZXJBdmF0YXIgfHwgJ+KtkCd9ICR7bmFtZX0gwrcgJHt0aGlzLnQoZW50cnkucHJvZmlsZSl9YDtcbiAgICByZXR1cm4gYCR7dGhpcy50KGVudHJ5LmRpZmZpY3VsdHkpfSDCtyAke3RoaXMudChlbnRyeS5tb2RlKX1gO1xuICB9XG5cbiAgcHJvdGVjdGVkIGxlYWRlcmJvYXJkSGVhZGluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoJ2xlYWRlcmJvYXJkUHJvZmlsZVRpdGxlJykucmVwbGFjZSgne3Byb2ZpbGV9JywgdGhpcy50KHRoaXMucHJvZmlsZSgpKSk7XG4gIH1cblxuICBwcml2YXRlIHNhdmVTY29yZSgpOiB2b2lkIHtcbiAgICBjb25zdCBtZWRhbCA9IHRoaXMuY2FsY3VsYXRlTWVkYWwodGhpcy5hdHRlbXB0cygpLCB0aGlzLnJlc3VsdFNlY29uZHMoKSwgdGhpcy5iZXN0U3RyZWFrKCkpO1xuICAgIGNvbnN0IGVudHJ5OiBNZW1vcnlMZWFkZXJib2FyZEVudHJ5ID0ge1xuICAgICAgaWQ6IGAke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMil9YCxcbiAgICAgIHByb2ZpbGU6IHRoaXMucHJvZmlsZSgpLFxuICAgICAgcGxheWVyTmFtZTogdGhpcy5wbGF5ZXJOYW1lKCksXG4gICAgICBwbGF5ZXJBdmF0YXI6IHRoaXMuYWN0aXZlUGxheWVyQXZhdGFyKCksXG4gICAgICBtZWRhbCxcbiAgICAgIGRpZmZpY3VsdHk6IHRoaXMuZGlmZmljdWx0eSgpLFxuICAgICAgbW9kZTogdGhpcy5tb2RlKCksXG4gICAgICBhdHRlbXB0czogdGhpcy5hdHRlbXB0cygpLFxuICAgICAgc2Vjb25kczogdGhpcy5yZXN1bHRTZWNvbmRzKCksXG4gICAgICBjb21wbGV0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH07XG4gICAgY29uc3QgbmV4dCA9IHRoaXMubGltaXRMZWFkZXJib2FyZChbLi4udGhpcy5sZWFkZXJib2FyZCgpLCBlbnRyeV0pO1xuICAgIHRoaXMubGVhZGVyYm9hcmQuc2V0KG5leHQpO1xuICAgIHRyeSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMRUFERVJCT0FSRF9LRVksIEpTT04uc3RyaW5naWZ5KG5leHQpKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIGxvY2FsU3RvcmFnZSBwdWVkZSBubyBlc3RhciBkaXNwb25pYmxlIGVuIFNTUi90ZXN0cy5cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlYWRMZWFkZXJib2FyZCgpOiBNZW1vcnlMZWFkZXJib2FyZEVudHJ5W10ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByYXcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMRUFERVJCT0FSRF9LRVkpO1xuICAgICAgaWYgKCFyYXcpIHJldHVybiBbXTtcbiAgICAgIGNvbnN0IGVudHJpZXMgPSBKU09OLnBhcnNlKHJhdykgYXMgTWVtb3J5TGVhZGVyYm9hcmRFbnRyeVtdO1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGVudHJpZXMpKSByZXR1cm4gW107XG4gICAgICByZXR1cm4gdGhpcy5saW1pdExlYWRlcmJvYXJkKFxuICAgICAgICBlbnRyaWVzLmZpbHRlcigoZW50cnkpID0+IGVudHJ5Py5kaWZmaWN1bHR5ICYmIGVudHJ5Py5tb2RlICYmIE51bWJlci5pc0Zpbml0ZShlbnRyeT8uYXR0ZW1wdHMpKVxuICAgICAgKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxpbWl0TGVhZGVyYm9hcmQoZW50cmllczogTWVtb3J5TGVhZGVyYm9hcmRFbnRyeVtdKTogTWVtb3J5TGVhZGVyYm9hcmRFbnRyeVtdIHtcbiAgICByZXR1cm4gdGhpcy5wcm9maWxlcy5mbGF0TWFwKChwcm9maWxlKSA9PlxuICAgICAgZW50cmllc1xuICAgICAgICAuZmlsdGVyKChlbnRyeSkgPT4gdGhpcy5lbnRyeVByb2ZpbGUoZW50cnkpID09PSBwcm9maWxlKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5zZWNvbmRzIC0gYi5zZWNvbmRzIHx8IGEuYXR0ZW1wdHMgLSBiLmF0dGVtcHRzKVxuICAgICAgICAuc2xpY2UoMCwgNSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBlbnRyeVByb2ZpbGUoZW50cnk6IE1lbW9yeUxlYWRlcmJvYXJkRW50cnkpOiBNZW1vcnlHYW1lUHJvZmlsZSB7XG4gICAgaWYgKGVudHJ5LnByb2ZpbGUpIHJldHVybiBlbnRyeS5wcm9maWxlO1xuICAgIGlmIChlbnRyeS5tb2RlID09PSAndGltZWQnIHx8IGVudHJ5LmRpZmZpY3VsdHkgPT09ICdoYXJkJykgcmV0dXJuICduaW5qYSc7XG4gICAgaWYgKGVudHJ5Lm1vZGUgPT09ICdyZWxheGVkJyB8fCBlbnRyeS5kaWZmaWN1bHR5ID09PSAnZWFzeScpIHJldHVybiAna2lkJztcbiAgICByZXR1cm4gJ2NsYXNzaWMnO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVNZWRhbChhdHRlbXB0czogbnVtYmVyLCBzZWNvbmRzOiBudW1iZXIsIGJlc3RTdHJlYWs6IG51bWJlcik6IE1lbW9yeU1lZGFsIHtcbiAgICBjb25zdCBwYWlycyA9IHRoaXMucGFpckNvdW50KCk7XG4gICAgY29uc3QgcGVyZmVjdGlzaCA9IGF0dGVtcHRzIDw9IHBhaXJzICsgTWF0aC5jZWlsKHBhaXJzICogMC4zNSk7XG4gICAgY29uc3Qgc29saWQgPSBhdHRlbXB0cyA8PSBwYWlycyAqIDI7XG4gICAgY29uc3QgZmFzdCA9ICF0aGlzLnByb2ZpbGVDb25maWcoKS50aW1lZFNlY29uZHMgfHwgc2Vjb25kcyA8PSBNYXRoLm1heCgzMCwgcGFpcnMgKiA4KTtcbiAgICBpZiAocGVyZmVjdGlzaCAmJiBmYXN0ICYmIGJlc3RTdHJlYWsgPj0gTWF0aC5jZWlsKHBhaXJzICogMC40NSkpIHJldHVybiAnZ29sZCc7XG4gICAgaWYgKHNvbGlkICYmIGJlc3RTdHJlYWsgPj0gTWF0aC5jZWlsKHBhaXJzICogMC4yNSkpIHJldHVybiAnc2lsdmVyJztcbiAgICBpZiAoc29saWQpIHJldHVybiAnYnJvbnplJztcbiAgICByZXR1cm4gJ3NwYXJrJztcbiAgfVxuXG4gIHByb3RlY3RlZCBtZWRhbEljb24obWVkYWw6IE1lbW9yeU1lZGFsKTogc3RyaW5nIHtcbiAgICBpZiAobWVkYWwgPT09ICdnb2xkJykgcmV0dXJuICfwn6WHJztcbiAgICBpZiAobWVkYWwgPT09ICdzaWx2ZXInKSByZXR1cm4gJ/CfpYgnO1xuICAgIGlmIChtZWRhbCA9PT0gJ2Jyb256ZScpIHJldHVybiAn8J+liSc7XG4gICAgcmV0dXJuICfinKgnO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRTZWNvbmRzKHNlY29uZHM6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgbWluID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gNjApO1xuICAgIGNvbnN0IHNlYyA9IHNlY29uZHMgJSA2MDtcbiAgICByZXR1cm4gYCR7bWlufToke1N0cmluZyhzZWMpLnBhZFN0YXJ0KDIsICcwJyl9YDtcbiAgfVxufVxuIl19