ctt-babylon 0.22.106 → 0.22.108

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.
@@ -6,27 +6,34 @@ import { ViewsType } from '../../Enum/views.enum';
6
6
  import { cleanDeep } from '../../utils/clean-props';
7
7
  import { Utils } from '../../utils/utils';
8
8
  import { ScreenSizerService } from '../screen-sizer';
9
- import { SITE_CONFIG_SERVICE_TOKEN } from './mapper.service.token';
9
+ import { BABYLON_MAPPER_CONFIG_TOKEN, SITE_CONFIG_SERVICE_TOKEN, } from './mapper.service.token';
10
10
  import * as i0 from "@angular/core";
11
11
  export class MapperService {
12
12
  constructor() {
13
13
  this.siteSvc = inject(SITE_CONFIG_SERVICE_TOKEN);
14
14
  this.screenSizer = inject(ScreenSizerService);
15
+ this.mapperConfig = inject(BABYLON_MAPPER_CONFIG_TOKEN);
15
16
  this.headerButtons = signal(undefined);
16
17
  this.siteId = computed(() => this.siteSvc.webConfigInstant?.siteID);
17
18
  this.platformId = inject(PLATFORM_ID);
19
+ this.roomsGridMobileThumbnailSize = this.mapperConfig.roomsGridMobileThumbnailSize ?? 375;
20
+ this.roomsGridSmallTabletThumbnailSize = this.mapperConfig.roomsGridSmallTabletThumbnailSize ?? 540;
18
21
  }
19
22
  get isMinFullTabletInstant() {
20
23
  return this.screenSizer.minFullTabletInstant();
21
24
  }
22
- getImageResponsive(image, isFigure = true) {
25
+ getImageResponsive(image, isFigure = true, mobileThumbnailSize = 375, smallTabletThumbnailSize = 540) {
23
26
  let selectedImage;
24
27
  if (isPlatformBrowser(this.platformId)) {
25
28
  if (this.screenSizer.mobile()) {
26
- selectedImage = image?.thumbnails?.[375]?.webp;
29
+ selectedImage =
30
+ image?.thumbnails?.[mobileThumbnailSize]?.webp ??
31
+ image?.thumbnails?.[375]?.webp;
27
32
  }
28
33
  else if (this.screenSizer.isSmallTabletInstant()) {
29
- selectedImage = image?.thumbnails?.[540]?.webp;
34
+ selectedImage =
35
+ image?.thumbnails?.[smallTabletThumbnailSize]?.webp ??
36
+ image?.thumbnails?.[540]?.webp;
30
37
  }
31
38
  else if (this.screenSizer.isMediumTabletInstant()) {
32
39
  selectedImage = image?.thumbnails?.[768]?.webp;
@@ -2221,7 +2228,7 @@ export class MapperService {
2221
2228
  subtitle: img.subtitle,
2222
2229
  src: this.getImageResponsive(img.tags?.some((tag) => tag.name === 'RoomsGrid')
2223
2230
  ? img
2224
- : undefined),
2231
+ : undefined, true, this.roomsGridMobileThumbnailSize, this.roomsGridSmallTabletThumbnailSize),
2225
2232
  tag: img.tags?.find((tag) => tag?.filterable)?.name,
2226
2233
  }))
2227
2234
  ?.slice(0, 1),
@@ -3986,4 +3993,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
3986
3993
  providedIn: 'root',
3987
3994
  }]
3988
3995
  }] });
3989
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvc2VydmljZXMvbWFwcGVyL21hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDSCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixXQUFXLEVBRVgsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWtHNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQTJCbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFLbkUsTUFBTSxPQUFPLGFBQWE7SUFIMUI7UUFJcUIsWUFBTyxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQzVDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFNMUQsa0JBQWEsR0FBRyxNQUFNLENBQXFDLFNBQVMsQ0FBQyxDQUFDO1FBRXRFLFdBQU0sR0FBbUIsUUFBUSxDQUM3QixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLE1BQU0sQ0FDOUMsQ0FBQztRQUlNLGVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7S0FndUs1QztJ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RUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVc7Z0JBQ2xDLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUk7Z0JBQ3hCLEdBQUcsRUFBRTtvQkFDRCxHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDbkQsR0FBRyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHO2lCQUNsQztnQkFDRCxJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO2FBQ3RDLENBQUMsQ0FBQztTQUNhLENBQUM7SUFDekIsQ0FBQztJQUNELGNBQWMsQ0FBQyxLQUFzQjtRQUNqQyxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOytHQS91S1EsYUFBYTttSEFBYixhQUFhLGNBRlYsTUFBTTs7NEZBRVQsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIGNvbXB1dGVkLFxuICAgIGluamVjdCxcbiAgICBJbmplY3RhYmxlLFxuICAgIFBMQVRGT1JNX0lELFxuICAgIFNpZ25hbCxcbiAgICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQmFieWxvbjQwNEksXG4gICAgQmFieWxvbkFjdGlvbkJhbm5lckksXG4gICAgQmFieWxvbkFkZHJlc3NJdGVtLFxuICAgIEJhYnlsb25BZHZhbnRhZ2VzSSxcbiAgICBCYWJ5bG9uQmFubmVyR2FsbGVyeUksXG4gICAgQmFieWxvbkJhbm5lckluZm9JLFxuICAgIEJhYnlsb25CYW5uZXJOZXdzbGV0dGVySSxcbiAgICBCYWJ5bG9uQmxvZ0RldGFpbHNJLFxuICAgIEJhYnlsb25CbG9nTGlzdEksXG4gICAgQmFieWxvbkJyZWFkY3J1bWJJLFxuICAgIEJhYnlsb25Db21pbmdTb29uSSxcbiAgICBCYWJ5bG9uQ29udGFjdEFkZHJlc3NJLFxuICAgIEJhYnlsb25Db250YWN0Rm9ybUksXG4gICAgQmFieWxvbkNvbnRhY3RIb3dJLFxuICAgIEJhYnlsb25Db250YWN0TWFwYUksXG4gICAgQmFieWxvbkNvbnRhY3RNYXBJdGVtLFxuICAgIEJhYnlsb25FbmdpbmVJLFxuICAgIEJhYnlsb25FbmdpbmVNb2RhbEksXG4gICAgQmFieWxvbkVxdWlwbWVudEl0ZW0sXG4gICAgQmFieWxvbkV4dGVybmFsU2NyaXB0SSxcbiAgICBCYWJ5bG9uRmFxSSxcbiAgICBCYWJ5bG9uRmVhdHVyZXNTbGlkZXJJLFxuICAgIEJhYnlsb25GZWF0dXJlc1NsaWRlckl0ZW0sXG4gICAgQmFieWxvbkZvb3RlckNvbnRhY3RJLFxuICAgIEJhYnlsb25Gb290ZXJMaW5rc0ksXG4gICAgQmFieWxvbkZvb3RlckxvZ29zSSxcbiAgICBCYWJ5bG9uRm9vdGVyU29jaWFsSSxcbiAgICBCYWJ5bG9uR2FsbGVyeUZpbHRlcixcbiAgICBCYWJ5bG9uR2FsbGVyeUksXG4gICAgQmFieWxvbkdhbGxlcnlJdGVtLFxuICAgIEJhYnlsb25HckMySW1nSSxcbiAgICBCYWJ5bG9uSGVhZGVyQm9va1Nob3dJLFxuICAgIEJhYnlsb25IZWFkZXJDbGVhckksXG4gICAgQmFieWxvbkhlYWRlck1lbnVDZW50ZXJJLFxuICAgIEJhYnlsb25IZWFkZXJNZW51TG9nb0NlbnRlckksXG4gICAgQmFieWxvbkhlYWRlck1lbnVTaG93SSxcbiAgICBCYWJ5bG9uSGVhZEludHJvSSxcbiAgICBCYWJ5bG9uSG90ZWxzTGlzdEksXG4gICAgQmFieWxvbkhvdGVsc1NsaWRlckksXG4gICAgQmFieWxvbkluZm8yQ29sSW1nSSxcbiAgICBCYWJ5bG9uSW5mbzJpbWdCaWdJLFxuICAgIEJhYnlsb25JbmZvMmltZ0ksXG4gICAgQmFieWxvbkluZm80aW1nSSxcbiAgICBCYWJ5bG9uSW5mb0JpZ0ksXG4gICAgQmFieWxvbkluZm9HcmlkSSxcbiAgICBCYWJ5bG9uSW5mb0dyaWRJdGVtSSxcbiAgICBCYWJ5bG9uSW5mb0ltZ0ksXG4gICAgQmFieWxvbkluZm9JbWdTbGlkZXJJLFxuICAgIEJhYnlsb25JbmZvSW1nU2xpZGVySXRlbUksXG4gICAgQmFieWxvbkluZm9JbnRyb0ksXG4gICAgQmFieWxvbkluZm9aaWdaYWdDb3VudGVySSxcbiAgICBCYWJ5bG9uSW5mb1ppZ3phZ1YySSxcbiAgICBCYWJ5bG9uSW5mb1ppZ3phZ1YySXRlbSxcbiAgICBCYWJ5bG9uSXRlbXNHcmlkSSxcbiAgICBCYWJ5bG9uTGFuZ3VhZ2VNb2RhbEksXG4gICAgQmFieWxvbkxlZ2FsSSxcbiAgICBCYWJ5bG9uTGlzQzRUeHRJY29JLFxuICAgIEJhYnlsb25Nb2RhbE11bHRpcGxlTW90b3JzSSxcbiAgICBCYWJ5bG9uTmV3c2xldHRlckksXG4gICAgQmFieWxvbk9mZmVyRGV0YWlsSSxcbiAgICBCYWJ5bG9uT2ZmZXJJLFxuICAgIEJhYnlsb25PZmZlclBvcHVwSSxcbiAgICBCYWJ5bG9uT2ZmZXJQb3B1cFYySSxcbiAgICBCYWJ5bG9uT2ZmZXJTbGlkZXJJLFxuICAgIEJhYnlsb25PZmZlcnNMaXN0SSxcbiAgICBCYWJ5bG9uT2ZmZXJzTGlzdEl0ZW0sXG4gICAgQmFieWxvblByZXNzTGlzdEksXG4gICAgQmFieWxvblJvb21JbmZvSSxcbiAgICBCYWJ5bG9uUm9vbXNDb2xzSSxcbiAgICBCYWJ5bG9uUm9vbXNHcmlkSSxcbiAgICBCYWJ5bG9uUm9vbXNMaXN0RXF1aXBtZW50LFxuICAgIEJhYnlsb25Sb29tc0xpc3RJLFxuICAgIEJhYnlsb25Sb29tc0xpc3RJdGVtLFxuICAgIEJhYnlsb25Sb29tc1NsaWRlckksXG4gICAgQmFieWxvblNlcnZpY2VzU2xpZGVySSxcbiAgICBCYWJ5bG9uU2xpZGVyMkNvbEl0ZW1JLFxuICAgIEJhYnlsb25TbGlkZXIyaXRlbXNJLFxuICAgIEJhYnlsb25TbGlkZXIzSXRlbXNJLFxuICAgIEJhYnlsb25TbGlkZXI0Y29sTGFiZWxzLFxuICAgIEJhYnlsb25TbGlkZXJJdGVtLFxuICAgIEJhYnlsb25TdGF0aWNGb290ZXJJLFxuICAgIEJhYnlsb25TdWJtZW51SSxcbiAgICBCYWJ5bG9uVGhhbmtzSSxcbiAgICBCYWJ5bG9uVG9wU2xpZGVySSxcbiAgICBCYWJ5bG9uVG9wU2xpZGVySXRlbSxcbiAgICBCYWJ5bG9uVG9wU2xpZGVyVGh1bWJzSSxcbiAgICBCYWJ5bG9uVG9wU2xpZGVyVjJJLFxuICAgIEJhYnlsb25Ub3BTbGlkZXJWaWRlb0ksXG4gICAgQmFieWxvbldlYm1hcEksXG4gICAgRHJvcGRvd25PcHRpb24sXG59IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY29yZSc7XG5pbXBvcnQgeyBCYWJ5bG9uR2xvYmFsTW9kYWxJIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb3JlL2JhYnlsb24tZ2xvYmFsLW1vZGFsJztcbmltcG9ydCB7IEJhYnlsb25JdGVtR3JpZEkgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvcmUvYmFieWxvbi1saXN0LWdyaWQvYmFieWxvbi1saXN0LWdyaWQuY29tcG9uZW50JztcbmltcG9ydCB7IEJhYnlsb25MaXN0R3JpZEkgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvcmUvYmFieWxvbi1saXN0LWdyaWQvYmFieWxvbi1saXN0LWdyaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25Nb2RhbFBvcHVwSSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY29yZS9iYWJ5bG9uLW1vZGFsLXBvcHVwJztcbmltcG9ydCB7IEJhYnlsb25TdGF0aWNGb290ZXJWMkkgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvcmUvYmFieWxvbi1zdGF0aWMtZm9vdGVyLXYyL2JhYnlsb24tc3RhdGljLWZvb3Rlci12Mi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUm9vbVNlcnZpY2VUeXBlIH0gZnJvbSAnLi4vLi4vRW51bS9zZXJ2aWNlcy5lbnVtJztcbmltcG9ydCB7IFZpZXdzVHlwZSB9IGZyb20gJy4uLy4uL0VudW0vdmlld3MuZW51bSc7XG5pbXBvcnQge1xuICAgIEJhYnlsb25CdXR0b25JLFxuICAgIEJhYnlsb25Db250YWN0SW5mb0ksXG4gICAgQmFieWxvbkRyb3Bkb3duSSxcbiAgICBCYWJ5bG9uRmxvYXRpbmdCdXR0b25zSSxcbiAgICBCYWJ5bG9uR2xvYmFsSWNvbkksXG4gICAgQmFieWxvbkltYWdlSSxcbiAgICBCYWJ5bG9uSW5wdXRJLFxuICAgIEJhYnlsb25NZW51QnV0dG9uSSxcbiAgICBCYWJ5bG9uTWVudUluZm9JLFxuICAgIEJhYnlsb25PZmZlckl0ZW1JLFxuICAgIEJhYnlsb25Sb29tRGV0YWlsSSxcbiAgICBCYWJ5bG9uVGV4dEluZm9JLFxuICAgIEJvZHlDb21wb25lbnQsXG4gICAgQ09NUE9ORU5UU19FWFRSQSxcbiAgICBDb25zdWx0VHlwZUksXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQmFieWxvbkFkdmFudGFnZUl0ZW1JIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWFkdmFudGFnZXMtaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFieWxvbkRlc3RpbmF0aW9uSSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi1kZXN0aW5hdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFieWxvbkV2ZW50SXRlbUkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24tZXZlbnQtaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFieWxvbkdsb2JhbEV4cGVyaWVuY2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24tZ2xvYmFsLWV4cGVyaWVuY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25HbG9iYWwgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24tZ2xvYmFsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWJ5bG9uR2xvYmFsc0ZhcUdyb3VwIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWdsb2JhbHMtZmFxcy1ncm91cC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFieWxvbkdsb2FibHNHYWxsZXJ5RmlsdGVyIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWdsb2JhbHMtZ2FsbGVyeS1maWx0ZXJzJztcbmltcG9ydCB7IEJhYnlsb25Ib3RlbEdsb2JhbEl0ZW0gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24taG90ZWwuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25JdGVtSSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBjbGVhbkRlZXAgfSBmcm9tICcuLi8uLi91dGlscy9jbGVhbi1wcm9wcyc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWxzJztcbmltcG9ydCB7IFNjcmVlblNpemVyU2VydmljZSB9IGZyb20gJy4uL3NjcmVlbi1zaXplcic7XG5pbXBvcnQgeyBTSVRFX0NPTkZJR19TRVJWSUNFX1RPS0VOIH0gZnJvbSAnLi9tYXBwZXIuc2VydmljZS50b2tlbic7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1hcHBlclNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2l0ZVN2YyA9IGluamVjdChTSVRFX0NPTkZJR19TRVJWSUNFX1RPS0VOKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNjcmVlblNpemVyID0gaW5qZWN0KFNjcmVlblNpemVyU2VydmljZSk7XG5cbiAgICBnZXQgaXNNaW5GdWxsVGFibGV0SW5zdGFudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NyZWVuU2l6ZXIubWluRnVsbFRhYmxldEluc3RhbnQoKTtcbiAgICB9XG5cbiAgICBoZWFkZXJCdXR0b25zID0gc2lnbmFsPFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgICBzaXRlSWQ6IFNpZ25hbDxudW1iZXI+ID0gY29tcHV0ZWQoXG4gICAgICAgICgpID0+IHRoaXMuc2l0ZVN2Yy53ZWJDb25maWdJbnN0YW50Py5zaXRlSURcbiAgICApO1xuXG4gICAgZmxvYXRpbmdCdXR0b25zPzogQmFieWxvbkZsb2F0aW5nQnV0dG9uc0k7XG5cbiAgICBwcml2YXRlIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuXG4gICAgZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICBpbWFnZTogSW1hZ2VSZXNwb25zZSB8IHVuZGVmaW5lZCxcbiAgICAgICAgaXNGaWd1cmUgPSB0cnVlXG4gICAgKTogc3RyaW5nIHwgQmFieWxvbkltYWdlSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBzZWxlY3RlZEltYWdlO1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2NyZWVuU2l6ZXIubW9iaWxlKCkpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/LlszNzVdPy53ZWJwO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzU21hbGxUYWJsZXRJbnN0YW50KCkpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/Lls1NDBdPy53ZWJwO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzTWVkaXVtVGFibGV0SW5zdGFudCgpKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bNzY4XT8ud2VicDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5pc0Z1bGxUYWJsZXRJbnN0YW50KCkpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/LlsxMDI0XT8ud2VicDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5pc1NtYWxsRGVza3RvcEluc3RhbnQoKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzEyODBdPy53ZWJwO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLm1pbk1lZGl1bURlc2t0b3AoKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8ucGF0aD8ud2VicDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bMTM2Nl0/LndlYnA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkSW1hZ2VcbiAgICAgICAgICAgID8gaXNGaWd1cmVcbiAgICAgICAgICAgICAgICA/IGAke3RoaXMuc2l0ZVN2Yy5jZG5JbWFnZXNJbnN0YW50fSR7c2VsZWN0ZWRJbWFnZX1gXG4gICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgc3JjOiBgJHt0aGlzLnNpdGVTdmMuY2RuSW1hZ2VzSW5zdGFudH0ke3NlbGVjdGVkSW1hZ2V9YCxcbiAgICAgICAgICAgICAgICAgICAgICBhbHQ6IGltYWdlPy5hbHQsXG4gICAgICAgICAgICAgICAgICAgICAgbmRUaXRsZTogaW1hZ2U/Lm5kVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltYWdlPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaW1hZ2U/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpbWFnZT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltYWdlPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGltYWdlPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpbWFnZT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBpbWFnZT8ub3JkZXIsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBnZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgaW1hZ2VzOiBJbWFnZVJlc3BvbnNlW10gfCB1bmRlZmluZWQsXG4gICAgICAgIGlzRmlndXJlID0gdHJ1ZVxuICAgICk6IChzdHJpbmcgfCBCYWJ5bG9uSW1hZ2VJKVtdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGltYWdlcz8ubWFwKChpbWcpID0+IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZywgaXNGaWd1cmUpISk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUFnZXNPcHRpb25zKFxuICAgICAgICBtYXhMZW5ndGg6IG51bWJlcixcbiAgICAgICAgbWluTGVuZ3RoID0gMFxuICAgICk6IERyb3Bkb3duT3B0aW9uW10ge1xuICAgICAgICBjb25zdCBvcHRpb25zOiBEcm9wZG93bk9wdGlvbltdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSBtaW5MZW5ndGg7IGkgPD0gbWF4TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIG9wdGlvbnMucHVzaCh7IGNvZGU6IGksIG5hbWU6IGkgPCAxMCA/IGAwJHtpfWAgOiBgJHtpfWAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuXG4gICAgbWFwR2xvYmFsc0JvZHlFeHRyYShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogYW55IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgbmFtZV9JZGVudGlmaWVyID1cbiAgICAgICAgICAgIHR5cGVvZiBwcm9wcyA9PSAnc3RyaW5nJyA/IHByb3BzIDogcHJvcHM/Lm5hbWVJZGVudGlmaWVyO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmFtZUlkZW50aWZpZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKG5hbWVfSWRlbnRpZmllciksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbWFwQm9keUV4dHJhKFxuICAgICAgICBib2R5OiBhbnlbXSB8IHVuZGVmaW5lZFxuICAgICk6IEJvZHlDb21wb25lbnQ8Q09NUE9ORU5UU19FWFRSQT5bXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGJvZHlNYXBwZWQ6IEJvZHlDb21wb25lbnQ8Q09NUE9ORU5UU19FWFRSQT5bXSB8IHVuZGVmaW5lZCA9XG4gICAgICAgICAgICBib2R5Py5tYXAoKGNvbXBvbmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudE1hcHBlZDogQm9keUNvbXBvbmVudDxDT01QT05FTlRTX0VYVFJBPiA9IHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiBjb21wb25lbnQub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiB7fSxcbiAgICAgICAgICAgICAgICB9IGFzIEJvZHlDb21wb25lbnQ8Q09NUE9ORU5UU19FWFRSQT47XG4gICAgICAgICAgICAgICAgc3dpdGNoIChjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdtZW51JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU3VibWVudShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgQmFieWxvblN1Ym1lbnVJO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPSAnbWVudSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnaG90ZWx0eXBlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR2xvYmFsc0JvZHlFeHRyYShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgQmFieWxvbkdsb2JhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID0gJ2hvdGVsdHlwZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnaG90ZWxjYXRlZ29yeSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdsb2JhbHNCb2R5RXh0cmEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIEJhYnlsb25HbG9iYWw7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9ICdob3RlbGNhdGVnb3J5JztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICd0aWNrZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHbG9iYWxzQm9keUV4dHJhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBCYWJ5bG9uR2xvYmFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPSAndGlja2VyJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRNYXBwZWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGJvZHlNYXBwZWQ7XG4gICAgfVxuXG4gICAgbWFwU3VibWVudShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblN1Ym1lbnVJIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBwcm9wcz8uaXRlbXM/LmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbS5zZWxlY3RlZCk7XG4gICAgICAgIGNvbnN0IHN1Ym1lbnUgPSB7XG4gICAgICAgICAgICBob3RlbDogcHJvcHM/LmhvdGVsLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5pdGVtc1xuICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0uYWN0aXZlKVxuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGluaz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGxpbms/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluaz8ubGlua1R5cGUgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2NvbXBvbmVudCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGluaz8ubGlua1R5cGUgPT09IDRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnYW5jaG9yX3N1Ym1lbnUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2ludGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0eWxlczogcHJvcHM/LnN0eWxlcyxcbiAgICAgICAgICAgIHNlbGVjdGVkOiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHNlbGVjdGVkPy5uYW1lLFxuICAgICAgICAgICAgICAgIHVybDogc2VsZWN0ZWQ/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICBzdHlsZXM6IHByb3BzPy5zdHlsZXMsXG4gICAgICAgICAgICB9IGFzIEJhYnlsb25CdXR0b25JLFxuICAgICAgICB9IGFzIEJhYnlsb25TdWJtZW51STtcblxuICAgICAgICByZXR1cm4gc3VibWVudTtcbiAgICB9XG5cbiAgICBtYXBDb21wb25lbnRzPFQ+KFxuICAgICAgICBib2R5OiBhbnlbXSxcbiAgICAgICAgYWRkb25zPzogQ29tcG9uZW50c0FkZG9uc1xuICAgICk6IEJvZHlDb21wb25lbnQ8VD5bXSB7XG4gICAgICAgIGlmICghYm9keSB8fCAhYm9keS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBbXSBhcyBCb2R5Q29tcG9uZW50PFQ+W107XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VhcmNoSG90ZWxTdHlsZXMgPSAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYm9keT8uZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0ubmFtZSA9PT0gJ3N0eWxlcycpO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBib2R5TWFwcGVkOiBCb2R5Q29tcG9uZW50PFQ+W10gPSBib2R5XG4gICAgICAgICAgICA/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAoY29tcG9uZW50KSA9PiBjb21wb25lbnQgIT09IG51bGwgJiYgY29tcG9uZW50ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgID8ubWFwKChjb21wb25lbnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRNYXBwZWQ6IEJvZHlDb21wb25lbnQ8VD4gPSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogY29tcG9uZW50Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczoge30sXG4gICAgICAgICAgICAgICAgICAgIGFsaWFzOiBjb21wb25lbnQuYWxpYXMsXG4gICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI6IGNvbXBvbmVudC5pZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I6IGNvbXBvbmVudC50ZXh0Y29sb3IsXG4gICAgICAgICAgICAgICAgfSBhcyBCb2R5Q29tcG9uZW50PFQ+O1xuXG4gICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudC5wcm9wcykge1xuICAgICAgICAgICAgICAgICAgICAvL0l0IGlzIG5lY2Vzc2FyeSwgb3RoZXJ3aXNlIGl0IGdpdmVzIGFuIGVycm9yIGFuZCBkb2VzIG5vdCBzaG93IGNvbXBvbmVudHNcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtb2R1bGU0MDQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcDQwNChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8tLS0tIExBWU9VVCBDT01QT05FTlRTIC0tLS0vL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RvcHNsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwVG9wU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndG9wc2xpZGVydmlkZW8nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRvcFNsaWRlclZpZGVvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0b3BzbGlkZXJ2MmxlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RvcHNsaWRlcnYycmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRvcFNsaWRlclYyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPT09ICd0b3BzbGlkZXJ2MnJpZ2h0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbWcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbWdyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2ltZ2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9JbWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9PT0gJ2luZm9pbWdyaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQudGV4dGNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW1nc2xpZGVycmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbWdzbGlkZXJsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvSW1nU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luZm9pbWdzbGlkZXJyaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbnRybyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0ludHJvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbzJpbWdsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvMmltZ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvMmltZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PSAnaW5mbzJpbWdyaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvMmNvbGltZ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvMmNvbGltZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PSAnaW5mbzJjb2xpbWdyaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvMmNvbGltZ2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm8yY29saW1nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPT09ICdpbmZvMmNvbGltZ2xlZnQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbzNpbWcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9JbWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC50ZXh0Y29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm96aWd6YWdsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvemlnemFncmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFppZ3phZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PSAnaW5mb3ppZ3phZ3JpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5pZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2dyaWQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9HcmlkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyMmNvbGxlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjJjb2xyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyQ29sbDIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9PT0gJ3NsaWRlcjJjb2xyaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIzY29sJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXJDb2xsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXI0Y29sJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXJDb2xsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpdGVtc2dyaWQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEl0ZW1zR3JpZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Jvb21zc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBSb29tc1NsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Jvb21zZ3JpZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUm9vbXNHcmlkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmFubmVyZ2FsbGVyeSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQmFubmVyR2FsbGVyeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWRnYWxsZXJ5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHcmlkR2FsbGVyeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jhbm5lcm5ld3NsZXR0ZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBCYW5uZXJOZXdzbGV0dGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcnNzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE9mZmVyU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8tLS0tIExBWU9VVCBDT01QT05FTlRTIEVORC0tLS0vL1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndGhhbmtzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUaGFua3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhY3Rmb3JtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb250YWN0Zm9ybXYyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBDb250YWN0Rm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG9ucz8uY29udGFjdE9mZmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG9ucz8uY29uc3VsdFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhY3Rob3cnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENvbnRhY3RIb3coXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3dlYm1hcCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwV2VibWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb250YWN0bWFwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBDb250YWN0TWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsZWdhbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTGVnYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Jvb21zY29scyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUm9vbXNDb2xzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyb29tZGV0YWlscyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUm9vbURldGFpbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndG9wc2xpZGVydGh1bWJzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUb3BTbGlkZXJUaHVtYnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2ZlYXR1cmVzc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGZWF0dXJlc1NsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmFubmVyaW5mbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQmFubmVySW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncm9vbXNsaXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBSb29tc0xpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbWluZ3Nvb24nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENvbWluZ1Nvb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyZGV0YWlsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlckRldGFpbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb2ZmZXJzbGlzdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJzTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5pc0hvbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2ZhcSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRmFxKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzdGF0aWNmb290ZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFN0YXRpY0Zvb3RlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ2FsbGVyeSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ2FsbGVyeXYyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaXNjMmltZ3ZpZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmFieWxvbmxpc2MyaW1ndmlkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHYWxsZXJ5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICduYXYnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE1lbnUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRvbnM/Lm1lbnVTb2NpYWxNZWRpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGFuZ3VhZ2VzbW9kYWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xhbmd1YWdlc21vZGF2Mic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTGFuZ3VhZ2VNb2RhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyM2l0ZW1zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXIzSXRlbXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaG90ZWxzc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBIb3RlbHNTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hvdGVsc2xpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEhvdGVsc0xpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm80aW1nJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvNEltZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2VydmljZXNzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNlcnZpY2VzU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbG9jYXRpb25hZGRyZXNzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb250YWN0YWRkcmVzcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQ29udGFjdEFkZHJlc3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2FkdmFudGFnZXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEFkdmFudGFnZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9iaWcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9CaWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm96aWd6YWd2MmxlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9aaWdaYWdWMihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5pZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvemlnemFndjJyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb1ppZ1phZ1YyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3RlcmNvbnRhY3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckNvbnRhY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm8yaW1nYmlnJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvMkltZ0JpZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVybGlua3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckxpbmtzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJsb2dvcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRm9vdGVyTG9nb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlclNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyc29jaWFscyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRm9vdGVyU29jaWFscyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyMml0ZW1zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXIyaXRlbXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXRpY2Zvb3RlcnYyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTdGF0aWNGb290ZXJ2MihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdGdyaWQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcExpc3RHcmlkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICduZXdzbGV0dGVybW9kYWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE5ld3NsZXR0ZXJNb2RhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaGVhZGludHJvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBIZWFkSW50cm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JyZWFkY3J1bWJzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCcmVhZGNydW1icyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyYmFubmVydjInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE9mZmVyQmFubmVyVjIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdnbG9iYWxtb2RhbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ2xvYmFsbW9kYWwyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHbG9iYWxNb2RhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21lbnUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VhcmNoSG90ZWxTdHlsZXMoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzWydzdHlsZXMnXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSG90ZWxTdHlsZXMoKVswXT8ucHJvcHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTdWJtZW51KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3BhbG9waWEnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEV4dGVybmFsU2NyaXB0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmxvZ2xpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJsb2dMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmxvZ2RldGFpbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQmxvZ0RldGFpbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyYmFubmVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlckJhbm5lcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21vZGFsbXVsdGlwbGVtb3RvcnMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBNb2RhbE11bHRpcGxlTW90b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtb2RhbHBvcHVwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBNb2RhbFBvcHVwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdwcmVzc2xpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFByZXNzTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYWN0aW9uYmFubmVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBBY3Rpb25CYW5uZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm96aWd6YWdjb3VudGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwSW5mb1ppZ1phZ0NvdW50ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyYzJpbWcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyQzJJbWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaXNjNHR4dGljbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTGlzQzRUeHRJY28oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR2xvYmFscyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG9ucz8uY29udGFjdE9mZmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG9ucz8uY29uc3VsdFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudE1hcHBlZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYm9keU1hcHBlZDtcbiAgICB9XG5cbiAgICBtYXBHbG9iYWxzKFxuICAgICAgICBjb21wb25lbnQ6IGFueSxcbiAgICAgICAgbmRQcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBuZFByb3BzQ29uc3VsdDogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogYW55IHtcbiAgICAgICAgaWYgKCFjb21wb25lbnQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGxldCB7IHByb3BzIH0gPSBjb21wb25lbnQ7XG4gICAgICAgIHByb3BzID0gcHJvcHMgPz8gY29tcG9uZW50O1xuXG4gICAgICAgIGNvbnN0IHZpZXdzID0gKGNvbXBvbmVudD8udmlld3MgYXMgQ29tcG9uZW50Vmlld1tdIHwgdW5kZWZpbmVkKT8uZmlsdGVyKFxuICAgICAgICAgICAgKHYpID0+ICEhdlxuICAgICAgICApO1xuXG4gICAgICAgIGxldCByaWdodFNpZGU6IGJvb2xlYW47XG4gICAgICAgIGxldCBsZWZ0U2lkZTogYm9vbGVhbjtcbiAgICAgICAgbGV0IGN1cnJlbnRWaWV3OiBudW1iZXIgPSAwO1xuICAgICAgICBsZXQgaWNvbnNMaWtlSW1hZ2VzID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHZpZXdzICYmIHZpZXdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZVZpZXcgPSB2aWV3cy5maW5kKCh2KSA9PiB2LmRlZmF1bHQpID8/IHZpZXdzWzBdO1xuXG4gICAgICAgICAgICByaWdodFNpZGUgPSBhY3RpdmVWaWV3Py5uYW1lID09PSBWaWV3c1R5cGUuUklHSFQ7XG4gICAgICAgICAgICBsZWZ0U2lkZSA9IGFjdGl2ZVZpZXc/Lm5hbWUgPT09IFZpZXdzVHlwZS5MRUZUO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKGFjdGl2ZVZpZXc/Lm5hbWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFZpZXdzVHlwZS5WSUVXMTpcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFZpZXcgPSAxO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFZpZXdzVHlwZS5WSUVXMjpcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFZpZXcgPSAyO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFZpZXdzVHlwZS5WSUVXMzpcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFZpZXcgPSAzO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWaWV3ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyDwn5SlIEZhbGxiYWNrIGN1YW5kbyB2aWV3cyBlcyB1bmRlZmluZWQgbyB2YWPDrW9cbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBjb21wb25lbnQ/Lm5hbWU/LnRvTG93ZXJDYXNlKCkgPz8gJyc7XG5cbiAgICAgICAgICAgIHJpZ2h0U2lkZSA9XG4gICAgICAgICAgICAgICAgbmFtZS5pbmNsdWRlcygncmlnaHQnKSB8fCBwcm9wcz8udGV4dHM/LnJpZ2h0ID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICAgICAgbGVmdFNpZGUgPVxuICAgICAgICAgICAgICAgIG5hbWUuaW5jbHVkZXMoJ2xlZnQnKSB8fCBwcm9wcz8udGV4dHM/LmxlZnQgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRGV0ZWN0IGJhY2tncm91bmRJY29uIChpY29ubyBjb21vIGJhY2tncm91bmQtaW1hZ2UgQ1NTKVxuICAgICAgICBpY29uc0xpa2VJbWFnZXMgPSBwcm9wcz8uaWNvbnNsaWtlaW1hZ2VzID8gdHJ1ZSA6IGZhbHNlO1xuXG4gICAgICAgIGxldCBzaG93RmlsdGVyczogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICBpZiAocHJvcHM/LnRleHRzPy5maWx0ZXJzKSBzaG93RmlsdGVycyA9IHRydWU7XG5cbiAgICAgICAgbGV0IGhpZGVTZXJ2aWNlc0ZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICBpZiAocHJvcHM/LnRleHRzPy5oaWRlU2VydmljZXNGaWx0ZXIpIGhpZGVTZXJ2aWNlc0ZpbHRlciA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgZ2V0TGlua3NBcnJheSA9IChsaW5rc09iajogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWxpbmtzT2JqKSByZXR1cm4gW107XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShsaW5rc09iaikpIHJldHVybiBsaW5rc09iajtcblxuICAgICAgICAgICAgLy8gU2kgZXMgdW4gb2JqZXRvLCBleHRyYWUgc3VzIHZhbG9yZXMgeSBmaWx0cmEgbG9zIHF1ZSB0ZW5nYW4gbGlua1ZhbHVlIChwYXJhIGV2aXRhciBjb2dlciBmb290ZXJMaW5rcyBwb3IgYWNjaWRlbnRlKVxuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMobGlua3NPYmopLmZpbHRlcihcbiAgICAgICAgICAgICAgICAodmFsOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgIHZhbCAmJlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgICAgICAgICAoJ2xpbmtWYWx1ZScgaW4gdmFsIHx8ICdsaW5rX3ZhbHVlJyBpbiB2YWwpXG4gICAgICAgICAgICApO1xuICAgICAgICB9O1xuXG4gICAgICAgIGxldCBoYXNCYWNrZ3JvdW5kOiBib29sZWFuID0gZmFsc2U7XG4gICAgICAgIGhhc0JhY2tncm91bmQgPSAhIShwcm9wcz8udGV4dHM/LmJhY2tncm91bmQgfHwgcHJvcHM/LnRleHRzPy5mb25kbyk7XG5cbiAgICAgICAgbGV0IG1heENvbHVtbnM6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgbWF4Q29sdW1ucyA9XG4gICAgICAgICAgICBOdW1iZXIocHJvcHM/LnRleHRzPy5tYXhjb2x1bW5zID8/IHByb3BzPy50ZXh0cz8ubWF4Q29sdW1ucykgfHxcbiAgICAgICAgICAgIHVuZGVmaW5lZDtcblxuICAgICAgICBsZXQgcmVzdWx0OiBhbnk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICAgICAgaWRlbnRpZmllcjogY29tcG9uZW50Py5pZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgIGhhc0JhY2tncm91bmQ6IGhhc0JhY2tncm91bmQsXG4gICAgICAgICAgICAgICAgYWN0aXZlVmlldzogY3VycmVudFZpZXcsXG4gICAgICAgICAgICAgICAgc2hvd0ZpbHRlcnM6IHNob3dGaWx0ZXJzLFxuICAgICAgICAgICAgICAgIGhpZGVTZXJ2aWNlc0ZpbHRlcjogaGlkZVNlcnZpY2VzRmlsdGVyLFxuICAgICAgICAgICAgICAgIG1heENvbHVtbnM6IG1heENvbHVtbnMsXG4gICAgICAgICAgICAgICAgYm9keWV4dHJhOiB0aGlzLm1hcEdsb2JhbHNCb2R5RXh0cmEocHJvcHMpLFxuICAgICAgICAgICAgICAgIHRleHRzOiB0aGlzLm1hcEdsb2JhbFRleHRzKHByb3BzPy50ZXh0cykgYXMgQmFieWxvblRleHRJbmZvSSxcbiAgICAgICAgICAgICAgICB2aWRlbzogcHJvcHMudmlkZW8gPz8gcHJvcHMuVmlkZW8gPz8gcHJvcHMudGV4dHM/LnZpZGVvLFxuICAgICAgICAgICAgICAgIGljb25zTGlrZUltYWdlczogcHJvcHM/Lmljb25zTGlrZUltYWdlcyA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICByaWdodFNpZGU6IHJpZ2h0U2lkZSxcbiAgICAgICAgICAgICAgICBsZWZ0U2lkZTogbGVmdFNpZGUsXG4gICAgICAgICAgICAgICAgaXRlbXM6IHRoaXMubWFwR2xvYmFsSXRlbXMocHJvcHMpLFxuICAgICAgICAgICAgICAgIGxpc3RzOiB0aGlzLm1hcEdsb2JhbHNGYXFzKHByb3BzPy5GYXFzKSxcbiAgICAgICAgICAgICAgICBzZXJ2aWNlczogdGhpcy5tYXBHbG9iYWxTZXJ2aWNlcyhcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnNlcnZpY2VzU2VydmljZSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmVxdWlwbWVudCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnNlcnZpY2VzU2VydmljZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZXZlbnRzOiB0aGlzLm1hcEV2ZW50c0dsb2JhbChwcm9wcz8uZXZlbnRzID8/IHByb3BzPy5ldmVudCksXG4gICAgICAgICAgICAgICAgb2ZmZXJzOiB0aGlzLm1hcE9mZmVyc0dsb2JhbChwcm9wcz8ub2ZmZXJzKSxcbiAgICAgICAgICAgICAgICBvZmZlcjogdGhpcy5tYXBPZmZlckRldGFpbChwcm9wcyksXG4gICAgICAgICAgICAgICAgbXVsdGltZWRpYTogdGhpcy5tYXBJbWFnZXMocHJvcHM/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHRoaXMubWFwQWRkcmVzcyhwcm9wcz8uYWRkcmVzcyksXG4gICAgICAgICAgICAgICAgYWRkcmVzc0hvdGVsczogdGhpcy5tYXBHbG9iYWxBZGRyZXNzSG90ZWxzKHByb3BzKSxcbiAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgZ2V0TGlua3NBcnJheShwcm9wcz8ubGlua3MpLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0TGlua3NBcnJheShwcm9wcz8ubGlua3MpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy5saW5rcz8uTGlua3M/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy5saW5rcz8uTGlua3M/LlswXVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy5saW5rcz8uY29udGFjdD8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjb250YWN0bGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5jb250YWN0Py5bMF0pLFxuICAgICAgICAgICAgICAgIGZvb3RlckxpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uZm9vdGVyTGlua3M/LlswXSksXG4gICAgICAgICAgICAgICAgcGFnZXM6IChcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnBhZ2VzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGxpbms/LnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICAgICAgICAgKSBhcyBCYWJ5bG9uQnV0dG9uSVtdXG4gICAgICAgICAgICAgICAgKT8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAobGluaykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsudXJsPy5zcGxpdD8uKCcvJylbMV0gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmxvY2F0ZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuLmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGFkdmFudGFnZXM6IHRoaXMubWFwQWR2YW50YWdlc0dsb2JhbChcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LlZlbnRhamFzID8/XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8uQWR2YW50YWdlcyA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lmxpc3QgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5saXN0cyA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lkxpc3RzID8/XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8uTGlzdFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNlZU1vcmU6IHByb3BzPy50ZXh0cz8uYWR2YW50YWdlc3NlZW1vcmUsXG4gICAgICAgICAgICAgICAgc2VlTGVzczogcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2Vzc2VlbGVzcyxcbiAgICAgICAgICAgICAgICBpbWFnZTogcHJvcHMuYWR2YW50YWdlc2ltYWdlXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5hZHZhbnRhZ2VzaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcm9vbXM6IHRoaXMubWFwUm9vbURldGFpbHMocHJvcHM/LnJvb21zID8/IHByb3BzPy5yb29tKSxcbiAgICAgICAgICAgICAgICBjb250YWN0SW5mbzogdGhpcy5tYXBDb250YWN0SW5mbyhwcm9wcz8udGV4dHMpLFxuICAgICAgICAgICAgICAgIHNvY2lhbE1lZGlhOiBwcm9wcz8uc29jaWFsTWVkaWE/Lm1hcCgoc206IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogc20/Lmljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBzbT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogc20/LnVybCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBob3RlbHM6IHRoaXMubWFwSG90ZWxzR2xvYmFsKHByb3BzPy5ob3RlbHMpLFxuICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uczogdGhpcy5tYXBHbG9iYWxEZXN0aW5hdGlvbnMocHJvcHM/LmRlc3RpbmF0aW9ucyksXG4gICAgICAgICAgICAgICAgZXhwZXJpZW5jZXM6IHRoaXMubWFwR2xvYmFsRXhwZXJpZW5jZXMoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5leHBlcmllbmNlID8/IHByb3BzPy5leHBlcmllbmNlc1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgY29uc3VsdFR5cGVzOiB0aGlzLm1hcEdsb2JhbENvbnN1bHRUeXBlcyhwcm9wcywgbmRQcm9wc0NvbnN1bHQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcnM6IHRoaXMubWFwR2xvYmFsc0ZpbHRlcnMocHJvcHM/LmZpbHRlcnMpLFxuICAgICAgICAgICAgfSBhcyBCYWJ5bG9uR2xvYmFsO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRVJST1IgRkFUQUwgQ1JFQU5ETyBSRVNVTFQgRU4gbWFwR2xvYmFsczonLCBlcnJvcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2xlYW5EZWVwKHJlc3VsdCwge1xuICAgICAgICAgICAgcmVtb3ZlTnVsbDogdHJ1ZSxcbiAgICAgICAgICAgIHJlbW92ZUVtcHR5U3RyaW5nOiB0cnVlLFxuICAgICAgICAgICAgcHJ1bmVFbXB0eTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbWFwR2xvYmFsQWRkcmVzc0hvdGVscyhwcm9wczogYW55KTogQmFieWxvbkFkZHJlc3NJdGVtW10gfCB1bmRlZmluZWQge1xuICAgICAgICAvLyAxLiBJbnRlbnRhbW9zIG9idGVuZXIgbGEgZnVlbnRlIGRlIGRhdG9zIChjb250ZW1wbGFtb3MgYW1ib3Mgbm9tYnJlcyBkZSBwcm9waWVkYWQpXG4gICAgICAgIGNvbnN0IHJhd1NvdXJjZSA9IHByb3BzPy5ob3RlbEFkZHJlc3NlcyA/PyBwcm9wcz8uYWRkcmVzc0hvdGVscztcblxuICAgICAgICBpZiAocmF3U291cmNlKSB7XG4gICAgICAgICAgICAvLyBBcGxhbmFtb3MgZWwgYXJyYXkgc2luIGltcG9ydGFyIGxhIHByb2Z1bmRpZGFkIFtbey4uLn1dXSAtPiBbey4uLn1dXG4gICAgICAgICAgICBjb25zdCBmbGF0QWRkcmVzc2VzID0gQXJyYXkuaXNBcnJheShyYXdTb3VyY2UpXG4gICAgICAgICAgICAgICAgPyByYXdTb3VyY2UuZmxhdChJbmZpbml0eSlcbiAgICAgICAgICAgICAgICA6IFtyYXdTb3VyY2VdO1xuXG4gICAgICAgICAgICAvLyBGaWx0cmFtb3MgcGFyYSBhc2VndXJhciBxdWUgc29sbyBwcm9jZXNhbW9zIG9iamV0b3MgdsOhbGlkb3NcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkQWRkcmVzc2VzID0gZmxhdEFkZHJlc3Nlcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGFkZHJlc3M6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgYWRkcmVzcyAmJlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgYWRkcmVzcyA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgICAgICAgICAgIUFycmF5LmlzQXJyYXkoYWRkcmVzcylcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmICh2YWxpZEFkZHJlc3Nlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkQWRkcmVzc2VzLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGFkZHJlc3M6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGFkZHJlc3MuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYWRkcmVzcy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6IGFkZHJlc3MuYWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeTogYWRkcmVzcy5jYXRlZ29yeU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2l0eTogYWRkcmVzcy5jaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpbmNlOiBhZGRyZXNzLnByb3ZpbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IGFkZHJlc3MuY291bnRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcDogYWRkcmVzcy5jcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBMaW5rOiBhZGRyZXNzLm1hcExpbmssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhZGRyZXNzLmxpbmsgPz8gYWRkcmVzcy51cmwsIC8vIFNvcG9ydGUgcGFyYSBhbWJvcyBub21icmVzIGRlIGxpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaG9uZTogYWRkcmVzcy5waG9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWFpbDogYWRkcmVzcy5lbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsX2FkZHJlc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MuZnVsbEFkZHJlc3MgPz8gYWRkcmVzcy5mdWxsX2FkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Z3M6IGFkZHJlc3Muc2x1Z3MsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQWRkcmVzc0l0ZW1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMi4gQ2FzbyBGYWxsYmFjazogTWFwZW8gZGluw6FtaWNvIGRlc2RlIGxvcyB0ZXh0b3MgKGFkZHJlc3NsaXN0WFgpXG4gICAgICAgIHJldHVybiB0aGlzLm1hcER5bmFtaWNBZGRyZXNzZXNGcm9tVGV4dHMocHJvcHM/LnRleHRzKTtcbiAgICB9XG5cbiAgICAvKiogSGVscGVyIHBhcmEgbGltcGlhciBlbCBjw7NkaWdvIHByaW5jaXBhbCAqL1xuICAgIHByaXZhdGUgbWFwRHluYW1pY0FkZHJlc3Nlc0Zyb21UZXh0cyhcbiAgICAgICAgdGV4dHM6IGFueVxuICAgICk6IEJhYnlsb25BZGRyZXNzSXRlbVtdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCF0ZXh0cykgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCBhZGRyZXNzZXNNYXA6IHsgW2tleTogc3RyaW5nXTogUGFydGlhbDxCYWJ5bG9uQWRkcmVzc0l0ZW0+IH0gPSB7fTtcblxuICAgICAgICBPYmplY3Qua2V5cyh0ZXh0cykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoJ2FkZHJlc3NsaXN0JykgJiYgdGV4dHNba2V5XSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0ga2V5Lm1hdGNoKC9hZGRyZXNzbGlzdChcXGQrKSguKikvKTtcbiAgICAgICAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBtYXRjaFsxXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBtYXRjaFsyXTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWFkZHJlc3Nlc01hcFtpbmRleF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3Nlc01hcFtpbmRleF0gPSB7IGlkOiBpbmRleCB9O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0ZXh0c1trZXldO1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdUaXRsZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzTWFwW2luZGV4XS5uYW1lID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdBZGRyZXNzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzZXNNYXBbaW5kZXhdLmFkZHJlc3MgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzZXNNYXBbaW5kZXhdLmZ1bGxfYWRkcmVzcyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnVGVsZic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzTWFwW2luZGV4XS5waG9uZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnRW1haWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3Nlc01hcFtpbmRleF0uZW1haWwgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LnZhbHVlcyhhZGRyZXNzZXNNYXApIGFzIEJhYnlsb25BZGRyZXNzSXRlbVtdO1xuICAgICAgICByZXR1cm4gcmVzdWx0Lmxlbmd0aCA+IDAgPyByZXN1bHQgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwR2xvYmFsRXhwZXJpZW5jZXMoXG4gICAgICAgIGV4cGVyaWVuY2VzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uR2xvYmFsRXhwZXJpZW5jZVtdIHtcbiAgICAgICAgcmV0dXJuIGV4cGVyaWVuY2VzXG4gICAgICAgICAgICA/LmZpbHRlcigoZXhwZXJpZW5jZTogYW55KSA9PiBleHBlcmllbmNlLmFjdGl2ZSlcbiAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgIChleHBlcmllbmNlOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGV4cGVyaWVuY2UuYWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYTogdGhpcy5tYXBNdWx0aW1lZGlhKGV4cGVyaWVuY2U/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYTI6IHRoaXMubWFwSW1hZ2VzKGV4cGVyaWVuY2U/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZXJpZW5jZT8ubGluayA/PyBleHBlcmllbmNlPy5saW5rc1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoZXhwZXJpZW5jZT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogZXhwZXJpZW5jZT8ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0czogdGhpcy5tYXBHbG9iYWxUZXh0cyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlcmllbmNlPy50ZXh0c1xuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBCYWJ5bG9uVGV4dEluZm9JLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGV4cGVyaWVuY2U/LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZUlkZW50aWZpZXI6IGV4cGVyaWVuY2U/Lm5hbWVJZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBleHBlcmllbmNlPy51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBleHBlcmllbmNlPy50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG90ZWxzOiBleHBlcmllbmNlPy5ob3RlbHM/Lm1hcCgoaG90ZWw6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogaG90ZWw/LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVJZGVudGlmaWVyOiBob3RlbD8ubmFtZUlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Ib3RlbEdsb2JhbEl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgbWFwR2xvYmFsc0ZpbHRlcnMoXG4gICAgICAgIGZpbHRlcnM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25HbG9hYmxzR2FsbGVyeUZpbHRlciB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmaWx0ZXJzOiBmaWx0ZXJzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbDogaXRlbS5hbGwsXG4gICAgICAgICAgICAgICAgICAgICAgICByb29tOiBpdGVtLnJvb20sXG4gICAgICAgICAgICAgICAgICAgICAgICByb29tczogaXRlbS5yb29tcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkdhbGxlcnlGaWx0ZXJcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZXM6IGZpbHRlcnNcbiAgICAgICAgICAgICAgICA/LnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgYWNjOiB7IG11bHRpbWVkaWE6IGFueVtdOyBmaWx0ZXJJbmRleDogbnVtYmVyIH1bXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVySW5kZXg6IG51bWJlclxuICAgICAgICAgICAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIubXVsdGltZWRpYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG11bHRpbWVkaWFXaXRoRmlsdGVyID0gZmlsdGVyLm11bHRpbWVkaWEubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZmlsdGVySW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE6IG11bHRpbWVkaWFXaXRoRmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVySW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5mbGF0TWFwKCh7IG11bHRpbWVkaWEgfTogYW55KSA9PiBtdWx0aW1lZGlhKVxuICAgICAgICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZywgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogaW1nPy5maWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uR2FsbGVyeUl0ZW1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25HbG9hYmxzR2FsbGVyeUZpbHRlcjtcbiAgICB9XG5cbiAgICBtYXBHbG9iYWxDb25zdWx0VHlwZXMoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5kUHJvcHNDb25zdWx0OiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBhbnkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBjb25zdWx0VHlwZXMgPSBwcm9wcz8uY29uc3VsdFR5cGVzPy5bMF0/LmNvbnN1bHRUeXBlSWRcbiAgICAgICAgICAgID8gcHJvcHM/LmNvbnN1bHRUeXBlc1xuICAgICAgICAgICAgOiBwcm9wcz8ubGVuZ3RoICYmIHByb3BzPy5bMF0/LmNvbnN1bHRUeXBlc1xuICAgICAgICAgICAgICA/IHByb3BzXG4gICAgICAgICAgICAgIDogbmRQcm9wc0NvbnN1bHQ7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvcHRpb25zOiBjb25zdWx0VHlwZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VsdFR5cGVJZDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wLmNvbnN1bHRfdHlwZV9pZCA/PyBwcm9wLmNvbnN1bHRUeXBlSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBwcm9wLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcHJvcC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmRyb3Bkb3duUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclJlcXVpcmVkLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcEdsb2JhbERlc3RpbmF0aW9ucyhcbiAgICAgICAgZGVzdGluYXRpb25zOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uRGVzdGluYXRpb25JW10gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIWRlc3RpbmF0aW9ucykgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCBub3JtYWxpemVEZXN0aW5hdGlvbiA9IChcbiAgICAgICAgICAgIGQ6IGFueSxcbiAgICAgICAgICAgIGluZGV4OiBudW1iZXJcbiAgICAgICAgKTogQmFieWxvbkRlc3RpbmF0aW9uSSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBkLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogW10sXG4gICAgICAgICAgICAgICAgICAgIGhvdGVsczogW10sXG4gICAgICAgICAgICAgICAgICAgIHRleHRzOiB7fSxcbiAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25EZXN0aW5hdGlvbkk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaWQ6IGQ/LmlkID8/IGluZGV4LFxuICAgICAgICAgICAgICAgIG5hbWU6IGQ/Lm5hbWUgPz8gZD8udGl0bGUgPz8gJycsXG4gICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhkPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhkPy5saW5rcyksXG4gICAgICAgICAgICAgICAgbXVsdGltZWRpYTogdGhpcy5tYXBJbWFnZXMoZD8ubXVsdGltZWRpYSksXG4gICAgICAgICAgICAgICAgaG90ZWxzOiB0aGlzLm1hcEhvdGVsc0dsb2JhbChkPy5ob3RlbHMpLFxuICAgICAgICAgICAgICAgIHRleHRzOiBkPy50ZXh0c1xuICAgICAgICAgICAgICAgICAgICA/IHRoaXMubWFwR2xvYmFsVGV4dHMoZD8udGV4dHMpXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5tYXBHbG9iYWxUZXh0cyhkKSxcbiAgICAgICAgICAgIH0gYXMgQmFieWxvbkRlc3RpbmF0aW9uSTtcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkZXN0aW5hdGlvbnMpKSB7XG4gICAgICAgICAgICBjb25zdCBsb29rc0xpa2VGbGF0TGlzdCA9IGRlc3RpbmF0aW9ucy5ldmVyeShcbiAgICAgICAgICAgICAgICAoeCkgPT5cbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHggPT09ICdzdHJpbmcnIHx8XG4gICAgICAgICAgICAgICAgICAgICh4ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAoeC5pZCAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5uYW1lICE9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LnRpdGxlICE9PSB1bmRlZmluZWQpKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGxvb2tzTGlrZUZsYXRMaXN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9ucy5tYXAobm9ybWFsaXplRGVzdGluYXRpb24pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB0b0xpc3QgPSAoZ3JvdXA6IGFueSk6IGFueVtdID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShncm91cCkpIHJldHVybiBncm91cDtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShncm91cD8uaXRlbXMpKSByZXR1cm4gZ3JvdXAuaXRlbXM7XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZ3JvdXA/LmRlc3RpbmF0aW9ucykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBncm91cC5kZXN0aW5hdGlvbnM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9ucy5mbGF0TWFwKChncm91cDogYW55KSA9PlxuICAgICAgICAgICAgICAgIHRvTGlzdChncm91cCkubWFwKG5vcm1hbGl6ZURlc3RpbmF0aW9uKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRlc3RpbmF0aW9ucz8uaXRlbXMpKVxuICAgICAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9ucy5pdGVtcy5tYXAobm9ybWFsaXplRGVzdGluYXRpb24pO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkZXN0aW5hdGlvbnM/LmRlc3RpbmF0aW9ucykpXG4gICAgICAgICAgICByZXR1cm4gZGVzdGluYXRpb25zLmRlc3RpbmF0aW9ucy5tYXAobm9ybWFsaXplRGVzdGluYXRpb24pO1xuXG4gICAgICAgIHJldHVybiBbbm9ybWFsaXplRGVzdGluYXRpb24oZGVzdGluYXRpb25zLCAwKV07XG4gICAgfVxuXG4gICAgbWFwR2xvYmFsVGV4dHModGV4dHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25UZXh0SW5mb0kge1xuICAgICAgICBpZiAoIXRleHRzKSByZXR1cm4ge30gYXMgQmFieWxvblRleHRJbmZvSTtcblxuICAgICAgICBjb25zdCBsb3lhbHR5VGFibGVUZXh0cyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHRleHRzKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKFtrZXldKSA9PlxuICAgICAgICAgICAgICAgICAgICAvXnRhYmxhZmlkZWxpemFjaW5fKHRpdHVsb3xkZXNjcmlwY2lvbnxzdWJ0aXR1bG98dGV4dG8pXFxkKyQvLnRlc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IFtrZXksIHRoaXMuZ2V0VGV4dFZhbHVlKHZhbHVlKV0pXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gQcOxYWRpciBkaW7DoW1pY2FtZW50ZSBsYXMgaGVhZGluZ190YWdfe2tleX0gZGV0ZWN0YWRhc1xuICAgICAgICBjb25zdCBoZWFkaW5nVGFncyA9IHRoaXMuZXh0cmFjdEhlYWRpbmdUYWdzKHRleHRzKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5wcmV0aXRsZSA/PyB0ZXh0cz8uUHJldGl0dWxvKSxcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8udGl0bGUgPz8gdGV4dHM/LlRpdHVsbyksXG4gICAgICAgICAgICB0aXRsZTE6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy50aXRsZTEpLFxuICAgICAgICAgICAgdGl0bGUyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8udGl0bGUyKSxcbiAgICAgICAgICAgIHRpdGxlMzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnRpdGxlMyksXG4gICAgICAgICAgICBzdWJ0aXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnN1YnRpdGxlKSxcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5uYW1lKSxcbiAgICAgICAgICAgIG1vcmVJbmZvVGV4dDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm1vcmVJbmZvVGV4dCksXG4gICAgICAgICAgICBvZmZlclRhZzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm9mZmVyVGFnKSxcbiAgICAgICAgICAgIHRleHQ6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy50ZXh0ID8/IHRleHRzPy5UZXh0byksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmRlc2NyaXB0aW9uKSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uMTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmRlc2NyaXB0aW9uMSksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5kZXNjcmlwdGlvbjIpLFxuICAgICAgICAgICAgZGVzY3JpcHRpb24zOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uZGVzY3JpcHRpb24zKSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9udGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5kZXNjcmlwdGlvbnRpdGxlKSxcbiAgICAgICAgICAgIGhpZGVJbmZvVGV4dDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmhpZGVJbmZvVGV4dCksXG4gICAgICAgICAgICBoaWRlVGV4dDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmhpZGRlbiksXG4gICAgICAgICAgICBpdGVtMTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lml0ZW0xKSxcbiAgICAgICAgICAgIGl0ZW0xVGV4dDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lml0ZW0xVGV4dCksXG4gICAgICAgICAgICBtYW5kYXRvcnlUZXh0OiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubWFuZGF0b3J5VGV4dCksXG4gICAgICAgICAgICBub3RlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubm90ZSksXG4gICAgICAgICAgICBjb25kaXRpb25zVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5jb25kaXRpb25zVGl0bGUpLFxuICAgICAgICAgICAgYWRkaXRpb25hbDogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmFkZGl0aW9uYWwgPz8gdGV4dHM/LkFkZGl0aW9uYWxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBhZGRpdGlvbmFsMTogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmFkZGl0aW9uYWwxID8/IHRleHRzPy5BZGRpdGlvbmFsMVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWwyOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uYWRkaXRpb25hbDIgPz8gdGV4dHM/LkFkZGl0aW9uYWwyXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYWRkaXRpb25hbDM6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5hZGRpdGlvbmFsMyA/PyB0ZXh0cz8uQWRkaXRpb25hbDNcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGNvbmRpdGlvbnM6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5jb25kaXRpb25zKSxcbiAgICAgICAgICAgIHVybDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnVybCksXG5cbiAgICAgICAgICAgIGFkdmFudGFnZXN0aXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmFkdmFudGFnZXN0aXRsZSksXG4gICAgICAgICAgICBhZHZhbnRhZ2Vzc3VidGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5hZHZhbnRhZ2Vzc3VidGl0bGUpLFxuXG4gICAgICAgICAgICBsZXZlbDE6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5sZXZlbDEgPz8gdGV4dHM/LmxldmUxKSxcbiAgICAgICAgICAgIGxldmVsMjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmxldmVsMiA/PyB0ZXh0cz8ubGV2ZTIpLFxuICAgICAgICAgICAgbGV2ZWwzOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubGV2ZWwzID8/IHRleHRzPy5sZXZlMyksXG4gICAgICAgICAgICBsZXZlMTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmxldmUxKSxcbiAgICAgICAgICAgIGxldmUyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubGV2ZTIpLFxuICAgICAgICAgICAgbGV2ZTM6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5sZXZlMyksXG5cbiAgICAgICAgICAgIHdoYXRzYXBwOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ud2hhdHNhcHApLFxuICAgICAgICAgICAgc2Nyb2xsdGV4dDogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LnNjcm9sbHRleHQgPz8gdGV4dHM/LnNjcm9sbERvd25cbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGFkZHJlc3M6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5hZGRyZXNzKSxcbiAgICAgICAgICAgIGFkZHJlc3N0aXRsZTogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmFkZHJlc3N0aXRsZSA/PyB0ZXh0cz8uYWRkcmVzc1RpdGxlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYmFubmVydGV4dDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmJhbm5lcnRleHQpLFxuICAgICAgICAgICAgY29udGFjdHRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uY29udGFjdHRpdGxlID8/IHRleHRzPy5jb250YWN0VGl0bGVcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb3B5cmlnaHR0ZXh0OiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uY29weXJpZ2h0dGV4dCA/PyB0ZXh0cz8uY29weXJpZ2h0XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdG9wQnV0dG9uOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8udG9wQnV0dG9uKSxcbiAgICAgICAgICAgIGFib3V0VGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5hYm91dFRpdGxlKSxcbiAgICAgICAgICAgIGdydXBvVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ncnVwb1RpdGxlKSxcbiAgICAgICAgICAgIGhlbHBUaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmhlbHBUaXRsZSksXG4gICAgICAgICAgICBjb250YWN0T2ZmaWNlVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5jb250YWN0T2ZmaWNlVGl0bGUpLFxuXG4gICAgICAgICAgICB0ZXh0QWRqQ3Y6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy50ZXh0QWRqQ3YpLFxuICAgICAgICAgICAgdGV4dEFkakN2RXJyb3I6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy50ZXh0QWRqQ3ZFcnJvciksXG4gICAgICAgICAgICBTZWxlY3RJdGVtVGV4dDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LlNlbGVjdEl0ZW1UZXh0KSxcblxuICAgICAgICAgICAgLy8gU1ZHIC8gZXNwZWNpYWxlc1xuICAgICAgICAgICAgc3ZnOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc3ZnKSxcbiAgICAgICAgICAgIHNlbGVjdG9yVGV4dHM6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5zZWxlY3RvclRleHRzKSxcblxuICAgICAgICAgICAgZmVhdHVyZXBpbGxzbnVtYmVyU3ZnaWNvbjE6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5mZWF0dXJlcGlsbHNudW1iZXJTdmdpY29uMVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZlYXR1cmVwaWxsc251bWJlclN2Z2ljb24yOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZmVhdHVyZXBpbGxzbnVtYmVyU3ZnaWNvbjJcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBmZWF0dXJlcGlsbHNudW1iZXJTdmdpY29uMzogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmZlYXR1cmVwaWxsc251bWJlclN2Z2ljb24zXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBmZWF0dXJlcGlsbHNudW1iZXJTdmdudW1iZXIxOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZmVhdHVyZXBpbGxzbnVtYmVyU3ZnbnVtYmVyMVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZlYXR1cmVwaWxsc251bWJlclN2Z251bWJlcjI6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5mZWF0dXJlcGlsbHNudW1iZXJTdmdudW1iZXIyXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZmVhdHVyZXBpbGxzbnVtYmVyU3ZnbnVtYmVyMzogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmZlYXR1cmVwaWxsc251bWJlclN2Z251bWJlcjNcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGZlYXR1cmVwaWxsc251bWJlclN2Z25hbWUxOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZmVhdHVyZXBpbGxzbnVtYmVyU3ZnbmFtZTFcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBmZWF0dXJlcGlsbHNudW1iZXJTdmduYW1lMjogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmZlYXR1cmVwaWxsc251bWJlclN2Z25hbWUyXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZmVhdHVyZXBpbGxzbnVtYmVyU3ZnbmFtZTM6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5mZWF0dXJlcGlsbHNudW1iZXJTdmduYW1lM1xuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgZmVhdHVyZXBpbGxzbnVtYmVyU3Znc3VidGl0bGUxOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZmVhdHVyZXBpbGxzbnVtYmVyU3Znc3VidGl0bGUxXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZmVhdHVyZXBpbGxzbnVtYmVyU3Znc3VidGl0bGUyOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZmVhdHVyZXBpbGxzbnVtYmVyU3Znc3VidGl0bGUyXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZmVhdHVyZXBpbGxzbnVtYmVyU3Znc3VidGl0bGUzOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZmVhdHVyZXBpbGxzbnVtYmVyU3Znc3VidGl0bGUzXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcG9ydGFkYWhvdGVsdjF2aWRlbzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnBvcnRhZGFob3RlbHYxdmlkZW8pLFxuXG4gICAgICAgICAgICB0b3BzbGlkZXJ2aWRlb3Yyc3ZnOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8udG9wc2xpZGVydmlkZW92MnN2ZyksXG4gICAgICAgICAgICB0b3BzbGlkZXJ2aWRlb3YydmlkZW86IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy50b3BzbGlkZXJ2aWRlb3YydmlkZW9cbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIG9ubHlBZHVsdHM6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5vbmx5QWR1bHRzKSxcbiAgICAgICAgICAgIGhvdGVsQ2F0ZWdvcnk6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ob3RlbENhdGVnb3J5KSxcbiAgICAgICAgICAgIGhvdGVsVHlwZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmhvdGVsVHlwZSksXG4gICAgICAgICAgICBkZXN0aW5hdGlvbnM6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5kZXN0aW5hdGlvbnMpLFxuICAgICAgICAgICAgY2xlYW5GaWx0ZXJzOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY2xlYW5GaWx0ZXJzKSxcbiAgICAgICAgICAgIG5vdEZvdW5kOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubm90Rm91bmQpLFxuICAgICAgICAgICAgY29udGFjdEVtYWlsOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY29udGFjdEVtYWlsKSxcbiAgICAgICAgICAgIGNvbnRhY3RPZmZpY2U6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5jb250YWN0T2ZmaWNlKSxcbiAgICAgICAgICAgIGNvbnRhY3RUZWw6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5jb250YWN0VGVsKSxcbiAgICAgICAgICAgIG1hcmNhOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubWFyY2EpLFxuXG4gICAgICAgICAgICBlcnJvclJlZ2lzdGVyU3Vic2NyaWJlcjogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LkVycm9yUmVnaXN0ZXJTdWJzY3JpYmVyXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZXJyb3JzdWJzY3JpYmVyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uRXJyb3JzdWJzY3JpYmVyKSxcbiAgICAgICAgICAgIGlucHV0TGFiZWw6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5pbnB1dExhYmVsKSxcbiAgICAgICAgICAgIGlucHV0UGxhY2Vob2xkZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5pbnB1dFBsYWNlaG9sZGVyKSxcbiAgICAgICAgICAgIG5ld3NFcnJvckVtYWlsOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubmV3c0Vycm9yRW1haWwpLFxuICAgICAgICAgICAgc3VjY2Vzc3N1YnNjcmliZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5zdWNjZXNzc3Vic2NyaWJlciksXG5cbiAgICAgICAgICAgIG1hcFVybDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm1hcFVybCA/PyB0ZXh0cz8ubWFwdXJsKSxcbiAgICAgICAgICAgIHJvb21zOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ucm9vbXMpLFxuICAgICAgICAgICAgY2F0ZWdvcmllczogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNhdGVnb3JpZXMpLFxuICAgICAgICAgICAgYWxsOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uYWxsKSxcblxuICAgICAgICAgICAgaG93R2V0RGVzY3JpcHRpb246IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ob3dHZXREZXNjcmlwdGlvbiksXG4gICAgICAgICAgICBob3dHZXREZXNjcmlwdGlvbjI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ob3dHZXREZXNjcmlwdGlvbjIpLFxuICAgICAgICAgICAgaG93R2V0VGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ob3dHZXRUaXRsZSksXG4gICAgICAgICAgICBob3dHZXRUaXRsZTI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ob3dHZXRUaXRsZTIpLFxuICAgICAgICAgICAgY29udGFjdERlc2NyaXB0aW9uOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY29udGFjdERlc2NyaXB0aW9uKSxcbiAgICAgICAgICAgIGNvbnRhY3RUaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNvbnRhY3RUaXRsZSksXG5cbiAgICAgICAgICAgIG5ld3NsZXR0ZXJFcnJvcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm5ld3NsZXR0ZXJFcnJvciksXG4gICAgICAgICAgICBuZXdzbGV0dGVyRmFpbDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm5ld3NsZXR0ZXJGYWlsKSxcbiAgICAgICAgICAgIG5ld3NsZXR0ZXJTdWNjZXNzZnVsbDogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/Lm5ld3NsZXR0ZXJTdWNjZXNzZnVsbFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG5ld3NsZXR0ZXJUaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm5ld3NsZXR0ZXJUaXRsZSksXG4gICAgICAgICAgICBldmVudHM6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ldmVudHMpLFxuXG4gICAgICAgICAgICBhZGRyZXNzVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5hZGRyZXNzVGl0bGUpLFxuICAgICAgICAgICAgYWRkcmVzc0xpbmVzOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uYWRkcmVzc0xpbmVzKSxcblxuICAgICAgICAgICAgcmVjZXB0aW9uVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5yZWNlcHRpb25UaXRsZSksXG4gICAgICAgICAgICBncHNUaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lmdwc1RpdGxlKSxcbiAgICAgICAgICAgIGZvbGxvd1RpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uZm9sbG93VGl0bGUpLFxuICAgICAgICAgICAgaG93VG9UaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lmhvd1RvVGl0bGUpLFxuICAgICAgICAgICAgaG93VG9QcmV0aXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lmhvd1RvUHJldGl0bGUpLFxuICAgICAgICAgICAgZmlyc3RUaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmZpcnN0VGl0bGUpLFxuICAgICAgICAgICAgc2Vjb25kVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5zZWNvbmRUaXRsZSksXG4gICAgICAgICAgICB0aGlyZFRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8udGhpcmRUaXRsZSksXG4gICAgICAgICAgICBmaXJzdERlc2NyaXB0aW9uOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uZmlyc3REZXNjcmlwdGlvbiksXG4gICAgICAgICAgICBzZWNvbmREZXNjcmlwdGlvbjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnNlY29uZERlc2NyaXB0aW9uKSxcbiAgICAgICAgICAgIHRoaXJkRGVzY3JpcHRpb246IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy50aGlyZERlc2NyaXB0aW9uKSxcbiAgICAgICAgICAgIGNvbnRhY3RJbmZvOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY29udGFjdEluZm8pLFxuICAgICAgICAgICAgc29jaWFsVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5zb2NpYWxUaXRsZSksXG4gICAgICAgICAgICBsYXRpdHVkZVRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubGF0aXR1ZGVUaXRsZSksXG4gICAgICAgICAgICBsb25naXR1ZGVUaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmxvbmdpdHVkZVRpdGxlKSxcbiAgICAgICAgICAgIHNlY29uZGFyeVRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc2Vjb25kYXJ5VGl0bGUpLFxuICAgICAgICAgICAgc2Vjb25kYXJ5UHJldGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5zZWNvbmRhcnlQcmV0aXRsZSksXG4gICAgICAgICAgICBzY2hlZHVsZUluZm86IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5zY2hlZHVsZUluZm8pLFxuICAgICAgICAgICAgb25lRWxlbWVudDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm9uZUVsZW1lbnQpLFxuICAgICAgICAgICAgcmVjZXB0aW9uOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cy5yZWNlcHRpb24pLFxuXG4gICAgICAgICAgICByb29tVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5yb29tVGl0bGUpLFxuXG4gICAgICAgICAgICAvLyBDb21wYXRpYmlsaWRhZCBleHBsw61jaXRhIHBhcmEgbcOzZHVsb3MgbGVnYWN5IGNvbiBjbGF2ZXMgZW4gY2FzdGVsbGFub1xuICAgICAgICAgICAgUHJldGl0dWxvOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uUHJldGl0dWxvKSxcbiAgICAgICAgICAgIFRpdHVsbzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LlRpdHVsbyksXG4gICAgICAgICAgICBUZXh0bzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LlRleHRvKSxcbiAgICAgICAgICAgICdUaXR1bG8tb2ZlcnRhcyc6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5bJ1RpdHVsby1vZmVydGFzJ10pLFxuICAgICAgICAgICAgJ1RpdHVsby1kZXRhbGxlLTEnOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uWydUaXR1bG8tZGV0YWxsZS0xJ10pLFxuICAgICAgICAgICAgJ1RpdHVsby1kZXRhbGxlLTInOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uWydUaXR1bG8tZGV0YWxsZS0yJ10pLFxuICAgICAgICAgICAgJ1RpdHVsby1kZXRhbGxlLTMnOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uWydUaXR1bG8tZGV0YWxsZS0zJ10pLFxuICAgICAgICAgICAgJ1RpdHVsby1kZXRhbGxlLTQnOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uWydUaXR1bG8tZGV0YWxsZS00J10pLFxuICAgICAgICAgICAgJ1TDrXR1bG8tZGV0YWxsZS0xJzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LlsnVMOtdHVsby1kZXRhbGxlLTEnXSksXG4gICAgICAgICAgICAnVMOtdHVsby1kZXRhbGxlLTInOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uWydUw610dWxvLWRldGFsbGUtMiddKSxcbiAgICAgICAgICAgICdUw610dWxvLWRldGFsbGUtMyc6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5bJ1TDrXR1bG8tZGV0YWxsZS0zJ10pLFxuICAgICAgICAgICAgJ1TDrXR1bG8tZGV0YWxsZS00JzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LlsnVMOtdHVsby1kZXRhbGxlLTQnXSksXG4gICAgICAgICAgICAnU3VidGl0dWxvLWRldGFsbGUtMSc6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ1N1YnRpdHVsby1kZXRhbGxlLTEnXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdTdWJ0aXR1bG8tZGV0YWxsZS0yJzogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LlsnU3VidGl0dWxvLWRldGFsbGUtMiddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ1N1YnRpdHVsby1kZXRhbGxlLTMnOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydTdWJ0aXR1bG8tZGV0YWxsZS0zJ11cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAnU3VidGl0dWxvLWRldGFsbGUtNCc6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ1N1YnRpdHVsby1kZXRhbGxlLTQnXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdTdWLDrXR1bG8tZGV0YWxsZS0xJzogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LlsnU3Viw610dWxvLWRldGFsbGUtMSddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ1N1YsOtdHVsby1kZXRhbGxlLTInOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydTdWLDrXR1bG8tZGV0YWxsZS0yJ11cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAnU3Viw610dWxvLWRldGFsbGUtMyc6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ1N1YsOtdHVsby1kZXRhbGxlLTMnXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdTdWLDrXR1bG8tZGV0YWxsZS00JzogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LlsnU3Viw610dWxvLWRldGFsbGUtNCddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ1N1Yml0dWxvLWRldGFsbGUtMSc6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ1N1Yml0dWxvLWRldGFsbGUtMSddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ1N1Yml0dWxvLWRldGFsbGUtMic6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ1N1Yml0dWxvLWRldGFsbGUtMiddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ1N1Yml0dWxvLWRldGFsbGUtMyc6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ1N1Yml0dWxvLWRldGFsbGUtMyddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ1N1Yml0dWxvLWRldGFsbGUtNCc6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ1N1Yml0dWxvLWRldGFsbGUtNCddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ0Rlc2NyaXBjaW9uLWRldGFsbGUtMSc6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ0Rlc2NyaXBjaW9uLWRldGFsbGUtMSddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ0Rlc2NyaXBjaW9uLWRldGFsbGUtMic6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ0Rlc2NyaXBjaW9uLWRldGFsbGUtMiddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ0Rlc2NyaXBjaW9uLWRldGFsbGUtMyc6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ0Rlc2NyaXBjaW9uLWRldGFsbGUtMyddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ0Rlc2NyaXBjaW9uLWRldGFsbGUtNCc6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ0Rlc2NyaXBjaW9uLWRldGFsbGUtNCddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ0Rlc2NyaXBjacOzbi1kZXRhbGxlLTEnOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydEZXNjcmlwY2nDs24tZGV0YWxsZS0xJ11cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAnRGVzY3JpcGNpw7NuLWRldGFsbGUtMic6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ0Rlc2NyaXBjacOzbi1kZXRhbGxlLTInXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdEZXNjcmlwY2nDs24tZGV0YWxsZS0zJzogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LlsnRGVzY3JpcGNpw7NuLWRldGFsbGUtMyddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ0Rlc2NyaXBjacOzbi1kZXRhbGxlLTQnOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydEZXNjcmlwY2nDs24tZGV0YWxsZS00J11cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpY29uOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uaWNvbiksXG4gICAgICAgICAgICBjb21wb2ZlcnRhc19pY29uOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY29tcG9mZXJ0YXNfaWNvbiksXG4gICAgICAgICAgICAuLi5sb3lhbHR5VGFibGVUZXh0cyxcblxuICAgICAgICAgICAgbmV4dDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm5leHQpLFxuICAgICAgICAgICAgcHJldjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnByZXYpLFxuICAgICAgICAgICAgZG93bmxvYWQ6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5kb3dubG9hZCksXG4gICAgICAgICAgICBuZFRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubmRUaXRsZSksXG4gICAgICAgICAgICBtYWluVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5tYWFpblRpdGxlKSxcblxuICAgICAgICAgICAgYXR0YWNoRmlsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmF0dGFjaEZpbGUpLFxuICAgICAgICAgICAgYXR0YWNobWVudDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmF0dGFjaG1lbnQpLFxuICAgICAgICAgICAgYXR0YWNobWVudEVycm9yOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uYXR0YWNobWVudEVycm9yKSxcbiAgICAgICAgICAgIGF0dGFjaG1lbnRQbGFjZWhvbGRlcjogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmF0dGFjaG1lbnRQbGFjZWhvbGRlclxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNoZWNrYm94OiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY2hlY2tib3gpLFxuICAgICAgICAgICAgY2hlY2tib3gyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY2hlY2tib3gyKSxcbiAgICAgICAgICAgIGNoZWNrYm94MkVycm9yOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY2hlY2tib3gyRXJyb3IpLFxuICAgICAgICAgICAgY2hlY2tib3hFcnJvcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNoZWNrYm94RXJyb3IpLFxuICAgICAgICAgICAgZHJvcGRvd25FcnJvcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmRyb3Bkb3duRXJyb3IpLFxuICAgICAgICAgICAgZHJvcGRvd25QbGFjZWhvbGRlcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmRyb3Bkb3duUGxhY2Vob2xkZXIpLFxuICAgICAgICAgICAgZHJvcGRvd25QbGFjZWhvbGRlcjI6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5kcm9wZG93blBsYWNlaG9sZGVyMlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGVtYWlsOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uZW1haWwpLFxuICAgICAgICAgICAgZW1haWxFcnJvcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmVtYWlsRXJyb3IpLFxuICAgICAgICAgICAgZW1haWxQbGFjZWhvbGRlcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmVtYWlsUGxhY2Vob2xkZXIpLFxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uZXJyb3JNZXNzYWdlKSxcbiAgICAgICAgICAgIGpvaW5UaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmpvaW5UaXRsZSksXG4gICAgICAgICAgICBsYXN0TmFtZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lmxhc3ROYW1lKSxcbiAgICAgICAgICAgIGxhc3ROYW1lRXJyb3I6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5sYXN0TmFtZUVycm9yKSxcbiAgICAgICAgICAgIGxhc3ROYW1lUGxhY2Vob2xkZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5sYXN0TmFtZVBsYWNlaG9sZGVyKSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5tZXNzYWdlKSxcbiAgICAgICAgICAgIG1lc3NhZ2VFcnJvcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm1lc3NhZ2VFcnJvciksXG4gICAgICAgICAgICBtZXNzYWdlUGxhY2Vob2xkZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5tZXNzYWdlUGxhY2Vob2xkZXIpLFxuICAgICAgICAgICAgbmFtZUVycm9yOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubmFtZUVycm9yKSxcbiAgICAgICAgICAgIG5hbWVQbGFjZWhvbGRlcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm5hbWVQbGFjZWhvbGRlciksXG4gICAgICAgICAgICBwaG9uZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnBob25lKSxcbiAgICAgICAgICAgIHBob25lRXJyb3I6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5waG9uZUVycm9yKSxcbiAgICAgICAgICAgIHBob25lUGxhY2Vob2xkZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5waG9uZVBsYWNlaG9sZGVyKSxcbiAgICAgICAgICAgIHByZXNlbnRhY2lvbjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnByZXNlbnRhY2lvbiksXG4gICAgICAgICAgICBwcmVzZW50YWNpb25QbGFjZWhvbGRlcjogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LnByZXNlbnRhY2lvblBsYWNlaG9sZGVyXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcmVxdWlyZWRGaWVsZDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnJlcXVpcmVkRmllbGQpLFxuICAgICAgICAgICAgc3VibWl0OiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc3VibWl0KSxcbiAgICAgICAgICAgIHN1Y2Nlc3NNZXNzYWdlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc3VjY2Vzc01lc3NhZ2UpLFxuXG4gICAgICAgICAgICBzZXJ2aWNlc3RpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc2VydmljZXN0aXRsZSksXG4gICAgICAgICAgICBoaWRlc2VydmljZXM6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5oaWRlc2VydmljZXMpLFxuICAgICAgICAgICAgc2hvd3NlcnZpY2VzOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc2hvd3NlcnZpY2VzKSxcbiAgICAgICAgICAgIHNlcnZpY2VzT25GaWx0ZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5zZXJ2aWNlc09uRmlsdGVyKSxcblxuICAgICAgICAgICAgLi4uaGVhZGluZ1RhZ3MsXG4gICAgICAgIH0gYXMgQmFieWxvblRleHRJbmZvSTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQnVzY2EgZW4gdGV4dHMgdG9kYXMgbGFzIHByb3BpZWRhZGVzIHF1ZSBzZWFuIG9iamV0byB5IHRlbmdhbiBjb250YWluIHkvbyB0YWcsXG4gICAgICogeSBkZXZ1ZWx2ZSB1biBvYmpldG8gY29uIGNsYXZlcyBoZWFkaW5nX3RhZ197a2V5fSB5IHZhbG9yIHsgY29udGVudCwgdGFnIH1cbiAgICAgKi9cbiAgICBwcml2YXRlIGV4dHJhY3RIZWFkaW5nVGFncyhcbiAgICAgICAgdGV4dHM6IGFueVxuICAgICk6IFJlY29yZDxzdHJpbmcsIHsgY29udGVudDogc3RyaW5nOyB0YWc/OiBzdHJpbmcgfT4ge1xuICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHsgY29udGVudDogc3RyaW5nOyB0YWc/OiBzdHJpbmcgfT4gPSB7fTtcbiAgICAgICAgaWYgKCF0ZXh0cyB8fCB0eXBlb2YgdGV4dHMgIT09ICdvYmplY3QnKSByZXR1cm4gcmVzdWx0O1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0ZXh0cykpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IHRleHRzW2tleV07XG4gICAgICAgICAgICBpZiAodmFsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmICdjb250YWluJyBpbiB2YWwpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbYGhlYWRpbmdfdGFnXyR7a2V5fWBdID0ge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiB2YWwuY29udGFpbixcbiAgICAgICAgICAgICAgICAgICAgdGFnOiB2YWwudGFnLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRleHRWYWx1ZSh0ZXh0OiBhbnkpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXRleHQpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgICAgLy8gc3RyaW5nIHBsYW5vXG4gICAgICAgIGlmICh0eXBlb2YgdGV4dCA9PT0gJ3N0cmluZycpIHJldHVybiB0ZXh0O1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0ZXh0Py52YWx1ZSA/P1xuICAgICAgICAgICAgdGV4dD8udGV4dCA/P1xuICAgICAgICAgICAgdGV4dD8ubGFiZWwgPz9cbiAgICAgICAgICAgIHRleHQ/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzVGV4dFRva2VuVmFsdWUodGV4dDogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGV4dCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHZhbHVlID1cbiAgICAgICAgICAgIHR5cGVvZiB0ZXh0ID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgID8gdGV4dFxuICAgICAgICAgICAgICAgIDogKHRleHQ/LmNvbnRhaW4gPz8gdGV4dD8udmFsdWUgPz8gdGV4dD8udGV4dCA/PyB0ZXh0Py5sYWJlbCk7XG5cbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZS50cmltKCkubGVuZ3RoID4gMCA6ICEhdmFsdWU7XG4gICAgfVxuXG4gICAgbWFwQ29uc3VsdFR5cGVzR2xvYmFsKGNvbnN1bHRzOiBhbnkgfCB1bmRlZmluZWQpOiBDb25zdWx0VHlwZUlbXSB7XG4gICAgICAgIHJldHVybiBjb25zdWx0cz8ubWFwKFxuICAgICAgICAgICAgKGNvbnN1bHQ6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICBpZDogY29uc3VsdD8uaWQsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvbnN1bHQ/Lm5hbWUsXG4gICAgICAgICAgICAgICAgfSkgYXMgQ29uc3VsdFR5cGVJXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbWFwSG90ZWxzR2xvYmFsKGhvdGVsczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkhvdGVsR2xvYmFsSXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIGhvdGVsc1xuICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgKGhvdGVsOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogaG90ZWw/LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaG90ZWw/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaG90ZWw/Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHRoaXMubWFwR2xvYmFsVGV4dHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaG90ZWw/LnRleHRzXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIEJhYnlsb25UZXh0SW5mb0ksXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhOiB0aGlzLm1hcE11bHRpbWVkaWEoaG90ZWw/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBob3RlbD8ubXVsdGltZWRpYT8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLm1hcE11bHRpbWVkaWEoaG90ZWw/Lm11bHRpbWVkaWEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhob3RlbD8ubGluayA/PyBob3RlbD8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhob3RlbD8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWFpbDogaG90ZWw/LmVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkZXNzOiBob3RlbD8uYWRkcmVzcyxcblxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsSW5jbHVzaXZlOiBob3RlbD8uYWxsSW5jbHVzaXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmVhY2hDbHViOiBob3RlbD8uYmVhY2hDbHViLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tJblRpbWU6IGhvdGVsPy5jaGVja0luVGltZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrT3V0VGltZTogaG90ZWw/LmNoZWNrT3V0VGltZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IGhvdGVsPy5jaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2luZ0Zyb206IGhvdGVsPy5jbG9zaW5nRnJvbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NpbmdUbzogaG90ZWw/LmNsb3NpbmdUbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IGhvdGVsPy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgY3A6IGhvdGVsPy5jcCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uczogaG90ZWw/LmRlc3RpbmF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodGVkOiBob3RlbD8uaGlnaGxpZ2h0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXQ6IGhvdGVsPy5sYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb246IGhvdGVsPy5sb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXVuZHJ5OiBob3RlbD8ubGF1bmRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsaXR5OiBob3RlbD8ubG9jYWxpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXBMaW5rOiBob3RlbD8ubWFwTGluayxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZmVyczogaG90ZWw/Lm9mZmVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBob25lOiBob3RlbD8ucGhvbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm92aW5jZTogaG90ZWw/LnByb3ZpbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGlja2VyOiBob3RlbD8udGlja2VyLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l0ZUhvdGVsczogaG90ZWw/LnNpdGVIb3RlbHMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlc0FkdmFudGFnZXM6IGhvdGVsPy5zZXJ2aWNlc0FkdmFudGFnZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlc0NoYXJhY3RlcmlzdGljczogaG90ZWw/LnNlcnZpY2VzQ2hhcmFjdGVyaXN0aWNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZXNIb3RlbEFwcDogaG90ZWw/LnNlcnZpY2VzSG90ZWxBcHAsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlc0xpc3Q6IGhvdGVsPy5zZXJ2aWNlc0xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlc0xvY2F0aW9uOiBob3RlbD8uc2VydmljZXNMb2NhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzU2VydmljZTogaG90ZWw/LnNlcnZpY2VzU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlczogaG90ZWw/LnN0eWxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ubHlBZHVsdHM6IGhvdGVsPy5vbmx5QWR1bHRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRzOiB0aGlzLm1hcEdsb2JhbEhvdGVsRXZlbnRzKGhvdGVsPy5ldmVudHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG90ZWxjYXRlZ29yeTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3RlbD8uaG90ZWxDYXRlZ29yeSA/PyBob3RlbD8uaG90ZWxjYXRlZ29yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdGVsdHlwZTogaG90ZWw/LmhvdGVsVHlwZSA/PyBob3RlbD8uaG90ZWx0eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyY2E6IGhvdGVsPy5tYXJjYSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkhvdGVsR2xvYmFsSXRlbVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgPy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gKGEub3JkZXIgfHwgOTk5OSkgLSAoYi5vcmRlciB8fCA5OTk5KSk7XG4gICAgfVxuXG4gICAgbWFwR2xvYmFsSG90ZWxFdmVudHMoZXZlbnRzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uRXZlbnRJdGVtSVtdIHtcbiAgICAgICAgaWYgKCFldmVudHMpIHJldHVybiBbXTtcbiAgICAgICAgbGV0IGFycjogYW55W10gPSBbXTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZXZlbnRzKSkge1xuICAgICAgICAgICAgYXJyID0gZXZlbnRzO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBldmVudHMgPT09ICdvYmplY3QnICYmIGV2ZW50cyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgYXJyID0gT2JqZWN0LnZhbHVlcyhldmVudHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcnJcbiAgICAgICAgICAgIC5maWx0ZXIoKGV2ZW50OiBhbnkpID0+IGV2ZW50ICYmIGV2ZW50Lm5hbWVJZGVudGlmaWVyKVxuICAgICAgICAgICAgLm1hcCgoZXZlbnQ6IGFueSkgPT4gKHsgbmFtZTogZXZlbnQubmFtZUlkZW50aWZpZXIgfSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFwR2xvYmFsSXRlbXMocHJvcHM6IGFueSk6IGFueSB7XG4gICAgICAgIC8vIEZ1ZW50ZSBwcmluY2lwYWwgZGUgaXRlbXNcbiAgICAgICAgY29uc3QgcmF3SXRlbXMgPVxuICAgICAgICAgICAgcHJvcHM/Lml0ZW1zID8/XG4gICAgICAgICAgICBwcm9wcz8uSXRlbXMgPz9cbiAgICAgICAgICAgIHByb3BzPy5zZXJ2aWNlc1NlcnZpY2UgPz9cbiAgICAgICAgICAgIHByb3BzPy52ZW50YWphcyA/P1xuICAgICAgICAgICAgcHJvcHMuVmVudGFqYXMgPz9cbiAgICAgICAgICAgIHByb3BzLmFkdmFudGFnZXMgPz9cbiAgICAgICAgICAgIHByb3BzLkFkdmFudGFnZXMgPz9cbiAgICAgICAgICAgIHVuZGVmaW5lZDtcblxuICAgICAgICAvLyBJbnRlbnRhbW9zIG1hcGVhciBpdGVtcyBpbWFnZW5lc1xuICAgICAgICBpZiAoIXJhd0l0ZW1zICYmIHByb3BzPy5tdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBjb25zdCBtYXBwZWRJbWcgPSB0aGlzLm1hcEltYWdlcyhwcm9wcz8ubXVsdGltZWRpYSk7XG4gICAgICAgICAgICBpZiAobWFwcGVkSW1nICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWFwcGVkSW1nLmltYWdlbmVzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW50ZW50YW1vcyBtYXBlYXIgaXRlbXMgZXhwZXJpZW5jaWFzXG4gICAgICAgIGlmICghcmF3SXRlbXMgJiYgcHJvcHM/LmV4cGVyaWVuY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hcHBlZEl0ZW1zID0gdGhpcy5tYXBJdGVtcyhwcm9wcz8uZXhwZXJpZW5jZSk7XG4gICAgICAgICAgICBpZiAobWFwcGVkSXRlbXMgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtYXBwZWRJdGVtcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vSW50ZW50YW1vcyBtYXBlYXIgaXRlbXMg4oCcbm9ybWFsZXPigJ1cbiAgICAgICAgY29uc3QgbWFwcGVkSXRlbXMgPSB0aGlzLm1hcEl0ZW1zKHJhd0l0ZW1zKTtcbiAgICAgICAgaWYgKG1hcHBlZEl0ZW1zICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBwZWRJdGVtcztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNpIG5vIGhheSBpdGVtcywgcHJvYmFtb3MgY29uIHJvb21zXG4gICAgICAgIGNvbnN0IG1hcHBlZFJvb21zID0gdGhpcy5tYXBSb29tRGV0YWlscyhwcm9wcz8ucm9vbXMpO1xuICAgICAgICBpZiAobWFwcGVkUm9vbXMgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG1hcHBlZFJvb21zO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gb2ZmZXJzXG4gICAgICAgIGNvbnN0IG1hcHBlZE9mZmVycyA9IHRoaXMubWFwT2ZmZXJzR2xvYmFsKHByb3BzPy5vZmZlcnMpO1xuICAgICAgICBpZiAobWFwcGVkT2ZmZXJzICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBwZWRPZmZlcnM7XG4gICAgICAgIH1cblxuICAgICAgICAvLyA1KSBob3RlbGVzXG4gICAgICAgIHJldHVybiB0aGlzLm1hcEhvdGVsc0dsb2JhbChwcm9wcz8uaG90ZWxzKTtcbiAgICB9XG5cbiAgICBtYXBBZGRyZXNzKGFkZHJlc3M6IGFueSB8IGFueVtdIHwgdW5kZWZpbmVkKTogQmFieWxvbkFkZHJlc3NJdGVtW10ge1xuICAgICAgICBpZiAoIWFkZHJlc3MpIHJldHVybiBbXTtcblxuICAgICAgICBjb25zdCBsaXN0ID0gQXJyYXkuaXNBcnJheShhZGRyZXNzKSA/IGFkZHJlc3MgOiBbYWRkcmVzc107XG5cbiAgICAgICAgcmV0dXJuIGxpc3QubWFwKChhOiBhbnkpID0+ICh7XG4gICAgICAgICAgICBpZDogYT8uaWQsXG4gICAgICAgICAgICBuYW1lOiBhPy5uYW1lLFxuICAgICAgICAgICAgYWRkcmVzczogYT8uYWRkcmVzcyxcbiAgICAgICAgICAgIGNpdHk6IGE/LmNpdHksXG4gICAgICAgICAgICBsb2NhbGl0eTogYT8ubG9jYWxpdHksXG4gICAgICAgICAgICBwcm92aW5jZTogYT8ucHJvdmluY2UsXG4gICAgICAgICAgICBjb3VudHJ5OiBhPy5jb3VudHJ5LFxuICAgICAgICAgICAgY3A6IGE/LmNwLFxuICAgICAgICAgICAgdXJsOiBhPy5saW5rLFxuICAgICAgICAgICAgcGhvbmU6IGE/LnBob25lLFxuICAgICAgICAgICAgcGhvbmUyOiBhPy5waG9uZTIsXG4gICAgICAgICAgICBlbWFpbDogYT8uZW1haWwsXG4gICAgICAgICAgICBmdWxsX2FkZHJlc3M6IGE/LmZ1bGxBZGRyZXNzLFxuICAgICAgICAgICAgbGF0OiBhPy5sYXQsXG4gICAgICAgICAgICBsb246IGE/LmxvbixcbiAgICAgICAgICAgIGxpbms6IGE/LmxpbmssXG4gICAgICAgICAgICBzbHVnczogYT8uc2x1Z3MsXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBtYXBTdGF0aWNGb290ZXJ2Myhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblN0YXRpY0Zvb3Rlckkge1xuICAgICAgICByZXR1cm4ge30gYXMgYW55O1xuICAgIH1cblxuICAgIG1hcEdsb2JhbFNlcnZpY2VzKFxuICAgICAgICBzZXJ2aWNlczogQmFieWxvbkdsb2JhbEljb25JW10gfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uR2xvYmFsSWNvbklbXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBzZXJ2aWNlcz8ubWFwKFxuICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi1gICsgaXRlbT8uY2xhc3MsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogaXRlbT8udHlwZSxcbiAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uR2xvYmFsSWNvbklcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBtYXBDb250YWN0SW5mbyh0ZXh0czogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkNvbnRhY3RJbmZvSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgbm90ZTogdGV4dHM/Lm5vdGUsXG4gICAgICAgICAgICB0ZXh0OiB0ZXh0cz8udGV4dCxcbiAgICAgICAgICAgIGljb246IHRleHRzPy5pY29uLFxuICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBjb25kaXRpb25zOiB0ZXh0cz8uY29uZGl0aW9ucyxcbiAgICAgICAgICAgIGNvbmRpdGlvbnMyOiB0ZXh0cz8uY29uZGl0aW9uczIsXG4gICAgICAgICAgICBkcm9wZG93blBsYWNlaG9sZGVyOiB0ZXh0cz8uZHJvcGRvd25QbGFjZWhvbGRlcixcbiAgICAgICAgICAgIGRyb3Bkb3duVGl0bGU6IHRleHRzPy5kcm9wZG93blRpdGxlLFxuICAgICAgICAgICAgaG90ZWxEcm9wVGl0bGU6IHRleHRzPy5ob3RlbERyb3BUaXRsZSxcbiAgICAgICAgICAgIGhvdGVsRHJvcFBsYWNlaG9sZGVyOiB0ZXh0cz8uaG90ZWxEcm9wUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICBob3RlbERyb3BFcnJvcjogdGV4dHM/LmhvdGVsRHJvcEVycm9yLFxuICAgICAgICAgICAgZXJyb3JFbWFpbDogdGV4dHM/LmVycm9yRW1haWwsXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2U6IHRleHRzPy5lcnJvck1lc3NhZ2UsXG4gICAgICAgICAgICBlcnJvck5hbWU6IHRleHRzPy5lcnJvck5hbWUsXG4gICAgICAgICAgICBlcnJvclBob25lOiB0ZXh0cz8uZXJyb3JQaG9uZSxcbiAgICAgICAgICAgIGVycm9yUmVxdWlyZWQ6IHRleHRzPy5lcnJvclJlcXVpcmVkLFxuICAgICAgICAgICAgaW5wdXRFbWFpbDogdGV4dHM/LmlucHV0RW1haWwsXG4gICAgICAgICAgICBpbnB1dEVtYWlsUGxhY2VIb2xkZXI6IHRleHRzPy5pbnB1dEVtYWlsUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICBpbnB1dE1lc3NhZ2U6IHRleHRzPy5pbnB1dE1lc3NhZ2UsXG4gICAgICAgICAgICBpbnB1dE1lc3NhZ2VQbGFjZUhvbGRlcjogdGV4dHM/LmlucHV0TWVzc2FnZVBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgaW5wdXROYW1lOiB0ZXh0cz8uaW5wdXROYW1lLFxuICAgICAgICAgICAgaW5wdXROYW1lUGxhY2VIb2xkZXI6IHRleHRzPy5pbnB1dE5hbWVQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIGlucHV0UGhvbmU6IHRleHRzPy5pbnB1dFBob25lLFxuICAgICAgICAgICAgaW5wdXRQaG9uZVBsYWNlSG9sZGVyOiB0ZXh0cz8uaW5wdXRQaG9uZVBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgaW5wdXRsYXN0bmFtZTogdGV4dHM/LmlucHV0bGFzdG5hbWUsXG4gICAgICAgICAgICBpbnB1dGxhc3RuYW1lUGxhY2VIb2xkZXI6IHRleHRzPy5pbnB1dGxhc3RuYW1lUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICBpbnB1dFN1cm5hbWVzOiB0ZXh0cz8uaW5wdXRTdXJuYW1lcyxcbiAgICAgICAgICAgIGlucHV0U3VybmFtZXNQbGFjZUhvbGRlcjogdGV4dHM/LmlucHV0U3VybmFtZXNQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIG1hbmRhdG9yeXRleHQ6IHRleHRzPy5tYW5kYXRvcnl0ZXh0LFxuICAgICAgICAgICAgcmVxdWlyZWRGaWVsZHNMYWJlbDogdGV4dHM/LnJlcXVpcmVkRmllbGRzTGFiZWwsXG4gICAgICAgICAgICBsYW5nXzE6IHRleHRzPy5sYW5nMSxcbiAgICAgICAgICAgIGxhbmdfMjogdGV4dHM/LmxhbmcyLFxuICAgICAgICAgICAgbGFuZ18zOiB0ZXh0cz8ubGFuZzMsXG4gICAgICAgICAgICBsYW5nXzQ6IHRleHRzPy5sYW5nNCxcbiAgICAgICAgICAgIG5hdGl2bzogdGV4dHM/Lm5hdGl2byxcbiAgICAgICAgICAgIGJhc2ljbzogdGV4dHM/LmJhc2ljbyxcbiAgICAgICAgICAgIGZsdWlkbzogdGV4dHM/LmZsdWlkbyxcbiAgICAgICAgICAgIGludGVybWVkaW86IHRleHRzPy5pbnRlcm1lZGlvLFxuICAgICAgICAgICAgaW5wdXREaXNwb25pYmlsaXR5OiB0ZXh0cz8uaW5wdXREaXNwb25pYmlsaXR5LFxuICAgICAgICAgICAgaW5wdXRMYW5ndWFnZXM6IHRleHRzPy5pbnB1dExhbmd1YWdlcyxcbiAgICAgICAgICAgIGN2SW5wdXQ6IHRleHRzPy5jdklucHV0LFxuICAgICAgICAgICAgU2VsZWN0SXRlbVRleHQ6IHRleHRzPy5TZWxlY3RJdGVtVGV4dCxcbiAgICAgICAgICAgIGFkZExhbmc6IHRleHRzPy5hZGRMYW5nLFxuICAgICAgICB9IGFzIEJhYnlsb25Db250YWN0SW5mb0k7XG4gICAgfVxuICAgIG1hcEV2ZW50c0dsb2JhbChldmVudHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25JdGVtSVtdIHtcbiAgICAgICAgcmV0dXJuIGV2ZW50cz8ubWFwKFxuICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0/Lm5hbWUgPz8gaXRlbT8ubmFtZV9pZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMzogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25zOiBpdGVtLnRleHRzPy5jb25kaXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtLnRleHRzPy5yZXNlcnZhdGlvblVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUF0OiBpdGVtLnRleHRzPy5jcmVhdGVBdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRBdDogaXRlbS50ZXh0cz8udXBkYXRlZEF0LFxuICAgICAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25UZXh0SW5mb0ksXG4gICAgICAgICAgICAgICAgICAgIHVybDogaXRlbT8udXJsLFxuICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JdGVtSVxuICAgICAgICApO1xuICAgIH1cbiAgICBtYXBPZmZlcnNHbG9iYWwob2ZmZXJzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uT2ZmZXJJdGVtSVtdIHtcbiAgICAgICAgcmV0dXJuIG9mZmVycz8ubWFwKFxuICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkZyb206IGl0ZW0/LmFwcGxpY2F0aW9uRnJvbSxcbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25UbzogaXRlbT8uYXBwbGljYXRpb25UbyxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgY3VycmVuY3k6IGl0ZW0/LmN1cnJlbmN5LFxuICAgICAgICAgICAgICAgICAgICBkaXNjb3VudDogaXRlbT8uZGlzY291bnQsXG4gICAgICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtPy5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWxGcm9tOiBpdGVtPy5sYWJlbEZyb20sXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYTogdGhpcy5tYXBNdWx0aW1lZGlhKGl0ZW0/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbnM6IGl0ZW0udGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25zVGl0bGU6IGl0ZW0udGV4dHM/LmNvbmRpdGlvbnNUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXRlbS50ZXh0cz8ucmVzZXJ2YXRpb25VcmwsXG4gICAgICAgICAgICAgICAgICAgIH0gYXMgQmFieWxvblRleHRJbmZvSSxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtPy51cmwsXG4gICAgICAgICAgICAgICAgICAgIHZpc2libGVGcm9tOiBpdGVtPy52aXNpYmxlRnJvbSxcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZVRvOiBpdGVtPy52aXNpYmxlVG8sXG4gICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbk9mZmVySVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG1hcEFkdmFudGFnZXNHbG9iYWwoYWR2YW50YWdlczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkFkdmFudGFnZUl0ZW1JW10ge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYWR2YW50YWdlcykpIHJldHVybiBbXTtcbiAgICAgICAgcmV0dXJuIGFkdmFudGFnZXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSA/PyBpdGVtPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBpY29uOiBpdGVtPy5pY29uID8gYGljb24tJHtpdGVtLmljb259YCA6IGl0ZW0/Lmljb24sXG4gICAgICAgICAgICB0ZXh0OiBpdGVtPy50ZXh0ID8/IGl0ZW0/LnRleHRzPy50ZXh0ID8/IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHN1YnRpdGxlOlxuICAgICAgICAgICAgICAgIGl0ZW0/LnN1YnRpdGxlID8/XG4gICAgICAgICAgICAgICAgaXRlbT8udGV4dHM/LnN1YnRpdGxlID8/XG4gICAgICAgICAgICAgICAgaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgaXRlbT8uZGVzY3JpcHRpb24gPz9cbiAgICAgICAgICAgICAgICBpdGVtPy50ZXh0cz8uZGVzY3JpcHRpb24gPz9cbiAgICAgICAgICAgICAgICBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICBhZGRpdGlvbmFsMTogaXRlbT8uYWRkaXRpb25hbDEgPz8gaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgYWRkaXRpb25hbDI6IGl0ZW0/LmFkZGl0aW9uYWwyID8/IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBpdGVtPy5hZGRpdGlvbmFsMyA/PyBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICB0ZXh0czogaXRlbT8udGV4dHMgPyB0aGlzLm1hcEdsb2JhbFRleHRzKGl0ZW0udGV4dHMpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgdXJsOiBpdGVtLmxpbmtWYWx1ZSA/PyBpdGVtLnVybCxcbiAgICAgICAgICAgIGxpbmtUeXBlOiBpdGVtLmxpbmtUeXBlLFxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgbWFwSXRlbXMoaXRlbXM6IGFueSk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpdGVtcykpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGl0ZW1zID0gaXRlbXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgbGFiZWw6IGl0ZW0/LnRpdGxlID8/IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8udGV4dCA/PyBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHRleHRzOlxuICAgICAgICAgICAgICAgIGl0ZW0/LnRleHRzID8/XG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25UZXh0SW5mb0kpLFxuICAgICAgICAgICAgbXVsdGltZWRpYTogdGhpcy5tYXBJbWFnZXMoaXRlbT8ubXVsdGltZWRpYSksXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICBpY29uOiBgaWNvbi1gICsgKGl0ZW0uaWNvbiA/PyBpdGVtLmNsYXNzKSxcbiAgICAgICAgICAgIHR5cGU6IGl0ZW0/LnR5cGUsXG4gICAgICAgICAgICBuYW1lSWRlbnRpZmllcjogaXRlbT8ubmFtZUlkZW50aWZpZXIsXG4gICAgICAgICAgICB1cmw6IGl0ZW0/LnVybCxcbiAgICAgICAgfSkpO1xuICAgICAgICByZXR1cm4gaXRlbXMgYXMgQmFieWxvbkl0ZW1JO1xuICAgIH1cblxuICAgIG1hcEdsb2JhbHNGYXFzKHJhdzogYW55KTogQmFieWxvbkdsb2JhbHNGYXFHcm91cFtdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHJhdykgfHwgcmF3Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCBpc0dyb3VwZWQgPSByYXcuc29tZShcbiAgICAgICAgICAgICh4KSA9PiB4ICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiBBcnJheS5pc0FycmF5KHguaXRlbXMpXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgZ3JvdXBzOiBBcnJheTx7IGxpc3RJZDogbnVtYmVyOyBpdGVtczogYW55W10gfT4gPSBpc0dyb3VwZWRcbiAgICAgICAgICAgID8gcmF3Lm1hcCgoZzogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgbGlzdElkOiBOdW1iZXIoZz8ubGlzdElkID8/IDEpLFxuICAgICAgICAgICAgICAgICAgaXRlbXM6IEFycmF5LmlzQXJyYXkoZz8uaXRlbXMpID8gZy5pdGVtcyA6IFtdLFxuICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgIDogW3sgbGlzdElkOiAxLCBpdGVtczogcmF3IH1dO1xuXG4gICAgICAgIGNvbnN0IG1hcHBlZEdyb3VwczogQmFieWxvbkdsb2JhbHNGYXFHcm91cFtdID0gZ3JvdXBzXG4gICAgICAgICAgICAubWFwKChnKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWFwcGVkSXRlbXMgPSAoZy5pdGVtcyB8fCBbXSlcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8udGl0bGUgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5xdWVzdGlvbiA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm5hbWUgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5sYWJlbCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnRleHQgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5hbnN3ZXIgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5kZXNjcmlwdGlvbiA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxhYmVsICYmICFkZXNjcmlwdGlvbikgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnRleHRzID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogaXRlbT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uVGV4dEluZm9JKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhOiB0aGlzLm1hcEltYWdlcyhpdGVtPy5tdWx0aW1lZGlhKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lmljb24gfHwgaXRlbT8uY2xhc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gU3RyaW5nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5pY29uID8/IGl0ZW0uY2xhc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5zdGFydHNXaXRoKCdpY29uLScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBTdHJpbmcoaXRlbS5pY29uID8/IGl0ZW0uY2xhc3MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBgaWNvbi0ke2l0ZW0uaWNvbiA/PyBpdGVtLmNsYXNzfWBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0/LmlkID8/IGl0ZW0/LmZhcUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyB1bmtub3duIGFzIEJhYnlsb25JdGVtSTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKSBhcyBCYWJ5bG9uSXRlbUlbXTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGxpc3RJZDogZy5saXN0SWQgfHwgMSxcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IG1hcHBlZEl0ZW1zLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmZpbHRlcigoZykgPT4gZy5pdGVtcy5sZW5ndGggPiAwKTtcblxuICAgICAgICByZXR1cm4gbWFwcGVkR3JvdXBzLmxlbmd0aCA/IG1hcHBlZEdyb3VwcyA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBNdWx0aW1lZGlhKGltYWdlc0FycmF5OiBhbnkgfCB1bmRlZmluZWQpOiBhbnkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpbWFnZXNBcnJheSkgJiYgaW1hZ2VzQXJyYXkubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gaW1hZ2VzQXJyYXlcbiAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT4gaXRlbT8uYWN0aXZlID09PSB0cnVlKVxuICAgICAgICAgICAgICAgID8ubWFwKChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGFsdDogaXRlbT8uYWx0LFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiBpdGVtPy5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIHRhZzogaXRlbT8udGFncyxcbiAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogaXRlbT8uYWx0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbmRUaXRsZTogaXRlbT8ubmRUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5kU3VidGl0bGU6IGl0ZW0/Lm5kU3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwSW1hZ2VzKG11bHRpbWVkaWE6IGFueSB8IHVuZGVmaW5lZCk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGltYWdlbjogdGhpcy5tYXBNdWx0aW1lZGlhKG11bHRpbWVkaWE/LmltYWdlbiksXG4gICAgICAgICAgICAgICAgaW1hZ2VuZXM6IHRoaXMubWFwTXVsdGltZWRpYShcbiAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYT8uaW1hZ2VuZXMgPz8gbXVsdGltZWRpYVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgaW1hZ2VuZXNjb250ZXh0OiB0aGlzLm1hcE11bHRpbWVkaWEoXG4gICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE/LmltYWdlbmVzY29udGV4dFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgaW1hZ2VuZXNwZXF1ZWFzOiB0aGlzLm1hcE11bHRpbWVkaWEoXG4gICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE/LmltYWdlbmVzcGVxdWVhc1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgbW9iaWxlSW1hZ2VuZXM6IHRoaXMubWFwTXVsdGltZWRpYShtdWx0aW1lZGlhPy5pbWFnZW5lc21vYmlsZSksXG4gICAgICAgICAgICAgICAgc3RhdGljSW1hZ2VuZXM6IHRoaXMubWFwTXVsdGltZWRpYShcbiAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYT8uc3RhdGljaW1hZ2VuZXMgPz8gbXVsdGltZWRpYT8uc3RhdGljaW1hZ2VcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIG1haW5pbWFnZW5lczogdGhpcy5tYXBNdWx0aW1lZGlhKG11bHRpbWVkaWE/Lm1haW5pbWFnZW5lcyksXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZGltYWdlOiB0aGlzLm1hcE11bHRpbWVkaWEoXG4gICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE/LmJhY2tncm91bmRpbWFnZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgbG9nbzogdGhpcy5tYXBNdWx0aW1lZGlhKG11bHRpbWVkaWE/LmxvZ28pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcFJvb21EZXRhaWxzKHJvb21zOiBhbnkgfCB1bmRlZmluZWQpOiBhbnkge1xuICAgICAgICBsZXQgYXJyYXk6IGFueVtdID0gcm9vbXM/Lmxlbmd0aCA/IHJvb21zIDogW3Jvb21zXTtcblxuICAgICAgICByZXR1cm4gYXJyYXlcbiAgICAgICAgICAgID8uZmlsdGVyKFxuICAgICAgICAgICAgICAgIChyb29tOiBhbnksIGluZGV4OiBudW1iZXIsIHNlbGY6IGFueVtdKSA9PlxuICAgICAgICAgICAgICAgICAgICBzZWxmPy5maW5kSW5kZXgoKHIpID0+IHI/LmlkID09PSByb29tPy5pZCkgPT09IGluZGV4XG4gICAgICAgICAgICApXG4gICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXRlbT8uYnV0dG9ucz8uc2xpY2UoKS5yZXZlcnNlKCkgVE9ETzogXCIuc2xpY2UoKS5yZXZlcnNlKClcIiAgZXN0byBzZSBoYWNlIGVuIGVsIGNvbXBvbmVudGUgcXVlIGxvIHVzZSAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGltZ1Jlc3AgPSB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltZzogYW55KSA9PiBpbWc/LmNvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHx8IGl0ZW0/Lm11bHRpbWVkaWE/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9yZGVyID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltZzogYW55KSA9PiBpbWc/LmNvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApPy5vcmRlciA/PyBpdGVtPy5tdWx0aW1lZGlhPy5bMF0/Lm9yZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW1nUmVzcCAmJiB0eXBlb2YgaW1nUmVzcCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLmltZ1Jlc3AsIG9yZGVyIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpbWc6IGltZ1Jlc3AsIG9yZGVyIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZW5lczogaXRlbT8ubXVsdGltZWRpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoaW1nOiBhbnkpID0+IGltZy5hY3RpdmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubWFwKChpbWc6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0czogaW1nLnRleHRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZzogaW1nLnRhZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpbWcuYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaW1nLmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGltZy5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogaXRlbT8ubXVsdGltZWRpYT8udmlkZW8/LnNyYyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBpdGVtPy5tdWx0aW1lZGlhPy52aWRlbz8uc3JjXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3ZpZGVvL21wNCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtPy50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWRzOiBpdGVtPy50ZXh0cz8uYmVkcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjogaXRlbT8udGV4dHM/LmxvY2F0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDE6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDQ6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaXRlbT8ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJpc3RpY3M6IEFycmF5LmlzQXJyYXkoaXRlbT8uc2VydmljZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpdGVtPy5zZXJ2aWNlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChzdmM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2Ygc3ZjLnR5cGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzdmMudHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnRyaW0oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFjZXB0YSB0YW50byAnZXF1aXBtZW50JyBjb21vICdjaGFyYWN0ZXJpc3RpY3MnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc1ZhbGlkVHlwZSA9IHR5cGVzLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9vbVNlcnZpY2VUeXBlLmNoYXJhY3RlcmlzdGljc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYXNWYWxpZFR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKChzdmM6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogc3ZjPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBzdmM/LmNsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGBpY29uLSR7c3ZjPy5jbGFzc31gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXF1aXBtZW50czogQXJyYXkuaXNBcnJheShpdGVtPy5zZXJ2aWNlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGl0ZW0/LnNlcnZpY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKHN2YzogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBzdmMudHlwZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHN2Yy50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKCh0OiBzdHJpbmcpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQudHJpbSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogW107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWNlcHRhIHRhbnRvICdlcXVpcG1lbnQnIGNvbW8gJ2NoYXJhY3RlcmlzdGljcydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzVmFsaWRUeXBlID0gdHlwZXMuaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb29tU2VydmljZVR5cGUuRXF1aXBtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc1ZhbGlkVHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHN2YzogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBzdmM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IHN2Yz8uY2xhc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYGljb24tJHtzdmM/LmNsYXNzfWBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogW10sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Sb29tSW5mb0lcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIG1hcDQwNChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbjQwNEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHN1YnRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uc3VidGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy5jb250YWluLFxuXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uNDA0STtcbiAgICB9XG5cbiAgICAvLy0tLS0gTEFZT1VUIENPTVBPTkVOVFMgLS0tLS8vXG4gICAgbWFwVG9wU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uVG9wU2xpZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGFsbEltYWdlcyA9IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyA/PyBbXTtcbiAgICAgICAgY29uc3QgcmF3TW91c2V1cCA9IHByb3BzPy50ZXh0cz8ubW91c2V1cCA/PyBwcm9wcz8udGV4dHM/Lm1vdXNlVXA7XG4gICAgICAgIGNvbnN0IG1vdXNldXAgPSB0aGlzLmdldFRleHRWYWx1ZShyYXdNb3VzZXVwKTtcblxuICAgICAgICBjb25zdCBpbWFnZXNXaXRoVGFnID0gYWxsSW1hZ2VzLmZpbHRlcihcbiAgICAgICAgICAgIChpbWFnZTogYW55KSA9PlxuICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoaW1hZ2U/LnRhZ3MpICYmXG4gICAgICAgICAgICAgICAgaW1hZ2UudGFncy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAodGFnOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAodHlwZW9mIHRhZyA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcuaW5jbHVkZXMoJ1RvcFNsaWRlcicpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiB0YWcgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnPy5uYW1lPy5pbmNsdWRlcygnVG9wU2xpZGVyJykpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGltYWdlcyA9IGltYWdlc1dpdGhUYWcubGVuZ3RoID8gaW1hZ2VzV2l0aFRhZyA6IGFsbEltYWdlcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzKSxcbiAgICAgICAgICAgIGl0ZW1zOiBpbWFnZXM/Lmxlbmd0aFxuICAgICAgICAgICAgICAgID8gaW1hZ2VzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtLnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnN1YnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltYWdlcz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpbWFnZXM/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltYWdlcywgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGltYWdlcz8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGltYWdlcz8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgaXRlbXNNb2JpbGU6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lc21vYmlsZT8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uVG9wU2xpZGVySXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvPy5bMF0sIGZhbHNlKSxcbiAgICAgICAgICAgIGxvZ29UaXRsZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmxvZ290aXRsZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdmlkZW9EYXRhOiB7XG4gICAgICAgICAgICAgICAgLy8gdGl0bGU6IHByb3BzPy52aWRlbz8udGl0bGUsXG4gICAgICAgICAgICAgICAgc3JjOiBwcm9wcz8udGV4dHM/LnZpZGVvLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd2aWRlby9tcDQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1vdXNldXAsXG4gICAgICAgIH0gYXMgQmFieWxvblRvcFNsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwVG9wU2xpZGVyVmlkZW8oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uVG9wU2xpZGVyVmlkZW9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZpZGVvRGF0YToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udmlkZW8/LnRpdGxlLFxuICAgICAgICAgICAgICAgIHNyYzogcHJvcHM/LnZpZGVvPy5zcmMsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3ZpZGVvL21wNCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc21hbGxWaWRlb0RhdGE6IHByb3BzPy52aWRlbz8ubW9iaWxlXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy52aWRlbz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgc3JjOiBwcm9wcz8udmlkZW8/Lm1vYmlsZSxcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndmlkZW8vbXA0JyxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGxhYmVsSW5mb3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbW9iaWxlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWdUZXh0czoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2Vtb2JpbGU/LlswXS5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbW9iaWxlPy5bMF0udGl0bGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICB9IGFzIEJhYnlsb25Ub3BTbGlkZXJWaWRlb0k7XG4gICAgfVxuXG4gICAgbWFwVG9wU2xpZGVyVjIoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHJpZ2h0U2lkZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgKTogQmFieWxvblRvcFNsaWRlclYySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBwcm9wc1xuICAgICAgICAgICAgPyAoe1xuICAgICAgICAgICAgICAgICAgcmlnaHRTaWRlOiByaWdodFNpZGUsXG4gICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25TbGlkZXI0Y29sTGFiZWxzXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9IGFzIEJhYnlsb25Ub3BTbGlkZXJWMkkpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBJbmZvSW1nKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICByaWdodFNpZGU6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICAgICAgdGV4dENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgIGlkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25JbmZvSW1nSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICAgICAgcmlnaHRTaWRlOiByaWdodFNpZGUsXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgYnV0dG9uczogcHJvcHM/LmJ1dHRvbnNcbiAgICAgICAgICAgICAgICA/IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT4gbGluaz8ubGlua1ZhbHVlICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbnRhaW4sXG4gICAgICAgICAgICB0ZXh0OlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uc3VidGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgbmR0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5uZHRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ubmR0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ubmR0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGxlc3NCdG46IHByb3BzPy50ZXh0cz8uc2VlTGVzcyxcbiAgICAgICAgICAgIG1vcmVCdG46IHByb3BzPy50ZXh0cz8uc2VlTW9yZSxcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMgPz8gcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlcyxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGFkdmFudGFnZXM6IHByb3BzPy5WZW50YWphcz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/LnRpdGxlIHx8IGl0ZW0/LnRleHRcbiAgICAgICAgICAgICk/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICBpY29uOiBpdGVtLmljb24gPyBgaWNvbi0ke2l0ZW0uaWNvbn1gIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgbG9nbzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmxvZ28/LlswXSwgZmFsc2UpLFxuICAgICAgICAgICAgYWR2VGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGV4dCA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRleHRcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRleHQ/LmNvbnRhaW4sXG4gICAgICAgICAgICB0b3BCRzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LnRvcGJnPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBib3R0b21CRzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJvdHRvbWJnPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0b3BDb2xvcjogcHJvcHM/LnRleHRzPy50b3BDb2xvcixcbiAgICAgICAgICAgIGJvdHRvbUNvbG9yOiBwcm9wcz8udGV4dHM/LkJvdHRvbUNvbG9yLFxuICAgICAgICAgICAgdGV4dENvbG9yOiB0ZXh0Q29sb3IsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbj8udGFnLFxuICAgICAgICAgICAgICAgIG5kdGl0bGU6IHByb3BzPy50ZXh0cz8ubmR0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGFkdlRpdGxlOiBwcm9wcz8udGV4dHM/LnRleHQ/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbj8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm9JbWdJO1xuICAgIH1cblxuICAgIG1hcEluZm9JbWdTbGlkZXIoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHJpZ2h0U2lkZTogYm9vbGVhbiA9IGZhbHNlLFxuICAgICAgICBpZGVudGlmaWVyOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uSW5mb0ltZ1NsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICAvLyBUT0RPOiBhZGQgdG9wQkcsIGJvdHRvbUJHXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICAgICAgcmlnaHRTaWRlOiByaWdodFNpZGUsXG4gICAgICAgICAgICB0b3BDb2xvcjogcHJvcHM/LnRleHRzPy50b3BDb2xvcixcbiAgICAgICAgICAgIGJvdHRvbUNvbG9yOiBwcm9wcz8udGV4dHM/LmJvdHRvbUNvbG9yLFxuICAgICAgICAgICAgbGVzc0J0bjogcHJvcHM/LnRleHRzPy5zZWVMZXNzLFxuICAgICAgICAgICAgbW9yZUJ0bjogcHJvcHM/LnRleHRzPy5zZWVNb3JlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBuZHRpdGxlOiBpdGVtPy5uZF90aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSW5mb0ltZ1NsaWRlckl0ZW1JXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvSW1nU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBJbmZvSW50cm8ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25JbmZvSW50cm9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbiA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbj8uY29udGFpbixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMgPz8gcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdG9wQkc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy50b3BiZz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYm90dG9tQkc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5ib3R0b21iZz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdG9wQ29sb3I6IHByb3BzPy50ZXh0cz8udG9wQ29sb3IsXG4gICAgICAgICAgICBib3R0b21Db2xvcjogcHJvcHM/LnRleHRzPy5Cb3R0b21Db2xvcixcbiAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvPy5bMF0sIGZhbHNlKSxcbiAgICAgICAgICAgIGxvZ28yOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8ubG9nbzI/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uTW9kYWw6IHByb3BzPy50ZXh0cz8ucG9wdXBtb2RhbCxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb0ludHJvSTtcbiAgICB9XG5cbiAgICBtYXBIZWFkZXIoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG1lbnU6IGFueSxcbiAgICAgICAgaGVhZGVyOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOlxuICAgICAgICB8IEJhYnlsb25IZWFkZXJCb29rU2hvd0lcbiAgICAgICAgfCBCYWJ5bG9uSGVhZGVyQ2xlYXJJXG4gICAgICAgIHwgQmFieWxvbkhlYWRlck1lbnVDZW50ZXJJXG4gICAgICAgIHwgQmFieWxvbkhlYWRlck1lbnVMb2dvQ2VudGVySVxuICAgICAgICB8IEJhYnlsb25IZWFkZXJNZW51U2hvd0kge1xuICAgICAgICBjb25zdCBsaW5rID0gbWVudT8ubGlua3M/LmxvZ29MaW5rPy5mbGF0KCk/LlswXTtcbiAgICAgICAgY29uc3QgaGVhZGVyQnV0dG9ucyA9IHByb3BzO1xuICAgICAgICBjb25zdCBidXR0b25zID0gVXRpbHMubWFwQnV0dG9ucyhtZW51Py5idXR0b25zID8/IFtdKTtcbiAgICAgICAgY29uc3QgaGVhZGVyQnV0dG9uc01vZGFsQnV0dG9ucyA9IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICBoZWFkZXJCdXR0b25zPy5idXR0b25zID8/IFtdXG4gICAgICAgICk/LmZpbHRlcigoYnV0dG9uKSA9PiAhIWJ1dHRvbi5sYWJlbCAmJiAhIWJ1dHRvbi51cmwpO1xuICAgICAgICBjb25zdCBoZWFkZXJCdXR0b25zTW9kYWxJbWFnZSA9XG4gICAgICAgICAgICBoZWFkZXJCdXR0b25zPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdID8/XG4gICAgICAgICAgICBoZWFkZXJCdXR0b25zPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdID8/XG4gICAgICAgICAgICBoZWFkZXJCdXR0b25zPy5tdWx0aW1lZGlhPy5pbWFnZXM/LlswXTtcbiAgICAgICAgY29uc3QgaGVhZGVyQnV0dG9uc01vZGFsVGl0bGUgPVxuICAgICAgICAgICAgaGVhZGVyQnV0dG9ucz8udGV4dHM/Lm1vZGFsX3RpdGxlID8/XG4gICAgICAgICAgICBoZWFkZXJCdXR0b25zPy50ZXh0cz8ubW9kYWxUaXRsZTtcbiAgICAgICAgY29uc3QgaGVhZGVyQnV0dG9uc01vZGFsSW1hZ2VTcmMgPVxuICAgICAgICAgICAgaGVhZGVyQnV0dG9ucz8udGV4dHM/Lm1vZGFsX2ltZyA/PyBoZWFkZXJCdXR0b25zPy50ZXh0cz8ubW9kYWxJbWc7XG5cbiAgICAgICAgY29uc3QgdGV4dHMgPSBoZWFkZXI/LnRleHRzID8gaGVhZGVyPy50ZXh0cyA6IG1lbnU/LnRleHRzO1xuXG4gICAgICAgIGlmIChoZWFkZXJCdXR0b25zKSB7XG4gICAgICAgICAgICB0aGlzLmZsb2F0aW5nQnV0dG9ucyA9IHtcbiAgICAgICAgICAgICAgICB0ZXh0czogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgYmFieWxvbi0ke2hlYWRlckJ1dHRvbnMudGV4dHM/LnRyYW5zZmVySWNvbn1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGhlYWRlckJ1dHRvbnM/LnRleHRzPy50cmFuc2ZlcixcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGJhYnlsb24tJHtoZWFkZXJCdXR0b25zLnRleHRzPy5jaGVja2luSWNvbn1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGhlYWRlckJ1dHRvbnM/LnRleHRzPy5jaGVja2luLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgYmFieWxvbi0ke2hlYWRlckJ1dHRvbnMudGV4dHM/LndoYXRzYXBwfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogaGVhZGVyQnV0dG9ucz8udGV4dHM/LndoYXRzYXBwLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgdGV4dHNCdXR0b25zOiB7XG4gICAgICAgICAgICAgICAgICAgIG1lbnVUZXh0OlxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQnV0dG9ucz8udGV4dHM/Lm1lbnV0ZXh0ID8/XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJCdXR0b25zPy50ZXh0cz8ubWVudVRleHQsXG4gICAgICAgICAgICAgICAgICAgIGJvb2t0ZXh0OlxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQnV0dG9ucz8udGV4dHM/LmJvb2t0ZXh0ID8/XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJCdXR0b25zPy50ZXh0cz8uYm9va1RleHQgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckJ1dHRvbnM/LnRleHRzPy5ib29rTm93LFxuICAgICAgICAgICAgICAgICAgICBhZ2VuY2lhVGV4dDogaGVhZGVyQnV0dG9ucz8udGV4dHM/LmFnZW5jaWEsXG4gICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8ubGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgICAgIG5ld3NsZXR0ZXI6IGhlYWRlckJ1dHRvbnM/LnRleHRzPy5uZXdzbGV0dGVyLFxuICAgICAgICAgICAgICAgICAgICBzaG9wOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8uc2hvcCxcbiAgICAgICAgICAgICAgICAgICAgd2hhdHNhcHA6IGhlYWRlckJ1dHRvbnM/LnRleHRzPy53aGF0c2FwcCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGhlYWRlckJ1dHRvbnM/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICB1c2VyTGluazogVXRpbHMubWFwQnV0dG9ucyhoZWFkZXJCdXR0b25zPy5saW5rcz8udXNlckxpbms/LlswXSksXG4gICAgICAgICAgICB9IGFzIEJhYnlsb25GbG9hdGluZ0J1dHRvbnNJO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbnMsXG4gICAgICAgICAgICBoZWFkZXJCdXR0b25zTW9kYWxCdXR0b25zLFxuICAgICAgICAgICAgaGVhZGVyQnV0dG9uc01vZGFsVGl0bGUsXG4gICAgICAgICAgICBoZWFkZXJCdXR0b25zTW9kYWxJbWFnZTpcbiAgICAgICAgICAgICAgICB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShoZWFkZXJCdXR0b25zTW9kYWxJbWFnZSkgPz9cbiAgICAgICAgICAgICAgICBoZWFkZXJCdXR0b25zTW9kYWxJbWFnZVNyYyxcbiAgICAgICAgICAgIGhlYWRlckZpeGVkOiBmYWxzZSxcbiAgICAgICAgICAgIHRleHRzOiB0ZXh0cyxcbiAgICAgICAgICAgIGZsb2F0aW5nQnV0dG9uczogdGhpcy5mbG9hdGluZ0J1dHRvbnMsXG4gICAgICAgICAgICBsYW5nOiB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmxvY2F0ZT8udG9VcHBlckNhc2UoKSxcbiAgICAgICAgICAgIGJ0bkJvb2s6IHsgbGFiZWw6IGhlYWRlckJ1dHRvbnM/LnRleHRzPy5ib29rTm93IH0sXG4gICAgICAgICAgICBzaG9wOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8uc2hvcFxuICAgICAgICAgICAgICAgID8gYGljb24tJHtoZWFkZXJCdXR0b25zPy50ZXh0cz8uc2hvcH1gXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBuZXdzOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8ubmV3c2xldHRlclxuICAgICAgICAgICAgICAgID8gYGljb24tJHtoZWFkZXJCdXR0b25zPy50ZXh0cz8ubmV3c2xldHRlcn1gXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhoZWFkZXJCdXR0b25zPy5saW5rcyksXG4gICAgICAgICAgICB1c2VyTGluazogVXRpbHMubWFwQnV0dG9ucyhoZWFkZXJCdXR0b25zPy5saW5rcz8udXNlckxpbms/LlswXSksXG4gICAgICAgICAgICBsaW5rTG9nbzoge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rPy5sYWJlbCxcbiAgICAgICAgICAgICAgICB1cmw6IGxpbms/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICBsaW5rVHlwZTogbGluaz8ubGlua1R5cGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWVudTogbWVudT8ubmF2Py5tYXAoXG4gICAgICAgICAgICAgICAgKG1lbnU6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG1lbnU/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IG1lbnU/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcnM6IG1lbnU/LmxpbmtWYXJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6IG1lbnU/LmxpbmtUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IG1lbnU/LnRyYW5zbGF0aW9ucz8uWzBdPy5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBtZW51Py50cmFuc2xhdGlvbnM/LlswXT8ubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbWVudT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBtZW51Py5jaGlsZHJlbj8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGlsZDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY2hpbGQ/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGNoaWxkPy5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJzOiBtZW51Py5saW5rVmFycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiBjaGlsZD8ubGlua1R5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogY2hpbGQ/LnRyYW5zbGF0aW9ucz8uWzBdPy5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjaGlsZD8udHJhbnNsYXRpb25zPy5bMF0/Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNoaWxkPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBtZW51Py5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbk1lbnVCdXR0b25JXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbWVudUluZm86IHRoaXMubWFwTWVudShtZW51LCB1bmRlZmluZWQpLFxuICAgICAgICB9IGFzXG4gICAgICAgICAgICB8IEJhYnlsb25IZWFkZXJCb29rU2hvd0lcbiAgICAgICAgICAgIHwgQmFieWxvbkhlYWRlckNsZWFySVxuICAgICAgICAgICAgfCBCYWJ5bG9uSGVhZGVyTWVudUNlbnRlcklcbiAgICAgICAgICAgIHwgQmFieWxvbkhlYWRlck1lbnVMb2dvQ2VudGVySVxuICAgICAgICAgICAgfCBCYWJ5bG9uSGVhZGVyTWVudVNob3dJO1xuICAgIH1cblxuICAgIC8vVE9ETzogV2FpdCBmb3IgYmFjayBpbmZvXG4gICAgbWFwTWVudShcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgc29jaWFsTWVkaWE6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25NZW51SW5mb0kge1xuICAgICAgICBjb25zdCBsaW5rcyA9IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICBwcm9wcz8ubmF2Py5tYXAoKGxpbms6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi5saW5rLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rLnRyYW5zbGF0aW9ucz8uWzBdPy5uYW1lLFxuICAgICAgICAgICAgfSkpXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgY29udGFjdCA9ICgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByYXcgPSBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uY29udGFjdD8uWzBdKTsgLy8gcC5lai4gW3VuZGVmaW5lZCwgdW5kZWZpbmVkXVxuICAgICAgICAgICAgY29uc3QgbGlua3MgPSBBcnJheS5pc0FycmF5KHJhdykgPyByYXcuZmlsdGVyKEJvb2xlYW4pIDogdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICBjb25zdCByYXdUaXRsZSA9XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uY29udGFjdFRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uY29udGFjdFRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5jb250YWN0VGl0bGU/LmNvbnRhaW47XG5cbiAgICAgICAgICAgIGNvbnN0IHRpdGxlID1cbiAgICAgICAgICAgICAgICB0eXBlb2YgcmF3VGl0bGUgPT09ICdzdHJpbmcnICYmIHJhd1RpdGxlLnRyaW0oKS5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyByYXdUaXRsZS50cmltKClcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIGlmICghbGlua3M/Lmxlbmd0aCAmJiAhdGl0bGUpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uKGxpbmtzPy5sZW5ndGggPyB7IGxpbmtzIH0gOiB7fSksXG4gICAgICAgICAgICAgICAgLi4uKHRpdGxlID8geyB0aXRsZSB9IDoge30pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSkoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxpbmtzOiBsaW5rcz8uc2xpY2UoMCwgNiksXG4gICAgICAgICAgICBib3R0b21MaW5rczogbGlua3M/LnNsaWNlKDYpLFxuICAgICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHByb3BzPy5hZGRyZXNzPy5bMF0/LmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgY2l0eTogcHJvcHM/LmFkZHJlc3M/LlswXT8uY2l0eSxcbiAgICAgICAgICAgICAgICBjb3VudHJ5OiBwcm9wcz8uYWRkcmVzcz8uWzBdPy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgIGNwOiBwcm9wcz8uYWRkcmVzcz8uWzBdPy5jcCxcbiAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICBwcm92aW5jZTogcHJvcHM/LmFkZHJlc3M/LlswXT8ucHJvdmluY2UsXG4gICAgICAgICAgICAgICAgdXJsOiBwcm9wcz8uYWRkcmVzcz8uWzBdPy5saW5rLFxuICAgICAgICAgICAgICAgIGxpbmtzOiB7XG4gICAgICAgICAgICAgICAgICAgIHVybDogcHJvcHM/LmFkZHJlc3M/LlswXT8ubGluayxcbiAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdleHRlcm5hbCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb250YWN0OiBjb250YWN0LFxuICAgICAgICAgICAgc29jaWFsTWVkaWE6IHNvY2lhbE1lZGlhPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBiYWJ5bG9uLSR7aXRlbS5uYW1lPy50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0udXJsLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbj8uWzBdID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1nQmFja2dyb3VuZDogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmQ/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGxpbmtMb2dvOiB7XG4gICAgICAgICAgICAgICAgdXJsOiBwcm9wcz8ubGlua3M/LmxvZ29MaW5rPy5bMF0/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICBsaW5rVHlwZTogcHJvcHM/LmxpbmtzPy5sb2dvTGluaz8uWzBdPy5saW5rVHlwZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgY29udGFjdFRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGFkZHJlc3NUaXRsZTogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgY29udGFjdFRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBhZGRyZXNzVGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGltZ3M6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25NZW51SW5mb0k7XG4gICAgfVxuXG4gICAgbWFwSW5mbzJpbWcoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHJpZ2h0U2lkZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgKTogQmFieWxvbkluZm8yaW1nSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByaWdodFNpZGU6IHJpZ2h0U2lkZSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICAgICAgaXRlbTE6IHByb3BzPy50ZXh0cz8uaXRlbTEsXG4gICAgICAgICAgICAgICAgaXRlbTFUZXh0OiBwcm9wcz8udGV4dHM/Lml0ZW0xVGV4dCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltYWdlc3NtYWxsOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXNzbWFsbCxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGFkdmFudGFnZXM6IHByb3BzPy5WZW50YWphcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm8yaW1nSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvMmNvbGltZyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2VcbiAgICApOiBCYWJ5bG9uSW5mbzJDb2xJbWdJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJpZ2h0U2lkZTogcmlnaHRTaWRlLFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc21hbGxpbWFnZTogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uc21hbGxpbWFnZSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mbzJDb2xJbWdJO1xuICAgIH1cblxuICAgIG1hcFppZ3phZyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2UsXG4gICAgICAgIGlkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25JbmZvMmltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgaW1hZ2VzOiAoc3RyaW5nIHwgQmFieWxvbkltYWdlSSlbXSB8IHVuZGVmaW5lZCA9IFtdO1xuICAgICAgICBsZXQgdGV4dHMsIHRhZ3M7XG4gICAgICAgIGlmIChwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMgfHwgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlcykge1xuICAgICAgICAgICAgaW1hZ2VzID0gdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMgPz8gcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlcyxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRleHRzID0ge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgICAgICh0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCksXG4gICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICBjb250ZW50dGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudHRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudHRpdGxlLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50c3VidGl0bGU/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50c3VidGl0bGUsXG4gICAgICAgICAgICAgICAgY29udGVudGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnRkZXNjcmlwdGlvbj8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnRkZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmxvZ28/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGljb25zOiBwcm9wcz8uVmVudGFqYXM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbT8udGl0bGUgfHwgaXRlbT8udGV4dFxuICAgICAgICAgICAgICAgICk/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICBpY29uOiBpdGVtLmljb24gPyBgaWNvbi0ke2l0ZW0uaWNvbn1gIDogJycsXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgIGljb25UaXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pY29udGl0bGU/LmNvbnRhaW4gPz8gcHJvcHM/LnRleHRzPy5pY29udGl0bGUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGFncyA9IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY29udGVudHRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRlbnR0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5jb250ZW50c3VidGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjb250ZW50ZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uY29udGVudGRlc2NyaXB0aW9uPy50YWcsXG4gICAgICAgICAgICAgICAgaWNvblRpdGxlOiBwcm9wcz8udGV4dHM/Lmljb250aXRsZT8udGFnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmlnaHRTaWRlOiByaWdodFNpZGUsXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zLmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGV4dHMsXG4gICAgICAgICAgICBpbWFnZXMsXG4gICAgICAgICAgICB0YWdzLFxuICAgICAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mbzJpbWdJO1xuICAgIH1cblxuICAgIG1hcEdyaWRHYWxsZXJ5KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSW5mb0ltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBpc0luRW51bSA9IDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4oXG4gICAgICAgICAgICBlbnVtT2JqOiBULFxuICAgICAgICAgICAgdmFsdWU6IGFueVxuICAgICAgICApOiB2YWx1ZSBpcyBUW2tleW9mIFRdID0+IE9iamVjdC52YWx1ZXMoZW51bU9iaikuaW5jbHVkZXModmFsdWUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8udGV4dCxcbiAgICAgICAgICAgIGhvdmVyOiBwcm9wcz8udGV4dHM/LmhvdmVyLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgdmlldzogaXNJbkVudW0oVmlld3NUeXBlLCBwcm9wcz8ubXVsdGltZWRpYT8udmlldylcbiAgICAgICAgICAgICAgICA/IHByb3BzPy5tdWx0aW1lZGlhPy52aWV3XG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvSW1nSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvR3JpZChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm9HcmlkSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zLmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBpdGVtLmJ1dHRvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5idXR0b25zLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT4gbGluaz8ubGlua1ZhbHVlICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IGl0ZW0ubGlua3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5saW5rcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+IGxpbms/LmxpbmtWYWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/LlswXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSW5mb0dyaWRJdGVtSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb0dyaWRJO1xuICAgIH1cblxuICAgIG1hcEJhbm5lckdhbGxlcnkoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uQmFubmVyR2FsbGVyeUkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaG92ZXI6IHByb3BzPy50ZXh0cz8uaG92ZXIsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQmFubmVyR2FsbGVyeUk7XG4gICAgfVxuXG4gICAgbWFwQmFubmVyTmV3c2xldHRlcihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgaWRlbnRpZmllcjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkJhbm5lck5ld3NsZXR0ZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBob3ZlcjogcHJvcHM/LnRleHRzPy5ob3ZlcixcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgICAgICBpY29uOiBwcm9wcz8udGV4dHM/Lm1haWxJY29uLFxuICAgICAgICB9IGFzIEJhYnlsb25CYW5uZXJOZXdzbGV0dGVySTtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXJDb2xsMihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2VcbiAgICApOiBCYWJ5bG9uVG9wU2xpZGVyVjJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHByb3BzXG4gICAgICAgICAgICA/ICh7XG4gICAgICAgICAgICAgICAgICByaWdodFNpZGU6IHJpZ2h0U2lkZSxcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICAgICAgICBpbWFnZXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblNsaWRlcjJDb2xJdGVtSVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9IGFzIEJhYnlsb25Ub3BTbGlkZXJWMkkpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXJDb2xsKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBpZGVudGlmaWVyOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uVG9wU2xpZGVyVjJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IGltYWdlczogKHN0cmluZyB8IEJhYnlsb25JbWFnZUkpW10gfCB1bmRlZmluZWQgPSBbXTtcbiAgICAgICAgaWYgKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcykge1xuICAgICAgICAgICAgaW1hZ2VzID0gcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbWFnZVJlc3BvbnNlID0gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgc3JjOlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGltYWdlUmVzcG9uc2UgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWFnZVJlc3BvbnNlLnNyY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW1hZ2VSZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgYWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGltYWdlUmVzcG9uc2UgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWFnZVJlc3BvbnNlLmFsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gYnRuPy5saW5rVmFsdWUgIT09IG51bGwgfHwgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubGlua3M/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+IGJ0bi5saW5rVmFsdWUgIT09IG51bGwgfHwgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uSW1hZ2VJO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXMpIHtcbiAgICAgICAgICAgIGltYWdlcyA9IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXM/Lm1hcCgoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGltYWdlUmVzcG9uc2UgPSB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBzcmM6XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgaW1hZ2VSZXNwb25zZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltYWdlUmVzcG9uc2Uuc3JjXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbWFnZVJlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgICBhbHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgaW1hZ2VSZXNwb25zZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltYWdlUmVzcG9uc2UuYWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4/LmxpbmtWYWx1ZSAhPT0gbnVsbCB8fCB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4/LmxpbmtWYWx1ZSAhPT0gbnVsbCB8fCB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25JbWFnZUk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvcHNcbiAgICAgICAgICAgID8gKHtcbiAgICAgICAgICAgICAgICAgIGltYWdlczogaW1hZ2VzLFxuICAgICAgICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgdG9wQkc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy50b3BiZz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgYm90dG9tQkc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5ib3R0b21iZz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgdG9wQ29sb3I6IHByb3BzPy50ZXh0cz8udG9wQ29sb3IsXG4gICAgICAgICAgICAgICAgICBib3R0b21Db2xvcjogcHJvcHM/LnRleHRzPy5Cb3R0b21Db2xvcixcbiAgICAgICAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uVG9wU2xpZGVyVjJJKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwSXRlbXNHcmlkKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSXRlbXNHcmlkSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBwcm9wc1xuICAgICAgICAgICAgPyAoe1xuICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbWFnZVJlc3BvbnNlID0gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgaW1hZ2VSZXNwb25zZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWFnZVJlc3BvbnNlLnNyY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGltYWdlUmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGltYWdlUmVzcG9uc2UgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1hZ2VSZXNwb25zZS5hbHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4/LmxpbmtWYWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5saW5rcz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+IGJ0bi5saW5rVmFsdWUgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25JbWFnZUk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4/LmxpbmtWYWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH0gYXMgQmFieWxvbkl0ZW1zR3JpZEkpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBSb29tKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSW5mbzJpbWdJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJvb21zOiBwcm9wcz8ucm9vbXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBpdGVtLm11bHRpbWVkaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PiBpbWcuY292ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpbWcucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1nLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JbWFnZUlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDI6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsNDogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZXM6IGl0ZW0/LnNlcnZpY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8udHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKCh2OiBzdHJpbmcpID0+IHYudHJpbSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKFJvb21TZXJ2aWNlVHlwZS5jaGFyYWN0ZXJpc3RpY3MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmNsYXNzfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uUm9vbUluZm9JXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvMmltZ0k7XG4gICAgfVxuXG4gICAgbWFwUm9vbXNHcmlkKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uUm9vbXNHcmlkSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCByb29tcyA9IHByb3BzPy5yb29tc1xuICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRuPy5saW5rVHlwZT8uaW5jbHVkZXMoJ2ludGVybmFsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGl0ZW0/Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBpdGVtLm11bHRpbWVkaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWcudGFncz8uc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWcpID0+IHRhZy5uYW1lID09PSAnUm9vbXNHcmlkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaW1nLnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGltZy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWcudGFncz8uc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWcpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnLm5hbWUgPT09ICdSb29tc0dyaWQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnOiBpbWcudGFncz8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZzogYW55KSA9PiB0YWc/LmZpbHRlcmFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkltYWdlSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnNsaWNlKDAsIDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDI6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsNDogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZXM6IGl0ZW0/LnNlcnZpY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8udHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKCh2OiBzdHJpbmcpID0+IHYudHJpbSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKFJvb21TZXJ2aWNlVHlwZS5jaGFyYWN0ZXJpc3RpY3MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmNsYXNzfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uUm9vbUluZm9JXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc29ydCgoYTogQmFieWxvblJvb21zTGlzdEl0ZW0sIGI6IEJhYnlsb25Sb29tc0xpc3RJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChhLm9yZGVyID8/IDApIC0gKGIub3JkZXIgPz8gMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJvb21zOiBwcm9wcz8uYnV0dG9ucyA/IHJvb21zPy5zbGljZSgwLCA1KSA6IHJvb21zLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvblJvb21zR3JpZEk7XG4gICAgfVxuXG4gICAgbWFwUm9vbXNTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Sb29tc1NsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgaGlkZU1vZHVsZSA9XG4gICAgICAgICAgICBwcm9wcz8udGV4dHM/LmhpZGUgJiYgcHJvcHM/LnRleHRzPy5oaWRlPy50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSdcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgaGlkZTogaGlkZU1vZHVsZSxcbiAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGVDb250YWluOiB7XG4gICAgICAgICAgICAgICAgICAgIHRhZzogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGl0bGVDb250YWluOiB7XG4gICAgICAgICAgICAgICAgICAgIHRhZzogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcblxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByb29tczogcHJvcHM/LnJvb21zXG4gICAgICAgICAgICAgICAgPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChyb29tOiBhbnksIGluZGV4OiBudW1iZXIsIHNlbGY6IGFueVtdKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5maW5kSW5kZXgoKHIpID0+IHIuaWQgPT09IHJvb20uaWQpID09PSBpbmRleFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5pZF9oYWJpdGFjaW9uIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubmFtZUlkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zPy5zbGljZSgpLnJldmVyc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltZzogYW55KSA9PiBpbWc/LmNvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHx8IGl0ZW0/Lm11bHRpbWVkaWE/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDI6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMzogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWw0OiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsNCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBpdGVtPy5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcXVpcG1lbnRzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5zZXJ2aWNlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKHN2YzogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2Ygc3ZjLnR5cGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHN2Yy50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQudHJpbSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzQ2hhcmFjdGVyaXN0aWMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlcy5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvb21TZXJ2aWNlVHlwZS5jaGFyYWN0ZXJpc3RpY3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNDbGFzcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhc3ZjLmNsYXNzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2Yy5jbGFzcy50b1N0cmluZygpLnRyaW0oKSAhPT0gJyc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFzQ2hhcmFjdGVyaXN0aWMgJiYgaGFzQ2xhc3M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoKHN2YzogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHN2Yy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7c3ZjLmNsYXNzfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkgPz8gW10sXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uUm9vbUluZm9JXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zb3J0KChhOiBCYWJ5bG9uUm9vbXNMaXN0SXRlbSwgYjogQmFieWxvblJvb21zTGlzdEl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChhLm9yZGVyID8/IDApIC0gKGIub3JkZXIgPz8gMCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgIH0gYXMgQmFieWxvblJvb21zU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBPZmZlclNsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbk9mZmVyU2xpZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgYmFja2dyb3VuZEltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYmFja2dyb3VuZGltYWdlbmVzPy5bMF0gfHxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmRpbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgb2ZmZXJzOiBwcm9wcz8ub2ZmZXJzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uRnJvbTogaXRlbT8uYXBwbGljYXRpb25Gcm9tLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25UbzogaXRlbT8uYXBwbGljYXRpb25UbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5OiBpdGVtPy5jdXJyZW5jeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2NvdW50OiBpdGVtPy5kaXNjb3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtPy5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDE6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMzogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uczogaXRlbS50ZXh0cz8uY29uZGl0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0udGV4dHM/LnJlc2VydmF0aW9uVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uVGV4dEluZm9JLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtPy51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlRnJvbTogaXRlbT8udmlzaWJsZUZyb20sXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlVG86IGl0ZW0/LnZpc2libGVUbyxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbk9mZmVySVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uT2ZmZXJTbGlkZXJJO1xuICAgIH1cbiAgICAvLy0tLS0gTEFZT1VUIENPTVBPTkVOVFMgRU5ELS0tLS8vXG5cbiAgICBtYXBUaGFua3MocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25UaGFua3NJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uVGhhbmtzSTtcbiAgICB9XG5cbiAgICBtYXBDb250YWN0Rm9ybShcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgbmRQcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBuZFByb3BzQ29uc3VsdDogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkNvbnRhY3RGb3JtSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbnRhaW4sXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LnRhZyxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRzOiB0aGlzLm1hcEdsb2JhbFRleHRzKHByb3BzPy50ZXh0cykgYXMgQmFieWxvblRleHRJbmZvSSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIHRleHRhcmVhOiB7XG4gICAgICAgICAgICAgICAgaWQ6ICdtZW5zYWplJyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dE1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplVGV4dChwcm9wcz8udGV4dHM/LmlucHV0TWVzc2FnZSksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRNZXNzYWdlUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclJlcXVpcmVkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbmRpdGlvbnM6IHByb3BzPy50ZXh0cz8uY29uZGl0aW9ucyxcbiAgICAgICAgICAgIGNvbmRpdGlvbnMyOiBwcm9wcz8udGV4dHM/LmNvbmRpdGlvbnMyLFxuICAgICAgICAgICAgZHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5kcm9wZG93blRpdGxlLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IG5kUHJvcHNDb25zdWx0Py5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN1bHRUeXBlSWQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3AuY29uc3VsdF90eXBlX2lkID8/IHByb3AuY29uc3VsdFR5cGVJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBwcm9wLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByb3AubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5kcm9wZG93blBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yUmVxdWlyZWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaG90ZWxEcm9wOlxuICAgICAgICAgICAgICAgIHByb3BzPy5ob3RlbHM/Lmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmhvdGVsRHJvcFRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IHByb3AuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByb3AubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5ob3RlbERyb3BQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JSZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApIGFzIHN0cmluZyxcbiAgICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdub21icmUnLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dE5hbWUsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dE5hbWUpLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dE5hbWVQbGFjZUhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdzdXJuYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0U3VybmFtZXMgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRsYXN0bmFtZSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplVGV4dChcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRTdXJuYW1lcyA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRsYXN0bmFtZVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRTdXJuYW1lc1BsYWNlSG9sZGVyID8/XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0bGFzdG5hbWVQbGFjZUhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yU3VybmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsKSxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbFBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JFbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdwaG9uZScsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0UGhvbmUsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dFBob25lKSxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZVBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZWwnLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclBob25lLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdIGFzIEJhYnlsb25JbnB1dElbXSxcbiAgICAgICAgICAgIGluZm86IHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiB7XG4gICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyBuZFByb3BzPy50ZXh0cz8uYWRkcmVzc0ljb24sXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBuZFByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBuZFByb3BzPy5saW5rcz8uYWRkcmVzcz8uWzBdPy5bMF0/LmxhYmVsLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZW1haWw6IHtcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIG5kUHJvcHM/LnRleHRzPy5lbWFpbEljb24sXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBuZFByb3BzPy50ZXh0cz8uZW1haWxUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMobmRQcm9wcz8ubGlua3M/LmVtYWlsPy5bMF0pPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAoYnRuKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmJ0bixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgbWFpbHRvOiR7YnRuPy51cmx9bGAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHBob25lOiB7XG4gICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyBuZFByb3BzPy50ZXh0cz8ucGhvbmVJY29uLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbmRQcm9wcz8udGV4dHM/LnBob25lVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKG5kUHJvcHM/LmxpbmtzPy5waG9uZT8uWzBdKT8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5idG4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYHBob25lOiR7YnRuPy51cmx9bGAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQ29udGFjdEZvcm1JO1xuICAgIH1cblxuICAgIG1hcENvbnRhY3RBZGRyZXNzKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkNvbnRhY3RBZGRyZXNzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGFkZHJlc3NTb3VyY2UgPSBwcm9wcz8uaG90ZWxBZGRyZXNzID8/IHByb3BzPy5hZGRyZXNzPy5bMF07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbmZvOiB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgICAgICAgICBpY29uOiAnaWNvbi0nICsgcHJvcHM/LnRleHRzPy5hZGRyZXNzSWNvbixcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NTb3VyY2U/LmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWRkcmVzc1NvdXJjZT8uY3AsIGFkZHJlc3NTb3VyY2U/LmNpdHldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCcgJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzU291cmNlPy5sb2NhbGl0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFthZGRyZXNzU291cmNlPy5wcm92aW5jZSwgYWRkcmVzc1NvdXJjZT8uY291bnRyeV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oJywgJyksXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHBhcnQsIGlkeCwgYXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA9PT0gMCkgcmV0dXJuIHBhcnQgKyAnPGJyPic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA9PT0gMSAmJiBhcnJbMl0pIHJldHVybiBwYXJ0ICsgJywgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ID09PSAxKSByZXR1cm4gcGFydCArICc8YnI+JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ID09PSAyKSByZXR1cm4gcGFydCArICc8YnI+JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFydDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuam9pbignJyksXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhZGRyZXNzU291cmNlPy5saW5rLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBhZGRyZXNzU291cmNlPy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSBhcyAoeyBzbWFsbFRleHQ/OiBzdHJpbmcgfSAmIEJhYnlsb25CdXR0b25JKVtdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZW1haWw6IHtcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIHByb3BzPy50ZXh0cz8uZW1haWxJY29uLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmVtYWlsVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmVtYWlsVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uZW1haWxUaXRsZT8uY29udGFpbiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc1NvdXJjZT8uZW1haWwsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgbWFpbHRvOiR7YWRkcmVzc1NvdXJjZT8uZW1haWx9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2V4dGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogYWRkcmVzc1NvdXJjZT8uZW1haWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxUZXh0OiBhZGRyZXNzU291cmNlPy5lbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0gYXMgKHsgc21hbGxUZXh0Pzogc3RyaW5nIH0gJiBCYWJ5bG9uQnV0dG9uSSlbXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHBob25lOiB7XG4gICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyBwcm9wcz8udGV4dHM/LnJlc2VydmF0aW9uc0ljb24sXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucmVzZXJ2YXRpb25zVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnJlc2VydmF0aW9uc1RpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnJlc2VydmF0aW9uc1RpdGxlPy5jb250YWluIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzU291cmNlPy5waG9uZSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGB0ZWw6JHthZGRyZXNzU291cmNlPy5waG9uZX1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBhZGRyZXNzU291cmNlPy5waG9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbWFsbFRleHQ6IGFkZHJlc3NTb3VyY2U/LnBob25lLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGB0ZWw6JHthZGRyZXNzU291cmNlPy5waG9uZXR3b31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBhZGRyZXNzU291cmNlPy5waG9uZXR3byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbWFsbFRleHQ6IGFkZHJlc3NTb3VyY2U/LnBob25ldHdvLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSBhcyAoeyBzbWFsbFRleHQ/OiBzdHJpbmcgfSAmIEJhYnlsb25CdXR0b25JKVtdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcENvbnRhY3RNYXAocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Db250YWN0TWFwYUkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29udGVudFVybDogcHJvcHM/LnRleHRzPy5waG9uZUljb24sXG4gICAgICAgICAgICBtYXBJbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBtYXBJbWFnZU1vYmlsZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzbW9iaWxlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkNvbnRhY3RNYXBhSTtcbiAgICB9XG5cbiAgICBtYXBDb250YWN0SG93KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQ29udGFjdEhvd0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uVmVudGFqYXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmljb259YCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkNvbnRhY3RNYXBJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25Db250YWN0SG93STtcbiAgICB9XG5cbiAgICBtYXBXZWJtYXAocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25XZWJtYXBJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxpbmtzOiAoXG4gICAgICAgICAgICAgICAgcHJvcHM/LnBhZ2VzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBsaW5rLnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2ludGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICAgICAgKSBhcyBCYWJ5bG9uQnV0dG9uSVtdXG4gICAgICAgICAgICApLmZpbHRlcihcbiAgICAgICAgICAgICAgICAobGluaykgPT5cbiAgICAgICAgICAgICAgICAgICAgbGluay51cmw/LnNwbGl0KCcvJylbMV0gPT09XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8ubG9jYXRlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSBhcyBzdHJpbmcsXG4gICAgICAgICAgICBncm91cEJ5Q2F0ZWdvcnk6IHRoaXMuaGFzVGV4dFRva2VuVmFsdWUoXG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5ncm91cEJ5Q2F0ZWdvcnlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBMZWdhbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkxlZ2FsSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbnRhaW4sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbj8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbj8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbkxlZ2FsSTtcbiAgICB9XG5cbiAgICBtYXBCcmVhZGNydW1icyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkJyZWFkY3J1bWJJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxpbmtzOiAocHJvcHM/Lml0ZW1zIGFzIGFueVtdKVxuICAgICAgICAgICAgICAgID8uc29ydCgoYSwgYikgPT4gYSAtIGIpXG4gICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChpdGVtKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogaXRlbT8ubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtPy51cmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpdGVtPy51cmw/LmNoYXJBdChpdGVtPy51cmw/Lmxlbmd0aCAtIDEpID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpdGVtPy51cmw/LnNsaWNlKDAsIC0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpdGVtPy51cmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkJyZWFkY3J1bWJJO1xuICAgIH1cblxuICAgIG1hcFJvb21zQ29scyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblJvb21zQ29sc0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZmlsdGVyczogcHJvcHM/LmZpbHRlcnM/Lm1hcCgoZmlsdGVyOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGZpbHRlci5uYW1lLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IGZpbHRlcj8udmFsdWVzPy5tYXAoKG9wdGlvbjogc3RyaW5nKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBjb2RlOiBvcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IG9wdGlvbixcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgdGl0bGU6IGZpbHRlci5uYW1lLFxuICAgICAgICAgICAgICAgIHNtYWxsdGl0bGU6IGZpbHRlci5zbWFsbHRpdGxlLFxuICAgICAgICAgICAgICAgIGZpbHRlcklkOiBmaWx0ZXIuZmlsdGVySWQsXG4gICAgICAgICAgICB9KSkgYXMgQmFieWxvbkRyb3Bkb3duSVtdLFxuICAgICAgICAgICAgc3RGaWx0ZXJzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBuZEZpbHRlcnM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ucm9vbXNcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVkcm9vbUZpbHRlcklkOiBpdGVtPy50ZXh0cz8uYmVkcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJpc3RpY3NGaWx0ZXJJZDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtLmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtPy5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmljZVRleHQ6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBpdGVtPy5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcXVpcG1lbnQ6IGl0ZW0/LnNlcnZpY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodjogc3RyaW5nKSA9PiB2LnRyaW0oKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvb21TZXJ2aWNlVHlwZS5jaGFyYWN0ZXJpc3RpY3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Sb29tc0xpc3RFcXVpcG1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm11bHRpbWVkaWE/LmZpbmQoKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWcpID0+IHRhZy5uYW1lID09PSAnUm9vbXNDb2xzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA/PyBpdGVtLm11bHRpbWVkaWE/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5tdWx0aW1lZGlhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uUm9vbXNMaXN0SXRlbVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc29ydCgoYTogQmFieWxvblJvb21zTGlzdEl0ZW0sIGI6IEJhYnlsb25Sb29tc0xpc3RJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoYS5vcmRlciA/PyAwKSAtIChiLm9yZGVyID8/IDApO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICB9IGFzIEJhYnlsb25Sb29tc0NvbHNJO1xuICAgIH1cblxuICAgIG1hcEZlYXR1cmVzU2xpZGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkZlYXR1cmVzU2xpZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/LlZlbnRhamFzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25GZWF0dXJlc1NsaWRlckl0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgIH0gYXMgQmFieWxvbkZlYXR1cmVzU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBCYW5uZXJJbmZvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQmFubmVySW5mb0kge1xuICAgICAgICBsZXQgaW1nID1cbiAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdID8/IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTogaW1nPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWc/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgdmlkZW86IHByb3BzPy50ZXh0cz8uWydWaWRlby1saW5rJ10sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoaW1nPy5idXR0b25zKSxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcsIGZhbHNlKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQmFubmVySW5mb0k7XG4gICAgfVxuXG4gICAgbWFwUm9vbURldGFpbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblJvb21EZXRhaWxJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFwcm9wcz8ucm9vbSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhLCBidXR0b25zIH0gPSBwcm9wcz8ucm9vbTtcbiAgICAgICAgbGV0IGRldGFpbEJ1dHRvbnMgPSBwcm9wcy5idXR0b25zPy5sZW5ndGggPyBwcm9wcy5idXR0b25zIDogYnV0dG9ucztcbiAgICAgICAgaWYgKGJ1dHRvbnMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgZGV0YWlsQnV0dG9ucyA9IFtidXR0b25zWzBdXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHRleHRzPy5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgdGV4dHM/LmFkZGl0aW9uYWw0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICB0ZXh0cz8uYWRkaXRpb25hbDQgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICB0ZXh0cz8uYWRkaXRpb25hbDQgIT09ICcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LmFkZGl0aW9uYWw0XG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgIGVxdWlwbWVudFRpdGxlOiB0ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoZGV0YWlsQnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ucm9vbT8uc2VydmljZXNcbiAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICBpdGVtPy50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICA/LnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHY6IHN0cmluZykgPT4gdi50cmltKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoUm9vbVNlcnZpY2VUeXBlLkVxdWlwbWVudClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtPy5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgfSkpIGFzIEJhYnlsb25FcXVpcG1lbnRJdGVtW10sXG4gICAgICAgICAgICBzaG93TGVzczogcHJvcHM/LnRleHRzPy5zaG93TGVzcyxcbiAgICAgICAgICAgIHNob3dNb3JlOiBwcm9wcz8udGV4dHM/LnNob3dNb3JlLFxuICAgICAgICAgICAgc2hvd0FsbDogcHJvcHM/LnRleHRzPy5zaG93QWxsID8gZmFsc2UgOiB0cnVlLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByb29tVGV4dHM6IHRleHRzLFxuICAgICAgICB9IGFzIEJhYnlsb25Sb29tRGV0YWlsSTtcbiAgICB9XG5cbiAgICBtYXBUb3BTbGlkZXJUaHVtYnMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Ub3BTbGlkZXJUaHVtYnNJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgZnJvbTogcHJvcHM/LnRleHRzPy5mcm9tLFxuICAgICAgICAgICAgcHJpY2U6IHByb3BzPy50ZXh0cz8ucHJpY2UsXG4gICAgICAgICAgICBjdXJyZW5jeTogcHJvcHM/LnRleHRzPy5jdXJyZW5jeSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGltYWdlOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuPy5tYXAoKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+ICh7XG4gICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uVG9wU2xpZGVyVGh1bWJzSTtcbiAgICB9XG5cbiAgICBtYXBSb29tc0xpc3QocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Sb29tc0xpc3RJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0RmlsdGVyczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbmRGaWx0ZXJzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5yb29tc1xuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWRyb29tRmlsdGVySWQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyaXN0aWNzRmlsdGVySWQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnM/LnNsaWNlKCkucmV2ZXJzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtPy5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmljZVRleHQ6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcXVpcG1lbnQ6IGl0ZW0/LnNlcnZpY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodjogc3RyaW5nKSA9PiB2LnRyaW0oKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvb21TZXJ2aWNlVHlwZS5jaGFyYWN0ZXJpc3RpY3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Sb29tc0xpc3RFcXVpcG1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm11bHRpbWVkaWE/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+IGltZz8uY292ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB8fCBpdGVtPy5tdWx0aW1lZGlhPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubXVsdGltZWRpYSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBpdGVtPy5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Sb29tc0xpc3RJdGVtXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zb3J0KChhOiBCYWJ5bG9uUm9vbXNMaXN0SXRlbSwgYjogQmFieWxvblJvb21zTGlzdEl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChhLm9yZGVyID8/IDApIC0gKGIub3JkZXIgPz8gMCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgIH0gYXMgQmFieWxvblJvb21zQ29sc0k7XG4gICAgfVxuXG4gICAgbWFwQ29taW5nU29vbihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkNvbWluZ1Nvb25JIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkltYWdlSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGxvZ286IHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkltYWdlSVxuICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgIHRleHRzOiBwcm9wcz8udGV4dHMsXG4gICAgICAgICAgICBzb2NpYWxNZWRpYTogcHJvcHM/LnNvY2lhbE1lZGlhLFxuICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3MpPy5bMF0sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgIH0gYXMgQmFieWxvbkNvbWluZ1Nvb25JO1xuICAgIH1cblxuICAgIG1hcE9mZmVyRGV0YWlsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uT2ZmZXJEZXRhaWxJIHtcbiAgICAgICAgY29uc3Qgb2ZmZXIgPSBwcm9wcz8ub2ZmZXI/LlswXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOiBvZmZlcj8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgdGl0bGU6IG9mZmVyPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogb2ZmZXI/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIG5kVGl0bGU6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICBsYWJlbERpc2NvdW50OiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgbGFiZWxGcm9tOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgY3VycmVuY3k6IG9mZmVyPy5jdXJyZW5jeSxcbiAgICAgICAgICAgIHByaWNlOiBvZmZlcj8ucHJpY2UsXG4gICAgICAgICAgICBkaXNjb3VudDogb2ZmZXI/LmRpc2NvdW50LFxuICAgICAgICAgICAgY29uZGl0aW9uczogb2ZmZXI/LnRleHRzPy5jb25kaXRpb25zLFxuICAgICAgICAgICAgY29uZGl0aW9uc1RpdGxlOiBvZmZlcj8udGV4dHM/LmNvbmRpdGlvbnNUaXRsZSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgYWRkaXRpb25hbDI6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICBhZGRpdGlvbmFsMzogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShvZmZlcj8ubXVsdGltZWRpYT8uWzBdLCBmYWxzZSksXG4gICAgICAgICAgICBtdWx0aW1lZGlhOiB0aGlzLm1hcEltYWdlcyhvZmZlcj8ubXVsdGltZWRpYSksXG4gICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcyk/LlswXSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhvZmZlcj8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIHNlcnZpY2VzOiB0aGlzLm1hcEdsb2JhbFNlcnZpY2VzKG9mZmVyPy5zZXJ2aWNlcyksXG4gICAgICAgIH0gYXMgQmFieWxvbk9mZmVyRGV0YWlsSTtcbiAgICB9XG5cbiAgICBtYXBPZmZlcnNMaXN0KFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBpc0hvbWU6IGJvb2xlYW4gfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uT2ZmZXJzTGlzdEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ub2ZmZXJzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtPy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0/LnByaWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVuY3k6IGl0ZW0/LmN1cnJlbmN5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzY291bnQ6IGl0ZW0/LmRpc2NvdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtPy5tdWx0aW1lZGlhPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogaXRlbT8ubXVsdGltZWRpYT8uWzBdPy5hbHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZUJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VlT2ZmZXJCdXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbEZyb206IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsRGlzY291bnQ6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvbWU6IGl0ZW0/LnNpdGVzPy5bMF0/LmhvbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3B1cDogaXRlbT8uc2l0ZXM/LlswXT8ucG9wdXAsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25PZmZlcnNMaXN0SXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVySW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzSG9tZTogaXNIb21lLFxuICAgICAgICB9IGFzIEJhYnlsb25PZmZlcnNMaXN0STtcbiAgICB9XG5cbiAgICBtYXBGYXEocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25GYXFJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubG9jYXRpb25Ib3dcbiAgICAgICAgICAgICAgICA/IHByb3BzPy5sb2NhdGlvbkhvdz8uaXRlbXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAoZmFxOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogZmFxLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGZhcS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkl0ZW1JXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBwcm9wcz8uaXRlbXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAoZmFxOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogZmFxLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGZhcS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSXRlbUlcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWc6IHByb3BzPy5sb2NhdGlvbk1hcFxuICAgICAgICAgICAgICAgID8gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmxvY2F0aW9uTWFwPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5sb2NhdGlvbk1hcD8ubXVsdGltZWRpYT8uaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkZhcUk7XG4gICAgfVxuXG4gICAgbWFwU3RhdGljRm9vdGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uU3RhdGljRm9vdGVySSB7XG4gICAgICAgIC8vIEZ1bmNpb24gdGVtcG9yYWwgaGFzdGEgcXVlIGVsIGJhY2sgZGV2dWVsdmEgbGEgbGlzdGEgZGUgaG90ZWxlc1xuICAgICAgICBjb25zdCBkeW5hbWljSG90ZWxzQWRyZXNzZXMgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhZGRyZXNzZXNNYXA6IHsgW2tleTogc3RyaW5nXTogUGFydGlhbDxCYWJ5bG9uQWRkcmVzc0l0ZW0+IH0gPVxuICAgICAgICAgICAgICAgIHt9O1xuICAgICAgICAgICAgaWYgKCFwcm9wcz8udGV4dHMpIHJldHVybjtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHByb3BzPy50ZXh0cykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGtleS5zdGFydHNXaXRoKCdhZGRyZXNzbGlzdCcpICYmIHByb3BzPy50ZXh0c1trZXldKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0ga2V5Lm1hdGNoKC9hZGRyZXNzbGlzdChcXGQrKSguKikvKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IG1hdGNoWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBtYXRjaFsyXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhZGRyZXNzZXNNYXBbaW5kZXhdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzTWFwW2luZGV4XSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHBhcnNlSW50KGluZGV4LCAxMCkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBwcm9wcz8udGV4dHNba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdUaXRsZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3Nlc01hcFtpbmRleF0ubmFtZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdBZGRyZXNzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzTWFwW2luZGV4XS5hZGRyZXNzID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3Nlc01hcFtpbmRleF0uZnVsbF9hZGRyZXNzID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1VybCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3Nlc01hcFtpbmRleF0udXJsID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1RlbGYnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkcmVzc2VzTWFwW2luZGV4XSBhcyBhbnkpLnBob25lID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0VtYWlsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZHJlc3Nlc01hcFtpbmRleF0gYXMgYW55KS5lbWFpbCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoYWRkcmVzc2VzTWFwKSBhcyBCYWJ5bG9uQWRkcmVzc0l0ZW1bXTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgbmRUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHJkVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ubGlua3NUaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmxpbmtzVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmxpbmtzVGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aFRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmxvY2F0aW9uVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5sb2NhdGlvblRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogKHByb3BzPy50ZXh0cz8ubG9jYXRpb25UaXRsZT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICAgICAgICh0eXBlb2YgcHJvcHM/LnRleHRzPy5uZXdzbGV0dGVyVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5uZXdzbGV0dGVyVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/Lm5ld3NsZXR0ZXJUaXRsZT8uY29udGFpbikpLFxuXG4gICAgICAgICAgICBmaWZ0aFRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmFkZGl0aW9uYWxGb290ZXJUaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmFkZGl0aW9uYWxGb290ZXJUaXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uYWRkaXRpb25hbEZvb3RlclRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgYWhUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5BZGRyZXNzSG90ZWxzVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5BZGRyZXNzSG90ZWxzVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LkFkZHJlc3NIb3RlbHNUaXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIG5kdGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgcmR0aXRsZTogcHJvcHM/LnRleHRzPy5saW5rc1RpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGh0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5sb2NhdGlvblRpdGxlPy50YWcgPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5uZXdzbGV0dGVyVGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBmaWZ0aHRpdGxlOiBwcm9wcz8udGV4dHM/LmFkZGl0aW9uYWxGb290ZXJUaXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNvcHlyaWdodDogcHJvcHM/LnRleHRzPy5jb3B5cmlnaHQ/LnRhZyxcbiAgICAgICAgICAgICAgICBhaHRpdGxlOiBwcm9wcz8udGV4dHM/LkFkZHJlc3NIb3RlbHNUaXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZyYW1lVXJsOiAhIXByb3BzPy50ZXh0cz8uZnJhbWVVcmxcbiAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uZnJhbWVVcmxcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGNvbnRhY3RJbmZvOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uY29udGFjdD8uWzBdKSxcbiAgICAgICAgICAgIGNvbnRhY3RMaW5rczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3M/LmNvbnRhY3RMaW5rcz8uWzBdKSxcbiAgICAgICAgICAgIGNvbnRhY3RUZXh0OiBwcm9wcz8udGV4dHM/LnRleHRwaG9uZTIsXG4gICAgICAgICAgICBmb290ZXJMaW5rczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3M/LmZvb3RlckxpbmtzPy5bMF0pLFxuICAgICAgICAgICAgYWRkcmVzczogQXJyYXkuaXNBcnJheShwcm9wcz8uYWRkcmVzcylcbiAgICAgICAgICAgICAgICA/IHByb3BzPy5hZGRyZXNzLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAoYWRkcmVzczogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGFkZHJlc3MuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBhZGRyZXNzLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiBhZGRyZXNzLmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaXR5OiBhZGRyZXNzLmNpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aW5jZTogYWRkcmVzcy5wcm92aW5jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IGFkZHJlc3MuY291bnRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwOiBhZGRyZXNzLmNwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhZGRyZXNzLmxpbmssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsX2FkZHJlc3M6IGFkZHJlc3MuZnVsbEFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnczogYWRkcmVzcy5zbHVncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkFkZHJlc3NJdGVtXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgICAgIGFkZHJlc3NIb3RlbHM6XG4gICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShwcm9wcz8uYWRkcmVzc0hvdGVscykgJiZcbiAgICAgICAgICAgICAgICBwcm9wcz8uYWRkcmVzc0hvdGVscy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LmFkZHJlc3NIb3RlbHMubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkcmVzczogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogYWRkcmVzcy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBhZGRyZXNzLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogYWRkcmVzcy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IGFkZHJlc3MuY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aW5jZTogYWRkcmVzcy5wcm92aW5jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5OiBhZGRyZXNzLmNvdW50cnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3A6IGFkZHJlc3MuY3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhZGRyZXNzLmxpbmssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmU6IGFkZHJlc3MucGhvbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw6IGFkZHJlc3MuZW1haWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbF9hZGRyZXNzOiBhZGRyZXNzLmZ1bGxBZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWdzOiBhZGRyZXNzLnNsdWdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkFkZHJlc3NJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICA6ICgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGR5bmFtaWNBZGRyZXNzZXMgPSBkeW5hbWljSG90ZWxzQWRyZXNzZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGR5bmFtaWNBZGRyZXNzZXMgJiYgZHluYW1pY0FkZHJlc3Nlcy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGR5bmFtaWNBZGRyZXNzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgIH0pKCksXG4gICAgICAgICAgICBzb2NpYWxNZWRpYTogcHJvcHM/LnNvY2lhbE1lZGlhPy5tYXAoXG4gICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBiYWJ5bG9uLSR7bGluay5uYW1lPy50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGxpbmsudXJsLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvcHlyaWdodDpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5jb3B5cmlnaHQgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5jb3B5cmlnaHRcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmNvcHlyaWdodD8uY29udGFpbixcbiAgICAgICAgICAgIG5hdjogcHJvcHM/Lm5hdj8ubWFwKFxuICAgICAgICAgICAgICAgIChuYXY6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBuYXYubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbmF2LnVybCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYmFja2dyb3VuZD8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBhbHQ6IHByb3BzPy5tdWx0aW1lZGlhPy5iYWNrZ3JvdW5kPy50aXRsZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8ubG9nbz8uWzBdLCBmYWxzZSksXG4gICAgICAgICAgICAvLyBpbnB1dDogcHJvcHM/LnRleHRzPy5uZXdzbGV0dGVyRGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6ICduZXdzbGV0dGVyJyxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dEhvbGRlcixcbiAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8ubmV3c0Vycm9yRW1haWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGVnYWxBZHZpc2U6IHByb3BzPy50ZXh0cz8uc3Vic2NyaWJlcixcbiAgICAgICAgICAgIGFkZGl0aW9uYWxMaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICBwcm9wcz8ubGlua3M/LmFkZGl0aW9uYWxGb290ZXJMaW5rc1swXT8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+ICEhYnRuPy5sYWJlbFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvblN0YXRpY0Zvb3Rlckk7XG4gICAgfVxuXG4gICAgbWFwR2FsbGVyeShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkdhbGxlcnlJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRleHRzOiB0aGlzLm1hcEdsb2JhbFRleHRzKHByb3BzPy50ZXh0cykgYXMgQmFieWxvblRleHRJbmZvSSxcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJvb21zQnRuOiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzPy50ZXh0cz8uZmlsdGVyUm9vbXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmlsdGVyc0J0bjoge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcz8udGV4dHM/LmZpbHRlckNhdGVnb3JpZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmlsdGVyczogcHJvcHM/LmZpbHRlcnM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsOiBpdGVtLmFsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb206IGl0ZW0ucm9vbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb21zOiBpdGVtLnJvb21zLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uR2FsbGVyeUZpbHRlclxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltYWdlczogcHJvcHM/LmZpbHRlcnNcbiAgICAgICAgICAgICAgICA/LnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgYWNjOiB7IG11bHRpbWVkaWE6IGFueVtdOyBmaWx0ZXJJbmRleDogbnVtYmVyIH1bXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVySW5kZXg6IG51bWJlclxuICAgICAgICAgICAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIubXVsdGltZWRpYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG11bHRpbWVkaWFXaXRoRmlsdGVyID0gZmlsdGVyLm11bHRpbWVkaWEubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZmlsdGVySW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE6IG11bHRpbWVkaWFXaXRoRmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVySW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5mbGF0TWFwKCh7IG11bHRpbWVkaWEgfTogYW55KSA9PiBtdWx0aW1lZGlhKVxuICAgICAgICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZywgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogaW1nPy5maWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uR2FsbGVyeUl0ZW1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25HYWxsZXJ5STtcbiAgICB9XG5cbiAgICBtYXBMYW5ndWFnZU1vZGFsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uTGFuZ3VhZ2VNb2RhbEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubGFuZ3VhZ2VzLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IHByb3BzPy5sYW5ndWFnZXM/LmZpbmQoXG4gICAgICAgICAgICAgICAgKGxuZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICBsbmcuaWQgPT09IHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8uaWRcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICB9IGFzIEJhYnlsb25MYW5ndWFnZU1vZGFsSTtcbiAgICB9XG5cbiAgICBtYXBFbmdpbmUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25FbmdpbmVJIHwgQmFieWxvbkVuZ2luZU1vZGFsSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvbmx5QWR1bHRzOiBwcm9wcz8ub25seUFkdWx0cyxcbiAgICAgICAgICAgIGRlZmF1bHRCdXR0b246IHByb3BzPy5kZWZhdWx0SW50ZXJuYWxCdXR0b24sXG4gICAgICAgICAgICBkZWZhdWx0UHJvbW9Db2RlOiBwcm9wcz8uZGVmYXVsdFByb21vQ29kZSxcbiAgICAgICAgICAgIGJ1dHRvbjogeyBsYWJlbDogcHJvcHM/LnRleHRzPy5tb3RvclN1Ym1pdCwgdXJsOiBwcm9wcz8udXJsIH0sXG4gICAgICAgICAgICBkYXRlcGlja2VyRGF0YToge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm1vdG9yRGF0ZVRpdGxlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGd1ZXN0c0lucHV0OiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubW90b3JHdWVzdHNJbnB1dEhvbGRlcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcm9tb0lucHV0OiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubW90b3JQcm9tb0hvbGRlcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBndWVzdHM6IHtcbiAgICAgICAgICAgICAgICBidG46IHsgbGFiZWw6IHByb3BzPy50ZXh0cz8ubW90b3JBcHBseSB9LFxuICAgICAgICAgICAgICAgIGFkdWx0c0Ryb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yQWR1bHRzVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhwcm9wcz8ubWF4QWR1bHRzLCAxKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGp1bmlvcnNEcm9wZG93bjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm1heEp1bmlvciA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JKdW5pb3JUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtYWxsVGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JKdW5pb3JTbWFsbExhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZW5lcmF0ZUFnZXNPcHRpb25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tYXhKdW5pb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGtpZHNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvcktpZHNUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgc21hbGxUaXRsZTogcHJvcHM/LnRleHRzPy5tb3RvcktpZHNTbWFsbExhYmVsLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8ubWF4Q2hpbGRyZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhwcm9wcz8ubWF4Q2hpbGRyZW5zKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmdlbmVyYXRlQWdlc09wdGlvbnMocHJvcHM/Lm1heENoaWxkcmVuKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJhYmllc0Ryb3Bkb3duOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubWF4QmFiaWVzID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckJhYmllc1RpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxUaXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckJhYmllc1NtYWxsVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLmdlbmVyYXRlQWdlc09wdGlvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm1heEJhYmllc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgYWdlc0Ryb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tYXhBZ2VDaGlsZHJlbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tYXhBZ2VCYWJpZXMgKyAxXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBhZ2VzTGFiZWw6IHByb3BzPy50ZXh0cz8ubW90b3JBZ2VzVGl0bGUsXG4gICAgICAgICAgICAgICAga2lkc0xhYmVsOiBwcm9wcz8udGV4dHM/Lm1vdG9yS2lkTGFiZWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JUaXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yU3VidGl0bGUsXG4gICAgICAgICAgICB1cmw6IHByb3BzPy51cmwsXG4gICAgICAgICAgICBob3RlbDogcHJvcHM/LmhvdGVscz8uWzBdLFxuICAgICAgICAgICAgY29kaWdvOiBwcm9wcz8uY29kaWdvID8gcHJvcHM/LmNvZGlnbyA6ICdkZW1vX2MydF9jbGllbnRlcycsIC8vdG8gY2hhbmdlLCBkb250IGNvbWUgZnJvbSBiYWNrXG4gICAgICAgICAgICBnbFZhbHVlOiBwcm9wcz8uZ2xWYWx1ZSxcbiAgICAgICAgICAgIGhvdGVsc0lucHV0OiBwcm9wcz8udGV4dHM/Lm1vdG9yRHJvcERvd25OYW1lLFxuICAgICAgICAgICAgaG90ZWxzUGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubW90b3JEcm9wRG93bkhvbGRlcixcbiAgICAgICAgICAgIGhvdGVsczoge1xuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5ob3RlbHM/Lm1hcCgoaG90ZWw6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogaG90ZWw/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHRpY2tlcjogaG90ZWw/LnRpY2tlcixcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBob3RlbD8udXJsLFxuICAgICAgICAgICAgICAgICAgICBpZDogaG90ZWw/LmlkLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbkVuZ2luZU1vZGFsSSB8IEJhYnlsb25FbmdpbmVJO1xuICAgIH1cbiAgICBtYXBTbGlkZXIzSXRlbXMoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIGlkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25TbGlkZXIzSXRlbXNJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbS5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uU2xpZGVySXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uU2xpZGVyM0l0ZW1zSTtcbiAgICB9XG5cbiAgICBtYXBIb3RlbHNTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Ib3RlbHNTbGlkZXJJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBob3RlbHM6IHByb3BzPy5ob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ6IGl0ZW0ubXVsdGltZWRpYT8uWzBdPy5hbHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhpdGVtLmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpdGVtLmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uU2xpZGVySXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSG90ZWxzU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBIb3RlbHNMaXN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSG90ZWxzTGlzdEkge1xuICAgICAgICAvLyBUT0RPOiBSZXZpc2FyIG1hcHBlbyBkZSBpbcOhZ2VuZXNcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBob3RlbHM6IHByb3BzPy5ob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRNb3JlOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0OiBpdGVtPy5tdWx0aW1lZGlhPy5bMF0/LmFsdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtPy5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZUaXRsZTogcHJvcHM/LnRleHRzPy5mb290ZXJUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZTdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5mb290ZXJQcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzOiBpdGVtPy5zZXJ2aWNlc0xpc3Q/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtPy5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnRuTGVzczogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnRuTW9yZTogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWw0LFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uU2xpZGVySXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSG90ZWxzTGlzdEk7XG4gICAgfVxuXG4gICAgbWFwSW5mbzRJbWcocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25JbmZvNGltZ0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBpbWFnZTE6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lc1swXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltYWdlMjogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzWzFdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1hZ2UzOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXNbMl0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZTQ6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lc1szXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mbzRpbWdJO1xuICAgIH1cblxuICAgIG1hcFNlcnZpY2VzU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uU2VydmljZXNTbGlkZXJJIHtcbiAgICAgICAgY29uc3QgYWR2ZW50ID0gcHJvcHM/LnNlcnZpY2VzU2VydmljZSA/PyBwcm9wcz8uVmVudGFqYXM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZHZhbnRhZ2VzOiBhZHZlbnQ/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUgPz8gaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmNsYXNzID8/IGl0ZW0uaWNvbn1gLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIEJhYnlsb25TZXJ2aWNlc1NsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwQWR2YW50YWdlcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkFkdmFudGFnZXNJIHtcbiAgICAgICAgY29uc3QgdmVudGFqYXMgPVxuICAgICAgICAgICAgcHJvcHM/LlZlbnRhamFzID8/IHByb3BzPy5saXN0cyA/PyBwcm9wcz8uTGlzdHMgPz8gcHJvcHM/Lkxpc3Q7XG4gICAgICAgIGNvbnN0IGFkdiA9IHZlbnRhamFzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmljb259YCxcbiAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgfSkpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBhZHZhbnRhZ2VzOiBhZHYsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VlTW9yZTogcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2Vzc2VlbW9yZSxcbiAgICAgICAgICAgIHNlZUxlc3M6IHByb3BzPy50ZXh0cz8uYWR2YW50YWdlc3NlZWxlc3MsXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmFkdmFudGFnZXNpbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25BZHZhbnRhZ2VzSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvQmlnKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSW5mb0JpZ0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8udGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LmJ1dHRvbnNcbiAgICAgICAgICAgICk/LlswXSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWdTbWFsbDogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMV0gPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/Lm5kaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb0JpZ0k7XG4gICAgfVxuXG4gICAgbWFwSW5mb1ppZ1phZ1YyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBpZGVudGlmaWVyOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uSW5mb1ppZ3phZ1YySSB7XG4gICAgICAgIGNvbnN0IFtpbWFnZV0gPVxuICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlIHx8IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyB8fCBbXTtcbiAgICAgICAgY29uc3QgW2ltYWdlMl0gPVxuICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlMiB8fCBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2Vzc21hbGwgfHwgW107XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICAgICAgaXRlbXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaW1hZ2U/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1hZ2UsIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGltYWdlPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltYWdlPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogaW1hZ2U/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGltYWdlMj8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWFnZTIsIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGltYWdlMj8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWFnZTI/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpbWFnZTI/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlczogcHJvcHM/LlZlbnRhamFzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogaXRlbS5pY29uID8gYGljb24tJHtpdGVtLmljb259YCA6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0gYXMgQmFieWxvbkluZm9aaWd6YWdWMkl0ZW1bXSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb1ppZ3phZ1YySTtcbiAgICB9XG5cbiAgICBtYXBGb290ZXJDb250YWN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uRm9vdGVyQ29udGFjdEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBleHRyYVR4dDogcHJvcHM/LnRleHRzPy5hZGRpdGlvbmFsVGV4dDEsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgICAgICBhbHQ6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5hbHQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWR2YW50YWdlczogcHJvcHM/LlZlbnRhamFzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmljb259YCxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uY29udGFjdExpbmtzPy5bMF0pLFxuICAgICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgICAgIGxvY2FsaXR5OiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5sb2NhbGl0eSxcbiAgICAgICAgICAgICAgICBjaXR5OiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5jaXR5LFxuICAgICAgICAgICAgICAgIHByb3ZpbmNlOiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5wcm92aW5jZSxcbiAgICAgICAgICAgICAgICBjb3VudHJ5OiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgIGNwOiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5jcCxcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgIGxhdDogcHJvcHM/LmhvdGVsQWRkcmVzcz8ubGF0LFxuICAgICAgICAgICAgICAgIGxvbjogcHJvcHM/LmhvdGVsQWRkcmVzcz8ubG9uLFxuICAgICAgICAgICAgICAgIHBob25lOiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5waG9uZSxcbiAgICAgICAgICAgICAgICBlbWFpbDogcHJvcHM/LmhvdGVsQWRkcmVzcz8uZW1haWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25Gb290ZXJDb250YWN0STtcbiAgICB9XG5cbiAgICBtYXBJbmZvMkltZ0JpZyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm8yaW1nQmlnSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgcHJldGl0bGUyOiBwcm9wcz8udGV4dHM/Lm5kUHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTI6IHByb3BzPy50ZXh0cz8ubmRUaXRsZSxcbiAgICAgICAgICAgIHRleHQyOiBwcm9wcz8udGV4dHM/Lm5kRGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBidXR0b24yOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzFdLFxuICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBhbHQ6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5hbHQgPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF0uYWx0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGltZ1NtYWxsOiB7XG4gICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/Lm5kaW1hZ2VuZXM/LlswXSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/Lm5kaW1hZ2U/LlswXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYWx0OiBwcm9wcz8ubXVsdGltZWRpYT8ubmRpbWFnZW5lcz8uWzBdPy5hbHQsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvMmltZ0JpZ0k7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVyTG9nb3MocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Gb290ZXJMb2dvc0kge1xuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPz8gcHJvcHM/LnRleHRzPy50ZXh0O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgIC4uLnByb3BzPy50ZXh0cyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgICAgICBsb2dvczogcHJvcHM/Lm11bHRpbWVkaWE/LmxvZ29zPy5tYXAoKGxvZ286IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGxvZ28sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKGxvZ28/LmxpbmtzKT8uWzBdLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIEJhYnlsb25Gb290ZXJMb2dvc0k7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVyTGlua3MocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Gb290ZXJMaW5rc0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29weXJpZ2h0OiBwcm9wcz8udGV4dHM/LmNvcHlyaWdodCxcbiAgICAgICAgICAgIHllYXI6IHByb3BzPy50ZXh0cz8ueWVhcixcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICB9IGFzIEJhYnlsb25Gb290ZXJMaW5rc0k7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVyU29jaWFscyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkZvb3RlclNvY2lhbEkge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZExpbmtzID0gKHByb3BzPy5zb2NpYWxNZWRpYSB8fCBbXSkuZmlsdGVyKFxuICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICBsaW5rICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgbGluayAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgbGluay51cmwgIT09ICcnICYmXG4gICAgICAgICAgICAgICAgbGluay5pY29uICE9PSAnJ1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBsaW5rczogZmlsdGVyZWRMaW5rcy5tYXAoKGxpbms6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpY29uOiBgYmFieWxvbi0ke2xpbmsubmFtZT8udG9Mb3dlckNhc2UoKX1gLFxuICAgICAgICAgICAgICAgIHVybDogbGluay51cmwsXG4gICAgICAgICAgICAgICAgbGFiZWw6IGxpbmsubmFtZSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uRm9vdGVyU29jaWFsSTtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXIyaXRlbXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25TbGlkZXIyaXRlbXNJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8udGV4dCxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcy5ob3RlbHNcbiAgICAgICAgICAgICAgICA/IHByb3BzPy5ob3RlbHM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5jaXR5LFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtPy5tdWx0aW1lZGlhPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ6IGl0ZW0/Lm11bHRpbWVkaWE/LlswXT8uYWx0LFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlczogaXRlbT8uc2VydmljZXNMaXN0Py5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uY2xhc3N9YCxcbiAgICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICA6IHByb3BzPy5yb29tcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0OiBpdGVtPy5tdWx0aW1lZGlhPy5bMF0/LmFsdCxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIC8vIGxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlczogaXRlbT8uc2VydmljZXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uU2xpZGVyMml0ZW1zSTtcbiAgICB9XG5cbiAgICBtYXBTdGF0aWNGb290ZXJ2Mihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblN0YXRpY0Zvb3RlclYySSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIG5kVGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlLFxuICAgICAgICAgICAgcmRUaXRsZTogcHJvcHM/LnRleHRzPy5saW5rc1RpdGxlLFxuICAgICAgICAgICAgdGhUaXRsZTogcHJvcHM/LnRleHRzPy5sb2NhdGlvblRpdGxlLFxuICAgICAgICAgICAgZnJhbWVVcmw6IHByb3BzPy50ZXh0cz8uZnJhbWVVcmwsXG4gICAgICAgICAgICBpbWdVcmw6IHByb3BzPy5tdWx0aW1lZGlhPy5mb290ZXJpbWc/LlswXT8ubGlua3M/LlswXT8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgY29udGFjdEluZm86IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5jb250YWN0Py5bMF0pLFxuICAgICAgICAgICAgY29udGFjdExpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uY29udGFjdExpbmtzPy5bMF0pLFxuICAgICAgICAgICAgZm9vdGVyTGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5mb290ZXJMaW5rcz8uWzBdKSxcbiAgICAgICAgICAgIGFkZHJlc3M6IEFycmF5LmlzQXJyYXkocHJvcHM/LmFkZHJlc3MpXG4gICAgICAgICAgICAgICAgPyBwcm9wcz8uYWRkcmVzcy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgKGFkZHJlc3M6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBhZGRyZXNzPy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGFkZHJlc3M/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiBhZGRyZXNzPy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2l0eTogYWRkcmVzcz8uY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpbmNlOiBhZGRyZXNzPy5wcm92aW5jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IGFkZHJlc3M/LmNvdW50cnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcDogYWRkcmVzcz8uY3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25BZGRyZXNzSXRlbVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogW10sXG4gICAgICAgICAgICBzb2NpYWxNZWRpYTogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBwcm9wcz8uc29jaWFsTWVkaWE/LlswXT8udXJsLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogcHJvcHM/LnRleHRzPy5pbnN0YWdyYW1UaXRsZSxcbiAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25CdXR0b25JLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGNvcHlyaWdodDogcHJvcHM/LnRleHRzPy5jb3B5cmlnaHQsXG4gICAgICAgICAgICBuYXY6IHByb3BzPy5uYXY/Lm1hcChcbiAgICAgICAgICAgICAgICAobmF2OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbmF2Py5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBuYXY/LnVybCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5mb290ZXJpbWc/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uU3RhdGljRm9vdGVyVjJJO1xuICAgIH1cblxuICAgIG1hcExpc3RHcmlkKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uTGlzdEdyaWRJIHtcbiAgICAgICAgY29uc3QgeyBpbWFnZW5lcyB9ID0gcHJvcHM/Lm11bHRpbWVkaWEgfHwgW107XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBsYWJlbHM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpdGVtczogaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlczogW10sIC8vVE9ETzogcHRlIGJhY2ssXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JdGVtR3JpZElcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkxpc3RHcmlkSTtcbiAgICB9XG5cbiAgICBtYXBOZXdzbGV0dGVyTW9kYWwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25OZXdzbGV0dGVySSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb25kaXRpb25zOiBwcm9wcz8udGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnbWFpbCcsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRIb2xkZXIsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/Lm5ld3NFcnJvckVtYWlsLFxuICAgICAgICAgICAgfSBhcyBCYWJ5bG9uSW5wdXRJLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2ViYWNrZ3JvdW5kPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbk5ld3NsZXR0ZXJJO1xuICAgIH1cblxuICAgIG1hcEdsb2JhbE1vZGFsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uR2xvYmFsTW9kYWxJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnMuZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpZnJhbWU6IHByb3BzPy50ZXh0cz8uaWZyYW1lLFxuICAgICAgICAgICAgLy8gaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgIH0gYXMgQmFieWxvbkdsb2JhbE1vZGFsSTtcbiAgICB9XG5cbiAgICBtYXBPZmZlckJhbm5lclYyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uT2ZmZXJQb3B1cFYySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBvZmZlckRhdGE7XG4gICAgICAgIGlmIChwcm9wcz8ub2ZmZXJzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBvZmZlciA9IHByb3BzPy5vZmZlcnM/LlswXTtcbiAgICAgICAgICAgIG9mZmVyRGF0YSA9IHtcbiAgICAgICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogb2ZmZXI/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IG9mZmVyPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBvZmZlcj8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDI6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsNDogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsNCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhvZmZlcj8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgIG9mZmVyPy5tdWx0aW1lZGlhPy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/IChvZmZlcj8ubXVsdGltZWRpYT8uZmluZCgoaW1nOiBhbnkpID0+IGltZy5jb3ZlcikgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZmVyPy5tdWx0aW1lZGlhPy5bMF0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IChvZmZlcj8ubXVsdGltZWRpYT8uWzBdID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uZGVmYXVsdGltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzY291bnQ6IG9mZmVyPy5kaXNjb3VudCxcbiAgICAgICAgICAgICAgICBwcmljZTogb2ZmZXI/LnByaWNlLFxuICAgICAgICAgICAgICAgIGN1cnJlbmN5OiBvZmZlcj8uY3VycmVuY3ksXG4gICAgICAgICAgICB9IGFzIEJhYnlsb25PZmZlclBvcHVwVjJJO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZmZlckRhdGEgPz8gb2ZmZXJEYXRhO1xuICAgIH1cblxuICAgIG1hcEhlYWRJbnRybyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgY29tcG9uZW50OiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uSGVhZEludHJvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBhZGRpdGlvbmFsVGV4dHMgPSB7XG4gICAgICAgICAgICBhZGRpdGlvbmFsMjogJycsXG4gICAgICAgICAgICBhZGRpdGlvbmFsMzogJycsXG4gICAgICAgICAgICBhZGRpdGlvbmFsNDogJycsXG4gICAgICAgIH07XG4gICAgICAgIGlmIChwcm9wcz8ucm9vbSkge1xuICAgICAgICAgICAgYWRkaXRpb25hbFRleHRzLmFkZGl0aW9uYWwyID0gcHJvcHMucm9vbS50ZXh0cz8uYWRkaXRpb25hbDIgPz8gJyc7XG4gICAgICAgICAgICBhZGRpdGlvbmFsVGV4dHMuYWRkaXRpb25hbDMgPSBwcm9wcy5yb29tLnRleHRzPy5hZGRpdGlvbmFsMyA/PyAnJztcbiAgICAgICAgICAgIGFkZGl0aW9uYWxUZXh0cy5hZGRpdGlvbmFsNCA9IHByb3BzLnJvb20udGV4dHM/LmFkZGl0aW9uYWw0ID8/ICcnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTogYWRkaXRpb25hbFRleHRzLmFkZGl0aW9uYWwyLmxlbmd0aFxuICAgICAgICAgICAgICAgID8gYWRkaXRpb25hbFRleHRzLmFkZGl0aW9uYWwyXG4gICAgICAgICAgICAgICAgOiB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6IGFkZGl0aW9uYWxUZXh0cy5hZGRpdGlvbmFsMy5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IGFkZGl0aW9uYWxUZXh0cy5hZGRpdGlvbmFsM1xuICAgICAgICAgICAgICAgIDogdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRleHQ6IGFkZGl0aW9uYWxUZXh0cy5hZGRpdGlvbmFsNC5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IGFkZGl0aW9uYWxUZXh0cy5hZGRpdGlvbmFsNFxuICAgICAgICAgICAgICAgIDogdHlwZW9mIHByb3BzPy50ZXh0cz8udGV4dCA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50ZXh0XG4gICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGV4dD8uY29udGFpbixcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQ/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCkgPz9cbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Py50ZXh0Y29sb3IsXG4gICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCkgPz8gY29tcG9uZW50Py50ZXh0Y29sb3IsXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LmNvbG9yPy50cmltKCkgPz9cbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Py50ZXh0Y29sb3IsXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb2xvcj8udHJpbSgpID8/XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD8udGV4dGNvbG9yLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGNvbXBvbmVudD8uaWRlbnRpZmllcixcbiAgICAgICAgfSBhcyBCYWJ5bG9uSGVhZEludHJvSTtcbiAgICB9XG5cbiAgICBtYXBFeHRlcm5hbFNjcmlwdChcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25FeHRlcm5hbFNjcmlwdEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2NyaXB0OiBwcm9wcz8udGV4dHM/LkNvbnRhaW5lcixcbiAgICAgICAgICAgIG1zZ19sb2FkaW5nOiBwcm9wcz8udGV4dHM/LmxvYWRpbmcgPz8gJ0NhcmdhbmRvLi4uJyxcbiAgICAgICAgfSBhcyBCYWJ5bG9uRXh0ZXJuYWxTY3JpcHRJO1xuICAgIH1cblxuICAgIG1hcEJsb2dMaXN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQmxvZ0xpc3RJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IHBvc3RzID0gcHJvcHM/LmJsb2c/LnBvc3RzPy5tYXAoKHBvc3Q6IGFueSkgPT4gKHtcbiAgICAgICAgICAgIGlkOiBwb3N0Py5pZCxcbiAgICAgICAgICAgIHRpdGxlOiBwb3N0Py50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcG9zdD8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHBvc3Q/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBwb3N0Py50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHBvc3Q/Lm11bHRpbWVkaWE/LlswXSwgZmFsc2UpLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhwb3N0Py5idXR0b25zKSxcbiAgICAgICAgICAgIHBvc3RVcmw6IFV0aWxzLm1hcEJ1dHRvbnMocG9zdD8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGNhdGVnb3J5OlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwb3N0Py5jYXRlZ29yeSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwb3N0LmNhdGVnb3J5XG4gICAgICAgICAgICAgICAgICAgIDogKHBvc3Q/LmNhdGVnb3J5Py5uYW1lX2lkZW50aWZpZXIgPz9cbiAgICAgICAgICAgICAgICAgICAgICBwb3N0Py5jYXRlZ29yeT8ubmFtZUlkZW50aWZpZXIgPz9cbiAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQpLFxuICAgICAgICAgICAgZGF0ZTogcG9zdD8uZGF0ZSA/IG5ldyBEYXRlKHBvc3QuZGF0ZSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBhY3RpdmU6IHBvc3Q/LmFjdGl2ZSxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHBvc3RzID0gcG9zdHMuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChhLmRhdGUgJiYgYi5kYXRlKSByZXR1cm4gYi5kYXRlIC0gYS5kYXRlOyAvLyBhbWJvcyBjb24gZmVjaGFcbiAgICAgICAgICAgIGlmIChhLmRhdGUgJiYgIWIuZGF0ZSkgcmV0dXJuIC0xOyAvLyBhIHRpZW5lIGZlY2hhLCBiIG5vXG4gICAgICAgICAgICBpZiAoIWEuZGF0ZSAmJiBiLmRhdGUpIHJldHVybiAxOyAvLyBiIHRpZW5lIGZlY2hhLCBhIG5vXG4gICAgICAgICAgICByZXR1cm4gMDsgLy8gbmluZ3VubyB0aWVuZSBmZWNoYVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBPYnRlbmVyIGxvcyA0IHBvc3RzIG3DoXMgcmVjaWVudGVzXG4gICAgICAgIHBvc3RzID1cbiAgICAgICAgICAgIHBvc3RzPy5maWx0ZXIoKHBvc3Q6IHsgYWN0aXZlOiBib29sZWFuIH0pID0+IHBvc3QuYWN0aXZlKSA/P1xuICAgICAgICAgICAgcG9zdHMgPz9cbiAgICAgICAgICAgIFtdO1xuXG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZVRvQXJyYXkgPSAodmFsdWU6IGFueSk6IGFueVtdID0+IHtcbiAgICAgICAgICAgIGlmICghdmFsdWUpIHJldHVybiBbXTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHJldHVybiBPYmplY3QudmFsdWVzKHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBjYXRlZ29yaWVzQXJyYXkgPSBub3JtYWxpemVUb0FycmF5KHByb3BzPy5wb3N0Q2F0ZWdvcmllcyk7XG4gICAgICAgIGNvbnN0IGxhdGVzdFBvc3RzID0gcG9zdHM/LnNsaWNlKDAsIDQpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8udGFnLFxuICAgICAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VhcmNoUGxhY2VIb2xkZXI6IHByb3BzPy50ZXh0cz8uc2VhcmNoUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICBub3Rmb3VuZFRleHQ6IHByb3BzPy50ZXh0cz8uc2VhcmNoTm90Rm91bmQsXG4gICAgICAgICAgICBwb3N0czogcG9zdHMsXG4gICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXNcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LmNvbnRhaW4sXG4gICAgICAgICAgICBjYXRlZ29yaWVzOiBjYXRlZ29yaWVzQXJyYXkubWFwKChjYXRlZ29yeTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGlkOiBjYXRlZ29yeT8uaWQsXG4gICAgICAgICAgICAgICAgdGl0bGU6IGNhdGVnb3J5Py5uYW1lLFxuICAgICAgICAgICAgICAgIHBvc3RzOiBjYXRlZ29yeT8udG90YWxQb3N0cyA/PyBjYXRlZ29yeT8udG90YWxfcG9zdHMgPz8gMCxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXNcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LmNvbnRhaW4sXG4gICAgICAgICAgICBsYXRlc3RQb3N0czogbGF0ZXN0UG9zdHMsXG4gICAgICAgICAgICBhbnRlcmlvcjogcHJvcHM/LnRleHRzPy5hbnRlcmlvcixcbiAgICAgICAgICAgIHNpZ3VpZW50ZTogcHJvcHM/LnRleHRzPy5zaWd1aWVudGUsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbWFwQmxvZ0RldGFpbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkJsb2dEZXRhaWxzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQb3N0SWQgPSBwcm9wcz8ucG9zdD8uaWQ7XG4gICAgICAgIGNvbnN0IHBvc3RzID0gcHJvcHM/LnJlbGF0ZWRQb3N0cz8ubWFwKChwb3N0OiBhbnkpID0+ICh7XG4gICAgICAgICAgICBpZDogcG9zdD8uaWQsXG4gICAgICAgICAgICB0aXRsZTogcG9zdD8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHBvc3Q/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwb3N0Py50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHBvc3Q/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHBvc3Q/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgcG9zdFVybDogVXRpbHMubWFwQnV0dG9ucyhwb3N0Py5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgY2F0ZWdvcnk6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHBvc3Q/LmNhdGVnb3J5ID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHBvc3QuY2F0ZWdvcnlcbiAgICAgICAgICAgICAgICAgICAgOiAocG9zdD8uY2F0ZWdvcnk/Lm5hbWVfaWRlbnRpZmllciA/P1xuICAgICAgICAgICAgICAgICAgICAgIHBvc3Q/LmNhdGVnb3J5Py5uYW1lSWRlbnRpZmllciA/P1xuICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCksXG4gICAgICAgICAgICBkYXRlOiBwb3N0Py5kYXRlID8gbmV3IERhdGUocG9zdC5kYXRlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSAocG9zdHMgfHwgW10pLmZpbHRlcihcbiAgICAgICAgICAgIChwOiBhbnkpID0+IHA/LmlkICE9PSBjdXJyZW50UG9zdElkXG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IHJlbGF0ZWRQb3N0c0NvbnN0ID1cbiAgICAgICAgICAgIGNhbmRpZGF0ZXNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChwOiBhbnkpID0+IHA/LmRhdGUpXG4gICAgICAgICAgICAgICAgLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiAoYi5kYXRlIGFzIGFueSkgLSAoYS5kYXRlIGFzIGFueSkpXG4gICAgICAgICAgICAgICAgLnNsaWNlKDAsIDQpIHx8IFtdO1xuICAgICAgICBpZiAocmVsYXRlZFBvc3RzQ29uc3QubGVuZ3RoIDwgNCkge1xuICAgICAgICAgICAgY29uc3Qgd2l0aG91dERhdGUgPSBjYW5kaWRhdGVzLmZpbHRlcigocDogYW55KSA9PiAhcD8uZGF0ZSk7XG4gICAgICAgICAgICByZWxhdGVkUG9zdHNDb25zdCA9IHJlbGF0ZWRQb3N0c0NvbnN0LmNvbmNhdChcbiAgICAgICAgICAgICAgICB3aXRob3V0RGF0ZS5zbGljZSgwLCA0IC0gcmVsYXRlZFBvc3RzQ29uc3QubGVuZ3RoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnBvc3Q/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8ucG9zdD8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy5wb3N0Py50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBhZGRpdGlvbmFsMTogcHJvcHM/LnBvc3Q/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBwcm9wcz8ucG9zdD8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgYWRkaXRpb25hbDM6IHByb3BzPy5wb3N0Py50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICBhZGRpdGlvbmFsNDogcHJvcHM/LnBvc3Q/LnRleHRzPy5hZGRpdGlvbmFsNCxcbiAgICAgICAgICAgIGRhdGU6IHByb3BzPy5wb3N0Py5kYXRlID8gbmV3IERhdGUocHJvcHM/LnBvc3Q/LmRhdGUpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IHByb3BzPy5wb3N0Py5jYXRlZ29yeSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LnRhZyxcbiAgICAgICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlYXJjaFBsYWNlSG9sZGVyOiBwcm9wcz8udGV4dHM/LnNlYXJjaFBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb250YWluLFxuICAgICAgICAgICAgY2F0ZWdvcmllczogQXJyYXkuaXNBcnJheShwcm9wcz8ucG9zdENhdGVnb3JpZXMpXG4gICAgICAgICAgICAgICAgPyBwcm9wcz8ucG9zdENhdGVnb3JpZXM/Lm1hcCgoY2F0ZWdvcnk6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICBpZDogY2F0ZWdvcnk/LmlkLFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBjYXRlZ29yeT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICBwb3N0czogY2F0ZWdvcnk/LnRvdGFsUG9zdHMsXG4gICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgcmVsYXRlZFBvc3RzVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXNcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LmNvbnRhaW4sXG4gICAgICAgICAgICByZWxhdGVkUG9zdHM6IHJlbGF0ZWRQb3N0c0NvbnN0LFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgc2hhcmU6IHByb3BzPy50ZXh0cz8uc2hhcmUsXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5wb3N0Py5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbWlkZGxlSW1nOiBwcm9wcz8udGV4dHM/Lm1pZGRsZUltZyA/PyBmYWxzZSxcbiAgICAgICAgICAgIHRvcEltZzogcHJvcHM/LnRleHRzPy50b3BJbWcgPz8gZmFsc2UsXG4gICAgICAgIH0gYXMgQmFieWxvbkJsb2dEZXRhaWxzSTtcbiAgICB9XG5cbiAgICBtYXBNb2RhbE11bHRpcGxlTW90b3JzKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbk1vZGFsTXVsdGlwbGVNb3RvcnNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/LmxpbmtzXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LmxpbmtzPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gYnRuPy5saW5rVmFsdWUgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LmJ1dHRvbnM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4/LmxpbmtWYWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbk1vZGFsTXVsdGlwbGVNb3RvcnNJO1xuICAgIH1cbiAgICBtYXBPZmZlckJhbm5lcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbk9mZmVyUG9wdXBJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IG9mZmVyRGF0YTtcbiAgICAgICAgaWYgKHByb3BzPy5vZmZlcnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG9mZmVyID0gcHJvcHM/Lm9mZmVycz8uWzBdO1xuICAgICAgICAgICAgb2ZmZXJEYXRhID0ge1xuICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBvZmZlcj8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogb2ZmZXI/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG9mZmVyPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDM6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWw0OiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWw0LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKG9mZmVyPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXI/Lm11bHRpbWVkaWE/Lmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gKG9mZmVyPy5tdWx0aW1lZGlhPy5maW5kKChpbWc6IGFueSkgPT4gaW1nLmNvdmVyKSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZmZXI/Lm11bHRpbWVkaWE/LlswXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogKG9mZmVyPy5tdWx0aW1lZGlhPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5kZWZhdWx0aW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsQnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gYnRuPy5saW5rVmFsdWUgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9IGFzIEJhYnlsb25PZmZlclBvcHVwSTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2ZmZXJEYXRhID8/IG9mZmVyRGF0YTtcbiAgICB9XG5cbiAgICBtYXBNb2RhbFBvcHVwKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uTW9kYWxQb3B1cEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0SG9sZGVyLFxuICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoKG9wdGlvbjogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiBvcHRpb24/LnRpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBvcHRpb24/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBvcHRpb24/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb24/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShvcHRpb24sIGZhbHNlKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8ubW9kYWxpbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25Nb2RhbFBvcHVwSTtcbiAgICB9XG5cbiAgICBtYXBQcmVzc0xpc3QocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25QcmVzc0xpc3RJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyk/LlswXSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICB9IGFzIEJhYnlsb25QcmVzc0xpc3RJO1xuICAgIH1cblxuICAgIG1hcEFjdGlvbkJhbm5lcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkFjdGlvbkJhbm5lckkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5hY3Rpb25iYW5uZXJpbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1hZ2UyOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYWN0aW9uYmFubmVyaW1hZ2UyPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICB0YWJsZTogcHJvcHM/LnRleHRzPy50YWJsZSxcbiAgICAgICAgICAgIHNhbGExOiBwcm9wcz8udGV4dHM/LnNhbGExLFxuICAgICAgICAgICAgc2FsYTI6IHByb3BzPy50ZXh0cz8uc2FsYTIsXG4gICAgICAgIH0gYXMgQmFieWxvbkFjdGlvbkJhbm5lckk7XG4gICAgfVxuICAgIG1hcEluZm9aaWdaYWdDb3VudGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkluZm9aaWdaYWdDb3VudGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBpbWFnZXM6IChzdHJpbmcgfCBCYWJ5bG9uSW1hZ2VJKVtdIHwgdW5kZWZpbmVkID0gW107XG4gICAgICAgIGxldCB0ZXh0cywgdGFncztcbiAgICAgICAgY29uc3QgZGF0ZVN0YXJ0ID0gcHJvcHM/LnRleHRzPy5kYXRlc3RhcnQ7XG4gICAgICAgIGNvbnN0IGRhdGVGaW5pc2ggPSBwcm9wcz8udGV4dHM/LmRhdGVmaW5pc2g7XG4gICAgICAgIGlmIChwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMpIHtcbiAgICAgICAgICAgIGltYWdlcyA9IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGV4dHMgPSB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICAgICAodHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgIGNvbnRlbnR0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50dGl0bGU/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50dGl0bGUsXG4gICAgICAgICAgICAgICAgY29udGVudHN1YnRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnRzdWJ0aXRsZT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnRzdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICBjb250ZW50ZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudGRlc2NyaXB0aW9uPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudGRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8ubG9nbz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgaWNvbnM6IHByb3BzPy5WZW50YWphcz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtPy50aXRsZSB8fCBpdGVtPy50ZXh0XG4gICAgICAgICAgICAgICAgKT8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgIGljb25UaXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pY29udGl0bGU/LmNvbnRhaW4gPz8gcHJvcHM/LnRleHRzPy5pY29udGl0bGUsXG4gICAgICAgICAgICAgICAgZGF5c1RleHQ6IHByb3BzPy50ZXh0cz8uZGF5c3RleHQsXG4gICAgICAgICAgICAgICAgaG91cnNUZXh0OiBwcm9wcz8udGV4dHM/LmhvdXJzdGV4dCxcbiAgICAgICAgICAgICAgICBtaW51dGVzVGV4dDogcHJvcHM/LnRleHRzPy5taW51dGVzdGV4dCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0YWdzID0ge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjb250ZW50dGl0bGU6IHByb3BzPy50ZXh0cz8uY29udGVudHRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY29udGVudHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRlbnRzdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5jb250ZW50ZGVzY3JpcHRpb24/LnRhZyxcbiAgICAgICAgICAgICAgICBpY29uVGl0bGU6IHByb3BzPy50ZXh0cz8uaWNvbnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zLmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGV4dHMsXG4gICAgICAgICAgICBpbWFnZXMsXG4gICAgICAgICAgICB0YWdzLFxuICAgICAgICAgICAgZGF0ZVN0YXJ0LFxuICAgICAgICAgICAgZGF0ZUZpbmlzaCxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb1ppZ1phZ0NvdW50ZXJJO1xuICAgIH1cbiAgICBtYXBHckMySW1nKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uR3JDMkltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICh0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5ob3RlbHM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgIGltZzoge1xuICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgICAgIGFsdDogaXRlbT8ubXVsdGltZWRpYT8uWzBdPy5hbHQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uR3JDMkltZ0k7XG4gICAgfVxuICAgIG1hcExpc0M0VHh0SWNvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uTGlzQzRUeHRJY29JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHByb3BzO1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbWFnZVJlc3BvbnNlIHtcbiAgICBwYXRoOiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICB0aHVtYm5haWxzOiB7XG4gICAgICAgIDM3NTogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDU0MDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDc2ODogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDgwMDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDEwMjQ6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgICAgICAxMjgwOiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICAgICAgMTM2NjogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgfTtcbiAgICBjb3ZlcjogbnVtYmVyO1xuICAgIHRhZ3M/OiBhbnlbXTtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBwcmV0aXRsZT86IHN0cmluZztcbiAgICBzdWJ0aXRsZT86IHN0cmluZztcbiAgICBuZFRpdGxlPzogc3RyaW5nO1xuICAgIG5kU3VidGl0bGU/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgbGlua3M/OiBhbnlbXTtcbiAgICBidXR0b25zPzogYW55W107XG4gICAgYWx0Pzogc3RyaW5nO1xuICAgIGFjdGl2ZT86IGJvb2xlYW47XG4gICAgb3JkZXI/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VSZXNwb25zZVBhdGgge1xuICAgIG9yaWdpbmFsOiBzdHJpbmc7XG4gICAgd2VicDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudHNBZGRvbnMge1xuICAgIGNvbnRhY3RPZmZpY2U/OiBhbnk7XG4gICAgbWVudVNvY2lhbE1lZGlhPzogeyBbazogc3RyaW5nXTogc3RyaW5nIH1bXTtcbiAgICBjb25zdWx0VHlwZT86IENvbnN1bHRUeXBlSTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJPcHRpb24ge1xuICAgIGlkPzogbnVtYmVyO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgY2hpbGRyZW4/OiBGaWx0ZXJPcHRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50VmlldyB7XG4gICAgbmFtZTogVmlld3NUeXBlO1xuICAgIGRlZmF1bHQ6IGJvb2xlYW47XG59XG4iXX0=
3996
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvc2VydmljZXMvbWFwcGVyL21hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDSCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixXQUFXLEVBRVgsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWtHNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQTJCbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0gsMkJBQTJCLEVBQzNCLHlCQUF5QixHQUU1QixNQUFNLHdCQUF3QixDQUFDOztBQUtoQyxNQUFNLE9BQU8sYUFBYTtJQUgxQjtRQUlxQixZQUFPLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDNUMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN6QyxpQkFBWSxHQUFHLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBTXBFLGtCQUFhLEdBQUcsTUFBTSxDQUFxQyxTQUFTLENBQUMsQ0FBQztRQUV0RSxXQUFNLEdBQW1CLFFBQVEsQ0FDN0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENB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LEVBQUUsTUFBTSxDQUFDO1lBQ3hDLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7WUFDeEMsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQztZQUM1QyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDO1lBQ3BDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUM7WUFDcEQsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQztZQUM1QyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBSSxJQUFJLEtBQUssRUFBRSxLQUFLLENBQUM7WUFDcEQsV0FBVyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQztZQUNsRCxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDO1lBQ3BELFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUM7WUFDcEQsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQztZQUNwRCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQztZQUM1RCxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDO1lBQ3BELFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7WUFDMUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztZQUN0QyxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDO1lBQzlDLGFBQWEsRUFBRSxJQUFJ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ZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBjb21wdXRlZCxcbiAgICBpbmplY3QsXG4gICAgSW5qZWN0YWJsZSxcbiAgICBQTEFURk9STV9JRCxcbiAgICBTaWduYWwsXG4gICAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIEJhYnlsb240MDRJLFxuICAgIEJhYnlsb25BY3Rpb25CYW5uZXJJLFxuICAgIEJhYnlsb25BZGRyZXNzSXRlbSxcbiAgICBCYWJ5bG9uQWR2YW50YWdlc0ksXG4gICAgQmFieWxvbkJhbm5lckdhbGxlcnlJLFxuICAgIEJhYnlsb25CYW5uZXJJbmZvSSxcbiAgICBCYWJ5bG9uQmFubmVyTmV3c2xldHRlckksXG4gICAgQmFieWxvbkJsb2dEZXRhaWxzSSxcbiAgICBCYWJ5bG9uQmxvZ0xpc3RJLFxuICAgIEJhYnlsb25CcmVhZGNydW1iSSxcbiAgICBCYWJ5bG9uQ29taW5nU29vbkksXG4gICAgQmFieWxvbkNvbnRhY3RBZGRyZXNzSSxcbiAgICBCYWJ5bG9uQ29udGFjdEZvcm1JLFxuICAgIEJhYnlsb25Db250YWN0SG93SSxcbiAgICBCYWJ5bG9uQ29udGFjdE1hcGFJLFxuICAgIEJhYnlsb25Db250YWN0TWFwSXRlbSxcbiAgICBCYWJ5bG9uRW5naW5lSSxcbiAgICBCYWJ5bG9uRW5naW5lTW9kYWxJLFxuICAgIEJhYnlsb25FcXVpcG1lbnRJdGVtLFxuICAgIEJhYnlsb25FeHRlcm5hbFNjcmlwdEksXG4gICAgQmFieWxvbkZhcUksXG4gICAgQmFieWxvbkZlYXR1cmVzU2xpZGVySSxcbiAgICBCYWJ5bG9uRmVhdHVyZXNTbGlkZXJJdGVtLFxuICAgIEJhYnlsb25Gb290ZXJDb250YWN0SSxcbiAgICBCYWJ5bG9uRm9vdGVyTGlua3NJLFxuICAgIEJhYnlsb25Gb290ZXJMb2dvc0ksXG4gICAgQmFieWxvbkZvb3RlclNvY2lhbEksXG4gICAgQmFieWxvbkdhbGxlcnlGaWx0ZXIsXG4gICAgQmFieWxvbkdhbGxlcnlJLFxuICAgIEJhYnlsb25HYWxsZXJ5SXRlbSxcbiAgICBCYWJ5bG9uR3JDMkltZ0ksXG4gICAgQmFieWxvbkhlYWRlckJvb2tTaG93SSxcbiAgICBCYWJ5bG9uSGVhZGVyQ2xlYXJJLFxuICAgIEJhYnlsb25IZWFkZXJNZW51Q2VudGVySSxcbiAgICBCYWJ5bG9uSGVhZGVyTWVudUxvZ29DZW50ZXJJLFxuICAgIEJhYnlsb25IZWFkZXJNZW51U2hvd0ksXG4gICAgQmFieWxvbkhlYWRJbnRyb0ksXG4gICAgQmFieWxvbkhvdGVsc0xpc3RJLFxuICAgIEJhYnlsb25Ib3RlbHNTbGlkZXJJLFxuICAgIEJhYnlsb25JbmZvMkNvbEltZ0ksXG4gICAgQmFieWxvbkluZm8yaW1nQmlnSSxcbiAgICBCYWJ5bG9uSW5mbzJpbWdJLFxuICAgIEJhYnlsb25JbmZvNGltZ0ksXG4gICAgQmFieWxvbkluZm9CaWdJLFxuICAgIEJhYnlsb25JbmZvR3JpZEksXG4gICAgQmFieWxvbkluZm9HcmlkSXRlbUksXG4gICAgQmFieWxvbkluZm9JbWdJLFxuICAgIEJhYnlsb25JbmZvSW1nU2xpZGVySSxcbiAgICBCYWJ5bG9uSW5mb0ltZ1NsaWRlckl0ZW1JLFxuICAgIEJhYnlsb25JbmZvSW50cm9JLFxuICAgIEJhYnlsb25JbmZvWmlnWmFnQ291bnRlckksXG4gICAgQmFieWxvbkluZm9aaWd6YWdWMkksXG4gICAgQmFieWxvbkluZm9aaWd6YWdWMkl0ZW0sXG4gICAgQmFieWxvbkl0ZW1zR3JpZEksXG4gICAgQmFieWxvbkxhbmd1YWdlTW9kYWxJLFxuICAgIEJhYnlsb25MZWdhbEksXG4gICAgQmFieWxvbkxpc0M0VHh0SWNvSSxcbiAgICBCYWJ5bG9uTW9kYWxNdWx0aXBsZU1vdG9yc0ksXG4gICAgQmFieWxvbk5ld3NsZXR0ZXJJLFxuICAgIEJhYnlsb25PZmZlckRldGFpbEksXG4gICAgQmFieWxvbk9mZmVySSxcbiAgICBCYWJ5bG9uT2ZmZXJQb3B1cEksXG4gICAgQmFieWxvbk9mZmVyUG9wdXBWMkksXG4gICAgQmFieWxvbk9mZmVyU2xpZGVySSxcbiAgICBCYWJ5bG9uT2ZmZXJzTGlzdEksXG4gICAgQmFieWxvbk9mZmVyc0xpc3RJdGVtLFxuICAgIEJhYnlsb25QcmVzc0xpc3RJLFxuICAgIEJhYnlsb25Sb29tSW5mb0ksXG4gICAgQmFieWxvblJvb21zQ29sc0ksXG4gICAgQmFieWxvblJvb21zR3JpZEksXG4gICAgQmFieWxvblJvb21zTGlzdEVxdWlwbWVudCxcbiAgICBCYWJ5bG9uUm9vbXNMaXN0SSxcbiAgICBCYWJ5bG9uUm9vbXNMaXN0SXRlbSxcbiAgICBCYWJ5bG9uUm9vbXNTbGlkZXJJLFxuICAgIEJhYnlsb25TZXJ2aWNlc1NsaWRlckksXG4gICAgQmFieWxvblNsaWRlcjJDb2xJdGVtSSxcbiAgICBCYWJ5bG9uU2xpZGVyMml0ZW1zSSxcbiAgICBCYWJ5bG9uU2xpZGVyM0l0ZW1zSSxcbiAgICBCYWJ5bG9uU2xpZGVyNGNvbExhYmVscyxcbiAgICBCYWJ5bG9uU2xpZGVySXRlbSxcbiAgICBCYWJ5bG9uU3RhdGljRm9vdGVySSxcbiAgICBCYWJ5bG9uU3VibWVudUksXG4gICAgQmFieWxvblRoYW5rc0ksXG4gICAgQmFieWxvblRvcFNsaWRlckksXG4gICAgQmFieWxvblRvcFNsaWRlckl0ZW0sXG4gICAgQmFieWxvblRvcFNsaWRlclRodW1ic0ksXG4gICAgQmFieWxvblRvcFNsaWRlclYySSxcbiAgICBCYWJ5bG9uVG9wU2xpZGVyVmlkZW9JLFxuICAgIEJhYnlsb25XZWJtYXBJLFxuICAgIERyb3Bkb3duT3B0aW9uLFxufSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvcmUnO1xuaW1wb3J0IHsgQmFieWxvbkdsb2JhbE1vZGFsSSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY29yZS9iYWJ5bG9uLWdsb2JhbC1tb2RhbCc7XG5pbXBvcnQgeyBCYWJ5bG9uSXRlbUdyaWRJIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb3JlL2JhYnlsb24tbGlzdC1ncmlkL2JhYnlsb24tbGlzdC1ncmlkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYWJ5bG9uTGlzdEdyaWRJIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb3JlL2JhYnlsb24tbGlzdC1ncmlkL2JhYnlsb24tbGlzdC1ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWJ5bG9uTW9kYWxQb3B1cEkgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvcmUvYmFieWxvbi1tb2RhbC1wb3B1cCc7XG5pbXBvcnQgeyBCYWJ5bG9uU3RhdGljRm9vdGVyVjJJIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb3JlL2JhYnlsb24tc3RhdGljLWZvb3Rlci12Mi9iYWJ5bG9uLXN0YXRpYy1mb290ZXItdjIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJvb21TZXJ2aWNlVHlwZSB9IGZyb20gJy4uLy4uL0VudW0vc2VydmljZXMuZW51bSc7XG5pbXBvcnQgeyBWaWV3c1R5cGUgfSBmcm9tICcuLi8uLi9FbnVtL3ZpZXdzLmVudW0nO1xuaW1wb3J0IHtcbiAgICBCYWJ5bG9uQnV0dG9uSSxcbiAgICBCYWJ5bG9uQ29udGFjdEluZm9JLFxuICAgIEJhYnlsb25Ecm9wZG93bkksXG4gICAgQmFieWxvbkZsb2F0aW5nQnV0dG9uc0ksXG4gICAgQmFieWxvbkdsb2JhbEljb25JLFxuICAgIEJhYnlsb25JbWFnZUksXG4gICAgQmFieWxvbklucHV0SSxcbiAgICBCYWJ5bG9uTWVudUJ1dHRvbkksXG4gICAgQmFieWxvbk1lbnVJbmZvSSxcbiAgICBCYWJ5bG9uT2ZmZXJJdGVtSSxcbiAgICBCYWJ5bG9uUm9vbURldGFpbEksXG4gICAgQmFieWxvblRleHRJbmZvSSxcbiAgICBCb2R5Q29tcG9uZW50LFxuICAgIENPTVBPTkVOVFNfRVhUUkEsXG4gICAgQ29uc3VsdFR5cGVJLFxufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEJhYnlsb25BZHZhbnRhZ2VJdGVtSSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi1hZHZhbnRhZ2VzLWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25EZXN0aW5hdGlvbkkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24tZGVzdGluYXRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25FdmVudEl0ZW1JIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWV2ZW50LWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25HbG9iYWxFeHBlcmllbmNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWdsb2JhbC1leHBlcmllbmNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWJ5bG9uR2xvYmFsIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWdsb2JhbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFieWxvbkdsb2JhbHNGYXFHcm91cCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi1nbG9iYWxzLWZhcXMtZ3JvdXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25HbG9hYmxzR2FsbGVyeUZpbHRlciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi1nbG9iYWxzLWdhbGxlcnktZmlsdGVycyc7XG5pbXBvcnQgeyBCYWJ5bG9uSG90ZWxHbG9iYWxJdGVtIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWhvdGVsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWJ5bG9uSXRlbUkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24taXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgY2xlYW5EZWVwIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xlYW4tcHJvcHMnO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi91dGlscy91dGlscyc7XG5pbXBvcnQgeyBTY3JlZW5TaXplclNlcnZpY2UgfSBmcm9tICcuLi9zY3JlZW4tc2l6ZXInO1xuaW1wb3J0IHtcbiAgICBCQUJZTE9OX01BUFBFUl9DT05GSUdfVE9LRU4sXG4gICAgU0lURV9DT05GSUdfU0VSVklDRV9UT0tFTixcbiAgICB0eXBlIEJhYnlsb25JbWFnZVRodW1ibmFpbFNpemUsXG59IGZyb20gJy4vbWFwcGVyLnNlcnZpY2UudG9rZW4nO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBNYXBwZXJTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNpdGVTdmMgPSBpbmplY3QoU0lURV9DT05GSUdfU0VSVklDRV9UT0tFTik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzY3JlZW5TaXplciA9IGluamVjdChTY3JlZW5TaXplclNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbWFwcGVyQ29uZmlnID0gaW5qZWN0KEJBQllMT05fTUFQUEVSX0NPTkZJR19UT0tFTik7XG5cbiAgICBnZXQgaXNNaW5GdWxsVGFibGV0SW5zdGFudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NyZWVuU2l6ZXIubWluRnVsbFRhYmxldEluc3RhbnQoKTtcbiAgICB9XG5cbiAgICBoZWFkZXJCdXR0b25zID0gc2lnbmFsPFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgICBzaXRlSWQ6IFNpZ25hbDxudW1iZXI+ID0gY29tcHV0ZWQoXG4gICAgICAgICgpID0+IHRoaXMuc2l0ZVN2Yy53ZWJDb25maWdJbnN0YW50Py5zaXRlSURcbiAgICApO1xuXG4gICAgZmxvYXRpbmdCdXR0b25zPzogQmFieWxvbkZsb2F0aW5nQnV0dG9uc0k7XG5cbiAgICBwcml2YXRlIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcm9vbXNHcmlkTW9iaWxlVGh1bWJuYWlsU2l6ZTogQmFieWxvbkltYWdlVGh1bWJuYWlsU2l6ZSA9XG4gICAgICAgIHRoaXMubWFwcGVyQ29uZmlnLnJvb21zR3JpZE1vYmlsZVRodW1ibmFpbFNpemUgPz8gMzc1O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcm9vbXNHcmlkU21hbGxUYWJsZXRUaHVtYm5haWxTaXplOiBCYWJ5bG9uSW1hZ2VUaHVtYm5haWxTaXplID1cbiAgICAgICAgdGhpcy5tYXBwZXJDb25maWcucm9vbXNHcmlkU21hbGxUYWJsZXRUaHVtYm5haWxTaXplID8/IDU0MDtcblxuICAgIGdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgaW1hZ2U6IEltYWdlUmVzcG9uc2UgfCB1bmRlZmluZWQsXG4gICAgICAgIGlzRmlndXJlID0gdHJ1ZSxcbiAgICAgICAgbW9iaWxlVGh1bWJuYWlsU2l6ZTogQmFieWxvbkltYWdlVGh1bWJuYWlsU2l6ZSA9IDM3NSxcbiAgICAgICAgc21hbGxUYWJsZXRUaHVtYm5haWxTaXplOiBCYWJ5bG9uSW1hZ2VUaHVtYm5haWxTaXplID0gNTQwXG4gICAgKTogc3RyaW5nIHwgQmFieWxvbkltYWdlSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBzZWxlY3RlZEltYWdlO1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2NyZWVuU2l6ZXIubW9iaWxlKCkpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEltYWdlID1cbiAgICAgICAgICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/Llttb2JpbGVUaHVtYm5haWxTaXplXT8ud2VicCA/P1xuICAgICAgICAgICAgICAgICAgICBpbWFnZT8udGh1bWJuYWlscz8uWzM3NV0/LndlYnA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2NyZWVuU2l6ZXIuaXNTbWFsbFRhYmxldEluc3RhbnQoKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPVxuICAgICAgICAgICAgICAgICAgICBpbWFnZT8udGh1bWJuYWlscz8uW3NtYWxsVGFibGV0VGh1bWJuYWlsU2l6ZV0/LndlYnAgPz9cbiAgICAgICAgICAgICAgICAgICAgaW1hZ2U/LnRodW1ibmFpbHM/Lls1NDBdPy53ZWJwO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzTWVkaXVtVGFibGV0SW5zdGFudCgpKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bNzY4XT8ud2VicDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5pc0Z1bGxUYWJsZXRJbnN0YW50KCkpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/LlsxMDI0XT8ud2VicDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5pc1NtYWxsRGVza3RvcEluc3RhbnQoKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzEyODBdPy53ZWJwO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLm1pbk1lZGl1bURlc2t0b3AoKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8ucGF0aD8ud2VicDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bMTM2Nl0/LndlYnA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkSW1hZ2VcbiAgICAgICAgICAgID8gaXNGaWd1cmVcbiAgICAgICAgICAgICAgICA/IGAke3RoaXMuc2l0ZVN2Yy5jZG5JbWFnZXNJbnN0YW50fSR7c2VsZWN0ZWRJbWFnZX1gXG4gICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgc3JjOiBgJHt0aGlzLnNpdGVTdmMuY2RuSW1hZ2VzSW5zdGFudH0ke3NlbGVjdGVkSW1hZ2V9YCxcbiAgICAgICAgICAgICAgICAgICAgICBhbHQ6IGltYWdlPy5hbHQsXG4gICAgICAgICAgICAgICAgICAgICAgbmRUaXRsZTogaW1hZ2U/Lm5kVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltYWdlPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaW1hZ2U/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpbWFnZT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltYWdlPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGltYWdlPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpbWFnZT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBpbWFnZT8ub3JkZXIsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBnZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgaW1hZ2VzOiBJbWFnZVJlc3BvbnNlW10gfCB1bmRlZmluZWQsXG4gICAgICAgIGlzRmlndXJlID0gdHJ1ZVxuICAgICk6IChzdHJpbmcgfCBCYWJ5bG9uSW1hZ2VJKVtdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGltYWdlcz8ubWFwKChpbWcpID0+IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZywgaXNGaWd1cmUpISk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUFnZXNPcHRpb25zKFxuICAgICAgICBtYXhMZW5ndGg6IG51bWJlcixcbiAgICAgICAgbWluTGVuZ3RoID0gMFxuICAgICk6IERyb3Bkb3duT3B0aW9uW10ge1xuICAgICAgICBjb25zdCBvcHRpb25zOiBEcm9wZG93bk9wdGlvbltdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSBtaW5MZW5ndGg7IGkgPD0gbWF4TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIG9wdGlvbnMucHVzaCh7IGNvZGU6IGksIG5hbWU6IGkgPCAxMCA/IGAwJHtpfWAgOiBgJHtpfWAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuXG4gICAgbWFwR2xvYmFsc0JvZHlFeHRyYShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogYW55IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgbmFtZV9JZGVudGlmaWVyID1cbiAgICAgICAgICAgIHR5cGVvZiBwcm9wcyA9PSAnc3RyaW5nJyA/IHByb3BzIDogcHJvcHM/Lm5hbWVJZGVudGlmaWVyO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmFtZUlkZW50aWZpZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKG5hbWVfSWRlbnRpZmllciksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbWFwQm9keUV4dHJhKFxuICAgICAgICBib2R5OiBhbnlbXSB8IHVuZGVmaW5lZFxuICAgICk6IEJvZHlDb21wb25lbnQ8Q09NUE9ORU5UU19FWFRSQT5bXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGJvZHlNYXBwZWQ6IEJvZHlDb21wb25lbnQ8Q09NUE9ORU5UU19FWFRSQT5bXSB8IHVuZGVmaW5lZCA9XG4gICAgICAgICAgICBib2R5Py5tYXAoKGNvbXBvbmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudE1hcHBlZDogQm9keUNvbXBvbmVudDxDT01QT05FTlRTX0VYVFJBPiA9IHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiBjb21wb25lbnQub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiB7fSxcbiAgICAgICAgICAgICAgICB9IGFzIEJvZHlDb21wb25lbnQ8Q09NUE9ORU5UU19FWFRSQT47XG4gICAgICAgICAgICAgICAgc3dpdGNoIChjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdtZW51JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU3VibWVudShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgQmFieWxvblN1Ym1lbnVJO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPSAnbWVudSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnaG90ZWx0eXBlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR2xvYmFsc0JvZHlFeHRyYShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgQmFieWxvbkdsb2JhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID0gJ2hvdGVsdHlwZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnaG90ZWxjYXRlZ29yeSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdsb2JhbHNCb2R5RXh0cmEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIEJhYnlsb25HbG9iYWw7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9ICdob3RlbGNhdGVnb3J5JztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICd0aWNrZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHbG9iYWxzQm9keUV4dHJhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBCYWJ5bG9uR2xvYmFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPSAndGlja2VyJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRNYXBwZWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGJvZHlNYXBwZWQ7XG4gICAgfVxuXG4gICAgbWFwU3VibWVudShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblN1Ym1lbnVJIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBwcm9wcz8uaXRlbXM/LmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbS5zZWxlY3RlZCk7XG4gICAgICAgIGNvbnN0IHN1Ym1lbnUgPSB7XG4gICAgICAgICAgICBob3RlbDogcHJvcHM/LmhvdGVsLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5pdGVtc1xuICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0uYWN0aXZlKVxuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGluaz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGxpbms/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluaz8ubGlua1R5cGUgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2NvbXBvbmVudCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGluaz8ubGlua1R5cGUgPT09IDRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnYW5jaG9yX3N1Ym1lbnUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2ludGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0eWxlczogcHJvcHM/LnN0eWxlcyxcbiAgICAgICAgICAgIHNlbGVjdGVkOiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHNlbGVjdGVkPy5uYW1lLFxuICAgICAgICAgICAgICAgIHVybDogc2VsZWN0ZWQ/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICBzdHlsZXM6IHByb3BzPy5zdHlsZXMsXG4gICAgICAgICAgICB9IGFzIEJhYnlsb25CdXR0b25JLFxuICAgICAgICB9IGFzIEJhYnlsb25TdWJtZW51STtcblxuICAgICAgICByZXR1cm4gc3VibWVudTtcbiAgICB9XG5cbiAgICBtYXBDb21wb25lbnRzPFQ+KFxuICAgICAgICBib2R5OiBhbnlbXSxcbiAgICAgICAgYWRkb25zPzogQ29tcG9uZW50c0FkZG9uc1xuICAgICk6IEJvZHlDb21wb25lbnQ8VD5bXSB7XG4gICAgICAgIGlmICghYm9keSB8fCAhYm9keS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBbXSBhcyBCb2R5Q29tcG9uZW50PFQ+W107XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VhcmNoSG90ZWxTdHlsZXMgPSAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYm9keT8uZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0ubmFtZSA9PT0gJ3N0eWxlcycpO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBib2R5TWFwcGVkOiBCb2R5Q29tcG9uZW50PFQ+W10gPSBib2R5XG4gICAgICAgICAgICA/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAoY29tcG9uZW50KSA9PiBjb21wb25lbnQgIT09IG51bGwgJiYgY29tcG9uZW50ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgID8ubWFwKChjb21wb25lbnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRNYXBwZWQ6IEJvZHlDb21wb25lbnQ8VD4gPSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogY29tcG9uZW50Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczoge30sXG4gICAgICAgICAgICAgICAgICAgIGFsaWFzOiBjb21wb25lbnQuYWxpYXMsXG4gICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI6IGNvbXBvbmVudC5pZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I6IGNvbXBvbmVudC50ZXh0Y29sb3IsXG4gICAgICAgICAgICAgICAgfSBhcyBCb2R5Q29tcG9uZW50PFQ+O1xuXG4gICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudC5wcm9wcykge1xuICAgICAgICAgICAgICAgICAgICAvL0l0IGlzIG5lY2Vzc2FyeSwgb3RoZXJ3aXNlIGl0IGdpdmVzIGFuIGVycm9yIGFuZCBkb2VzIG5vdCBzaG93IGNvbXBvbmVudHNcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtb2R1bGU0MDQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcDQwNChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8tLS0tIExBWU9VVCBDT01QT05FTlRTIC0tLS0vL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RvcHNsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwVG9wU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndG9wc2xpZGVydmlkZW8nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRvcFNsaWRlclZpZGVvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0b3BzbGlkZXJ2MmxlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RvcHNsaWRlcnYycmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRvcFNsaWRlclYyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPT09ICd0b3BzbGlkZXJ2MnJpZ2h0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbWcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbWdyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2ltZ2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9JbWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9PT0gJ2luZm9pbWdyaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQudGV4dGNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW1nc2xpZGVycmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbWdzbGlkZXJsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvSW1nU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luZm9pbWdzbGlkZXJyaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbnRybyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0ludHJvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbzJpbWdsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvMmltZ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvMmltZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PSAnaW5mbzJpbWdyaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvMmNvbGltZ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvMmNvbGltZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PSAnaW5mbzJjb2xpbWdyaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvMmNvbGltZ2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm8yY29saW1nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPT09ICdpbmZvMmNvbGltZ2xlZnQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbzNpbWcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9JbWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC50ZXh0Y29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm96aWd6YWdsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvemlnemFncmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFppZ3phZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PSAnaW5mb3ppZ3phZ3JpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5pZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2dyaWQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9HcmlkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyMmNvbGxlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjJjb2xyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyQ29sbDIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9PT0gJ3NsaWRlcjJjb2xyaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIzY29sJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXJDb2xsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXI0Y29sJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXJDb2xsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpdGVtc2dyaWQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEl0ZW1zR3JpZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Jvb21zc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBSb29tc1NsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Jvb21zZ3JpZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUm9vbXNHcmlkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmFubmVyZ2FsbGVyeSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQmFubmVyR2FsbGVyeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWRnYWxsZXJ5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHcmlkR2FsbGVyeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jhbm5lcm5ld3NsZXR0ZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBCYW5uZXJOZXdzbGV0dGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcnNzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE9mZmVyU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8tLS0tIExBWU9VVCBDT01QT05FTlRTIEVORC0tLS0vL1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndGhhbmtzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUaGFua3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhY3Rmb3JtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb250YWN0Zm9ybXYyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBDb250YWN0Rm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG9ucz8uY29udGFjdE9mZmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG9ucz8uY29uc3VsdFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhY3Rob3cnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENvbnRhY3RIb3coXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3dlYm1hcCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwV2VibWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb250YWN0bWFwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBDb250YWN0TWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsZWdhbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTGVnYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Jvb21zY29scyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUm9vbXNDb2xzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyb29tZGV0YWlscyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUm9vbURldGFpbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndG9wc2xpZGVydGh1bWJzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUb3BTbGlkZXJUaHVtYnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2ZlYXR1cmVzc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGZWF0dXJlc1NsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmFubmVyaW5mbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQmFubmVySW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncm9vbXNsaXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBSb29tc0xpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbWluZ3Nvb24nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENvbWluZ1Nvb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyZGV0YWlsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlckRldGFpbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb2ZmZXJzbGlzdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJzTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5pc0hvbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2ZhcSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRmFxKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzdGF0aWNmb290ZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFN0YXRpY0Zvb3RlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ2FsbGVyeSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ2FsbGVyeXYyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaXNjMmltZ3ZpZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmFieWxvbmxpc2MyaW1ndmlkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHYWxsZXJ5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICduYXYnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE1lbnUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRvbnM/Lm1lbnVTb2NpYWxNZWRpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGFuZ3VhZ2VzbW9kYWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xhbmd1YWdlc21vZGF2Mic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTGFuZ3VhZ2VNb2RhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyM2l0ZW1zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXIzSXRlbXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaG90ZWxzc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBIb3RlbHNTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hvdGVsc2xpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEhvdGVsc0xpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm80aW1nJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvNEltZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2VydmljZXNzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNlcnZpY2VzU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbG9jYXRpb25hZGRyZXNzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb250YWN0YWRkcmVzcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQ29udGFjdEFkZHJlc3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2FkdmFudGFnZXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEFkdmFudGFnZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9iaWcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9CaWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm96aWd6YWd2MmxlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9aaWdaYWdWMihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5pZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvemlnemFndjJyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb1ppZ1phZ1YyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3RlcmNvbnRhY3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckNvbnRhY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm8yaW1nYmlnJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvMkltZ0JpZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVybGlua3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckxpbmtzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJsb2dvcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRm9vdGVyTG9nb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlclNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyc29jaWFscyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRm9vdGVyU29jaWFscyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyMml0ZW1zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXIyaXRlbXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXRpY2Zvb3RlcnYyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTdGF0aWNGb290ZXJ2MihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdGdyaWQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcExpc3RHcmlkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICduZXdzbGV0dGVybW9kYWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE5ld3NsZXR0ZXJNb2RhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaGVhZGludHJvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBIZWFkSW50cm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JyZWFkY3J1bWJzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCcmVhZGNydW1icyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyYmFubmVydjInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE9mZmVyQmFubmVyVjIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdnbG9iYWxtb2RhbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ2xvYmFsbW9kYWwyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHbG9iYWxNb2RhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21lbnUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VhcmNoSG90ZWxTdHlsZXMoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzWydzdHlsZXMnXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSG90ZWxTdHlsZXMoKVswXT8ucHJvcHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTdWJtZW51KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3BhbG9waWEnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEV4dGVybmFsU2NyaXB0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmxvZ2xpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJsb2dMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmxvZ2RldGFpbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQmxvZ0RldGFpbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyYmFubmVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlckJhbm5lcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21vZGFsbXVsdGlwbGVtb3RvcnMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBNb2RhbE11bHRpcGxlTW90b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtb2RhbHBvcHVwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBNb2RhbFBvcHVwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdwcmVzc2xpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFByZXNzTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYWN0aW9uYmFubmVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBBY3Rpb25CYW5uZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm96aWd6YWdjb3VudGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwSW5mb1ppZ1phZ0NvdW50ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyYzJpbWcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyQzJJbWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaXNjNHR4dGljbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTGlzQzRUeHRJY28oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR2xvYmFscyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG9ucz8uY29udGFjdE9mZmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG9ucz8uY29uc3VsdFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudE1hcHBlZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYm9keU1hcHBlZDtcbiAgICB9XG5cbiAgICBtYXBHbG9iYWxzKFxuICAgICAgICBjb21wb25lbnQ6IGFueSxcbiAgICAgICAgbmRQcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBuZFByb3BzQ29uc3VsdDogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogYW55IHtcbiAgICAgICAgaWYgKCFjb21wb25lbnQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGxldCB7IHByb3BzIH0gPSBjb21wb25lbnQ7XG4gICAgICAgIHByb3BzID0gcHJvcHMgPz8gY29tcG9uZW50O1xuXG4gICAgICAgIGNvbnN0IHZpZXdzID0gKGNvbXBvbmVudD8udmlld3MgYXMgQ29tcG9uZW50Vmlld1tdIHwgdW5kZWZpbmVkKT8uZmlsdGVyKFxuICAgICAgICAgICAgKHYpID0+ICEhdlxuICAgICAgICApO1xuXG4gICAgICAgIGxldCByaWdodFNpZGU6IGJvb2xlYW47XG4gICAgICAgIGxldCBsZWZ0U2lkZTogYm9vbGVhbjtcbiAgICAgICAgbGV0IGN1cnJlbnRWaWV3OiBudW1iZXIgPSAwO1xuICAgICAgICBsZXQgaWNvbnNMaWtlSW1hZ2VzID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHZpZXdzICYmIHZpZXdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZVZpZXcgPSB2aWV3cy5maW5kKCh2KSA9PiB2LmRlZmF1bHQpID8/IHZpZXdzWzBdO1xuXG4gICAgICAgICAgICByaWdodFNpZGUgPSBhY3RpdmVWaWV3Py5uYW1lID09PSBWaWV3c1R5cGUuUklHSFQ7XG4gICAgICAgICAgICBsZWZ0U2lkZSA9IGFjdGl2ZVZpZXc/Lm5hbWUgPT09IFZpZXdzVHlwZS5MRUZUO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKGFjdGl2ZVZpZXc/Lm5hbWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFZpZXdzVHlwZS5WSUVXMTpcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFZpZXcgPSAxO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFZpZXdzVHlwZS5WSUVXMjpcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFZpZXcgPSAyO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFZpZXdzVHlwZS5WSUVXMzpcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFZpZXcgPSAzO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWaWV3ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyDwn5SlIEZhbGxiYWNrIGN1YW5kbyB2aWV3cyBlcyB1bmRlZmluZWQgbyB2YWPDrW9cbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBjb21wb25lbnQ/Lm5hbWU/LnRvTG93ZXJDYXNlKCkgPz8gJyc7XG5cbiAgICAgICAgICAgIHJpZ2h0U2lkZSA9XG4gICAgICAgICAgICAgICAgbmFtZS5pbmNsdWRlcygncmlnaHQnKSB8fCBwcm9wcz8udGV4dHM/LnJpZ2h0ID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICAgICAgbGVmdFNpZGUgPVxuICAgICAgICAgICAgICAgIG5hbWUuaW5jbHVkZXMoJ2xlZnQnKSB8fCBwcm9wcz8udGV4dHM/LmxlZnQgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRGV0ZWN0IGJhY2tncm91bmRJY29uIChpY29ubyBjb21vIGJhY2tncm91bmQtaW1hZ2UgQ1NTKVxuICAgICAgICBpY29uc0xpa2VJbWFnZXMgPSBwcm9wcz8uaWNvbnNsaWtlaW1hZ2VzID8gdHJ1ZSA6IGZhbHNlO1xuXG4gICAgICAgIGxldCBzaG93RmlsdGVyczogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICBpZiAocHJvcHM/LnRleHRzPy5maWx0ZXJzKSBzaG93RmlsdGVycyA9IHRydWU7XG5cbiAgICAgICAgbGV0IGhpZGVTZXJ2aWNlc0ZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICBpZiAocHJvcHM/LnRleHRzPy5oaWRlU2VydmljZXNGaWx0ZXIpIGhpZGVTZXJ2aWNlc0ZpbHRlciA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgZ2V0TGlua3NBcnJheSA9IChsaW5rc09iajogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWxpbmtzT2JqKSByZXR1cm4gW107XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShsaW5rc09iaikpIHJldHVybiBsaW5rc09iajtcblxuICAgICAgICAgICAgLy8gU2kgZXMgdW4gb2JqZXRvLCBleHRyYWUgc3VzIHZhbG9yZXMgeSBmaWx0cmEgbG9zIHF1ZSB0ZW5nYW4gbGlua1ZhbHVlIChwYXJhIGV2aXRhciBjb2dlciBmb290ZXJMaW5rcyBwb3IgYWNjaWRlbnRlKVxuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMobGlua3NPYmopLmZpbHRlcihcbiAgICAgICAgICAgICAgICAodmFsOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgIHZhbCAmJlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgICAgICAgICAoJ2xpbmtWYWx1ZScgaW4gdmFsIHx8ICdsaW5rX3ZhbHVlJyBpbiB2YWwpXG4gICAgICAgICAgICApO1xuICAgICAgICB9O1xuXG4gICAgICAgIGxldCBoYXNCYWNrZ3JvdW5kOiBib29sZWFuID0gZmFsc2U7XG4gICAgICAgIGhhc0JhY2tncm91bmQgPSAhIShwcm9wcz8udGV4dHM/LmJhY2tncm91bmQgfHwgcHJvcHM/LnRleHRzPy5mb25kbyk7XG5cbiAgICAgICAgbGV0IG1heENvbHVtbnM6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgbWF4Q29sdW1ucyA9XG4gICAgICAgICAgICBOdW1iZXIocHJvcHM/LnRleHRzPy5tYXhjb2x1bW5zID8/IHByb3BzPy50ZXh0cz8ubWF4Q29sdW1ucykgfHxcbiAgICAgICAgICAgIHVuZGVmaW5lZDtcblxuICAgICAgICBsZXQgcmVzdWx0OiBhbnk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICAgICAgaWRlbnRpZmllcjogY29tcG9uZW50Py5pZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgIGhhc0JhY2tncm91bmQ6IGhhc0JhY2tncm91bmQsXG4gICAgICAgICAgICAgICAgYWN0aXZlVmlldzogY3VycmVudFZpZXcsXG4gICAgICAgICAgICAgICAgc2hvd0ZpbHRlcnM6IHNob3dGaWx0ZXJzLFxuICAgICAgICAgICAgICAgIGhpZGVTZXJ2aWNlc0ZpbHRlcjogaGlkZVNlcnZpY2VzRmlsdGVyLFxuICAgICAgICAgICAgICAgIG1heENvbHVtbnM6IG1heENvbHVtbnMsXG4gICAgICAgICAgICAgICAgYm9keWV4dHJhOiB0aGlzLm1hcEdsb2JhbHNCb2R5RXh0cmEocHJvcHMpLFxuICAgICAgICAgICAgICAgIHRleHRzOiB0aGlzLm1hcEdsb2JhbFRleHRzKHByb3BzPy50ZXh0cykgYXMgQmFieWxvblRleHRJbmZvSSxcbiAgICAgICAgICAgICAgICB2aWRlbzogcHJvcHMudmlkZW8gPz8gcHJvcHMuVmlkZW8gPz8gcHJvcHMudGV4dHM/LnZpZGVvLFxuICAgICAgICAgICAgICAgIGljb25zTGlrZUltYWdlczogcHJvcHM/Lmljb25zTGlrZUltYWdlcyA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICByaWdodFNpZGU6IHJpZ2h0U2lkZSxcbiAgICAgICAgICAgICAgICBsZWZ0U2lkZTogbGVmdFNpZGUsXG4gICAgICAgICAgICAgICAgaXRlbXM6IHRoaXMubWFwR2xvYmFsSXRlbXMocHJvcHMpLFxuICAgICAgICAgICAgICAgIGxpc3RzOiB0aGlzLm1hcEdsb2JhbHNGYXFzKHByb3BzPy5GYXFzKSxcbiAgICAgICAgICAgICAgICBzZXJ2aWNlczogdGhpcy5tYXBHbG9iYWxTZXJ2aWNlcyhcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnNlcnZpY2VzU2VydmljZSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmVxdWlwbWVudCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnNlcnZpY2VzU2VydmljZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZXZlbnRzOiB0aGlzLm1hcEV2ZW50c0dsb2JhbChwcm9wcz8uZXZlbnRzID8/IHByb3BzPy5ldmVudCksXG4gICAgICAgICAgICAgICAgb2ZmZXJzOiB0aGlzLm1hcE9mZmVyc0dsb2JhbChwcm9wcz8ub2ZmZXJzKSxcbiAgICAgICAgICAgICAgICBvZmZlcjogdGhpcy5tYXBPZmZlckRldGFpbChwcm9wcyksXG4gICAgICAgICAgICAgICAgbXVsdGltZWRpYTogdGhpcy5tYXBJbWFnZXMocHJvcHM/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHRoaXMubWFwQWRkcmVzcyhwcm9wcz8uYWRkcmVzcyksXG4gICAgICAgICAgICAgICAgYWRkcmVzc0hvdGVsczogdGhpcy5tYXBHbG9iYWxBZGRyZXNzSG90ZWxzKHByb3BzKSxcbiAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgZ2V0TGlua3NBcnJheShwcm9wcz8ubGlua3MpLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0TGlua3NBcnJheShwcm9wcz8ubGlua3MpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy5saW5rcz8uTGlua3M/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy5saW5rcz8uTGlua3M/LlswXVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy5saW5rcz8uY29udGFjdD8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjb250YWN0bGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5jb250YWN0Py5bMF0pLFxuICAgICAgICAgICAgICAgIGZvb3RlckxpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uZm9vdGVyTGlua3M/LlswXSksXG4gICAgICAgICAgICAgICAgcGFnZXM6IChcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnBhZ2VzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGxpbms/LnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICAgICAgICAgKSBhcyBCYWJ5bG9uQnV0dG9uSVtdXG4gICAgICAgICAgICAgICAgKT8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAobGluaykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsudXJsPy5zcGxpdD8uKCcvJylbMV0gPT09XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmxvY2F0ZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuLmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGFkdmFudGFnZXM6IHRoaXMubWFwQWR2YW50YWdlc0dsb2JhbChcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LlZlbnRhamFzID8/XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8uQWR2YW50YWdlcyA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lmxpc3QgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5saXN0cyA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lkxpc3RzID8/XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8uTGlzdFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNlZU1vcmU6IHByb3BzPy50ZXh0cz8uYWR2YW50YWdlc3NlZW1vcmUsXG4gICAgICAgICAgICAgICAgc2VlTGVzczogcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2Vzc2VlbGVzcyxcbiAgICAgICAgICAgICAgICBpbWFnZTogcHJvcHMuYWR2YW50YWdlc2ltYWdlXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5hZHZhbnRhZ2VzaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcm9vbXM6IHRoaXMubWFwUm9vbURldGFpbHMocHJvcHM/LnJvb21zID8/IHByb3BzPy5yb29tKSxcbiAgICAgICAgICAgICAgICBjb250YWN0SW5mbzogdGhpcy5tYXBDb250YWN0SW5mbyhwcm9wcz8udGV4dHMpLFxuICAgICAgICAgICAgICAgIHNvY2lhbE1lZGlhOiBwcm9wcz8uc29jaWFsTWVkaWE/Lm1hcCgoc206IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogc20/Lmljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBzbT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogc20/LnVybCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBob3RlbHM6IHRoaXMubWFwSG90ZWxzR2xvYmFsKHByb3BzPy5ob3RlbHMpLFxuICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uczogdGhpcy5tYXBHbG9iYWxEZXN0aW5hdGlvbnMocHJvcHM/LmRlc3RpbmF0aW9ucyksXG4gICAgICAgICAgICAgICAgZXhwZXJpZW5jZXM6IHRoaXMubWFwR2xvYmFsRXhwZXJpZW5jZXMoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5leHBlcmllbmNlID8/IHByb3BzPy5leHBlcmllbmNlc1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgY29uc3VsdFR5cGVzOiB0aGlzLm1hcEdsb2JhbENvbnN1bHRUeXBlcyhwcm9wcywgbmRQcm9wc0NvbnN1bHQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcnM6IHRoaXMubWFwR2xvYmFsc0ZpbHRlcnMocHJvcHM/LmZpbHRlcnMpLFxuICAgICAgICAgICAgfSBhcyBCYWJ5bG9uR2xvYmFsO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRVJST1IgRkFUQUwgQ1JFQU5ETyBSRVNVTFQgRU4gbWFwR2xvYmFsczonLCBlcnJvcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2xlYW5EZWVwKHJlc3VsdCwge1xuICAgICAgICAgICAgcmVtb3ZlTnVsbDogdHJ1ZSxcbiAgICAgICAgICAgIHJlbW92ZUVtcHR5U3RyaW5nOiB0cnVlLFxuICAgICAgICAgICAgcHJ1bmVFbXB0eTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbWFwR2xvYmFsQWRkcmVzc0hvdGVscyhwcm9wczogYW55KTogQmFieWxvbkFkZHJlc3NJdGVtW10gfCB1bmRlZmluZWQge1xuICAgICAgICAvLyAxLiBJbnRlbnRhbW9zIG9idGVuZXIgbGEgZnVlbnRlIGRlIGRhdG9zIChjb250ZW1wbGFtb3MgYW1ib3Mgbm9tYnJlcyBkZSBwcm9waWVkYWQpXG4gICAgICAgIGNvbnN0IHJhd1NvdXJjZSA9IHByb3BzPy5ob3RlbEFkZHJlc3NlcyA/PyBwcm9wcz8uYWRkcmVzc0hvdGVscztcblxuICAgICAgICBpZiAocmF3U291cmNlKSB7XG4gICAgICAgICAgICAvLyBBcGxhbmFtb3MgZWwgYXJyYXkgc2luIGltcG9ydGFyIGxhIHByb2Z1bmRpZGFkIFtbey4uLn1dXSAtPiBbey4uLn1dXG4gICAgICAgICAgICBjb25zdCBmbGF0QWRkcmVzc2VzID0gQXJyYXkuaXNBcnJheShyYXdTb3VyY2UpXG4gICAgICAgICAgICAgICAgPyByYXdTb3VyY2UuZmxhdChJbmZpbml0eSlcbiAgICAgICAgICAgICAgICA6IFtyYXdTb3VyY2VdO1xuXG4gICAgICAgICAgICAvLyBGaWx0cmFtb3MgcGFyYSBhc2VndXJhciBxdWUgc29sbyBwcm9jZXNhbW9zIG9iamV0b3MgdsOhbGlkb3NcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkQWRkcmVzc2VzID0gZmxhdEFkZHJlc3Nlcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGFkZHJlc3M6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgYWRkcmVzcyAmJlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgYWRkcmVzcyA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgICAgICAgICAgIUFycmF5LmlzQXJyYXkoYWRkcmVzcylcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmICh2YWxpZEFkZHJlc3Nlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkQWRkcmVzc2VzLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGFkZHJlc3M6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGFkZHJlc3MuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYWRkcmVzcy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6IGFkZHJlc3MuYWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeTogYWRkcmVzcy5jYXRlZ29yeU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2l0eTogYWRkcmVzcy5jaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpbmNlOiBhZGRyZXNzLnByb3ZpbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IGFkZHJlc3MuY291bnRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcDogYWRkcmVzcy5jcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBMaW5rOiBhZGRyZXNzLm1hcExpbmssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhZGRyZXNzLmxpbmsgPz8gYWRkcmVzcy51cmwsIC8vIFNvcG9ydGUgcGFyYSBhbWJvcyBub21icmVzIGRlIGxpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaG9uZTogYWRkcmVzcy5waG9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWFpbDogYWRkcmVzcy5lbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsX2FkZHJlc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MuZnVsbEFkZHJlc3MgPz8gYWRkcmVzcy5mdWxsX2FkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Z3M6IGFkZHJlc3Muc2x1Z3MsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQWRkcmVzc0l0ZW1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMi4gQ2FzbyBGYWxsYmFjazogTWFwZW8gZGluw6FtaWNvIGRlc2RlIGxvcyB0ZXh0b3MgKGFkZHJlc3NsaXN0WFgpXG4gICAgICAgIHJldHVybiB0aGlzLm1hcER5bmFtaWNBZGRyZXNzZXNGcm9tVGV4dHMocHJvcHM/LnRleHRzKTtcbiAgICB9XG5cbiAgICAvKiogSGVscGVyIHBhcmEgbGltcGlhciBlbCBjw7NkaWdvIHByaW5jaXBhbCAqL1xuICAgIHByaXZhdGUgbWFwRHluYW1pY0FkZHJlc3Nlc0Zyb21UZXh0cyhcbiAgICAgICAgdGV4dHM6IGFueVxuICAgICk6IEJhYnlsb25BZGRyZXNzSXRlbVtdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCF0ZXh0cykgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCBhZGRyZXNzZXNNYXA6IHsgW2tleTogc3RyaW5nXTogUGFydGlhbDxCYWJ5bG9uQWRkcmVzc0l0ZW0+IH0gPSB7fTtcblxuICAgICAgICBPYmplY3Qua2V5cyh0ZXh0cykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoJ2FkZHJlc3NsaXN0JykgJiYgdGV4dHNba2V5XSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0ga2V5Lm1hdGNoKC9hZGRyZXNzbGlzdChcXGQrKSguKikvKTtcbiAgICAgICAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBtYXRjaFsxXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBtYXRjaFsyXTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWFkZHJlc3Nlc01hcFtpbmRleF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3Nlc01hcFtpbmRleF0gPSB7IGlkOiBpbmRleCB9O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0ZXh0c1trZXldO1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdUaXRsZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzTWFwW2luZGV4XS5uYW1lID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdBZGRyZXNzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzZXNNYXBbaW5kZXhdLmFkZHJlc3MgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzZXNNYXBbaW5kZXhdLmZ1bGxfYWRkcmVzcyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnVGVsZic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzTWFwW2luZGV4XS5waG9uZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnRW1haWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3Nlc01hcFtpbmRleF0uZW1haWwgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LnZhbHVlcyhhZGRyZXNzZXNNYXApIGFzIEJhYnlsb25BZGRyZXNzSXRlbVtdO1xuICAgICAgICByZXR1cm4gcmVzdWx0Lmxlbmd0aCA+IDAgPyByZXN1bHQgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwR2xvYmFsRXhwZXJpZW5jZXMoXG4gICAgICAgIGV4cGVyaWVuY2VzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uR2xvYmFsRXhwZXJpZW5jZVtdIHtcbiAgICAgICAgcmV0dXJuIGV4cGVyaWVuY2VzXG4gICAgICAgICAgICA/LmZpbHRlcigoZXhwZXJpZW5jZTogYW55KSA9PiBleHBlcmllbmNlLmFjdGl2ZSlcbiAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgIChleHBlcmllbmNlOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGV4cGVyaWVuY2UuYWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYTogdGhpcy5tYXBNdWx0aW1lZGlhKGV4cGVyaWVuY2U/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYTI6IHRoaXMubWFwSW1hZ2VzKGV4cGVyaWVuY2U/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZXJpZW5jZT8ubGluayA/PyBleHBlcmllbmNlPy5saW5rc1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoZXhwZXJpZW5jZT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogZXhwZXJpZW5jZT8ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0czogdGhpcy5tYXBHbG9iYWxUZXh0cyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlcmllbmNlPy50ZXh0c1xuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBCYWJ5bG9uVGV4dEluZm9JLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGV4cGVyaWVuY2U/LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZUlkZW50aWZpZXI6IGV4cGVyaWVuY2U/Lm5hbWVJZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBleHBlcmllbmNlPy51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBleHBlcmllbmNlPy50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG90ZWxzOiBleHBlcmllbmNlPy5ob3RlbHM/Lm1hcCgoaG90ZWw6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogaG90ZWw/LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVJZGVudGlmaWVyOiBob3RlbD8ubmFtZUlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Ib3RlbEdsb2JhbEl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgbWFwR2xvYmFsc0ZpbHRlcnMoXG4gICAgICAgIGZpbHRlcnM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25HbG9hYmxzR2FsbGVyeUZpbHRlciB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmaWx0ZXJzOiBmaWx0ZXJzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbDogaXRlbS5hbGwsXG4gICAgICAgICAgICAgICAgICAgICAgICByb29tOiBpdGVtLnJvb20sXG4gICAgICAgICAgICAgICAgICAgICAgICByb29tczogaXRlbS5yb29tcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkdhbGxlcnlGaWx0ZXJcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZXM6IGZpbHRlcnNcbiAgICAgICAgICAgICAgICA/LnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgYWNjOiB7IG11bHRpbWVkaWE6IGFueVtdOyBmaWx0ZXJJbmRleDogbnVtYmVyIH1bXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVySW5kZXg6IG51bWJlclxuICAgICAgICAgICAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIubXVsdGltZWRpYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG11bHRpbWVkaWFXaXRoRmlsdGVyID0gZmlsdGVyLm11bHRpbWVkaWEubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZmlsdGVySW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE6IG11bHRpbWVkaWFXaXRoRmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVySW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5mbGF0TWFwKCh7IG11bHRpbWVkaWEgfTogYW55KSA9PiBtdWx0aW1lZGlhKVxuICAgICAgICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZywgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogaW1nPy5maWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uR2FsbGVyeUl0ZW1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25HbG9hYmxzR2FsbGVyeUZpbHRlcjtcbiAgICB9XG5cbiAgICBtYXBHbG9iYWxDb25zdWx0VHlwZXMoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5kUHJvcHNDb25zdWx0OiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBhbnkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBjb25zdWx0VHlwZXMgPSBwcm9wcz8uY29uc3VsdFR5cGVzPy5bMF0/LmNvbnN1bHRUeXBlSWRcbiAgICAgICAgICAgID8gcHJvcHM/LmNvbnN1bHRUeXBlc1xuICAgICAgICAgICAgOiBwcm9wcz8ubGVuZ3RoICYmIHByb3BzPy5bMF0/LmNvbnN1bHRUeXBlc1xuICAgICAgICAgICAgICA/IHByb3BzXG4gICAgICAgICAgICAgIDogbmRQcm9wc0NvbnN1bHQ7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvcHRpb25zOiBjb25zdWx0VHlwZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VsdFR5cGVJZDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wLmNvbnN1bHRfdHlwZV9pZCA/PyBwcm9wLmNvbnN1bHRUeXBlSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBwcm9wLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcHJvcC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmRyb3Bkb3duUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclJlcXVpcmVkLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcEdsb2JhbERlc3RpbmF0aW9ucyhcbiAgICAgICAgZGVzdGluYXRpb25zOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uRGVzdGluYXRpb25JW10gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIWRlc3RpbmF0aW9ucykgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCBub3JtYWxpemVEZXN0aW5hdGlvbiA9IChcbiAgICAgICAgICAgIGQ6IGFueSxcbiAgICAgICAgICAgIGluZGV4OiBudW1iZXJcbiAgICAgICAgKTogQmFieWxvbkRlc3RpbmF0aW9uSSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBkLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogW10sXG4gICAgICAgICAgICAgICAgICAgIGhvdGVsczogW10sXG4gICAgICAgICAgICAgICAgICAgIHRleHRzOiB7fSxcbiAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25EZXN0aW5hdGlvbkk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaWQ6IGQ/LmlkID8/IGluZGV4LFxuICAgICAgICAgICAgICAgIG5hbWU6IGQ/Lm5hbWUgPz8gZD8udGl0bGUgPz8gJycsXG4gICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhkPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhkPy5saW5rcyksXG4gICAgICAgICAgICAgICAgbXVsdGltZWRpYTogdGhpcy5tYXBJbWFnZXMoZD8ubXVsdGltZWRpYSksXG4gICAgICAgICAgICAgICAgaG90ZWxzOiB0aGlzLm1hcEhvdGVsc0dsb2JhbChkPy5ob3RlbHMpLFxuICAgICAgICAgICAgICAgIHRleHRzOiBkPy50ZXh0c1xuICAgICAgICAgICAgICAgICAgICA/IHRoaXMubWFwR2xvYmFsVGV4dHMoZD8udGV4dHMpXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5tYXBHbG9iYWxUZXh0cyhkKSxcbiAgICAgICAgICAgIH0gYXMgQmFieWxvbkRlc3RpbmF0aW9uSTtcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkZXN0aW5hdGlvbnMpKSB7XG4gICAgICAgICAgICBjb25zdCBsb29rc0xpa2VGbGF0TGlzdCA9IGRlc3RpbmF0aW9ucy5ldmVyeShcbiAgICAgICAgICAgICAgICAoeCkgPT5cbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHggPT09ICdzdHJpbmcnIHx8XG4gICAgICAgICAgICAgICAgICAgICh4ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAoeC5pZCAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5uYW1lICE9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LnRpdGxlICE9PSB1bmRlZmluZWQpKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGxvb2tzTGlrZUZsYXRMaXN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9ucy5tYXAobm9ybWFsaXplRGVzdGluYXRpb24pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB0b0xpc3QgPSAoZ3JvdXA6IGFueSk6IGFueVtdID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShncm91cCkpIHJldHVybiBncm91cDtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShncm91cD8uaXRlbXMpKSByZXR1cm4gZ3JvdXAuaXRlbXM7XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZ3JvdXA/LmRlc3RpbmF0aW9ucykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBncm91cC5kZXN0aW5hdGlvbnM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9ucy5mbGF0TWFwKChncm91cDogYW55KSA9PlxuICAgICAgICAgICAgICAgIHRvTGlzdChncm91cCkubWFwKG5vcm1hbGl6ZURlc3RpbmF0aW9uKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRlc3RpbmF0aW9ucz8uaXRlbXMpKVxuICAgICAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9ucy5pdGVtcy5tYXAobm9ybWFsaXplRGVzdGluYXRpb24pO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkZXN0aW5hdGlvbnM/LmRlc3RpbmF0aW9ucykpXG4gICAgICAgICAgICByZXR1cm4gZGVzdGluYXRpb25zLmRlc3RpbmF0aW9ucy5tYXAobm9ybWFsaXplRGVzdGluYXRpb24pO1xuXG4gICAgICAgIHJldHVybiBbbm9ybWFsaXplRGVzdGluYXRpb24oZGVzdGluYXRpb25zLCAwKV07XG4gICAgfVxuXG4gICAgbWFwR2xvYmFsVGV4dHModGV4dHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25UZXh0SW5mb0kge1xuICAgICAgICBpZiAoIXRleHRzKSByZXR1cm4ge30gYXMgQmFieWxvblRleHRJbmZvSTtcblxuICAgICAgICBjb25zdCBsb3lhbHR5VGFibGVUZXh0cyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHRleHRzKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKFtrZXldKSA9PlxuICAgICAgICAgICAgICAgICAgICAvXnRhYmxhZmlkZWxpemFjaW5fKHRpdHVsb3xkZXNjcmlwY2lvbnxzdWJ0aXR1bG98dGV4dG8pXFxkKyQvLnRlc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IFtrZXksIHRoaXMuZ2V0VGV4dFZhbHVlKHZhbHVlKV0pXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gQcOxYWRpciBkaW7DoW1pY2FtZW50ZSBsYXMgaGVhZGluZ190YWdfe2tleX0gZGV0ZWN0YWRhc1xuICAgICAgICBjb25zdCBoZWFkaW5nVGFncyA9IHRoaXMuZXh0cmFjdEhlYWRpbmdUYWdzKHRleHRzKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5wcmV0aXRsZSA/PyB0ZXh0cz8uUHJldGl0dWxvKSxcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8udGl0bGUgPz8gdGV4dHM/LlRpdHVsbyksXG4gICAgICAgICAgICB0aXRsZTE6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy50aXRsZTEpLFxuICAgICAgICAgICAgdGl0bGUyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8udGl0bGUyKSxcbiAgICAgICAgICAgIHRpdGxlMzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnRpdGxlMyksXG4gICAgICAgICAgICBzdWJ0aXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnN1YnRpdGxlKSxcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5uYW1lKSxcbiAgICAgICAgICAgIG1vcmVJbmZvVGV4dDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm1vcmVJbmZvVGV4dCksXG4gICAgICAgICAgICBvZmZlclRhZzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm9mZmVyVGFnKSxcbiAgICAgICAgICAgIHRleHQ6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy50ZXh0ID8/IHRleHRzPy5UZXh0byksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmRlc2NyaXB0aW9uKSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uMTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmRlc2NyaXB0aW9uMSksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5kZXNjcmlwdGlvbjIpLFxuICAgICAgICAgICAgZGVzY3JpcHRpb24zOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uZGVzY3JpcHRpb24zKSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9udGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5kZXNjcmlwdGlvbnRpdGxlKSxcbiAgICAgICAgICAgIGhpZGVJbmZvVGV4dDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmhpZGVJbmZvVGV4dCksXG4gICAgICAgICAgICBoaWRlVGV4dDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmhpZGRlbiksXG4gICAgICAgICAgICBpdGVtMTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lml0ZW0xKSxcbiAgICAgICAgICAgIGl0ZW0xVGV4dDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lml0ZW0xVGV4dCksXG4gICAgICAgICAgICBtYW5kYXRvcnlUZXh0OiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubWFuZGF0b3J5VGV4dCksXG4gICAgICAgICAgICBub3RlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubm90ZSksXG4gICAgICAgICAgICBjb25kaXRpb25zVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5jb25kaXRpb25zVGl0bGUpLFxuICAgICAgICAgICAgYWRkaXRpb25hbDogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmFkZGl0aW9uYWwgPz8gdGV4dHM/LkFkZGl0aW9uYWxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBhZGRpdGlvbmFsMTogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmFkZGl0aW9uYWwxID8/IHRleHRzPy5BZGRpdGlvbmFsMVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWwyOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uYWRkaXRpb25hbDIgPz8gdGV4dHM/LkFkZGl0aW9uYWwyXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYWRkaXRpb25hbDM6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5hZGRpdGlvbmFsMyA/PyB0ZXh0cz8uQWRkaXRpb25hbDNcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGNvbmRpdGlvbnM6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5jb25kaXRpb25zKSxcbiAgICAgICAgICAgIHVybDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnVybCksXG5cbiAgICAgICAgICAgIGFkdmFudGFnZXN0aXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmFkdmFudGFnZXN0aXRsZSksXG4gICAgICAgICAgICBhZHZhbnRhZ2Vzc3VidGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5hZHZhbnRhZ2Vzc3VidGl0bGUpLFxuXG4gICAgICAgICAgICBsZXZlbDE6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5sZXZlbDEgPz8gdGV4dHM/LmxldmUxKSxcbiAgICAgICAgICAgIGxldmVsMjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmxldmVsMiA/PyB0ZXh0cz8ubGV2ZTIpLFxuICAgICAgICAgICAgbGV2ZWwzOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubGV2ZWwzID8/IHRleHRzPy5sZXZlMyksXG4gICAgICAgICAgICBsZXZlMTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmxldmUxKSxcbiAgICAgICAgICAgIGxldmUyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubGV2ZTIpLFxuICAgICAgICAgICAgbGV2ZTM6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5sZXZlMyksXG5cbiAgICAgICAgICAgIHdoYXRzYXBwOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ud2hhdHNhcHApLFxuICAgICAgICAgICAgc2Nyb2xsdGV4dDogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LnNjcm9sbHRleHQgPz8gdGV4dHM/LnNjcm9sbERvd25cbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGFkZHJlc3M6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5hZGRyZXNzKSxcbiAgICAgICAgICAgIGFkZHJlc3N0aXRsZTogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmFkZHJlc3N0aXRsZSA/PyB0ZXh0cz8uYWRkcmVzc1RpdGxlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYmFubmVydGV4dDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmJhbm5lcnRleHQpLFxuICAgICAgICAgICAgY29udGFjdHRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uY29udGFjdHRpdGxlID8/IHRleHRzPy5jb250YWN0VGl0bGVcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb3B5cmlnaHR0ZXh0OiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uY29weXJpZ2h0dGV4dCA/PyB0ZXh0cz8uY29weXJpZ2h0XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdG9wQnV0dG9uOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8udG9wQnV0dG9uKSxcbiAgICAgICAgICAgIGFib3V0VGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5hYm91dFRpdGxlKSxcbiAgICAgICAgICAgIGdydXBvVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ncnVwb1RpdGxlKSxcbiAgICAgICAgICAgIGhlbHBUaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmhlbHBUaXRsZSksXG4gICAgICAgICAgICBjb250YWN0T2ZmaWNlVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5jb250YWN0T2ZmaWNlVGl0bGUpLFxuXG4gICAgICAgICAgICB0ZXh0QWRqQ3Y6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy50ZXh0QWRqQ3YpLFxuICAgICAgICAgICAgdGV4dEFkakN2RXJyb3I6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy50ZXh0QWRqQ3ZFcnJvciksXG4gICAgICAgICAgICBTZWxlY3RJdGVtVGV4dDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LlNlbGVjdEl0ZW1UZXh0KSxcblxuICAgICAgICAgICAgLy8gU1ZHIC8gZXNwZWNpYWxlc1xuICAgICAgICAgICAgc3ZnOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc3ZnKSxcbiAgICAgICAgICAgIHNlbGVjdG9yVGV4dHM6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5zZWxlY3RvclRleHRzKSxcblxuICAgICAgICAgICAgZmVhdHVyZXBpbGxzbnVtYmVyU3ZnaWNvbjE6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5mZWF0dXJlcGlsbHNudW1iZXJTdmdpY29uMVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZlYXR1cmVwaWxsc251bWJlclN2Z2ljb24yOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZmVhdHVyZXBpbGxzbnVtYmVyU3ZnaWNvbjJcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBmZWF0dXJlcGlsbHNudW1iZXJTdmdpY29uMzogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmZlYXR1cmVwaWxsc251bWJlclN2Z2ljb24zXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBmZWF0dXJlcGlsbHNudW1iZXJTdmdudW1iZXIxOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZmVhdHVyZXBpbGxzbnVtYmVyU3ZnbnVtYmVyMVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZlYXR1cmVwaWxsc251bWJlclN2Z251bWJlcjI6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5mZWF0dXJlcGlsbHNudW1iZXJTdmdudW1iZXIyXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZmVhdHVyZXBpbGxzbnVtYmVyU3ZnbnVtYmVyMzogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmZlYXR1cmVwaWxsc251bWJlclN2Z251bWJlcjNcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGZlYXR1cmVwaWxsc251bWJlclN2Z25hbWUxOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZmVhdHVyZXBpbGxzbnVtYmVyU3ZnbmFtZTFcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBmZWF0dXJlcGlsbHNudW1iZXJTdmduYW1lMjogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmZlYXR1cmVwaWxsc251bWJlclN2Z25hbWUyXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZmVhdHVyZXBpbGxzbnVtYmVyU3ZnbmFtZTM6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5mZWF0dXJlcGlsbHNudW1iZXJTdmduYW1lM1xuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgZmVhdHVyZXBpbGxzbnVtYmVyU3Znc3VidGl0bGUxOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZmVhdHVyZXBpbGxzbnVtYmVyU3Znc3VidGl0bGUxXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZmVhdHVyZXBpbGxzbnVtYmVyU3Znc3VidGl0bGUyOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZmVhdHVyZXBpbGxzbnVtYmVyU3Znc3VidGl0bGUyXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZmVhdHVyZXBpbGxzbnVtYmVyU3Znc3VidGl0bGUzOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZmVhdHVyZXBpbGxzbnVtYmVyU3Znc3VidGl0bGUzXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcG9ydGFkYWhvdGVsdjF2aWRlbzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnBvcnRhZGFob3RlbHYxdmlkZW8pLFxuXG4gICAgICAgICAgICB0b3BzbGlkZXJ2aWRlb3Yyc3ZnOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8udG9wc2xpZGVydmlkZW92MnN2ZyksXG4gICAgICAgICAgICB0b3BzbGlkZXJ2aWRlb3YydmlkZW86IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy50b3BzbGlkZXJ2aWRlb3YydmlkZW9cbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIG9ubHlBZHVsdHM6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5vbmx5QWR1bHRzKSxcbiAgICAgICAgICAgIGhvdGVsQ2F0ZWdvcnk6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ob3RlbENhdGVnb3J5KSxcbiAgICAgICAgICAgIGhvdGVsVHlwZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmhvdGVsVHlwZSksXG4gICAgICAgICAgICBkZXN0aW5hdGlvbnM6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5kZXN0aW5hdGlvbnMpLFxuICAgICAgICAgICAgY2xlYW5GaWx0ZXJzOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY2xlYW5GaWx0ZXJzKSxcbiAgICAgICAgICAgIG5vdEZvdW5kOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubm90Rm91bmQpLFxuICAgICAgICAgICAgY29udGFjdEVtYWlsOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY29udGFjdEVtYWlsKSxcbiAgICAgICAgICAgIGNvbnRhY3RPZmZpY2U6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5jb250YWN0T2ZmaWNlKSxcbiAgICAgICAgICAgIGNvbnRhY3RUZWw6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5jb250YWN0VGVsKSxcbiAgICAgICAgICAgIG1hcmNhOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubWFyY2EpLFxuXG4gICAgICAgICAgICBlcnJvclJlZ2lzdGVyU3Vic2NyaWJlcjogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LkVycm9yUmVnaXN0ZXJTdWJzY3JpYmVyXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZXJyb3JzdWJzY3JpYmVyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uRXJyb3JzdWJzY3JpYmVyKSxcbiAgICAgICAgICAgIGlucHV0TGFiZWw6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5pbnB1dExhYmVsKSxcbiAgICAgICAgICAgIGlucHV0UGxhY2Vob2xkZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5pbnB1dFBsYWNlaG9sZGVyKSxcbiAgICAgICAgICAgIG5ld3NFcnJvckVtYWlsOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubmV3c0Vycm9yRW1haWwpLFxuICAgICAgICAgICAgc3VjY2Vzc3N1YnNjcmliZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5zdWNjZXNzc3Vic2NyaWJlciksXG5cbiAgICAgICAgICAgIG1hcFVybDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm1hcFVybCA/PyB0ZXh0cz8ubWFwdXJsKSxcbiAgICAgICAgICAgIHJvb21zOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ucm9vbXMpLFxuICAgICAgICAgICAgY2F0ZWdvcmllczogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNhdGVnb3JpZXMpLFxuICAgICAgICAgICAgYWxsOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uYWxsKSxcblxuICAgICAgICAgICAgaG93R2V0RGVzY3JpcHRpb246IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ob3dHZXREZXNjcmlwdGlvbiksXG4gICAgICAgICAgICBob3dHZXREZXNjcmlwdGlvbjI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ob3dHZXREZXNjcmlwdGlvbjIpLFxuICAgICAgICAgICAgaG93R2V0VGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ob3dHZXRUaXRsZSksXG4gICAgICAgICAgICBob3dHZXRUaXRsZTI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ob3dHZXRUaXRsZTIpLFxuICAgICAgICAgICAgY29udGFjdERlc2NyaXB0aW9uOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY29udGFjdERlc2NyaXB0aW9uKSxcbiAgICAgICAgICAgIGNvbnRhY3RUaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNvbnRhY3RUaXRsZSksXG5cbiAgICAgICAgICAgIG5ld3NsZXR0ZXJFcnJvcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm5ld3NsZXR0ZXJFcnJvciksXG4gICAgICAgICAgICBuZXdzbGV0dGVyRmFpbDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm5ld3NsZXR0ZXJGYWlsKSxcbiAgICAgICAgICAgIG5ld3NsZXR0ZXJTdWNjZXNzZnVsbDogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/Lm5ld3NsZXR0ZXJTdWNjZXNzZnVsbFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG5ld3NsZXR0ZXJUaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm5ld3NsZXR0ZXJUaXRsZSksXG4gICAgICAgICAgICBldmVudHM6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ldmVudHMpLFxuXG4gICAgICAgICAgICBhZGRyZXNzVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5hZGRyZXNzVGl0bGUpLFxuICAgICAgICAgICAgYWRkcmVzc0xpbmVzOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uYWRkcmVzc0xpbmVzKSxcblxuICAgICAgICAgICAgcmVjZXB0aW9uVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5yZWNlcHRpb25UaXRsZSksXG4gICAgICAgICAgICBncHNUaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lmdwc1RpdGxlKSxcbiAgICAgICAgICAgIGZvbGxvd1RpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uZm9sbG93VGl0bGUpLFxuICAgICAgICAgICAgaG93VG9UaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lmhvd1RvVGl0bGUpLFxuICAgICAgICAgICAgaG93VG9QcmV0aXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lmhvd1RvUHJldGl0bGUpLFxuICAgICAgICAgICAgZmlyc3RUaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmZpcnN0VGl0bGUpLFxuICAgICAgICAgICAgc2Vjb25kVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5zZWNvbmRUaXRsZSksXG4gICAgICAgICAgICB0aGlyZFRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8udGhpcmRUaXRsZSksXG4gICAgICAgICAgICBmaXJzdERlc2NyaXB0aW9uOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uZmlyc3REZXNjcmlwdGlvbiksXG4gICAgICAgICAgICBzZWNvbmREZXNjcmlwdGlvbjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnNlY29uZERlc2NyaXB0aW9uKSxcbiAgICAgICAgICAgIHRoaXJkRGVzY3JpcHRpb246IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy50aGlyZERlc2NyaXB0aW9uKSxcbiAgICAgICAgICAgIGNvbnRhY3RJbmZvOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY29udGFjdEluZm8pLFxuICAgICAgICAgICAgc29jaWFsVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5zb2NpYWxUaXRsZSksXG4gICAgICAgICAgICBsYXRpdHVkZVRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubGF0aXR1ZGVUaXRsZSksXG4gICAgICAgICAgICBsb25naXR1ZGVUaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmxvbmdpdHVkZVRpdGxlKSxcbiAgICAgICAgICAgIHNlY29uZGFyeVRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc2Vjb25kYXJ5VGl0bGUpLFxuICAgICAgICAgICAgc2Vjb25kYXJ5UHJldGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5zZWNvbmRhcnlQcmV0aXRsZSksXG4gICAgICAgICAgICBzY2hlZHVsZUluZm86IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5zY2hlZHVsZUluZm8pLFxuICAgICAgICAgICAgb25lRWxlbWVudDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm9uZUVsZW1lbnQpLFxuICAgICAgICAgICAgcmVjZXB0aW9uOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cy5yZWNlcHRpb24pLFxuXG4gICAgICAgICAgICByb29tVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5yb29tVGl0bGUpLFxuXG4gICAgICAgICAgICAvLyBDb21wYXRpYmlsaWRhZCBleHBsw61jaXRhIHBhcmEgbcOzZHVsb3MgbGVnYWN5IGNvbiBjbGF2ZXMgZW4gY2FzdGVsbGFub1xuICAgICAgICAgICAgUHJldGl0dWxvOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uUHJldGl0dWxvKSxcbiAgICAgICAgICAgIFRpdHVsbzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LlRpdHVsbyksXG4gICAgICAgICAgICBUZXh0bzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LlRleHRvKSxcbiAgICAgICAgICAgICdUaXR1bG8tb2ZlcnRhcyc6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5bJ1RpdHVsby1vZmVydGFzJ10pLFxuICAgICAgICAgICAgJ1RpdHVsby1kZXRhbGxlLTEnOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uWydUaXR1bG8tZGV0YWxsZS0xJ10pLFxuICAgICAgICAgICAgJ1RpdHVsby1kZXRhbGxlLTInOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uWydUaXR1bG8tZGV0YWxsZS0yJ10pLFxuICAgICAgICAgICAgJ1RpdHVsby1kZXRhbGxlLTMnOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uWydUaXR1bG8tZGV0YWxsZS0zJ10pLFxuICAgICAgICAgICAgJ1RpdHVsby1kZXRhbGxlLTQnOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uWydUaXR1bG8tZGV0YWxsZS00J10pLFxuICAgICAgICAgICAgJ1TDrXR1bG8tZGV0YWxsZS0xJzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LlsnVMOtdHVsby1kZXRhbGxlLTEnXSksXG4gICAgICAgICAgICAnVMOtdHVsby1kZXRhbGxlLTInOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uWydUw610dWxvLWRldGFsbGUtMiddKSxcbiAgICAgICAgICAgICdUw610dWxvLWRldGFsbGUtMyc6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5bJ1TDrXR1bG8tZGV0YWxsZS0zJ10pLFxuICAgICAgICAgICAgJ1TDrXR1bG8tZGV0YWxsZS00JzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LlsnVMOtdHVsby1kZXRhbGxlLTQnXSksXG4gICAgICAgICAgICAnU3VidGl0dWxvLWRldGFsbGUtMSc6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ1N1YnRpdHVsby1kZXRhbGxlLTEnXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdTdWJ0aXR1bG8tZGV0YWxsZS0yJzogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LlsnU3VidGl0dWxvLWRldGFsbGUtMiddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ1N1YnRpdHVsby1kZXRhbGxlLTMnOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydTdWJ0aXR1bG8tZGV0YWxsZS0zJ11cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAnU3VidGl0dWxvLWRldGFsbGUtNCc6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ1N1YnRpdHVsby1kZXRhbGxlLTQnXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdTdWLDrXR1bG8tZGV0YWxsZS0xJzogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LlsnU3Viw610dWxvLWRldGFsbGUtMSddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ1N1YsOtdHVsby1kZXRhbGxlLTInOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydTdWLDrXR1bG8tZGV0YWxsZS0yJ11cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAnU3Viw610dWxvLWRldGFsbGUtMyc6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ1N1YsOtdHVsby1kZXRhbGxlLTMnXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdTdWLDrXR1bG8tZGV0YWxsZS00JzogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LlsnU3Viw610dWxvLWRldGFsbGUtNCddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ1N1Yml0dWxvLWRldGFsbGUtMSc6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ1N1Yml0dWxvLWRldGFsbGUtMSddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ1N1Yml0dWxvLWRldGFsbGUtMic6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ1N1Yml0dWxvLWRldGFsbGUtMiddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ1N1Yml0dWxvLWRldGFsbGUtMyc6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ1N1Yml0dWxvLWRldGFsbGUtMyddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ1N1Yml0dWxvLWRldGFsbGUtNCc6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ1N1Yml0dWxvLWRldGFsbGUtNCddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ0Rlc2NyaXBjaW9uLWRldGFsbGUtMSc6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ0Rlc2NyaXBjaW9uLWRldGFsbGUtMSddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ0Rlc2NyaXBjaW9uLWRldGFsbGUtMic6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ0Rlc2NyaXBjaW9uLWRldGFsbGUtMiddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ0Rlc2NyaXBjaW9uLWRldGFsbGUtMyc6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ0Rlc2NyaXBjaW9uLWRldGFsbGUtMyddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ0Rlc2NyaXBjaW9uLWRldGFsbGUtNCc6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ0Rlc2NyaXBjaW9uLWRldGFsbGUtNCddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ0Rlc2NyaXBjacOzbi1kZXRhbGxlLTEnOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydEZXNjcmlwY2nDs24tZGV0YWxsZS0xJ11cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAnRGVzY3JpcGNpw7NuLWRldGFsbGUtMic6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5bJ0Rlc2NyaXBjacOzbi1kZXRhbGxlLTInXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICdEZXNjcmlwY2nDs24tZGV0YWxsZS0zJzogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LlsnRGVzY3JpcGNpw7NuLWRldGFsbGUtMyddXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgJ0Rlc2NyaXBjacOzbi1kZXRhbGxlLTQnOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uWydEZXNjcmlwY2nDs24tZGV0YWxsZS00J11cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpY29uOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uaWNvbiksXG4gICAgICAgICAgICBjb21wb2ZlcnRhc19pY29uOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY29tcG9mZXJ0YXNfaWNvbiksXG4gICAgICAgICAgICAuLi5sb3lhbHR5VGFibGVUZXh0cyxcblxuICAgICAgICAgICAgbmV4dDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm5leHQpLFxuICAgICAgICAgICAgcHJldjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnByZXYpLFxuICAgICAgICAgICAgZG93bmxvYWQ6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5kb3dubG9hZCksXG4gICAgICAgICAgICBuZFRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubmRUaXRsZSksXG4gICAgICAgICAgICBtYWluVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5tYWFpblRpdGxlKSxcblxuICAgICAgICAgICAgYXR0YWNoRmlsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmF0dGFjaEZpbGUpLFxuICAgICAgICAgICAgYXR0YWNobWVudDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmF0dGFjaG1lbnQpLFxuICAgICAgICAgICAgYXR0YWNobWVudEVycm9yOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uYXR0YWNobWVudEVycm9yKSxcbiAgICAgICAgICAgIGF0dGFjaG1lbnRQbGFjZWhvbGRlcjogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmF0dGFjaG1lbnRQbGFjZWhvbGRlclxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNoZWNrYm94OiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY2hlY2tib3gpLFxuICAgICAgICAgICAgY2hlY2tib3gyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY2hlY2tib3gyKSxcbiAgICAgICAgICAgIGNoZWNrYm94MkVycm9yOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY2hlY2tib3gyRXJyb3IpLFxuICAgICAgICAgICAgY2hlY2tib3hFcnJvcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNoZWNrYm94RXJyb3IpLFxuICAgICAgICAgICAgZHJvcGRvd25FcnJvcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmRyb3Bkb3duRXJyb3IpLFxuICAgICAgICAgICAgZHJvcGRvd25QbGFjZWhvbGRlcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmRyb3Bkb3duUGxhY2Vob2xkZXIpLFxuICAgICAgICAgICAgZHJvcGRvd25QbGFjZWhvbGRlcjI6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5kcm9wZG93blBsYWNlaG9sZGVyMlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGVtYWlsOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uZW1haWwpLFxuICAgICAgICAgICAgZW1haWxFcnJvcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmVtYWlsRXJyb3IpLFxuICAgICAgICAgICAgZW1haWxQbGFjZWhvbGRlcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmVtYWlsUGxhY2Vob2xkZXIpLFxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uZXJyb3JNZXNzYWdlKSxcbiAgICAgICAgICAgIGpvaW5UaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmpvaW5UaXRsZSksXG4gICAgICAgICAgICBsYXN0TmFtZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lmxhc3ROYW1lKSxcbiAgICAgICAgICAgIGxhc3ROYW1lRXJyb3I6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5sYXN0TmFtZUVycm9yKSxcbiAgICAgICAgICAgIGxhc3ROYW1lUGxhY2Vob2xkZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5sYXN0TmFtZVBsYWNlaG9sZGVyKSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5tZXNzYWdlKSxcbiAgICAgICAgICAgIG1lc3NhZ2VFcnJvcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm1lc3NhZ2VFcnJvciksXG4gICAgICAgICAgICBtZXNzYWdlUGxhY2Vob2xkZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5tZXNzYWdlUGxhY2Vob2xkZXIpLFxuICAgICAgICAgICAgbmFtZUVycm9yOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubmFtZUVycm9yKSxcbiAgICAgICAgICAgIG5hbWVQbGFjZWhvbGRlcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm5hbWVQbGFjZWhvbGRlciksXG4gICAgICAgICAgICBwaG9uZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnBob25lKSxcbiAgICAgICAgICAgIHBob25lRXJyb3I6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5waG9uZUVycm9yKSxcbiAgICAgICAgICAgIHBob25lUGxhY2Vob2xkZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5waG9uZVBsYWNlaG9sZGVyKSxcbiAgICAgICAgICAgIHByZXNlbnRhY2lvbjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnByZXNlbnRhY2lvbiksXG4gICAgICAgICAgICBwcmVzZW50YWNpb25QbGFjZWhvbGRlcjogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LnByZXNlbnRhY2lvblBsYWNlaG9sZGVyXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcmVxdWlyZWRGaWVsZDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnJlcXVpcmVkRmllbGQpLFxuICAgICAgICAgICAgc3VibWl0OiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc3VibWl0KSxcbiAgICAgICAgICAgIHN1Y2Nlc3NNZXNzYWdlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc3VjY2Vzc01lc3NhZ2UpLFxuXG4gICAgICAgICAgICBzZXJ2aWNlc3RpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc2VydmljZXN0aXRsZSksXG4gICAgICAgICAgICBoaWRlc2VydmljZXM6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5oaWRlc2VydmljZXMpLFxuICAgICAgICAgICAgc2hvd3NlcnZpY2VzOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc2hvd3NlcnZpY2VzKSxcbiAgICAgICAgICAgIHNlcnZpY2VzT25GaWx0ZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5zZXJ2aWNlc09uRmlsdGVyKSxcblxuICAgICAgICAgICAgLi4uaGVhZGluZ1RhZ3MsXG4gICAgICAgIH0gYXMgQmFieWxvblRleHRJbmZvSTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQnVzY2EgZW4gdGV4dHMgdG9kYXMgbGFzIHByb3BpZWRhZGVzIHF1ZSBzZWFuIG9iamV0byB5IHRlbmdhbiBjb250YWluIHkvbyB0YWcsXG4gICAgICogeSBkZXZ1ZWx2ZSB1biBvYmpldG8gY29uIGNsYXZlcyBoZWFkaW5nX3RhZ197a2V5fSB5IHZhbG9yIHsgY29udGVudCwgdGFnIH1cbiAgICAgKi9cbiAgICBwcml2YXRlIGV4dHJhY3RIZWFkaW5nVGFncyhcbiAgICAgICAgdGV4dHM6IGFueVxuICAgICk6IFJlY29yZDxzdHJpbmcsIHsgY29udGVudDogc3RyaW5nOyB0YWc/OiBzdHJpbmcgfT4ge1xuICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHsgY29udGVudDogc3RyaW5nOyB0YWc/OiBzdHJpbmcgfT4gPSB7fTtcbiAgICAgICAgaWYgKCF0ZXh0cyB8fCB0eXBlb2YgdGV4dHMgIT09ICdvYmplY3QnKSByZXR1cm4gcmVzdWx0O1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0ZXh0cykpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IHRleHRzW2tleV07XG4gICAgICAgICAgICBpZiAodmFsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmICdjb250YWluJyBpbiB2YWwpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbYGhlYWRpbmdfdGFnXyR7a2V5fWBdID0ge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiB2YWwuY29udGFpbixcbiAgICAgICAgICAgICAgICAgICAgdGFnOiB2YWwudGFnLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRleHRWYWx1ZSh0ZXh0OiBhbnkpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXRleHQpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgICAgLy8gc3RyaW5nIHBsYW5vXG4gICAgICAgIGlmICh0eXBlb2YgdGV4dCA9PT0gJ3N0cmluZycpIHJldHVybiB0ZXh0O1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0ZXh0Py52YWx1ZSA/P1xuICAgICAgICAgICAgdGV4dD8udGV4dCA/P1xuICAgICAgICAgICAgdGV4dD8ubGFiZWwgPz9cbiAgICAgICAgICAgIHRleHQ/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzVGV4dFRva2VuVmFsdWUodGV4dDogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGV4dCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHZhbHVlID1cbiAgICAgICAgICAgIHR5cGVvZiB0ZXh0ID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgID8gdGV4dFxuICAgICAgICAgICAgICAgIDogKHRleHQ/LmNvbnRhaW4gPz8gdGV4dD8udmFsdWUgPz8gdGV4dD8udGV4dCA/PyB0ZXh0Py5sYWJlbCk7XG5cbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZS50cmltKCkubGVuZ3RoID4gMCA6ICEhdmFsdWU7XG4gICAgfVxuXG4gICAgbWFwQ29uc3VsdFR5cGVzR2xvYmFsKGNvbnN1bHRzOiBhbnkgfCB1bmRlZmluZWQpOiBDb25zdWx0VHlwZUlbXSB7XG4gICAgICAgIHJldHVybiBjb25zdWx0cz8ubWFwKFxuICAgICAgICAgICAgKGNvbnN1bHQ6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICBpZDogY29uc3VsdD8uaWQsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvbnN1bHQ/Lm5hbWUsXG4gICAgICAgICAgICAgICAgfSkgYXMgQ29uc3VsdFR5cGVJXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbWFwSG90ZWxzR2xvYmFsKGhvdGVsczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkhvdGVsR2xvYmFsSXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIGhvdGVsc1xuICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgKGhvdGVsOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogaG90ZWw/LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaG90ZWw/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaG90ZWw/Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHRoaXMubWFwR2xvYmFsVGV4dHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaG90ZWw/LnRleHRzXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIEJhYnlsb25UZXh0SW5mb0ksXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhOiB0aGlzLm1hcE11bHRpbWVkaWEoaG90ZWw/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBob3RlbD8ubXVsdGltZWRpYT8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLm1hcE11bHRpbWVkaWEoaG90ZWw/Lm11bHRpbWVkaWEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhob3RlbD8ubGluayA/PyBob3RlbD8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhob3RlbD8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWFpbDogaG90ZWw/LmVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkZXNzOiBob3RlbD8uYWRkcmVzcyxcblxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsSW5jbHVzaXZlOiBob3RlbD8uYWxsSW5jbHVzaXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmVhY2hDbHViOiBob3RlbD8uYmVhY2hDbHViLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tJblRpbWU6IGhvdGVsPy5jaGVja0luVGltZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrT3V0VGltZTogaG90ZWw/LmNoZWNrT3V0VGltZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IGhvdGVsPy5jaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2luZ0Zyb206IGhvdGVsPy5jbG9zaW5nRnJvbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NpbmdUbzogaG90ZWw/LmNsb3NpbmdUbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IGhvdGVsPy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgY3A6IGhvdGVsPy5jcCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uczogaG90ZWw/LmRlc3RpbmF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodGVkOiBob3RlbD8uaGlnaGxpZ2h0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXQ6IGhvdGVsPy5sYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb246IGhvdGVsPy5sb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXVuZHJ5OiBob3RlbD8ubGF1bmRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsaXR5OiBob3RlbD8ubG9jYWxpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXBMaW5rOiBob3RlbD8ubWFwTGluayxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZmVyczogaG90ZWw/Lm9mZmVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBob25lOiBob3RlbD8ucGhvbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm92aW5jZTogaG90ZWw/LnByb3ZpbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGlja2VyOiBob3RlbD8udGlja2VyLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l0ZUhvdGVsczogaG90ZWw/LnNpdGVIb3RlbHMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlc0FkdmFudGFnZXM6IGhvdGVsPy5zZXJ2aWNlc0FkdmFudGFnZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlc0NoYXJhY3RlcmlzdGljczogaG90ZWw/LnNlcnZpY2VzQ2hhcmFjdGVyaXN0aWNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZXNIb3RlbEFwcDogaG90ZWw/LnNlcnZpY2VzSG90ZWxBcHAsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlc0xpc3Q6IGhvdGVsPy5zZXJ2aWNlc0xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlc0xvY2F0aW9uOiBob3RlbD8uc2VydmljZXNMb2NhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzU2VydmljZTogaG90ZWw/LnNlcnZpY2VzU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlczogaG90ZWw/LnN0eWxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ubHlBZHVsdHM6IGhvdGVsPy5vbmx5QWR1bHRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRzOiB0aGlzLm1hcEdsb2JhbEhvdGVsRXZlbnRzKGhvdGVsPy5ldmVudHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG90ZWxjYXRlZ29yeTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3RlbD8uaG90ZWxDYXRlZ29yeSA/PyBob3RlbD8uaG90ZWxjYXRlZ29yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdGVsdHlwZTogaG90ZWw/LmhvdGVsVHlwZSA/PyBob3RlbD8uaG90ZWx0eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyY2E6IGhvdGVsPy5tYXJjYSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkhvdGVsR2xvYmFsSXRlbVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgPy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gKGEub3JkZXIgfHwgOTk5OSkgLSAoYi5vcmRlciB8fCA5OTk5KSk7XG4gICAgfVxuXG4gICAgbWFwR2xvYmFsSG90ZWxFdmVudHMoZXZlbnRzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uRXZlbnRJdGVtSVtdIHtcbiAgICAgICAgaWYgKCFldmVudHMpIHJldHVybiBbXTtcbiAgICAgICAgbGV0IGFycjogYW55W10gPSBbXTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZXZlbnRzKSkge1xuICAgICAgICAgICAgYXJyID0gZXZlbnRzO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBldmVudHMgPT09ICdvYmplY3QnICYmIGV2ZW50cyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgYXJyID0gT2JqZWN0LnZhbHVlcyhldmVudHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcnJcbiAgICAgICAgICAgIC5maWx0ZXIoKGV2ZW50OiBhbnkpID0+IGV2ZW50ICYmIGV2ZW50Lm5hbWVJZGVudGlmaWVyKVxuICAgICAgICAgICAgLm1hcCgoZXZlbnQ6IGFueSkgPT4gKHsgbmFtZTogZXZlbnQubmFtZUlkZW50aWZpZXIgfSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFwR2xvYmFsSXRlbXMocHJvcHM6IGFueSk6IGFueSB7XG4gICAgICAgIC8vIEZ1ZW50ZSBwcmluY2lwYWwgZGUgaXRlbXNcbiAgICAgICAgY29uc3QgcmF3SXRlbXMgPVxuICAgICAgICAgICAgcHJvcHM/Lml0ZW1zID8/XG4gICAgICAgICAgICBwcm9wcz8uSXRlbXMgPz9cbiAgICAgICAgICAgIHByb3BzPy5zZXJ2aWNlc1NlcnZpY2UgPz9cbiAgICAgICAgICAgIHByb3BzPy52ZW50YWphcyA/P1xuICAgICAgICAgICAgcHJvcHMuVmVudGFqYXMgPz9cbiAgICAgICAgICAgIHByb3BzLmFkdmFudGFnZXMgPz9cbiAgICAgICAgICAgIHByb3BzLkFkdmFudGFnZXMgPz9cbiAgICAgICAgICAgIHVuZGVmaW5lZDtcblxuICAgICAgICAvLyBJbnRlbnRhbW9zIG1hcGVhciBpdGVtcyBpbWFnZW5lc1xuICAgICAgICBpZiAoIXJhd0l0ZW1zICYmIHByb3BzPy5tdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBjb25zdCBtYXBwZWRJbWcgPSB0aGlzLm1hcEltYWdlcyhwcm9wcz8ubXVsdGltZWRpYSk7XG4gICAgICAgICAgICBpZiAobWFwcGVkSW1nICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWFwcGVkSW1nLmltYWdlbmVzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW50ZW50YW1vcyBtYXBlYXIgaXRlbXMgZXhwZXJpZW5jaWFzXG4gICAgICAgIGlmICghcmF3SXRlbXMgJiYgcHJvcHM/LmV4cGVyaWVuY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hcHBlZEl0ZW1zID0gdGhpcy5tYXBJdGVtcyhwcm9wcz8uZXhwZXJpZW5jZSk7XG4gICAgICAgICAgICBpZiAobWFwcGVkSXRlbXMgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtYXBwZWRJdGVtcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vSW50ZW50YW1vcyBtYXBlYXIgaXRlbXMg4oCcbm9ybWFsZXPigJ1cbiAgICAgICAgY29uc3QgbWFwcGVkSXRlbXMgPSB0aGlzLm1hcEl0ZW1zKHJhd0l0ZW1zKTtcbiAgICAgICAgaWYgKG1hcHBlZEl0ZW1zICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBwZWRJdGVtcztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNpIG5vIGhheSBpdGVtcywgcHJvYmFtb3MgY29uIHJvb21zXG4gICAgICAgIGNvbnN0IG1hcHBlZFJvb21zID0gdGhpcy5tYXBSb29tRGV0YWlscyhwcm9wcz8ucm9vbXMpO1xuICAgICAgICBpZiAobWFwcGVkUm9vbXMgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG1hcHBlZFJvb21zO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gb2ZmZXJzXG4gICAgICAgIGNvbnN0IG1hcHBlZE9mZmVycyA9IHRoaXMubWFwT2ZmZXJzR2xvYmFsKHByb3BzPy5vZmZlcnMpO1xuICAgICAgICBpZiAobWFwcGVkT2ZmZXJzICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBwZWRPZmZlcnM7XG4gICAgICAgIH1cblxuICAgICAgICAvLyA1KSBob3RlbGVzXG4gICAgICAgIHJldHVybiB0aGlzLm1hcEhvdGVsc0dsb2JhbChwcm9wcz8uaG90ZWxzKTtcbiAgICB9XG5cbiAgICBtYXBBZGRyZXNzKGFkZHJlc3M6IGFueSB8IGFueVtdIHwgdW5kZWZpbmVkKTogQmFieWxvbkFkZHJlc3NJdGVtW10ge1xuICAgICAgICBpZiAoIWFkZHJlc3MpIHJldHVybiBbXTtcblxuICAgICAgICBjb25zdCBsaXN0ID0gQXJyYXkuaXNBcnJheShhZGRyZXNzKSA/IGFkZHJlc3MgOiBbYWRkcmVzc107XG5cbiAgICAgICAgcmV0dXJuIGxpc3QubWFwKChhOiBhbnkpID0+ICh7XG4gICAgICAgICAgICBpZDogYT8uaWQsXG4gICAgICAgICAgICBuYW1lOiBhPy5uYW1lLFxuICAgICAgICAgICAgYWRkcmVzczogYT8uYWRkcmVzcyxcbiAgICAgICAgICAgIGNpdHk6IGE/LmNpdHksXG4gICAgICAgICAgICBsb2NhbGl0eTogYT8ubG9jYWxpdHksXG4gICAgICAgICAgICBwcm92aW5jZTogYT8ucHJvdmluY2UsXG4gICAgICAgICAgICBjb3VudHJ5OiBhPy5jb3VudHJ5LFxuICAgICAgICAgICAgY3A6IGE/LmNwLFxuICAgICAgICAgICAgdXJsOiBhPy5saW5rLFxuICAgICAgICAgICAgcGhvbmU6IGE/LnBob25lLFxuICAgICAgICAgICAgcGhvbmUyOiBhPy5waG9uZTIsXG4gICAgICAgICAgICBlbWFpbDogYT8uZW1haWwsXG4gICAgICAgICAgICBmdWxsX2FkZHJlc3M6IGE/LmZ1bGxBZGRyZXNzLFxuICAgICAgICAgICAgbGF0OiBhPy5sYXQsXG4gICAgICAgICAgICBsb246IGE/LmxvbixcbiAgICAgICAgICAgIGxpbms6IGE/LmxpbmssXG4gICAgICAgICAgICBzbHVnczogYT8uc2x1Z3MsXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBtYXBTdGF0aWNGb290ZXJ2Myhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblN0YXRpY0Zvb3Rlckkge1xuICAgICAgICByZXR1cm4ge30gYXMgYW55O1xuICAgIH1cblxuICAgIG1hcEdsb2JhbFNlcnZpY2VzKFxuICAgICAgICBzZXJ2aWNlczogQmFieWxvbkdsb2JhbEljb25JW10gfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uR2xvYmFsSWNvbklbXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBzZXJ2aWNlcz8ubWFwKFxuICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi1gICsgaXRlbT8uY2xhc3MsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogaXRlbT8udHlwZSxcbiAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uR2xvYmFsSWNvbklcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBtYXBDb250YWN0SW5mbyh0ZXh0czogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkNvbnRhY3RJbmZvSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgbm90ZTogdGV4dHM/Lm5vdGUsXG4gICAgICAgICAgICB0ZXh0OiB0ZXh0cz8udGV4dCxcbiAgICAgICAgICAgIGljb246IHRleHRzPy5pY29uLFxuICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBjb25kaXRpb25zOiB0ZXh0cz8uY29uZGl0aW9ucyxcbiAgICAgICAgICAgIGNvbmRpdGlvbnMyOiB0ZXh0cz8uY29uZGl0aW9uczIsXG4gICAgICAgICAgICBkcm9wZG93blBsYWNlaG9sZGVyOiB0ZXh0cz8uZHJvcGRvd25QbGFjZWhvbGRlcixcbiAgICAgICAgICAgIGRyb3Bkb3duVGl0bGU6IHRleHRzPy5kcm9wZG93blRpdGxlLFxuICAgICAgICAgICAgaG90ZWxEcm9wVGl0bGU6IHRleHRzPy5ob3RlbERyb3BUaXRsZSxcbiAgICAgICAgICAgIGhvdGVsRHJvcFBsYWNlaG9sZGVyOiB0ZXh0cz8uaG90ZWxEcm9wUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICBob3RlbERyb3BFcnJvcjogdGV4dHM/LmhvdGVsRHJvcEVycm9yLFxuICAgICAgICAgICAgZXJyb3JFbWFpbDogdGV4dHM/LmVycm9yRW1haWwsXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2U6IHRleHRzPy5lcnJvck1lc3NhZ2UsXG4gICAgICAgICAgICBlcnJvck5hbWU6IHRleHRzPy5lcnJvck5hbWUsXG4gICAgICAgICAgICBlcnJvclBob25lOiB0ZXh0cz8uZXJyb3JQaG9uZSxcbiAgICAgICAgICAgIGVycm9yUmVxdWlyZWQ6IHRleHRzPy5lcnJvclJlcXVpcmVkLFxuICAgICAgICAgICAgaW5wdXRFbWFpbDogdGV4dHM/LmlucHV0RW1haWwsXG4gICAgICAgICAgICBpbnB1dEVtYWlsUGxhY2VIb2xkZXI6IHRleHRzPy5pbnB1dEVtYWlsUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICBpbnB1dE1lc3NhZ2U6IHRleHRzPy5pbnB1dE1lc3NhZ2UsXG4gICAgICAgICAgICBpbnB1dE1lc3NhZ2VQbGFjZUhvbGRlcjogdGV4dHM/LmlucHV0TWVzc2FnZVBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgaW5wdXROYW1lOiB0ZXh0cz8uaW5wdXROYW1lLFxuICAgICAgICAgICAgaW5wdXROYW1lUGxhY2VIb2xkZXI6IHRleHRzPy5pbnB1dE5hbWVQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIGlucHV0UGhvbmU6IHRleHRzPy5pbnB1dFBob25lLFxuICAgICAgICAgICAgaW5wdXRQaG9uZVBsYWNlSG9sZGVyOiB0ZXh0cz8uaW5wdXRQaG9uZVBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgaW5wdXRsYXN0bmFtZTogdGV4dHM/LmlucHV0bGFzdG5hbWUsXG4gICAgICAgICAgICBpbnB1dGxhc3RuYW1lUGxhY2VIb2xkZXI6IHRleHRzPy5pbnB1dGxhc3RuYW1lUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICBpbnB1dFN1cm5hbWVzOiB0ZXh0cz8uaW5wdXRTdXJuYW1lcyxcbiAgICAgICAgICAgIGlucHV0U3VybmFtZXNQbGFjZUhvbGRlcjogdGV4dHM/LmlucHV0U3VybmFtZXNQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIG1hbmRhdG9yeXRleHQ6IHRleHRzPy5tYW5kYXRvcnl0ZXh0LFxuICAgICAgICAgICAgcmVxdWlyZWRGaWVsZHNMYWJlbDogdGV4dHM/LnJlcXVpcmVkRmllbGRzTGFiZWwsXG4gICAgICAgICAgICBsYW5nXzE6IHRleHRzPy5sYW5nMSxcbiAgICAgICAgICAgIGxhbmdfMjogdGV4dHM/LmxhbmcyLFxuICAgICAgICAgICAgbGFuZ18zOiB0ZXh0cz8ubGFuZzMsXG4gICAgICAgICAgICBsYW5nXzQ6IHRleHRzPy5sYW5nNCxcbiAgICAgICAgICAgIG5hdGl2bzogdGV4dHM/Lm5hdGl2byxcbiAgICAgICAgICAgIGJhc2ljbzogdGV4dHM/LmJhc2ljbyxcbiAgICAgICAgICAgIGZsdWlkbzogdGV4dHM/LmZsdWlkbyxcbiAgICAgICAgICAgIGludGVybWVkaW86IHRleHRzPy5pbnRlcm1lZGlvLFxuICAgICAgICAgICAgaW5wdXREaXNwb25pYmlsaXR5OiB0ZXh0cz8uaW5wdXREaXNwb25pYmlsaXR5LFxuICAgICAgICAgICAgaW5wdXRMYW5ndWFnZXM6IHRleHRzPy5pbnB1dExhbmd1YWdlcyxcbiAgICAgICAgICAgIGN2SW5wdXQ6IHRleHRzPy5jdklucHV0LFxuICAgICAgICAgICAgU2VsZWN0SXRlbVRleHQ6IHRleHRzPy5TZWxlY3RJdGVtVGV4dCxcbiAgICAgICAgICAgIGFkZExhbmc6IHRleHRzPy5hZGRMYW5nLFxuICAgICAgICB9IGFzIEJhYnlsb25Db250YWN0SW5mb0k7XG4gICAgfVxuICAgIG1hcEV2ZW50c0dsb2JhbChldmVudHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25JdGVtSVtdIHtcbiAgICAgICAgcmV0dXJuIGV2ZW50cz8ubWFwKFxuICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0/Lm5hbWUgPz8gaXRlbT8ubmFtZV9pZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMzogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25zOiBpdGVtLnRleHRzPy5jb25kaXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtLnRleHRzPy5yZXNlcnZhdGlvblVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUF0OiBpdGVtLnRleHRzPy5jcmVhdGVBdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRBdDogaXRlbS50ZXh0cz8udXBkYXRlZEF0LFxuICAgICAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25UZXh0SW5mb0ksXG4gICAgICAgICAgICAgICAgICAgIHVybDogaXRlbT8udXJsLFxuICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JdGVtSVxuICAgICAgICApO1xuICAgIH1cbiAgICBtYXBPZmZlcnNHbG9iYWwob2ZmZXJzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uT2ZmZXJJdGVtSVtdIHtcbiAgICAgICAgcmV0dXJuIG9mZmVycz8ubWFwKFxuICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkZyb206IGl0ZW0/LmFwcGxpY2F0aW9uRnJvbSxcbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25UbzogaXRlbT8uYXBwbGljYXRpb25UbyxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgY3VycmVuY3k6IGl0ZW0/LmN1cnJlbmN5LFxuICAgICAgICAgICAgICAgICAgICBkaXNjb3VudDogaXRlbT8uZGlzY291bnQsXG4gICAgICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtPy5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWxGcm9tOiBpdGVtPy5sYWJlbEZyb20sXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYTogdGhpcy5tYXBNdWx0aW1lZGlhKGl0ZW0/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbnM6IGl0ZW0udGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25zVGl0bGU6IGl0ZW0udGV4dHM/LmNvbmRpdGlvbnNUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXRlbS50ZXh0cz8ucmVzZXJ2YXRpb25VcmwsXG4gICAgICAgICAgICAgICAgICAgIH0gYXMgQmFieWxvblRleHRJbmZvSSxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtPy51cmwsXG4gICAgICAgICAgICAgICAgICAgIHZpc2libGVGcm9tOiBpdGVtPy52aXNpYmxlRnJvbSxcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZVRvOiBpdGVtPy52aXNpYmxlVG8sXG4gICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbk9mZmVySVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG1hcEFkdmFudGFnZXNHbG9iYWwoYWR2YW50YWdlczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkFkdmFudGFnZUl0ZW1JW10ge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYWR2YW50YWdlcykpIHJldHVybiBbXTtcbiAgICAgICAgcmV0dXJuIGFkdmFudGFnZXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSA/PyBpdGVtPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBpY29uOiBpdGVtPy5pY29uID8gYGljb24tJHtpdGVtLmljb259YCA6IGl0ZW0/Lmljb24sXG4gICAgICAgICAgICB0ZXh0OiBpdGVtPy50ZXh0ID8/IGl0ZW0/LnRleHRzPy50ZXh0ID8/IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHN1YnRpdGxlOlxuICAgICAgICAgICAgICAgIGl0ZW0/LnN1YnRpdGxlID8/XG4gICAgICAgICAgICAgICAgaXRlbT8udGV4dHM/LnN1YnRpdGxlID8/XG4gICAgICAgICAgICAgICAgaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgaXRlbT8uZGVzY3JpcHRpb24gPz9cbiAgICAgICAgICAgICAgICBpdGVtPy50ZXh0cz8uZGVzY3JpcHRpb24gPz9cbiAgICAgICAgICAgICAgICBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICBhZGRpdGlvbmFsMTogaXRlbT8uYWRkaXRpb25hbDEgPz8gaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgYWRkaXRpb25hbDI6IGl0ZW0/LmFkZGl0aW9uYWwyID8/IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBpdGVtPy5hZGRpdGlvbmFsMyA/PyBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICB0ZXh0czogaXRlbT8udGV4dHMgPyB0aGlzLm1hcEdsb2JhbFRleHRzKGl0ZW0udGV4dHMpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgdXJsOiBpdGVtLmxpbmtWYWx1ZSA/PyBpdGVtLnVybCxcbiAgICAgICAgICAgIGxpbmtUeXBlOiBpdGVtLmxpbmtUeXBlLFxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgbWFwSXRlbXMoaXRlbXM6IGFueSk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpdGVtcykpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGl0ZW1zID0gaXRlbXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgbGFiZWw6IGl0ZW0/LnRpdGxlID8/IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8udGV4dCA/PyBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHRleHRzOlxuICAgICAgICAgICAgICAgIGl0ZW0/LnRleHRzID8/XG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25UZXh0SW5mb0kpLFxuICAgICAgICAgICAgbXVsdGltZWRpYTogdGhpcy5tYXBJbWFnZXMoaXRlbT8ubXVsdGltZWRpYSksXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICBpY29uOiBgaWNvbi1gICsgKGl0ZW0uaWNvbiA/PyBpdGVtLmNsYXNzKSxcbiAgICAgICAgICAgIHR5cGU6IGl0ZW0/LnR5cGUsXG4gICAgICAgICAgICBuYW1lSWRlbnRpZmllcjogaXRlbT8ubmFtZUlkZW50aWZpZXIsXG4gICAgICAgICAgICB1cmw6IGl0ZW0/LnVybCxcbiAgICAgICAgfSkpO1xuICAgICAgICByZXR1cm4gaXRlbXMgYXMgQmFieWxvbkl0ZW1JO1xuICAgIH1cblxuICAgIG1hcEdsb2JhbHNGYXFzKHJhdzogYW55KTogQmFieWxvbkdsb2JhbHNGYXFHcm91cFtdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHJhdykgfHwgcmF3Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCBpc0dyb3VwZWQgPSByYXcuc29tZShcbiAgICAgICAgICAgICh4KSA9PiB4ICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiBBcnJheS5pc0FycmF5KHguaXRlbXMpXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgZ3JvdXBzOiBBcnJheTx7IGxpc3RJZDogbnVtYmVyOyBpdGVtczogYW55W10gfT4gPSBpc0dyb3VwZWRcbiAgICAgICAgICAgID8gcmF3Lm1hcCgoZzogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgbGlzdElkOiBOdW1iZXIoZz8ubGlzdElkID8/IDEpLFxuICAgICAgICAgICAgICAgICAgaXRlbXM6IEFycmF5LmlzQXJyYXkoZz8uaXRlbXMpID8gZy5pdGVtcyA6IFtdLFxuICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgIDogW3sgbGlzdElkOiAxLCBpdGVtczogcmF3IH1dO1xuXG4gICAgICAgIGNvbnN0IG1hcHBlZEdyb3VwczogQmFieWxvbkdsb2JhbHNGYXFHcm91cFtdID0gZ3JvdXBzXG4gICAgICAgICAgICAubWFwKChnKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWFwcGVkSXRlbXMgPSAoZy5pdGVtcyB8fCBbXSlcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8udGl0bGUgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5xdWVzdGlvbiA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm5hbWUgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5sYWJlbCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnRleHQgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5hbnN3ZXIgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5kZXNjcmlwdGlvbiA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxhYmVsICYmICFkZXNjcmlwdGlvbikgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnRleHRzID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogaXRlbT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uVGV4dEluZm9JKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhOiB0aGlzLm1hcEltYWdlcyhpdGVtPy5tdWx0aW1lZGlhKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lmljb24gfHwgaXRlbT8uY2xhc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gU3RyaW5nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5pY29uID8/IGl0ZW0uY2xhc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5zdGFydHNXaXRoKCdpY29uLScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBTdHJpbmcoaXRlbS5pY29uID8/IGl0ZW0uY2xhc3MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBgaWNvbi0ke2l0ZW0uaWNvbiA/PyBpdGVtLmNsYXNzfWBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0/LmlkID8/IGl0ZW0/LmZhcUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyB1bmtub3duIGFzIEJhYnlsb25JdGVtSTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKSBhcyBCYWJ5bG9uSXRlbUlbXTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGxpc3RJZDogZy5saXN0SWQgfHwgMSxcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IG1hcHBlZEl0ZW1zLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmZpbHRlcigoZykgPT4gZy5pdGVtcy5sZW5ndGggPiAwKTtcblxuICAgICAgICByZXR1cm4gbWFwcGVkR3JvdXBzLmxlbmd0aCA/IG1hcHBlZEdyb3VwcyA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBNdWx0aW1lZGlhKGltYWdlc0FycmF5OiBhbnkgfCB1bmRlZmluZWQpOiBhbnkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpbWFnZXNBcnJheSkgJiYgaW1hZ2VzQXJyYXkubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gaW1hZ2VzQXJyYXlcbiAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT4gaXRlbT8uYWN0aXZlID09PSB0cnVlKVxuICAgICAgICAgICAgICAgID8ubWFwKChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGFsdDogaXRlbT8uYWx0LFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiBpdGVtPy5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIHRhZzogaXRlbT8udGFncyxcbiAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogaXRlbT8uYWx0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbmRUaXRsZTogaXRlbT8ubmRUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5kU3VidGl0bGU6IGl0ZW0/Lm5kU3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwSW1hZ2VzKG11bHRpbWVkaWE6IGFueSB8IHVuZGVmaW5lZCk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGltYWdlbjogdGhpcy5tYXBNdWx0aW1lZGlhKG11bHRpbWVkaWE/LmltYWdlbiksXG4gICAgICAgICAgICAgICAgaW1hZ2VuZXM6IHRoaXMubWFwTXVsdGltZWRpYShcbiAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYT8uaW1hZ2VuZXMgPz8gbXVsdGltZWRpYVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgaW1hZ2VuZXNjb250ZXh0OiB0aGlzLm1hcE11bHRpbWVkaWEoXG4gICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE/LmltYWdlbmVzY29udGV4dFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgaW1hZ2VuZXNwZXF1ZWFzOiB0aGlzLm1hcE11bHRpbWVkaWEoXG4gICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE/LmltYWdlbmVzcGVxdWVhc1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgbW9iaWxlSW1hZ2VuZXM6IHRoaXMubWFwTXVsdGltZWRpYShtdWx0aW1lZGlhPy5pbWFnZW5lc21vYmlsZSksXG4gICAgICAgICAgICAgICAgc3RhdGljSW1hZ2VuZXM6IHRoaXMubWFwTXVsdGltZWRpYShcbiAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYT8uc3RhdGljaW1hZ2VuZXMgPz8gbXVsdGltZWRpYT8uc3RhdGljaW1hZ2VcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIG1haW5pbWFnZW5lczogdGhpcy5tYXBNdWx0aW1lZGlhKG11bHRpbWVkaWE/Lm1haW5pbWFnZW5lcyksXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZGltYWdlOiB0aGlzLm1hcE11bHRpbWVkaWEoXG4gICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE/LmJhY2tncm91bmRpbWFnZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgbG9nbzogdGhpcy5tYXBNdWx0aW1lZGlhKG11bHRpbWVkaWE/LmxvZ28pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcFJvb21EZXRhaWxzKHJvb21zOiBhbnkgfCB1bmRlZmluZWQpOiBhbnkge1xuICAgICAgICBsZXQgYXJyYXk6IGFueVtdID0gcm9vbXM/Lmxlbmd0aCA/IHJvb21zIDogW3Jvb21zXTtcblxuICAgICAgICByZXR1cm4gYXJyYXlcbiAgICAgICAgICAgID8uZmlsdGVyKFxuICAgICAgICAgICAgICAgIChyb29tOiBhbnksIGluZGV4OiBudW1iZXIsIHNlbGY6IGFueVtdKSA9PlxuICAgICAgICAgICAgICAgICAgICBzZWxmPy5maW5kSW5kZXgoKHIpID0+IHI/LmlkID09PSByb29tPy5pZCkgPT09IGluZGV4XG4gICAgICAgICAgICApXG4gICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXRlbT8uYnV0dG9ucz8uc2xpY2UoKS5yZXZlcnNlKCkgVE9ETzogXCIuc2xpY2UoKS5yZXZlcnNlKClcIiAgZXN0byBzZSBoYWNlIGVuIGVsIGNvbXBvbmVudGUgcXVlIGxvIHVzZSAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGltZ1Jlc3AgPSB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltZzogYW55KSA9PiBpbWc/LmNvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHx8IGl0ZW0/Lm11bHRpbWVkaWE/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9yZGVyID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltZzogYW55KSA9PiBpbWc/LmNvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApPy5vcmRlciA/PyBpdGVtPy5tdWx0aW1lZGlhPy5bMF0/Lm9yZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW1nUmVzcCAmJiB0eXBlb2YgaW1nUmVzcCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLmltZ1Jlc3AsIG9yZGVyIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpbWc6IGltZ1Jlc3AsIG9yZGVyIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZW5lczogaXRlbT8ubXVsdGltZWRpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoaW1nOiBhbnkpID0+IGltZy5hY3RpdmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubWFwKChpbWc6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0czogaW1nLnRleHRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZzogaW1nLnRhZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpbWcuYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaW1nLmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGltZy5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogaXRlbT8ubXVsdGltZWRpYT8udmlkZW8/LnNyYyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBpdGVtPy5tdWx0aW1lZGlhPy52aWRlbz8uc3JjXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3ZpZGVvL21wNCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtPy50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWRzOiBpdGVtPy50ZXh0cz8uYmVkcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjogaXRlbT8udGV4dHM/LmxvY2F0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDE6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDQ6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaXRlbT8ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJpc3RpY3M6IEFycmF5LmlzQXJyYXkoaXRlbT8uc2VydmljZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpdGVtPy5zZXJ2aWNlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChzdmM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2Ygc3ZjLnR5cGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzdmMudHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnRyaW0oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFjZXB0YSB0YW50byAnZXF1aXBtZW50JyBjb21vICdjaGFyYWN0ZXJpc3RpY3MnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc1ZhbGlkVHlwZSA9IHR5cGVzLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9vbVNlcnZpY2VUeXBlLmNoYXJhY3RlcmlzdGljc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYXNWYWxpZFR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKChzdmM6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogc3ZjPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBzdmM/LmNsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGBpY29uLSR7c3ZjPy5jbGFzc31gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXF1aXBtZW50czogQXJyYXkuaXNBcnJheShpdGVtPy5zZXJ2aWNlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGl0ZW0/LnNlcnZpY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKHN2YzogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBzdmMudHlwZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHN2Yy50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKCh0OiBzdHJpbmcpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQudHJpbSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogW107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWNlcHRhIHRhbnRvICdlcXVpcG1lbnQnIGNvbW8gJ2NoYXJhY3RlcmlzdGljcydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzVmFsaWRUeXBlID0gdHlwZXMuaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb29tU2VydmljZVR5cGUuRXF1aXBtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc1ZhbGlkVHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHN2YzogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBzdmM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IHN2Yz8uY2xhc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYGljb24tJHtzdmM/LmNsYXNzfWBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogW10sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Sb29tSW5mb0lcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIG1hcDQwNChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbjQwNEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHN1YnRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uc3VidGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy5jb250YWluLFxuXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uNDA0STtcbiAgICB9XG5cbiAgICAvLy0tLS0gTEFZT1VUIENPTVBPTkVOVFMgLS0tLS8vXG4gICAgbWFwVG9wU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uVG9wU2xpZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGFsbEltYWdlcyA9IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyA/PyBbXTtcbiAgICAgICAgY29uc3QgcmF3TW91c2V1cCA9IHByb3BzPy50ZXh0cz8ubW91c2V1cCA/PyBwcm9wcz8udGV4dHM/Lm1vdXNlVXA7XG4gICAgICAgIGNvbnN0IG1vdXNldXAgPSB0aGlzLmdldFRleHRWYWx1ZShyYXdNb3VzZXVwKTtcblxuICAgICAgICBjb25zdCBpbWFnZXNXaXRoVGFnID0gYWxsSW1hZ2VzLmZpbHRlcihcbiAgICAgICAgICAgIChpbWFnZTogYW55KSA9PlxuICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoaW1hZ2U/LnRhZ3MpICYmXG4gICAgICAgICAgICAgICAgaW1hZ2UudGFncy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAodGFnOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAodHlwZW9mIHRhZyA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcuaW5jbHVkZXMoJ1RvcFNsaWRlcicpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiB0YWcgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnPy5uYW1lPy5pbmNsdWRlcygnVG9wU2xpZGVyJykpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGltYWdlcyA9IGltYWdlc1dpdGhUYWcubGVuZ3RoID8gaW1hZ2VzV2l0aFRhZyA6IGFsbEltYWdlcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzKSxcbiAgICAgICAgICAgIGl0ZW1zOiBpbWFnZXM/Lmxlbmd0aFxuICAgICAgICAgICAgICAgID8gaW1hZ2VzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtLnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnN1YnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltYWdlcz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpbWFnZXM/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltYWdlcywgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGltYWdlcz8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGltYWdlcz8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgaXRlbXNNb2JpbGU6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lc21vYmlsZT8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uVG9wU2xpZGVySXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvPy5bMF0sIGZhbHNlKSxcbiAgICAgICAgICAgIGxvZ29UaXRsZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmxvZ290aXRsZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdmlkZW9EYXRhOiB7XG4gICAgICAgICAgICAgICAgLy8gdGl0bGU6IHByb3BzPy52aWRlbz8udGl0bGUsXG4gICAgICAgICAgICAgICAgc3JjOiBwcm9wcz8udGV4dHM/LnZpZGVvLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd2aWRlby9tcDQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1vdXNldXAsXG4gICAgICAgIH0gYXMgQmFieWxvblRvcFNsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwVG9wU2xpZGVyVmlkZW8oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uVG9wU2xpZGVyVmlkZW9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZpZGVvRGF0YToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udmlkZW8/LnRpdGxlLFxuICAgICAgICAgICAgICAgIHNyYzogcHJvcHM/LnZpZGVvPy5zcmMsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3ZpZGVvL21wNCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc21hbGxWaWRlb0RhdGE6IHByb3BzPy52aWRlbz8ubW9iaWxlXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy52aWRlbz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgc3JjOiBwcm9wcz8udmlkZW8/Lm1vYmlsZSxcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndmlkZW8vbXA0JyxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGxhYmVsSW5mb3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbW9iaWxlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWdUZXh0czoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2Vtb2JpbGU/LlswXS5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbW9iaWxlPy5bMF0udGl0bGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICB9IGFzIEJhYnlsb25Ub3BTbGlkZXJWaWRlb0k7XG4gICAgfVxuXG4gICAgbWFwVG9wU2xpZGVyVjIoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHJpZ2h0U2lkZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgKTogQmFieWxvblRvcFNsaWRlclYySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBwcm9wc1xuICAgICAgICAgICAgPyAoe1xuICAgICAgICAgICAgICAgICAgcmlnaHRTaWRlOiByaWdodFNpZGUsXG4gICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25TbGlkZXI0Y29sTGFiZWxzXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9IGFzIEJhYnlsb25Ub3BTbGlkZXJWMkkpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBJbmZvSW1nKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICByaWdodFNpZGU6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICAgICAgdGV4dENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgIGlkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25JbmZvSW1nSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICAgICAgcmlnaHRTaWRlOiByaWdodFNpZGUsXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgYnV0dG9uczogcHJvcHM/LmJ1dHRvbnNcbiAgICAgICAgICAgICAgICA/IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT4gbGluaz8ubGlua1ZhbHVlICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbnRhaW4sXG4gICAgICAgICAgICB0ZXh0OlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uc3VidGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgbmR0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5uZHRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ubmR0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ubmR0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGxlc3NCdG46IHByb3BzPy50ZXh0cz8uc2VlTGVzcyxcbiAgICAgICAgICAgIG1vcmVCdG46IHByb3BzPy50ZXh0cz8uc2VlTW9yZSxcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMgPz8gcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlcyxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGFkdmFudGFnZXM6IHByb3BzPy5WZW50YWphcz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/LnRpdGxlIHx8IGl0ZW0/LnRleHRcbiAgICAgICAgICAgICk/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICBpY29uOiBpdGVtLmljb24gPyBgaWNvbi0ke2l0ZW0uaWNvbn1gIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgbG9nbzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmxvZ28/LlswXSwgZmFsc2UpLFxuICAgICAgICAgICAgYWR2VGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGV4dCA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRleHRcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRleHQ/LmNvbnRhaW4sXG4gICAgICAgICAgICB0b3BCRzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LnRvcGJnPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBib3R0b21CRzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJvdHRvbWJnPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0b3BDb2xvcjogcHJvcHM/LnRleHRzPy50b3BDb2xvcixcbiAgICAgICAgICAgIGJvdHRvbUNvbG9yOiBwcm9wcz8udGV4dHM/LkJvdHRvbUNvbG9yLFxuICAgICAgICAgICAgdGV4dENvbG9yOiB0ZXh0Q29sb3IsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbj8udGFnLFxuICAgICAgICAgICAgICAgIG5kdGl0bGU6IHByb3BzPy50ZXh0cz8ubmR0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGFkdlRpdGxlOiBwcm9wcz8udGV4dHM/LnRleHQ/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbj8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm9JbWdJO1xuICAgIH1cblxuICAgIG1hcEluZm9JbWdTbGlkZXIoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHJpZ2h0U2lkZTogYm9vbGVhbiA9IGZhbHNlLFxuICAgICAgICBpZGVudGlmaWVyOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uSW5mb0ltZ1NsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICAvLyBUT0RPOiBhZGQgdG9wQkcsIGJvdHRvbUJHXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICAgICAgcmlnaHRTaWRlOiByaWdodFNpZGUsXG4gICAgICAgICAgICB0b3BDb2xvcjogcHJvcHM/LnRleHRzPy50b3BDb2xvcixcbiAgICAgICAgICAgIGJvdHRvbUNvbG9yOiBwcm9wcz8udGV4dHM/LmJvdHRvbUNvbG9yLFxuICAgICAgICAgICAgbGVzc0J0bjogcHJvcHM/LnRleHRzPy5zZWVMZXNzLFxuICAgICAgICAgICAgbW9yZUJ0bjogcHJvcHM/LnRleHRzPy5zZWVNb3JlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBuZHRpdGxlOiBpdGVtPy5uZF90aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSW5mb0ltZ1NsaWRlckl0ZW1JXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvSW1nU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBJbmZvSW50cm8ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25JbmZvSW50cm9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbiA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbj8uY29udGFpbixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMgPz8gcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdG9wQkc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy50b3BiZz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYm90dG9tQkc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5ib3R0b21iZz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdG9wQ29sb3I6IHByb3BzPy50ZXh0cz8udG9wQ29sb3IsXG4gICAgICAgICAgICBib3R0b21Db2xvcjogcHJvcHM/LnRleHRzPy5Cb3R0b21Db2xvcixcbiAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvPy5bMF0sIGZhbHNlKSxcbiAgICAgICAgICAgIGxvZ28yOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8ubG9nbzI/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uTW9kYWw6IHByb3BzPy50ZXh0cz8ucG9wdXBtb2RhbCxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb0ludHJvSTtcbiAgICB9XG5cbiAgICBtYXBIZWFkZXIoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG1lbnU6IGFueSxcbiAgICAgICAgaGVhZGVyOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOlxuICAgICAgICB8IEJhYnlsb25IZWFkZXJCb29rU2hvd0lcbiAgICAgICAgfCBCYWJ5bG9uSGVhZGVyQ2xlYXJJXG4gICAgICAgIHwgQmFieWxvbkhlYWRlck1lbnVDZW50ZXJJXG4gICAgICAgIHwgQmFieWxvbkhlYWRlck1lbnVMb2dvQ2VudGVySVxuICAgICAgICB8IEJhYnlsb25IZWFkZXJNZW51U2hvd0kge1xuICAgICAgICBjb25zdCBsaW5rID0gbWVudT8ubGlua3M/LmxvZ29MaW5rPy5mbGF0KCk/LlswXTtcbiAgICAgICAgY29uc3QgaGVhZGVyQnV0dG9ucyA9IHByb3BzO1xuICAgICAgICBjb25zdCBidXR0b25zID0gVXRpbHMubWFwQnV0dG9ucyhtZW51Py5idXR0b25zID8/IFtdKTtcbiAgICAgICAgY29uc3QgaGVhZGVyQnV0dG9uc01vZGFsQnV0dG9ucyA9IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICBoZWFkZXJCdXR0b25zPy5idXR0b25zID8/IFtdXG4gICAgICAgICk/LmZpbHRlcigoYnV0dG9uKSA9PiAhIWJ1dHRvbi5sYWJlbCAmJiAhIWJ1dHRvbi51cmwpO1xuICAgICAgICBjb25zdCBoZWFkZXJCdXR0b25zTW9kYWxJbWFnZSA9XG4gICAgICAgICAgICBoZWFkZXJCdXR0b25zPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdID8/XG4gICAgICAgICAgICBoZWFkZXJCdXR0b25zPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdID8/XG4gICAgICAgICAgICBoZWFkZXJCdXR0b25zPy5tdWx0aW1lZGlhPy5pbWFnZXM/LlswXTtcbiAgICAgICAgY29uc3QgaGVhZGVyQnV0dG9uc01vZGFsVGl0bGUgPVxuICAgICAgICAgICAgaGVhZGVyQnV0dG9ucz8udGV4dHM/Lm1vZGFsX3RpdGxlID8/XG4gICAgICAgICAgICBoZWFkZXJCdXR0b25zPy50ZXh0cz8ubW9kYWxUaXRsZTtcbiAgICAgICAgY29uc3QgaGVhZGVyQnV0dG9uc01vZGFsSW1hZ2VTcmMgPVxuICAgICAgICAgICAgaGVhZGVyQnV0dG9ucz8udGV4dHM/Lm1vZGFsX2ltZyA/PyBoZWFkZXJCdXR0b25zPy50ZXh0cz8ubW9kYWxJbWc7XG5cbiAgICAgICAgY29uc3QgdGV4dHMgPSBoZWFkZXI/LnRleHRzID8gaGVhZGVyPy50ZXh0cyA6IG1lbnU/LnRleHRzO1xuXG4gICAgICAgIGlmIChoZWFkZXJCdXR0b25zKSB7XG4gICAgICAgICAgICB0aGlzLmZsb2F0aW5nQnV0dG9ucyA9IHtcbiAgICAgICAgICAgICAgICB0ZXh0czogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgYmFieWxvbi0ke2hlYWRlckJ1dHRvbnMudGV4dHM/LnRyYW5zZmVySWNvbn1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGhlYWRlckJ1dHRvbnM/LnRleHRzPy50cmFuc2ZlcixcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGJhYnlsb24tJHtoZWFkZXJCdXR0b25zLnRleHRzPy5jaGVja2luSWNvbn1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGhlYWRlckJ1dHRvbnM/LnRleHRzPy5jaGVja2luLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgYmFieWxvbi0ke2hlYWRlckJ1dHRvbnMudGV4dHM/LndoYXRzYXBwfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogaGVhZGVyQnV0dG9ucz8udGV4dHM/LndoYXRzYXBwLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgdGV4dHNCdXR0b25zOiB7XG4gICAgICAgICAgICAgICAgICAgIG1lbnVUZXh0OlxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQnV0dG9ucz8udGV4dHM/Lm1lbnV0ZXh0ID8/XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJCdXR0b25zPy50ZXh0cz8ubWVudVRleHQsXG4gICAgICAgICAgICAgICAgICAgIGJvb2t0ZXh0OlxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQnV0dG9ucz8udGV4dHM/LmJvb2t0ZXh0ID8/XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJCdXR0b25zPy50ZXh0cz8uYm9va1RleHQgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckJ1dHRvbnM/LnRleHRzPy5ib29rTm93LFxuICAgICAgICAgICAgICAgICAgICBhZ2VuY2lhVGV4dDogaGVhZGVyQnV0dG9ucz8udGV4dHM/LmFnZW5jaWEsXG4gICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8ubGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgICAgIG5ld3NsZXR0ZXI6IGhlYWRlckJ1dHRvbnM/LnRleHRzPy5uZXdzbGV0dGVyLFxuICAgICAgICAgICAgICAgICAgICBzaG9wOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8uc2hvcCxcbiAgICAgICAgICAgICAgICAgICAgd2hhdHNhcHA6IGhlYWRlckJ1dHRvbnM/LnRleHRzPy53aGF0c2FwcCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGhlYWRlckJ1dHRvbnM/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICB1c2VyTGluazogVXRpbHMubWFwQnV0dG9ucyhoZWFkZXJCdXR0b25zPy5saW5rcz8udXNlckxpbms/LlswXSksXG4gICAgICAgICAgICB9IGFzIEJhYnlsb25GbG9hdGluZ0J1dHRvbnNJO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbnMsXG4gICAgICAgICAgICBoZWFkZXJCdXR0b25zTW9kYWxCdXR0b25zLFxuICAgICAgICAgICAgaGVhZGVyQnV0dG9uc01vZGFsVGl0bGUsXG4gICAgICAgICAgICBoZWFkZXJCdXR0b25zTW9kYWxJbWFnZTpcbiAgICAgICAgICAgICAgICB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShoZWFkZXJCdXR0b25zTW9kYWxJbWFnZSkgPz9cbiAgICAgICAgICAgICAgICBoZWFkZXJCdXR0b25zTW9kYWxJbWFnZVNyYyxcbiAgICAgICAgICAgIGhlYWRlckZpeGVkOiBmYWxzZSxcbiAgICAgICAgICAgIHRleHRzOiB0ZXh0cyxcbiAgICAgICAgICAgIGZsb2F0aW5nQnV0dG9uczogdGhpcy5mbG9hdGluZ0J1dHRvbnMsXG4gICAgICAgICAgICBsYW5nOiB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmxvY2F0ZT8udG9VcHBlckNhc2UoKSxcbiAgICAgICAgICAgIGJ0bkJvb2s6IHsgbGFiZWw6IGhlYWRlckJ1dHRvbnM/LnRleHRzPy5ib29rTm93IH0sXG4gICAgICAgICAgICBzaG9wOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8uc2hvcFxuICAgICAgICAgICAgICAgID8gYGljb24tJHtoZWFkZXJCdXR0b25zPy50ZXh0cz8uc2hvcH1gXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBuZXdzOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8ubmV3c2xldHRlclxuICAgICAgICAgICAgICAgID8gYGljb24tJHtoZWFkZXJCdXR0b25zPy50ZXh0cz8ubmV3c2xldHRlcn1gXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhoZWFkZXJCdXR0b25zPy5saW5rcyksXG4gICAgICAgICAgICB1c2VyTGluazogVXRpbHMubWFwQnV0dG9ucyhoZWFkZXJCdXR0b25zPy5saW5rcz8udXNlckxpbms/LlswXSksXG4gICAgICAgICAgICBsaW5rTG9nbzoge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rPy5sYWJlbCxcbiAgICAgICAgICAgICAgICB1cmw6IGxpbms/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICBsaW5rVHlwZTogbGluaz8ubGlua1R5cGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWVudTogbWVudT8ubmF2Py5tYXAoXG4gICAgICAgICAgICAgICAgKG1lbnU6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG1lbnU/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IG1lbnU/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcnM6IG1lbnU/LmxpbmtWYXJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6IG1lbnU/LmxpbmtUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IG1lbnU/LnRyYW5zbGF0aW9ucz8uWzBdPy5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBtZW51Py50cmFuc2xhdGlvbnM/LlswXT8ubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbWVudT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBtZW51Py5jaGlsZHJlbj8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGlsZDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY2hpbGQ/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGNoaWxkPy5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJzOiBtZW51Py5saW5rVmFycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiBjaGlsZD8ubGlua1R5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogY2hpbGQ/LnRyYW5zbGF0aW9ucz8uWzBdPy5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjaGlsZD8udHJhbnNsYXRpb25zPy5bMF0/Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNoaWxkPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBtZW51Py5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbk1lbnVCdXR0b25JXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbWVudUluZm86IHRoaXMubWFwTWVudShtZW51LCB1bmRlZmluZWQpLFxuICAgICAgICB9IGFzXG4gICAgICAgICAgICB8IEJhYnlsb25IZWFkZXJCb29rU2hvd0lcbiAgICAgICAgICAgIHwgQmFieWxvbkhlYWRlckNsZWFySVxuICAgICAgICAgICAgfCBCYWJ5bG9uSGVhZGVyTWVudUNlbnRlcklcbiAgICAgICAgICAgIHwgQmFieWxvbkhlYWRlck1lbnVMb2dvQ2VudGVySVxuICAgICAgICAgICAgfCBCYWJ5bG9uSGVhZGVyTWVudVNob3dJO1xuICAgIH1cblxuICAgIC8vVE9ETzogV2FpdCBmb3IgYmFjayBpbmZvXG4gICAgbWFwTWVudShcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgc29jaWFsTWVkaWE6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25NZW51SW5mb0kge1xuICAgICAgICBjb25zdCBsaW5rcyA9IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICBwcm9wcz8ubmF2Py5tYXAoKGxpbms6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi5saW5rLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rLnRyYW5zbGF0aW9ucz8uWzBdPy5uYW1lLFxuICAgICAgICAgICAgfSkpXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgY29udGFjdCA9ICgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByYXcgPSBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uY29udGFjdD8uWzBdKTsgLy8gcC5lai4gW3VuZGVmaW5lZCwgdW5kZWZpbmVkXVxuICAgICAgICAgICAgY29uc3QgbGlua3MgPSBBcnJheS5pc0FycmF5KHJhdykgPyByYXcuZmlsdGVyKEJvb2xlYW4pIDogdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICBjb25zdCByYXdUaXRsZSA9XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uY29udGFjdFRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uY29udGFjdFRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5jb250YWN0VGl0bGU/LmNvbnRhaW47XG5cbiAgICAgICAgICAgIGNvbnN0IHRpdGxlID1cbiAgICAgICAgICAgICAgICB0eXBlb2YgcmF3VGl0bGUgPT09ICdzdHJpbmcnICYmIHJhd1RpdGxlLnRyaW0oKS5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyByYXdUaXRsZS50cmltKClcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIGlmICghbGlua3M/Lmxlbmd0aCAmJiAhdGl0bGUpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uKGxpbmtzPy5sZW5ndGggPyB7IGxpbmtzIH0gOiB7fSksXG4gICAgICAgICAgICAgICAgLi4uKHRpdGxlID8geyB0aXRsZSB9IDoge30pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSkoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxpbmtzOiBsaW5rcz8uc2xpY2UoMCwgNiksXG4gICAgICAgICAgICBib3R0b21MaW5rczogbGlua3M/LnNsaWNlKDYpLFxuICAgICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHByb3BzPy5hZGRyZXNzPy5bMF0/LmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgY2l0eTogcHJvcHM/LmFkZHJlc3M/LlswXT8uY2l0eSxcbiAgICAgICAgICAgICAgICBjb3VudHJ5OiBwcm9wcz8uYWRkcmVzcz8uWzBdPy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgIGNwOiBwcm9wcz8uYWRkcmVzcz8uWzBdPy5jcCxcbiAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICBwcm92aW5jZTogcHJvcHM/LmFkZHJlc3M/LlswXT8ucHJvdmluY2UsXG4gICAgICAgICAgICAgICAgdXJsOiBwcm9wcz8uYWRkcmVzcz8uWzBdPy5saW5rLFxuICAgICAgICAgICAgICAgIGxpbmtzOiB7XG4gICAgICAgICAgICAgICAgICAgIHVybDogcHJvcHM/LmFkZHJlc3M/LlswXT8ubGluayxcbiAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdleHRlcm5hbCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb250YWN0OiBjb250YWN0LFxuICAgICAgICAgICAgc29jaWFsTWVkaWE6IHNvY2lhbE1lZGlhPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBiYWJ5bG9uLSR7aXRlbS5uYW1lPy50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0udXJsLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbj8uWzBdID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1nQmFja2dyb3VuZDogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmQ/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGxpbmtMb2dvOiB7XG4gICAgICAgICAgICAgICAgdXJsOiBwcm9wcz8ubGlua3M/LmxvZ29MaW5rPy5bMF0/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICBsaW5rVHlwZTogcHJvcHM/LmxpbmtzPy5sb2dvTGluaz8uWzBdPy5saW5rVHlwZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgY29udGFjdFRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGFkZHJlc3NUaXRsZTogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgY29udGFjdFRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBhZGRyZXNzVGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGltZ3M6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25NZW51SW5mb0k7XG4gICAgfVxuXG4gICAgbWFwSW5mbzJpbWcoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHJpZ2h0U2lkZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgKTogQmFieWxvbkluZm8yaW1nSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByaWdodFNpZGU6IHJpZ2h0U2lkZSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICAgICAgaXRlbTE6IHByb3BzPy50ZXh0cz8uaXRlbTEsXG4gICAgICAgICAgICAgICAgaXRlbTFUZXh0OiBwcm9wcz8udGV4dHM/Lml0ZW0xVGV4dCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltYWdlc3NtYWxsOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXNzbWFsbCxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGFkdmFudGFnZXM6IHByb3BzPy5WZW50YWphcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm8yaW1nSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvMmNvbGltZyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2VcbiAgICApOiBCYWJ5bG9uSW5mbzJDb2xJbWdJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJpZ2h0U2lkZTogcmlnaHRTaWRlLFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc21hbGxpbWFnZTogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uc21hbGxpbWFnZSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mbzJDb2xJbWdJO1xuICAgIH1cblxuICAgIG1hcFppZ3phZyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2UsXG4gICAgICAgIGlkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25JbmZvMmltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgaW1hZ2VzOiAoc3RyaW5nIHwgQmFieWxvbkltYWdlSSlbXSB8IHVuZGVmaW5lZCA9IFtdO1xuICAgICAgICBsZXQgdGV4dHMsIHRhZ3M7XG4gICAgICAgIGlmIChwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMgfHwgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlcykge1xuICAgICAgICAgICAgaW1hZ2VzID0gdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMgPz8gcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlcyxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRleHRzID0ge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgICAgICh0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCksXG4gICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICBjb250ZW50dGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudHRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudHRpdGxlLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50c3VidGl0bGU/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50c3VidGl0bGUsXG4gICAgICAgICAgICAgICAgY29udGVudGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnRkZXNjcmlwdGlvbj8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnRkZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmxvZ28/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGljb25zOiBwcm9wcz8uVmVudGFqYXM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbT8udGl0bGUgfHwgaXRlbT8udGV4dFxuICAgICAgICAgICAgICAgICk/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICBpY29uOiBpdGVtLmljb24gPyBgaWNvbi0ke2l0ZW0uaWNvbn1gIDogJycsXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgIGljb25UaXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pY29udGl0bGU/LmNvbnRhaW4gPz8gcHJvcHM/LnRleHRzPy5pY29udGl0bGUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGFncyA9IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY29udGVudHRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRlbnR0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5jb250ZW50c3VidGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjb250ZW50ZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uY29udGVudGRlc2NyaXB0aW9uPy50YWcsXG4gICAgICAgICAgICAgICAgaWNvblRpdGxlOiBwcm9wcz8udGV4dHM/Lmljb250aXRsZT8udGFnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmlnaHRTaWRlOiByaWdodFNpZGUsXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zLmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGV4dHMsXG4gICAgICAgICAgICBpbWFnZXMsXG4gICAgICAgICAgICB0YWdzLFxuICAgICAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mbzJpbWdJO1xuICAgIH1cblxuICAgIG1hcEdyaWRHYWxsZXJ5KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSW5mb0ltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBpc0luRW51bSA9IDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4oXG4gICAgICAgICAgICBlbnVtT2JqOiBULFxuICAgICAgICAgICAgdmFsdWU6IGFueVxuICAgICAgICApOiB2YWx1ZSBpcyBUW2tleW9mIFRdID0+IE9iamVjdC52YWx1ZXMoZW51bU9iaikuaW5jbHVkZXModmFsdWUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8udGV4dCxcbiAgICAgICAgICAgIGhvdmVyOiBwcm9wcz8udGV4dHM/LmhvdmVyLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgdmlldzogaXNJbkVudW0oVmlld3NUeXBlLCBwcm9wcz8ubXVsdGltZWRpYT8udmlldylcbiAgICAgICAgICAgICAgICA/IHByb3BzPy5tdWx0aW1lZGlhPy52aWV3XG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvSW1nSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvR3JpZChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm9HcmlkSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zLmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBpdGVtLmJ1dHRvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5idXR0b25zLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT4gbGluaz8ubGlua1ZhbHVlICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IGl0ZW0ubGlua3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5saW5rcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+IGxpbms/LmxpbmtWYWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/LlswXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSW5mb0dyaWRJdGVtSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb0dyaWRJO1xuICAgIH1cblxuICAgIG1hcEJhbm5lckdhbGxlcnkoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uQmFubmVyR2FsbGVyeUkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaG92ZXI6IHByb3BzPy50ZXh0cz8uaG92ZXIsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQmFubmVyR2FsbGVyeUk7XG4gICAgfVxuXG4gICAgbWFwQmFubmVyTmV3c2xldHRlcihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgaWRlbnRpZmllcjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkJhbm5lck5ld3NsZXR0ZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBob3ZlcjogcHJvcHM/LnRleHRzPy5ob3ZlcixcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgICAgICBpY29uOiBwcm9wcz8udGV4dHM/Lm1haWxJY29uLFxuICAgICAgICB9IGFzIEJhYnlsb25CYW5uZXJOZXdzbGV0dGVySTtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXJDb2xsMihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2VcbiAgICApOiBCYWJ5bG9uVG9wU2xpZGVyVjJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHByb3BzXG4gICAgICAgICAgICA/ICh7XG4gICAgICAgICAgICAgICAgICByaWdodFNpZGU6IHJpZ2h0U2lkZSxcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICAgICAgICBpbWFnZXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblNsaWRlcjJDb2xJdGVtSVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9IGFzIEJhYnlsb25Ub3BTbGlkZXJWMkkpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXJDb2xsKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBpZGVudGlmaWVyOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uVG9wU2xpZGVyVjJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IGltYWdlczogKHN0cmluZyB8IEJhYnlsb25JbWFnZUkpW10gfCB1bmRlZmluZWQgPSBbXTtcbiAgICAgICAgaWYgKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcykge1xuICAgICAgICAgICAgaW1hZ2VzID0gcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbWFnZVJlc3BvbnNlID0gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgc3JjOlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGltYWdlUmVzcG9uc2UgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWFnZVJlc3BvbnNlLnNyY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW1hZ2VSZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgYWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGltYWdlUmVzcG9uc2UgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWFnZVJlc3BvbnNlLmFsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gYnRuPy5saW5rVmFsdWUgIT09IG51bGwgfHwgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubGlua3M/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+IGJ0bi5saW5rVmFsdWUgIT09IG51bGwgfHwgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uSW1hZ2VJO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXMpIHtcbiAgICAgICAgICAgIGltYWdlcyA9IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXM/Lm1hcCgoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGltYWdlUmVzcG9uc2UgPSB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBzcmM6XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgaW1hZ2VSZXNwb25zZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltYWdlUmVzcG9uc2Uuc3JjXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbWFnZVJlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgICBhbHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgaW1hZ2VSZXNwb25zZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltYWdlUmVzcG9uc2UuYWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4/LmxpbmtWYWx1ZSAhPT0gbnVsbCB8fCB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4/LmxpbmtWYWx1ZSAhPT0gbnVsbCB8fCB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25JbWFnZUk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvcHNcbiAgICAgICAgICAgID8gKHtcbiAgICAgICAgICAgICAgICAgIGltYWdlczogaW1hZ2VzLFxuICAgICAgICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgdG9wQkc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy50b3BiZz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgYm90dG9tQkc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5ib3R0b21iZz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgdG9wQ29sb3I6IHByb3BzPy50ZXh0cz8udG9wQ29sb3IsXG4gICAgICAgICAgICAgICAgICBib3R0b21Db2xvcjogcHJvcHM/LnRleHRzPy5Cb3R0b21Db2xvcixcbiAgICAgICAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uVG9wU2xpZGVyVjJJKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwSXRlbXNHcmlkKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSXRlbXNHcmlkSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBwcm9wc1xuICAgICAgICAgICAgPyAoe1xuICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbWFnZVJlc3BvbnNlID0gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgaW1hZ2VSZXNwb25zZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWFnZVJlc3BvbnNlLnNyY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGltYWdlUmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGltYWdlUmVzcG9uc2UgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1hZ2VSZXNwb25zZS5hbHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4/LmxpbmtWYWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5saW5rcz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+IGJ0bi5saW5rVmFsdWUgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25JbWFnZUk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4/LmxpbmtWYWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH0gYXMgQmFieWxvbkl0ZW1zR3JpZEkpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBSb29tKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSW5mbzJpbWdJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJvb21zOiBwcm9wcz8ucm9vbXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBpdGVtLm11bHRpbWVkaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PiBpbWcuY292ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpbWcucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1nLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JbWFnZUlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDI6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsNDogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZXM6IGl0ZW0/LnNlcnZpY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8udHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKCh2OiBzdHJpbmcpID0+IHYudHJpbSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKFJvb21TZXJ2aWNlVHlwZS5jaGFyYWN0ZXJpc3RpY3MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmNsYXNzfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uUm9vbUluZm9JXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvMmltZ0k7XG4gICAgfVxuXG4gICAgbWFwUm9vbXNHcmlkKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uUm9vbXNHcmlkSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCByb29tcyA9IHByb3BzPy5yb29tc1xuICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRuPy5saW5rVHlwZT8uaW5jbHVkZXMoJ2ludGVybmFsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGl0ZW0/Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBpdGVtLm11bHRpbWVkaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWcudGFncz8uc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWcpID0+IHRhZy5uYW1lID09PSAnUm9vbXNHcmlkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaW1nLnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGltZy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWcudGFncz8uc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWcpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnLm5hbWUgPT09ICdSb29tc0dyaWQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb29tc0dyaWRNb2JpbGVUaHVtYm5haWxTaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvb21zR3JpZFNtYWxsVGFibGV0VGh1bWJuYWlsU2l6ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnOiBpbWcudGFncz8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZzogYW55KSA9PiB0YWc/LmZpbHRlcmFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkltYWdlSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnNsaWNlKDAsIDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDI6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsNDogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZXM6IGl0ZW0/LnNlcnZpY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8udHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKCh2OiBzdHJpbmcpID0+IHYudHJpbSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKFJvb21TZXJ2aWNlVHlwZS5jaGFyYWN0ZXJpc3RpY3MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmNsYXNzfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uUm9vbUluZm9JXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc29ydCgoYTogQmFieWxvblJvb21zTGlzdEl0ZW0sIGI6IEJhYnlsb25Sb29tc0xpc3RJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChhLm9yZGVyID8/IDApIC0gKGIub3JkZXIgPz8gMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJvb21zOiBwcm9wcz8uYnV0dG9ucyA/IHJvb21zPy5zbGljZSgwLCA1KSA6IHJvb21zLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvblJvb21zR3JpZEk7XG4gICAgfVxuXG4gICAgbWFwUm9vbXNTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Sb29tc1NsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgaGlkZU1vZHVsZSA9XG4gICAgICAgICAgICBwcm9wcz8udGV4dHM/LmhpZGUgJiYgcHJvcHM/LnRleHRzPy5oaWRlPy50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSdcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgaGlkZTogaGlkZU1vZHVsZSxcbiAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGVDb250YWluOiB7XG4gICAgICAgICAgICAgICAgICAgIHRhZzogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGl0bGVDb250YWluOiB7XG4gICAgICAgICAgICAgICAgICAgIHRhZzogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcblxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByb29tczogcHJvcHM/LnJvb21zXG4gICAgICAgICAgICAgICAgPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChyb29tOiBhbnksIGluZGV4OiBudW1iZXIsIHNlbGY6IGFueVtdKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5maW5kSW5kZXgoKHIpID0+IHIuaWQgPT09IHJvb20uaWQpID09PSBpbmRleFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5pZF9oYWJpdGFjaW9uIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubmFtZUlkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zPy5zbGljZSgpLnJldmVyc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltZzogYW55KSA9PiBpbWc/LmNvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHx8IGl0ZW0/Lm11bHRpbWVkaWE/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDI6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMzogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWw0OiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsNCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBpdGVtPy5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcXVpcG1lbnRzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5zZXJ2aWNlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKHN2YzogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2Ygc3ZjLnR5cGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHN2Yy50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQudHJpbSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzQ2hhcmFjdGVyaXN0aWMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlcy5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvb21TZXJ2aWNlVHlwZS5jaGFyYWN0ZXJpc3RpY3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNDbGFzcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhc3ZjLmNsYXNzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2Yy5jbGFzcy50b1N0cmluZygpLnRyaW0oKSAhPT0gJyc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFzQ2hhcmFjdGVyaXN0aWMgJiYgaGFzQ2xhc3M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoKHN2YzogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHN2Yy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7c3ZjLmNsYXNzfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkgPz8gW10sXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uUm9vbUluZm9JXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zb3J0KChhOiBCYWJ5bG9uUm9vbXNMaXN0SXRlbSwgYjogQmFieWxvblJvb21zTGlzdEl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChhLm9yZGVyID8/IDApIC0gKGIub3JkZXIgPz8gMCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgIH0gYXMgQmFieWxvblJvb21zU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBPZmZlclNsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbk9mZmVyU2xpZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgYmFja2dyb3VuZEltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYmFja2dyb3VuZGltYWdlbmVzPy5bMF0gfHxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmRpbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgb2ZmZXJzOiBwcm9wcz8ub2ZmZXJzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uRnJvbTogaXRlbT8uYXBwbGljYXRpb25Gcm9tLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25UbzogaXRlbT8uYXBwbGljYXRpb25UbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5OiBpdGVtPy5jdXJyZW5jeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2NvdW50OiBpdGVtPy5kaXNjb3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtPy5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDE6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMzogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uczogaXRlbS50ZXh0cz8uY29uZGl0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0udGV4dHM/LnJlc2VydmF0aW9uVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uVGV4dEluZm9JLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtPy51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlRnJvbTogaXRlbT8udmlzaWJsZUZyb20sXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlVG86IGl0ZW0/LnZpc2libGVUbyxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbk9mZmVySVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uT2ZmZXJTbGlkZXJJO1xuICAgIH1cbiAgICAvLy0tLS0gTEFZT1VUIENPTVBPTkVOVFMgRU5ELS0tLS8vXG5cbiAgICBtYXBUaGFua3MocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25UaGFua3NJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uVGhhbmtzSTtcbiAgICB9XG5cbiAgICBtYXBDb250YWN0Rm9ybShcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgbmRQcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBuZFByb3BzQ29uc3VsdDogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkNvbnRhY3RGb3JtSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbnRhaW4sXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LnRhZyxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRzOiB0aGlzLm1hcEdsb2JhbFRleHRzKHByb3BzPy50ZXh0cykgYXMgQmFieWxvblRleHRJbmZvSSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIHRleHRhcmVhOiB7XG4gICAgICAgICAgICAgICAgaWQ6ICdtZW5zYWplJyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dE1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplVGV4dChwcm9wcz8udGV4dHM/LmlucHV0TWVzc2FnZSksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRNZXNzYWdlUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclJlcXVpcmVkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbmRpdGlvbnM6IHByb3BzPy50ZXh0cz8uY29uZGl0aW9ucyxcbiAgICAgICAgICAgIGNvbmRpdGlvbnMyOiBwcm9wcz8udGV4dHM/LmNvbmRpdGlvbnMyLFxuICAgICAgICAgICAgZHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5kcm9wZG93blRpdGxlLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IG5kUHJvcHNDb25zdWx0Py5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN1bHRUeXBlSWQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3AuY29uc3VsdF90eXBlX2lkID8/IHByb3AuY29uc3VsdFR5cGVJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBwcm9wLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByb3AubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5kcm9wZG93blBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yUmVxdWlyZWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaG90ZWxEcm9wOlxuICAgICAgICAgICAgICAgIHByb3BzPy5ob3RlbHM/Lmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmhvdGVsRHJvcFRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IHByb3AuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByb3AubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5ob3RlbERyb3BQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JSZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApIGFzIHN0cmluZyxcbiAgICAgICAgICAgIGlucHV0czogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdub21icmUnLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dE5hbWUsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dE5hbWUpLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dE5hbWVQbGFjZUhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdzdXJuYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0U3VybmFtZXMgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRsYXN0bmFtZSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplVGV4dChcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRTdXJuYW1lcyA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRsYXN0bmFtZVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRTdXJuYW1lc1BsYWNlSG9sZGVyID8/XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0bGFzdG5hbWVQbGFjZUhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yU3VybmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsKSxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbFBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JFbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdwaG9uZScsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0UGhvbmUsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dFBob25lKSxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZVBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZWwnLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclBob25lLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdIGFzIEJhYnlsb25JbnB1dElbXSxcbiAgICAgICAgICAgIGluZm86IHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiB7XG4gICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyBuZFByb3BzPy50ZXh0cz8uYWRkcmVzc0ljb24sXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBuZFByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBuZFByb3BzPy5saW5rcz8uYWRkcmVzcz8uWzBdPy5bMF0/LmxhYmVsLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZW1haWw6IHtcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIG5kUHJvcHM/LnRleHRzPy5lbWFpbEljb24sXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBuZFByb3BzPy50ZXh0cz8uZW1haWxUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMobmRQcm9wcz8ubGlua3M/LmVtYWlsPy5bMF0pPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAoYnRuKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmJ0bixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgbWFpbHRvOiR7YnRuPy51cmx9bGAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHBob25lOiB7XG4gICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyBuZFByb3BzPy50ZXh0cz8ucGhvbmVJY29uLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbmRQcm9wcz8udGV4dHM/LnBob25lVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKG5kUHJvcHM/LmxpbmtzPy5waG9uZT8uWzBdKT8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5idG4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYHBob25lOiR7YnRuPy51cmx9bGAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQ29udGFjdEZvcm1JO1xuICAgIH1cblxuICAgIG1hcENvbnRhY3RBZGRyZXNzKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkNvbnRhY3RBZGRyZXNzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGFkZHJlc3NTb3VyY2UgPSBwcm9wcz8uaG90ZWxBZGRyZXNzID8/IHByb3BzPy5hZGRyZXNzPy5bMF07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbmZvOiB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgICAgICAgICBpY29uOiAnaWNvbi0nICsgcHJvcHM/LnRleHRzPy5hZGRyZXNzSWNvbixcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NTb3VyY2U/LmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWRkcmVzc1NvdXJjZT8uY3AsIGFkZHJlc3NTb3VyY2U/LmNpdHldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCcgJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzU291cmNlPy5sb2NhbGl0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFthZGRyZXNzU291cmNlPy5wcm92aW5jZSwgYWRkcmVzc1NvdXJjZT8uY291bnRyeV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oJywgJyksXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHBhcnQsIGlkeCwgYXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA9PT0gMCkgcmV0dXJuIHBhcnQgKyAnPGJyPic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA9PT0gMSAmJiBhcnJbMl0pIHJldHVybiBwYXJ0ICsgJywgJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ID09PSAxKSByZXR1cm4gcGFydCArICc8YnI+JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ID09PSAyKSByZXR1cm4gcGFydCArICc8YnI+JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFydDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuam9pbignJyksXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhZGRyZXNzU291cmNlPy5saW5rLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBhZGRyZXNzU291cmNlPy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSBhcyAoeyBzbWFsbFRleHQ/OiBzdHJpbmcgfSAmIEJhYnlsb25CdXR0b25JKVtdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZW1haWw6IHtcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIHByb3BzPy50ZXh0cz8uZW1haWxJY29uLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmVtYWlsVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmVtYWlsVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uZW1haWxUaXRsZT8uY29udGFpbiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc1NvdXJjZT8uZW1haWwsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgbWFpbHRvOiR7YWRkcmVzc1NvdXJjZT8uZW1haWx9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2V4dGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogYWRkcmVzc1NvdXJjZT8uZW1haWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxUZXh0OiBhZGRyZXNzU291cmNlPy5lbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0gYXMgKHsgc21hbGxUZXh0Pzogc3RyaW5nIH0gJiBCYWJ5bG9uQnV0dG9uSSlbXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHBob25lOiB7XG4gICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyBwcm9wcz8udGV4dHM/LnJlc2VydmF0aW9uc0ljb24sXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucmVzZXJ2YXRpb25zVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnJlc2VydmF0aW9uc1RpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnJlc2VydmF0aW9uc1RpdGxlPy5jb250YWluIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzU291cmNlPy5waG9uZSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGB0ZWw6JHthZGRyZXNzU291cmNlPy5waG9uZX1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBhZGRyZXNzU291cmNlPy5waG9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbWFsbFRleHQ6IGFkZHJlc3NTb3VyY2U/LnBob25lLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGB0ZWw6JHthZGRyZXNzU291cmNlPy5waG9uZXR3b31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBhZGRyZXNzU291cmNlPy5waG9uZXR3byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbWFsbFRleHQ6IGFkZHJlc3NTb3VyY2U/LnBob25ldHdvLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSBhcyAoeyBzbWFsbFRleHQ/OiBzdHJpbmcgfSAmIEJhYnlsb25CdXR0b25JKVtdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcENvbnRhY3RNYXAocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Db250YWN0TWFwYUkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29udGVudFVybDogcHJvcHM/LnRleHRzPy5waG9uZUljb24sXG4gICAgICAgICAgICBtYXBJbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBtYXBJbWFnZU1vYmlsZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzbW9iaWxlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkNvbnRhY3RNYXBhSTtcbiAgICB9XG5cbiAgICBtYXBDb250YWN0SG93KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQ29udGFjdEhvd0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uVmVudGFqYXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmljb259YCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkNvbnRhY3RNYXBJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25Db250YWN0SG93STtcbiAgICB9XG5cbiAgICBtYXBXZWJtYXAocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25XZWJtYXBJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxpbmtzOiAoXG4gICAgICAgICAgICAgICAgcHJvcHM/LnBhZ2VzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBsaW5rLnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2ludGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICAgICAgKSBhcyBCYWJ5bG9uQnV0dG9uSVtdXG4gICAgICAgICAgICApLmZpbHRlcihcbiAgICAgICAgICAgICAgICAobGluaykgPT5cbiAgICAgICAgICAgICAgICAgICAgbGluay51cmw/LnNwbGl0KCcvJylbMV0gPT09XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8ubG9jYXRlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSBhcyBzdHJpbmcsXG4gICAgICAgICAgICBncm91cEJ5Q2F0ZWdvcnk6IHRoaXMuaGFzVGV4dFRva2VuVmFsdWUoXG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5ncm91cEJ5Q2F0ZWdvcnlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBMZWdhbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkxlZ2FsSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbnRhaW4sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbj8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbj8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbkxlZ2FsSTtcbiAgICB9XG5cbiAgICBtYXBCcmVhZGNydW1icyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkJyZWFkY3J1bWJJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxpbmtzOiAocHJvcHM/Lml0ZW1zIGFzIGFueVtdKVxuICAgICAgICAgICAgICAgID8uc29ydCgoYSwgYikgPT4gYSAtIGIpXG4gICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChpdGVtKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogaXRlbT8ubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtPy51cmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpdGVtPy51cmw/LmNoYXJBdChpdGVtPy51cmw/Lmxlbmd0aCAtIDEpID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpdGVtPy51cmw/LnNsaWNlKDAsIC0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpdGVtPy51cmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkJyZWFkY3J1bWJJO1xuICAgIH1cblxuICAgIG1hcFJvb21zQ29scyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblJvb21zQ29sc0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZmlsdGVyczogcHJvcHM/LmZpbHRlcnM/Lm1hcCgoZmlsdGVyOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGZpbHRlci5uYW1lLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IGZpbHRlcj8udmFsdWVzPy5tYXAoKG9wdGlvbjogc3RyaW5nKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBjb2RlOiBvcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IG9wdGlvbixcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgdGl0bGU6IGZpbHRlci5uYW1lLFxuICAgICAgICAgICAgICAgIHNtYWxsdGl0bGU6IGZpbHRlci5zbWFsbHRpdGxlLFxuICAgICAgICAgICAgICAgIGZpbHRlcklkOiBmaWx0ZXIuZmlsdGVySWQsXG4gICAgICAgICAgICB9KSkgYXMgQmFieWxvbkRyb3Bkb3duSVtdLFxuICAgICAgICAgICAgc3RGaWx0ZXJzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBuZEZpbHRlcnM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ucm9vbXNcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVkcm9vbUZpbHRlcklkOiBpdGVtPy50ZXh0cz8uYmVkcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJpc3RpY3NGaWx0ZXJJZDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtLmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtPy5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmljZVRleHQ6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBpdGVtPy5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcXVpcG1lbnQ6IGl0ZW0/LnNlcnZpY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodjogc3RyaW5nKSA9PiB2LnRyaW0oKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvb21TZXJ2aWNlVHlwZS5jaGFyYWN0ZXJpc3RpY3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Sb29tc0xpc3RFcXVpcG1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm11bHRpbWVkaWE/LmZpbmQoKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZy50YWdzPy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWcpID0+IHRhZy5uYW1lID09PSAnUm9vbXNDb2xzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA/PyBpdGVtLm11bHRpbWVkaWE/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5tdWx0aW1lZGlhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uUm9vbXNMaXN0SXRlbVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc29ydCgoYTogQmFieWxvblJvb21zTGlzdEl0ZW0sIGI6IEJhYnlsb25Sb29tc0xpc3RJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoYS5vcmRlciA/PyAwKSAtIChiLm9yZGVyID8/IDApO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICB9IGFzIEJhYnlsb25Sb29tc0NvbHNJO1xuICAgIH1cblxuICAgIG1hcEZlYXR1cmVzU2xpZGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkZlYXR1cmVzU2xpZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/LlZlbnRhamFzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25GZWF0dXJlc1NsaWRlckl0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgIH0gYXMgQmFieWxvbkZlYXR1cmVzU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBCYW5uZXJJbmZvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQmFubmVySW5mb0kge1xuICAgICAgICBsZXQgaW1nID1cbiAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdID8/IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTogaW1nPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWc/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgdmlkZW86IHByb3BzPy50ZXh0cz8uWydWaWRlby1saW5rJ10sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoaW1nPy5idXR0b25zKSxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcsIGZhbHNlKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQmFubmVySW5mb0k7XG4gICAgfVxuXG4gICAgbWFwUm9vbURldGFpbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblJvb21EZXRhaWxJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFwcm9wcz8ucm9vbSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhLCBidXR0b25zIH0gPSBwcm9wcz8ucm9vbTtcbiAgICAgICAgbGV0IGRldGFpbEJ1dHRvbnMgPSBwcm9wcy5idXR0b25zPy5sZW5ndGggPyBwcm9wcy5idXR0b25zIDogYnV0dG9ucztcbiAgICAgICAgaWYgKGJ1dHRvbnMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgZGV0YWlsQnV0dG9ucyA9IFtidXR0b25zWzBdXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHRleHRzPy5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgdGV4dHM/LmFkZGl0aW9uYWw0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICB0ZXh0cz8uYWRkaXRpb25hbDQgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICB0ZXh0cz8uYWRkaXRpb25hbDQgIT09ICcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LmFkZGl0aW9uYWw0XG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgIGVxdWlwbWVudFRpdGxlOiB0ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoZGV0YWlsQnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ucm9vbT8uc2VydmljZXNcbiAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICBpdGVtPy50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICA/LnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHY6IHN0cmluZykgPT4gdi50cmltKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoUm9vbVNlcnZpY2VUeXBlLkVxdWlwbWVudClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtPy5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgfSkpIGFzIEJhYnlsb25FcXVpcG1lbnRJdGVtW10sXG4gICAgICAgICAgICBzaG93TGVzczogcHJvcHM/LnRleHRzPy5zaG93TGVzcyxcbiAgICAgICAgICAgIHNob3dNb3JlOiBwcm9wcz8udGV4dHM/LnNob3dNb3JlLFxuICAgICAgICAgICAgc2hvd0FsbDogcHJvcHM/LnRleHRzPy5zaG93QWxsID8gZmFsc2UgOiB0cnVlLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByb29tVGV4dHM6IHRleHRzLFxuICAgICAgICB9IGFzIEJhYnlsb25Sb29tRGV0YWlsSTtcbiAgICB9XG5cbiAgICBtYXBUb3BTbGlkZXJUaHVtYnMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Ub3BTbGlkZXJUaHVtYnNJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgZnJvbTogcHJvcHM/LnRleHRzPy5mcm9tLFxuICAgICAgICAgICAgcHJpY2U6IHByb3BzPy50ZXh0cz8ucHJpY2UsXG4gICAgICAgICAgICBjdXJyZW5jeTogcHJvcHM/LnRleHRzPy5jdXJyZW5jeSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGltYWdlOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuPy5tYXAoKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+ICh7XG4gICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uVG9wU2xpZGVyVGh1bWJzSTtcbiAgICB9XG5cbiAgICBtYXBSb29tc0xpc3QocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Sb29tc0xpc3RJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0RmlsdGVyczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbmRGaWx0ZXJzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5yb29tc1xuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWRyb29tRmlsdGVySWQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyaXN0aWNzRmlsdGVySWQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnM/LnNsaWNlKCkucmV2ZXJzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtPy5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmljZVRleHQ6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcXVpcG1lbnQ6IGl0ZW0/LnNlcnZpY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodjogc3RyaW5nKSA9PiB2LnRyaW0oKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvb21TZXJ2aWNlVHlwZS5jaGFyYWN0ZXJpc3RpY3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Sb29tc0xpc3RFcXVpcG1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm11bHRpbWVkaWE/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+IGltZz8uY292ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB8fCBpdGVtPy5tdWx0aW1lZGlhPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubXVsdGltZWRpYSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBpdGVtPy5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Sb29tc0xpc3RJdGVtXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zb3J0KChhOiBCYWJ5bG9uUm9vbXNMaXN0SXRlbSwgYjogQmFieWxvblJvb21zTGlzdEl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChhLm9yZGVyID8/IDApIC0gKGIub3JkZXIgPz8gMCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgIH0gYXMgQmFieWxvblJvb21zQ29sc0k7XG4gICAgfVxuXG4gICAgbWFwQ29taW5nU29vbihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkNvbWluZ1Nvb25JIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkltYWdlSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGxvZ286IHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkltYWdlSVxuICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgIHRleHRzOiBwcm9wcz8udGV4dHMsXG4gICAgICAgICAgICBzb2NpYWxNZWRpYTogcHJvcHM/LnNvY2lhbE1lZGlhLFxuICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3MpPy5bMF0sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgIH0gYXMgQmFieWxvbkNvbWluZ1Nvb25JO1xuICAgIH1cblxuICAgIG1hcE9mZmVyRGV0YWlsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uT2ZmZXJEZXRhaWxJIHtcbiAgICAgICAgY29uc3Qgb2ZmZXIgPSBwcm9wcz8ub2ZmZXI/LlswXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOiBvZmZlcj8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgdGl0bGU6IG9mZmVyPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogb2ZmZXI/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIG5kVGl0bGU6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICBsYWJlbERpc2NvdW50OiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgbGFiZWxGcm9tOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgY3VycmVuY3k6IG9mZmVyPy5jdXJyZW5jeSxcbiAgICAgICAgICAgIHByaWNlOiBvZmZlcj8ucHJpY2UsXG4gICAgICAgICAgICBkaXNjb3VudDogb2ZmZXI/LmRpc2NvdW50LFxuICAgICAgICAgICAgY29uZGl0aW9uczogb2ZmZXI/LnRleHRzPy5jb25kaXRpb25zLFxuICAgICAgICAgICAgY29uZGl0aW9uc1RpdGxlOiBvZmZlcj8udGV4dHM/LmNvbmRpdGlvbnNUaXRsZSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgYWRkaXRpb25hbDI6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICBhZGRpdGlvbmFsMzogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShvZmZlcj8ubXVsdGltZWRpYT8uWzBdLCBmYWxzZSksXG4gICAgICAgICAgICBtdWx0aW1lZGlhOiB0aGlzLm1hcEltYWdlcyhvZmZlcj8ubXVsdGltZWRpYSksXG4gICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcyk/LlswXSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhvZmZlcj8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIHNlcnZpY2VzOiB0aGlzLm1hcEdsb2JhbFNlcnZpY2VzKG9mZmVyPy5zZXJ2aWNlcyksXG4gICAgICAgIH0gYXMgQmFieWxvbk9mZmVyRGV0YWlsSTtcbiAgICB9XG5cbiAgICBtYXBPZmZlcnNMaXN0KFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBpc0hvbWU6IGJvb2xlYW4gfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uT2ZmZXJzTGlzdEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ub2ZmZXJzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtPy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0/LnByaWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVuY3k6IGl0ZW0/LmN1cnJlbmN5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzY291bnQ6IGl0ZW0/LmRpc2NvdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtPy5tdWx0aW1lZGlhPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogaXRlbT8ubXVsdGltZWRpYT8uWzBdPy5hbHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZUJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VlT2ZmZXJCdXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbEZyb206IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsRGlzY291bnQ6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvbWU6IGl0ZW0/LnNpdGVzPy5bMF0/LmhvbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3B1cDogaXRlbT8uc2l0ZXM/LlswXT8ucG9wdXAsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25PZmZlcnNMaXN0SXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVySW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzSG9tZTogaXNIb21lLFxuICAgICAgICB9IGFzIEJhYnlsb25PZmZlcnNMaXN0STtcbiAgICB9XG5cbiAgICBtYXBGYXEocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25GYXFJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubG9jYXRpb25Ib3dcbiAgICAgICAgICAgICAgICA/IHByb3BzPy5sb2NhdGlvbkhvdz8uaXRlbXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAoZmFxOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogZmFxLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGZhcS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkl0ZW1JXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBwcm9wcz8uaXRlbXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAoZmFxOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogZmFxLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGZhcS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSXRlbUlcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWc6IHByb3BzPy5sb2NhdGlvbk1hcFxuICAgICAgICAgICAgICAgID8gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmxvY2F0aW9uTWFwPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5sb2NhdGlvbk1hcD8ubXVsdGltZWRpYT8uaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkZhcUk7XG4gICAgfVxuXG4gICAgbWFwU3RhdGljRm9vdGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uU3RhdGljRm9vdGVySSB7XG4gICAgICAgIC8vIEZ1bmNpb24gdGVtcG9yYWwgaGFzdGEgcXVlIGVsIGJhY2sgZGV2dWVsdmEgbGEgbGlzdGEgZGUgaG90ZWxlc1xuICAgICAgICBjb25zdCBkeW5hbWljSG90ZWxzQWRyZXNzZXMgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhZGRyZXNzZXNNYXA6IHsgW2tleTogc3RyaW5nXTogUGFydGlhbDxCYWJ5bG9uQWRkcmVzc0l0ZW0+IH0gPVxuICAgICAgICAgICAgICAgIHt9O1xuICAgICAgICAgICAgaWYgKCFwcm9wcz8udGV4dHMpIHJldHVybjtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHByb3BzPy50ZXh0cykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGtleS5zdGFydHNXaXRoKCdhZGRyZXNzbGlzdCcpICYmIHByb3BzPy50ZXh0c1trZXldKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0ga2V5Lm1hdGNoKC9hZGRyZXNzbGlzdChcXGQrKSguKikvKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IG1hdGNoWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBtYXRjaFsyXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhZGRyZXNzZXNNYXBbaW5kZXhdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzTWFwW2luZGV4XSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHBhcnNlSW50KGluZGV4LCAxMCkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBwcm9wcz8udGV4dHNba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdUaXRsZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3Nlc01hcFtpbmRleF0ubmFtZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdBZGRyZXNzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzTWFwW2luZGV4XS5hZGRyZXNzID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3Nlc01hcFtpbmRleF0uZnVsbF9hZGRyZXNzID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1VybCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3Nlc01hcFtpbmRleF0udXJsID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1RlbGYnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkcmVzc2VzTWFwW2luZGV4XSBhcyBhbnkpLnBob25lID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0VtYWlsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZHJlc3Nlc01hcFtpbmRleF0gYXMgYW55KS5lbWFpbCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoYWRkcmVzc2VzTWFwKSBhcyBCYWJ5bG9uQWRkcmVzc0l0ZW1bXTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgbmRUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHJkVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ubGlua3NUaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmxpbmtzVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmxpbmtzVGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aFRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmxvY2F0aW9uVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5sb2NhdGlvblRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogKHByb3BzPy50ZXh0cz8ubG9jYXRpb25UaXRsZT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICAgICAgICh0eXBlb2YgcHJvcHM/LnRleHRzPy5uZXdzbGV0dGVyVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5uZXdzbGV0dGVyVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/Lm5ld3NsZXR0ZXJUaXRsZT8uY29udGFpbikpLFxuXG4gICAgICAgICAgICBmaWZ0aFRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmFkZGl0aW9uYWxGb290ZXJUaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmFkZGl0aW9uYWxGb290ZXJUaXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uYWRkaXRpb25hbEZvb3RlclRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgYWhUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5BZGRyZXNzSG90ZWxzVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5BZGRyZXNzSG90ZWxzVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LkFkZHJlc3NIb3RlbHNUaXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIG5kdGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgcmR0aXRsZTogcHJvcHM/LnRleHRzPy5saW5rc1RpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGh0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5sb2NhdGlvblRpdGxlPy50YWcgPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5uZXdzbGV0dGVyVGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBmaWZ0aHRpdGxlOiBwcm9wcz8udGV4dHM/LmFkZGl0aW9uYWxGb290ZXJUaXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNvcHlyaWdodDogcHJvcHM/LnRleHRzPy5jb3B5cmlnaHQ/LnRhZyxcbiAgICAgICAgICAgICAgICBhaHRpdGxlOiBwcm9wcz8udGV4dHM/LkFkZHJlc3NIb3RlbHNUaXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZyYW1lVXJsOiAhIXByb3BzPy50ZXh0cz8uZnJhbWVVcmxcbiAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uZnJhbWVVcmxcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGNvbnRhY3RJbmZvOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uY29udGFjdD8uWzBdKSxcbiAgICAgICAgICAgIGNvbnRhY3RMaW5rczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3M/LmNvbnRhY3RMaW5rcz8uWzBdKSxcbiAgICAgICAgICAgIGNvbnRhY3RUZXh0OiBwcm9wcz8udGV4dHM/LnRleHRwaG9uZTIsXG4gICAgICAgICAgICBmb290ZXJMaW5rczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3M/LmZvb3RlckxpbmtzPy5bMF0pLFxuICAgICAgICAgICAgYWRkcmVzczogQXJyYXkuaXNBcnJheShwcm9wcz8uYWRkcmVzcylcbiAgICAgICAgICAgICAgICA/IHByb3BzPy5hZGRyZXNzLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAoYWRkcmVzczogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGFkZHJlc3MuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBhZGRyZXNzLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiBhZGRyZXNzLmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaXR5OiBhZGRyZXNzLmNpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aW5jZTogYWRkcmVzcy5wcm92aW5jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IGFkZHJlc3MuY291bnRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwOiBhZGRyZXNzLmNwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhZGRyZXNzLmxpbmssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsX2FkZHJlc3M6IGFkZHJlc3MuZnVsbEFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbHVnczogYWRkcmVzcy5zbHVncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkFkZHJlc3NJdGVtXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgICAgIGFkZHJlc3NIb3RlbHM6XG4gICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShwcm9wcz8uYWRkcmVzc0hvdGVscykgJiZcbiAgICAgICAgICAgICAgICBwcm9wcz8uYWRkcmVzc0hvdGVscy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LmFkZHJlc3NIb3RlbHMubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkcmVzczogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogYWRkcmVzcy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBhZGRyZXNzLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogYWRkcmVzcy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IGFkZHJlc3MuY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aW5jZTogYWRkcmVzcy5wcm92aW5jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5OiBhZGRyZXNzLmNvdW50cnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3A6IGFkZHJlc3MuY3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhZGRyZXNzLmxpbmssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmU6IGFkZHJlc3MucGhvbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw6IGFkZHJlc3MuZW1haWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbF9hZGRyZXNzOiBhZGRyZXNzLmZ1bGxBZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWdzOiBhZGRyZXNzLnNsdWdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkFkZHJlc3NJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICA6ICgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGR5bmFtaWNBZGRyZXNzZXMgPSBkeW5hbWljSG90ZWxzQWRyZXNzZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGR5bmFtaWNBZGRyZXNzZXMgJiYgZHluYW1pY0FkZHJlc3Nlcy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGR5bmFtaWNBZGRyZXNzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgIH0pKCksXG4gICAgICAgICAgICBzb2NpYWxNZWRpYTogcHJvcHM/LnNvY2lhbE1lZGlhPy5tYXAoXG4gICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBiYWJ5bG9uLSR7bGluay5uYW1lPy50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGxpbmsudXJsLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvcHlyaWdodDpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5jb3B5cmlnaHQgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5jb3B5cmlnaHRcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmNvcHlyaWdodD8uY29udGFpbixcbiAgICAgICAgICAgIG5hdjogcHJvcHM/Lm5hdj8ubWFwKFxuICAgICAgICAgICAgICAgIChuYXY6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBuYXYubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbmF2LnVybCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYmFja2dyb3VuZD8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBhbHQ6IHByb3BzPy5tdWx0aW1lZGlhPy5iYWNrZ3JvdW5kPy50aXRsZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8ubG9nbz8uWzBdLCBmYWxzZSksXG4gICAgICAgICAgICAvLyBpbnB1dDogcHJvcHM/LnRleHRzPy5uZXdzbGV0dGVyRGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6ICduZXdzbGV0dGVyJyxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dEhvbGRlcixcbiAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8ubmV3c0Vycm9yRW1haWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGVnYWxBZHZpc2U6IHByb3BzPy50ZXh0cz8uc3Vic2NyaWJlcixcbiAgICAgICAgICAgIGFkZGl0aW9uYWxMaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICBwcm9wcz8ubGlua3M/LmFkZGl0aW9uYWxGb290ZXJMaW5rc1swXT8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+ICEhYnRuPy5sYWJlbFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvblN0YXRpY0Zvb3Rlckk7XG4gICAgfVxuXG4gICAgbWFwR2FsbGVyeShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkdhbGxlcnlJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRleHRzOiB0aGlzLm1hcEdsb2JhbFRleHRzKHByb3BzPy50ZXh0cykgYXMgQmFieWxvblRleHRJbmZvSSxcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJvb21zQnRuOiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzPy50ZXh0cz8uZmlsdGVyUm9vbXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmlsdGVyc0J0bjoge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcz8udGV4dHM/LmZpbHRlckNhdGVnb3JpZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmlsdGVyczogcHJvcHM/LmZpbHRlcnM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsOiBpdGVtLmFsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb206IGl0ZW0ucm9vbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb21zOiBpdGVtLnJvb21zLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uR2FsbGVyeUZpbHRlclxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltYWdlczogcHJvcHM/LmZpbHRlcnNcbiAgICAgICAgICAgICAgICA/LnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgYWNjOiB7IG11bHRpbWVkaWE6IGFueVtdOyBmaWx0ZXJJbmRleDogbnVtYmVyIH1bXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVySW5kZXg6IG51bWJlclxuICAgICAgICAgICAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIubXVsdGltZWRpYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG11bHRpbWVkaWFXaXRoRmlsdGVyID0gZmlsdGVyLm11bHRpbWVkaWEubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZmlsdGVySW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE6IG11bHRpbWVkaWFXaXRoRmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVySW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5mbGF0TWFwKCh7IG11bHRpbWVkaWEgfTogYW55KSA9PiBtdWx0aW1lZGlhKVxuICAgICAgICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZywgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogaW1nPy5maWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uR2FsbGVyeUl0ZW1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25HYWxsZXJ5STtcbiAgICB9XG5cbiAgICBtYXBMYW5ndWFnZU1vZGFsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uTGFuZ3VhZ2VNb2RhbEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubGFuZ3VhZ2VzLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IHByb3BzPy5sYW5ndWFnZXM/LmZpbmQoXG4gICAgICAgICAgICAgICAgKGxuZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICBsbmcuaWQgPT09IHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8uaWRcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICB9IGFzIEJhYnlsb25MYW5ndWFnZU1vZGFsSTtcbiAgICB9XG5cbiAgICBtYXBFbmdpbmUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25FbmdpbmVJIHwgQmFieWxvbkVuZ2luZU1vZGFsSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvbmx5QWR1bHRzOiBwcm9wcz8ub25seUFkdWx0cyxcbiAgICAgICAgICAgIGRlZmF1bHRCdXR0b246IHByb3BzPy5kZWZhdWx0SW50ZXJuYWxCdXR0b24sXG4gICAgICAgICAgICBkZWZhdWx0UHJvbW9Db2RlOiBwcm9wcz8uZGVmYXVsdFByb21vQ29kZSxcbiAgICAgICAgICAgIGJ1dHRvbjogeyBsYWJlbDogcHJvcHM/LnRleHRzPy5tb3RvclN1Ym1pdCwgdXJsOiBwcm9wcz8udXJsIH0sXG4gICAgICAgICAgICBkYXRlcGlja2VyRGF0YToge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm1vdG9yRGF0ZVRpdGxlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGd1ZXN0c0lucHV0OiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubW90b3JHdWVzdHNJbnB1dEhvbGRlcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcm9tb0lucHV0OiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubW90b3JQcm9tb0hvbGRlcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBndWVzdHM6IHtcbiAgICAgICAgICAgICAgICBidG46IHsgbGFiZWw6IHByb3BzPy50ZXh0cz8ubW90b3JBcHBseSB9LFxuICAgICAgICAgICAgICAgIGFkdWx0c0Ryb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yQWR1bHRzVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhwcm9wcz8ubWF4QWR1bHRzLCAxKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGp1bmlvcnNEcm9wZG93bjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm1heEp1bmlvciA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JKdW5pb3JUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtYWxsVGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JKdW5pb3JTbWFsbExhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZW5lcmF0ZUFnZXNPcHRpb25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tYXhKdW5pb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGtpZHNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvcktpZHNUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgc21hbGxUaXRsZTogcHJvcHM/LnRleHRzPy5tb3RvcktpZHNTbWFsbExhYmVsLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8ubWF4Q2hpbGRyZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhwcm9wcz8ubWF4Q2hpbGRyZW5zKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmdlbmVyYXRlQWdlc09wdGlvbnMocHJvcHM/Lm1heENoaWxkcmVuKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJhYmllc0Ryb3Bkb3duOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubWF4QmFiaWVzID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckJhYmllc1RpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxUaXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckJhYmllc1NtYWxsVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLmdlbmVyYXRlQWdlc09wdGlvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm1heEJhYmllc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgYWdlc0Ryb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tYXhBZ2VDaGlsZHJlbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tYXhBZ2VCYWJpZXMgKyAxXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBhZ2VzTGFiZWw6IHByb3BzPy50ZXh0cz8ubW90b3JBZ2VzVGl0bGUsXG4gICAgICAgICAgICAgICAga2lkc0xhYmVsOiBwcm9wcz8udGV4dHM/Lm1vdG9yS2lkTGFiZWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JUaXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yU3VidGl0bGUsXG4gICAgICAgICAgICB1cmw6IHByb3BzPy51cmwsXG4gICAgICAgICAgICBob3RlbDogcHJvcHM/LmhvdGVscz8uWzBdLFxuICAgICAgICAgICAgY29kaWdvOiBwcm9wcz8uY29kaWdvID8gcHJvcHM/LmNvZGlnbyA6ICdkZW1vX2MydF9jbGllbnRlcycsIC8vdG8gY2hhbmdlLCBkb250IGNvbWUgZnJvbSBiYWNrXG4gICAgICAgICAgICBnbFZhbHVlOiBwcm9wcz8uZ2xWYWx1ZSxcbiAgICAgICAgICAgIGhvdGVsc0lucHV0OiBwcm9wcz8udGV4dHM/Lm1vdG9yRHJvcERvd25OYW1lLFxuICAgICAgICAgICAgaG90ZWxzUGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubW90b3JEcm9wRG93bkhvbGRlcixcbiAgICAgICAgICAgIGhvdGVsczoge1xuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5ob3RlbHM/Lm1hcCgoaG90ZWw6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogaG90ZWw/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHRpY2tlcjogaG90ZWw/LnRpY2tlcixcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBob3RlbD8udXJsLFxuICAgICAgICAgICAgICAgICAgICBpZDogaG90ZWw/LmlkLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbkVuZ2luZU1vZGFsSSB8IEJhYnlsb25FbmdpbmVJO1xuICAgIH1cbiAgICBtYXBTbGlkZXIzSXRlbXMoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIGlkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25TbGlkZXIzSXRlbXNJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbS5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uU2xpZGVySXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uU2xpZGVyM0l0ZW1zSTtcbiAgICB9XG5cbiAgICBtYXBIb3RlbHNTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Ib3RlbHNTbGlkZXJJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBob3RlbHM6IHByb3BzPy5ob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ6IGl0ZW0ubXVsdGltZWRpYT8uWzBdPy5hbHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhpdGVtLmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpdGVtLmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uU2xpZGVySXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSG90ZWxzU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBIb3RlbHNMaXN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSG90ZWxzTGlzdEkge1xuICAgICAgICAvLyBUT0RPOiBSZXZpc2FyIG1hcHBlbyBkZSBpbcOhZ2VuZXNcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBob3RlbHM6IHByb3BzPy5ob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRNb3JlOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0OiBpdGVtPy5tdWx0aW1lZGlhPy5bMF0/LmFsdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtPy5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZUaXRsZTogcHJvcHM/LnRleHRzPy5mb290ZXJUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZTdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5mb290ZXJQcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzOiBpdGVtPy5zZXJ2aWNlc0xpc3Q/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtPy5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnRuTGVzczogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnRuTW9yZTogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWw0LFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uU2xpZGVySXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSG90ZWxzTGlzdEk7XG4gICAgfVxuXG4gICAgbWFwSW5mbzRJbWcocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25JbmZvNGltZ0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBpbWFnZTE6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lc1swXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltYWdlMjogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzWzFdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1hZ2UzOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXNbMl0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZTQ6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lc1szXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mbzRpbWdJO1xuICAgIH1cblxuICAgIG1hcFNlcnZpY2VzU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uU2VydmljZXNTbGlkZXJJIHtcbiAgICAgICAgY29uc3QgYWR2ZW50ID0gcHJvcHM/LnNlcnZpY2VzU2VydmljZSA/PyBwcm9wcz8uVmVudGFqYXM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZHZhbnRhZ2VzOiBhZHZlbnQ/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUgPz8gaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmNsYXNzID8/IGl0ZW0uaWNvbn1gLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIEJhYnlsb25TZXJ2aWNlc1NsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwQWR2YW50YWdlcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkFkdmFudGFnZXNJIHtcbiAgICAgICAgY29uc3QgdmVudGFqYXMgPVxuICAgICAgICAgICAgcHJvcHM/LlZlbnRhamFzID8/IHByb3BzPy5saXN0cyA/PyBwcm9wcz8uTGlzdHMgPz8gcHJvcHM/Lkxpc3Q7XG4gICAgICAgIGNvbnN0IGFkdiA9IHZlbnRhamFzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmljb259YCxcbiAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgfSkpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBhZHZhbnRhZ2VzOiBhZHYsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VlTW9yZTogcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2Vzc2VlbW9yZSxcbiAgICAgICAgICAgIHNlZUxlc3M6IHByb3BzPy50ZXh0cz8uYWR2YW50YWdlc3NlZWxlc3MsXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmFkdmFudGFnZXNpbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25BZHZhbnRhZ2VzSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvQmlnKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSW5mb0JpZ0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8udGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LmJ1dHRvbnNcbiAgICAgICAgICAgICk/LlswXSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWdTbWFsbDogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMV0gPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/Lm5kaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb0JpZ0k7XG4gICAgfVxuXG4gICAgbWFwSW5mb1ppZ1phZ1YyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBpZGVudGlmaWVyOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uSW5mb1ppZ3phZ1YySSB7XG4gICAgICAgIGNvbnN0IFtpbWFnZV0gPVxuICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlIHx8IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyB8fCBbXTtcbiAgICAgICAgY29uc3QgW2ltYWdlMl0gPVxuICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlMiB8fCBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2Vzc21hbGwgfHwgW107XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICAgICAgaXRlbXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaW1hZ2U/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1hZ2UsIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGltYWdlPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltYWdlPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogaW1hZ2U/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGltYWdlMj8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWFnZTIsIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGltYWdlMj8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWFnZTI/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpbWFnZTI/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlczogcHJvcHM/LlZlbnRhamFzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogaXRlbS5pY29uID8gYGljb24tJHtpdGVtLmljb259YCA6ICcnLFxuICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0gYXMgQmFieWxvbkluZm9aaWd6YWdWMkl0ZW1bXSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb1ppZ3phZ1YySTtcbiAgICB9XG5cbiAgICBtYXBGb290ZXJDb250YWN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uRm9vdGVyQ29udGFjdEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBleHRyYVR4dDogcHJvcHM/LnRleHRzPy5hZGRpdGlvbmFsVGV4dDEsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgICAgICBhbHQ6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5hbHQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWR2YW50YWdlczogcHJvcHM/LlZlbnRhamFzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmljb259YCxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uY29udGFjdExpbmtzPy5bMF0pLFxuICAgICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgICAgIGxvY2FsaXR5OiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5sb2NhbGl0eSxcbiAgICAgICAgICAgICAgICBjaXR5OiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5jaXR5LFxuICAgICAgICAgICAgICAgIHByb3ZpbmNlOiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5wcm92aW5jZSxcbiAgICAgICAgICAgICAgICBjb3VudHJ5OiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgIGNwOiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5jcCxcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgIGxhdDogcHJvcHM/LmhvdGVsQWRkcmVzcz8ubGF0LFxuICAgICAgICAgICAgICAgIGxvbjogcHJvcHM/LmhvdGVsQWRkcmVzcz8ubG9uLFxuICAgICAgICAgICAgICAgIHBob25lOiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5waG9uZSxcbiAgICAgICAgICAgICAgICBlbWFpbDogcHJvcHM/LmhvdGVsQWRkcmVzcz8uZW1haWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25Gb290ZXJDb250YWN0STtcbiAgICB9XG5cbiAgICBtYXBJbmZvMkltZ0JpZyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm8yaW1nQmlnSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgcHJldGl0bGUyOiBwcm9wcz8udGV4dHM/Lm5kUHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTI6IHByb3BzPy50ZXh0cz8ubmRUaXRsZSxcbiAgICAgICAgICAgIHRleHQyOiBwcm9wcz8udGV4dHM/Lm5kRGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBidXR0b24yOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzFdLFxuICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBhbHQ6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5hbHQgPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF0uYWx0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGltZ1NtYWxsOiB7XG4gICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/Lm5kaW1hZ2VuZXM/LlswXSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/Lm5kaW1hZ2U/LlswXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYWx0OiBwcm9wcz8ubXVsdGltZWRpYT8ubmRpbWFnZW5lcz8uWzBdPy5hbHQsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvMmltZ0JpZ0k7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVyTG9nb3MocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Gb290ZXJMb2dvc0kge1xuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPz8gcHJvcHM/LnRleHRzPy50ZXh0O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgIC4uLnByb3BzPy50ZXh0cyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgICAgICBsb2dvczogcHJvcHM/Lm11bHRpbWVkaWE/LmxvZ29zPy5tYXAoKGxvZ286IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGxvZ28sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKGxvZ28/LmxpbmtzKT8uWzBdLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIEJhYnlsb25Gb290ZXJMb2dvc0k7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVyTGlua3MocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Gb290ZXJMaW5rc0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29weXJpZ2h0OiBwcm9wcz8udGV4dHM/LmNvcHlyaWdodCxcbiAgICAgICAgICAgIHllYXI6IHByb3BzPy50ZXh0cz8ueWVhcixcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICB9IGFzIEJhYnlsb25Gb290ZXJMaW5rc0k7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVyU29jaWFscyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkZvb3RlclNvY2lhbEkge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZExpbmtzID0gKHByb3BzPy5zb2NpYWxNZWRpYSB8fCBbXSkuZmlsdGVyKFxuICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICBsaW5rICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgbGluayAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgbGluay51cmwgIT09ICcnICYmXG4gICAgICAgICAgICAgICAgbGluay5pY29uICE9PSAnJ1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBsaW5rczogZmlsdGVyZWRMaW5rcy5tYXAoKGxpbms6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpY29uOiBgYmFieWxvbi0ke2xpbmsubmFtZT8udG9Mb3dlckNhc2UoKX1gLFxuICAgICAgICAgICAgICAgIHVybDogbGluay51cmwsXG4gICAgICAgICAgICAgICAgbGFiZWw6IGxpbmsubmFtZSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uRm9vdGVyU29jaWFsSTtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXIyaXRlbXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25TbGlkZXIyaXRlbXNJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8udGV4dCxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcy5ob3RlbHNcbiAgICAgICAgICAgICAgICA/IHByb3BzPy5ob3RlbHM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5jaXR5LFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtPy5tdWx0aW1lZGlhPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ6IGl0ZW0/Lm11bHRpbWVkaWE/LlswXT8uYWx0LFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlczogaXRlbT8uc2VydmljZXNMaXN0Py5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uY2xhc3N9YCxcbiAgICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICA6IHByb3BzPy5yb29tcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0OiBpdGVtPy5tdWx0aW1lZGlhPy5bMF0/LmFsdCxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIC8vIGxpbms6XG4gICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlczogaXRlbT8uc2VydmljZXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uU2xpZGVyMml0ZW1zSTtcbiAgICB9XG5cbiAgICBtYXBTdGF0aWNGb290ZXJ2Mihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblN0YXRpY0Zvb3RlclYySSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIG5kVGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlLFxuICAgICAgICAgICAgcmRUaXRsZTogcHJvcHM/LnRleHRzPy5saW5rc1RpdGxlLFxuICAgICAgICAgICAgdGhUaXRsZTogcHJvcHM/LnRleHRzPy5sb2NhdGlvblRpdGxlLFxuICAgICAgICAgICAgZnJhbWVVcmw6IHByb3BzPy50ZXh0cz8uZnJhbWVVcmwsXG4gICAgICAgICAgICBpbWdVcmw6IHByb3BzPy5tdWx0aW1lZGlhPy5mb290ZXJpbWc/LlswXT8ubGlua3M/LlswXT8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgY29udGFjdEluZm86IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5jb250YWN0Py5bMF0pLFxuICAgICAgICAgICAgY29udGFjdExpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uY29udGFjdExpbmtzPy5bMF0pLFxuICAgICAgICAgICAgZm9vdGVyTGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5mb290ZXJMaW5rcz8uWzBdKSxcbiAgICAgICAgICAgIGFkZHJlc3M6IEFycmF5LmlzQXJyYXkocHJvcHM/LmFkZHJlc3MpXG4gICAgICAgICAgICAgICAgPyBwcm9wcz8uYWRkcmVzcy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgKGFkZHJlc3M6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBhZGRyZXNzPy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGFkZHJlc3M/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiBhZGRyZXNzPy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2l0eTogYWRkcmVzcz8uY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpbmNlOiBhZGRyZXNzPy5wcm92aW5jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IGFkZHJlc3M/LmNvdW50cnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcDogYWRkcmVzcz8uY3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25BZGRyZXNzSXRlbVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogW10sXG4gICAgICAgICAgICBzb2NpYWxNZWRpYTogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBwcm9wcz8uc29jaWFsTWVkaWE/LlswXT8udXJsLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogcHJvcHM/LnRleHRzPy5pbnN0YWdyYW1UaXRsZSxcbiAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25CdXR0b25JLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGNvcHlyaWdodDogcHJvcHM/LnRleHRzPy5jb3B5cmlnaHQsXG4gICAgICAgICAgICBuYXY6IHByb3BzPy5uYXY/Lm1hcChcbiAgICAgICAgICAgICAgICAobmF2OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbmF2Py5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBuYXY/LnVybCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5mb290ZXJpbWc/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uU3RhdGljRm9vdGVyVjJJO1xuICAgIH1cblxuICAgIG1hcExpc3RHcmlkKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uTGlzdEdyaWRJIHtcbiAgICAgICAgY29uc3QgeyBpbWFnZW5lcyB9ID0gcHJvcHM/Lm11bHRpbWVkaWEgfHwgW107XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBsYWJlbHM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpdGVtczogaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlczogW10sIC8vVE9ETzogcHRlIGJhY2ssXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JdGVtR3JpZElcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkxpc3RHcmlkSTtcbiAgICB9XG5cbiAgICBtYXBOZXdzbGV0dGVyTW9kYWwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25OZXdzbGV0dGVySSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb25kaXRpb25zOiBwcm9wcz8udGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnbWFpbCcsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRIb2xkZXIsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/Lm5ld3NFcnJvckVtYWlsLFxuICAgICAgICAgICAgfSBhcyBCYWJ5bG9uSW5wdXRJLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2ViYWNrZ3JvdW5kPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbk5ld3NsZXR0ZXJJO1xuICAgIH1cblxuICAgIG1hcEdsb2JhbE1vZGFsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uR2xvYmFsTW9kYWxJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnMuZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpZnJhbWU6IHByb3BzPy50ZXh0cz8uaWZyYW1lLFxuICAgICAgICAgICAgLy8gaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgIH0gYXMgQmFieWxvbkdsb2JhbE1vZGFsSTtcbiAgICB9XG5cbiAgICBtYXBPZmZlckJhbm5lclYyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uT2ZmZXJQb3B1cFYySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBvZmZlckRhdGE7XG4gICAgICAgIGlmIChwcm9wcz8ub2ZmZXJzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBvZmZlciA9IHByb3BzPy5vZmZlcnM/LlswXTtcbiAgICAgICAgICAgIG9mZmVyRGF0YSA9IHtcbiAgICAgICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogb2ZmZXI/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IG9mZmVyPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBvZmZlcj8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDI6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsNDogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsNCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhvZmZlcj8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgIG9mZmVyPy5tdWx0aW1lZGlhPy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgICAgICAgICA/IChvZmZlcj8ubXVsdGltZWRpYT8uZmluZCgoaW1nOiBhbnkpID0+IGltZy5jb3ZlcikgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZmVyPy5tdWx0aW1lZGlhPy5bMF0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IChvZmZlcj8ubXVsdGltZWRpYT8uWzBdID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uZGVmYXVsdGltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGlzY291bnQ6IG9mZmVyPy5kaXNjb3VudCxcbiAgICAgICAgICAgICAgICBwcmljZTogb2ZmZXI/LnByaWNlLFxuICAgICAgICAgICAgICAgIGN1cnJlbmN5OiBvZmZlcj8uY3VycmVuY3ksXG4gICAgICAgICAgICB9IGFzIEJhYnlsb25PZmZlclBvcHVwVjJJO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZmZlckRhdGEgPz8gb2ZmZXJEYXRhO1xuICAgIH1cblxuICAgIG1hcEhlYWRJbnRybyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgY29tcG9uZW50OiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uSGVhZEludHJvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBhZGRpdGlvbmFsVGV4dHMgPSB7XG4gICAgICAgICAgICBhZGRpdGlvbmFsMjogJycsXG4gICAgICAgICAgICBhZGRpdGlvbmFsMzogJycsXG4gICAgICAgICAgICBhZGRpdGlvbmFsNDogJycsXG4gICAgICAgIH07XG4gICAgICAgIGlmIChwcm9wcz8ucm9vbSkge1xuICAgICAgICAgICAgYWRkaXRpb25hbFRleHRzLmFkZGl0aW9uYWwyID0gcHJvcHMucm9vbS50ZXh0cz8uYWRkaXRpb25hbDIgPz8gJyc7XG4gICAgICAgICAgICBhZGRpdGlvbmFsVGV4dHMuYWRkaXRpb25hbDMgPSBwcm9wcy5yb29tLnRleHRzPy5hZGRpdGlvbmFsMyA/PyAnJztcbiAgICAgICAgICAgIGFkZGl0aW9uYWxUZXh0cy5hZGRpdGlvbmFsNCA9IHByb3BzLnJvb20udGV4dHM/LmFkZGl0aW9uYWw0ID8/ICcnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTogYWRkaXRpb25hbFRleHRzLmFkZGl0aW9uYWwyLmxlbmd0aFxuICAgICAgICAgICAgICAgID8gYWRkaXRpb25hbFRleHRzLmFkZGl0aW9uYWwyXG4gICAgICAgICAgICAgICAgOiB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6IGFkZGl0aW9uYWxUZXh0cy5hZGRpdGlvbmFsMy5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IGFkZGl0aW9uYWxUZXh0cy5hZGRpdGlvbmFsM1xuICAgICAgICAgICAgICAgIDogdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRleHQ6IGFkZGl0aW9uYWxUZXh0cy5hZGRpdGlvbmFsNC5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IGFkZGl0aW9uYWxUZXh0cy5hZGRpdGlvbmFsNFxuICAgICAgICAgICAgICAgIDogdHlwZW9mIHByb3BzPy50ZXh0cz8udGV4dCA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50ZXh0XG4gICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGV4dD8uY29udGFpbixcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQ/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCkgPz9cbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Py50ZXh0Y29sb3IsXG4gICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCkgPz8gY29tcG9uZW50Py50ZXh0Y29sb3IsXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LmNvbG9yPy50cmltKCkgPz9cbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Py50ZXh0Y29sb3IsXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb2xvcj8udHJpbSgpID8/XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD8udGV4dGNvbG9yLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGNvbXBvbmVudD8uaWRlbnRpZmllcixcbiAgICAgICAgfSBhcyBCYWJ5bG9uSGVhZEludHJvSTtcbiAgICB9XG5cbiAgICBtYXBFeHRlcm5hbFNjcmlwdChcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25FeHRlcm5hbFNjcmlwdEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2NyaXB0OiBwcm9wcz8udGV4dHM/LkNvbnRhaW5lcixcbiAgICAgICAgICAgIG1zZ19sb2FkaW5nOiBwcm9wcz8udGV4dHM/LmxvYWRpbmcgPz8gJ0NhcmdhbmRvLi4uJyxcbiAgICAgICAgfSBhcyBCYWJ5bG9uRXh0ZXJuYWxTY3JpcHRJO1xuICAgIH1cblxuICAgIG1hcEJsb2dMaXN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQmxvZ0xpc3RJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IHBvc3RzID0gcHJvcHM/LmJsb2c/LnBvc3RzPy5tYXAoKHBvc3Q6IGFueSkgPT4gKHtcbiAgICAgICAgICAgIGlkOiBwb3N0Py5pZCxcbiAgICAgICAgICAgIHRpdGxlOiBwb3N0Py50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcG9zdD8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHBvc3Q/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBwb3N0Py50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHBvc3Q/Lm11bHRpbWVkaWE/LlswXSwgZmFsc2UpLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhwb3N0Py5idXR0b25zKSxcbiAgICAgICAgICAgIHBvc3RVcmw6IFV0aWxzLm1hcEJ1dHRvbnMocG9zdD8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGNhdGVnb3J5OlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwb3N0Py5jYXRlZ29yeSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwb3N0LmNhdGVnb3J5XG4gICAgICAgICAgICAgICAgICAgIDogKHBvc3Q/LmNhdGVnb3J5Py5uYW1lX2lkZW50aWZpZXIgPz9cbiAgICAgICAgICAgICAgICAgICAgICBwb3N0Py5jYXRlZ29yeT8ubmFtZUlkZW50aWZpZXIgPz9cbiAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQpLFxuICAgICAgICAgICAgZGF0ZTogcG9zdD8uZGF0ZSA/IG5ldyBEYXRlKHBvc3QuZGF0ZSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBhY3RpdmU6IHBvc3Q/LmFjdGl2ZSxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHBvc3RzID0gcG9zdHMuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChhLmRhdGUgJiYgYi5kYXRlKSByZXR1cm4gYi5kYXRlIC0gYS5kYXRlOyAvLyBhbWJvcyBjb24gZmVjaGFcbiAgICAgICAgICAgIGlmIChhLmRhdGUgJiYgIWIuZGF0ZSkgcmV0dXJuIC0xOyAvLyBhIHRpZW5lIGZlY2hhLCBiIG5vXG4gICAgICAgICAgICBpZiAoIWEuZGF0ZSAmJiBiLmRhdGUpIHJldHVybiAxOyAvLyBiIHRpZW5lIGZlY2hhLCBhIG5vXG4gICAgICAgICAgICByZXR1cm4gMDsgLy8gbmluZ3VubyB0aWVuZSBmZWNoYVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBPYnRlbmVyIGxvcyA0IHBvc3RzIG3DoXMgcmVjaWVudGVzXG4gICAgICAgIHBvc3RzID1cbiAgICAgICAgICAgIHBvc3RzPy5maWx0ZXIoKHBvc3Q6IHsgYWN0aXZlOiBib29sZWFuIH0pID0+IHBvc3QuYWN0aXZlKSA/P1xuICAgICAgICAgICAgcG9zdHMgPz9cbiAgICAgICAgICAgIFtdO1xuXG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZVRvQXJyYXkgPSAodmFsdWU6IGFueSk6IGFueVtdID0+IHtcbiAgICAgICAgICAgIGlmICghdmFsdWUpIHJldHVybiBbXTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHJldHVybiBPYmplY3QudmFsdWVzKHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBjYXRlZ29yaWVzQXJyYXkgPSBub3JtYWxpemVUb0FycmF5KHByb3BzPy5wb3N0Q2F0ZWdvcmllcyk7XG4gICAgICAgIGNvbnN0IGxhdGVzdFBvc3RzID0gcG9zdHM/LnNsaWNlKDAsIDQpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8udGFnLFxuICAgICAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VhcmNoUGxhY2VIb2xkZXI6IHByb3BzPy50ZXh0cz8uc2VhcmNoUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICBub3Rmb3VuZFRleHQ6IHByb3BzPy50ZXh0cz8uc2VhcmNoTm90Rm91bmQsXG4gICAgICAgICAgICBwb3N0czogcG9zdHMsXG4gICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXNcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LmNvbnRhaW4sXG4gICAgICAgICAgICBjYXRlZ29yaWVzOiBjYXRlZ29yaWVzQXJyYXkubWFwKChjYXRlZ29yeTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGlkOiBjYXRlZ29yeT8uaWQsXG4gICAgICAgICAgICAgICAgdGl0bGU6IGNhdGVnb3J5Py5uYW1lLFxuICAgICAgICAgICAgICAgIHBvc3RzOiBjYXRlZ29yeT8udG90YWxQb3N0cyA/PyBjYXRlZ29yeT8udG90YWxfcG9zdHMgPz8gMCxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXNcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LmNvbnRhaW4sXG4gICAgICAgICAgICBsYXRlc3RQb3N0czogbGF0ZXN0UG9zdHMsXG4gICAgICAgICAgICBhbnRlcmlvcjogcHJvcHM/LnRleHRzPy5hbnRlcmlvcixcbiAgICAgICAgICAgIHNpZ3VpZW50ZTogcHJvcHM/LnRleHRzPy5zaWd1aWVudGUsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbWFwQmxvZ0RldGFpbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkJsb2dEZXRhaWxzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQb3N0SWQgPSBwcm9wcz8ucG9zdD8uaWQ7XG4gICAgICAgIGNvbnN0IHBvc3RzID0gcHJvcHM/LnJlbGF0ZWRQb3N0cz8ubWFwKChwb3N0OiBhbnkpID0+ICh7XG4gICAgICAgICAgICBpZDogcG9zdD8uaWQsXG4gICAgICAgICAgICB0aXRsZTogcG9zdD8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHBvc3Q/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwb3N0Py50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHBvc3Q/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHBvc3Q/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgcG9zdFVybDogVXRpbHMubWFwQnV0dG9ucyhwb3N0Py5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgY2F0ZWdvcnk6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHBvc3Q/LmNhdGVnb3J5ID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHBvc3QuY2F0ZWdvcnlcbiAgICAgICAgICAgICAgICAgICAgOiAocG9zdD8uY2F0ZWdvcnk/Lm5hbWVfaWRlbnRpZmllciA/P1xuICAgICAgICAgICAgICAgICAgICAgIHBvc3Q/LmNhdGVnb3J5Py5uYW1lSWRlbnRpZmllciA/P1xuICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCksXG4gICAgICAgICAgICBkYXRlOiBwb3N0Py5kYXRlID8gbmV3IERhdGUocG9zdC5kYXRlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSAocG9zdHMgfHwgW10pLmZpbHRlcihcbiAgICAgICAgICAgIChwOiBhbnkpID0+IHA/LmlkICE9PSBjdXJyZW50UG9zdElkXG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IHJlbGF0ZWRQb3N0c0NvbnN0ID1cbiAgICAgICAgICAgIGNhbmRpZGF0ZXNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChwOiBhbnkpID0+IHA/LmRhdGUpXG4gICAgICAgICAgICAgICAgLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiAoYi5kYXRlIGFzIGFueSkgLSAoYS5kYXRlIGFzIGFueSkpXG4gICAgICAgICAgICAgICAgLnNsaWNlKDAsIDQpIHx8IFtdO1xuICAgICAgICBpZiAocmVsYXRlZFBvc3RzQ29uc3QubGVuZ3RoIDwgNCkge1xuICAgICAgICAgICAgY29uc3Qgd2l0aG91dERhdGUgPSBjYW5kaWRhdGVzLmZpbHRlcigocDogYW55KSA9PiAhcD8uZGF0ZSk7XG4gICAgICAgICAgICByZWxhdGVkUG9zdHNDb25zdCA9IHJlbGF0ZWRQb3N0c0NvbnN0LmNvbmNhdChcbiAgICAgICAgICAgICAgICB3aXRob3V0RGF0ZS5zbGljZSgwLCA0IC0gcmVsYXRlZFBvc3RzQ29uc3QubGVuZ3RoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnBvc3Q/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8ucG9zdD8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy5wb3N0Py50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBhZGRpdGlvbmFsMTogcHJvcHM/LnBvc3Q/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBwcm9wcz8ucG9zdD8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgYWRkaXRpb25hbDM6IHByb3BzPy5wb3N0Py50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICBhZGRpdGlvbmFsNDogcHJvcHM/LnBvc3Q/LnRleHRzPy5hZGRpdGlvbmFsNCxcbiAgICAgICAgICAgIGRhdGU6IHByb3BzPy5wb3N0Py5kYXRlID8gbmV3IERhdGUocHJvcHM/LnBvc3Q/LmRhdGUpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IHByb3BzPy5wb3N0Py5jYXRlZ29yeSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LnRhZyxcbiAgICAgICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlYXJjaFBsYWNlSG9sZGVyOiBwcm9wcz8udGV4dHM/LnNlYXJjaFBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb250YWluLFxuICAgICAgICAgICAgY2F0ZWdvcmllczogQXJyYXkuaXNBcnJheShwcm9wcz8ucG9zdENhdGVnb3JpZXMpXG4gICAgICAgICAgICAgICAgPyBwcm9wcz8ucG9zdENhdGVnb3JpZXM/Lm1hcCgoY2F0ZWdvcnk6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICBpZDogY2F0ZWdvcnk/LmlkLFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBjYXRlZ29yeT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICBwb3N0czogY2F0ZWdvcnk/LnRvdGFsUG9zdHMsXG4gICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgcmVsYXRlZFBvc3RzVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXNcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LmNvbnRhaW4sXG4gICAgICAgICAgICByZWxhdGVkUG9zdHM6IHJlbGF0ZWRQb3N0c0NvbnN0LFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgc2hhcmU6IHByb3BzPy50ZXh0cz8uc2hhcmUsXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5wb3N0Py5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbWlkZGxlSW1nOiBwcm9wcz8udGV4dHM/Lm1pZGRsZUltZyA/PyBmYWxzZSxcbiAgICAgICAgICAgIHRvcEltZzogcHJvcHM/LnRleHRzPy50b3BJbWcgPz8gZmFsc2UsXG4gICAgICAgIH0gYXMgQmFieWxvbkJsb2dEZXRhaWxzSTtcbiAgICB9XG5cbiAgICBtYXBNb2RhbE11bHRpcGxlTW90b3JzKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbk1vZGFsTXVsdGlwbGVNb3RvcnNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/LmxpbmtzXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LmxpbmtzPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gYnRuPy5saW5rVmFsdWUgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LmJ1dHRvbnM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4/LmxpbmtWYWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbk1vZGFsTXVsdGlwbGVNb3RvcnNJO1xuICAgIH1cbiAgICBtYXBPZmZlckJhbm5lcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbk9mZmVyUG9wdXBJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IG9mZmVyRGF0YTtcbiAgICAgICAgaWYgKHByb3BzPy5vZmZlcnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG9mZmVyID0gcHJvcHM/Lm9mZmVycz8uWzBdO1xuICAgICAgICAgICAgb2ZmZXJEYXRhID0ge1xuICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBvZmZlcj8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogb2ZmZXI/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG9mZmVyPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDM6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWw0OiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWw0LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKG9mZmVyPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXI/Lm11bHRpbWVkaWE/Lmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gKG9mZmVyPy5tdWx0aW1lZGlhPy5maW5kKChpbWc6IGFueSkgPT4gaW1nLmNvdmVyKSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZmZXI/Lm11bHRpbWVkaWE/LlswXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogKG9mZmVyPy5tdWx0aW1lZGlhPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5kZWZhdWx0aW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsQnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gYnRuPy5saW5rVmFsdWUgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9IGFzIEJhYnlsb25PZmZlclBvcHVwSTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2ZmZXJEYXRhID8/IG9mZmVyRGF0YTtcbiAgICB9XG5cbiAgICBtYXBNb2RhbFBvcHVwKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uTW9kYWxQb3B1cEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0SG9sZGVyLFxuICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoKG9wdGlvbjogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiBvcHRpb24/LnRpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBvcHRpb24/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBvcHRpb24/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb24/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShvcHRpb24sIGZhbHNlKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8ubW9kYWxpbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25Nb2RhbFBvcHVwSTtcbiAgICB9XG5cbiAgICBtYXBQcmVzc0xpc3QocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25QcmVzc0xpc3RJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyk/LlswXSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICB9IGFzIEJhYnlsb25QcmVzc0xpc3RJO1xuICAgIH1cblxuICAgIG1hcEFjdGlvbkJhbm5lcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkFjdGlvbkJhbm5lckkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5hY3Rpb25iYW5uZXJpbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1hZ2UyOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYWN0aW9uYmFubmVyaW1hZ2UyPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICB0YWJsZTogcHJvcHM/LnRleHRzPy50YWJsZSxcbiAgICAgICAgICAgIHNhbGExOiBwcm9wcz8udGV4dHM/LnNhbGExLFxuICAgICAgICAgICAgc2FsYTI6IHByb3BzPy50ZXh0cz8uc2FsYTIsXG4gICAgICAgIH0gYXMgQmFieWxvbkFjdGlvbkJhbm5lckk7XG4gICAgfVxuICAgIG1hcEluZm9aaWdaYWdDb3VudGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkluZm9aaWdaYWdDb3VudGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBpbWFnZXM6IChzdHJpbmcgfCBCYWJ5bG9uSW1hZ2VJKVtdIHwgdW5kZWZpbmVkID0gW107XG4gICAgICAgIGxldCB0ZXh0cywgdGFncztcbiAgICAgICAgY29uc3QgZGF0ZVN0YXJ0ID0gcHJvcHM/LnRleHRzPy5kYXRlc3RhcnQ7XG4gICAgICAgIGNvbnN0IGRhdGVGaW5pc2ggPSBwcm9wcz8udGV4dHM/LmRhdGVmaW5pc2g7XG4gICAgICAgIGlmIChwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMpIHtcbiAgICAgICAgICAgIGltYWdlcyA9IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGV4dHMgPSB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICAgICAodHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgIGNvbnRlbnR0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50dGl0bGU/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50dGl0bGUsXG4gICAgICAgICAgICAgICAgY29udGVudHN1YnRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnRzdWJ0aXRsZT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnRzdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICBjb250ZW50ZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudGRlc2NyaXB0aW9uPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudGRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8ubG9nbz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgaWNvbnM6IHByb3BzPy5WZW50YWphcz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtPy50aXRsZSB8fCBpdGVtPy50ZXh0XG4gICAgICAgICAgICAgICAgKT8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgIGljb25UaXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pY29udGl0bGU/LmNvbnRhaW4gPz8gcHJvcHM/LnRleHRzPy5pY29udGl0bGUsXG4gICAgICAgICAgICAgICAgZGF5c1RleHQ6IHByb3BzPy50ZXh0cz8uZGF5c3RleHQsXG4gICAgICAgICAgICAgICAgaG91cnNUZXh0OiBwcm9wcz8udGV4dHM/LmhvdXJzdGV4dCxcbiAgICAgICAgICAgICAgICBtaW51dGVzVGV4dDogcHJvcHM/LnRleHRzPy5taW51dGVzdGV4dCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0YWdzID0ge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjb250ZW50dGl0bGU6IHByb3BzPy50ZXh0cz8uY29udGVudHRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY29udGVudHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRlbnRzdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5jb250ZW50ZGVzY3JpcHRpb24/LnRhZyxcbiAgICAgICAgICAgICAgICBpY29uVGl0bGU6IHByb3BzPy50ZXh0cz8uaWNvbnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zLmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGV4dHMsXG4gICAgICAgICAgICBpbWFnZXMsXG4gICAgICAgICAgICB0YWdzLFxuICAgICAgICAgICAgZGF0ZVN0YXJ0LFxuICAgICAgICAgICAgZGF0ZUZpbmlzaCxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb1ppZ1phZ0NvdW50ZXJJO1xuICAgIH1cbiAgICBtYXBHckMySW1nKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uR3JDMkltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICh0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5ob3RlbHM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgIGltZzoge1xuICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgICAgIGFsdDogaXRlbT8ubXVsdGltZWRpYT8uWzBdPy5hbHQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uR3JDMkltZ0k7XG4gICAgfVxuICAgIG1hcExpc0M0VHh0SWNvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uTGlzQzRUeHRJY29JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHByb3BzO1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbWFnZVJlc3BvbnNlIHtcbiAgICBwYXRoOiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICB0aHVtYm5haWxzOiB7XG4gICAgICAgIDM3NTogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDU0MDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDc2ODogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDgwMDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDEwMjQ6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgICAgICAxMjgwOiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICAgICAgMTM2NjogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgfTtcbiAgICBjb3ZlcjogbnVtYmVyO1xuICAgIHRhZ3M/OiBhbnlbXTtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBwcmV0aXRsZT86IHN0cmluZztcbiAgICBzdWJ0aXRsZT86IHN0cmluZztcbiAgICBuZFRpdGxlPzogc3RyaW5nO1xuICAgIG5kU3VidGl0bGU/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgbGlua3M/OiBhbnlbXTtcbiAgICBidXR0b25zPzogYW55W107XG4gICAgYWx0Pzogc3RyaW5nO1xuICAgIGFjdGl2ZT86IGJvb2xlYW47XG4gICAgb3JkZXI/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VSZXNwb25zZVBhdGgge1xuICAgIG9yaWdpbmFsOiBzdHJpbmc7XG4gICAgd2VicDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudHNBZGRvbnMge1xuICAgIGNvbnRhY3RPZmZpY2U/OiBhbnk7XG4gICAgbWVudVNvY2lhbE1lZGlhPzogeyBbazogc3RyaW5nXTogc3RyaW5nIH1bXTtcbiAgICBjb25zdWx0VHlwZT86IENvbnN1bHRUeXBlSTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJPcHRpb24ge1xuICAgIGlkPzogbnVtYmVyO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgY2hpbGRyZW4/OiBGaWx0ZXJPcHRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50VmlldyB7XG4gICAgbmFtZTogVmlld3NUeXBlO1xuICAgIGRlZmF1bHQ6IGJvb2xlYW47XG59XG4iXX0=