valtech-components 4.0.587 → 4.0.591

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.
@@ -56,6 +56,9 @@ export class ChessimalsAdventureComponent {
56
56
  t(key) {
57
57
  return this.i18n.t(key, 'MiniGames');
58
58
  }
59
+ avatarSrc(profileId) {
60
+ return `assets/games/chessimals/challenge-avatars/${profileId}.png`;
61
+ }
59
62
  nodeIcon(type) {
60
63
  switch (type) {
61
64
  case 'battle':
@@ -160,7 +163,16 @@ export class ChessimalsAdventureComponent {
160
163
  (click)="onNodeTap(nodeView)"
161
164
  type="button"
162
165
  >
163
- <span class="adventure-node__icon">{{ nodeIcon(nodeView.node.type) }}</span>
166
+ @if (nodeView.node.profileId) {
167
+ <img
168
+ class="adventure-node__avatar"
169
+ [src]="avatarSrc(nodeView.node.profileId)"
170
+ [alt]="t(nodeView.node.titleKey)"
171
+ loading="lazy"
172
+ />
173
+ } @else {
174
+ <span class="adventure-node__icon">{{ nodeIcon(nodeView.node.type) }}</span>
175
+ }
164
176
  <span class="adventure-node__label">{{ t(nodeView.node.titleKey) }}</span>
165
177
  <span class="adventure-node__stars">
166
178
  @for (i of [0, 1, 2]; track i) {
@@ -184,7 +196,7 @@ export class ChessimalsAdventureComponent {
184
196
  }
185
197
  </div>
186
198
  </div>
187
- `, isInline: true, styles: [".adventure-hub{padding:0 0 40px}.adventure-hub__header{padding:20px 16px 24px;text-align:center}.adventure-hub__eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ion-color-medium);margin:0 0 6px}.adventure-hub__title{font-size:1.75rem;font-weight:800;margin:0 0 6px;color:var(--ion-text-color)}.adventure-hub__subtitle{font-size:.9rem;color:var(--ion-color-medium);margin:0 0 12px}.adventure-hub__stars{display:inline-flex;align-items:center;gap:4px;background:var(--ion-card-background, var(--ion-background-color));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));border-radius:20px;padding:4px 14px;font-weight:700;font-size:.95rem;color:var(--ion-color-warning)}.adventure-hub__stars ion-icon{color:var(--ion-color-warning);font-size:1rem}.adventure-hub__acts{display:flex;flex-direction:column;gap:16px;padding:0 12px}.adventure-act{border-radius:16px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color));overflow:hidden}.adventure-act--locked{opacity:.5}.adventure-act--done{border-color:var(--ion-color-success)}.adventure-act__head{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--ion-border-color, rgba(0, 0, 0, .08))}.adventure-act__emoji{font-size:1.75rem;line-height:1;flex-shrink:0}.adventure-act__meta{flex:1;min-width:0}.adventure-act__name{font-size:1rem;font-weight:700;margin:0 0 2px;color:var(--ion-text-color)}.adventure-act__desc{font-size:.8rem;color:var(--ion-color-medium);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.adventure-act__lock{color:var(--ion-color-medium);font-size:1.25rem;flex-shrink:0}.adventure-act__progress{font-size:.8rem;font-weight:700;color:var(--ion-color-medium);flex-shrink:0}.adventure-act__nodes{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;padding:12px}.adventure-node{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 8px;border-radius:12px;border:1.5px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-background-color, #f8f8f8);cursor:pointer;text-align:center;transition:transform .12s ease,border-color .12s ease}.adventure-node:active{transform:scale(.97)}.adventure-node--available{border-color:var(--ion-color-primary);background:color-mix(in srgb,var(--ion-color-primary) 6%,transparent)}.adventure-node--completed{border-color:var(--ion-color-success);background:color-mix(in srgb,var(--ion-color-success) 6%,transparent)}.adventure-node--locked{opacity:.4;cursor:default}.adventure-node__icon{font-size:1.5rem;line-height:1}.adventure-node__label{font-size:.75rem;font-weight:600;color:var(--ion-text-color);line-height:1.2}.adventure-node__stars{display:flex;gap:1px}.adventure-node__star{font-size:.7rem;color:var(--ion-color-medium)}.adventure-node__star--filled{color:var(--ion-color-warning)}.adventure-node__badge{position:absolute;top:-4px;right:-4px;font-size:.6rem;padding:2px 5px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }] }); }
199
+ `, isInline: true, styles: [".adventure-hub{padding:0 0 40px}.adventure-hub__header{padding:20px 16px 24px;text-align:center}.adventure-hub__eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ion-color-medium);margin:0 0 6px}.adventure-hub__title{font-size:1.75rem;font-weight:800;margin:0 0 6px;color:var(--ion-text-color)}.adventure-hub__subtitle{font-size:.9rem;color:var(--ion-color-medium);margin:0 0 12px}.adventure-hub__stars{display:inline-flex;align-items:center;gap:4px;background:var(--ion-card-background, var(--ion-background-color));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));border-radius:20px;padding:4px 14px;font-weight:700;font-size:.95rem;color:var(--ion-color-warning)}.adventure-hub__stars ion-icon{color:var(--ion-color-warning);font-size:1rem}.adventure-hub__acts{display:flex;flex-direction:column;gap:16px;padding:0 12px}.adventure-act{border-radius:16px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color));overflow:hidden}.adventure-act--locked{opacity:.5}.adventure-act--done{border-color:var(--ion-color-success)}.adventure-act__head{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--ion-border-color, rgba(0, 0, 0, .08))}.adventure-act__emoji{font-size:1.75rem;line-height:1;flex-shrink:0}.adventure-act__meta{flex:1;min-width:0}.adventure-act__name{font-size:1rem;font-weight:700;margin:0 0 2px;color:var(--ion-text-color)}.adventure-act__desc{font-size:.8rem;color:var(--ion-color-medium);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.adventure-act__lock{color:var(--ion-color-medium);font-size:1.25rem;flex-shrink:0}.adventure-act__progress{font-size:.8rem;font-weight:700;color:var(--ion-color-medium);flex-shrink:0}.adventure-act__nodes{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;padding:12px}.adventure-node{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 8px;border-radius:12px;border:1.5px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-background-color, #f8f8f8);cursor:pointer;text-align:center;transition:transform .12s ease,border-color .12s ease}.adventure-node:active{transform:scale(.97)}.adventure-node--available{border-color:var(--ion-color-primary);background:color-mix(in srgb,var(--ion-color-primary) 6%,transparent)}.adventure-node--completed{border-color:var(--ion-color-success);background:color-mix(in srgb,var(--ion-color-success) 6%,transparent)}.adventure-node--locked{opacity:.4;cursor:default}.adventure-node__avatar{width:48px;height:48px;border-radius:50%;object-fit:cover;border:2px solid var(--ion-border-color, rgba(0, 0, 0, .1))}.adventure-node--available .adventure-node__avatar{border-color:var(--ion-color-primary)}.adventure-node--completed .adventure-node__avatar{border-color:var(--ion-color-success)}.adventure-node__icon{font-size:1.5rem;line-height:1}.adventure-node__label{font-size:.75rem;font-weight:600;color:var(--ion-text-color);line-height:1.2}.adventure-node__stars{display:flex;gap:1px}.adventure-node__star{font-size:.7rem;color:var(--ion-color-medium)}.adventure-node__star--filled{color:var(--ion-color-warning)}.adventure-node__badge{position:absolute;top:-4px;right:-4px;font-size:.6rem;padding:2px 5px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }] }); }
188
200
  }
189
201
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChessimalsAdventureComponent, decorators: [{
190
202
  type: Component,
@@ -236,7 +248,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
236
248
  (click)="onNodeTap(nodeView)"
237
249
  type="button"
238
250
  >
239
- <span class="adventure-node__icon">{{ nodeIcon(nodeView.node.type) }}</span>
251
+ @if (nodeView.node.profileId) {
252
+ <img
253
+ class="adventure-node__avatar"
254
+ [src]="avatarSrc(nodeView.node.profileId)"
255
+ [alt]="t(nodeView.node.titleKey)"
256
+ loading="lazy"
257
+ />
258
+ } @else {
259
+ <span class="adventure-node__icon">{{ nodeIcon(nodeView.node.type) }}</span>
260
+ }
240
261
  <span class="adventure-node__label">{{ t(nodeView.node.titleKey) }}</span>
241
262
  <span class="adventure-node__stars">
242
263
  @for (i of [0, 1, 2]; track i) {
@@ -260,6 +281,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
260
281
  }
261
282
  </div>
262
283
  </div>
263
- `, styles: [".adventure-hub{padding:0 0 40px}.adventure-hub__header{padding:20px 16px 24px;text-align:center}.adventure-hub__eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ion-color-medium);margin:0 0 6px}.adventure-hub__title{font-size:1.75rem;font-weight:800;margin:0 0 6px;color:var(--ion-text-color)}.adventure-hub__subtitle{font-size:.9rem;color:var(--ion-color-medium);margin:0 0 12px}.adventure-hub__stars{display:inline-flex;align-items:center;gap:4px;background:var(--ion-card-background, var(--ion-background-color));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));border-radius:20px;padding:4px 14px;font-weight:700;font-size:.95rem;color:var(--ion-color-warning)}.adventure-hub__stars ion-icon{color:var(--ion-color-warning);font-size:1rem}.adventure-hub__acts{display:flex;flex-direction:column;gap:16px;padding:0 12px}.adventure-act{border-radius:16px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color));overflow:hidden}.adventure-act--locked{opacity:.5}.adventure-act--done{border-color:var(--ion-color-success)}.adventure-act__head{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--ion-border-color, rgba(0, 0, 0, .08))}.adventure-act__emoji{font-size:1.75rem;line-height:1;flex-shrink:0}.adventure-act__meta{flex:1;min-width:0}.adventure-act__name{font-size:1rem;font-weight:700;margin:0 0 2px;color:var(--ion-text-color)}.adventure-act__desc{font-size:.8rem;color:var(--ion-color-medium);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.adventure-act__lock{color:var(--ion-color-medium);font-size:1.25rem;flex-shrink:0}.adventure-act__progress{font-size:.8rem;font-weight:700;color:var(--ion-color-medium);flex-shrink:0}.adventure-act__nodes{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;padding:12px}.adventure-node{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 8px;border-radius:12px;border:1.5px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-background-color, #f8f8f8);cursor:pointer;text-align:center;transition:transform .12s ease,border-color .12s ease}.adventure-node:active{transform:scale(.97)}.adventure-node--available{border-color:var(--ion-color-primary);background:color-mix(in srgb,var(--ion-color-primary) 6%,transparent)}.adventure-node--completed{border-color:var(--ion-color-success);background:color-mix(in srgb,var(--ion-color-success) 6%,transparent)}.adventure-node--locked{opacity:.4;cursor:default}.adventure-node__icon{font-size:1.5rem;line-height:1}.adventure-node__label{font-size:.75rem;font-weight:600;color:var(--ion-text-color);line-height:1.2}.adventure-node__stars{display:flex;gap:1px}.adventure-node__star{font-size:.7rem;color:var(--ion-color-medium)}.adventure-node__star--filled{color:var(--ion-color-warning)}.adventure-node__badge{position:absolute;top:-4px;right:-4px;font-size:.6rem;padding:2px 5px}\n"] }]
284
+ `, styles: [".adventure-hub{padding:0 0 40px}.adventure-hub__header{padding:20px 16px 24px;text-align:center}.adventure-hub__eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ion-color-medium);margin:0 0 6px}.adventure-hub__title{font-size:1.75rem;font-weight:800;margin:0 0 6px;color:var(--ion-text-color)}.adventure-hub__subtitle{font-size:.9rem;color:var(--ion-color-medium);margin:0 0 12px}.adventure-hub__stars{display:inline-flex;align-items:center;gap:4px;background:var(--ion-card-background, var(--ion-background-color));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));border-radius:20px;padding:4px 14px;font-weight:700;font-size:.95rem;color:var(--ion-color-warning)}.adventure-hub__stars ion-icon{color:var(--ion-color-warning);font-size:1rem}.adventure-hub__acts{display:flex;flex-direction:column;gap:16px;padding:0 12px}.adventure-act{border-radius:16px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color));overflow:hidden}.adventure-act--locked{opacity:.5}.adventure-act--done{border-color:var(--ion-color-success)}.adventure-act__head{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--ion-border-color, rgba(0, 0, 0, .08))}.adventure-act__emoji{font-size:1.75rem;line-height:1;flex-shrink:0}.adventure-act__meta{flex:1;min-width:0}.adventure-act__name{font-size:1rem;font-weight:700;margin:0 0 2px;color:var(--ion-text-color)}.adventure-act__desc{font-size:.8rem;color:var(--ion-color-medium);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.adventure-act__lock{color:var(--ion-color-medium);font-size:1.25rem;flex-shrink:0}.adventure-act__progress{font-size:.8rem;font-weight:700;color:var(--ion-color-medium);flex-shrink:0}.adventure-act__nodes{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;padding:12px}.adventure-node{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 8px;border-radius:12px;border:1.5px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-background-color, #f8f8f8);cursor:pointer;text-align:center;transition:transform .12s ease,border-color .12s ease}.adventure-node:active{transform:scale(.97)}.adventure-node--available{border-color:var(--ion-color-primary);background:color-mix(in srgb,var(--ion-color-primary) 6%,transparent)}.adventure-node--completed{border-color:var(--ion-color-success);background:color-mix(in srgb,var(--ion-color-success) 6%,transparent)}.adventure-node--locked{opacity:.4;cursor:default}.adventure-node__avatar{width:48px;height:48px;border-radius:50%;object-fit:cover;border:2px solid var(--ion-border-color, rgba(0, 0, 0, .1))}.adventure-node--available .adventure-node__avatar{border-color:var(--ion-color-primary)}.adventure-node--completed .adventure-node__avatar{border-color:var(--ion-color-success)}.adventure-node__icon{font-size:1.5rem;line-height:1}.adventure-node__label{font-size:.75rem;font-weight:600;color:var(--ion-text-color);line-height:1.2}.adventure-node__stars{display:flex;gap:1px}.adventure-node__star{font-size:.7rem;color:var(--ion-color-medium)}.adventure-node__star--filled{color:var(--ion-color-warning)}.adventure-node__badge{position:absolute;top:-4px;right:-4px;font-size:.6rem;padding:2px 5px}\n"] }]
264
285
  }], ctorParameters: () => [] });
265
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlc3NpbWFscy1hZHZlbnR1cmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9taW5pLWdhbWVzL2NoZXNzaW1hbHMtYWR2ZW50dXJlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXRELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsc0JBQXNCLEVBQ3RCLHdCQUF3QixHQUN6QixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOztBQXNCN0YsTUFBTSxvQkFBb0IsR0FBRyx3QkFBd0IsQ0FBQztBQXVSdEQsTUFBTSxPQUFPLDRCQUE0QjtJQXlDdkM7UUF4Q2lCLFNBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0IsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixvQkFBZSxHQUFHLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FB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LDRCQUE0QjtrQkFyUnhDLFNBQVM7K0JBQ0UsMEJBQTBCLGNBQ3hCLElBQUksV0FDUCxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxZQUN0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0VUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElvbkJhZGdlLCBJb25CdXR0b24sIElvbkljb24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBNSU5JX0dBTUVTX0kxOE4gfSBmcm9tICcuL21pbmktZ2FtZXMuaTE4bic7XG5pbXBvcnQge1xuICBDSEVTU0lNQUxTX0FEVkVOVFVSRV9BQ1RTLFxuICBhZHZlbnR1cmVBY3RJc1VubG9ja2VkLFxuICBhZHZlbnR1cmVOb2RlSXNBdmFpbGFibGUsXG59IGZyb20gJy4vY2hlc3NpbWFscy1hZHZlbnR1cmUtZGF0YSc7XG5pbXBvcnQgeyBDaGVzc2ltYWxzQWR2ZW50dXJlUHJvZ3Jlc3NTZXJ2aWNlIH0gZnJvbSAnLi9jaGVzc2ltYWxzLWFkdmVudHVyZS1wcm9ncmVzcy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIENoZXNzaW1hbHNBZHZlbnR1cmVBY3QsXG4gIENoZXNzaW1hbHNBZHZlbnR1cmVOb2RlLFxuICBDaGVzc2ltYWxzQWR2ZW50dXJlTm9kZVN0YXR1cyxcbiAgQ2hlc3NpbWFsc0FkdmVudHVyZVByb2dyZXNzLFxufSBmcm9tICcuL3R5cGVzJztcblxuaW50ZXJmYWNlIEFkdmVudHVyZU5vZGVWaWV3IHtcbiAgbm9kZTogQ2hlc3NpbWFsc0FkdmVudHVyZU5vZGU7XG4gIHN0YXR1czogQ2hlc3NpbWFsc0FkdmVudHVyZU5vZGVTdGF0dXM7XG4gIHN0YXJzOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBBZHZlbnR1cmVBY3RWaWV3IHtcbiAgYWN0OiBDaGVzc2ltYWxzQWR2ZW50dXJlQWN0O1xuICB1bmxvY2tlZDogYm9vbGVhbjtcbiAgbm9kZXM6IEFkdmVudHVyZU5vZGVWaWV3W107XG4gIGNvbXBsZXRlZENvdW50OiBudW1iZXI7XG4gIHRvdGFsQ291bnQ6IG51bWJlcjtcbn1cblxuY29uc3QgQURWRU5UVVJFX1JPVVRFX0JBU0UgPSAnL21pbmktZ2FtZXMvY2hlc3NpbWFscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1jaGVzc2ltYWxzLWFkdmVudHVyZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ0NsYXNzLCBJb25CdXR0b24sIElvbkljb24sIElvbkJhZGdlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiYWR2ZW50dXJlLWh1YlwiPlxuICAgICAgPGhlYWRlciBjbGFzcz1cImFkdmVudHVyZS1odWJfX2hlYWRlclwiPlxuICAgICAgICA8cCBjbGFzcz1cImFkdmVudHVyZS1odWJfX2V5ZWJyb3dcIj57eyB0KCdjaGVzc2ltYWxzQWR2ZW50dXJlRXllYnJvdycpIH19PC9wPlxuICAgICAgICA8aDEgY2xhc3M9XCJhZHZlbnR1cmUtaHViX190aXRsZVwiPnt7IHQoJ2NoZXNzaW1hbHNBZHZlbnR1cmVUaXRsZScpIH19PC9oMT5cbiAgICAgICAgPHAgY2xhc3M9XCJhZHZlbnR1cmUtaHViX19zdWJ0aXRsZVwiPnt7IHQoJ2NoZXNzaW1hbHNBZHZlbnR1cmVTdWJ0aXRsZScpIH19PC9wPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWR2ZW50dXJlLWh1Yl9fc3RhcnNcIj5cbiAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInN0YXJcIiAvPlxuICAgICAgICAgIDxzcGFuPnt7IHRvdGFsU3RhcnMoKSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2hlYWRlcj5cblxuICAgICAgPGRpdiBjbGFzcz1cImFkdmVudHVyZS1odWJfX2FjdHNcIj5cbiAgICAgICAgQGZvciAoYWN0VmlldyBvZiBhY3RWaWV3cygpOyB0cmFjayBhY3RWaWV3LmFjdC5pZCkge1xuICAgICAgICAgIDxzZWN0aW9uXG4gICAgICAgICAgICBjbGFzcz1cImFkdmVudHVyZS1hY3RcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnYWR2ZW50dXJlLWFjdC0tbG9ja2VkJzogIWFjdFZpZXcudW5sb2NrZWQsXG4gICAgICAgICAgICAgICdhZHZlbnR1cmUtYWN0LS1kb25lJzogYWN0Vmlldy5jb21wbGV0ZWRDb3VudCA9PT0gYWN0Vmlldy50b3RhbENvdW50ICYmIGFjdFZpZXcudW5sb2NrZWQsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWR2ZW50dXJlLWFjdF9faGVhZFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkdmVudHVyZS1hY3RfX2Vtb2ppXCI+e3sgYWN0Vmlldy5hY3QuZW1vamkgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZHZlbnR1cmUtYWN0X19tZXRhXCI+XG4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwiYWR2ZW50dXJlLWFjdF9fbmFtZVwiPnt7IHQoYWN0Vmlldy5hY3QudGl0bGVLZXkpIH19PC9oMj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImFkdmVudHVyZS1hY3RfX2Rlc2NcIj57eyB0KGFjdFZpZXcuYWN0LmRlc2NyaXB0aW9uS2V5KSB9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIEBpZiAoIWFjdFZpZXcudW5sb2NrZWQpIHtcbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImxvY2stY2xvc2VkLW91dGxpbmVcIiBjbGFzcz1cImFkdmVudHVyZS1hY3RfX2xvY2tcIiAvPlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkdmVudHVyZS1hY3RfX3Byb2dyZXNzXCI+IHt7IGFjdFZpZXcuY29tcGxldGVkQ291bnQgfX0ve3sgYWN0Vmlldy50b3RhbENvdW50IH19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIEBpZiAoYWN0Vmlldy51bmxvY2tlZCkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWR2ZW50dXJlLWFjdF9fbm9kZXNcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChub2RlVmlldyBvZiBhY3RWaWV3Lm5vZGVzOyB0cmFjayBub2RlVmlldy5ub2RlLmlkKSB7XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWR2ZW50dXJlLW5vZGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgJ2FkdmVudHVyZS1ub2RlLS1hdmFpbGFibGUnOiBub2RlVmlldy5zdGF0dXMgPT09ICdhdmFpbGFibGUnLFxuICAgICAgICAgICAgICAgICAgICAgICdhZHZlbnR1cmUtbm9kZS0tY29tcGxldGVkJzogbm9kZVZpZXcuc3RhdHVzID09PSAnY29tcGxldGVkJyxcbiAgICAgICAgICAgICAgICAgICAgICAnYWR2ZW50dXJlLW5vZGUtLWxvY2tlZCc6IG5vZGVWaWV3LnN0YXR1cyA9PT0gJ2xvY2tlZCcsXG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibm9kZVZpZXcuc3RhdHVzID09PSAnbG9ja2VkJ1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk5vZGVUYXAobm9kZVZpZXcpXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWR2ZW50dXJlLW5vZGVfX2ljb25cIj57eyBub2RlSWNvbihub2RlVmlldy5ub2RlLnR5cGUpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkdmVudHVyZS1ub2RlX19sYWJlbFwiPnt7IHQobm9kZVZpZXcubm9kZS50aXRsZUtleSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWR2ZW50dXJlLW5vZGVfX3N0YXJzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgQGZvciAoaSBvZiBbMCwgMSwgMl07IHRyYWNrIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJub2RlVmlldy5zdGFycyA+IGkgPyAnc3RhcicgOiAnc3Rhci1vdXRsaW5lJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWR2ZW50dXJlLW5vZGVfX3N0YXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdhZHZlbnR1cmUtbm9kZV9fc3Rhci0tZmlsbGVkJzogbm9kZVZpZXcuc3RhcnMgPiBpIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChub2RlVmlldy5ub2RlLnR5cGUgPT09ICdib3NzJykge1xuICAgICAgICAgICAgICAgICAgICAgIDxpb24tYmFkZ2UgY29sb3I9XCJ3YXJuaW5nXCIgY2xhc3M9XCJhZHZlbnR1cmUtbm9kZV9fYmFkZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNBZHZlbnR1cmVCb3NzJykgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1iYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAuYWR2ZW50dXJlLWh1YiB7XG4gICAgICAgIHBhZGRpbmc6IDAgMCA0MHB4O1xuICAgICAgfVxuXG4gICAgICAuYWR2ZW50dXJlLWh1Yl9faGVhZGVyIHtcbiAgICAgICAgcGFkZGluZzogMjBweCAxNnB4IDI0cHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLmFkdmVudHVyZS1odWJfX2V5ZWJyb3cge1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgICAgbWFyZ2luOiAwIDAgNnB4O1xuICAgICAgfVxuXG4gICAgICAuYWR2ZW50dXJlLWh1Yl9fdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICAgIG1hcmdpbjogMCAwIDZweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yKTtcbiAgICAgIH1cblxuICAgICAgLmFkdmVudHVyZS1odWJfX3N1YnRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgICAgbWFyZ2luOiAwIDAgMTJweDtcbiAgICAgIH1cblxuICAgICAgLmFkdmVudHVyZS1odWJfX3N0YXJzIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvcikpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICBwYWRkaW5nOiA0cHggMTRweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXdhcm5pbmcpO1xuICAgICAgfVxuXG4gICAgICAuYWR2ZW50dXJlLWh1Yl9fc3RhcnMgaW9uLWljb24ge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXdhcm5pbmcpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICB9XG5cbiAgICAgIC5hZHZlbnR1cmUtaHViX19hY3RzIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxNnB4O1xuICAgICAgICBwYWRkaW5nOiAwIDEycHg7XG4gICAgICB9XG5cbiAgICAgIC5hZHZlbnR1cmUtYWN0IHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjEpKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IpKTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgLmFkdmVudHVyZS1hY3QtLWxvY2tlZCB7XG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgIH1cblxuICAgICAgLmFkdmVudHVyZS1hY3QtLWRvbmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWlvbi1jb2xvci1zdWNjZXNzKTtcbiAgICAgIH1cblxuICAgICAgLmFkdmVudHVyZS1hY3RfX2hlYWQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICAgIHBhZGRpbmc6IDE0cHggMTZweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgfVxuXG4gICAgICAuYWR2ZW50dXJlLWFjdF9fZW1vamkge1xuICAgICAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIH1cblxuICAgICAgLmFkdmVudHVyZS1hY3RfX21ldGEge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5hZHZlbnR1cmUtYWN0X19uYW1lIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBtYXJnaW46IDAgMCAycHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvcik7XG4gICAgICB9XG5cbiAgICAgIC5hZHZlbnR1cmUtYWN0X19kZXNjIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIH1cblxuICAgICAgLmFkdmVudHVyZS1hY3RfX2xvY2sge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICB9XG5cbiAgICAgIC5hZHZlbnR1cmUtYWN0X19wcm9ncmVzcyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgfVxuXG4gICAgICAuYWR2ZW50dXJlLWFjdF9fbm9kZXMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgxNDBweCwgMWZyKSk7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgcGFkZGluZzogMTJweDtcbiAgICAgIH1cblxuICAgICAgLmFkdmVudHVyZS1ub2RlIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgICAgcGFkZGluZzogMTJweCA4cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgICAgIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjEpKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IsICNmOGY4ZjgpO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgICB0cmFuc2Zvcm0gMC4xMnMgZWFzZSxcbiAgICAgICAgICBib3JkZXItY29sb3IgMC4xMnMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmFkdmVudHVyZS1ub2RlOmFjdGl2ZSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45Nyk7XG4gICAgICB9XG5cbiAgICAgIC5hZHZlbnR1cmUtbm9kZS0tYXZhaWxhYmxlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSkgNiUsIHRyYW5zcGFyZW50KTtcbiAgICAgIH1cblxuICAgICAgLmFkdmVudHVyZS1ub2RlLS1jb21wbGV0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWlvbi1jb2xvci1zdWNjZXNzKTtcbiAgICAgICAgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWlvbi1jb2xvci1zdWNjZXNzKSA2JSwgdHJhbnNwYXJlbnQpO1xuICAgICAgfVxuXG4gICAgICAuYWR2ZW50dXJlLW5vZGUtLWxvY2tlZCB7XG4gICAgICAgIG9wYWNpdHk6IDAuNDtcbiAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgfVxuXG4gICAgICAuYWR2ZW50dXJlLW5vZGVfX2ljb24ge1xuICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICB9XG5cbiAgICAgIC5hZHZlbnR1cmUtbm9kZV9fbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvcik7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgICB9XG5cbiAgICAgIC5hZHZlbnR1cmUtbm9kZV9fc3RhcnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBnYXA6IDFweDtcbiAgICAgIH1cblxuICAgICAgLmFkdmVudHVyZS1ub2RlX19zdGFyIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjdyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgIH1cblxuICAgICAgLmFkdmVudHVyZS1ub2RlX19zdGFyLS1maWxsZWQge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXdhcm5pbmcpO1xuICAgICAgfVxuXG4gICAgICAuYWR2ZW50dXJlLW5vZGVfX2JhZGdlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IC00cHg7XG4gICAgICAgIHJpZ2h0OiAtNHB4O1xuICAgICAgICBmb250LXNpemU6IDAuNnJlbTtcbiAgICAgICAgcGFkZGluZzogMnB4IDVweDtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDaGVzc2ltYWxzQWR2ZW50dXJlQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwcm9ncmVzc1NlcnZpY2UgPSBpbmplY3QoQ2hlc3NpbWFsc0FkdmVudHVyZVByb2dyZXNzU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdG9hc3QgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHByb2dyZXNzID0gdG9TaWduYWw8Q2hlc3NpbWFsc0FkdmVudHVyZVByb2dyZXNzIHwgdW5kZWZpbmVkPih0aGlzLnByb2dyZXNzU2VydmljZS53YXRjaFByb2dyZXNzKCksIHtcbiAgICBpbml0aWFsVmFsdWU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0ZWRBY3RJZCA9IHNpZ25hbDxzdHJpbmc+KCdhY3QxJyk7XG5cbiAgcmVhZG9ubHkgdG90YWxTdGFycyA9IGNvbXB1dGVkKCgpID0+IHRoaXMucHJvZ3Jlc3MoKT8udG90YWxTdGFycyA/PyAwKTtcblxuICByZWFkb25seSBhY3RWaWV3cyA9IGNvbXB1dGVkPEFkdmVudHVyZUFjdFZpZXdbXT4oKCkgPT4ge1xuICAgIGNvbnN0IHByb2cgPSB0aGlzLnByb2dyZXNzKCk7XG4gICAgY29uc3QgY29tcGxldGVkID0gcHJvZz8uY29tcGxldGVkTm9kZXMgPz8ge307XG4gICAgcmV0dXJuIENIRVNTSU1BTFNfQURWRU5UVVJFX0FDVFMubWFwKGFjdCA9PiB7XG4gICAgICBjb25zdCB1bmxvY2tlZCA9IGFkdmVudHVyZUFjdElzVW5sb2NrZWQoYWN0LmlkLCBjb21wbGV0ZWQpO1xuICAgICAgY29uc3Qgbm9kZXM6IEFkdmVudHVyZU5vZGVWaWV3W10gPSBhY3Qubm9kZXMubWFwKG5vZGUgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBjb21wbGV0ZWRbbm9kZS5pZF07XG4gICAgICAgIGxldCBzdGF0dXM6IENoZXNzaW1hbHNBZHZlbnR1cmVOb2RlU3RhdHVzO1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgc3RhdHVzID0gJ2NvbXBsZXRlZCc7XG4gICAgICAgIH0gZWxzZSBpZiAoIXVubG9ja2VkIHx8ICFhZHZlbnR1cmVOb2RlSXNBdmFpbGFibGUobm9kZS5pZCwgY29tcGxldGVkKSkge1xuICAgICAgICAgIHN0YXR1cyA9ICdsb2NrZWQnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXR1cyA9ICdhdmFpbGFibGUnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IG5vZGUsIHN0YXR1cywgc3RhcnM6IHJlc3VsdD8uc3RhcnMgPz8gMCB9O1xuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhY3QsXG4gICAgICAgIHVubG9ja2VkLFxuICAgICAgICBub2RlcyxcbiAgICAgICAgY29tcGxldGVkQ291bnQ6IG5vZGVzLmZpbHRlcihuID0+IG4uc3RhdHVzID09PSAnY29tcGxldGVkJykubGVuZ3RoLFxuICAgICAgICB0b3RhbENvdW50OiBub2Rlcy5sZW5ndGgsXG4gICAgICB9O1xuICAgIH0pO1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UoJ01pbmlHYW1lcycpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KCdNaW5pR2FtZXMnLCBNSU5JX0dBTUVTX0kxOE4pO1xuICAgIH1cbiAgfVxuXG4gIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksICdNaW5pR2FtZXMnKTtcbiAgfVxuXG4gIG5vZGVJY29uKHR5cGU6IENoZXNzaW1hbHNBZHZlbnR1cmVOb2RlWyd0eXBlJ10pOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnYmF0dGxlJzpcbiAgICAgICAgcmV0dXJuICfimpTvuI8nO1xuICAgICAgY2FzZSAnYm9zcyc6XG4gICAgICAgIHJldHVybiAn8J+SgCc7XG4gICAgICBjYXNlICdyZXN0JzpcbiAgICAgICAgcmV0dXJuICfwn4+V77iPJztcbiAgICAgIGNhc2UgJ215c3RlcnknOlxuICAgICAgICByZXR1cm4gJ+Kdkyc7XG4gICAgfVxuICB9XG5cbiAgb25Ob2RlVGFwKG5vZGVWaWV3OiBBZHZlbnR1cmVOb2RlVmlldyk6IHZvaWQge1xuICAgIGlmIChub2RlVmlldy5zdGF0dXMgPT09ICdsb2NrZWQnKSByZXR1cm47XG4gICAgaWYgKG5vZGVWaWV3Lm5vZGUudHlwZSA9PT0gJ3Jlc3QnKSB7XG4gICAgICB0aGlzLm9uUmVzdFRhcChub2RlVmlldyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChub2RlVmlldy5ub2RlLnR5cGUgPT09ICdteXN0ZXJ5Jykge1xuICAgICAgdGhpcy5vbk15c3RlcnlUYXAobm9kZVZpZXcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlKFtBRFZFTlRVUkVfUk9VVEVfQkFTRV0sIHtcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgIGFkdmVudHVyZU5vZGU6IG5vZGVWaWV3Lm5vZGUuaWQsXG4gICAgICAgIHByb2ZpbGVJZDogbm9kZVZpZXcubm9kZS5wcm9maWxlSWQsXG4gICAgICAgIGRpZmZpY3VsdHk6IG5vZGVWaWV3Lm5vZGUuZGlmZmljdWx0eSxcbiAgICAgICAgYm9hcmRTaXplOiBub2RlVmlldy5ub2RlLmJvYXJkU2l6ZSA/PyA2LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb25SZXN0VGFwKG5vZGVWaWV3OiBBZHZlbnR1cmVOb2RlVmlldyk6IHZvaWQge1xuICAgIGlmIChub2RlVmlldy5zdGF0dXMgPT09ICdjb21wbGV0ZWQnKSByZXR1cm47XG4gICAgdm9pZCB0aGlzLnByb2dyZXNzU2VydmljZS5yZWNvcmROb2RlQ29tcGxldGVkKG5vZGVWaWV3Lm5vZGUuaWQsIDEpLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KCdjaGVzc2ltYWxzQWR2ZW50dXJlUmVzdERvbmUnKSwgY29sb3I6ICdkYXJrJywgZHVyYXRpb246IDI1MDAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9uTXlzdGVyeVRhcChub2RlVmlldzogQWR2ZW50dXJlTm9kZVZpZXcpOiB2b2lkIHtcbiAgICBjb25zdCBhY3QgPSBDSEVTU0lNQUxTX0FEVkVOVFVSRV9BQ1RTLmZpbmQoYSA9PiBhLmlkID09PSBub2RlVmlldy5ub2RlLmFjdElkKTtcbiAgICBjb25zdCBiYXR0bGVOb2RlcyA9IGFjdD8ubm9kZXMuZmlsdGVyKG4gPT4gbi50eXBlID09PSAnYmF0dGxlJyAmJiBuLnByb2ZpbGVJZCkgPz8gW107XG4gICAgaWYgKCFiYXR0bGVOb2Rlcy5sZW5ndGgpIHJldHVybjtcbiAgICBjb25zdCBwaWNrID0gYmF0dGxlTm9kZXNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogYmF0dGxlTm9kZXMubGVuZ3RoKV07XG4gICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KCdjaGVzc2ltYWxzQWR2ZW50dXJlTXlzdGVyeVJldmVhbCcpLCBjb2xvcjogJ2RhcmsnLCBkdXJhdGlvbjogMjAwMCB9KTtcbiAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlKFtBRFZFTlRVUkVfUk9VVEVfQkFTRV0sIHtcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgIGFkdmVudHVyZU5vZGU6IG5vZGVWaWV3Lm5vZGUuaWQsXG4gICAgICAgIHByb2ZpbGVJZDogcGljay5wcm9maWxlSWQsXG4gICAgICAgIGRpZmZpY3VsdHk6IHBpY2suZGlmZmljdWx0eSxcbiAgICAgICAgYm9hcmRTaXplOiBwaWNrLmJvYXJkU2l6ZSA/PyA2LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
286
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlc3NpbWFscy1hZHZlbnR1cmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9taW5pLWdhbWVzL2NoZXNzaW1hbHMtYWR2ZW50dXJlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXRELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsc0JBQXNCLEVBQ3RCLHdCQUF3QixHQUN6QixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOztBQXNCN0YsTUFBTSxvQkFBb0IsR0FBRyx3QkFBd0IsQ0FBQztBQWdUdEQsTUFBTSxPQUFPLDRCQUE0QjtJQXlDdkM7UUF4Q2lCLFNBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0IsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixvQkFBZSxHQUFHLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUZULHEzR0FsRlMsT0FBTyxvRkFBYSxPQUFPLDJKQUFFLFFBQVE7OzRGQTJTcEMsNEJBQTRCO2tCQTlTeEMsU0FBUzsrQkFDRSwwQkFBMEIsY0FDeEIsSUFBSSxXQUNQLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLFlBQ3RDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpRlQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSW9uQmFkZ2UsIElvbkJ1dHRvbiwgSW9uSWNvbiB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IE1JTklfR0FNRVNfSTE4TiB9IGZyb20gJy4vbWluaS1nYW1lcy5pMThuJztcbmltcG9ydCB7XG4gIENIRVNTSU1BTFNfQURWRU5UVVJFX0FDVFMsXG4gIGFkdmVudHVyZUFjdElzVW5sb2NrZWQsXG4gIGFkdmVudHVyZU5vZGVJc0F2YWlsYWJsZSxcbn0gZnJvbSAnLi9jaGVzc2ltYWxzLWFkdmVudHVyZS1kYXRhJztcbmltcG9ydCB7IENoZXNzaW1hbHNBZHZlbnR1cmVQcm9ncmVzc1NlcnZpY2UgfSBmcm9tICcuL2NoZXNzaW1hbHMtYWR2ZW50dXJlLXByb2dyZXNzLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQ2hlc3NpbWFsc0FkdmVudHVyZUFjdCxcbiAgQ2hlc3NpbWFsc0FkdmVudHVyZU5vZGUsXG4gIENoZXNzaW1hbHNBZHZlbnR1cmVOb2RlU3RhdHVzLFxuICBDaGVzc2ltYWxzQWR2ZW50dXJlUHJvZ3Jlc3MsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5pbnRlcmZhY2UgQWR2ZW50dXJlTm9kZVZpZXcge1xuICBub2RlOiBDaGVzc2ltYWxzQWR2ZW50dXJlTm9kZTtcbiAgc3RhdHVzOiBDaGVzc2ltYWxzQWR2ZW50dXJlTm9kZVN0YXR1cztcbiAgc3RhcnM6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIEFkdmVudHVyZUFjdFZpZXcge1xuICBhY3Q6IENoZXNzaW1hbHNBZHZlbnR1cmVBY3Q7XG4gIHVubG9ja2VkOiBib29sZWFuO1xuICBub2RlczogQWR2ZW50dXJlTm9kZVZpZXdbXTtcbiAgY29tcGxldGVkQ291bnQ6IG51bWJlcjtcbiAgdG90YWxDb3VudDogbnVtYmVyO1xufVxuXG5jb25zdCBBRFZFTlRVUkVfUk9VVEVfQkFTRSA9ICcvbWluaS1nYW1lcy9jaGVzc2ltYWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWNoZXNzaW1hbHMtYWR2ZW50dXJlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nQ2xhc3MsIElvbkJ1dHRvbiwgSW9uSWNvbiwgSW9uQmFkZ2VdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJhZHZlbnR1cmUtaHViXCI+XG4gICAgICA8aGVhZGVyIGNsYXNzPVwiYWR2ZW50dXJlLWh1Yl9faGVhZGVyXCI+XG4gICAgICAgIDxwIGNsYXNzPVwiYWR2ZW50dXJlLWh1Yl9fZXllYnJvd1wiPnt7IHQoJ2NoZXNzaW1hbHNBZHZlbnR1cmVFeWVicm93JykgfX08L3A+XG4gICAgICAgIDxoMSBjbGFzcz1cImFkdmVudHVyZS1odWJfX3RpdGxlXCI+e3sgdCgnY2hlc3NpbWFsc0FkdmVudHVyZVRpdGxlJykgfX08L2gxPlxuICAgICAgICA8cCBjbGFzcz1cImFkdmVudHVyZS1odWJfX3N1YnRpdGxlXCI+e3sgdCgnY2hlc3NpbWFsc0FkdmVudHVyZVN1YnRpdGxlJykgfX08L3A+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZHZlbnR1cmUtaHViX19zdGFyc1wiPlxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwic3RhclwiIC8+XG4gICAgICAgICAgPHNwYW4+e3sgdG90YWxTdGFycygpIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvaGVhZGVyPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYWR2ZW50dXJlLWh1Yl9fYWN0c1wiPlxuICAgICAgICBAZm9yIChhY3RWaWV3IG9mIGFjdFZpZXdzKCk7IHRyYWNrIGFjdFZpZXcuYWN0LmlkKSB7XG4gICAgICAgICAgPHNlY3Rpb25cbiAgICAgICAgICAgIGNsYXNzPVwiYWR2ZW50dXJlLWFjdFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdhZHZlbnR1cmUtYWN0LS1sb2NrZWQnOiAhYWN0Vmlldy51bmxvY2tlZCxcbiAgICAgICAgICAgICAgJ2FkdmVudHVyZS1hY3QtLWRvbmUnOiBhY3RWaWV3LmNvbXBsZXRlZENvdW50ID09PSBhY3RWaWV3LnRvdGFsQ291bnQgJiYgYWN0Vmlldy51bmxvY2tlZCxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZHZlbnR1cmUtYWN0X19oZWFkXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWR2ZW50dXJlLWFjdF9fZW1vamlcIj57eyBhY3RWaWV3LmFjdC5lbW9qaSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkdmVudHVyZS1hY3RfX21ldGFcIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJhZHZlbnR1cmUtYWN0X19uYW1lXCI+e3sgdChhY3RWaWV3LmFjdC50aXRsZUtleSkgfX08L2gyPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYWR2ZW50dXJlLWFjdF9fZGVzY1wiPnt7IHQoYWN0Vmlldy5hY3QuZGVzY3JpcHRpb25LZXkpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgQGlmICghYWN0Vmlldy51bmxvY2tlZCkge1xuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwibG9jay1jbG9zZWQtb3V0bGluZVwiIGNsYXNzPVwiYWR2ZW50dXJlLWFjdF9fbG9ja1wiIC8+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWR2ZW50dXJlLWFjdF9fcHJvZ3Jlc3NcIj4ge3sgYWN0Vmlldy5jb21wbGV0ZWRDb3VudCB9fS97eyBhY3RWaWV3LnRvdGFsQ291bnQgfX0gPC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgQGlmIChhY3RWaWV3LnVubG9ja2VkKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZHZlbnR1cmUtYWN0X19ub2Rlc1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKG5vZGVWaWV3IG9mIGFjdFZpZXcubm9kZXM7IHRyYWNrIG5vZGVWaWV3Lm5vZGUuaWQpIHtcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZHZlbnR1cmUtbm9kZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAnYWR2ZW50dXJlLW5vZGUtLWF2YWlsYWJsZSc6IG5vZGVWaWV3LnN0YXR1cyA9PT0gJ2F2YWlsYWJsZScsXG4gICAgICAgICAgICAgICAgICAgICAgJ2FkdmVudHVyZS1ub2RlLS1jb21wbGV0ZWQnOiBub2RlVmlldy5zdGF0dXMgPT09ICdjb21wbGV0ZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICdhZHZlbnR1cmUtbm9kZS0tbG9ja2VkJzogbm9kZVZpZXcuc3RhdHVzID09PSAnbG9ja2VkJyxcbiAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJub2RlVmlldy5zdGF0dXMgPT09ICdsb2NrZWQnXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTm9kZVRhcChub2RlVmlldylcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChub2RlVmlldy5ub2RlLnByb2ZpbGVJZCkge1xuICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWR2ZW50dXJlLW5vZGVfX2F2YXRhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImF2YXRhclNyYyhub2RlVmlldy5ub2RlLnByb2ZpbGVJZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJ0KG5vZGVWaWV3Lm5vZGUudGl0bGVLZXkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkdmVudHVyZS1ub2RlX19pY29uXCI+e3sgbm9kZUljb24obm9kZVZpZXcubm9kZS50eXBlKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkdmVudHVyZS1ub2RlX19sYWJlbFwiPnt7IHQobm9kZVZpZXcubm9kZS50aXRsZUtleSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWR2ZW50dXJlLW5vZGVfX3N0YXJzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgQGZvciAoaSBvZiBbMCwgMSwgMl07IHRyYWNrIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJub2RlVmlldy5zdGFycyA+IGkgPyAnc3RhcicgOiAnc3Rhci1vdXRsaW5lJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWR2ZW50dXJlLW5vZGVfX3N0YXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdhZHZlbnR1cmUtbm9kZV9fc3Rhci0tZmlsbGVkJzogbm9kZVZpZXcuc3RhcnMgPiBpIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChub2RlVmlldy5ub2RlLnR5cGUgPT09ICdib3NzJykge1xuICAgICAgICAgICAgICAgICAgICAgIDxpb24tYmFkZ2UgY29sb3I9XCJ3YXJuaW5nXCIgY2xhc3M9XCJhZHZlbnR1cmUtbm9kZV9fYmFkZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNBZHZlbnR1cmVCb3NzJykgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1iYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAuYWR2ZW50dXJlLWh1YiB7XG4gICAgICAgIHBhZGRpbmc6IDAgMCA0MHB4O1xuICAgICAgfVxuXG4gICAgICAuYWR2ZW50dXJlLWh1Yl9faGVhZGVyIHtcbiAgICAgICAgcGFkZGluZzogMjBweCAxNnB4IDI0cHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLmFkdmVudHVyZS1odWJfX2V5ZWJyb3cge1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgICAgbWFyZ2luOiAwIDAgNnB4O1xuICAgICAgfVxuXG4gICAgICAuYWR2ZW50dXJlLWh1Yl9fdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICAgIG1hcmdpbjogMCAwIDZweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yKTtcbiAgICAgIH1cblxuICAgICAgLmFkdmVudHVyZS1odWJfX3N1YnRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgICAgbWFyZ2luOiAwIDAgMTJweDtcbiAgICAgIH1cblxuICAgICAgLmFkdmVudHVyZS1odWJfX3N0YXJzIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvcikpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICBwYWRkaW5nOiA0cHggMTRweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXdhcm5pbmcpO1xuICAgICAgfVxuXG4gICAgICAuYWR2ZW50dXJlLWh1Yl9fc3RhcnMgaW9uLWljb24ge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXdhcm5pbmcpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICB9XG5cbiAgICAgIC5hZHZlbnR1cmUtaHViX19hY3RzIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxNnB4O1xuICAgICAgICBwYWRkaW5nOiAwIDEycHg7XG4gICAgICB9XG5cbiAgICAgIC5hZHZlbnR1cmUtYWN0IHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjEpKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IpKTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgLmFkdmVudHVyZS1hY3QtLWxvY2tlZCB7XG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgIH1cblxuICAgICAgLmFkdmVudHVyZS1hY3QtLWRvbmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWlvbi1jb2xvci1zdWNjZXNzKTtcbiAgICAgIH1cblxuICAgICAgLmFkdmVudHVyZS1hY3RfX2hlYWQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICAgIHBhZGRpbmc6IDE0cHggMTZweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgfVxuXG4gICAgICAuYWR2ZW50dXJlLWFjdF9fZW1vamkge1xuICAgICAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIH1cblxuICAgICAgLmFkdmVudHVyZS1hY3RfX21ldGEge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5hZHZlbnR1cmUtYWN0X19uYW1lIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBtYXJnaW46IDAgMCAycHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvcik7XG4gICAgICB9XG5cbiAgICAgIC5hZHZlbnR1cmUtYWN0X19kZXNjIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIH1cblxuICAgICAgLmFkdmVudHVyZS1hY3RfX2xvY2sge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICB9XG5cbiAgICAgIC5hZHZlbnR1cmUtYWN0X19wcm9ncmVzcyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgfVxuXG4gICAgICAuYWR2ZW50dXJlLWFjdF9fbm9kZXMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgxNDBweCwgMWZyKSk7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgcGFkZGluZzogMTJweDtcbiAgICAgIH1cblxuICAgICAgLmFkdmVudHVyZS1ub2RlIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgICAgcGFkZGluZzogMTJweCA4cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgICAgIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjEpKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IsICNmOGY4ZjgpO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgICB0cmFuc2Zvcm0gMC4xMnMgZWFzZSxcbiAgICAgICAgICBib3JkZXItY29sb3IgMC4xMnMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmFkdmVudHVyZS1ub2RlOmFjdGl2ZSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45Nyk7XG4gICAgICB9XG5cbiAgICAgIC5hZHZlbnR1cmUtbm9kZS0tYXZhaWxhYmxlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSkgNiUsIHRyYW5zcGFyZW50KTtcbiAgICAgIH1cblxuICAgICAgLmFkdmVudHVyZS1ub2RlLS1jb21wbGV0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWlvbi1jb2xvci1zdWNjZXNzKTtcbiAgICAgICAgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWlvbi1jb2xvci1zdWNjZXNzKSA2JSwgdHJhbnNwYXJlbnQpO1xuICAgICAgfVxuXG4gICAgICAuYWR2ZW50dXJlLW5vZGUtLWxvY2tlZCB7XG4gICAgICAgIG9wYWNpdHk6IDAuNDtcbiAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgfVxuXG4gICAgICAuYWR2ZW50dXJlLW5vZGVfX2F2YXRhciB7XG4gICAgICAgIHdpZHRoOiA0OHB4O1xuICAgICAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4xKSk7XG4gICAgICB9XG5cbiAgICAgIC5hZHZlbnR1cmUtbm9kZS0tYXZhaWxhYmxlIC5hZHZlbnR1cmUtbm9kZV9fYXZhdGFyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICB9XG5cbiAgICAgIC5hZHZlbnR1cmUtbm9kZS0tY29tcGxldGVkIC5hZHZlbnR1cmUtbm9kZV9fYXZhdGFyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pb24tY29sb3Itc3VjY2Vzcyk7XG4gICAgICB9XG5cbiAgICAgIC5hZHZlbnR1cmUtbm9kZV9faWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIH1cblxuICAgICAgLmFkdmVudHVyZS1ub2RlX19sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgIH1cblxuICAgICAgLmFkdmVudHVyZS1ub2RlX19zdGFycyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogMXB4O1xuICAgICAgfVxuXG4gICAgICAuYWR2ZW50dXJlLW5vZGVfX3N0YXIge1xuICAgICAgICBmb250LXNpemU6IDAuN3JlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0pO1xuICAgICAgfVxuXG4gICAgICAuYWR2ZW50dXJlLW5vZGVfX3N0YXItLWZpbGxlZCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3Itd2FybmluZyk7XG4gICAgICB9XG5cbiAgICAgIC5hZHZlbnR1cmUtbm9kZV9fYmFkZ2Uge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLTRweDtcbiAgICAgICAgcmlnaHQ6IC00cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42cmVtO1xuICAgICAgICBwYWRkaW5nOiAycHggNXB4O1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENoZXNzaW1hbHNBZHZlbnR1cmVDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IHByb2dyZXNzU2VydmljZSA9IGluamVjdChDaGVzc2ltYWxzQWR2ZW50dXJlUHJvZ3Jlc3NTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0b2FzdCA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvZ3Jlc3MgPSB0b1NpZ25hbDxDaGVzc2ltYWxzQWR2ZW50dXJlUHJvZ3Jlc3MgfCB1bmRlZmluZWQ+KHRoaXMucHJvZ3Jlc3NTZXJ2aWNlLndhdGNoUHJvZ3Jlc3MoKSwge1xuICAgIGluaXRpYWxWYWx1ZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICByZWFkb25seSBzZWxlY3RlZEFjdElkID0gc2lnbmFsPHN0cmluZz4oJ2FjdDEnKTtcblxuICByZWFkb25seSB0b3RhbFN0YXJzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9ncmVzcygpPy50b3RhbFN0YXJzID8/IDApO1xuXG4gIHJlYWRvbmx5IGFjdFZpZXdzID0gY29tcHV0ZWQ8QWR2ZW50dXJlQWN0Vmlld1tdPigoKSA9PiB7XG4gICAgY29uc3QgcHJvZyA9IHRoaXMucHJvZ3Jlc3MoKTtcbiAgICBjb25zdCBjb21wbGV0ZWQgPSBwcm9nPy5jb21wbGV0ZWROb2RlcyA/PyB7fTtcbiAgICByZXR1cm4gQ0hFU1NJTUFMU19BRFZFTlRVUkVfQUNUUy5tYXAoYWN0ID0+IHtcbiAgICAgIGNvbnN0IHVubG9ja2VkID0gYWR2ZW50dXJlQWN0SXNVbmxvY2tlZChhY3QuaWQsIGNvbXBsZXRlZCk7XG4gICAgICBjb25zdCBub2RlczogQWR2ZW50dXJlTm9kZVZpZXdbXSA9IGFjdC5ub2Rlcy5tYXAobm9kZSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGNvbXBsZXRlZFtub2RlLmlkXTtcbiAgICAgICAgbGV0IHN0YXR1czogQ2hlc3NpbWFsc0FkdmVudHVyZU5vZGVTdGF0dXM7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICBzdGF0dXMgPSAnY29tcGxldGVkJztcbiAgICAgICAgfSBlbHNlIGlmICghdW5sb2NrZWQgfHwgIWFkdmVudHVyZU5vZGVJc0F2YWlsYWJsZShub2RlLmlkLCBjb21wbGV0ZWQpKSB7XG4gICAgICAgICAgc3RhdHVzID0gJ2xvY2tlZCc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhdHVzID0gJ2F2YWlsYWJsZSc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgbm9kZSwgc3RhdHVzLCBzdGFyczogcmVzdWx0Py5zdGFycyA/PyAwIH07XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFjdCxcbiAgICAgICAgdW5sb2NrZWQsXG4gICAgICAgIG5vZGVzLFxuICAgICAgICBjb21wbGV0ZWRDb3VudDogbm9kZXMuZmlsdGVyKG4gPT4gbi5zdGF0dXMgPT09ICdjb21wbGV0ZWQnKS5sZW5ndGgsXG4gICAgICAgIHRvdGFsQ291bnQ6IG5vZGVzLmxlbmd0aCxcbiAgICAgIH07XG4gICAgfSk7XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICghdGhpcy5pMThuLmhhc05hbWVzcGFjZSgnTWluaUdhbWVzJykpIHtcbiAgICAgIHRoaXMuaTE4bi5yZWdpc3RlckNvbnRlbnQoJ01pbmlHYW1lcycsIE1JTklfR0FNRVNfSTE4Tik7XG4gICAgfVxuICB9XG5cbiAgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgJ01pbmlHYW1lcycpO1xuICB9XG5cbiAgYXZhdGFyU3JjKHByb2ZpbGVJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYGFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2NoYWxsZW5nZS1hdmF0YXJzLyR7cHJvZmlsZUlkfS5wbmdgO1xuICB9XG5cbiAgbm9kZUljb24odHlwZTogQ2hlc3NpbWFsc0FkdmVudHVyZU5vZGVbJ3R5cGUnXSk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdiYXR0bGUnOlxuICAgICAgICByZXR1cm4gJ+KalO+4jyc7XG4gICAgICBjYXNlICdib3NzJzpcbiAgICAgICAgcmV0dXJuICfwn5KAJztcbiAgICAgIGNhc2UgJ3Jlc3QnOlxuICAgICAgICByZXR1cm4gJ/Cfj5XvuI8nO1xuICAgICAgY2FzZSAnbXlzdGVyeSc6XG4gICAgICAgIHJldHVybiAn4p2TJztcbiAgICB9XG4gIH1cblxuICBvbk5vZGVUYXAobm9kZVZpZXc6IEFkdmVudHVyZU5vZGVWaWV3KTogdm9pZCB7XG4gICAgaWYgKG5vZGVWaWV3LnN0YXR1cyA9PT0gJ2xvY2tlZCcpIHJldHVybjtcbiAgICBpZiAobm9kZVZpZXcubm9kZS50eXBlID09PSAncmVzdCcpIHtcbiAgICAgIHRoaXMub25SZXN0VGFwKG5vZGVWaWV3KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKG5vZGVWaWV3Lm5vZGUudHlwZSA9PT0gJ215c3RlcnknKSB7XG4gICAgICB0aGlzLm9uTXlzdGVyeVRhcChub2RlVmlldyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0FEVkVOVFVSRV9ST1VURV9CQVNFXSwge1xuICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgYWR2ZW50dXJlTm9kZTogbm9kZVZpZXcubm9kZS5pZCxcbiAgICAgICAgcHJvZmlsZUlkOiBub2RlVmlldy5ub2RlLnByb2ZpbGVJZCxcbiAgICAgICAgZGlmZmljdWx0eTogbm9kZVZpZXcubm9kZS5kaWZmaWN1bHR5LFxuICAgICAgICBib2FyZFNpemU6IG5vZGVWaWV3Lm5vZGUuYm9hcmRTaXplID8/IDYsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvblJlc3RUYXAobm9kZVZpZXc6IEFkdmVudHVyZU5vZGVWaWV3KTogdm9pZCB7XG4gICAgaWYgKG5vZGVWaWV3LnN0YXR1cyA9PT0gJ2NvbXBsZXRlZCcpIHJldHVybjtcbiAgICB2b2lkIHRoaXMucHJvZ3Jlc3NTZXJ2aWNlLnJlY29yZE5vZGVDb21wbGV0ZWQobm9kZVZpZXcubm9kZS5pZCwgMSkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNBZHZlbnR1cmVSZXN0RG9uZScpLCBjb2xvcjogJ2RhcmsnLCBkdXJhdGlvbjogMjUwMCB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb25NeXN0ZXJ5VGFwKG5vZGVWaWV3OiBBZHZlbnR1cmVOb2RlVmlldyk6IHZvaWQge1xuICAgIGNvbnN0IGFjdCA9IENIRVNTSU1BTFNfQURWRU5UVVJFX0FDVFMuZmluZChhID0+IGEuaWQgPT09IG5vZGVWaWV3Lm5vZGUuYWN0SWQpO1xuICAgIGNvbnN0IGJhdHRsZU5vZGVzID0gYWN0Py5ub2Rlcy5maWx0ZXIobiA9PiBuLnR5cGUgPT09ICdiYXR0bGUnICYmIG4ucHJvZmlsZUlkKSA/PyBbXTtcbiAgICBpZiAoIWJhdHRsZU5vZGVzLmxlbmd0aCkgcmV0dXJuO1xuICAgIGNvbnN0IHBpY2sgPSBiYXR0bGVOb2Rlc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBiYXR0bGVOb2Rlcy5sZW5ndGgpXTtcbiAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNBZHZlbnR1cmVNeXN0ZXJ5UmV2ZWFsJyksIGNvbG9yOiAnZGFyaycsIGR1cmF0aW9uOiAyMDAwIH0pO1xuICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0FEVkVOVFVSRV9ST1VURV9CQVNFXSwge1xuICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgYWR2ZW50dXJlTm9kZTogbm9kZVZpZXcubm9kZS5pZCxcbiAgICAgICAgcHJvZmlsZUlkOiBwaWNrLnByb2ZpbGVJZCxcbiAgICAgICAgZGlmZmljdWx0eTogcGljay5kaWZmaWN1bHR5LFxuICAgICAgICBib2FyZFNpemU6IHBpY2suYm9hcmRTaXplID8/IDYsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=