ctt-babylon 0.14.0 → 0.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -694,6 +694,7 @@ export class MapperService {
694
694
  leve3: this.getTextValue(texts?.leve3),
695
695
  whatsapp: this.getTextValue(texts?.whatsapp),
696
696
  scrolltext: this.getTextValue(texts?.scrolltext ?? texts?.scrollDown),
697
+ address: this.getTextValue(texts?.address),
697
698
  addresstitle: this.getTextValue(texts?.addresstitle ?? texts?.addressTitle),
698
699
  bannertext: this.getTextValue(texts?.bannertext),
699
700
  contacttitle: this.getTextValue(texts?.contacttitle ?? texts?.contactTitle),
@@ -3502,4 +3503,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
3502
3503
  providedIn: 'root',
3503
3504
  }]
3504
3505
  }] });
3505
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvc2VydmljZXMvbWFwcGVyL21hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDSCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixXQUFXLEVBRVgsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQW1HNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQXlCbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFLbkUsTUFBTSxPQUFPLGFBQWE7SUFIMUI7UUFJcUIsWUFBTyxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQzVDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFNMUQsa0JBQWEsR0FBRyxNQUFNLENBQXFDLFNBQVMsQ0FBQyxDQUFDO1FBRXRFLFdBQU0sR0FBbUIsUUFBUSxDQUM3QixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLE1BQU0sQ0FDOUMsQ0FBQztRQUlNLGVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7S0FzbUo1QztJ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LEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7YUFDNUM7WUFFRCxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3RDLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVc7Z0JBQ2xDLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUk7Z0JBQ3hCLEdBQUcsRUFBRTtvQkFDRCxHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDbkQsR0FBRyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHO2lCQUNsQztnQkFDRCxJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO2FBQ3RDLENBQUMsQ0FBQztTQUNhLENBQUM7SUFDekIsQ0FBQztJQUNELGNBQWMsQ0FBQyxLQUFzQjtRQUNqQyxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOytHQXJuSlEsYUFBYTttSEFBYixhQUFhLGNBRlYsTUFBTTs7NEZBRVQsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIGNvbXB1dGVkLFxuICAgIGluamVjdCxcbiAgICBJbmplY3RhYmxlLFxuICAgIFBMQVRGT1JNX0lELFxuICAgIFNpZ25hbCxcbiAgICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQmFieWxvbjQwNEksXG4gICAgQmFieWxvbkFjdGlvbkJhbm5lckksXG4gICAgQmFieWxvbkFkZHJlc3NJdGVtLFxuICAgIEJhYnlsb25BZHZhbnRhZ2VzSSxcbiAgICBCYWJ5bG9uQmFubmVyR2FsbGVyeUksXG4gICAgQmFieWxvbkJhbm5lckluZm9JLFxuICAgIEJhYnlsb25CYW5uZXJOZXdzbGV0dGVySSxcbiAgICBCYWJ5bG9uQmxvZ0RldGFpbHNJLFxuICAgIEJhYnlsb25CbG9nTGlzdEksXG4gICAgQmFieWxvbkJyZWFkY3J1bWJJLFxuICAgIEJhYnlsb25Db21pbmdTb29uSSxcbiAgICBCYWJ5bG9uQ29udGFjdEFkZHJlc3NJLFxuICAgIEJhYnlsb25Db250YWN0Rm9ybUksXG4gICAgQmFieWxvbkNvbnRhY3RIb3dJLFxuICAgIEJhYnlsb25Db250YWN0TWFwYUksXG4gICAgQmFieWxvbkNvbnRhY3RNYXBJdGVtLFxuICAgIEJhYnlsb25FbmdpbmVJLFxuICAgIEJhYnlsb25FbmdpbmVNb2RhbEksXG4gICAgQmFieWxvbkVxdWlwbWVudEl0ZW0sXG4gICAgQmFieWxvbkV4dGVybmFsU2NyaXB0SSxcbiAgICBCYWJ5bG9uRmFxSSxcbiAgICBCYWJ5bG9uRmVhdHVyZXNTbGlkZXJJLFxuICAgIEJhYnlsb25GZWF0dXJlc1NsaWRlckl0ZW0sXG4gICAgQmFieWxvbkZsb2F0aW5nQnV0dG9uc0ksXG4gICAgQmFieWxvbkZvb3RlckNvbnRhY3RJLFxuICAgIEJhYnlsb25Gb290ZXJMaW5rc0ksXG4gICAgQmFieWxvbkZvb3RlckxvZ29zSSxcbiAgICBCYWJ5bG9uRm9vdGVyU29jaWFsSSxcbiAgICBCYWJ5bG9uR2FsbGVyeUZpbHRlcixcbiAgICBCYWJ5bG9uR2FsbGVyeUksXG4gICAgQmFieWxvbkdhbGxlcnlJdGVtLFxuICAgIEJhYnlsb25HckMySW1nSSxcbiAgICBCYWJ5bG9uSGVhZGVyQm9va1Nob3dJLFxuICAgIEJhYnlsb25IZWFkZXJDbGVhckksXG4gICAgQmFieWxvbkhlYWRlck1lbnVDZW50ZXJJLFxuICAgIEJhYnlsb25IZWFkZXJNZW51TG9nb0NlbnRlckksXG4gICAgQmFieWxvbkhlYWRlck1lbnVTaG93SSxcbiAgICBCYWJ5bG9uSGVhZEludHJvSSxcbiAgICBCYWJ5bG9uSG90ZWxzTGlzdEksXG4gICAgQmFieWxvbkhvdGVsc1NsaWRlckksXG4gICAgQmFieWxvbkluZm8yQ29sSW1nSSxcbiAgICBCYWJ5bG9uSW5mbzJpbWdCaWdJLFxuICAgIEJhYnlsb25JbmZvMmltZ0ksXG4gICAgQmFieWxvbkluZm80aW1nSSxcbiAgICBCYWJ5bG9uSW5mb0JpZ0ksXG4gICAgQmFieWxvbkluZm9HcmlkSSxcbiAgICBCYWJ5bG9uSW5mb0dyaWRJdGVtSSxcbiAgICBCYWJ5bG9uSW5mb0ltZ0ksXG4gICAgQmFieWxvbkluZm9JbWdTbGlkZXJJLFxuICAgIEJhYnlsb25JbmZvSW1nU2xpZGVySXRlbUksXG4gICAgQmFieWxvbkluZm9JbnRyb0ksXG4gICAgQmFieWxvbkluZm9aaWdaYWdDb3VudGVySSxcbiAgICBCYWJ5bG9uSW5mb1ppZ3phZ1YySSxcbiAgICBCYWJ5bG9uSW5mb1ppZ3phZ1YySXRlbSxcbiAgICBCYWJ5bG9uSXRlbXNHcmlkSSxcbiAgICBCYWJ5bG9uTGFuZ3VhZ2VNb2RhbEksXG4gICAgQmFieWxvbkxlZ2FsSSxcbiAgICBCYWJ5bG9uTGlzQzRUeHRJY29JLFxuICAgIEJhYnlsb25Nb2RhbE11bHRpcGxlTW90b3JzSSxcbiAgICBCYWJ5bG9uTmV3c2xldHRlckksXG4gICAgQmFieWxvbk9mZmVyRGV0YWlsSSxcbiAgICBCYWJ5bG9uT2ZmZXJJLFxuICAgIEJhYnlsb25PZmZlclBvcHVwSSxcbiAgICBCYWJ5bG9uT2ZmZXJQb3B1cFYySSxcbiAgICBCYWJ5bG9uT2ZmZXJTbGlkZXJJLFxuICAgIEJhYnlsb25PZmZlcnNMaXN0SSxcbiAgICBCYWJ5bG9uT2ZmZXJzTGlzdEl0ZW0sXG4gICAgQmFieWxvblByZXNzTGlzdEksXG4gICAgQmFieWxvblJvb21JbmZvSSxcbiAgICBCYWJ5bG9uUm9vbXNDb2xzSSxcbiAgICBCYWJ5bG9uUm9vbXNHcmlkSSxcbiAgICBCYWJ5bG9uUm9vbXNMaXN0RXF1aXBtZW50LFxuICAgIEJhYnlsb25Sb29tc0xpc3RJLFxuICAgIEJhYnlsb25Sb29tc0xpc3RJdGVtLFxuICAgIEJhYnlsb25Sb29tc1NsaWRlckksXG4gICAgQmFieWxvblNlcnZpY2VzU2xpZGVySSxcbiAgICBCYWJ5bG9uU2xpZGVyMkNvbEl0ZW1JLFxuICAgIEJhYnlsb25TbGlkZXIyaXRlbXNJLFxuICAgIEJhYnlsb25TbGlkZXIzSXRlbXNJLFxuICAgIEJhYnlsb25TbGlkZXI0Y29sTGFiZWxzLFxuICAgIEJhYnlsb25TbGlkZXJJdGVtLFxuICAgIEJhYnlsb25TdGF0aWNGb290ZXJJLFxuICAgIEJhYnlsb25TdWJtZW51SSxcbiAgICBCYWJ5bG9uVGhhbmtzSSxcbiAgICBCYWJ5bG9uVG9wU2xpZGVySSxcbiAgICBCYWJ5bG9uVG9wU2xpZGVySXRlbSxcbiAgICBCYWJ5bG9uVG9wU2xpZGVyVGh1bWJzSSxcbiAgICBCYWJ5bG9uVG9wU2xpZGVyVjJJLFxuICAgIEJhYnlsb25Ub3BTbGlkZXJWaWRlb0ksXG4gICAgQmFieWxvbldlYm1hcEksXG4gICAgRHJvcGRvd25PcHRpb24sXG59IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY29yZSc7XG5pbXBvcnQgeyBCYWJ5bG9uR2xvYmFsTW9kYWxJIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb3JlL2JhYnlsb24tZ2xvYmFsLW1vZGFsJztcbmltcG9ydCB7IEJhYnlsb25JdGVtR3JpZEkgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvcmUvYmFieWxvbi1saXN0LWdyaWQvYmFieWxvbi1saXN0LWdyaWQuY29tcG9uZW50JztcbmltcG9ydCB7IEJhYnlsb25MaXN0R3JpZEkgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvcmUvYmFieWxvbi1saXN0LWdyaWQvYmFieWxvbi1saXN0LWdyaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25Nb2RhbFBvcHVwSSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY29yZS9iYWJ5bG9uLW1vZGFsLXBvcHVwJztcbmltcG9ydCB7IEJhYnlsb25TdGF0aWNGb290ZXJWMkkgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvcmUvYmFieWxvbi1zdGF0aWMtZm9vdGVyLXYyL2JhYnlsb24tc3RhdGljLWZvb3Rlci12Mi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUm9vbVNlcnZpY2VUeXBlIH0gZnJvbSAnLi4vLi4vRW51bS9zZXJ2aWNlcy5lbnVtJztcbmltcG9ydCB7IFZpZXdzVHlwZSB9IGZyb20gJy4uLy4uL0VudW0vdmlld3MuZW51bSc7XG5pbXBvcnQge1xuICAgIEJhYnlsb25CdXR0b25JLFxuICAgIEJhYnlsb25Db250YWN0SW5mb0ksXG4gICAgQmFieWxvbkRyb3Bkb3duSSxcbiAgICBCYWJ5bG9uR2xvYmFsSWNvbkksXG4gICAgQmFieWxvbkltYWdlSSxcbiAgICBCYWJ5bG9uSW5wdXRJLFxuICAgIEJhYnlsb25NZW51QnV0dG9uSSxcbiAgICBCYWJ5bG9uTWVudUluZm9JLFxuICAgIEJhYnlsb25PZmZlckl0ZW1JLFxuICAgIEJhYnlsb25Sb29tRGV0YWlsSSxcbiAgICBCYWJ5bG9uVGV4dEluZm9JLFxuICAgIEJvZHlDb21wb25lbnQsXG4gICAgQ09NUE9ORU5UU19FWFRSQSxcbiAgICBDb25zdWx0VHlwZUksXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQmFieWxvbkFkdmFudGFnZUl0ZW1JIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWFkdmFudGFnZXMtaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFieWxvbkRlc3RpbmF0aW9uSSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi1kZXN0aW5hdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFieWxvbkdsb2JhbEV4cGVyaWVuY2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24tZ2xvYmFsLWV4cGVyaWVuY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25HbG9iYWwgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24tZ2xvYmFsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWJ5bG9uR2xvYmFsc0ZhcUdyb3VwIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWdsb2JhbHMtZmFxcy1ncm91cC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFieWxvbkdsb2FibHNHYWxsZXJ5RmlsdGVyIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWdsb2JhbHMtZ2FsbGVyeS1maWx0ZXJzJztcbmltcG9ydCB7IEJhYnlsb25Ib3RlbEdsb2JhbEl0ZW0gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24taG90ZWwuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25JdGVtSSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBjbGVhbkRlZXAgfSBmcm9tICcuLi8uLi91dGlscy9jbGVhbi1wcm9wcyc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWxzJztcbmltcG9ydCB7IFNjcmVlblNpemVyU2VydmljZSB9IGZyb20gJy4uL3NjcmVlbi1zaXplcic7XG5pbXBvcnQgeyBTSVRFX0NPTkZJR19TRVJWSUNFX1RPS0VOIH0gZnJvbSAnLi9tYXBwZXIuc2VydmljZS50b2tlbic7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1hcHBlclNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2l0ZVN2YyA9IGluamVjdChTSVRFX0NPTkZJR19TRVJWSUNFX1RPS0VOKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNjcmVlblNpemVyID0gaW5qZWN0KFNjcmVlblNpemVyU2VydmljZSk7XG5cbiAgICBnZXQgaXNNaW5GdWxsVGFibGV0SW5zdGFudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NyZWVuU2l6ZXIubWluRnVsbFRhYmxldEluc3RhbnQoKTtcbiAgICB9XG5cbiAgICBoZWFkZXJCdXR0b25zID0gc2lnbmFsPFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgICBzaXRlSWQ6IFNpZ25hbDxudW1iZXI+ID0gY29tcHV0ZWQoXG4gICAgICAgICgpID0+IHRoaXMuc2l0ZVN2Yy53ZWJDb25maWdJbnN0YW50Py5zaXRlSURcbiAgICApO1xuXG4gICAgZmxvYXRpbmdCdXR0b25zPzogQmFieWxvbkZsb2F0aW5nQnV0dG9uc0k7XG5cbiAgICBwcml2YXRlIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuXG4gICAgZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICBpbWFnZTogSW1hZ2VSZXNwb25zZSB8IHVuZGVmaW5lZCxcbiAgICAgICAgaXNGaWd1cmUgPSB0cnVlXG4gICAgKTogc3RyaW5nIHwgQmFieWxvbkltYWdlSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBzZWxlY3RlZEltYWdlO1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2NyZWVuU2l6ZXIubW9iaWxlKCkpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/LlszNzVdPy53ZWJwO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzU21hbGxUYWJsZXRJbnN0YW50KCkpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/Lls1NDBdPy53ZWJwO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzTWVkaXVtVGFibGV0SW5zdGFudCgpKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bNzY4XT8ud2VicDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5pc0Z1bGxUYWJsZXRJbnN0YW50KCkpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/LlsxMDI0XT8ud2VicDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5pc1NtYWxsRGVza3RvcEluc3RhbnQoKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzEyODBdPy53ZWJwO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLm1pbk1lZGl1bURlc2t0b3AoKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8ucGF0aD8ud2VicDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bMTM2Nl0/LndlYnA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkSW1hZ2VcbiAgICAgICAgICAgID8gaXNGaWd1cmVcbiAgICAgICAgICAgICAgICA/IGAke3RoaXMuc2l0ZVN2Yy5jZG5JbWFnZXNJbnN0YW50fSR7c2VsZWN0ZWRJbWFnZX1gXG4gICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgc3JjOiBgJHt0aGlzLnNpdGVTdmMuY2RuSW1hZ2VzSW5zdGFudH0ke3NlbGVjdGVkSW1hZ2V9YCxcbiAgICAgICAgICAgICAgICAgICAgICBhbHQ6IGltYWdlPy5hbHQsXG4gICAgICAgICAgICAgICAgICAgICAgbmRUaXRsZTogaW1hZ2U/Lm5kVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltYWdlPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICBpbWFnZXM6IEltYWdlUmVzcG9uc2VbXSB8IHVuZGVmaW5lZCxcbiAgICAgICAgaXNGaWd1cmUgPSB0cnVlXG4gICAgKTogKHN0cmluZyB8IEJhYnlsb25JbWFnZUkpW10gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gaW1hZ2VzPy5tYXAoKGltZykgPT4gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nLCBpc0ZpZ3VyZSkhKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlQWdlc09wdGlvbnMoXG4gICAgICAgIG1heExlbmd0aDogbnVtYmVyLFxuICAgICAgICBtaW5MZW5ndGggPSAwXG4gICAgKTogRHJvcGRvd25PcHRpb25bXSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnM6IERyb3Bkb3duT3B0aW9uW10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IG1pbkxlbmd0aDsgaSA8PSBtYXhMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgb3B0aW9ucy5wdXNoKHsgY29kZTogaSwgbmFtZTogaSA8IDEwID8gYDAke2l9YCA6IGAke2l9YCB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG5cbiAgICBtYXBHbG9iYWxzQm9keUV4dHJhKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBhbnkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBuYW1lX0lkZW50aWZpZXIgPVxuICAgICAgICAgICAgdHlwZW9mIHByb3BzID09ICdzdHJpbmcnID8gcHJvcHMgOiBwcm9wcz8ubmFtZUlkZW50aWZpZXI7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lSWRlbnRpZmllcjogdGhpcy5nZXRUZXh0VmFsdWUobmFtZV9JZGVudGlmaWVyKSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBCb2R5RXh0cmEoXG4gICAgICAgIGJvZHk6IGFueVtdIHwgdW5kZWZpbmVkXG4gICAgKTogQm9keUNvbXBvbmVudDxDT01QT05FTlRTX0VYVFJBPltdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgYm9keU1hcHBlZDogQm9keUNvbXBvbmVudDxDT01QT05FTlRTX0VYVFJBPltdIHwgdW5kZWZpbmVkID1cbiAgICAgICAgICAgIGJvZHk/Lm1hcCgoY29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50TWFwcGVkOiBCb2R5Q29tcG9uZW50PENPTVBPTkVOVFNfRVhUUkE+ID0ge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGNvbXBvbmVudC5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHt9LFxuICAgICAgICAgICAgICAgIH0gYXMgQm9keUNvbXBvbmVudDxDT01QT05FTlRTX0VYVFJBPjtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ21lbnUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTdWJtZW51KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBCYWJ5bG9uU3VibWVudUk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9ICdtZW51JztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdob3RlbHR5cGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHbG9iYWxzQm9keUV4dHJhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBCYWJ5bG9uR2xvYmFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPSAnaG90ZWx0eXBlJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdob3RlbGNhdGVnb3J5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR2xvYmFsc0JvZHlFeHRyYShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgQmFieWxvbkdsb2JhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID0gJ2hvdGVsY2F0ZWdvcnknO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RpY2tlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdsb2JhbHNCb2R5RXh0cmEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIEJhYnlsb25HbG9iYWw7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9ICd0aWNrZXInO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudE1hcHBlZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYm9keU1hcHBlZDtcbiAgICB9XG5cbiAgICBtYXBTdWJtZW51KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uU3VibWVudUkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZCA9IHByb3BzPy5pdGVtcz8uZmluZCgoaXRlbTogYW55KSA9PiBpdGVtLnNlbGVjdGVkKTtcbiAgICAgICAgY29uc3Qgc3VibWVudSA9IHtcbiAgICAgICAgICAgIGhvdGVsOiBwcm9wcz8uaG90ZWwsXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lml0ZW1zXG4gICAgICAgICAgICAgICAgPy5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5hY3RpdmUpXG4gICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbGluaz8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgc3R5bGVzOiBwcm9wcz8uc3R5bGVzLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IHtcbiAgICAgICAgICAgICAgICBsYWJlbDogc2VsZWN0ZWQ/Lm5hbWUsXG4gICAgICAgICAgICAgICAgdXJsOiBzZWxlY3RlZD8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgICAgIHN0eWxlczogcHJvcHM/LnN0eWxlcyxcbiAgICAgICAgICAgIH0gYXMgQmFieWxvbkJ1dHRvbkksXG4gICAgICAgIH0gYXMgQmFieWxvblN1Ym1lbnVJO1xuXG4gICAgICAgIHJldHVybiBzdWJtZW51O1xuICAgIH1cblxuICAgIG1hcENvbXBvbmVudHM8VD4oXG4gICAgICAgIGJvZHk6IGFueVtdLFxuICAgICAgICBhZGRvbnM/OiBDb21wb25lbnRzQWRkb25zXG4gICAgKTogQm9keUNvbXBvbmVudDxUPltdIHtcbiAgICAgICAgaWYgKCFib2R5IHx8ICFib2R5Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdIGFzIEJvZHlDb21wb25lbnQ8VD5bXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZWFyY2hIb3RlbFN0eWxlcyA9ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBib2R5Py5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5uYW1lID09PSAnc3R5bGVzJyk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGJvZHlNYXBwZWQ6IEJvZHlDb21wb25lbnQ8VD5bXSA9IGJvZHlcbiAgICAgICAgICAgID8uZmlsdGVyKFxuICAgICAgICAgICAgICAgIChjb21wb25lbnQpID0+IGNvbXBvbmVudCAhPT0gbnVsbCAmJiBjb21wb25lbnQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgPy5tYXAoKGNvbXBvbmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudE1hcHBlZDogQm9keUNvbXBvbmVudDxUPiA9IHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiBjb21wb25lbnQub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgYWxpYXM6IGNvbXBvbmVudC5hbGlhcyxcbiAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcjogY29tcG9uZW50LmlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcjogY29tcG9uZW50LnRleHRjb2xvcixcbiAgICAgICAgICAgICAgICB9IGFzIEJvZHlDb21wb25lbnQ8VD47XG5cbiAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50LnByb3BzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vSXQgaXMgbmVjZXNzYXJ5LCBvdGhlcndpc2UgaXQgZ2l2ZXMgYW4gZXJyb3IgYW5kIGRvZXMgbm90IHNob3cgY29tcG9uZW50c1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21vZHVsZTQwNCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwNDA0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy0tLS0gTEFZT1VUIENPTVBPTkVOVFMgLS0tLS8vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndG9wc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUb3BTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0b3BzbGlkZXJ2aWRlbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwVG9wU2xpZGVyVmlkZW8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RvcHNsaWRlcnYybGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndG9wc2xpZGVydjJyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwVG9wU2xpZGVyVjIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9PT0gJ3RvcHNsaWRlcnYycmlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2ltZyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2ltZ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW1nbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0ltZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PSAnaW5mb2ltZ3JpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC50ZXh0Y29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW1nc2xpZGVycmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbWdzbGlkZXJsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvSW1nU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luZm9pbWdzbGlkZXJyaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW50cm8nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9JbnRybyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm8yaW1nbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbzJpbWdyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mbzJpbWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9PT0gJ2luZm8yaW1ncmlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbzJjb2xpbWdyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mbzJjb2xpbWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9PT0gJ2luZm8yY29saW1ncmlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbzJjb2xpbWdsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvMmNvbGltZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PSAnaW5mbzJjb2xpbWdsZWZ0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm8zaW1nJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvSW1nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQudGV4dGNvbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ppZ3phZ2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm96aWd6YWdyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwWmlnemFnKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPT09ICdpbmZvemlnemFncmlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2dyaWQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9HcmlkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyMmNvbGxlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjJjb2xyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyQ29sbDIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9PT0gJ3NsaWRlcjJjb2xyaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIzY29sJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXJDb2xsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXI0Y29sJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXJDb2xsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpdGVtc2dyaWQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEl0ZW1zR3JpZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Jvb21zc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBSb29tc1NsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Jvb21zZ3JpZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUm9vbXNHcmlkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmFubmVyZ2FsbGVyeSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQmFubmVyR2FsbGVyeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWRnYWxsZXJ5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHcmlkR2FsbGVyeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jhbm5lcm5ld3NsZXR0ZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBCYW5uZXJOZXdzbGV0dGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcnNzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE9mZmVyU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8tLS0tIExBWU9VVCBDT01QT05FTlRTIEVORC0tLS0vL1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndGhhbmtzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUaGFua3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhY3Rmb3JtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb250YWN0Zm9ybXYyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBDb250YWN0Rm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG9ucz8uY29udGFjdE9mZmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG9ucz8uY29uc3VsdFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhY3Rob3cnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENvbnRhY3RIb3coXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3dlYm1hcCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwV2VibWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb250YWN0bWFwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBDb250YWN0TWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsZWdhbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTGVnYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Jvb21zY29scyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUm9vbXNDb2xzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyb29tZGV0YWlscyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUm9vbURldGFpbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndG9wc2xpZGVydGh1bWJzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUb3BTbGlkZXJUaHVtYnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2ZlYXR1cmVzc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGZWF0dXJlc1NsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmFubmVyaW5mbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQmFubmVySW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncm9vbXNsaXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBSb29tc0xpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbWluZ3Nvb24nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENvbWluZ1Nvb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyZGV0YWlsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlckRldGFpbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb2ZmZXJzbGlzdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJzTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZmFxJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGYXEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXRpY2Zvb3Rlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU3RhdGljRm9vdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdnYWxsZXJ5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaXNjMmltZ3ZpZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR2FsbGVyeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbmF2JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBNZW51KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkb25zPy5tZW51U29jaWFsTWVkaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xhbmd1YWdlc21vZGFsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsYW5ndWFnZXNtb2RhdjInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcExhbmd1YWdlTW9kYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjNpdGVtcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM0l0ZW1zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdob3RlbHNzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEhvdGVsc1NsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaG90ZWxzbGlzdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSG90ZWxzTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbzRpbWcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm80SW1nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzZXJ2aWNlc3NsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2VydmljZXNTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsb2NhdGlvbmFkZHJlc3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhY3RhZGRyZXNzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBDb250YWN0QWRkcmVzcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYWR2YW50YWdlcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQWR2YW50YWdlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2JpZyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0JpZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ppZ3phZ3YybGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb1ppZ1phZ1YyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvemlnemFndjJyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb1ppZ1phZ1YyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJjb250YWN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJDb250YWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvMmltZ2JpZyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mbzJJbWdCaWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3RlcmxpbmtzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJMaW5rcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVybG9nb3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckxvZ29zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcnNsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3RlcnNvY2lhbHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlclNvY2lhbHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjJpdGVtcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyMml0ZW1zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzdGF0aWNmb290ZXJ2Mic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU3RhdGljRm9vdGVydjIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3RncmlkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXN0R3JpZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbmV3c2xldHRlcm1vZGFsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBOZXdzbGV0dGVyTW9kYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hlYWRpbnRybyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSGVhZEludHJvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdicmVhZGNydW1icyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQnJlYWRjcnVtYnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcmJhbm5lcnYyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlckJhbm5lclYyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ2xvYmFsbW9kYWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dsb2JhbG1vZGFsMic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR2xvYmFsTW9kYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtZW51JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlYXJjaEhvdGVsU3R5bGVzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1snc3R5bGVzJ10gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEhvdGVsU3R5bGVzKClbMF0/LnByb3BzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU3VibWVudShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NwYWxvcGlhJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBFeHRlcm5hbFNjcmlwdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jsb2dsaXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCbG9nTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jsb2dkZXRhaWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJsb2dEZXRhaWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcmJhbm5lcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJCYW5uZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtb2RhbG11bHRpcGxlbW90b3JzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwTW9kYWxNdWx0aXBsZU1vdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbW9kYWxwb3B1cCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTW9kYWxQb3B1cChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncHJlc3NsaXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBQcmVzc0xpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2FjdGlvbmJhbm5lcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQWN0aW9uQmFubmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvemlnemFnY291bnRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcEluZm9aaWdaYWdDb3VudGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmMyaW1nJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHckMySW1nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzYzR0eHRpY28nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcExpc0M0VHh0SWNvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdsb2JhbHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRvbnM/LmNvbnRhY3RPZmZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRvbnM/LmNvbnN1bHRUeXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRNYXBwZWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGJvZHlNYXBwZWQ7XG4gICAgfVxuXG4gICAgbWFwR2xvYmFscyhcbiAgICAgICAgY29tcG9uZW50OiBhbnksXG4gICAgICAgIG5kUHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgbmRQcm9wc0NvbnN1bHQ6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IGFueSB7XG4gICAgICAgIGlmICghY29tcG9uZW50KSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIGxldCB7IHByb3BzIH0gPSBjb21wb25lbnQ7XG4gICAgICAgIHByb3BzID0gcHJvcHMgPz8gY29tcG9uZW50O1xuICAgICAgICBsZXQgcmVzdWx0ID0ge1xuICAgICAgICAgICAgaWRlbnRpZmllcjogY29tcG9uZW50Py5pZGVudGlmaWVyLFxuICAgICAgICAgICAgYm9keWV4dHJhOiB0aGlzLm1hcEdsb2JhbHNCb2R5RXh0cmEocHJvcHMpLFxuICAgICAgICAgICAgdGV4dHM6IHRoaXMubWFwR2xvYmFsVGV4dHMocHJvcHM/LnRleHRzKSBhcyBCYWJ5bG9uVGV4dEluZm9JLFxuICAgICAgICAgICAgcmlnaHRTaWRlOiBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcygncmlnaHQnKSwgLy9UT0RPIGNoYW5nZVxuICAgICAgICAgICAgbGVmdFNpZGU6IGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdsZWZ0JyksIC8vVE9ETyBjaGFuZ2VcbiAgICAgICAgICAgIGl0ZW1zOiB0aGlzLm1hcEdsb2JhbEl0ZW1zKHByb3BzKSxcbiAgICAgICAgICAgIGxpc3RzOiB0aGlzLm1hcEdsb2JhbHNGYXFzKHByb3BzPy5GYXFzKSxcbiAgICAgICAgICAgIHNlcnZpY2VzOiB0aGlzLm1hcEdsb2JhbFNlcnZpY2VzKFxuICAgICAgICAgICAgICAgIHByb3BzPy5zZXJ2aWNlc1NlcnZpY2UgPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmVxdWlwbWVudCA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8uc2VydmljZXNTZXJ2aWNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZXZlbnRzOiB0aGlzLm1hcEV2ZW50c0dsb2JhbChwcm9wcz8uZXZlbnRzID8/IHByb3BzPy5ldmVudCksXG4gICAgICAgICAgICBvZmZlcnM6IHRoaXMubWFwT2ZmZXJzR2xvYmFsKHByb3BzPy5vZmZlcnMpLFxuICAgICAgICAgICAgb2ZmZXI6IHRoaXMubWFwT2ZmZXJEZXRhaWwocHJvcHMpLFxuICAgICAgICAgICAgbXVsdGltZWRpYTogdGhpcy5tYXBJbWFnZXMocHJvcHM/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgYWRkcmVzczogdGhpcy5tYXBBZGRyZXNzKHByb3BzPy5hZGRyZXNzKSxcbiAgICAgICAgICAgIGFkZHJlc3NIb3RlbHM6IHRoaXMubWFwR2xvYmFsQWRkcmVzc0hvdGVscyhwcm9wcyksXG4gICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICBwcm9wcz8ubGlua3M/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy5saW5rc1xuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy5saW5rcz8uTGlua3M/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LmxpbmtzPy5MaW5rcz8uWzBdXG4gICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8ubGlua3M/LmNvbnRhY3Q/LlswXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZvb3RlckxpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uZm9vdGVyTGlua3M/LlswXSksXG4gICAgICAgICAgICBwYWdlczogKFxuICAgICAgICAgICAgICAgIHByb3BzPy5wYWdlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGluay5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbGluay51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgICAgICkgYXMgQmFieWxvbkJ1dHRvbklbXVxuICAgICAgICAgICAgKT8uZmlsdGVyKFxuICAgICAgICAgICAgICAgIChsaW5rKSA9PlxuICAgICAgICAgICAgICAgICAgICBsaW5rLnVybD8uc3BsaXQoJy8nKVsxXSA9PT1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlU3ZjLnNlbGVjdGVkTGFuZ3VhZ2VJbnN0YW50Py5sb2NhdGVcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgICAgIGFkdmFudGFnZXM6IHRoaXMubWFwQWR2YW50YWdlc0dsb2JhbChcbiAgICAgICAgICAgICAgICBwcm9wcz8uVmVudGFqYXMgPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LkFkdmFudGFnZXMgPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lmxpc3QgPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lmxpc3RzID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5MaXN0c1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWVNb3JlOiBwcm9wcz8udGV4dHM/LmFkdmFudGFnZXNzZWVtb3JlLFxuICAgICAgICAgICAgc2VlTGVzczogcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2Vzc2VlbGVzcyxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYWR2YW50YWdlc2ltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICByb29tczogdGhpcy5tYXBSb29tRGV0YWlscyhwcm9wcz8ucm9vbXMgPz8gcHJvcHM/LnJvb20pLFxuICAgICAgICAgICAgY29udGFjdEluZm86IHRoaXMubWFwQ29udGFjdEluZm8ocHJvcHM/LnRleHRzKSxcbiAgICAgICAgICAgIHNvY2lhbE1lZGlhOiBwcm9wcz8uc29jaWFsTWVkaWE/Lm1hcCgoc206IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGljb246IHNtLmljb24sXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHNtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHVybDogc20udXJsLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGhvdGVsczogdGhpcy5tYXBIb3RlbHNHbG9iYWwocHJvcHM/LmhvdGVscyksXG4gICAgICAgICAgICBkZXN0aW5hdGlvbnM6IHRoaXMubWFwR2xvYmFsRGVzdGluYXRpb25zKHByb3BzPy5kZXN0aW5hdGlvbnMpLFxuICAgICAgICAgICAgZXhwZXJpZW5jZXM6IHRoaXMubWFwR2xvYmFsRXhwZXJpZW5jZXMocHJvcHM/LmV4cGVyaWVuY2UpLFxuICAgICAgICAgICAgY29uc3VsdFR5cGVzOiB0aGlzLm1hcEdsb2JhbENvbnN1bHRUeXBlcyhwcm9wcywgbmRQcm9wc0NvbnN1bHQpLFxuICAgICAgICAgICAgZmlsdGVyczogdGhpcy5tYXBHbG9iYWxzRmlsdGVycyhwcm9wcz8uZmlsdGVycyksXG4gICAgICAgIH0gYXMgQmFieWxvbkdsb2JhbDtcbiAgICAgICAgcmV0dXJuIGNsZWFuRGVlcChyZXN1bHQsIHtcbiAgICAgICAgICAgIHJlbW92ZU51bGw6IHRydWUsXG4gICAgICAgICAgICByZW1vdmVFbXB0eVN0cmluZzogdHJ1ZSxcbiAgICAgICAgICAgIHBydW5lRW1wdHk6IHRydWUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG1hcEdsb2JhbEFkZHJlc3NIb3RlbHMocHJvcHM6IGFueSk6IEJhYnlsb25BZGRyZXNzSXRlbVtdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgLy8gMS4gSW50ZW50YW1vcyBvYnRlbmVyIGxhIGZ1ZW50ZSBkZSBkYXRvcyAoY29udGVtcGxhbW9zIGFtYm9zIG5vbWJyZXMgZGUgcHJvcGllZGFkKVxuICAgICAgICBjb25zdCByYXdTb3VyY2UgPSBwcm9wcz8uaG90ZWxBZGRyZXNzZXMgPz8gcHJvcHM/LmFkZHJlc3NIb3RlbHM7XG5cbiAgICAgICAgaWYgKHJhd1NvdXJjZSkge1xuICAgICAgICAgICAgLy8gQXBsYW5hbW9zIGVsIGFycmF5IHNpbiBpbXBvcnRhciBsYSBwcm9mdW5kaWRhZCBbW3suLi59XV0gLT4gW3suLi59XVxuICAgICAgICAgICAgY29uc3QgZmxhdEFkZHJlc3NlcyA9IEFycmF5LmlzQXJyYXkocmF3U291cmNlKVxuICAgICAgICAgICAgICAgID8gcmF3U291cmNlLmZsYXQoSW5maW5pdHkpXG4gICAgICAgICAgICAgICAgOiBbcmF3U291cmNlXTtcblxuICAgICAgICAgICAgLy8gRmlsdHJhbW9zIHBhcmEgYXNlZ3VyYXIgcXVlIHNvbG8gcHJvY2VzYW1vcyBvYmpldG9zIHbDoWxpZG9zXG4gICAgICAgICAgICBjb25zdCB2YWxpZEFkZHJlc3NlcyA9IGZsYXRBZGRyZXNzZXMuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChhZGRyZXNzOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgIGFkZHJlc3MgJiZcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGFkZHJlc3MgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAgICAgICAgICFBcnJheS5pc0FycmF5KGFkZHJlc3MpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAodmFsaWRBZGRyZXNzZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWxpZEFkZHJlc3Nlcy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChhZGRyZXNzOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBhZGRyZXNzLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGFkZHJlc3MubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiBhZGRyZXNzLmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2l0eTogYWRkcmVzcy5jaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpbmNlOiBhZGRyZXNzLnByb3ZpbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IGFkZHJlc3MuY291bnRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcDogYWRkcmVzcy5jcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGFkZHJlc3MubGluayA/PyBhZGRyZXNzLnVybCwgLy8gU29wb3J0ZSBwYXJhIGFtYm9zIG5vbWJyZXMgZGUgbGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBob25lOiBhZGRyZXNzLnBob25lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsOiBhZGRyZXNzLmVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxfYWRkcmVzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcy5mdWxsQWRkcmVzcyA/PyBhZGRyZXNzLmZ1bGxfYWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25BZGRyZXNzSXRlbVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyAyLiBDYXNvIEZhbGxiYWNrOiBNYXBlbyBkaW7DoW1pY28gZGVzZGUgbG9zIHRleHRvcyAoYWRkcmVzc2xpc3RYWClcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwRHluYW1pY0FkZHJlc3Nlc0Zyb21UZXh0cyhwcm9wcz8udGV4dHMpO1xuICAgIH1cblxuICAgIC8qKiBIZWxwZXIgcGFyYSBsaW1waWFyIGVsIGPDs2RpZ28gcHJpbmNpcGFsICovXG4gICAgcHJpdmF0ZSBtYXBEeW5hbWljQWRkcmVzc2VzRnJvbVRleHRzKFxuICAgICAgICB0ZXh0czogYW55XG4gICAgKTogQmFieWxvbkFkZHJlc3NJdGVtW10gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXRleHRzKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIGNvbnN0IGFkZHJlc3Nlc01hcDogeyBba2V5OiBzdHJpbmddOiBQYXJ0aWFsPEJhYnlsb25BZGRyZXNzSXRlbT4gfSA9IHt9O1xuXG4gICAgICAgIE9iamVjdC5rZXlzKHRleHRzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIGlmIChrZXkuc3RhcnRzV2l0aCgnYWRkcmVzc2xpc3QnKSAmJiB0ZXh0c1trZXldKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBrZXkubWF0Y2goL2FkZHJlc3NsaXN0KFxcZCspKC4qKS8pO1xuICAgICAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IG1hdGNoWzFdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IG1hdGNoWzJdO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghYWRkcmVzc2VzTWFwW2luZGV4XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzTWFwW2luZGV4XSA9IHsgaWQ6IGluZGV4IH07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRleHRzW2tleV07XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1RpdGxlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzZXNNYXBbaW5kZXhdLm5hbWUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0FkZHJlc3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3Nlc01hcFtpbmRleF0uYWRkcmVzcyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3Nlc01hcFtpbmRleF0uZnVsbF9hZGRyZXNzID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdUZWxmJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzZXNNYXBbaW5kZXhdLnBob25lID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IE9iamVjdC52YWx1ZXMoYWRkcmVzc2VzTWFwKSBhcyBCYWJ5bG9uQWRkcmVzc0l0ZW1bXTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5sZW5ndGggPiAwID8gcmVzdWx0IDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcEdsb2JhbEV4cGVyaWVuY2VzKFxuICAgICAgICBleHBlcmllbmNlczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkdsb2JhbEV4cGVyaWVuY2VbXSB7XG4gICAgICAgIHJldHVybiBleHBlcmllbmNlc1xuICAgICAgICAgICAgPy5maWx0ZXIoKGV4cGVyaWVuY2U6IGFueSkgPT4gZXhwZXJpZW5jZS5hY3RpdmUpXG4gICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAoZXhwZXJpZW5jZTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBleHBlcmllbmNlLmFjdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE6IHRoaXMubWFwTXVsdGltZWRpYShleHBlcmllbmNlPy5tdWx0aW1lZGlhKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVyaWVuY2U/LmxpbmsgPz8gZXhwZXJpZW5jZT8ubGlua3NcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGV4cGVyaWVuY2U/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGV4cGVyaWVuY2U/Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHRoaXMubWFwR2xvYmFsVGV4dHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZXJpZW5jZT8udGV4dHNcbiAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgQmFieWxvblRleHRJbmZvSSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBleHBlcmllbmNlPy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVJZGVudGlmaWVyOiBleHBlcmllbmNlPy5uYW1lSWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogZXhwZXJpZW5jZT8udXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogZXhwZXJpZW5jZT8udHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdGVsczogZXhwZXJpZW5jZT8uaG90ZWxzPy5tYXAoKGhvdGVsOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGhvdGVsPy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lSWRlbnRpZmllcjogaG90ZWw/Lm5hbWVJZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSG90ZWxHbG9iYWxJdGVtXG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIG1hcEdsb2JhbHNGaWx0ZXJzKFxuICAgICAgICBmaWx0ZXJzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uR2xvYWJsc0dhbGxlcnlGaWx0ZXIgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZmlsdGVyczogZmlsdGVycz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICBhbGw6IGl0ZW0uYWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm9vbTogaXRlbS5yb29tLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm9vbXM6IGl0ZW0ucm9vbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25HYWxsZXJ5RmlsdGVyXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1hZ2VzOiBmaWx0ZXJzXG4gICAgICAgICAgICAgICAgPy5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjYzogeyBtdWx0aW1lZGlhOiBhbnlbXTsgZmlsdGVySW5kZXg6IG51bWJlciB9W10sXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGFueSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlckluZGV4OiBudW1iZXJcbiAgICAgICAgICAgICAgICAgICAgKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyLm11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtdWx0aW1lZGlhV2l0aEZpbHRlciA9IGZpbHRlci5tdWx0aW1lZGlhLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGZpbHRlckluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhOiBtdWx0aW1lZGlhV2l0aEZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlckluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZmxhdE1hcCgoeyBtdWx0aW1lZGlhIH06IGFueSkgPT4gbXVsdGltZWRpYSlcbiAgICAgICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcsIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGltZz8uZmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkdhbGxlcnlJdGVtXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uR2xvYWJsc0dhbGxlcnlGaWx0ZXI7XG4gICAgfVxuXG4gICAgbWFwR2xvYmFsQ29uc3VsdFR5cGVzKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBuZFByb3BzQ29uc3VsdDogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogYW55IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgY29uc3VsdFR5cGVzID0gcHJvcHM/LmNvbnN1bHRUeXBlcz8uWzBdPy5jb25zdWx0VHlwZUlkXG4gICAgICAgICAgICA/IHByb3BzPy5jb25zdWx0VHlwZXNcbiAgICAgICAgICAgIDogcHJvcHM/Lmxlbmd0aCAmJiBwcm9wcz8uWzBdPy5jb25zdWx0VHlwZXNcbiAgICAgICAgICAgICAgPyBwcm9wc1xuICAgICAgICAgICAgICA6IG5kUHJvcHNDb25zdWx0O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgb3B0aW9uczogY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN1bHRUeXBlSWQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcC5jb25zdWx0X3R5cGVfaWQgPz8gcHJvcC5jb25zdWx0VHlwZUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogcHJvcC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByb3AubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5kcm9wZG93blBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JSZXF1aXJlZCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBHbG9iYWxEZXN0aW5hdGlvbnMoXG4gICAgICAgIGRlc3RpbmF0aW9uczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkRlc3RpbmF0aW9uSVtdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFkZXN0aW5hdGlvbnMpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgICAgY29uc3Qgbm9ybWFsaXplRGVzdGluYXRpb24gPSAoXG4gICAgICAgICAgICBkOiBhbnksXG4gICAgICAgICAgICBpbmRleDogbnVtYmVyXG4gICAgICAgICk6IEJhYnlsb25EZXN0aW5hdGlvbkkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBkID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogZCxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFtdLFxuICAgICAgICAgICAgICAgICAgICBob3RlbHM6IFtdLFxuICAgICAgICAgICAgICAgIH0gYXMgQmFieWxvbkRlc3RpbmF0aW9uSTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBpZDogZD8uaWQgPz8gaW5kZXgsXG4gICAgICAgICAgICAgICAgbmFtZTogZD8ubmFtZSA/PyBkPy50aXRsZSA/PyAnJyxcbiAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGQ/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGQ/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICBtdWx0aW1lZGlhOiB0aGlzLm1hcE11bHRpbWVkaWEoZD8ubXVsdGltZWRpYSksXG4gICAgICAgICAgICAgICAgaG90ZWxzOiB0aGlzLm1hcEhvdGVsc0dsb2JhbChkPy5ob3RlbHMpLFxuICAgICAgICAgICAgICAgIHRleHRzOiB0aGlzLm1hcEdsb2JhbFRleHRzKGQ/LnRleHRzKSxcbiAgICAgICAgICAgIH0gYXMgQmFieWxvbkRlc3RpbmF0aW9uSTtcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkZXN0aW5hdGlvbnMpKSB7XG4gICAgICAgICAgICBjb25zdCBsb29rc0xpa2VGbGF0TGlzdCA9IGRlc3RpbmF0aW9ucy5ldmVyeShcbiAgICAgICAgICAgICAgICAoeCkgPT5cbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHggPT09ICdzdHJpbmcnIHx8XG4gICAgICAgICAgICAgICAgICAgICh4ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAoeC5pZCAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5uYW1lICE9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LnRpdGxlICE9PSB1bmRlZmluZWQpKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGxvb2tzTGlrZUZsYXRMaXN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9ucy5tYXAobm9ybWFsaXplRGVzdGluYXRpb24pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB0b0xpc3QgPSAoZ3JvdXA6IGFueSk6IGFueVtdID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShncm91cCkpIHJldHVybiBncm91cDtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShncm91cD8uaXRlbXMpKSByZXR1cm4gZ3JvdXAuaXRlbXM7XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZ3JvdXA/LmRlc3RpbmF0aW9ucykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBncm91cC5kZXN0aW5hdGlvbnM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9ucy5mbGF0TWFwKChncm91cDogYW55KSA9PlxuICAgICAgICAgICAgICAgIHRvTGlzdChncm91cCkubWFwKG5vcm1hbGl6ZURlc3RpbmF0aW9uKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRlc3RpbmF0aW9ucz8uaXRlbXMpKVxuICAgICAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9ucy5pdGVtcy5tYXAobm9ybWFsaXplRGVzdGluYXRpb24pO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkZXN0aW5hdGlvbnM/LmRlc3RpbmF0aW9ucykpXG4gICAgICAgICAgICByZXR1cm4gZGVzdGluYXRpb25zLmRlc3RpbmF0aW9ucy5tYXAobm9ybWFsaXplRGVzdGluYXRpb24pO1xuXG4gICAgICAgIHJldHVybiBbbm9ybWFsaXplRGVzdGluYXRpb24oZGVzdGluYXRpb25zLCAwKV07XG4gICAgfVxuXG4gICAgbWFwR2xvYmFsVGV4dHModGV4dHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25UZXh0SW5mb0kge1xuICAgICAgICBpZiAoIXRleHRzKSByZXR1cm4ge30gYXMgQmFieWxvblRleHRJbmZvSTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5wcmV0aXRsZSksXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnRpdGxlKSxcbiAgICAgICAgICAgIHRpdGxlMjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnRpdGxlMiksXG4gICAgICAgICAgICBzdWJ0aXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnN1YnRpdGxlKSxcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5uYW1lKSxcblxuICAgICAgICAgICAgdGV4dDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnRleHQpLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5kZXNjcmlwdGlvbiksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5kZXNjcmlwdGlvbjIpLFxuICAgICAgICAgICAgZGVzY3JpcHRpb250aXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmRlc2NyaXB0aW9udGl0bGUpLFxuXG4gICAgICAgICAgICBpdGVtMTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lml0ZW0xKSxcbiAgICAgICAgICAgIGl0ZW0xVGV4dDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lml0ZW0xVGV4dCksXG5cbiAgICAgICAgICAgIGFkZGl0aW9uYWw6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5hZGRpdGlvbmFsID8/IHRleHRzPy5BZGRpdGlvbmFsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYWRkaXRpb25hbDE6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5hZGRpdGlvbmFsMSA/PyB0ZXh0cz8uQWRkaXRpb25hbDFcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBhZGRpdGlvbmFsMjogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmFkZGl0aW9uYWwyID8/IHRleHRzPy5BZGRpdGlvbmFsMlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWwzOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uYWRkaXRpb25hbDMgPz8gdGV4dHM/LkFkZGl0aW9uYWwzXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjb25kaXRpb25zOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY29uZGl0aW9ucyksXG4gICAgICAgICAgICB1cmw6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy51cmwpLFxuXG4gICAgICAgICAgICBhZHZhbnRhZ2VzdGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5hZHZhbnRhZ2VzdGl0bGUpLFxuICAgICAgICAgICAgYWR2YW50YWdlc3N1YnRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uYWR2YW50YWdlc3N1YnRpdGxlKSxcblxuICAgICAgICAgICAgbGV2ZTE6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5sZXZlMSksXG4gICAgICAgICAgICBsZXZlMjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmxldmUyKSxcbiAgICAgICAgICAgIGxldmUzOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubGV2ZTMpLFxuXG4gICAgICAgICAgICB3aGF0c2FwcDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LndoYXRzYXBwKSxcbiAgICAgICAgICAgIHNjcm9sbHRleHQ6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5zY3JvbGx0ZXh0ID8/IHRleHRzPy5zY3JvbGxEb3duXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBhZGRyZXNzdGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5hZGRyZXNzdGl0bGUgPz8gdGV4dHM/LmFkZHJlc3NUaXRsZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJhbm5lcnRleHQ6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5iYW5uZXJ0ZXh0KSxcbiAgICAgICAgICAgIGNvbnRhY3R0aXRsZTogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmNvbnRhY3R0aXRsZSA/PyB0ZXh0cz8uY29udGFjdFRpdGxlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29weXJpZ2h0dGV4dDogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmNvcHlyaWdodHRleHQgPz8gdGV4dHM/LmNvcHlyaWdodFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRvcEJ1dHRvbjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnRvcEJ1dHRvbiksXG4gICAgICAgICAgICBhYm91dFRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uYWJvdXRUaXRsZSksXG4gICAgICAgICAgICBncnVwb1RpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uZ3J1cG9UaXRsZSksXG4gICAgICAgICAgICBoZWxwVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5oZWxwVGl0bGUpLFxuICAgICAgICAgICAgY29udGFjdE9mZmljZVRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY29udGFjdE9mZmljZVRpdGxlKSxcblxuICAgICAgICAgICAgdGV4dEFkakN2OiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8udGV4dEFkakN2KSxcbiAgICAgICAgICAgIHRleHRBZGpDdkVycm9yOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8udGV4dEFkakN2RXJyb3IpLFxuICAgICAgICAgICAgU2VsZWN0SXRlbVRleHQ6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5TZWxlY3RJdGVtVGV4dCksXG5cbiAgICAgICAgICAgIC8vIFNWRyAvIGVzcGVjaWFsZXNcbiAgICAgICAgICAgIHN2ZzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnN2ZyksXG4gICAgICAgICAgICBzZWxlY3RvclRleHRzOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc2VsZWN0b3JUZXh0cyksXG5cbiAgICAgICAgICAgIGZlYXR1cmVwaWxsc251bWJlclN2Z2ljb24xOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZmVhdHVyZXBpbGxzbnVtYmVyU3ZnaWNvbjFcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBmZWF0dXJlcGlsbHNudW1iZXJTdmdpY29uMjogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmZlYXR1cmVwaWxsc251bWJlclN2Z2ljb24yXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZmVhdHVyZXBpbGxzbnVtYmVyU3ZnaWNvbjM6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5mZWF0dXJlcGlsbHNudW1iZXJTdmdpY29uM1xuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgZmVhdHVyZXBpbGxzbnVtYmVyU3ZnbnVtYmVyMTogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmZlYXR1cmVwaWxsc251bWJlclN2Z251bWJlcjFcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBmZWF0dXJlcGlsbHNudW1iZXJTdmdudW1iZXIyOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZmVhdHVyZXBpbGxzbnVtYmVyU3ZnbnVtYmVyMlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZlYXR1cmVwaWxsc251bWJlclN2Z251bWJlcjM6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5mZWF0dXJlcGlsbHNudW1iZXJTdmdudW1iZXIzXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBmZWF0dXJlcGlsbHNudW1iZXJTdmduYW1lMTogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmZlYXR1cmVwaWxsc251bWJlclN2Z25hbWUxXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZmVhdHVyZXBpbGxzbnVtYmVyU3ZnbmFtZTI6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5mZWF0dXJlcGlsbHNudW1iZXJTdmduYW1lMlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZlYXR1cmVwaWxsc251bWJlclN2Z25hbWUzOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZmVhdHVyZXBpbGxzbnVtYmVyU3ZnbmFtZTNcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGZlYXR1cmVwaWxsc251bWJlclN2Z3N1YnRpdGxlMTogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmZlYXR1cmVwaWxsc251bWJlclN2Z3N1YnRpdGxlMVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZlYXR1cmVwaWxsc251bWJlclN2Z3N1YnRpdGxlMjogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmZlYXR1cmVwaWxsc251bWJlclN2Z3N1YnRpdGxlMlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZlYXR1cmVwaWxsc251bWJlclN2Z3N1YnRpdGxlMzogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmZlYXR1cmVwaWxsc251bWJlclN2Z3N1YnRpdGxlM1xuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgdG9wc2xpZGVydmlkZW92MnN2ZzogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnRvcHNsaWRlcnZpZGVvdjJzdmcpLFxuICAgICAgICAgICAgdG9wc2xpZGVydmlkZW92MnZpZGVvOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8udG9wc2xpZGVydmlkZW92MnZpZGVvXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBvbmx5QWR1bHRzOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ub25seUFkdWx0cyksXG4gICAgICAgICAgICBob3RlbENhdGVnb3J5OiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uaG90ZWxDYXRlZ29yeSksXG4gICAgICAgICAgICBob3RlbFR5cGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ob3RlbFR5cGUpLFxuICAgICAgICAgICAgZGVzdGluYXRpb25zOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uZGVzdGluYXRpb25zKSxcbiAgICAgICAgICAgIGNsZWFuRmlsdGVyczogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNsZWFuRmlsdGVycyksXG4gICAgICAgICAgICBub3RGb3VuZDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm5vdEZvdW5kKSxcbiAgICAgICAgICAgIGNvbnRhY3RFbWFpbDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNvbnRhY3RFbWFpbCksXG4gICAgICAgICAgICBjb250YWN0T2ZmaWNlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY29udGFjdE9mZmljZSksXG4gICAgICAgICAgICBjb250YWN0VGVsOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY29udGFjdFRlbCksXG4gICAgICAgICAgICBtYXJjYTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm1hcmNhKSxcblxuICAgICAgICAgICAgZXJyb3JSZWdpc3RlclN1YnNjcmliZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5FcnJvclJlZ2lzdGVyU3Vic2NyaWJlclxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGVycm9yc3Vic2NyaWJlcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LkVycm9yc3Vic2NyaWJlciksXG4gICAgICAgICAgICBpbnB1dExhYmVsOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uaW5wdXRMYWJlbCksXG4gICAgICAgICAgICBpbnB1dFBsYWNlaG9sZGVyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uaW5wdXRQbGFjZWhvbGRlciksXG4gICAgICAgICAgICBuZXdzRXJyb3JFbWFpbDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm5ld3NFcnJvckVtYWlsKSxcbiAgICAgICAgICAgIHN1Y2Nlc3NzdWJzY3JpYmVyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc3VjY2Vzc3N1YnNjcmliZXIpLFxuXG4gICAgICAgICAgICBtYXBVcmw6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5tYXBVcmwgPz8gdGV4dHM/Lm1hcHVybCksXG4gICAgICAgICAgICByb29tczogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnJvb21zKSxcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5jYXRlZ29yaWVzKSxcbiAgICAgICAgICAgIGFsbDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmFsbCksXG5cbiAgICAgICAgICAgIGhvd0dldERlc2NyaXB0aW9uOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uaG93R2V0RGVzY3JpcHRpb24pLFxuICAgICAgICAgICAgaG93R2V0RGVzY3JpcHRpb24yOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uaG93R2V0RGVzY3JpcHRpb24yKSxcbiAgICAgICAgICAgIGhvd0dldFRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uaG93R2V0VGl0bGUpLFxuICAgICAgICAgICAgaG93R2V0VGl0bGUyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uaG93R2V0VGl0bGUyKSxcbiAgICAgICAgICAgIGNvbnRhY3REZXNjcmlwdGlvbjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNvbnRhY3REZXNjcmlwdGlvbiksXG4gICAgICAgICAgICBjb250YWN0VGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5jb250YWN0VGl0bGUpLFxuXG4gICAgICAgICAgICBuZXdzbGV0dGVyRXJyb3I6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5uZXdzbGV0dGVyRXJyb3IpLFxuICAgICAgICAgICAgbmV3c2xldHRlckZhaWw6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5uZXdzbGV0dGVyRmFpbCksXG4gICAgICAgICAgICBuZXdzbGV0dGVyU3VjY2Vzc2Z1bGw6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5uZXdzbGV0dGVyU3VjY2Vzc2Z1bGxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBuZXdzbGV0dGVyVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5uZXdzbGV0dGVyVGl0bGUpLFxuICAgICAgICB9IGFzIEJhYnlsb25UZXh0SW5mb0k7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUZXh0VmFsdWUodGV4dDogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCF0ZXh0KSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIC8vIHN0cmluZyBwbGFub1xuICAgICAgICBpZiAodHlwZW9mIHRleHQgPT09ICdzdHJpbmcnKSByZXR1cm4gdGV4dDtcblxuICAgICAgICByZXR1cm4gdGV4dD8udmFsdWUgPz8gdGV4dD8udGV4dCA/PyB0ZXh0Py5sYWJlbCA/PyB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwQ29uc3VsdFR5cGVzR2xvYmFsKGNvbnN1bHRzOiBhbnkgfCB1bmRlZmluZWQpOiBDb25zdWx0VHlwZUlbXSB7XG4gICAgICAgIHJldHVybiBjb25zdWx0cz8ubWFwKFxuICAgICAgICAgICAgKGNvbnN1bHQ6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICBpZDogY29uc3VsdD8uaWQsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvbnN1bHQ/Lm5hbWUsXG4gICAgICAgICAgICAgICAgfSkgYXMgQ29uc3VsdFR5cGVJXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbWFwSG90ZWxzR2xvYmFsKGhvdGVsczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkhvdGVsR2xvYmFsSXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIGhvdGVsc1xuICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgKGhvdGVsOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogaG90ZWw/LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaG90ZWw/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaG90ZWw/Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHRoaXMubWFwR2xvYmFsVGV4dHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaG90ZWw/LnRleHRzXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIEJhYnlsb25UZXh0SW5mb0ksXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhOiB0aGlzLm1hcE11bHRpbWVkaWEoaG90ZWw/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBob3RlbD8ubXVsdGltZWRpYT8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLm1hcE11bHRpbWVkaWEoaG90ZWw/Lm11bHRpbWVkaWEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhob3RlbD8ubGluayA/PyBob3RlbD8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhob3RlbD8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWFpbDogaG90ZWw/LmVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkZXNzOiBob3RlbD8uYWRkcmVzcyxcblxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsSW5jbHVzaXZlOiBob3RlbD8uYWxsSW5jbHVzaXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmVhY2hDbHViOiBob3RlbD8uYmVhY2hDbHViLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tJblRpbWU6IGhvdGVsPy5jaGVja0luVGltZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrT3V0VGltZTogaG90ZWw/LmNoZWNrT3V0VGltZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IGhvdGVsPy5jaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2luZ0Zyb206IGhvdGVsPy5jbG9zaW5nRnJvbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NpbmdUbzogaG90ZWw/LmNsb3NpbmdUbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IGhvdGVsPy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgY3A6IGhvdGVsPy5jcCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uczogaG90ZWw/LmRlc3RpbmF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodGVkOiBob3RlbD8uaGlnaGxpZ2h0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXQ6IGhvdGVsPy5sYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb246IGhvdGVsPy5sb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXVuZHJ5OiBob3RlbD8ubGF1bmRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsaXR5OiBob3RlbD8ubG9jYWxpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXBMaW5rOiBob3RlbD8ubWFwTGluayxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZmVyczogaG90ZWw/Lm9mZmVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBob25lOiBob3RlbD8ucGhvbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm92aW5jZTogaG90ZWw/LnByb3ZpbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGlja2VyOiBob3RlbD8udGlja2VyLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l0ZUhvdGVsczogaG90ZWw/LnNpdGVIb3RlbHMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlc0FkdmFudGFnZXM6IGhvdGVsPy5zZXJ2aWNlc0FkdmFudGFnZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlc0NoYXJhY3RlcmlzdGljczogaG90ZWw/LnNlcnZpY2VzQ2hhcmFjdGVyaXN0aWNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZXNIb3RlbEFwcDogaG90ZWw/LnNlcnZpY2VzSG90ZWxBcHAsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlc0xpc3Q6IGhvdGVsPy5zZXJ2aWNlc0xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlc0xvY2F0aW9uOiBob3RlbD8uc2VydmljZXNMb2NhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzU2VydmljZTogaG90ZWw/LnNlcnZpY2VzU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlczogaG90ZWw/LnN0eWxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ubHlBZHVsdHM6IGhvdGVsPy5vbmx5QWR1bHRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG90ZWxjYXRlZ29yeTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3RlbD8uaG90ZWxDYXRlZ29yeSA/PyBob3RlbD8uaG90ZWxjYXRlZ29yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdGVsdHlwZTogaG90ZWw/LmhvdGVsVHlwZSA/PyBob3RlbD8uaG90ZWx0eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyY2E6IGhvdGVsPy5tYXJjYSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkhvdGVsR2xvYmFsSXRlbVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgPy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gKGEub3JkZXIgfHwgOTk5OSkgLSAoYi5vcmRlciB8fCA5OTk5KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYXBHbG9iYWxJdGVtcyhwcm9wczogYW55KTogYW55IHtcbiAgICAgICAgLy8gRnVlbnRlIHByaW5jaXBhbCBkZSBpdGVtc1xuICAgICAgICBjb25zdCByYXdJdGVtcyA9XG4gICAgICAgICAgICBwcm9wcz8uaXRlbXMgPz9cbiAgICAgICAgICAgIHByb3BzPy5JdGVtcyA/P1xuICAgICAgICAgICAgcHJvcHM/LnNlcnZpY2VzU2VydmljZSA/P1xuICAgICAgICAgICAgcHJvcHM/LnZlbnRhamFzID8/XG4gICAgICAgICAgICBwcm9wcy5WZW50YWphcyA/P1xuICAgICAgICAgICAgdW5kZWZpbmVkO1xuXG4gICAgICAgIC8vIEludGVudGFtb3MgbWFwZWFyIGl0ZW1zIGltYWdlbmVzXG4gICAgICAgIGlmICghcmF3SXRlbXMgJiYgcHJvcHM/Lm11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hcHBlZEltZyA9IHRoaXMubWFwSW1hZ2VzKHByb3BzPy5tdWx0aW1lZGlhKTtcbiAgICAgICAgICAgIGlmIChtYXBwZWRJbWcgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtYXBwZWRJbWcuaW1hZ2VuZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJbnRlbnRhbW9zIG1hcGVhciBpdGVtcyBleHBlcmllbmNpYXNcbiAgICAgICAgaWYgKCFyYXdJdGVtcyAmJiBwcm9wcz8uZXhwZXJpZW5jZSkge1xuICAgICAgICAgICAgY29uc3QgbWFwcGVkSXRlbXMgPSB0aGlzLm1hcEl0ZW1zKHByb3BzPy5leHBlcmllbmNlKTtcbiAgICAgICAgICAgIGlmIChtYXBwZWRJdGVtcyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hcHBlZEl0ZW1zO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy9JbnRlbnRhbW9zIG1hcGVhciBpdGVtcyDigJxub3JtYWxlc+KAnVxuICAgICAgICBjb25zdCBtYXBwZWRJdGVtcyA9IHRoaXMubWFwSXRlbXMocmF3SXRlbXMpO1xuICAgICAgICBpZiAobWFwcGVkSXRlbXMgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG1hcHBlZEl0ZW1zO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2kgbm8gaGF5IGl0ZW1zLCBwcm9iYW1vcyBjb24gcm9vbXNcbiAgICAgICAgY29uc3QgbWFwcGVkUm9vbXMgPSB0aGlzLm1hcFJvb21EZXRhaWxzKHByb3BzPy5yb29tcyk7XG4gICAgICAgIGlmIChtYXBwZWRSb29tcyAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFwcGVkUm9vbXM7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBvZmZlcnNcbiAgICAgICAgY29uc3QgbWFwcGVkT2ZmZXJzID0gdGhpcy5tYXBPZmZlcnNHbG9iYWwocHJvcHM/Lm9mZmVycyk7XG4gICAgICAgIGlmIChtYXBwZWRPZmZlcnMgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG1hcHBlZE9mZmVycztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDUpIGhvdGVsZXNcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwSG90ZWxzR2xvYmFsKHByb3BzPy5ob3RlbHMpO1xuICAgIH1cblxuICAgIG1hcEFkZHJlc3MoYWRkcmVzczogYW55IHwgYW55W10gfCB1bmRlZmluZWQpOiBCYWJ5bG9uQWRkcmVzc0l0ZW1bXSB7XG4gICAgICAgIGlmICghYWRkcmVzcykgcmV0dXJuIFtdO1xuXG4gICAgICAgIGNvbnN0IGxpc3QgPSBBcnJheS5pc0FycmF5KGFkZHJlc3MpID8gYWRkcmVzcyA6IFthZGRyZXNzXTtcblxuICAgICAgICByZXR1cm4gbGlzdC5tYXAoKGE6IGFueSkgPT4gKHtcbiAgICAgICAgICAgIGlkOiBhPy5pZCxcbiAgICAgICAgICAgIG5hbWU6IGE/Lm5hbWUsXG4gICAgICAgICAgICBhZGRyZXNzOiBhPy5hZGRyZXNzLFxuICAgICAgICAgICAgY2l0eTogYT8uY2l0eSxcbiAgICAgICAgICAgIGxvY2FsaXR5OiBhPy5sb2NhbGl0eSxcbiAgICAgICAgICAgIHByb3ZpbmNlOiBhPy5wcm92aW5jZSxcbiAgICAgICAgICAgIGNvdW50cnk6IGE/LmNvdW50cnksXG4gICAgICAgICAgICBjcDogYT8uY3AsXG4gICAgICAgICAgICB1cmw6IGE/LmxpbmssXG4gICAgICAgICAgICBwaG9uZTogYT8ucGhvbmUsXG4gICAgICAgICAgICBwaG9uZTI6IGE/LnBob25lMixcbiAgICAgICAgICAgIGVtYWlsOiBhPy5lbWFpbCxcbiAgICAgICAgICAgIGZ1bGxfYWRkcmVzczogYT8uZnVsbEFkZHJlc3MsXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBtYXBTdGF0aWNGb290ZXJ2Myhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblN0YXRpY0Zvb3Rlckkge1xuICAgICAgICByZXR1cm4ge30gYXMgYW55O1xuICAgIH1cblxuICAgIG1hcEdsb2JhbFNlcnZpY2VzKFxuICAgICAgICBzZXJ2aWNlczogQmFieWxvbkdsb2JhbEljb25JW10gfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uR2xvYmFsSWNvbklbXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBzZXJ2aWNlcz8ubWFwKFxuICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi1gICsgaXRlbT8uY2xhc3MsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogaXRlbT8udHlwZSxcbiAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uR2xvYmFsSWNvbklcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBtYXBDb250YWN0SW5mbyh0ZXh0czogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkNvbnRhY3RJbmZvSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgbm90ZTogdGV4dHM/Lm5vdGUsXG4gICAgICAgICAgICB0ZXh0OiB0ZXh0cz8udGV4dCxcbiAgICAgICAgICAgIGljb246IHRleHRzPy5pY29uLFxuICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBjb25kaXRpb25zOiB0ZXh0cz8uY29uZGl0aW9ucyxcbiAgICAgICAgICAgIGNvbmRpdGlvbnMyOiB0ZXh0cz8uY29uZGl0aW9uczIsXG4gICAgICAgICAgICBkcm9wZG93blBsYWNlaG9sZGVyOiB0ZXh0cz8uZHJvcGRvd25QbGFjZWhvbGRlcixcbiAgICAgICAgICAgIGRyb3Bkb3duVGl0bGU6IHRleHRzPy5kcm9wZG93blRpdGxlLFxuICAgICAgICAgICAgaG90ZWxEcm9wVGl0bGU6IHRleHRzPy5ob3RlbERyb3BUaXRsZSxcbiAgICAgICAgICAgIGhvdGVsRHJvcFBsYWNlaG9sZGVyOiB0ZXh0cz8uaG90ZWxEcm9wUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICBob3RlbERyb3BFcnJvcjogdGV4dHM/LmhvdGVsRHJvcEVycm9yLFxuICAgICAgICAgICAgZXJyb3JFbWFpbDogdGV4dHM/LmVycm9yRW1haWwsXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2U6IHRleHRzPy5lcnJvck1lc3NhZ2UsXG4gICAgICAgICAgICBlcnJvck5hbWU6IHRleHRzPy5lcnJvck5hbWUsXG4gICAgICAgICAgICBlcnJvclBob25lOiB0ZXh0cz8uZXJyb3JQaG9uZSxcbiAgICAgICAgICAgIGVycm9yUmVxdWlyZWQ6IHRleHRzPy5lcnJvclJlcXVpcmVkLFxuICAgICAgICAgICAgaW5wdXRFbWFpbDogdGV4dHM/LmlucHV0RW1haWwsXG4gICAgICAgICAgICBpbnB1dEVtYWlsUGxhY2VIb2xkZXI6IHRleHRzPy5pbnB1dEVtYWlsUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICBpbnB1dE1lc3NhZ2U6IHRleHRzPy5pbnB1dE1lc3NhZ2UsXG4gICAgICAgICAgICBpbnB1dE1lc3NhZ2VQbGFjZUhvbGRlcjogdGV4dHM/LmlucHV0TWVzc2FnZVBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgaW5wdXROYW1lOiB0ZXh0cz8uaW5wdXROYW1lLFxuICAgICAgICAgICAgaW5wdXROYW1lUGxhY2VIb2xkZXI6IHRleHRzPy5pbnB1dE5hbWVQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIGlucHV0UGhvbmU6IHRleHRzPy5pbnB1dFBob25lLFxuICAgICAgICAgICAgaW5wdXRQaG9uZVBsYWNlSG9sZGVyOiB0ZXh0cz8uaW5wdXRQaG9uZVBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgaW5wdXRsYXN0bmFtZTogdGV4dHM/LmlucHV0bGFzdG5hbWUsXG4gICAgICAgICAgICBpbnB1dGxhc3RuYW1lUGxhY2VIb2xkZXI6IHRleHRzPy5pbnB1dGxhc3RuYW1lUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICBpbnB1dFN1cm5hbWVzOiB0ZXh0cz8uaW5wdXRTdXJuYW1lcyxcbiAgICAgICAgICAgIGlucHV0U3VybmFtZXNQbGFjZUhvbGRlcjogdGV4dHM/LmlucHV0U3VybmFtZXNQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIG1hbmRhdG9yeXRleHQ6IHRleHRzPy5tYW5kYXRvcnl0ZXh0LFxuICAgICAgICAgICAgcmVxdWlyZWRGaWVsZHNMYWJlbDogdGV4dHM/LnJlcXVpcmVkRmllbGRzTGFiZWwsXG4gICAgICAgIH0gYXMgQmFieWxvbkNvbnRhY3RJbmZvSTtcbiAgICB9XG4gICAgbWFwRXZlbnRzR2xvYmFsKGV2ZW50czogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkl0ZW1JW10ge1xuICAgICAgICByZXR1cm4gZXZlbnRzPy5tYXAoXG4gICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtPy5tdWx0aW1lZGlhPy5bMF0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbT8ubmFtZSA/PyBpdGVtPy5uYW1lX2lkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtPy5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbnM6IGl0ZW0udGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0udGV4dHM/LnJlc2VydmF0aW9uVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlQXQ6IGl0ZW0udGV4dHM/LmNyZWF0ZUF0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZEF0OiBpdGVtLnRleHRzPy51cGRhdGVkQXQsXG4gICAgICAgICAgICAgICAgICAgIH0gYXMgQmFieWxvblRleHRJbmZvSSxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtPy51cmwsXG4gICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkl0ZW1JXG4gICAgICAgICk7XG4gICAgfVxuICAgIG1hcE9mZmVyc0dsb2JhbChvZmZlcnM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25PZmZlckl0ZW1JW10ge1xuICAgICAgICByZXR1cm4gb2ZmZXJzPy5tYXAoXG4gICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uRnJvbTogaXRlbT8uYXBwbGljYXRpb25Gcm9tLFxuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvblRvOiBpdGVtPy5hcHBsaWNhdGlvblRvLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeTogaXRlbT8uY3VycmVuY3ksXG4gICAgICAgICAgICAgICAgICAgIGRpc2NvdW50OiBpdGVtPy5kaXNjb3VudCxcbiAgICAgICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0/LnByaWNlLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE6IHRoaXMubWFwTXVsdGltZWRpYShpdGVtPy5tdWx0aW1lZGlhKSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMzogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25zOiBpdGVtLnRleHRzPy5jb25kaXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtLnRleHRzPy5yZXNlcnZhdGlvblVybCxcbiAgICAgICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uVGV4dEluZm9JLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0/LnVybCxcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZUZyb206IGl0ZW0/LnZpc2libGVGcm9tLFxuICAgICAgICAgICAgICAgICAgICB2aXNpYmxlVG86IGl0ZW0/LnZpc2libGVUbyxcbiAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uT2ZmZXJJXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbWFwQWR2YW50YWdlc0dsb2JhbChhZHZhbnRhZ2VzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQWR2YW50YWdlSXRlbUlbXSB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShhZHZhbnRhZ2VzKSkgcmV0dXJuIFtdO1xuICAgICAgICByZXR1cm4gYWR2YW50YWdlcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBtYXBJdGVtcyhpdGVtczogYW55KTogYW55IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGl0ZW1zKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgaXRlbXMgPSBpdGVtcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICBsYWJlbDogaXRlbT8udGl0bGUgPz8gaXRlbT8ubmFtZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy50ZXh0ID8/IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgdGV4dHM6XG4gICAgICAgICAgICAgICAgaXRlbT8udGV4dHMgPz9cbiAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogaXRlbT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgIH0gYXMgQmFieWxvblRleHRJbmZvSSksXG4gICAgICAgICAgICBtdWx0aW1lZGlhOiB0aGlzLm1hcEltYWdlcyhpdGVtPy5tdWx0aW1lZGlhKSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgIGljb246IGBpY29uLWAgKyAoaXRlbS5pY29uID8/IGl0ZW0uY2xhc3MpLFxuICAgICAgICB9KSk7XG4gICAgICAgIHJldHVybiBpdGVtcyBhcyBCYWJ5bG9uSXRlbUk7XG4gICAgfVxuXG4gICAgbWFwR2xvYmFsc0ZhcXMocmF3OiBhbnkpOiBCYWJ5bG9uR2xvYmFsc0ZhcUdyb3VwW10gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkocmF3KSB8fCByYXcubGVuZ3RoID09PSAwKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIGNvbnN0IGlzR3JvdXBlZCA9IHJhdy5zb21lKFxuICAgICAgICAgICAgKHgpID0+IHggJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIEFycmF5LmlzQXJyYXkoeC5pdGVtcylcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBncm91cHM6IEFycmF5PHsgbGlzdElkOiBudW1iZXI7IGl0ZW1zOiBhbnlbXSB9PiA9IGlzR3JvdXBlZFxuICAgICAgICAgICAgPyByYXcubWFwKChnOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICBsaXN0SWQ6IE51bWJlcihnPy5saXN0SWQgPz8gMSksXG4gICAgICAgICAgICAgICAgICBpdGVtczogQXJyYXkuaXNBcnJheShnPy5pdGVtcykgPyBnLml0ZW1zIDogW10sXG4gICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgOiBbeyBsaXN0SWQ6IDEsIGl0ZW1zOiByYXcgfV07XG5cbiAgICAgICAgY29uc3QgbWFwcGVkR3JvdXBzOiBCYWJ5bG9uR2xvYmFsc0ZhcUdyb3VwW10gPSBncm91cHNcbiAgICAgICAgICAgIC5tYXAoKGcpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXBwZWRJdGVtcyA9IChnLml0ZW1zIHx8IFtdKVxuICAgICAgICAgICAgICAgICAgICAubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy50aXRsZSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnF1ZXN0aW9uID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubmFtZSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmxhYmVsID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8udGV4dCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmFuc3dlciA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmRlc2NyaXB0aW9uID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJyc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGFiZWwgJiYgIWRlc2NyaXB0aW9uKSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0czpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8udGV4dHMgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBpdGVtPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25UZXh0SW5mb0kpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE6IHRoaXMubWFwSW1hZ2VzKGl0ZW0/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uaWNvbiB8fCBpdGVtPy5jbGFzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBTdHJpbmcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmljb24gPz8gaXRlbS5jbGFzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLnN0YXJ0c1dpdGgoJ2ljb24tJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFN0cmluZyhpdGVtLmljb24gPz8gaXRlbS5jbGFzcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGBpY29uLSR7aXRlbS5pY29uID8/IGl0ZW0uY2xhc3N9YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogaXRlbT8uaWQgPz8gaXRlbT8uZmFxSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGFzIHVua25vd24gYXMgQmFieWxvbkl0ZW1JO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pIGFzIEJhYnlsb25JdGVtSVtdO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgbGlzdElkOiBnLmxpc3RJZCB8fCAxLFxuICAgICAgICAgICAgICAgICAgICBpdGVtczogbWFwcGVkSXRlbXMsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuZmlsdGVyKChnKSA9PiBnLml0ZW1zLmxlbmd0aCA+IDApO1xuXG4gICAgICAgIHJldHVybiBtYXBwZWRHcm91cHMubGVuZ3RoID8gbWFwcGVkR3JvdXBzIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcE11bHRpbWVkaWEoaW1hZ2VzQXJyYXk6IGFueSB8IHVuZGVmaW5lZCk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGltYWdlc0FycmF5KSAmJiBpbWFnZXNBcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBpbWFnZXNBcnJheVxuICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PiBpdGVtPy5hY3RpdmUgPT09IHRydWUpXG4gICAgICAgICAgICAgICAgPy5tYXAoKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgYWx0OiBpdGVtPy5hbHQsXG4gICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIHRhZzogaXRlbT8udGFncyxcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBJbWFnZXMobXVsdGltZWRpYTogYW55IHwgdW5kZWZpbmVkKTogYW55IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKG11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaW1hZ2VuZXM6IHRoaXMubWFwTXVsdGltZWRpYShcbiAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYT8uaW1hZ2VuZXMgPz8gbXVsdGltZWRpYVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgc3RhdGljSW1hZ2VuZXM6IHRoaXMubWFwTXVsdGltZWRpYShtdWx0aW1lZGlhPy5zdGF0aWNpbWFnZW5lcyksXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZGltYWdlOiB0aGlzLm1hcE11bHRpbWVkaWEoXG4gICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE/LmJhY2tncm91bmRpbWFnZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgbG9nbzogdGhpcy5tYXBNdWx0aW1lZGlhKG11bHRpbWVkaWE/LmxvZ28pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcFJvb21EZXRhaWxzKHJvb21zOiBhbnkgfCB1bmRlZmluZWQpOiBhbnkge1xuICAgICAgICBsZXQgYXJyYXk6IGFueVtdID0gcm9vbXM/Lmxlbmd0aCA/IHJvb21zIDogW3Jvb21zXTtcblxuICAgICAgICByZXR1cm4gYXJyYXlcbiAgICAgICAgICAgID8uZmlsdGVyKFxuICAgICAgICAgICAgICAgIChyb29tOiBhbnksIGluZGV4OiBudW1iZXIsIHNlbGY6IGFueVtdKSA9PlxuICAgICAgICAgICAgICAgICAgICBzZWxmPy5maW5kSW5kZXgoKHIpID0+IHI/LmlkID09PSByb29tPy5pZCkgPT09IGluZGV4XG4gICAgICAgICAgICApXG4gICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXRlbT8uYnV0dG9ucz8uc2xpY2UoKS5yZXZlcnNlKCkgVE9ETzogXCIuc2xpY2UoKS5yZXZlcnNlKClcIiAgZXN0byBzZSBoYWNlIGVuIGVsIGNvbXBvbmVudGUgcXVlIGxvIHVzZSAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5tdWx0aW1lZGlhPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltZzogYW55KSA9PiBpbWc/LmNvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfHwgaXRlbT8ubXVsdGltZWRpYT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlbmVzOiBpdGVtPy5tdWx0aW1lZGlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChpbWc6IGFueSkgPT4gaW1nLmFjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoKGltZzogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzOiBpbWcudGV4dHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnOiBpbWcudGFncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGltZy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpbWcubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGltZy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogaXRlbT8ubXVsdGltZWRpYT8udmlkZW8/LnNyYyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBpdGVtPy5tdWx0aW1lZGlhPy52aWRlbz8uc3JjXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3ZpZGVvL21wNCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtPy50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDI6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMzogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWw0OiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGl0ZW0/Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXF1aXBtZW50czogQXJyYXkuaXNBcnJheShpdGVtPy5zZXJ2aWNlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGl0ZW0/LnNlcnZpY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKHN2YzogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBzdmMudHlwZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHN2Yy50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKCh0OiBzdHJpbmcpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQudHJpbSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogW107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWNlcHRhIHRhbnRvICdlcXVpcG1lbnQnIGNvbW8gJ2NoYXJhY3RlcmlzdGljcydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzVmFsaWRUeXBlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLmluY2x1ZGVzKCdlcXVpcG1lbnQnKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXMuaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9vbVNlcnZpY2VUeXBlLmNoYXJhY3RlcmlzdGljc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFzVmFsaWRUeXBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgoc3ZjOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHN2Yz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogc3ZjPy5jbGFzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBgaWNvbi0ke3N2Yz8uY2xhc3N9YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblJvb21JbmZvSVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgbWFwNDA0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uNDA0SSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgc3VidGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uc3VidGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5zdWJ0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LmNvbnRhaW4sXG5cbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb240MDRJO1xuICAgIH1cblxuICAgIC8vLS0tLSBMQVlPVVQgQ09NUE9ORU5UUyAtLS0tLy9cbiAgICBtYXBUb3BTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Ub3BTbGlkZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IGltYWdlcztcbiAgICAgICAgaWYgKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lc1swXT8udGFncz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBpbWFnZXMgPVxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoaW1hZ2U6IGFueSkgPT4gaW1hZ2U/LnRhZ3NbMF0/Lm5hbWUgPT09ICdUb3BTbGlkZXInXG4gICAgICAgICAgICAgICAgKSA/PyBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGltYWdlcyA9IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcyksXG4gICAgICAgICAgICBpdGVtczogaW1hZ2VzLmxlbmd0aFxuICAgICAgICAgICAgICAgID8gaW1hZ2VzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1hZ2VzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGltYWdlcz8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1hZ2VzLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaW1hZ2VzPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaW1hZ2VzPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBpdGVtc01vYmlsZTogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzbW9iaWxlPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Ub3BTbGlkZXJJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbG9nbzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmxvZ28/LlswXSwgZmFsc2UpLFxuICAgICAgICAgICAgbG9nb1RpdGxlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8ubG9nb3RpdGxlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB2aWRlb0RhdGE6IHtcbiAgICAgICAgICAgICAgICAvLyB0aXRsZTogcHJvcHM/LnZpZGVvPy50aXRsZSxcbiAgICAgICAgICAgICAgICBzcmM6IHByb3BzPy50ZXh0cz8udmlkZW8sXG4gICAgICAgICAgICAgICAgdHlwZTogJ3ZpZGVvL21wNCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25Ub3BTbGlkZXJJO1xuICAgIH1cblxuICAgIG1hcFRvcFNsaWRlclZpZGVvKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvblRvcFNsaWRlclZpZGVvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2aWRlb0RhdGE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnZpZGVvPy50aXRsZSxcbiAgICAgICAgICAgICAgICBzcmM6IHByb3BzPy52aWRlbz8uc3JjLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd2aWRlby9tcDQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNtYWxsVmlkZW9EYXRhOiBwcm9wcz8udmlkZW8/Lm1vYmlsZVxuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udmlkZW8/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIHNyYzogcHJvcHM/LnZpZGVvPy5tb2JpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3ZpZGVvL21wNCcsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBsYWJlbEluZm9zOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW1vYmlsZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICB9IGFzIEJhYnlsb25Ub3BTbGlkZXJWaWRlb0k7XG4gICAgfVxuXG4gICAgbWFwVG9wU2xpZGVyVjIoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHJpZ2h0U2lkZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgKTogQmFieWxvblRvcFNsaWRlclYySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBwcm9wc1xuICAgICAgICAgICAgPyAoe1xuICAgICAgICAgICAgICAgICAgcmlnaHRTaWRlOiByaWdodFNpZGUsXG4gICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25TbGlkZXI0Y29sTGFiZWxzXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9IGFzIEJhYnlsb25Ub3BTbGlkZXJWMkkpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBJbmZvSW1nKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICByaWdodFNpZGU6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICAgICAgdGV4dENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uSW5mb0ltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmlnaHRTaWRlOiByaWdodFNpZGUsXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgYnV0dG9uczogcHJvcHM/LmJ1dHRvbnNcbiAgICAgICAgICAgICAgICA/IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT4gbGluaz8ubGlua1ZhbHVlICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbnRhaW4sXG4gICAgICAgICAgICB0ZXh0OlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uc3VidGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgbmR0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5uZHRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ubmR0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ubmR0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGxlc3NCdG46IHByb3BzPy50ZXh0cz8uc2VlTGVzcyxcbiAgICAgICAgICAgIG1vcmVCdG46IHByb3BzPy50ZXh0cz8uc2VlTW9yZSxcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMsXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBhZHZhbnRhZ2VzOiBwcm9wcz8uVmVudGFqYXM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtPy50aXRsZSB8fCBpdGVtPy50ZXh0XG4gICAgICAgICAgICApPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgaWNvbjogaXRlbS5pY29uID8gYGljb24tJHtpdGVtLmljb259YCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvPy5bMF0sIGZhbHNlKSxcbiAgICAgICAgICAgIGFkdlRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRleHQgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50ZXh0XG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50ZXh0Py5jb250YWluLFxuICAgICAgICAgICAgdG9wQkc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy50b3BiZz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYm90dG9tQkc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5ib3R0b21iZz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdG9wQ29sb3I6IHByb3BzPy50ZXh0cz8udG9wQ29sb3IsXG4gICAgICAgICAgICBib3R0b21Db2xvcjogcHJvcHM/LnRleHRzPy5Cb3R0b21Db2xvcixcbiAgICAgICAgICAgIHRleHRDb2xvcjogdGV4dENvbG9yLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LnRhZyxcbiAgICAgICAgICAgICAgICBuZHRpdGxlOiBwcm9wcz8udGV4dHM/Lm5kdGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBhZHZUaXRsZTogcHJvcHM/LnRleHRzPy50ZXh0Py50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvSW1nSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvSW1nU2xpZGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICByaWdodFNpZGU6IGJvb2xlYW4gPSBmYWxzZVxuICAgICk6IEJhYnlsb25JbmZvSW1nU2xpZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIC8vIFRPRE86IGFkZCB0b3BCRywgYm90dG9tQkdcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJpZ2h0U2lkZTogcmlnaHRTaWRlLFxuICAgICAgICAgICAgdG9wQ29sb3I6IHByb3BzPy50ZXh0cz8udG9wQ29sb3IsXG4gICAgICAgICAgICBib3R0b21Db2xvcjogcHJvcHM/LnRleHRzPy5ib3R0b21Db2xvcixcbiAgICAgICAgICAgIGxlc3NCdG46IHByb3BzPy50ZXh0cz8uc2VlTGVzcyxcbiAgICAgICAgICAgIG1vcmVCdG46IHByb3BzPy50ZXh0cz8uc2VlTW9yZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmR0aXRsZTogaXRlbT8ubmRfdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkluZm9JbWdTbGlkZXJJdGVtSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb0ltZ1NsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwSW5mb0ludHJvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSW5mb0ludHJvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbnRhaW4sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdG9wQkc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy50b3BiZz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYm90dG9tQkc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5ib3R0b21iZz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdG9wQ29sb3I6IHByb3BzPy50ZXh0cz8udG9wQ29sb3IsXG4gICAgICAgICAgICBib3R0b21Db2xvcjogcHJvcHM/LnRleHRzPy5Cb3R0b21Db2xvcixcbiAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvPy5bMF0sIGZhbHNlKSxcbiAgICAgICAgICAgIGxvZ28yOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8ubG9nbzI/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uTW9kYWw6IHByb3BzPy50ZXh0cz8ucG9wdXBtb2RhbCxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb0ludHJvSTtcbiAgICB9XG5cbiAgICBtYXBIZWFkZXIoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG1lbnU6IGFueSxcbiAgICAgICAgaGVhZGVyOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOlxuICAgICAgICB8IEJhYnlsb25IZWFkZXJCb29rU2hvd0lcbiAgICAgICAgfCBCYWJ5bG9uSGVhZGVyQ2xlYXJJXG4gICAgICAgIHwgQmFieWxvbkhlYWRlck1lbnVDZW50ZXJJXG4gICAgICAgIHwgQmFieWxvbkhlYWRlck1lbnVMb2dvQ2VudGVySVxuICAgICAgICB8IEJhYnlsb25IZWFkZXJNZW51U2hvd0kge1xuICAgICAgICBjb25zdCBsaW5rID0gbWVudS5saW5rcz8ubG9nb0xpbms/LmZsYXQoKT8uWzBdO1xuICAgICAgICBjb25zdCBoZWFkZXJCdXR0b25zID0gcHJvcHM7XG5cbiAgICAgICAgaWYgKGhlYWRlckJ1dHRvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuZmxvYXRpbmdCdXR0b25zID0ge1xuICAgICAgICAgICAgICAgIHRleHRzOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBiYWJ5bG9uLSR7aGVhZGVyQnV0dG9ucy50ZXh0cz8udHJhbnNmZXJJY29ufWAsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogaGVhZGVyQnV0dG9ucz8udGV4dHM/LnRyYW5zZmVyLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgYmFieWxvbi0ke2hlYWRlckJ1dHRvbnMudGV4dHM/LmNoZWNraW5JY29ufWAsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogaGVhZGVyQnV0dG9ucz8udGV4dHM/LmNoZWNraW4sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBiYWJ5bG9uLSR7aGVhZGVyQnV0dG9ucy50ZXh0cz8ud2hhdHNhcHB9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8ud2hhdHNhcHAsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB0ZXh0c0J1dHRvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgbWVudVRleHQ6IGhlYWRlckJ1dHRvbnM/LnRleHRzPy5tZW51dGV4dCxcbiAgICAgICAgICAgICAgICAgICAgYm9va3RleHQ6IGhlYWRlckJ1dHRvbnM/LnRleHRzPy5ib29rdGV4dCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGhlYWRlckJ1dHRvbnM/LmxpbmtzKSxcbiAgICAgICAgICAgIH0gYXMgQmFieWxvbkZsb2F0aW5nQnV0dG9uc0k7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGV4dHM6IGhlYWRlcj8udGV4dHMsXG4gICAgICAgICAgICBmbG9hdGluZ0J1dHRvbnM6IHRoaXMuZmxvYXRpbmdCdXR0b25zLFxuICAgICAgICAgICAgbGFuZzogdGhpcy5zaXRlU3ZjLnNlbGVjdGVkTGFuZ3VhZ2VJbnN0YW50Py5sb2NhdGU/LnRvVXBwZXJDYXNlKCksXG4gICAgICAgICAgICBidG5Cb29rOiB7IGxhYmVsOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8uYm9va05vdyB9LFxuICAgICAgICAgICAgc2hvcDogaGVhZGVyQnV0dG9ucz8udGV4dHM/LnNob3BcbiAgICAgICAgICAgICAgICA/IGBpY29uLSR7aGVhZGVyQnV0dG9ucz8udGV4dHM/LnNob3B9YFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaGVhZGVyQnV0dG9ucz8ubGlua3MpLFxuICAgICAgICAgICAgbGlua0xvZ286IHtcbiAgICAgICAgICAgICAgICBsYWJlbDogbGluaz8ubGFiZWwsXG4gICAgICAgICAgICAgICAgdXJsOiBsaW5rPy5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgbGlua1R5cGU6IGxpbms/LmxpbmtUeXBlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1lbnU6IG1lbnU/Lm5hdj8ubWFwKFxuICAgICAgICAgICAgICAgIChtZW51OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBtZW51Py5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtZW51Py5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogbWVudT8ubGlua1R5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbWVudT8udHJhbnNsYXRpb25zPy5bMF0/Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG1lbnU/LnRyYW5zbGF0aW9ucz8uWzBdPy5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBtZW51Py5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IG1lbnU/LmNoaWxkcmVuPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoaWxkOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBjaGlsZD8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogY2hpbGQ/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiBjaGlsZD8ubGlua1R5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogY2hpbGQ/LnRyYW5zbGF0aW9ucz8uWzBdPy5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjaGlsZD8udHJhbnNsYXRpb25zPy5bMF0/Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNoaWxkPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBtZW51Py5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbk1lbnVCdXR0b25JXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbWVudUluZm86IHRoaXMubWFwTWVudShtZW51LCB1bmRlZmluZWQpLFxuICAgICAgICB9IGFzXG4gICAgICAgICAgICB8IEJhYnlsb25IZWFkZXJCb29rU2hvd0lcbiAgICAgICAgICAgIHwgQmFieWxvbkhlYWRlckNsZWFySVxuICAgICAgICAgICAgfCBCYWJ5bG9uSGVhZGVyTWVudUNlbnRlcklcbiAgICAgICAgICAgIHwgQmFieWxvbkhlYWRlck1lbnVMb2dvQ2VudGVySVxuICAgICAgICAgICAgfCBCYWJ5bG9uSGVhZGVyTWVudVNob3dJO1xuICAgIH1cblxuICAgIC8vVE9ETzogV2FpdCBmb3IgYmFjayBpbmZvXG4gICAgbWFwTWVudShcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgc29jaWFsTWVkaWE6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25NZW51SW5mb0kge1xuICAgICAgICBjb25zdCBsaW5rcyA9IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICBwcm9wcz8ubmF2Py5tYXAoKGxpbms6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi5saW5rLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rLnRyYW5zbGF0aW9ucz8uWzBdPy5uYW1lLFxuICAgICAgICAgICAgfSkpXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgY29udGFjdCA9ICgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByYXcgPSBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uY29udGFjdD8uWzBdKTsgLy8gcC5lai4gW3VuZGVmaW5lZCwgdW5kZWZpbmVkXVxuICAgICAgICAgICAgY29uc3QgbGlua3MgPSBBcnJheS5pc0FycmF5KHJhdykgPyByYXcuZmlsdGVyKEJvb2xlYW4pIDogdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICBjb25zdCByYXdUaXRsZSA9XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uY29udGFjdFRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uY29udGFjdFRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5jb250YWN0VGl0bGU/LmNvbnRhaW47XG5cbiAgICAgICAgICAgIGNvbnN0IHRpdGxlID1cbiAgICAgICAgICAgICAgICB0eXBlb2YgcmF3VGl0bGUgPT09ICdzdHJpbmcnICYmIHJhd1RpdGxlLnRyaW0oKS5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyByYXdUaXRsZS50cmltKClcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIGlmICghbGlua3M/Lmxlbmd0aCAmJiAhdGl0bGUpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uKGxpbmtzPy5sZW5ndGggPyB7IGxpbmtzIH0gOiB7fSksXG4gICAgICAgICAgICAgICAgLi4uKHRpdGxlID8geyB0aXRsZSB9IDoge30pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSkoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGlua3M6IGxpbmtzPy5zbGljZSgwLCA2KSxcbiAgICAgICAgICAgIGJvdHRvbUxpbmtzOiBsaW5rcz8uc2xpY2UoNiksXG4gICAgICAgICAgICBhZGRyZXNzOiB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczogcHJvcHM/LmFkZHJlc3M/LlswXT8uYWRkcmVzcyxcbiAgICAgICAgICAgICAgICBjaXR5OiBwcm9wcz8uYWRkcmVzcz8uWzBdPy5jaXR5LFxuICAgICAgICAgICAgICAgIGNvdW50cnk6IHByb3BzPy5hZGRyZXNzPy5bMF0/LmNvdW50cnksXG4gICAgICAgICAgICAgICAgY3A6IHByb3BzPy5hZGRyZXNzPy5bMF0/LmNwLFxuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgIHByb3ZpbmNlOiBwcm9wcz8uYWRkcmVzcz8uWzBdPy5wcm92aW5jZSxcbiAgICAgICAgICAgICAgICB1cmw6IHByb3BzPy5hZGRyZXNzPy5bMF0/LmxpbmssXG4gICAgICAgICAgICAgICAgbGlua3M6IHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBwcm9wcz8uYWRkcmVzcz8uWzBdPy5saW5rLFxuICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2V4dGVybmFsJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbnRhY3Q6IGNvbnRhY3QsXG4gICAgICAgICAgICBzb2NpYWxNZWRpYTogc29jaWFsTWVkaWE/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGJhYnlsb24tJHtpdGVtLm5hbWU/LnRvTG93ZXJDYXNlKCl9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXRlbS51cmwsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWdCYWNrZ3JvdW5kOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYmFja2dyb3VuZD8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbGlua0xvZ286IHtcbiAgICAgICAgICAgICAgICB1cmw6IHByb3BzPy5saW5rcz8ubG9nb0xpbms/LlswXT8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgICAgIGxpbmtUeXBlOiBwcm9wcz8ubGlua3M/LmxvZ29MaW5rPy5bMF0/LmxpbmtUeXBlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBjb250YWN0VGl0bGU6IHByb3BzPy50ZXh0cz8uY29udGFjdFRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgYWRkcmVzc1RpdGxlOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBjb250YWN0VGl0bGU6IHByb3BzPy50ZXh0cz8uY29udGFjdFRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGFkZHJlc3NUaXRsZTogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25NZW51SW5mb0k7XG4gICAgfVxuXG4gICAgbWFwSW5mbzJpbWcoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHJpZ2h0U2lkZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgKTogQmFieWxvbkluZm8yaW1nSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByaWdodFNpZGU6IHJpZ2h0U2lkZSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICAgICAgaXRlbTE6IHByb3BzPy50ZXh0cz8uaXRlbTEsXG4gICAgICAgICAgICAgICAgaXRlbTFUZXh0OiBwcm9wcz8udGV4dHM/Lml0ZW0xVGV4dCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltYWdlc3NtYWxsOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXNzbWFsbCxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGFkdmFudGFnZXM6IHByb3BzPy5WZW50YWphcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm8yaW1nSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvMmNvbGltZyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2VcbiAgICApOiBCYWJ5bG9uSW5mbzJDb2xJbWdJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJpZ2h0U2lkZTogcmlnaHRTaWRlLFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc21hbGxpbWFnZTogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uc21hbGxpbWFnZSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mbzJDb2xJbWdJO1xuICAgIH1cblxuICAgIG1hcFppZ3phZyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2VcbiAgICApOiBCYWJ5bG9uSW5mbzJpbWdJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IGltYWdlczogKHN0cmluZyB8IEJhYnlsb25JbWFnZUkpW10gfCB1bmRlZmluZWQgPSBbXTtcbiAgICAgICAgbGV0IHRleHRzLCB0YWdzO1xuICAgICAgICBpZiAocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzKSB7XG4gICAgICAgICAgICBpbWFnZXMgPSB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRleHRzID0ge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/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+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGV4dHMsXG4gICAgICAgICAgICBpbWFnZXMsXG4gICAgICAgICAgICB0YWdzLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvMmltZ0k7XG4gICAgfVxuXG4gICAgbWFwR3JpZEdhbGxlcnkocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25JbmZvSW1nSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGlzSW5FbnVtID0gPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PihcbiAgICAgICAgICAgIGVudW1PYmo6IFQsXG4gICAgICAgICAgICB2YWx1ZTogYW55XG4gICAgICAgICk6IHZhbHVlIGlzIFRba2V5b2YgVF0gPT4gT2JqZWN0LnZhbHVlcyhlbnVtT2JqKS5pbmNsdWRlcyh2YWx1ZSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgaG92ZXI6IHByb3BzPy50ZXh0cz8uaG92ZXIsXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgICAgICB2aWV3OiBpc0luRW51bShWaWV3c1R5cGUsIHByb3BzPy5tdWx0aW1lZGlhPy52aWV3KVxuICAgICAgICAgICAgICAgID8gcHJvcHM/Lm11bHRpbWVkaWE/LnZpZXdcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMsXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm9JbWdJO1xuICAgIH1cblxuICAgIG1hcEluZm9HcmlkKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSW5mb0dyaWRJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8udGV4dCxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnMuZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IGl0ZW0uYnV0dG9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmJ1dHRvbnMuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PiBsaW5rPy5saW5rVmFsdWUgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogaXRlbS5saW5rc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmxpbmtzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT4gbGluaz8ubGlua1ZhbHVlICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKT8uWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JbmZvR3JpZEl0ZW1JXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvR3JpZEk7XG4gICAgfVxuXG4gICAgbWFwQmFubmVyR2FsbGVyeShcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25CYW5uZXJHYWxsZXJ5SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBob3ZlcjogcHJvcHM/LnRleHRzPy5ob3ZlcixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25CYW5uZXJHYWxsZXJ5STtcbiAgICB9XG5cbiAgICBtYXBCYW5uZXJOZXdzbGV0dGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBpZGVudGlmaWVyOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uQmFubmVyTmV3c2xldHRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8udGV4dCxcbiAgICAgICAgICAgIGhvdmVyOiBwcm9wcz8udGV4dHM/LmhvdmVyLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgfSBhcyBCYWJ5bG9uQmFubmVyTmV3c2xldHRlckk7XG4gICAgfVxuXG4gICAgbWFwU2xpZGVyQ29sbDIoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHJpZ2h0U2lkZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgKTogQmFieWxvblRvcFNsaWRlclYySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBwcm9wc1xuICAgICAgICAgICAgPyAoe1xuICAgICAgICAgICAgICAgICAgcmlnaHRTaWRlOiByaWdodFNpZGUsXG4gICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtLnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25TbGlkZXIyQ29sSXRlbUlcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBsYWJlbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uVG9wU2xpZGVyVjJJKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwU2xpZGVyQ29sbChcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgaWRlbnRpZmllcjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvblRvcFNsaWRlclYySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBpbWFnZXM6IChzdHJpbmcgfCBCYWJ5bG9uSW1hZ2VJKVtdIHwgdW5kZWZpbmVkID0gW107XG4gICAgICAgIGlmIChwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMpIHtcbiAgICAgICAgICAgIGltYWdlcyA9IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW1hZ2VSZXNwb25zZSA9IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIHNyYzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBpbWFnZVJlc3BvbnNlID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1hZ2VSZXNwb25zZS5zcmNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGltYWdlUmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICAgIGFsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBpbWFnZVJlc3BvbnNlID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1hZ2VSZXNwb25zZS5hbHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+IGJ0bj8ubGlua1ZhbHVlICE9PSBudWxsIHx8IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmxpbmtzPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4ubGlua1ZhbHVlICE9PSBudWxsIHx8IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0gYXMgQmFieWxvbkltYWdlSTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VzKSB7XG4gICAgICAgICAgICBpbWFnZXMgPSBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VzPy5tYXAoKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbWFnZVJlc3BvbnNlID0gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgc3JjOlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGltYWdlUmVzcG9uc2UgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWFnZVJlc3BvbnNlLnNyY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW1hZ2VSZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgYWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGltYWdlUmVzcG9uc2UgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWFnZVJlc3BvbnNlLmFsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gYnRuPy5saW5rVmFsdWUgIT09IG51bGwgfHwgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gYnRuPy5saW5rVmFsdWUgIT09IG51bGwgfHwgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uSW1hZ2VJO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByb3BzXG4gICAgICAgICAgICA/ICh7XG4gICAgICAgICAgICAgICAgICBpbWFnZXM6IGltYWdlcyxcbiAgICAgICAgICAgICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHRvcEJHOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8udG9wYmc/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIGJvdHRvbUJHOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYm90dG9tYmc/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIHRvcENvbG9yOiBwcm9wcz8udGV4dHM/LnRvcENvbG9yLFxuICAgICAgICAgICAgICAgICAgYm90dG9tQ29sb3I6IHByb3BzPy50ZXh0cz8uQm90dG9tQ29sb3IsXG4gICAgICAgICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgICAgICAgIH0gYXMgQmFieWxvblRvcFNsaWRlclYySSlcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcEl0ZW1zR3JpZChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkl0ZW1zR3JpZEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gcHJvcHNcbiAgICAgICAgICAgID8gKHtcbiAgICAgICAgICAgICAgICAgIGltYWdlczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1hZ2VSZXNwb25zZSA9IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGltYWdlUmVzcG9uc2UgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1hZ2VSZXNwb25zZS5zcmNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbWFnZVJlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBpbWFnZVJlc3BvbnNlID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltYWdlUmVzcG9uc2UuYWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gYnRuPy5saW5rVmFsdWUgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubGlua3M/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4ubGlua1ZhbHVlICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uSW1hZ2VJO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBsYWJlbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gYnRuPy5saW5rVmFsdWUgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB9IGFzIEJhYnlsb25JdGVtc0dyaWRJKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwUm9vbShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm8yaW1nSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByb29tczogcHJvcHM/LnJvb21zPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogaXRlbS5tdWx0aW1lZGlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKGltZzogSW1hZ2VSZXNwb25zZSkgPT4gaW1nLmNvdmVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaW1nLnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGltZy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSW1hZ2VJXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDE6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMzogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDQ6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWw0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzOiBpdGVtPy5zZXJ2aWNlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodjogc3RyaW5nKSA9PiB2LnRyaW0oKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhSb29tU2VydmljZVR5cGUuY2hhcmFjdGVyaXN0aWNzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblJvb21JbmZvSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mbzJpbWdJO1xuICAgIH1cblxuICAgIG1hcFJvb21zR3JpZChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblJvb21zR3JpZEkgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgcm9vbXMgPSBwcm9wcz8ucm9vbXNcbiAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ0bj8ubGlua1R5cGU/LmluY2x1ZGVzKCdpbnRlcm5hbCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBpdGVtPy5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogaXRlbS5tdWx0aW1lZGlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nLnRhZ3M/LnNvbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnKSA9PiB0YWcubmFtZSA9PT0gJ1Jvb21zR3JpZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGltZy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpbWcuc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nLnRhZ3M/LnNvbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZy5uYW1lID09PSAnUm9vbXNHcmlkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZzogaW1nLnRhZ3M/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWc6IGFueSkgPT4gdGFnPy5maWx0ZXJhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JbWFnZUlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5zbGljZSgwLCAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDE6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMzogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDQ6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWw0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzOiBpdGVtPy5zZXJ2aWNlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodjogc3RyaW5nKSA9PiB2LnRyaW0oKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhSb29tU2VydmljZVR5cGUuY2hhcmFjdGVyaXN0aWNzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblJvb21JbmZvSVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnNvcnQoKGE6IEJhYnlsb25Sb29tc0xpc3RJdGVtLCBiOiBCYWJ5bG9uUm9vbXNMaXN0SXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAoYS5vcmRlciA/PyAwKSAtIChiLm9yZGVyID8/IDApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBsYWJlbHM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByb29tczogcHJvcHM/LmJ1dHRvbnMgPyByb29tcy5zbGljZSgwLCA1KSA6IHJvb21zLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvblJvb21zR3JpZEk7XG4gICAgfVxuXG4gICAgbWFwUm9vbXNTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Sb29tc1NsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGVDb250YWluOiB7XG4gICAgICAgICAgICAgICAgICAgIHRhZzogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGl0bGVDb250YWluOiB7XG4gICAgICAgICAgICAgICAgICAgIHRhZzogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcblxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByb29tczogcHJvcHM/LnJvb21zXG4gICAgICAgICAgICAgICAgPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChyb29tOiBhbnksIGluZGV4OiBudW1iZXIsIHNlbGY6IGFueVtdKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5maW5kSW5kZXgoKHIpID0+IHIuaWQgPT09IHJvb20uaWQpID09PSBpbmRleFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucz8uc2xpY2UoKS5yZXZlcnNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5tdWx0aW1lZGlhPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbWc6IGFueSkgPT4gaW1nPy5jb3ZlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB8fCBpdGVtPy5tdWx0aW1lZGlhPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDM6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsNDogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaXRlbT8ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXF1aXBtZW50czpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uc2VydmljZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChzdmM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHN2Yy50eXBlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzdmMudHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHQ6IHN0cmluZykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnRyaW0oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBbXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc0NoYXJhY3RlcmlzdGljID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXMuaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb29tU2VydmljZVR5cGUuY2hhcmFjdGVyaXN0aWNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzQ2xhc3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIXN2Yy5jbGFzcyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdmMuY2xhc3MudG9TdHJpbmcoKS50cmltKCkgIT09ICcnO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc0NoYXJhY3RlcmlzdGljICYmIGhhc0NsYXNzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubWFwKChzdmM6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBzdmMubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke3N2Yy5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpID8/IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblJvb21JbmZvSVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc29ydCgoYTogQmFieWxvblJvb21zTGlzdEl0ZW0sIGI6IEJhYnlsb25Sb29tc0xpc3RJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoYS5vcmRlciA/PyAwKSAtIChiLm9yZGVyID8/IDApO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICB9IGFzIEJhYnlsb25Sb29tc1NsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwT2ZmZXJTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25PZmZlclNsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGJhY2tncm91bmRJbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmRpbWFnZW5lcz8uWzBdIHx8XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5iYWNrZ3JvdW5kaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG9mZmVyczogcHJvcHM/Lm9mZmVycz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkZyb206IGl0ZW0/LmFwcGxpY2F0aW9uRnJvbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uVG86IGl0ZW0/LmFwcGxpY2F0aW9uVG8sXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeTogaXRlbT8uY3VycmVuY3ksXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNjb3VudDogaXRlbT8uZGlzY291bnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDM6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbnM6IGl0ZW0udGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtLnRleHRzPy5yZXNlcnZhdGlvblVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgQmFieWxvblRleHRJbmZvSSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXRlbT8udXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZUZyb206IGl0ZW0/LnZpc2libGVGcm9tLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZVRvOiBpdGVtPy52aXNpYmxlVG8sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25PZmZlcklcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbk9mZmVyU2xpZGVySTtcbiAgICB9XG4gICAgLy8tLS0tIExBWU9VVCBDT01QT05FTlRTIEVORC0tLS0vL1xuXG4gICAgbWFwVGhhbmtzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uVGhhbmtzSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgIH0gYXMgQmFieWxvblRoYW5rc0k7XG4gICAgfVxuXG4gICAgbWFwQ29udGFjdEZvcm0oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5kUHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgbmRQcm9wc0NvbnN1bHQ6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25Db250YWN0Rm9ybUkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy5jb250YWluLFxuICAgICAgICAgICAgc3VidGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uc3VidGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5zdWJ0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy50YWcsXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0czogcHJvcHM/LnRleHRzLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgdGV4dGFyZWE6IHtcbiAgICAgICAgICAgICAgICBpZDogJ21lbnNhamUnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0TWVzc2FnZSxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXRNZXNzYWdlKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dE1lc3NhZ2VQbGFjZUhvbGRlcixcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yUmVxdWlyZWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29uZGl0aW9uczogcHJvcHM/LnRleHRzPy5jb25kaXRpb25zLFxuICAgICAgICAgICAgY29uZGl0aW9uczI6IHByb3BzPy50ZXh0cz8uY29uZGl0aW9uczIsXG4gICAgICAgICAgICBkcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmRyb3Bkb3duVGl0bGUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogbmRQcm9wc0NvbnN1bHQ/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VsdFR5cGVJZDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcC5jb25zdWx0X3R5cGVfaWQgPz8gcHJvcC5jb25zdWx0VHlwZUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IHByb3AuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcHJvcC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmRyb3Bkb3duUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JSZXF1aXJlZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBob3RlbERyb3A6XG4gICAgICAgICAgICAgICAgcHJvcHM/LmhvdGVscz8ubGVuZ3RoID4gMVxuICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaG90ZWxEcm9wVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5ob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogcHJvcC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcHJvcC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmhvdGVsRHJvcFBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICkgYXMgc3RyaW5nLFxuICAgICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogJ25vbWJyZScsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplVGV4dChwcm9wcz8udGV4dHM/LmlucHV0TmFtZSksXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0TmFtZVBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JSZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdzdXJuYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0U3VybmFtZXMgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRsYXN0bmFtZSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplVGV4dChcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRTdXJuYW1lcyA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRsYXN0bmFtZVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRTdXJuYW1lc1BsYWNlSG9sZGVyID8/XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0bGFzdG5hbWVQbGFjZUhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yUmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCksXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWxQbGFjZUhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yRW1haWwsXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAncGhvbmUnLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSksXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0UGhvbmVQbGFjZUhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGVsJyxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JQaG9uZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSBhcyBCYWJ5bG9uSW5wdXRJW10sXG4gICAgICAgICAgICBpbmZvOiB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgICAgICAgICBpY29uOiAnaWNvbi0nICsgbmRQcm9wcz8udGV4dHM/LmFkZHJlc3NJY29uLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbmRQcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogbmRQcm9wcz8ubGlua3M/LmFkZHJlc3M/LlswXT8uWzBdPy5sYWJlbCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVtYWlsOiB7XG4gICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyBuZFByb3BzPy50ZXh0cz8uZW1haWxJY29uLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbmRQcm9wcz8udGV4dHM/LmVtYWlsVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKG5kUHJvcHM/LmxpbmtzPy5lbWFpbD8uWzBdKT8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5idG4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYG1haWx0bzoke2J0bj8udXJsfWxgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwaG9uZToge1xuICAgICAgICAgICAgICAgICAgICBpY29uOiAnaWNvbi0nICsgbmRQcm9wcz8udGV4dHM/LnBob25lSWNvbixcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG5kUHJvcHM/LnRleHRzPy5waG9uZVRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhuZFByb3BzPy5saW5rcz8ucGhvbmU/LlswXSk/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgIChidG4pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYnRuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGBwaG9uZToke2J0bj8udXJsfWxgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbkNvbnRhY3RGb3JtSTtcbiAgICB9XG5cbiAgICBtYXBDb250YWN0QWRkcmVzcyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25Db250YWN0QWRkcmVzc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBhZGRyZXNzU291cmNlID0gcHJvcHM/LmhvdGVsQWRkcmVzcyA/PyBwcm9wcz8uYWRkcmVzcz8uWzBdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW5mbzoge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIHByb3BzPy50ZXh0cz8uYWRkcmVzc0ljb24sXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzU291cmNlPy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgW2FkZHJlc3NTb3VyY2U/LmNwLCBhZGRyZXNzU291cmNlPy5jaXR5XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuam9pbignICcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc1NvdXJjZT8ubG9jYWxpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWRkcmVzc1NvdXJjZT8ucHJvdmluY2UsIGFkZHJlc3NTb3VyY2U/LmNvdW50cnldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCcsICcpLFxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKChwYXJ0LCBpZHgsIGFycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZHggPT09IDApIHJldHVybiBwYXJ0ICsgJzxicj4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZHggPT09IDEgJiYgYXJyWzJdKSByZXR1cm4gcGFydCArICcsICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA9PT0gMSkgcmV0dXJuIHBhcnQgKyAnPGJyPic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA9PT0gMikgcmV0dXJuIHBhcnQgKyAnPGJyPic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oJycpLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYWRkcmVzc1NvdXJjZT8ubGluayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2V4dGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogYWRkcmVzc1NvdXJjZT8uYWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0gYXMgKHsgc21hbGxUZXh0Pzogc3RyaW5nIH0gJiBCYWJ5bG9uQnV0dG9uSSlbXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVtYWlsOiB7XG4gICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyBwcm9wcz8udGV4dHM/LmVtYWlsSWNvbixcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5lbWFpbFRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5lbWFpbFRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmVtYWlsVGl0bGU/LmNvbnRhaW4gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NTb3VyY2U/LmVtYWlsLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYG1haWx0bzoke2FkZHJlc3NTb3VyY2U/LmVtYWlsfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdleHRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGFkZHJlc3NTb3VyY2U/LmVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtYWxsVGV4dDogYWRkcmVzc1NvdXJjZT8uZW1haWwsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdIGFzICh7IHNtYWxsVGV4dD86IHN0cmluZyB9ICYgQmFieWxvbkJ1dHRvbkkpW10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwaG9uZToge1xuICAgICAgICAgICAgICAgICAgICBpY29uOiAnaWNvbi0nICsgcHJvcHM/LnRleHRzPy5yZXNlcnZhdGlvbnNJY29uLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnJlc2VydmF0aW9uc1RpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5yZXNlcnZhdGlvbnNUaXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5yZXNlcnZhdGlvbnNUaXRsZT8uY29udGFpbiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc1NvdXJjZT8ucGhvbmUsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgdGVsOiR7YWRkcmVzc1NvdXJjZT8ucGhvbmV9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2V4dGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogYWRkcmVzc1NvdXJjZT8ucGhvbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxUZXh0OiBhZGRyZXNzU291cmNlPy5waG9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0gYXMgKHsgc21hbGxUZXh0Pzogc3RyaW5nIH0gJiBCYWJ5bG9uQnV0dG9uSSlbXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBDb250YWN0TWFwKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQ29udGFjdE1hcGFJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbnRlbnRVcmw6IHByb3BzPy50ZXh0cz8ucGhvbmVJY29uLFxuICAgICAgICAgICAgbWFwSW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgbWFwSW1hZ2VNb2JpbGU6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lc21vYmlsZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25Db250YWN0TWFwYUk7XG4gICAgfVxuXG4gICAgbWFwQ29udGFjdEhvdyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkNvbnRhY3RIb3dJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/LlZlbnRhamFzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Db250YWN0TWFwSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQ29udGFjdEhvd0k7XG4gICAgfVxuXG4gICAgbWFwV2VibWFwKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uV2VibWFwSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsaW5rczogKFxuICAgICAgICAgICAgICAgIHByb3BzPy5wYWdlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGluay5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbGluay51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgICAgICkgYXMgQmFieWxvbkJ1dHRvbklbXVxuICAgICAgICAgICAgKS5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGxpbmspID0+XG4gICAgICAgICAgICAgICAgICAgIGxpbmsudXJsPy5zcGxpdCgnLycpWzFdID09PVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmxvY2F0ZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICkgYXMgc3RyaW5nLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbWFwTGVnYWwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25MZWdhbEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy5jb250YWluLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25MZWdhbEk7XG4gICAgfVxuXG4gICAgbWFwQnJlYWRjcnVtYnMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25CcmVhZGNydW1iSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsaW5rczogKHByb3BzPy5pdGVtcyBhcyBhbnlbXSlcbiAgICAgICAgICAgICAgICA/LnNvcnQoKGEsIGIpID0+IGEgLSBiKVxuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGl0ZW0/LmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXRlbT8udXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbT8udXJsPy5jaGFyQXQoaXRlbT8udXJsPy5sZW5ndGggLSAxKSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbT8udXJsPy5zbGljZSgwLCAtMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbT8udXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25CcmVhZGNydW1iSTtcbiAgICB9XG5cbiAgICBtYXBSb29tc0NvbHMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Sb29tc0NvbHNJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZpbHRlcnM6IHByb3BzPy5maWx0ZXJzPy5tYXAoKGZpbHRlcjogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBmaWx0ZXIubmFtZSxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBmaWx0ZXI/LnZhbHVlcz8ubWFwKChvcHRpb246IHN0cmluZykgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTogb3B0aW9uLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBvcHRpb24sXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBmaWx0ZXIubmFtZSxcbiAgICAgICAgICAgICAgICBzbWFsbHRpdGxlOiBmaWx0ZXIuc21hbGx0aXRsZSxcbiAgICAgICAgICAgICAgICBmaWx0ZXJJZDogZmlsdGVyLmZpbHRlcklkLFxuICAgICAgICAgICAgfSkpIGFzIEJhYnlsb25Ecm9wZG93bklbXSxcbiAgICAgICAgICAgIHN0RmlsdGVyczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbmRGaWx0ZXJzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/LnJvb21zXG4gICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZHJvb21GaWx0ZXJJZDogaXRlbT8udGV4dHM/LmJlZHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyaXN0aWNzRmlsdGVySWQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbS5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtLmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2VUZXh0OiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaXRlbT8ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXF1aXBtZW50OiBpdGVtPy5zZXJ2aWNlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8udHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHY6IHN0cmluZykgPT4gdi50cmltKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb29tU2VydmljZVR5cGUuY2hhcmFjdGVyaXN0aWNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uY2xhc3N9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uUm9vbXNMaXN0RXF1aXBtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5tdWx0aW1lZGlhPy5maW5kKChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWcudGFncz8uc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnKSA9PiB0YWcubmFtZSA9PT0gJ1Jvb21zQ29scydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgPz8gaXRlbS5tdWx0aW1lZGlhPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubXVsdGltZWRpYSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblJvb21zTGlzdEl0ZW1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnNvcnQoKGE6IEJhYnlsb25Sb29tc0xpc3RJdGVtLCBiOiBCYWJ5bG9uUm9vbXNMaXN0SXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGEub3JkZXIgPz8gMCkgLSAoYi5vcmRlciA/PyAwKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uUm9vbXNDb2xzSTtcbiAgICB9XG5cbiAgICBtYXBGZWF0dXJlc1NsaWRlcihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25GZWF0dXJlc1NsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5WZW50YWphcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uaWNvbn1gLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uRmVhdHVyZXNTbGlkZXJJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICB9IGFzIEJhYnlsb25GZWF0dXJlc1NsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwQmFubmVySW5mbyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkJhbm5lckluZm9JIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LnByZXRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHZpZGVvOiBwcm9wcz8udGV4dHM/LlsnVmlkZW8tbGluayddLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5idXR0b25zKSxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQmFubmVySW5mb0k7XG4gICAgfVxuXG4gICAgbWFwUm9vbURldGFpbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblJvb21EZXRhaWxJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFwcm9wcz8ucm9vbSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhLCBidXR0b25zIH0gPSBwcm9wcz8ucm9vbTtcbiAgICAgICAgbGV0IGRldGFpbEJ1dHRvbnMgPSBwcm9wcy5idXR0b25zPy5sZW5ndGggPyBwcm9wcy5idXR0b25zIDogYnV0dG9ucztcbiAgICAgICAgaWYgKGJ1dHRvbnMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgZGV0YWlsQnV0dG9ucyA9IFtidXR0b25zWzFdXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHRleHRzPy5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgdGV4dHM/LmFkZGl0aW9uYWw0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICB0ZXh0cz8uYWRkaXRpb25hbDQgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICB0ZXh0cz8uYWRkaXRpb25hbDQgIT09ICcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LmFkZGl0aW9uYWw0XG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgIGVxdWlwbWVudFRpdGxlOiB0ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoZGV0YWlsQnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ucm9vbT8uc2VydmljZXNcbiAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICBpdGVtPy50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICA/LnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHY6IHN0cmluZykgPT4gdi50cmltKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoUm9vbVNlcnZpY2VUeXBlLkVxdWlwbWVudClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtPy5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgfSkpIGFzIEJhYnlsb25FcXVpcG1lbnRJdGVtW10sXG4gICAgICAgICAgICBzaG93TGVzczogcHJvcHM/LnRleHRzPy5zaG93TGVzcyxcbiAgICAgICAgICAgIHNob3dNb3JlOiBwcm9wcz8udGV4dHM/LnNob3dNb3JlLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/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/LnRleHRzPy5jb25kaXRpb25zLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG9mZmVyPy5tdWx0aW1lZGlhPy5bMF0sIGZhbHNlKSxcbiAgICAgICAgICAgIG11bHRpbWVkaWE6IHRoaXMubWFwSW1hZ2VzKG9mZmVyPy5tdWx0aW1lZGlhKSxcbiAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzKT8uWzBdLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKG9mZmVyPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgc2VydmljZXM6IHRoaXMubWFwR2xvYmFsU2VydmljZXMob2ZmZXI/LnNlcnZpY2VzKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uT2ZmZXJEZXRhaWxJO1xuICAgIH1cblxuICAgIG1hcE9mZmVyc0xpc3QocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25PZmZlcnNMaXN0SSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5vZmZlcnM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0/LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeTogaXRlbT8uY3VycmVuY3ksXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNjb3VudDogaXRlbT8uZGlzY291bnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0OiBpdGVtPy5tdWx0aW1lZGlhPy5bMF0/LmFsdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlQnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWVPZmZlckJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyk/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsRnJvbTogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxEaXNjb3VudDogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG9tZTogaXRlbT8uc2l0ZXM/LlswXT8uaG9tZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVwOiBpdGVtPy5zaXRlcz8uWzBdPy5wb3B1cCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbk9mZmVyc0xpc3RJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXJJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25PZmZlcnNMaXN0STtcbiAgICB9XG5cbiAgICBtYXBGYXEocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25GYXFJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubG9jYXRpb25Ib3dcbiAgICAgICAgICAgICAgICA/IHByb3BzPy5sb2NhdGlvbkhvdz8uaXRlbXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAoZmFxOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogZmFxLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGZhcS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkl0ZW1JXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBwcm9wcz8uaXRlbXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAoZmFxOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogZmFxLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGZhcS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSXRlbUlcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWc6IHByb3BzPy5sb2NhdGlvbk1hcFxuICAgICAgICAgICAgICAgID8gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmxvY2F0aW9uTWFwPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uRmFxSTtcbiAgICB9XG5cbiAgICBtYXBTdGF0aWNGb290ZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25TdGF0aWNGb290ZXJJIHtcbiAgICAgICAgLy8gRnVuY2lvbiB0ZW1wb3JhbCBoYXN0YSBxdWUgZWwgYmFjayBkZXZ1ZWx2YSBsYSBsaXN0YSBkZSBob3RlbGVzXG4gICAgICAgIGNvbnN0IGR5bmFtaWNIb3RlbHNBZHJlc3NlcyA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFkZHJlc3Nlc01hcDogeyBba2V5OiBzdHJpbmddOiBQYXJ0aWFsPEJhYnlsb25BZGRyZXNzSXRlbT4gfSA9XG4gICAgICAgICAgICAgICAge307XG4gICAgICAgICAgICBpZiAoIXByb3BzPy50ZXh0cykgcmV0dXJuO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMocHJvcHM/LnRleHRzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoJ2FkZHJlc3NsaXN0JykgJiYgcHJvcHM/LnRleHRzW2tleV0pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBrZXkubWF0Y2goL2FkZHJlc3NsaXN0KFxcZCspKC4qKS8pO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gbWF0Y2hbMV07XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IG1hdGNoWzJdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWFkZHJlc3Nlc01hcFtpbmRleF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzZXNNYXBbaW5kZXhdID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogcGFyc2VJbnQoaW5kZXgsIDEwKS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHByb3BzPy50ZXh0c1trZXldO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChmaWVsZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1RpdGxlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzTWFwW2luZGV4XS5uYW1lID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0FkZHJlc3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzZXNNYXBbaW5kZXhdLmFkZHJlc3MgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzTWFwW2luZGV4XS5mdWxsX2FkZHJlc3MgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnVGVsZic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRyZXNzZXNNYXBbaW5kZXhdIGFzIGFueSkucGhvbmUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKGFkZHJlc3Nlc01hcCkgYXMgQmFieWxvbkFkZHJlc3NJdGVtW107XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIG5kVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICByZFRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmxpbmtzVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5saW5rc1RpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5saW5rc1RpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGhUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5sb2NhdGlvblRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ubG9jYXRpb25UaXRsZVxuICAgICAgICAgICAgICAgICAgICA6IChwcm9wcz8udGV4dHM/LmxvY2F0aW9uVGl0bGU/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICAgICAgICAodHlwZW9mIHByb3BzPy50ZXh0cz8ubmV3c2xldHRlclRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ubmV3c2xldHRlclRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5uZXdzbGV0dGVyVGl0bGU/LmNvbnRhaW4pKSxcblxuICAgICAgICAgICAgZmlmdGhUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5hZGRpdGlvbmFsRm9vdGVyVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5hZGRpdGlvbmFsRm9vdGVyVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmFkZGl0aW9uYWxGb290ZXJUaXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGFoVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uQWRkcmVzc0hvdGVsc1RpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uQWRkcmVzc0hvdGVsc1RpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5BZGRyZXNzSG90ZWxzVGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBuZHRpdGxlOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHJkdGl0bGU6IHByb3BzPy50ZXh0cz8ubGlua3NUaXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRodGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ubG9jYXRpb25UaXRsZT8udGFnID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ubmV3c2xldHRlclRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgZmlmdGh0aXRsZTogcHJvcHM/LnRleHRzPy5hZGRpdGlvbmFsRm9vdGVyVGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjb3B5cmlnaHQ6IHByb3BzPy50ZXh0cz8uY29weXJpZ2h0Py50YWcsXG4gICAgICAgICAgICAgICAgYWh0aXRsZTogcHJvcHM/LnRleHRzPy5BZGRyZXNzSG90ZWxzVGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmcmFtZVVybDogISFwcm9wcz8udGV4dHM/LmZyYW1lVXJsXG4gICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmZyYW1lVXJsXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBjb250YWN0SW5mbzogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3M/LmNvbnRhY3Q/LlswXSksXG4gICAgICAgICAgICBjb250YWN0TGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5jb250YWN0TGlua3M/LlswXSksXG4gICAgICAgICAgICBmb290ZXJMaW5rczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3M/LmZvb3RlckxpbmtzPy5bMF0pLFxuICAgICAgICAgICAgYWRkcmVzczogQXJyYXkuaXNBcnJheShwcm9wcz8uYWRkcmVzcylcbiAgICAgICAgICAgICAgICA/IHByb3BzPy5hZGRyZXNzLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAoYWRkcmVzczogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGFkZHJlc3MuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBhZGRyZXNzLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiBhZGRyZXNzLmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaXR5OiBhZGRyZXNzLmNpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aW5jZTogYWRkcmVzcy5wcm92aW5jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IGFkZHJlc3MuY291bnRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwOiBhZGRyZXNzLmNwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhZGRyZXNzLmxpbmssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsX2FkZHJlc3M6IGFkZHJlc3MuZnVsbEFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25BZGRyZXNzSXRlbVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogW10sXG4gICAgICAgICAgICBhZGRyZXNzSG90ZWxzOlxuICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkocHJvcHM/LmFkZHJlc3NIb3RlbHMpICYmXG4gICAgICAgICAgICAgICAgcHJvcHM/LmFkZHJlc3NIb3RlbHMubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy5hZGRyZXNzSG90ZWxzLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZHJlc3M6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGFkZHJlc3MuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYWRkcmVzcy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6IGFkZHJlc3MuYWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaXR5OiBhZGRyZXNzLmNpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmluY2U6IGFkZHJlc3MucHJvdmluY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeTogYWRkcmVzcy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwOiBhZGRyZXNzLmNwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYWRkcmVzcy5saW5rLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBob25lOiBhZGRyZXNzLnBob25lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsOiBhZGRyZXNzLmVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxfYWRkcmVzczogYWRkcmVzcy5mdWxsQWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25BZGRyZXNzSXRlbVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgOiAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkeW5hbWljQWRkcmVzc2VzID0gZHluYW1pY0hvdGVsc0FkcmVzc2VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkeW5hbWljQWRkcmVzc2VzICYmIGR5bmFtaWNBZGRyZXNzZXMubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBkeW5hbWljQWRkcmVzc2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICB9KSgpLFxuICAgICAgICAgICAgc29jaWFsTWVkaWE6IHByb3BzPy5zb2NpYWxNZWRpYT8ubWFwKFxuICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgYmFieWxvbi0ke2xpbmsubmFtZT8udG9Mb3dlckNhc2UoKX1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBsaW5rLnVybCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb3B5cmlnaHQ6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uY29weXJpZ2h0ID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uY29weXJpZ2h0XG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5jb3B5cmlnaHQ/LmNvbnRhaW4sXG4gICAgICAgICAgICBuYXY6IHByb3BzPy5uYXY/Lm1hcChcbiAgICAgICAgICAgICAgICAobmF2OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbmF2Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IG5hdi51cmwsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmQ/LlswXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYWx0OiBwcm9wcz8ubXVsdGltZWRpYT8uYmFja2dyb3VuZD8udGl0bGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9nbzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmxvZ28/LlswXSwgZmFsc2UpLFxuICAgICAgICAgICAgLy8gaW5wdXQ6IHByb3BzPy50ZXh0cz8ubmV3c2xldHRlckRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnbmV3c2xldHRlcicsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRIb2xkZXIsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/Lm5ld3NFcnJvckVtYWlsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxlZ2FsQWR2aXNlOiBwcm9wcz8udGV4dHM/LnN1YnNjcmliZXIsXG4gICAgICAgICAgICBhZGRpdGlvbmFsTGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/LmxpbmtzPy5hZGRpdGlvbmFsRm9vdGVyTGlua3NbMF0/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGFiZWxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25TdGF0aWNGb290ZXJJO1xuICAgIH1cblxuICAgIG1hcEdhbGxlcnkocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25HYWxsZXJ5SSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByb29tc0J0bjoge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcz8udGV4dHM/LmZpbHRlclJvb21zLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpbHRlcnNCdG46IHtcbiAgICAgICAgICAgICAgICBsYWJlbDogcHJvcHM/LnRleHRzPy5maWx0ZXJDYXRlZ29yaWVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpbHRlcnM6IHByb3BzPy5maWx0ZXJzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbDogaXRlbS5hbGwsXG4gICAgICAgICAgICAgICAgICAgICAgICByb29tOiBpdGVtLnJvb20sXG4gICAgICAgICAgICAgICAgICAgICAgICByb29tczogaXRlbS5yb29tcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkdhbGxlcnlGaWx0ZXJcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZXM6IHByb3BzPy5maWx0ZXJzXG4gICAgICAgICAgICAgICAgPy5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjYzogeyBtdWx0aW1lZGlhOiBhbnlbXTsgZmlsdGVySW5kZXg6IG51bWJlciB9W10sXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGFueSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlckluZGV4OiBudW1iZXJcbiAgICAgICAgICAgICAgICAgICAgKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyLm11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtdWx0aW1lZGlhV2l0aEZpbHRlciA9IGZpbHRlci5tdWx0aW1lZGlhLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGZpbHRlckluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhOiBtdWx0aW1lZGlhV2l0aEZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlckluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZmxhdE1hcCgoeyBtdWx0aW1lZGlhIH06IGFueSkgPT4gbXVsdGltZWRpYSlcbiAgICAgICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcsIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGltZz8uZmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkdhbGxlcnlJdGVtXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uR2FsbGVyeUk7XG4gICAgfVxuXG4gICAgbWFwTGFuZ3VhZ2VNb2RhbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkxhbmd1YWdlTW9kYWxJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lmxhbmd1YWdlcyxcbiAgICAgICAgICAgIHNlbGVjdGVkOiBwcm9wcz8ubGFuZ3VhZ2VzPy5maW5kKFxuICAgICAgICAgICAgICAgIChsbmc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgbG5nLmlkID09PSB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmlkXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25MYW5ndWFnZU1vZGFsSTtcbiAgICB9XG5cbiAgICBtYXBFbmdpbmUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25FbmdpbmVJIHwgQmFieWxvbkVuZ2luZU1vZGFsSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvbmx5QWR1bHRzOiBwcm9wcz8ub25seUFkdWx0cyxcbiAgICAgICAgICAgIGRlZmF1bHRCdXR0b246IHByb3BzPy5kZWZhdWx0SW50ZXJuYWxCdXR0b24sXG4gICAgICAgICAgICBidXR0b246IHsgbGFiZWw6IHByb3BzPy50ZXh0cz8ubW90b3JTdWJtaXQsIHVybDogcHJvcHM/LnVybCB9LFxuICAgICAgICAgICAgZGF0ZXBpY2tlckRhdGE6IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5tb3RvckRhdGVUaXRsZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBndWVzdHNJbnB1dDoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm1vdG9yR3Vlc3RzSW5wdXRIb2xkZXIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJvbW9JbnB1dDoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm1vdG9yUHJvbW9Ib2xkZXIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ3Vlc3RzOiB7XG4gICAgICAgICAgICAgICAgYnRuOiB7IGxhYmVsOiBwcm9wcz8udGV4dHM/Lm1vdG9yQXBwbHkgfSxcbiAgICAgICAgICAgICAgICBhZHVsdHNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckFkdWx0c1RpdGxlLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLmdlbmVyYXRlQWdlc09wdGlvbnMocHJvcHM/Lm1heEFkdWx0cywgMSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBraWRzRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JLaWRzVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHNtYWxsVGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JLaWRzU21hbGxMYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZW5lcmF0ZUFnZXNPcHRpb25zKHByb3BzPy5tYXhDaGlsZHJlbiksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBiYWJpZXNEcm9wZG93bjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm1heEJhYmllcyA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JCYWJpZXNUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtYWxsVGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JCYWJpZXNTbWFsbFRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZW5lcmF0ZUFnZXNPcHRpb25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tYXhCYWJpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGFnZXNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLmdlbmVyYXRlQWdlc09wdGlvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubWF4QWdlQ2hpbGRyZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubWF4QWdlQmFiaWVzICsgMVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYWdlc0xhYmVsOiBwcm9wcz8udGV4dHM/Lm1vdG9yQWdlc1RpdGxlLFxuICAgICAgICAgICAgICAgIGtpZHNMYWJlbDogcHJvcHM/LnRleHRzPy5tb3RvcktpZExhYmVsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yVGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvclN1YnRpdGxlLFxuICAgICAgICAgICAgdXJsOiBwcm9wcz8udXJsLFxuICAgICAgICAgICAgaG90ZWw6IHByb3BzPy5ob3RlbHM/LlswXSxcbiAgICAgICAgICAgIGNvZGlnbzogcHJvcHM/LmNvZGlnbyA/IHByb3BzPy5jb2RpZ28gOiAnZGVtb19jMnRfY2xpZW50ZXMnLCAvL3RvIGNoYW5nZSwgZG9udCBjb21lIGZyb20gYmFja1xuICAgICAgICAgICAgZ2xWYWx1ZTogcHJvcHM/LmdsVmFsdWUsXG4gICAgICAgICAgICBob3RlbHNJbnB1dDogcHJvcHM/LnRleHRzPy5tb3RvckRyb3BEb3duTmFtZSxcbiAgICAgICAgICAgIGhvdGVsc1BsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm1vdG9yRHJvcERvd25Ib2xkZXIsXG4gICAgICAgICAgICBob3RlbHM6IHtcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uaG90ZWxzPy5tYXAoKGhvdGVsOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGhvdGVsPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB0aWNrZXI6IGhvdGVsPy50aWNrZXIsXG4gICAgICAgICAgICAgICAgICAgIHVybDogaG90ZWw/LnVybCxcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGhvdGVsPy5pZCxcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25FbmdpbmVNb2RhbEkgfCBCYWJ5bG9uRW5naW5lSTtcbiAgICB9XG4gICAgbWFwU2xpZGVyM0l0ZW1zKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uU2xpZGVyM0l0ZW1zSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+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/IGl0ZW0uaWNvbn1gLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIEJhYnlsb25TZXJ2aWNlc1NsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwQWR2YW50YWdlcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkFkdmFudGFnZXNJIHtcbiAgICAgICAgY29uc3QgdmVudGFqYXMgPSBwcm9wcz8uVmVudGFqYXMgPz8gcHJvcHM/Lmxpc3RzID8/IHByb3BzPy5MaXN0cztcbiAgICAgICAgY29uc3QgYWR2ID0gdmVudGFqYXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uaWNvbn1gLFxuICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICB9KSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGFkdmFudGFnZXM6IGFkdixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWVNb3JlOiBwcm9wcz8udGV4dHM/LmFkdmFudGFnZXNzZWVtb3JlLFxuICAgICAgICAgICAgc2VlTGVzczogcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2Vzc2VlbGVzcyxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYWR2YW50YWdlc2ltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkFkdmFudGFnZXNJO1xuICAgIH1cblxuICAgIG1hcEluZm9CaWcocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25JbmZvQmlnSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LnByZXRpdGxlLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy50aXRsZSxcbiAgICAgICAgICAgIHRleHQ6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8uYnV0dG9uc1xuICAgICAgICAgICAgKT8uWzBdLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltZ1NtYWxsOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlsxXSA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8ubmRpbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvQmlnSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvWmlnWmFnVjIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25JbmZvWmlnemFnVjJJIHtcbiAgICAgICAgY29uc3QgW2ltYWdlXSA9XG4gICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2UgfHwgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzIHx8IFtdO1xuICAgICAgICBjb25zdCBbaW1hZ2UyXSA9XG4gICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2UyIHx8IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXNzbWFsbCB8fCBbXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGltYWdlPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltYWdlLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpbWFnZT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWFnZT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGltYWdlPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpbWFnZTI/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1hZ2UyLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpbWFnZTI/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1hZ2UyPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogaW1hZ2UyPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXM6IHByb3BzPy5WZW50YWphcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGl0ZW0uaWNvbiA/IGBpY29uLSR7aXRlbS5pY29ufWAgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdIGFzIEJhYnlsb25JbmZvWmlnemFnVjJJdGVtW10sXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm9aaWd6YWdWMkk7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVyQ29udGFjdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkZvb3RlckNvbnRhY3RJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgZXh0cmFUeHQ6IHByb3BzPy50ZXh0cz8uYWRkaXRpb25hbFRleHQxLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICAgICAgYWx0OiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8uYWx0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFkdmFudGFnZXM6IHByb3BzPy5WZW50YWphcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3M/LmNvbnRhY3RMaW5rcz8uWzBdKSxcbiAgICAgICAgICAgIGFkZHJlc3M6IHtcbiAgICAgICAgICAgICAgICBsb2NhbGl0eTogcHJvcHM/LmhvdGVsQWRkcmVzcz8ubG9jYWxpdHksXG4gICAgICAgICAgICAgICAgY2l0eTogcHJvcHM/LmhvdGVsQWRkcmVzcz8uY2l0eSxcbiAgICAgICAgICAgICAgICBwcm92aW5jZTogcHJvcHM/LmhvdGVsQWRkcmVzcz8ucHJvdmluY2UsXG4gICAgICAgICAgICAgICAgY291bnRyeTogcHJvcHM/LmhvdGVsQWRkcmVzcz8uY291bnRyeSxcbiAgICAgICAgICAgICAgICBjcDogcHJvcHM/LmhvdGVsQWRkcmVzcz8uY3AsXG4gICAgICAgICAgICAgICAgYWRkcmVzczogcHJvcHM/LmhvdGVsQWRkcmVzcz8uYWRkcmVzcyxcbiAgICAgICAgICAgICAgICBsYXQ6IHByb3BzPy5ob3RlbEFkZHJlc3M/LmxhdCxcbiAgICAgICAgICAgICAgICBsb246IHByb3BzPy5ob3RlbEFkZHJlc3M/LmxvbixcbiAgICAgICAgICAgICAgICBwaG9uZTogcHJvcHM/LmhvdGVsQWRkcmVzcz8ucGhvbmUsXG4gICAgICAgICAgICAgICAgZW1haWw6IHByb3BzPy5ob3RlbEFkZHJlc3M/LmVtYWlsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uRm9vdGVyQ29udGFjdEk7XG4gICAgfVxuXG4gICAgbWFwSW5mbzJJbWdCaWcocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25JbmZvMmltZ0JpZ0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHByZXRpdGxlMjogcHJvcHM/LnRleHRzPy5uZFByZXRpdGxlLFxuICAgICAgICAgICAgdGl0bGUyOiBwcm9wcz8udGV4dHM/Lm5kVGl0bGUsXG4gICAgICAgICAgICB0ZXh0MjogcHJvcHM/LnRleHRzPy5uZERlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgYnV0dG9uMjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlsxXSxcbiAgICAgICAgICAgIGltZzoge1xuICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdID8/XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2U/LlswXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYWx0OlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8uYWx0ID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdLmFsdCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbWdTbWFsbDoge1xuICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5uZGltYWdlbmVzPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5uZGltYWdlPy5bMF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGFsdDogcHJvcHM/Lm11bHRpbWVkaWE/Lm5kaW1hZ2VuZXM/LlswXT8uYWx0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mbzJpbWdCaWdJO1xuICAgIH1cblxuICAgIG1hcEZvb3RlckxvZ29zKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uRm9vdGVyTG9nb3NJIHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uID8/IHByb3BzPy50ZXh0cz8udGV4dDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAuLi5wcm9wcz8udGV4dHMsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgbG9nb3M6IHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvcz8ubWFwKChsb2dvOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShsb2dvLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhsb2dvPy5saW5rcyk/LlswXSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uRm9vdGVyTG9nb3NJO1xuICAgIH1cblxuICAgIG1hcEZvb3RlckxpbmtzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uRm9vdGVyTGlua3NJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvcHlyaWdodDogcHJvcHM/LnRleHRzPy5jb3B5cmlnaHQsXG4gICAgICAgICAgICB5ZWFyOiBwcm9wcz8udGV4dHM/LnllYXIsXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uRm9vdGVyTGlua3NJO1xuICAgIH1cblxuICAgIG1hcEZvb3RlclNvY2lhbHMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Gb290ZXJTb2NpYWxJIHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRMaW5rcyA9IChwcm9wcz8uc29jaWFsTWVkaWEgfHwgW10pLmZpbHRlcihcbiAgICAgICAgICAgIChsaW5rOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgbGluayAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIGxpbmsgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgIGxpbmsudXJsICE9PSAnJyAmJlxuICAgICAgICAgICAgICAgIGxpbmsuaWNvbiAhPT0gJydcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgbGlua3M6IGZpbHRlcmVkTGlua3MubWFwKChsaW5rOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgaWNvbjogYGJhYnlsb24tJHtsaW5rLm5hbWU/LnRvTG93ZXJDYXNlKCl9YCxcbiAgICAgICAgICAgICAgICB1cmw6IGxpbmsudXJsLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rLm5hbWUsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgQmFieWxvbkZvb3RlclNvY2lhbEk7XG4gICAgfVxuXG4gICAgbWFwU2xpZGVyMml0ZW1zKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uU2xpZGVyMml0ZW1zSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzLmhvdGVsc1xuICAgICAgICAgICAgICAgID8gcHJvcHM/LmhvdGVscz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LmNpdHksXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgIGltZzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogaXRlbT8ubXVsdGltZWRpYT8uWzBdPy5hbHQsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzOiBpdGVtPy5zZXJ2aWNlcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmNsYXNzfWAsXG4gICAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgOiBwcm9wcz8ucm9vbXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgIGltZzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogaXRlbT8ubXVsdGltZWRpYT8uWzBdPy5hbHQsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAvLyBsaW5rOlxuICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgc2VydmljZXM6IGl0ZW0/LnNlcnZpY2VzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uY2xhc3N9YCxcbiAgICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgQmFieWxvblNsaWRlcjJpdGVtc0k7XG4gICAgfVxuXG4gICAgbWFwU3RhdGljRm9vdGVydjIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25TdGF0aWNGb290ZXJWMkkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBuZFRpdGxlOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZSxcbiAgICAgICAgICAgIHJkVGl0bGU6IHByb3BzPy50ZXh0cz8ubGlua3NUaXRsZSxcbiAgICAgICAgICAgIHRoVGl0bGU6IHByb3BzPy50ZXh0cz8ubG9jYXRpb25UaXRsZSxcbiAgICAgICAgICAgIGZyYW1lVXJsOiBwcm9wcz8udGV4dHM/LmZyYW1lVXJsLFxuICAgICAgICAgICAgaW1nVXJsOiBwcm9wcz8ubXVsdGltZWRpYT8uZm9vdGVyaW1nPy5bMF0/LmxpbmtzPy5bMF0/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgIGNvbnRhY3RJbmZvOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uY29udGFjdD8uWzBdKSxcbiAgICAgICAgICAgIGNvbnRhY3RMaW5rczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3M/LmNvbnRhY3RMaW5rcz8uWzBdKSxcbiAgICAgICAgICAgIGZvb3RlckxpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uZm9vdGVyTGlua3M/LlswXSksXG4gICAgICAgICAgICBhZGRyZXNzOiBBcnJheS5pc0FycmF5KHByb3BzPy5hZGRyZXNzKVxuICAgICAgICAgICAgICAgID8gcHJvcHM/LmFkZHJlc3MubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChhZGRyZXNzOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogYWRkcmVzcz8uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBhZGRyZXNzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogYWRkcmVzcz8uYWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IGFkZHJlc3M/LmNpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aW5jZTogYWRkcmVzcz8ucHJvdmluY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5OiBhZGRyZXNzPy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3A6IGFkZHJlc3M/LmNwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQWRkcmVzc0l0ZW1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgc29jaWFsTWVkaWE6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHVybDogcHJvcHM/LnNvY2lhbE1lZGlhPy5bMF0/LnVybCxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzPy50ZXh0cz8uaW5zdGFncmFtVGl0bGUsXG4gICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uQnV0dG9uSSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBjb3B5cmlnaHQ6IHByb3BzPy50ZXh0cz8uY29weXJpZ2h0LFxuICAgICAgICAgICAgbmF2OiBwcm9wcz8ubmF2Py5tYXAoXG4gICAgICAgICAgICAgICAgKG5hdjogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IG5hdj8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbmF2Py51cmwsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uZm9vdGVyaW1nPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvblN0YXRpY0Zvb3RlclYySTtcbiAgICB9XG5cbiAgICBtYXBMaXN0R3JpZChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkxpc3RHcmlkSSB7XG4gICAgICAgIGNvbnN0IHsgaW1hZ2VuZXMgfSA9IHByb3BzPy5tdWx0aW1lZGlhIHx8IFtdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXRlbXM6IGltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZXM6IFtdLCAvL1RPRE86IHB0ZSBiYWNrLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSXRlbUdyaWRJXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25MaXN0R3JpZEk7XG4gICAgfVxuXG4gICAgbWFwTmV3c2xldHRlck1vZGFsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uTmV3c2xldHRlckkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29uZGl0aW9uczogcHJvcHM/LnRleHRzPy5jb25kaXRpb25zLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ21haWwnLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0SG9sZGVyLFxuICAgICAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5uZXdzRXJyb3JFbWFpbCxcbiAgICAgICAgICAgIH0gYXMgQmFieWxvbklucHV0SSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlYmFja2dyb3VuZD8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25OZXdzbGV0dGVySTtcbiAgICB9XG5cbiAgICBtYXBHbG9iYWxNb2RhbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkdsb2JhbE1vZGFsSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zLmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaWZyYW1lOiBwcm9wcz8udGV4dHM/LmlmcmFtZSxcbiAgICAgICAgICAgIC8vIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICB9IGFzIEJhYnlsb25HbG9iYWxNb2RhbEk7XG4gICAgfVxuXG4gICAgbWFwT2ZmZXJCYW5uZXJWMihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbk9mZmVyUG9wdXBWMkkgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgb2ZmZXJEYXRhO1xuICAgICAgICBpZiAocHJvcHM/Lm9mZmVycz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3Qgb2ZmZXIgPSBwcm9wcz8ub2ZmZXJzPy5bMF07XG4gICAgICAgICAgICBvZmZlckRhdGEgPSB7XG4gICAgICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG9mZmVyPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBvZmZlcj8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogb2ZmZXI/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDE6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMzogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDQ6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMob2ZmZXI/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICBvZmZlcj8ubXVsdGltZWRpYT8ubGVuZ3RoID4gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAob2ZmZXI/Lm11bHRpbWVkaWE/LmZpbmQoKGltZzogYW55KSA9PiBpbWcuY292ZXIpID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZlcj8ubXVsdGltZWRpYT8uWzBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAob2ZmZXI/Lm11bHRpbWVkaWE/LlswXSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmRlZmF1bHRpbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2NvdW50OiBvZmZlcj8uZGlzY291bnQsXG4gICAgICAgICAgICAgICAgcHJpY2U6IG9mZmVyPy5wcmljZSxcbiAgICAgICAgICAgICAgICBjdXJyZW5jeTogb2ZmZXI/LmN1cnJlbmN5LFxuICAgICAgICAgICAgfSBhcyBCYWJ5bG9uT2ZmZXJQb3B1cFYySTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2ZmZXJEYXRhID8/IG9mZmVyRGF0YTtcbiAgICB9XG5cbiAgICBtYXBIZWFkSW50cm8oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIGNvbXBvbmVudDogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkhlYWRJbnRyb0kgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgYWRkaXRpb25hbFRleHRzID0ge1xuICAgICAgICAgICAgYWRkaXRpb25hbDI6ICcnLFxuICAgICAgICAgICAgYWRkaXRpb25hbDM6ICcnLFxuICAgICAgICAgICAgYWRkaXRpb25hbDQ6ICcnLFxuICAgICAgICB9O1xuICAgICAgICBpZiAocHJvcHM/LnJvb20pIHtcbiAgICAgICAgICAgIGFkZGl0aW9uYWxUZXh0cy5hZGRpdGlvbmFsMiA9IHByb3BzLnJvb20udGV4dHM/LmFkZGl0aW9uYWwyID8/ICcnO1xuICAgICAgICAgICAgYWRkaXRpb25hbFRleHRzLmFkZGl0aW9uYWwzID0gcHJvcHMucm9vbS50ZXh0cz8uYWRkaXRpb25hbDMgPz8gJyc7XG4gICAgICAgICAgICBhZGRpdGlvbmFsVGV4dHMuYWRkaXRpb25hbDQgPSBwcm9wcy5yb29tLnRleHRzPy5hZGRpdGlvbmFsNCA/PyAnJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6IGFkZGl0aW9uYWxUZXh0cy5hZGRpdGlvbmFsMi5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IGFkZGl0aW9uYWxUZXh0cy5hZGRpdGlvbmFsMlxuICAgICAgICAgICAgICAgIDogdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOiBhZGRpdGlvbmFsVGV4dHMuYWRkaXRpb25hbDMubGVuZ3RoXG4gICAgICAgICAgICAgICAgPyBhZGRpdGlvbmFsVGV4dHMuYWRkaXRpb25hbDNcbiAgICAgICAgICAgICAgICA6IHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0ZXh0OiBhZGRpdGlvbmFsVGV4dHMuYWRkaXRpb25hbDQubGVuZ3RoXG4gICAgICAgICAgICAgICAgPyBhZGRpdGlvbmFsVGV4dHMuYWRkaXRpb25hbDRcbiAgICAgICAgICAgICAgICA6IHR5cGVvZiBwcm9wcz8udGV4dHM/LnRleHQgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGV4dFxuICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRleHQ/LmNvbnRhaW4sXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiBidG4/LmxpbmtWYWx1ZSAhPT0gbnVsbClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8udGV4dD8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSA/P1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ/LnRleHRjb2xvcixcbiAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSA/PyBjb21wb25lbnQ/LnRleHRjb2xvcixcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8uY29sb3I/LnRyaW0oKSA/P1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ/LnRleHRjb2xvcixcbiAgICAgICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LmNvbG9yPy50cmltKCkgPz9cbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Py50ZXh0Y29sb3IsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25IZWFkSW50cm9JO1xuICAgIH1cblxuICAgIG1hcEV4dGVybmFsU2NyaXB0KFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkV4dGVybmFsU2NyaXB0SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzY3JpcHQ6IHByb3BzPy50ZXh0cz8uQ29udGFpbmVyLFxuICAgICAgICAgICAgbXNnX2xvYWRpbmc6IHByb3BzPy50ZXh0cz8ubG9hZGluZyA/PyAnQ2FyZ2FuZG8uLi4nLFxuICAgICAgICB9IGFzIEJhYnlsb25FeHRlcm5hbFNjcmlwdEk7XG4gICAgfVxuXG4gICAgbWFwQmxvZ0xpc3QocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25CbG9nTGlzdEkgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgcG9zdHMgPSBwcm9wcz8uYmxvZz8ucG9zdHM/Lm1hcCgocG9zdDogYW55KSA9PiAoe1xuICAgICAgICAgICAgaWQ6IHBvc3Q/LmlkLFxuICAgICAgICAgICAgdGl0bGU6IHBvc3Q/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwb3N0Py50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcG9zdD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYWRkaXRpb25hbDE6IHBvc3Q/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocG9zdD8ubXVsdGltZWRpYT8uWzBdLCBmYWxzZSksXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHBvc3Q/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgcG9zdFVybDogVXRpbHMubWFwQnV0dG9ucyhwb3N0Py5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IHBvc3Q/LmNhdGVnb3J5LFxuICAgICAgICAgICAgZGF0ZTogcG9zdD8uZGF0ZSA/IG5ldyBEYXRlKHBvc3QuZGF0ZSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBhY3RpdmU6IHBvc3Q/LmFjdGl2ZSxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHBvc3RzID0gcG9zdHMuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChhLmRhdGUgJiYgYi5kYXRlKSByZXR1cm4gYi5kYXRlIC0gYS5kYXRlOyAvLyBhbWJvcyBjb24gZmVjaGFcbiAgICAgICAgICAgIGlmIChhLmRhdGUgJiYgIWIuZGF0ZSkgcmV0dXJuIC0xOyAvLyBhIHRpZW5lIGZlY2hhLCBiIG5vXG4gICAgICAgICAgICBpZiAoIWEuZGF0ZSAmJiBiLmRhdGUpIHJldHVybiAxOyAvLyBiIHRpZW5lIGZlY2hhLCBhIG5vXG4gICAgICAgICAgICByZXR1cm4gMDsgLy8gbmluZ3VubyB0aWVuZSBmZWNoYVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBPYnRlbmVyIGxvcyA0IHBvc3RzIG3DoXMgcmVjaWVudGVzXG4gICAgICAgIHBvc3RzID1cbiAgICAgICAgICAgIHBvc3RzPy5maWx0ZXIoKHBvc3Q6IHsgYWN0aXZlOiBib29sZWFuIH0pID0+IHBvc3QuYWN0aXZlKSA/P1xuICAgICAgICAgICAgcG9zdHMgPz9cbiAgICAgICAgICAgIFtdO1xuXG4gICAgICAgIGNvbnN0IGxhdGVzdFBvc3RzID0gcG9zdHM/LnNsaWNlKDAsIDQpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8udGFnLFxuICAgICAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VhcmNoUGxhY2VIb2xkZXI6IHByb3BzPy50ZXh0cz8uc2VhcmNoUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICBub3Rmb3VuZFRleHQ6IHByb3BzPy50ZXh0cz8uc2VhcmNoTm90Rm91bmQsXG4gICAgICAgICAgICBwb3N0czogcG9zdHMsXG4gICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXNcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LmNvbnRhaW4sXG4gICAgICAgICAgICBjYXRlZ29yaWVzOiBwcm9wcz8ucG9zdENhdGVnb3JpZXM/Lm1hcCgoY2F0ZWdvcnk6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpZDogY2F0ZWdvcnk/LmlkLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBjYXRlZ29yeT8ubmFtZSxcbiAgICAgICAgICAgICAgICBwb3N0czogY2F0ZWdvcnk/LnRvdGFsUG9zdHMsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb250YWluLFxuICAgICAgICAgICAgbGF0ZXN0UG9zdHM6IGxhdGVzdFBvc3RzLFxuICAgICAgICAgICAgYW50ZXJpb3I6IHByb3BzPy50ZXh0cz8uYW50ZXJpb3IsXG4gICAgICAgICAgICBzaWd1aWVudGU6IHByb3BzPy50ZXh0cz8uc2lndWllbnRlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcEJsb2dEZXRhaWwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25CbG9nRGV0YWlsc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBjdXJyZW50UG9zdElkID0gcHJvcHM/LnBvc3Q/LmlkO1xuICAgICAgICBjb25zdCBwb3N0cyA9IHByb3BzPy5yZWxhdGVkUG9zdHM/Lm1hcCgocG9zdDogYW55KSA9PiAoe1xuICAgICAgICAgICAgaWQ6IHBvc3Q/LmlkLFxuICAgICAgICAgICAgdGl0bGU6IHBvc3Q/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwb3N0Py50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcG9zdD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwb3N0Py5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhwb3N0Py5idXR0b25zKSxcbiAgICAgICAgICAgIHBvc3RVcmw6IFV0aWxzLm1hcEJ1dHRvbnMocG9zdD8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGNhdGVnb3J5OiBwb3N0Py5jYXRlZ29yeSxcbiAgICAgICAgICAgIGRhdGU6IHBvc3Q/LmRhdGUgPyBuZXcgRGF0ZShwb3N0LmRhdGUpIDogdW5kZWZpbmVkLFxuICAgICAgICB9KSk7XG5cbiAgICAgICAgY29uc3QgY2FuZGlkYXRlcyA9IChwb3N0cyB8fCBbXSkuZmlsdGVyKFxuICAgICAgICAgICAgKHA6IGFueSkgPT4gcD8uaWQgIT09IGN1cnJlbnRQb3N0SWRcbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgcmVsYXRlZFBvc3RzQ29uc3QgPVxuICAgICAgICAgICAgY2FuZGlkYXRlc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHA6IGFueSkgPT4gcD8uZGF0ZSlcbiAgICAgICAgICAgICAgICAuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IChiLmRhdGUgYXMgYW55KSAtIChhLmRhdGUgYXMgYW55KSlcbiAgICAgICAgICAgICAgICAuc2xpY2UoMCwgNCkgfHwgW107XG4gICAgICAgIGlmIChyZWxhdGVkUG9zdHNDb25zdC5sZW5ndGggPCA0KSB7XG4gICAgICAgICAgICBjb25zdCB3aXRob3V0RGF0ZSA9IGNhbmRpZGF0ZXMuZmlsdGVyKChwOiBhbnkpID0+ICFwPy5kYXRlKTtcbiAgICAgICAgICAgIHJlbGF0ZWRQb3N0c0NvbnN0ID0gcmVsYXRlZFBvc3RzQ29uc3QuY29uY2F0KFxuICAgICAgICAgICAgICAgIHdpdGhvdXREYXRlLnNsaWNlKDAsIDQgLSByZWxhdGVkUG9zdHNDb25zdC5sZW5ndGgpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8ucG9zdD8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy5wb3N0Py50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnBvc3Q/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBwcm9wcz8ucG9zdD8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgYWRkaXRpb25hbDI6IHByb3BzPy5wb3N0Py50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICBhZGRpdGlvbmFsMzogcHJvcHM/LnBvc3Q/LnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgIGFkZGl0aW9uYWw0OiBwcm9wcz8ucG9zdD8udGV4dHM/LmFkZGl0aW9uYWw0LFxuICAgICAgICAgICAgZGF0ZTogcHJvcHM/LnBvc3Q/LmRhdGUgPyBuZXcgRGF0ZShwcm9wcz8ucG9zdD8uZGF0ZSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBjYXRlZ29yeTogcHJvcHM/LnBvc3Q/LmNhdGVnb3J5LFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8udGFnLFxuICAgICAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VhcmNoUGxhY2VIb2xkZXI6IHByb3BzPy50ZXh0cz8uc2VhcmNoUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXNcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LmNvbnRhaW4sXG4gICAgICAgICAgICBjYXRlZ29yaWVzOiBwcm9wcz8ucG9zdENhdGVnb3JpZXM/Lm1hcCgoY2F0ZWdvcnk6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpZDogY2F0ZWdvcnk/LmlkLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBjYXRlZ29yeT8ubmFtZSxcbiAgICAgICAgICAgICAgICBwb3N0czogY2F0ZWdvcnk/LnRvdGFsUG9zdHMsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICByZWxhdGVkUG9zdHNUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllc1xuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8uY29udGFpbixcbiAgICAgICAgICAgIHJlbGF0ZWRQb3N0czogcmVsYXRlZFBvc3RzQ29uc3QsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBzaGFyZTogcHJvcHM/LnRleHRzPy5zaGFyZSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/LnBvc3Q/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkJsb2dEZXRhaWxzSTtcbiAgICB9XG5cbiAgICBtYXBNb2RhbE11bHRpcGxlTW90b3JzKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbk1vZGFsTXVsdGlwbGVNb3RvcnNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/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/OiBhbnlbXTtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBwcmV0aXRsZT86IHN0cmluZztcbiAgICBzdWJ0aXRsZT86IHN0cmluZztcbiAgICBuZFRpdGxlPzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGxpbmtzPzogYW55W107XG4gICAgYnV0dG9ucz86IGFueVtdO1xuICAgIGFsdD86IHN0cmluZztcbiAgICBhY3RpdmU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlUmVzcG9uc2VQYXRoIHtcbiAgICBvcmlnaW5hbDogc3RyaW5nO1xuICAgIHdlYnA6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRzQWRkb25zIHtcbiAgICBjb250YWN0T2ZmaWNlPzogYW55O1xuICAgIG1lbnVTb2NpYWxNZWRpYT86IHsgW2s6IHN0cmluZ106IHN0cmluZyB9W107XG4gICAgY29uc3VsdFR5cGU/OiBDb25zdWx0VHlwZUk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyT3B0aW9uIHtcbiAgICBpZD86IG51bWJlcjtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIGNoaWxkcmVuPzogRmlsdGVyT3B0aW9uO1xufVxuIl19
3506
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvc2VydmljZXMvbWFwcGVyL21hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDSCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixXQUFXLEVBRVgsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQW1HNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQXlCbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFLbkUsTUFBTSxPQUFPLGFBQWE7SUFIMUI7UUFJcUIsWUFBTyxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQzVDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFNMUQsa0JBQWEsR0FBRyxNQUFNLENBQXFDLFNBQVMsQ0FBQyxDQUFDO1FBRXRFLFdBQU0sR0FBbUIsUUFBUSxDQUM3QixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLE1BQU0sQ0FDOUMsQ0FBQztRQUlNLGVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7S0F1bUo1QztJ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LEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRzthQUNsQztZQUNELFVBQVUsRUFBRTtnQkFDUixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTthQUM1QztZQUVELEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDdEMsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVztnQkFDbEMsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSTtnQkFDeEIsR0FBRyxFQUFFO29CQUNELEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNuRCxHQUFHLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUc7aUJBQ2xDO2dCQUNELElBQUksRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7YUFDdEMsQ0FBQyxDQUFDO1NBQ2EsQ0FBQztJQUN6QixDQUFDO0lBQ0QsY0FBYyxDQUFDLEtBQXNCO1FBQ2pDLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7K0dBdG5KUSxhQUFhO21IQUFiLGFBQWEsY0FGVixNQUFNOzs0RkFFVCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgY29tcHV0ZWQsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdGFibGUsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgU2lnbmFsLFxuICAgIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBCYWJ5bG9uNDA0SSxcbiAgICBCYWJ5bG9uQWN0aW9uQmFubmVySSxcbiAgICBCYWJ5bG9uQWRkcmVzc0l0ZW0sXG4gICAgQmFieWxvbkFkdmFudGFnZXNJLFxuICAgIEJhYnlsb25CYW5uZXJHYWxsZXJ5SSxcbiAgICBCYWJ5bG9uQmFubmVySW5mb0ksXG4gICAgQmFieWxvbkJhbm5lck5ld3NsZXR0ZXJJLFxuICAgIEJhYnlsb25CbG9nRGV0YWlsc0ksXG4gICAgQmFieWxvbkJsb2dMaXN0SSxcbiAgICBCYWJ5bG9uQnJlYWRjcnVtYkksXG4gICAgQmFieWxvbkNvbWluZ1Nvb25JLFxuICAgIEJhYnlsb25Db250YWN0QWRkcmVzc0ksXG4gICAgQmFieWxvbkNvbnRhY3RGb3JtSSxcbiAgICBCYWJ5bG9uQ29udGFjdEhvd0ksXG4gICAgQmFieWxvbkNvbnRhY3RNYXBhSSxcbiAgICBCYWJ5bG9uQ29udGFjdE1hcEl0ZW0sXG4gICAgQmFieWxvbkVuZ2luZUksXG4gICAgQmFieWxvbkVuZ2luZU1vZGFsSSxcbiAgICBCYWJ5bG9uRXF1aXBtZW50SXRlbSxcbiAgICBCYWJ5bG9uRXh0ZXJuYWxTY3JpcHRJLFxuICAgIEJhYnlsb25GYXFJLFxuICAgIEJhYnlsb25GZWF0dXJlc1NsaWRlckksXG4gICAgQmFieWxvbkZlYXR1cmVzU2xpZGVySXRlbSxcbiAgICBCYWJ5bG9uRmxvYXRpbmdCdXR0b25zSSxcbiAgICBCYWJ5bG9uRm9vdGVyQ29udGFjdEksXG4gICAgQmFieWxvbkZvb3RlckxpbmtzSSxcbiAgICBCYWJ5bG9uRm9vdGVyTG9nb3NJLFxuICAgIEJhYnlsb25Gb290ZXJTb2NpYWxJLFxuICAgIEJhYnlsb25HYWxsZXJ5RmlsdGVyLFxuICAgIEJhYnlsb25HYWxsZXJ5SSxcbiAgICBCYWJ5bG9uR2FsbGVyeUl0ZW0sXG4gICAgQmFieWxvbkdyQzJJbWdJLFxuICAgIEJhYnlsb25IZWFkZXJCb29rU2hvd0ksXG4gICAgQmFieWxvbkhlYWRlckNsZWFySSxcbiAgICBCYWJ5bG9uSGVhZGVyTWVudUNlbnRlckksXG4gICAgQmFieWxvbkhlYWRlck1lbnVMb2dvQ2VudGVySSxcbiAgICBCYWJ5bG9uSGVhZGVyTWVudVNob3dJLFxuICAgIEJhYnlsb25IZWFkSW50cm9JLFxuICAgIEJhYnlsb25Ib3RlbHNMaXN0SSxcbiAgICBCYWJ5bG9uSG90ZWxzU2xpZGVySSxcbiAgICBCYWJ5bG9uSW5mbzJDb2xJbWdJLFxuICAgIEJhYnlsb25JbmZvMmltZ0JpZ0ksXG4gICAgQmFieWxvbkluZm8yaW1nSSxcbiAgICBCYWJ5bG9uSW5mbzRpbWdJLFxuICAgIEJhYnlsb25JbmZvQmlnSSxcbiAgICBCYWJ5bG9uSW5mb0dyaWRJLFxuICAgIEJhYnlsb25JbmZvR3JpZEl0ZW1JLFxuICAgIEJhYnlsb25JbmZvSW1nSSxcbiAgICBCYWJ5bG9uSW5mb0ltZ1NsaWRlckksXG4gICAgQmFieWxvbkluZm9JbWdTbGlkZXJJdGVtSSxcbiAgICBCYWJ5bG9uSW5mb0ludHJvSSxcbiAgICBCYWJ5bG9uSW5mb1ppZ1phZ0NvdW50ZXJJLFxuICAgIEJhYnlsb25JbmZvWmlnemFnVjJJLFxuICAgIEJhYnlsb25JbmZvWmlnemFnVjJJdGVtLFxuICAgIEJhYnlsb25JdGVtc0dyaWRJLFxuICAgIEJhYnlsb25MYW5ndWFnZU1vZGFsSSxcbiAgICBCYWJ5bG9uTGVnYWxJLFxuICAgIEJhYnlsb25MaXNDNFR4dEljb0ksXG4gICAgQmFieWxvbk1vZGFsTXVsdGlwbGVNb3RvcnNJLFxuICAgIEJhYnlsb25OZXdzbGV0dGVySSxcbiAgICBCYWJ5bG9uT2ZmZXJEZXRhaWxJLFxuICAgIEJhYnlsb25PZmZlckksXG4gICAgQmFieWxvbk9mZmVyUG9wdXBJLFxuICAgIEJhYnlsb25PZmZlclBvcHVwVjJJLFxuICAgIEJhYnlsb25PZmZlclNsaWRlckksXG4gICAgQmFieWxvbk9mZmVyc0xpc3RJLFxuICAgIEJhYnlsb25PZmZlcnNMaXN0SXRlbSxcbiAgICBCYWJ5bG9uUHJlc3NMaXN0SSxcbiAgICBCYWJ5bG9uUm9vbUluZm9JLFxuICAgIEJhYnlsb25Sb29tc0NvbHNJLFxuICAgIEJhYnlsb25Sb29tc0dyaWRJLFxuICAgIEJhYnlsb25Sb29tc0xpc3RFcXVpcG1lbnQsXG4gICAgQmFieWxvblJvb21zTGlzdEksXG4gICAgQmFieWxvblJvb21zTGlzdEl0ZW0sXG4gICAgQmFieWxvblJvb21zU2xpZGVySSxcbiAgICBCYWJ5bG9uU2VydmljZXNTbGlkZXJJLFxuICAgIEJhYnlsb25TbGlkZXIyQ29sSXRlbUksXG4gICAgQmFieWxvblNsaWRlcjJpdGVtc0ksXG4gICAgQmFieWxvblNsaWRlcjNJdGVtc0ksXG4gICAgQmFieWxvblNsaWRlcjRjb2xMYWJlbHMsXG4gICAgQmFieWxvblNsaWRlckl0ZW0sXG4gICAgQmFieWxvblN0YXRpY0Zvb3RlckksXG4gICAgQmFieWxvblN1Ym1lbnVJLFxuICAgIEJhYnlsb25UaGFua3NJLFxuICAgIEJhYnlsb25Ub3BTbGlkZXJJLFxuICAgIEJhYnlsb25Ub3BTbGlkZXJJdGVtLFxuICAgIEJhYnlsb25Ub3BTbGlkZXJUaHVtYnNJLFxuICAgIEJhYnlsb25Ub3BTbGlkZXJWMkksXG4gICAgQmFieWxvblRvcFNsaWRlclZpZGVvSSxcbiAgICBCYWJ5bG9uV2VibWFwSSxcbiAgICBEcm9wZG93bk9wdGlvbixcbn0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb3JlJztcbmltcG9ydCB7IEJhYnlsb25HbG9iYWxNb2RhbEkgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvcmUvYmFieWxvbi1nbG9iYWwtbW9kYWwnO1xuaW1wb3J0IHsgQmFieWxvbkl0ZW1HcmlkSSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY29yZS9iYWJ5bG9uLWxpc3QtZ3JpZC9iYWJ5bG9uLWxpc3QtZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmFieWxvbkxpc3RHcmlkSSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY29yZS9iYWJ5bG9uLWxpc3QtZ3JpZC9iYWJ5bG9uLWxpc3QtZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFieWxvbk1vZGFsUG9wdXBJIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb3JlL2JhYnlsb24tbW9kYWwtcG9wdXAnO1xuaW1wb3J0IHsgQmFieWxvblN0YXRpY0Zvb3RlclYySSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY29yZS9iYWJ5bG9uLXN0YXRpYy1mb290ZXItdjIvYmFieWxvbi1zdGF0aWMtZm9vdGVyLXYyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSb29tU2VydmljZVR5cGUgfSBmcm9tICcuLi8uLi9FbnVtL3NlcnZpY2VzLmVudW0nO1xuaW1wb3J0IHsgVmlld3NUeXBlIH0gZnJvbSAnLi4vLi4vRW51bS92aWV3cy5lbnVtJztcbmltcG9ydCB7XG4gICAgQmFieWxvbkJ1dHRvbkksXG4gICAgQmFieWxvbkNvbnRhY3RJbmZvSSxcbiAgICBCYWJ5bG9uRHJvcGRvd25JLFxuICAgIEJhYnlsb25HbG9iYWxJY29uSSxcbiAgICBCYWJ5bG9uSW1hZ2VJLFxuICAgIEJhYnlsb25JbnB1dEksXG4gICAgQmFieWxvbk1lbnVCdXR0b25JLFxuICAgIEJhYnlsb25NZW51SW5mb0ksXG4gICAgQmFieWxvbk9mZmVySXRlbUksXG4gICAgQmFieWxvblJvb21EZXRhaWxJLFxuICAgIEJhYnlsb25UZXh0SW5mb0ksXG4gICAgQm9keUNvbXBvbmVudCxcbiAgICBDT01QT05FTlRTX0VYVFJBLFxuICAgIENvbnN1bHRUeXBlSSxcbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBCYWJ5bG9uQWR2YW50YWdlSXRlbUkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24tYWR2YW50YWdlcy1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWJ5bG9uRGVzdGluYXRpb25JIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWRlc3RpbmF0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWJ5bG9uR2xvYmFsRXhwZXJpZW5jZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi1nbG9iYWwtZXhwZXJpZW5jZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFieWxvbkdsb2JhbCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi1nbG9iYWwuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25HbG9iYWxzRmFxR3JvdXAgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24tZ2xvYmFscy1mYXFzLWdyb3VwLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWJ5bG9uR2xvYWJsc0dhbGxlcnlGaWx0ZXIgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24tZ2xvYmFscy1nYWxsZXJ5LWZpbHRlcnMnO1xuaW1wb3J0IHsgQmFieWxvbkhvdGVsR2xvYmFsSXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi1ob3RlbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFieWxvbkl0ZW1JIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IGNsZWFuRGVlcCB9IGZyb20gJy4uLy4uL3V0aWxzL2NsZWFuLXByb3BzJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgU2NyZWVuU2l6ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2NyZWVuLXNpemVyJztcbmltcG9ydCB7IFNJVEVfQ09ORklHX1NFUlZJQ0VfVE9LRU4gfSBmcm9tICcuL21hcHBlci5zZXJ2aWNlLnRva2VuJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTWFwcGVyU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzaXRlU3ZjID0gaW5qZWN0KFNJVEVfQ09ORklHX1NFUlZJQ0VfVE9LRU4pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2NyZWVuU2l6ZXIgPSBpbmplY3QoU2NyZWVuU2l6ZXJTZXJ2aWNlKTtcblxuICAgIGdldCBpc01pbkZ1bGxUYWJsZXRJbnN0YW50KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zY3JlZW5TaXplci5taW5GdWxsVGFibGV0SW5zdGFudCgpO1xuICAgIH1cblxuICAgIGhlYWRlckJ1dHRvbnMgPSBzaWduYWw8UmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAgIHNpdGVJZDogU2lnbmFsPG51bWJlcj4gPSBjb21wdXRlZChcbiAgICAgICAgKCkgPT4gdGhpcy5zaXRlU3ZjLndlYkNvbmZpZ0luc3RhbnQ/LnNpdGVJRFxuICAgICk7XG5cbiAgICBmbG9hdGluZ0J1dHRvbnM/OiBCYWJ5bG9uRmxvYXRpbmdCdXR0b25zSTtcblxuICAgIHByaXZhdGUgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgICBnZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgIGltYWdlOiBJbWFnZVJlc3BvbnNlIHwgdW5kZWZpbmVkLFxuICAgICAgICBpc0ZpZ3VyZSA9IHRydWVcbiAgICApOiBzdHJpbmcgfCBCYWJ5bG9uSW1hZ2VJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkSW1hZ2U7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zY3JlZW5TaXplci5tb2JpbGUoKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzM3NV0/LndlYnA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2NyZWVuU2l6ZXIuaXNTbWFsbFRhYmxldEluc3RhbnQoKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzU0MF0/LndlYnA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2NyZWVuU2l6ZXIuaXNNZWRpdW1UYWJsZXRJbnN0YW50KCkpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/Lls3NjhdPy53ZWJwO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzRnVsbFRhYmxldEluc3RhbnQoKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzEwMjRdPy53ZWJwO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzU21hbGxEZXNrdG9wSW5zdGFudCgpKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bMTI4MF0/LndlYnA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2NyZWVuU2l6ZXIubWluTWVkaXVtRGVza3RvcCgpKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy5wYXRoPy53ZWJwO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/LlsxMzY2XT8ud2VicDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VsZWN0ZWRJbWFnZVxuICAgICAgICAgICAgPyBpc0ZpZ3VyZVxuICAgICAgICAgICAgICAgID8gYCR7dGhpcy5zaXRlU3ZjLmNkbkltYWdlc0luc3RhbnR9JHtzZWxlY3RlZEltYWdlfWBcbiAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICBzcmM6IGAke3RoaXMuc2l0ZVN2Yy5jZG5JbWFnZXNJbnN0YW50fSR7c2VsZWN0ZWRJbWFnZX1gLFxuICAgICAgICAgICAgICAgICAgICAgIGFsdDogaW1hZ2U/LmFsdCxcbiAgICAgICAgICAgICAgICAgICAgICBuZFRpdGxlOiBpbWFnZT8ubmRUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1hZ2U/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgIGltYWdlczogSW1hZ2VSZXNwb25zZVtdIHwgdW5kZWZpbmVkLFxuICAgICAgICBpc0ZpZ3VyZSA9IHRydWVcbiAgICApOiAoc3RyaW5nIHwgQmFieWxvbkltYWdlSSlbXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBpbWFnZXM/Lm1hcCgoaW1nKSA9PiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcsIGlzRmlndXJlKSEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVBZ2VzT3B0aW9ucyhcbiAgICAgICAgbWF4TGVuZ3RoOiBudW1iZXIsXG4gICAgICAgIG1pbkxlbmd0aCA9IDBcbiAgICApOiBEcm9wZG93bk9wdGlvbltdIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uczogRHJvcGRvd25PcHRpb25bXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gbWluTGVuZ3RoOyBpIDw9IG1heExlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBvcHRpb25zLnB1c2goeyBjb2RlOiBpLCBuYW1lOiBpIDwgMTAgPyBgMCR7aX1gIDogYCR7aX1gIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cblxuICAgIG1hcEdsb2JhbHNCb2R5RXh0cmEocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IG5hbWVfSWRlbnRpZmllciA9XG4gICAgICAgICAgICB0eXBlb2YgcHJvcHMgPT0gJ3N0cmluZycgPyBwcm9wcyA6IHByb3BzPy5uYW1lSWRlbnRpZmllcjtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hbWVJZGVudGlmaWVyOiB0aGlzLmdldFRleHRWYWx1ZShuYW1lX0lkZW50aWZpZXIpLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcEJvZHlFeHRyYShcbiAgICAgICAgYm9keTogYW55W10gfCB1bmRlZmluZWRcbiAgICApOiBCb2R5Q29tcG9uZW50PENPTVBPTkVOVFNfRVhUUkE+W10gfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBib2R5TWFwcGVkOiBCb2R5Q29tcG9uZW50PENPTVBPTkVOVFNfRVhUUkE+W10gfCB1bmRlZmluZWQgPVxuICAgICAgICAgICAgYm9keT8ubWFwKChjb21wb25lbnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRNYXBwZWQ6IEJvZHlDb21wb25lbnQ8Q09NUE9ORU5UU19FWFRSQT4gPSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogY29tcG9uZW50Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczoge30sXG4gICAgICAgICAgICAgICAgfSBhcyBCb2R5Q29tcG9uZW50PENPTVBPTkVOVFNfRVhUUkE+O1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWVudSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFN1Ym1lbnUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIEJhYnlsb25TdWJtZW51STtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID0gJ21lbnUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hvdGVsdHlwZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdsb2JhbHNCb2R5RXh0cmEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIEJhYnlsb25HbG9iYWw7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9ICdob3RlbHR5cGUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hvdGVsY2F0ZWdvcnknOlxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHbG9iYWxzQm9keUV4dHJhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBCYWJ5bG9uR2xvYmFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPSAnaG90ZWxjYXRlZ29yeSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAndGlja2VyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR2xvYmFsc0JvZHlFeHRyYShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgQmFieWxvbkdsb2JhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID0gJ3RpY2tlcic7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcG9uZW50TWFwcGVkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBib2R5TWFwcGVkO1xuICAgIH1cblxuICAgIG1hcFN1Ym1lbnUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25TdWJtZW51SSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gcHJvcHM/Lml0ZW1zPy5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0uc2VsZWN0ZWQpO1xuICAgICAgICBjb25zdCBzdWJtZW51ID0ge1xuICAgICAgICAgICAgaG90ZWw6IHByb3BzPy5ob3RlbCxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaXRlbXNcbiAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLmFjdGl2ZSlcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxpbms/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBsaW5rPy5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdHlsZXM6IHByb3BzPy5zdHlsZXMsXG4gICAgICAgICAgICBzZWxlY3RlZDoge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBzZWxlY3RlZD8ubmFtZSxcbiAgICAgICAgICAgICAgICB1cmw6IHNlbGVjdGVkPy5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgc3R5bGVzOiBwcm9wcz8uc3R5bGVzLFxuICAgICAgICAgICAgfSBhcyBCYWJ5bG9uQnV0dG9uSSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uU3VibWVudUk7XG5cbiAgICAgICAgcmV0dXJuIHN1Ym1lbnU7XG4gICAgfVxuXG4gICAgbWFwQ29tcG9uZW50czxUPihcbiAgICAgICAgYm9keTogYW55W10sXG4gICAgICAgIGFkZG9ucz86IENvbXBvbmVudHNBZGRvbnNcbiAgICApOiBCb2R5Q29tcG9uZW50PFQ+W10ge1xuICAgICAgICBpZiAoIWJvZHkgfHwgIWJvZHkubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gW10gYXMgQm9keUNvbXBvbmVudDxUPltdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlYXJjaEhvdGVsU3R5bGVzID0gKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGJvZHk/LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLm5hbWUgPT09ICdzdHlsZXMnKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgYm9keU1hcHBlZDogQm9keUNvbXBvbmVudDxUPltdID0gYm9keVxuICAgICAgICAgICAgPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGNvbXBvbmVudCkgPT4gY29tcG9uZW50ICE9PSBudWxsICYmIGNvbXBvbmVudCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICApXG4gICAgICAgICAgICA/Lm1hcCgoY29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50TWFwcGVkOiBCb2R5Q29tcG9uZW50PFQ+ID0ge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGNvbXBvbmVudC5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHt9LFxuICAgICAgICAgICAgICAgICAgICBhbGlhczogY29tcG9uZW50LmFsaWFzLFxuICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyOiBjb21wb25lbnQuaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yOiBjb21wb25lbnQudGV4dGNvbG9yLFxuICAgICAgICAgICAgICAgIH0gYXMgQm9keUNvbXBvbmVudDxUPjtcblxuICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnQucHJvcHMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy9JdCBpcyBuZWNlc3NhcnksIG90aGVyd2lzZSBpdCBnaXZlcyBhbiBlcnJvciBhbmQgZG9lcyBub3Qgc2hvdyBjb21wb25lbnRzXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbW9kdWxlNDA0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXA0MDQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLS0tLSBMQVlPVVQgQ09NUE9ORU5UUyAtLS0tLy9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0b3BzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRvcFNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RvcHNsaWRlcnZpZGVvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUb3BTbGlkZXJWaWRlbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndG9wc2xpZGVydjJsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0b3BzbGlkZXJ2MnJpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUb3BTbGlkZXJWMihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PSAndG9wc2xpZGVydjJyaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW1nJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW1ncmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbWdsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvSW1nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPT09ICdpbmZvaW1ncmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnRleHRjb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbWdzbGlkZXJyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2ltZ3NsaWRlcmxlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9JbWdTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5mb2ltZ3NsaWRlcnJpZ2h0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbnRybyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0ludHJvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbzJpbWdsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvMmltZ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvMmltZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PSAnaW5mbzJpbWdyaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvMmNvbGltZ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvMmNvbGltZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PSAnaW5mbzJjb2xpbWdyaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvMmNvbGltZ2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm8yY29saW1nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPT09ICdpbmZvMmNvbGltZ2xlZnQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbzNpbWcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9JbWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC50ZXh0Y29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvemlnemFnbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ppZ3phZ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBaaWd6YWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9PT0gJ2luZm96aWd6YWdyaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvZ3JpZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0dyaWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIyY29sbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyMmNvbHJpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXJDb2xsMihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PSAnc2xpZGVyMmNvbHJpZ2h0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjNjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNsaWRlckNvbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjRjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNsaWRlckNvbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2l0ZW1zZ3JpZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSXRlbXNHcmlkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncm9vbXNzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFJvb21zU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncm9vbXNncmlkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBSb29tc0dyaWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiYW5uZXJnYWxsZXJ5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCYW5uZXJHYWxsZXJ5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ3JpZGdhbGxlcnknOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyaWRHYWxsZXJ5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmFubmVybmV3c2xldHRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcEJhbm5lck5ld3NsZXR0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5pZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyc3NsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy0tLS0gTEFZT1VUIENPTVBPTkVOVFMgRU5ELS0tLS8vXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0aGFua3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRoYW5rcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29udGFjdGZvcm0nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhY3Rmb3JtdjInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENvbnRhY3RGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkb25zPy5jb250YWN0T2ZmaWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkb25zPy5jb25zdWx0VHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29udGFjdGhvdyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQ29udGFjdEhvdyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnd2VibWFwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBXZWJtYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhY3RtYXAnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENvbnRhY3RNYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xlZ2FsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMZWdhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncm9vbXNjb2xzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBSb29tc0NvbHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Jvb21kZXRhaWxzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBSb29tRGV0YWlsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0b3BzbGlkZXJ0aHVtYnMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRvcFNsaWRlclRodW1icyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZmVhdHVyZXNzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZlYXR1cmVzU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiYW5uZXJpbmZvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCYW5uZXJJbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyb29tc2xpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFJvb21zTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29taW5nc29vbic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQ29taW5nU29vbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb2ZmZXJkZXRhaWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE9mZmVyRGV0YWlsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcnNsaXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlcnNMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmYXEnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZhcShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3RhdGljZm9vdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTdGF0aWNGb290ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dhbGxlcnknOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc2MyaW1ndmlkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHYWxsZXJ5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICduYXYnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE1lbnUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRvbnM/Lm1lbnVTb2NpYWxNZWRpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGFuZ3VhZ2VzbW9kYWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xhbmd1YWdlc21vZGF2Mic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTGFuZ3VhZ2VNb2RhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyM2l0ZW1zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXIzSXRlbXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hvdGVsc3NsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSG90ZWxzU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdob3RlbHNsaXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBIb3RlbHNMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvNGltZyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mbzRJbWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NlcnZpY2Vzc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTZXJ2aWNlc1NsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xvY2F0aW9uYWRkcmVzcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29udGFjdGFkZHJlc3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENvbnRhY3RBZGRyZXNzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhZHZhbnRhZ2VzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBBZHZhbnRhZ2VzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvYmlnJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvQmlnKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvemlnemFndjJsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvWmlnWmFnVjIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm96aWd6YWd2MnJpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvWmlnWmFnVjIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3RlcmNvbnRhY3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckNvbnRhY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm8yaW1nYmlnJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvMkltZ0JpZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVybGlua3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckxpbmtzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJsb2dvcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRm9vdGVyTG9nb3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlclNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyc29jaWFscyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRm9vdGVyU29jaWFscyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyMml0ZW1zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXIyaXRlbXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXRpY2Zvb3RlcnYyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTdGF0aWNGb290ZXJ2MihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdGdyaWQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcExpc3RHcmlkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICduZXdzbGV0dGVybW9kYWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE5ld3NsZXR0ZXJNb2RhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaGVhZGludHJvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBIZWFkSW50cm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JyZWFkY3J1bWJzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCcmVhZGNydW1icyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyYmFubmVydjInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE9mZmVyQmFubmVyVjIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdnbG9iYWxtb2RhbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ2xvYmFsbW9kYWwyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHbG9iYWxNb2RhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21lbnUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VhcmNoSG90ZWxTdHlsZXMoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzWydzdHlsZXMnXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSG90ZWxTdHlsZXMoKVswXT8ucHJvcHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTdWJtZW51KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3BhbG9waWEnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEV4dGVybmFsU2NyaXB0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmxvZ2xpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJsb2dMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmxvZ2RldGFpbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQmxvZ0RldGFpbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyYmFubmVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlckJhbm5lcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21vZGFsbXVsdGlwbGVtb3RvcnMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBNb2RhbE11bHRpcGxlTW90b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtb2RhbHBvcHVwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBNb2RhbFBvcHVwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdwcmVzc2xpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFByZXNzTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYWN0aW9uYmFubmVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBBY3Rpb25CYW5uZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm96aWd6YWdjb3VudGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwSW5mb1ppZ1phZ0NvdW50ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyYzJpbWcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyQzJJbWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaXNjNHR4dGljbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTGlzQzRUeHRJY28oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR2xvYmFscyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG9ucz8uY29udGFjdE9mZmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG9ucz8uY29uc3VsdFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudE1hcHBlZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYm9keU1hcHBlZDtcbiAgICB9XG5cbiAgICBtYXBHbG9iYWxzKFxuICAgICAgICBjb21wb25lbnQ6IGFueSxcbiAgICAgICAgbmRQcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBuZFByb3BzQ29uc3VsdDogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogYW55IHtcbiAgICAgICAgaWYgKCFjb21wb25lbnQpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgICAgbGV0IHsgcHJvcHMgfSA9IGNvbXBvbmVudDtcbiAgICAgICAgcHJvcHMgPSBwcm9wcyA/PyBjb21wb25lbnQ7XG4gICAgICAgIGxldCByZXN1bHQgPSB7XG4gICAgICAgICAgICBpZGVudGlmaWVyOiBjb21wb25lbnQ/LmlkZW50aWZpZXIsXG4gICAgICAgICAgICBib2R5ZXh0cmE6IHRoaXMubWFwR2xvYmFsc0JvZHlFeHRyYShwcm9wcyksXG4gICAgICAgICAgICB0ZXh0czogdGhpcy5tYXBHbG9iYWxUZXh0cyhwcm9wcz8udGV4dHMpIGFzIEJhYnlsb25UZXh0SW5mb0ksXG4gICAgICAgICAgICByaWdodFNpZGU6IGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdyaWdodCcpLCAvL1RPRE8gY2hhbmdlXG4gICAgICAgICAgICBsZWZ0U2lkZTogY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2xlZnQnKSwgLy9UT0RPIGNoYW5nZVxuICAgICAgICAgICAgaXRlbXM6IHRoaXMubWFwR2xvYmFsSXRlbXMocHJvcHMpLFxuICAgICAgICAgICAgbGlzdHM6IHRoaXMubWFwR2xvYmFsc0ZhcXMocHJvcHM/LkZhcXMpLFxuICAgICAgICAgICAgc2VydmljZXM6IHRoaXMubWFwR2xvYmFsU2VydmljZXMoXG4gICAgICAgICAgICAgICAgcHJvcHM/LnNlcnZpY2VzU2VydmljZSA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8uZXF1aXBtZW50ID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5zZXJ2aWNlc1NlcnZpY2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBldmVudHM6IHRoaXMubWFwRXZlbnRzR2xvYmFsKHByb3BzPy5ldmVudHMgPz8gcHJvcHM/LmV2ZW50KSxcbiAgICAgICAgICAgIG9mZmVyczogdGhpcy5tYXBPZmZlcnNHbG9iYWwocHJvcHM/Lm9mZmVycyksXG4gICAgICAgICAgICBvZmZlcjogdGhpcy5tYXBPZmZlckRldGFpbChwcm9wcyksXG4gICAgICAgICAgICBtdWx0aW1lZGlhOiB0aGlzLm1hcEltYWdlcyhwcm9wcz8ubXVsdGltZWRpYSksXG4gICAgICAgICAgICBhZGRyZXNzOiB0aGlzLm1hcEFkZHJlc3MocHJvcHM/LmFkZHJlc3MpLFxuICAgICAgICAgICAgYWRkcmVzc0hvdGVsczogdGhpcy5tYXBHbG9iYWxBZGRyZXNzSG90ZWxzKHByb3BzKSxcbiAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5saW5rcz8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LmxpbmtzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LmxpbmtzPy5MaW5rcz8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8ubGlua3M/LkxpbmtzPy5bMF1cbiAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy5saW5rcz8uY29udGFjdD8uWzBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZm9vdGVyTGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5mb290ZXJMaW5rcz8uWzBdKSxcbiAgICAgICAgICAgIHBhZ2VzOiAoXG4gICAgICAgICAgICAgICAgcHJvcHM/LnBhZ2VzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBsaW5rLnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2ludGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICAgICAgKSBhcyBCYWJ5bG9uQnV0dG9uSVtdXG4gICAgICAgICAgICApPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGxpbmspID0+XG4gICAgICAgICAgICAgICAgICAgIGxpbmsudXJsPy5zcGxpdCgnLycpWzFdID09PVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmxvY2F0ZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgYWR2YW50YWdlczogdGhpcy5tYXBBZHZhbnRhZ2VzR2xvYmFsKFxuICAgICAgICAgICAgICAgIHByb3BzPy5WZW50YWphcyA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8uQWR2YW50YWdlcyA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubGlzdCA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubGlzdHMgPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lkxpc3RzXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlZU1vcmU6IHByb3BzPy50ZXh0cz8uYWR2YW50YWdlc3NlZW1vcmUsXG4gICAgICAgICAgICBzZWVMZXNzOiBwcm9wcz8udGV4dHM/LmFkdmFudGFnZXNzZWVsZXNzLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5hZHZhbnRhZ2VzaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHJvb21zOiB0aGlzLm1hcFJvb21EZXRhaWxzKHByb3BzPy5yb29tcyA/PyBwcm9wcz8ucm9vbSksXG4gICAgICAgICAgICBjb250YWN0SW5mbzogdGhpcy5tYXBDb250YWN0SW5mbyhwcm9wcz8udGV4dHMpLFxuICAgICAgICAgICAgc29jaWFsTWVkaWE6IHByb3BzPy5zb2NpYWxNZWRpYT8ubWFwKChzbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogc20uaWNvbixcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogc20ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBzbS51cmwsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaG90ZWxzOiB0aGlzLm1hcEhvdGVsc0dsb2JhbChwcm9wcz8uaG90ZWxzKSxcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uczogdGhpcy5tYXBHbG9iYWxEZXN0aW5hdGlvbnMocHJvcHM/LmRlc3RpbmF0aW9ucyksXG4gICAgICAgICAgICBleHBlcmllbmNlczogdGhpcy5tYXBHbG9iYWxFeHBlcmllbmNlcyhwcm9wcz8uZXhwZXJpZW5jZSksXG4gICAgICAgICAgICBjb25zdWx0VHlwZXM6IHRoaXMubWFwR2xvYmFsQ29uc3VsdFR5cGVzKHByb3BzLCBuZFByb3BzQ29uc3VsdCksXG4gICAgICAgICAgICBmaWx0ZXJzOiB0aGlzLm1hcEdsb2JhbHNGaWx0ZXJzKHByb3BzPy5maWx0ZXJzKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uR2xvYmFsO1xuICAgICAgICByZXR1cm4gY2xlYW5EZWVwKHJlc3VsdCwge1xuICAgICAgICAgICAgcmVtb3ZlTnVsbDogdHJ1ZSxcbiAgICAgICAgICAgIHJlbW92ZUVtcHR5U3RyaW5nOiB0cnVlLFxuICAgICAgICAgICAgcHJ1bmVFbXB0eTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbWFwR2xvYmFsQWRkcmVzc0hvdGVscyhwcm9wczogYW55KTogQmFieWxvbkFkZHJlc3NJdGVtW10gfCB1bmRlZmluZWQge1xuICAgICAgICAvLyAxLiBJbnRlbnRhbW9zIG9idGVuZXIgbGEgZnVlbnRlIGRlIGRhdG9zIChjb250ZW1wbGFtb3MgYW1ib3Mgbm9tYnJlcyBkZSBwcm9waWVkYWQpXG4gICAgICAgIGNvbnN0IHJhd1NvdXJjZSA9IHByb3BzPy5ob3RlbEFkZHJlc3NlcyA/PyBwcm9wcz8uYWRkcmVzc0hvdGVscztcblxuICAgICAgICBpZiAocmF3U291cmNlKSB7XG4gICAgICAgICAgICAvLyBBcGxhbmFtb3MgZWwgYXJyYXkgc2luIGltcG9ydGFyIGxhIHByb2Z1bmRpZGFkIFtbey4uLn1dXSAtPiBbey4uLn1dXG4gICAgICAgICAgICBjb25zdCBmbGF0QWRkcmVzc2VzID0gQXJyYXkuaXNBcnJheShyYXdTb3VyY2UpXG4gICAgICAgICAgICAgICAgPyByYXdTb3VyY2UuZmxhdChJbmZpbml0eSlcbiAgICAgICAgICAgICAgICA6IFtyYXdTb3VyY2VdO1xuXG4gICAgICAgICAgICAvLyBGaWx0cmFtb3MgcGFyYSBhc2VndXJhciBxdWUgc29sbyBwcm9jZXNhbW9zIG9iamV0b3MgdsOhbGlkb3NcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkQWRkcmVzc2VzID0gZmxhdEFkZHJlc3Nlcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGFkZHJlc3M6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgYWRkcmVzcyAmJlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgYWRkcmVzcyA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgICAgICAgICAgIUFycmF5LmlzQXJyYXkoYWRkcmVzcylcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmICh2YWxpZEFkZHJlc3Nlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkQWRkcmVzc2VzLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGFkZHJlc3M6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGFkZHJlc3MuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYWRkcmVzcy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6IGFkZHJlc3MuYWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaXR5OiBhZGRyZXNzLmNpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmluY2U6IGFkZHJlc3MucHJvdmluY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeTogYWRkcmVzcy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwOiBhZGRyZXNzLmNwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYWRkcmVzcy5saW5rID8/IGFkZHJlc3MudXJsLCAvLyBTb3BvcnRlIHBhcmEgYW1ib3Mgbm9tYnJlcyBkZSBsaW5rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmU6IGFkZHJlc3MucGhvbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw6IGFkZHJlc3MuZW1haWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbF9hZGRyZXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzLmZ1bGxBZGRyZXNzID8/IGFkZHJlc3MuZnVsbF9hZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkFkZHJlc3NJdGVtXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDIuIENhc28gRmFsbGJhY2s6IE1hcGVvIGRpbsOhbWljbyBkZXNkZSBsb3MgdGV4dG9zIChhZGRyZXNzbGlzdFhYKVxuICAgICAgICByZXR1cm4gdGhpcy5tYXBEeW5hbWljQWRkcmVzc2VzRnJvbVRleHRzKHByb3BzPy50ZXh0cyk7XG4gICAgfVxuXG4gICAgLyoqIEhlbHBlciBwYXJhIGxpbXBpYXIgZWwgY8OzZGlnbyBwcmluY2lwYWwgKi9cbiAgICBwcml2YXRlIG1hcER5bmFtaWNBZGRyZXNzZXNGcm9tVGV4dHMoXG4gICAgICAgIHRleHRzOiBhbnlcbiAgICApOiBCYWJ5bG9uQWRkcmVzc0l0ZW1bXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghdGV4dHMpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgICAgY29uc3QgYWRkcmVzc2VzTWFwOiB7IFtrZXk6IHN0cmluZ106IFBhcnRpYWw8QmFieWxvbkFkZHJlc3NJdGVtPiB9ID0ge307XG5cbiAgICAgICAgT2JqZWN0LmtleXModGV4dHMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKGtleS5zdGFydHNXaXRoKCdhZGRyZXNzbGlzdCcpICYmIHRleHRzW2tleV0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IGtleS5tYXRjaCgvYWRkcmVzc2xpc3QoXFxkKykoLiopLyk7XG4gICAgICAgICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gbWF0Y2hbMV07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gbWF0Y2hbMl07XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhZGRyZXNzZXNNYXBbaW5kZXhdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzZXNNYXBbaW5kZXhdID0geyBpZDogaW5kZXggfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGV4dHNba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChmaWVsZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnVGl0bGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3Nlc01hcFtpbmRleF0ubmFtZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnQWRkcmVzcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzTWFwW2luZGV4XS5hZGRyZXNzID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzTWFwW2luZGV4XS5mdWxsX2FkZHJlc3MgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1RlbGYnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3Nlc01hcFtpbmRleF0ucGhvbmUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LnZhbHVlcyhhZGRyZXNzZXNNYXApIGFzIEJhYnlsb25BZGRyZXNzSXRlbVtdO1xuICAgICAgICByZXR1cm4gcmVzdWx0Lmxlbmd0aCA+IDAgPyByZXN1bHQgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwR2xvYmFsRXhwZXJpZW5jZXMoXG4gICAgICAgIGV4cGVyaWVuY2VzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uR2xvYmFsRXhwZXJpZW5jZVtdIHtcbiAgICAgICAgcmV0dXJuIGV4cGVyaWVuY2VzXG4gICAgICAgICAgICA/LmZpbHRlcigoZXhwZXJpZW5jZTogYW55KSA9PiBleHBlcmllbmNlLmFjdGl2ZSlcbiAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgIChleHBlcmllbmNlOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGV4cGVyaWVuY2UuYWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYTogdGhpcy5tYXBNdWx0aW1lZGlhKGV4cGVyaWVuY2U/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZXJpZW5jZT8ubGluayA/PyBleHBlcmllbmNlPy5saW5rc1xuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoZXhwZXJpZW5jZT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogZXhwZXJpZW5jZT8ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0czogdGhpcy5tYXBHbG9iYWxUZXh0cyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlcmllbmNlPy50ZXh0c1xuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBCYWJ5bG9uVGV4dEluZm9JLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGV4cGVyaWVuY2U/LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZUlkZW50aWZpZXI6IGV4cGVyaWVuY2U/Lm5hbWVJZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBleHBlcmllbmNlPy51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBleHBlcmllbmNlPy50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG90ZWxzOiBleHBlcmllbmNlPy5ob3RlbHM/Lm1hcCgoaG90ZWw6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogaG90ZWw/LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVJZGVudGlmaWVyOiBob3RlbD8ubmFtZUlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Ib3RlbEdsb2JhbEl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgbWFwR2xvYmFsc0ZpbHRlcnMoXG4gICAgICAgIGZpbHRlcnM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25HbG9hYmxzR2FsbGVyeUZpbHRlciB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmaWx0ZXJzOiBmaWx0ZXJzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbDogaXRlbS5hbGwsXG4gICAgICAgICAgICAgICAgICAgICAgICByb29tOiBpdGVtLnJvb20sXG4gICAgICAgICAgICAgICAgICAgICAgICByb29tczogaXRlbS5yb29tcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkdhbGxlcnlGaWx0ZXJcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZXM6IGZpbHRlcnNcbiAgICAgICAgICAgICAgICA/LnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgYWNjOiB7IG11bHRpbWVkaWE6IGFueVtdOyBmaWx0ZXJJbmRleDogbnVtYmVyIH1bXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVySW5kZXg6IG51bWJlclxuICAgICAgICAgICAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIubXVsdGltZWRpYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG11bHRpbWVkaWFXaXRoRmlsdGVyID0gZmlsdGVyLm11bHRpbWVkaWEubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZmlsdGVySW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE6IG11bHRpbWVkaWFXaXRoRmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVySW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5mbGF0TWFwKCh7IG11bHRpbWVkaWEgfTogYW55KSA9PiBtdWx0aW1lZGlhKVxuICAgICAgICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZywgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogaW1nPy5maWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uR2FsbGVyeUl0ZW1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25HbG9hYmxzR2FsbGVyeUZpbHRlcjtcbiAgICB9XG5cbiAgICBtYXBHbG9iYWxDb25zdWx0VHlwZXMoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5kUHJvcHNDb25zdWx0OiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBhbnkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBjb25zdWx0VHlwZXMgPSBwcm9wcz8uY29uc3VsdFR5cGVzPy5bMF0/LmNvbnN1bHRUeXBlSWRcbiAgICAgICAgICAgID8gcHJvcHM/LmNvbnN1bHRUeXBlc1xuICAgICAgICAgICAgOiBwcm9wcz8ubGVuZ3RoICYmIHByb3BzPy5bMF0/LmNvbnN1bHRUeXBlc1xuICAgICAgICAgICAgICA/IHByb3BzXG4gICAgICAgICAgICAgIDogbmRQcm9wc0NvbnN1bHQ7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvcHRpb25zOiBjb25zdWx0VHlwZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VsdFR5cGVJZDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wLmNvbnN1bHRfdHlwZV9pZCA/PyBwcm9wLmNvbnN1bHRUeXBlSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBwcm9wLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcHJvcC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmRyb3Bkb3duUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclJlcXVpcmVkLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcEdsb2JhbERlc3RpbmF0aW9ucyhcbiAgICAgICAgZGVzdGluYXRpb25zOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uRGVzdGluYXRpb25JW10gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIWRlc3RpbmF0aW9ucykgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCBub3JtYWxpemVEZXN0aW5hdGlvbiA9IChcbiAgICAgICAgICAgIGQ6IGFueSxcbiAgICAgICAgICAgIGluZGV4OiBudW1iZXJcbiAgICAgICAgKTogQmFieWxvbkRlc3RpbmF0aW9uSSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBkLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogW10sXG4gICAgICAgICAgICAgICAgICAgIGhvdGVsczogW10sXG4gICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uRGVzdGluYXRpb25JO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGlkOiBkPy5pZCA/PyBpbmRleCxcbiAgICAgICAgICAgICAgICBuYW1lOiBkPy5uYW1lID8/IGQ/LnRpdGxlID8/ICcnLFxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoZD8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoZD8ubGlua3MpLFxuICAgICAgICAgICAgICAgIG11bHRpbWVkaWE6IHRoaXMubWFwTXVsdGltZWRpYShkPy5tdWx0aW1lZGlhKSxcbiAgICAgICAgICAgICAgICBob3RlbHM6IHRoaXMubWFwSG90ZWxzR2xvYmFsKGQ/LmhvdGVscyksXG4gICAgICAgICAgICAgICAgdGV4dHM6IHRoaXMubWFwR2xvYmFsVGV4dHMoZD8udGV4dHMpLFxuICAgICAgICAgICAgfSBhcyBCYWJ5bG9uRGVzdGluYXRpb25JO1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRlc3RpbmF0aW9ucykpIHtcbiAgICAgICAgICAgIGNvbnN0IGxvb2tzTGlrZUZsYXRMaXN0ID0gZGVzdGluYXRpb25zLmV2ZXJ5KFxuICAgICAgICAgICAgICAgICh4KSA9PlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgeCA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgICAgICAgICAgICAgKHggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICh4LmlkICE9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4Lm5hbWUgIT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgudGl0bGUgIT09IHVuZGVmaW5lZCkpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAobG9va3NMaWtlRmxhdExpc3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVzdGluYXRpb25zLm1hcChub3JtYWxpemVEZXN0aW5hdGlvbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHRvTGlzdCA9IChncm91cDogYW55KTogYW55W10gPT4ge1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGdyb3VwKSkgcmV0dXJuIGdyb3VwO1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGdyb3VwPy5pdGVtcykpIHJldHVybiBncm91cC5pdGVtcztcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShncm91cD8uZGVzdGluYXRpb25zKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdyb3VwLmRlc3RpbmF0aW9ucztcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gZGVzdGluYXRpb25zLmZsYXRNYXAoKGdyb3VwOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgdG9MaXN0KGdyb3VwKS5tYXAobm9ybWFsaXplRGVzdGluYXRpb24pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGVzdGluYXRpb25zPy5pdGVtcykpXG4gICAgICAgICAgICByZXR1cm4gZGVzdGluYXRpb25zLml0ZW1zLm1hcChub3JtYWxpemVEZXN0aW5hdGlvbik7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRlc3RpbmF0aW9ucz8uZGVzdGluYXRpb25zKSlcbiAgICAgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbnMuZGVzdGluYXRpb25zLm1hcChub3JtYWxpemVEZXN0aW5hdGlvbik7XG5cbiAgICAgICAgcmV0dXJuIFtub3JtYWxpemVEZXN0aW5hdGlvbihkZXN0aW5hdGlvbnMsIDApXTtcbiAgICB9XG5cbiAgICBtYXBHbG9iYWxUZXh0cyh0ZXh0czogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblRleHRJbmZvSSB7XG4gICAgICAgIGlmICghdGV4dHMpIHJldHVybiB7fSBhcyBCYWJ5bG9uVGV4dEluZm9JO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnByZXRpdGxlKSxcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8udGl0bGUpLFxuICAgICAgICAgICAgdGl0bGUyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8udGl0bGUyKSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc3VidGl0bGUpLFxuICAgICAgICAgICAgbmFtZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm5hbWUpLFxuXG4gICAgICAgICAgICB0ZXh0OiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8udGV4dCksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmRlc2NyaXB0aW9uKSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uMjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmRlc2NyaXB0aW9uMiksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbnRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uZGVzY3JpcHRpb250aXRsZSksXG5cbiAgICAgICAgICAgIGl0ZW0xOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uaXRlbTEpLFxuICAgICAgICAgICAgaXRlbTFUZXh0OiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uaXRlbTFUZXh0KSxcblxuICAgICAgICAgICAgYWRkaXRpb25hbDogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmFkZGl0aW9uYWwgPz8gdGV4dHM/LkFkZGl0aW9uYWxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBhZGRpdGlvbmFsMTogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmFkZGl0aW9uYWwxID8/IHRleHRzPy5BZGRpdGlvbmFsMVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWwyOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uYWRkaXRpb25hbDIgPz8gdGV4dHM/LkFkZGl0aW9uYWwyXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYWRkaXRpb25hbDM6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5hZGRpdGlvbmFsMyA/PyB0ZXh0cz8uQWRkaXRpb25hbDNcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGNvbmRpdGlvbnM6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5jb25kaXRpb25zKSxcbiAgICAgICAgICAgIHVybDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LnVybCksXG5cbiAgICAgICAgICAgIGFkdmFudGFnZXN0aXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmFkdmFudGFnZXN0aXRsZSksXG4gICAgICAgICAgICBhZHZhbnRhZ2Vzc3VidGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5hZHZhbnRhZ2Vzc3VidGl0bGUpLFxuXG4gICAgICAgICAgICBsZXZlMTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmxldmUxKSxcbiAgICAgICAgICAgIGxldmUyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubGV2ZTIpLFxuICAgICAgICAgICAgbGV2ZTM6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5sZXZlMyksXG5cbiAgICAgICAgICAgIHdoYXRzYXBwOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ud2hhdHNhcHApLFxuICAgICAgICAgICAgc2Nyb2xsdGV4dDogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LnNjcm9sbHRleHQgPz8gdGV4dHM/LnNjcm9sbERvd25cbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGFkZHJlc3M6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5hZGRyZXNzKSxcbiAgICAgICAgICAgIGFkZHJlc3N0aXRsZTogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmFkZHJlc3N0aXRsZSA/PyB0ZXh0cz8uYWRkcmVzc1RpdGxlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYmFubmVydGV4dDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmJhbm5lcnRleHQpLFxuICAgICAgICAgICAgY29udGFjdHRpdGxlOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uY29udGFjdHRpdGxlID8/IHRleHRzPy5jb250YWN0VGl0bGVcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb3B5cmlnaHR0ZXh0OiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uY29weXJpZ2h0dGV4dCA/PyB0ZXh0cz8uY29weXJpZ2h0XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdG9wQnV0dG9uOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8udG9wQnV0dG9uKSxcbiAgICAgICAgICAgIGFib3V0VGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5hYm91dFRpdGxlKSxcbiAgICAgICAgICAgIGdydXBvVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ncnVwb1RpdGxlKSxcbiAgICAgICAgICAgIGhlbHBUaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmhlbHBUaXRsZSksXG4gICAgICAgICAgICBjb250YWN0T2ZmaWNlVGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5jb250YWN0T2ZmaWNlVGl0bGUpLFxuXG4gICAgICAgICAgICB0ZXh0QWRqQ3Y6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy50ZXh0QWRqQ3YpLFxuICAgICAgICAgICAgdGV4dEFkakN2RXJyb3I6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy50ZXh0QWRqQ3ZFcnJvciksXG4gICAgICAgICAgICBTZWxlY3RJdGVtVGV4dDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LlNlbGVjdEl0ZW1UZXh0KSxcblxuICAgICAgICAgICAgLy8gU1ZHIC8gZXNwZWNpYWxlc1xuICAgICAgICAgICAgc3ZnOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uc3ZnKSxcbiAgICAgICAgICAgIHNlbGVjdG9yVGV4dHM6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5zZWxlY3RvclRleHRzKSxcblxuICAgICAgICAgICAgZmVhdHVyZXBpbGxzbnVtYmVyU3ZnaWNvbjE6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5mZWF0dXJlcGlsbHNudW1iZXJTdmdpY29uMVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZlYXR1cmVwaWxsc251bWJlclN2Z2ljb24yOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZmVhdHVyZXBpbGxzbnVtYmVyU3ZnaWNvbjJcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBmZWF0dXJlcGlsbHNudW1iZXJTdmdpY29uMzogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmZlYXR1cmVwaWxsc251bWJlclN2Z2ljb24zXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBmZWF0dXJlcGlsbHNudW1iZXJTdmdudW1iZXIxOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZmVhdHVyZXBpbGxzbnVtYmVyU3ZnbnVtYmVyMVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZlYXR1cmVwaWxsc251bWJlclN2Z251bWJlcjI6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5mZWF0dXJlcGlsbHNudW1iZXJTdmdudW1iZXIyXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZmVhdHVyZXBpbGxzbnVtYmVyU3ZnbnVtYmVyMzogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmZlYXR1cmVwaWxsc251bWJlclN2Z251bWJlcjNcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGZlYXR1cmVwaWxsc251bWJlclN2Z25hbWUxOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZmVhdHVyZXBpbGxzbnVtYmVyU3ZnbmFtZTFcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBmZWF0dXJlcGlsbHNudW1iZXJTdmduYW1lMjogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LmZlYXR1cmVwaWxsc251bWJlclN2Z25hbWUyXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZmVhdHVyZXBpbGxzbnVtYmVyU3ZnbmFtZTM6IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy5mZWF0dXJlcGlsbHNudW1iZXJTdmduYW1lM1xuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgZmVhdHVyZXBpbGxzbnVtYmVyU3Znc3VidGl0bGUxOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZmVhdHVyZXBpbGxzbnVtYmVyU3Znc3VidGl0bGUxXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZmVhdHVyZXBpbGxzbnVtYmVyU3Znc3VidGl0bGUyOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZmVhdHVyZXBpbGxzbnVtYmVyU3Znc3VidGl0bGUyXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZmVhdHVyZXBpbGxzbnVtYmVyU3Znc3VidGl0bGUzOiB0aGlzLmdldFRleHRWYWx1ZShcbiAgICAgICAgICAgICAgICB0ZXh0cz8uZmVhdHVyZXBpbGxzbnVtYmVyU3Znc3VidGl0bGUzXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICB0b3BzbGlkZXJ2aWRlb3Yyc3ZnOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8udG9wc2xpZGVydmlkZW92MnN2ZyksXG4gICAgICAgICAgICB0b3BzbGlkZXJ2aWRlb3YydmlkZW86IHRoaXMuZ2V0VGV4dFZhbHVlKFxuICAgICAgICAgICAgICAgIHRleHRzPy50b3BzbGlkZXJ2aWRlb3YydmlkZW9cbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIG9ubHlBZHVsdHM6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5vbmx5QWR1bHRzKSxcbiAgICAgICAgICAgIGhvdGVsQ2F0ZWdvcnk6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ob3RlbENhdGVnb3J5KSxcbiAgICAgICAgICAgIGhvdGVsVHlwZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmhvdGVsVHlwZSksXG4gICAgICAgICAgICBkZXN0aW5hdGlvbnM6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5kZXN0aW5hdGlvbnMpLFxuICAgICAgICAgICAgY2xlYW5GaWx0ZXJzOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY2xlYW5GaWx0ZXJzKSxcbiAgICAgICAgICAgIG5vdEZvdW5kOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubm90Rm91bmQpLFxuICAgICAgICAgICAgY29udGFjdEVtYWlsOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY29udGFjdEVtYWlsKSxcbiAgICAgICAgICAgIGNvbnRhY3RPZmZpY2U6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5jb250YWN0T2ZmaWNlKSxcbiAgICAgICAgICAgIGNvbnRhY3RUZWw6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5jb250YWN0VGVsKSxcbiAgICAgICAgICAgIG1hcmNhOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubWFyY2EpLFxuXG4gICAgICAgICAgICBlcnJvclJlZ2lzdGVyU3Vic2NyaWJlcjogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/LkVycm9yUmVnaXN0ZXJTdWJzY3JpYmVyXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZXJyb3JzdWJzY3JpYmVyOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uRXJyb3JzdWJzY3JpYmVyKSxcbiAgICAgICAgICAgIGlucHV0TGFiZWw6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5pbnB1dExhYmVsKSxcbiAgICAgICAgICAgIGlucHV0UGxhY2Vob2xkZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5pbnB1dFBsYWNlaG9sZGVyKSxcbiAgICAgICAgICAgIG5ld3NFcnJvckVtYWlsOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ubmV3c0Vycm9yRW1haWwpLFxuICAgICAgICAgICAgc3VjY2Vzc3N1YnNjcmliZXI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5zdWNjZXNzc3Vic2NyaWJlciksXG5cbiAgICAgICAgICAgIG1hcFVybDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm1hcFVybCA/PyB0ZXh0cz8ubWFwdXJsKSxcbiAgICAgICAgICAgIHJvb21zOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8ucm9vbXMpLFxuICAgICAgICAgICAgY2F0ZWdvcmllczogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNhdGVnb3JpZXMpLFxuICAgICAgICAgICAgYWxsOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uYWxsKSxcblxuICAgICAgICAgICAgaG93R2V0RGVzY3JpcHRpb246IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ob3dHZXREZXNjcmlwdGlvbiksXG4gICAgICAgICAgICBob3dHZXREZXNjcmlwdGlvbjI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ob3dHZXREZXNjcmlwdGlvbjIpLFxuICAgICAgICAgICAgaG93R2V0VGl0bGU6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ob3dHZXRUaXRsZSksXG4gICAgICAgICAgICBob3dHZXRUaXRsZTI6IHRoaXMuZ2V0VGV4dFZhbHVlKHRleHRzPy5ob3dHZXRUaXRsZTIpLFxuICAgICAgICAgICAgY29udGFjdERlc2NyaXB0aW9uOiB0aGlzLmdldFRleHRWYWx1ZSh0ZXh0cz8uY29udGFjdERlc2NyaXB0aW9uKSxcbiAgICAgICAgICAgIGNvbnRhY3RUaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/LmNvbnRhY3RUaXRsZSksXG5cbiAgICAgICAgICAgIG5ld3NsZXR0ZXJFcnJvcjogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm5ld3NsZXR0ZXJFcnJvciksXG4gICAgICAgICAgICBuZXdzbGV0dGVyRmFpbDogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm5ld3NsZXR0ZXJGYWlsKSxcbiAgICAgICAgICAgIG5ld3NsZXR0ZXJTdWNjZXNzZnVsbDogdGhpcy5nZXRUZXh0VmFsdWUoXG4gICAgICAgICAgICAgICAgdGV4dHM/Lm5ld3NsZXR0ZXJTdWNjZXNzZnVsbFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG5ld3NsZXR0ZXJUaXRsZTogdGhpcy5nZXRUZXh0VmFsdWUodGV4dHM/Lm5ld3NsZXR0ZXJUaXRsZSksXG4gICAgICAgIH0gYXMgQmFieWxvblRleHRJbmZvSTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRleHRWYWx1ZSh0ZXh0OiBhbnkpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXRleHQpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgICAgLy8gc3RyaW5nIHBsYW5vXG4gICAgICAgIGlmICh0eXBlb2YgdGV4dCA9PT0gJ3N0cmluZycpIHJldHVybiB0ZXh0O1xuXG4gICAgICAgIHJldHVybiB0ZXh0Py52YWx1ZSA/PyB0ZXh0Py50ZXh0ID8/IHRleHQ/LmxhYmVsID8/IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBDb25zdWx0VHlwZXNHbG9iYWwoY29uc3VsdHM6IGFueSB8IHVuZGVmaW5lZCk6IENvbnN1bHRUeXBlSVtdIHtcbiAgICAgICAgcmV0dXJuIGNvbnN1bHRzPy5tYXAoXG4gICAgICAgICAgICAoY29uc3VsdDogYW55KSA9PlxuICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBjb25zdWx0Py5pZCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogY29uc3VsdD8ubmFtZSxcbiAgICAgICAgICAgICAgICB9KSBhcyBDb25zdWx0VHlwZUlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBtYXBIb3RlbHNHbG9iYWwoaG90ZWxzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSG90ZWxHbG9iYWxJdGVtW10ge1xuICAgICAgICByZXR1cm4gaG90ZWxzXG4gICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAoaG90ZWw6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBob3RlbD8uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBob3RlbD8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBob3RlbD8ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0czogdGhpcy5tYXBHbG9iYWxUZXh0cyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3RlbD8udGV4dHNcbiAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgQmFieWxvblRleHRJbmZvSSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE6IHRoaXMubWFwTXVsdGltZWRpYShob3RlbD8ubXVsdGltZWRpYSksXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IGhvdGVsPy5tdWx0aW1lZGlhPy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMubWFwTXVsdGltZWRpYShob3RlbD8ubXVsdGltZWRpYSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGhvdGVsPy5saW5rID8/IGhvdGVsPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGhvdGVsPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsOiBob3RlbD8uZW1haWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRlc3M6IGhvdGVsPy5hZGRyZXNzLFxuXG4gICAgICAgICAgICAgICAgICAgICAgICBhbGxJbmNsdXNpdmU6IGhvdGVsPy5hbGxJbmNsdXNpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICBiZWFjaENsdWI6IGhvdGVsPy5iZWFjaENsdWIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja0luVGltZTogaG90ZWw/LmNoZWNrSW5UaW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tPdXRUaW1lOiBob3RlbD8uY2hlY2tPdXRUaW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2l0eTogaG90ZWw/LmNpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9zaW5nRnJvbTogaG90ZWw/LmNsb3NpbmdGcm9tLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2luZ1RvOiBob3RlbD8uY2xvc2luZ1RvLFxuICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeTogaG90ZWw/LmNvdW50cnksXG4gICAgICAgICAgICAgICAgICAgICAgICBjcDogaG90ZWw/LmNwLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25zOiBob3RlbD8uZGVzdGluYXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0ZWQ6IGhvdGVsPy5oaWdobGlnaHRlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhdDogaG90ZWw/LmxhdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvbjogaG90ZWw/LmxvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhdW5kcnk6IGhvdGVsPy5sYXVuZHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxpdHk6IGhvdGVsPy5sb2NhbGl0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcExpbms6IGhvdGVsPy5tYXBMaW5rLFxuICAgICAgICAgICAgICAgICAgICAgICAgb2ZmZXJzOiBob3RlbD8ub2ZmZXJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmU6IGhvdGVsPy5waG9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpbmNlOiBob3RlbD8ucHJvdmluY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXI6IGhvdGVsPy50aWNrZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXRlSG90ZWxzOiBob3RlbD8uc2l0ZUhvdGVscyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzQWR2YW50YWdlczogaG90ZWw/LnNlcnZpY2VzQWR2YW50YWdlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzQ2hhcmFjdGVyaXN0aWNzOiBob3RlbD8uc2VydmljZXNDaGFyYWN0ZXJpc3RpY3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlc0hvdGVsQXBwOiBob3RlbD8uc2VydmljZXNIb3RlbEFwcCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzTGlzdDogaG90ZWw/LnNlcnZpY2VzTGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzTG9jYXRpb246IGhvdGVsPy5zZXJ2aWNlc0xvY2F0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZXNTZXJ2aWNlOiBob3RlbD8uc2VydmljZXNTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVzOiBob3RlbD8uc3R5bGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25seUFkdWx0czogaG90ZWw/Lm9ubHlBZHVsdHMsXG4gICAgICAgICAgICAgICAgICAgICAgICBob3RlbGNhdGVnb3J5OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdGVsPy5ob3RlbENhdGVnb3J5ID8/IGhvdGVsPy5ob3RlbGNhdGVnb3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgaG90ZWx0eXBlOiBob3RlbD8uaG90ZWxUeXBlID8/IGhvdGVsPy5ob3RlbHR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJjYTogaG90ZWw/Lm1hcmNhLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSG90ZWxHbG9iYWxJdGVtXG4gICAgICAgICAgICApXG4gICAgICAgICAgICA/LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiAoYS5vcmRlciB8fCA5OTk5KSAtIChiLm9yZGVyIHx8IDk5OTkpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hcEdsb2JhbEl0ZW1zKHByb3BzOiBhbnkpOiBhbnkge1xuICAgICAgICAvLyBGdWVudGUgcHJpbmNpcGFsIGRlIGl0ZW1zXG4gICAgICAgIGNvbnN0IHJhd0l0ZW1zID1cbiAgICAgICAgICAgIHByb3BzPy5pdGVtcyA/P1xuICAgICAgICAgICAgcHJvcHM/Lkl0ZW1zID8/XG4gICAgICAgICAgICBwcm9wcz8uc2VydmljZXNTZXJ2aWNlID8/XG4gICAgICAgICAgICBwcm9wcz8udmVudGFqYXMgPz9cbiAgICAgICAgICAgIHByb3BzLlZlbnRhamFzID8/XG4gICAgICAgICAgICB1bmRlZmluZWQ7XG5cbiAgICAgICAgLy8gSW50ZW50YW1vcyBtYXBlYXIgaXRlbXMgaW1hZ2VuZXNcbiAgICAgICAgaWYgKCFyYXdJdGVtcyAmJiBwcm9wcz8ubXVsdGltZWRpYSkge1xuICAgICAgICAgICAgY29uc3QgbWFwcGVkSW1nID0gdGhpcy5tYXBJbWFnZXMocHJvcHM/Lm11bHRpbWVkaWEpO1xuICAgICAgICAgICAgaWYgKG1hcHBlZEltZyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hcHBlZEltZy5pbWFnZW5lcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEludGVudGFtb3MgbWFwZWFyIGl0ZW1zIGV4cGVyaWVuY2lhc1xuICAgICAgICBpZiAoIXJhd0l0ZW1zICYmIHByb3BzPy5leHBlcmllbmNlKSB7XG4gICAgICAgICAgICBjb25zdCBtYXBwZWRJdGVtcyA9IHRoaXMubWFwSXRlbXMocHJvcHM/LmV4cGVyaWVuY2UpO1xuICAgICAgICAgICAgaWYgKG1hcHBlZEl0ZW1zICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWFwcGVkSXRlbXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvL0ludGVudGFtb3MgbWFwZWFyIGl0ZW1zIOKAnG5vcm1hbGVz4oCdXG4gICAgICAgIGNvbnN0IG1hcHBlZEl0ZW1zID0gdGhpcy5tYXBJdGVtcyhyYXdJdGVtcyk7XG4gICAgICAgIGlmIChtYXBwZWRJdGVtcyAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFwcGVkSXRlbXM7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaSBubyBoYXkgaXRlbXMsIHByb2JhbW9zIGNvbiByb29tc1xuICAgICAgICBjb25zdCBtYXBwZWRSb29tcyA9IHRoaXMubWFwUm9vbURldGFpbHMocHJvcHM/LnJvb21zKTtcbiAgICAgICAgaWYgKG1hcHBlZFJvb21zICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBwZWRSb29tcztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIG9mZmVyc1xuICAgICAgICBjb25zdCBtYXBwZWRPZmZlcnMgPSB0aGlzLm1hcE9mZmVyc0dsb2JhbChwcm9wcz8ub2ZmZXJzKTtcbiAgICAgICAgaWYgKG1hcHBlZE9mZmVycyAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFwcGVkT2ZmZXJzO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gNSkgaG90ZWxlc1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBIb3RlbHNHbG9iYWwocHJvcHM/LmhvdGVscyk7XG4gICAgfVxuXG4gICAgbWFwQWRkcmVzcyhhZGRyZXNzOiBhbnkgfCBhbnlbXSB8IHVuZGVmaW5lZCk6IEJhYnlsb25BZGRyZXNzSXRlbVtdIHtcbiAgICAgICAgaWYgKCFhZGRyZXNzKSByZXR1cm4gW107XG5cbiAgICAgICAgY29uc3QgbGlzdCA9IEFycmF5LmlzQXJyYXkoYWRkcmVzcykgPyBhZGRyZXNzIDogW2FkZHJlc3NdO1xuXG4gICAgICAgIHJldHVybiBsaXN0Lm1hcCgoYTogYW55KSA9PiAoe1xuICAgICAgICAgICAgaWQ6IGE/LmlkLFxuICAgICAgICAgICAgbmFtZTogYT8ubmFtZSxcbiAgICAgICAgICAgIGFkZHJlc3M6IGE/LmFkZHJlc3MsXG4gICAgICAgICAgICBjaXR5OiBhPy5jaXR5LFxuICAgICAgICAgICAgbG9jYWxpdHk6IGE/LmxvY2FsaXR5LFxuICAgICAgICAgICAgcHJvdmluY2U6IGE/LnByb3ZpbmNlLFxuICAgICAgICAgICAgY291bnRyeTogYT8uY291bnRyeSxcbiAgICAgICAgICAgIGNwOiBhPy5jcCxcbiAgICAgICAgICAgIHVybDogYT8ubGluayxcbiAgICAgICAgICAgIHBob25lOiBhPy5waG9uZSxcbiAgICAgICAgICAgIHBob25lMjogYT8ucGhvbmUyLFxuICAgICAgICAgICAgZW1haWw6IGE/LmVtYWlsLFxuICAgICAgICAgICAgZnVsbF9hZGRyZXNzOiBhPy5mdWxsQWRkcmVzcyxcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIG1hcFN0YXRpY0Zvb3RlcnYzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uU3RhdGljRm9vdGVySSB7XG4gICAgICAgIHJldHVybiB7fSBhcyBhbnk7XG4gICAgfVxuXG4gICAgbWFwR2xvYmFsU2VydmljZXMoXG4gICAgICAgIHNlcnZpY2VzOiBCYWJ5bG9uR2xvYmFsSWNvbklbXSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25HbG9iYWxJY29uSVtdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHNlcnZpY2VzPy5tYXAoXG4gICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLWAgKyBpdGVtPy5jbGFzcyxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBpdGVtPy50eXBlLFxuICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25HbG9iYWxJY29uSVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG1hcENvbnRhY3RJbmZvKHRleHRzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQ29udGFjdEluZm9JIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBub3RlOiB0ZXh0cz8ubm90ZSxcbiAgICAgICAgICAgIHRleHQ6IHRleHRzPy50ZXh0LFxuICAgICAgICAgICAgaWNvbjogdGV4dHM/Lmljb24sXG4gICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGNvbmRpdGlvbnM6IHRleHRzPy5jb25kaXRpb25zLFxuICAgICAgICAgICAgY29uZGl0aW9uczI6IHRleHRzPy5jb25kaXRpb25zMixcbiAgICAgICAgICAgIGRyb3Bkb3duUGxhY2Vob2xkZXI6IHRleHRzPy5kcm9wZG93blBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgZHJvcGRvd25UaXRsZTogdGV4dHM/LmRyb3Bkb3duVGl0bGUsXG4gICAgICAgICAgICBob3RlbERyb3BUaXRsZTogdGV4dHM/LmhvdGVsRHJvcFRpdGxlLFxuICAgICAgICAgICAgaG90ZWxEcm9wUGxhY2Vob2xkZXI6IHRleHRzPy5ob3RlbERyb3BQbGFjZWhvbGRlcixcbiAgICAgICAgICAgIGhvdGVsRHJvcEVycm9yOiB0ZXh0cz8uaG90ZWxEcm9wRXJyb3IsXG4gICAgICAgICAgICBlcnJvckVtYWlsOiB0ZXh0cz8uZXJyb3JFbWFpbCxcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZTogdGV4dHM/LmVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgIGVycm9yTmFtZTogdGV4dHM/LmVycm9yTmFtZSxcbiAgICAgICAgICAgIGVycm9yUGhvbmU6IHRleHRzPy5lcnJvclBob25lLFxuICAgICAgICAgICAgZXJyb3JSZXF1aXJlZDogdGV4dHM/LmVycm9yUmVxdWlyZWQsXG4gICAgICAgICAgICBpbnB1dEVtYWlsOiB0ZXh0cz8uaW5wdXRFbWFpbCxcbiAgICAgICAgICAgIGlucHV0RW1haWxQbGFjZUhvbGRlcjogdGV4dHM/LmlucHV0RW1haWxQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIGlucHV0TWVzc2FnZTogdGV4dHM/LmlucHV0TWVzc2FnZSxcbiAgICAgICAgICAgIGlucHV0TWVzc2FnZVBsYWNlSG9sZGVyOiB0ZXh0cz8uaW5wdXRNZXNzYWdlUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICBpbnB1dE5hbWU6IHRleHRzPy5pbnB1dE5hbWUsXG4gICAgICAgICAgICBpbnB1dE5hbWVQbGFjZUhvbGRlcjogdGV4dHM/LmlucHV0TmFtZVBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgaW5wdXRQaG9uZTogdGV4dHM/LmlucHV0UGhvbmUsXG4gICAgICAgICAgICBpbnB1dFBob25lUGxhY2VIb2xkZXI6IHRleHRzPy5pbnB1dFBob25lUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICBpbnB1dGxhc3RuYW1lOiB0ZXh0cz8uaW5wdXRsYXN0bmFtZSxcbiAgICAgICAgICAgIGlucHV0bGFzdG5hbWVQbGFjZUhvbGRlcjogdGV4dHM/LmlucHV0bGFzdG5hbWVQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIGlucHV0U3VybmFtZXM6IHRleHRzPy5pbnB1dFN1cm5hbWVzLFxuICAgICAgICAgICAgaW5wdXRTdXJuYW1lc1BsYWNlSG9sZGVyOiB0ZXh0cz8uaW5wdXRTdXJuYW1lc1BsYWNlSG9sZGVyLFxuICAgICAgICAgICAgbWFuZGF0b3J5dGV4dDogdGV4dHM/Lm1hbmRhdG9yeXRleHQsXG4gICAgICAgICAgICByZXF1aXJlZEZpZWxkc0xhYmVsOiB0ZXh0cz8ucmVxdWlyZWRGaWVsZHNMYWJlbCxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQ29udGFjdEluZm9JO1xuICAgIH1cbiAgICBtYXBFdmVudHNHbG9iYWwoZXZlbnRzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSXRlbUlbXSB7XG4gICAgICAgIHJldHVybiBldmVudHM/Lm1hcChcbiAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtPy5uYW1lID8/IGl0ZW0/Lm5hbWVfaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0/LnByaWNlLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDE6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDI6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDM6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uczogaXRlbS50ZXh0cz8uY29uZGl0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXRlbS50ZXh0cz8ucmVzZXJ2YXRpb25VcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVBdDogaXRlbS50ZXh0cz8uY3JlYXRlQXQsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkQXQ6IGl0ZW0udGV4dHM/LnVwZGF0ZWRBdCxcbiAgICAgICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uVGV4dEluZm9JLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0/LnVybCxcbiAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSXRlbUlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgbWFwT2ZmZXJzR2xvYmFsKG9mZmVyczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbk9mZmVySXRlbUlbXSB7XG4gICAgICAgIHJldHVybiBvZmZlcnM/Lm1hcChcbiAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25Gcm9tOiBpdGVtPy5hcHBsaWNhdGlvbkZyb20sXG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uVG86IGl0ZW0/LmFwcGxpY2F0aW9uVG8sXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5OiBpdGVtPy5jdXJyZW5jeSxcbiAgICAgICAgICAgICAgICAgICAgZGlzY291bnQ6IGl0ZW0/LmRpc2NvdW50LFxuICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYTogdGhpcy5tYXBNdWx0aW1lZGlhKGl0ZW0/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbnM6IGl0ZW0udGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0udGV4dHM/LnJlc2VydmF0aW9uVXJsLFxuICAgICAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25UZXh0SW5mb0ksXG4gICAgICAgICAgICAgICAgICAgIHVybDogaXRlbT8udXJsLFxuICAgICAgICAgICAgICAgICAgICB2aXNpYmxlRnJvbTogaXRlbT8udmlzaWJsZUZyb20sXG4gICAgICAgICAgICAgICAgICAgIHZpc2libGVUbzogaXRlbT8udmlzaWJsZVRvLFxuICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25PZmZlcklcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBtYXBBZHZhbnRhZ2VzR2xvYmFsKGFkdmFudGFnZXM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25BZHZhbnRhZ2VJdGVtSVtdIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFkdmFudGFnZXMpKSByZXR1cm4gW107XG4gICAgICAgIHJldHVybiBhZHZhbnRhZ2VzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmljb259YCxcbiAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIG1hcEl0ZW1zKGl0ZW1zOiBhbnkpOiBhbnkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoaXRlbXMpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBpdGVtcyA9IGl0ZW1zPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgIGxhYmVsOiBpdGVtPy50aXRsZSA/PyBpdGVtPy5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LnRleHQgPz8gaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICB0ZXh0czpcbiAgICAgICAgICAgICAgICBpdGVtPy50ZXh0cyA/P1xuICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBpdGVtPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uVGV4dEluZm9JKSxcbiAgICAgICAgICAgIG11bHRpbWVkaWE6IHRoaXMubWFwSW1hZ2VzKGl0ZW0/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgaWNvbjogYGljb24tYCArIChpdGVtLmljb24gPz8gaXRlbS5jbGFzcyksXG4gICAgICAgIH0pKTtcbiAgICAgICAgcmV0dXJuIGl0ZW1zIGFzIEJhYnlsb25JdGVtSTtcbiAgICB9XG5cbiAgICBtYXBHbG9iYWxzRmFxcyhyYXc6IGFueSk6IEJhYnlsb25HbG9iYWxzRmFxR3JvdXBbXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShyYXcpIHx8IHJhdy5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgICAgY29uc3QgaXNHcm91cGVkID0gcmF3LnNvbWUoXG4gICAgICAgICAgICAoeCkgPT4geCAmJiB0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgQXJyYXkuaXNBcnJheSh4Lml0ZW1zKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGdyb3VwczogQXJyYXk8eyBsaXN0SWQ6IG51bWJlcjsgaXRlbXM6IGFueVtdIH0+ID0gaXNHcm91cGVkXG4gICAgICAgICAgICA/IHJhdy5tYXAoKGc6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgIGxpc3RJZDogTnVtYmVyKGc/Lmxpc3RJZCA/PyAxKSxcbiAgICAgICAgICAgICAgICAgIGl0ZW1zOiBBcnJheS5pc0FycmF5KGc/Lml0ZW1zKSA/IGcuaXRlbXMgOiBbXSxcbiAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICA6IFt7IGxpc3RJZDogMSwgaXRlbXM6IHJhdyB9XTtcblxuICAgICAgICBjb25zdCBtYXBwZWRHcm91cHM6IEJhYnlsb25HbG9iYWxzRmFxR3JvdXBbXSA9IGdyb3Vwc1xuICAgICAgICAgICAgLm1hcCgoZykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hcHBlZEl0ZW1zID0gKGcuaXRlbXMgfHwgW10pXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnRpdGxlID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ucXVlc3Rpb24gPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5uYW1lID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubGFiZWwgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy50ZXh0ID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uYW5zd2VyID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uZGVzY3JpcHRpb24gPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJztcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYWJlbCAmJiAhZGVzY3JpcHRpb24pIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy50ZXh0cyA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgQmFieWxvblRleHRJbmZvSSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYTogdGhpcy5tYXBJbWFnZXMoaXRlbT8ubXVsdGltZWRpYSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5pY29uIHx8IGl0ZW0/LmNsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFN0cmluZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaWNvbiA/PyBpdGVtLmNsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkuc3RhcnRzV2l0aCgnaWNvbi0nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gU3RyaW5nKGl0ZW0uaWNvbiA/PyBpdGVtLmNsYXNzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYGljb24tJHtpdGVtLmljb24gPz8gaXRlbS5jbGFzc31gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtPy5pZCA/PyBpdGVtPy5mYXFJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgdW5rbm93biBhcyBCYWJ5bG9uSXRlbUk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbikgYXMgQmFieWxvbkl0ZW1JW107XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBsaXN0SWQ6IGcubGlzdElkIHx8IDEsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBtYXBwZWRJdGVtcyxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5maWx0ZXIoKGcpID0+IGcuaXRlbXMubGVuZ3RoID4gMCk7XG5cbiAgICAgICAgcmV0dXJuIG1hcHBlZEdyb3Vwcy5sZW5ndGggPyBtYXBwZWRHcm91cHMgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwTXVsdGltZWRpYShpbWFnZXNBcnJheTogYW55IHwgdW5kZWZpbmVkKTogYW55IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaW1hZ2VzQXJyYXkpICYmIGltYWdlc0FycmF5Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGltYWdlc0FycmF5XG4gICAgICAgICAgICAgICAgPy5maWx0ZXIoKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+IGl0ZW0/LmFjdGl2ZSA9PT0gdHJ1ZSlcbiAgICAgICAgICAgICAgICA/Lm1hcCgoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBhbHQ6IGl0ZW0/LmFsdCxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgdGFnOiBpdGVtPy50YWdzLFxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcEltYWdlcyhtdWx0aW1lZGlhOiBhbnkgfCB1bmRlZmluZWQpOiBhbnkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAobXVsdGltZWRpYSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBpbWFnZW5lczogdGhpcy5tYXBNdWx0aW1lZGlhKFxuICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhPy5pbWFnZW5lcyA/PyBtdWx0aW1lZGlhXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBzdGF0aWNJbWFnZW5lczogdGhpcy5tYXBNdWx0aW1lZGlhKG11bHRpbWVkaWE/LnN0YXRpY2ltYWdlbmVzKSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kaW1hZ2U6IHRoaXMubWFwTXVsdGltZWRpYShcbiAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYT8uYmFja2dyb3VuZGltYWdlXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBsb2dvOiB0aGlzLm1hcE11bHRpbWVkaWEobXVsdGltZWRpYT8ubG9nbyksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwUm9vbURldGFpbHMocm9vbXM6IGFueSB8IHVuZGVmaW5lZCk6IGFueSB7XG4gICAgICAgIGxldCBhcnJheTogYW55W10gPSByb29tcz8ubGVuZ3RoID8gcm9vbXMgOiBbcm9vbXNdO1xuXG4gICAgICAgIHJldHVybiBhcnJheVxuICAgICAgICAgICAgPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKHJvb206IGFueSwgaW5kZXg6IG51bWJlciwgc2VsZjogYW55W10pID0+XG4gICAgICAgICAgICAgICAgICAgIHNlbGY/LmZpbmRJbmRleCgocikgPT4gcj8uaWQgPT09IHJvb20/LmlkKSA9PT0gaW5kZXhcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpdGVtPy5idXR0b25zPy5zbGljZSgpLnJldmVyc2UoKSBUT0RPOiBcIi5zbGljZSgpLnJldmVyc2UoKVwiICBlc3RvIHNlIGhhY2UgZW4gZWwgY29tcG9uZW50ZSBxdWUgbG8gdXNlICovXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+IGltZz8uY292ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB8fCBpdGVtPy5tdWx0aW1lZGlhPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VuZXM6IGl0ZW0/Lm11bHRpbWVkaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKGltZzogYW55KSA9PiBpbWcuYWN0aXZlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Lm1hcCgoaW1nOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM6IGltZy50ZXh0cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWc6IGltZy50YWdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaW1nLmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGltZy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaW1nLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiBpdGVtPy5tdWx0aW1lZGlhPy52aWRlbz8uc3JjLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGl0ZW0/Lm11bHRpbWVkaWE/LnZpZGVvPy5zcmNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAndmlkZW8vbXA0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0/LnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDE6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDQ6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaXRlbT8ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBlcXVpcG1lbnRzOiBBcnJheS5pc0FycmF5KGl0ZW0/LnNlcnZpY2VzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbT8uc2VydmljZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoc3ZjOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHN2Yy50eXBlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc3ZjLnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHQ6IHN0cmluZykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC50cmltKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBbXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBY2VwdGEgdGFudG8gJ2VxdWlwbWVudCcgY29tbyAnY2hhcmFjdGVyaXN0aWNzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNWYWxpZFR5cGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXMuaW5jbHVkZXMoJ2VxdWlwbWVudCcpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlcy5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb29tU2VydmljZVR5cGUuY2hhcmFjdGVyaXN0aWNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYXNWYWxpZFR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKChzdmM6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogc3ZjPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBzdmM/LmNsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGBpY29uLSR7c3ZjPy5jbGFzc31gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uUm9vbUluZm9JXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBtYXA0MDQocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb240MDRJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29udGFpbixcblxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbjQwNEk7XG4gICAgfVxuXG4gICAgLy8tLS0tIExBWU9VVCBDT01QT05FTlRTIC0tLS0vL1xuICAgIG1hcFRvcFNsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblRvcFNsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgaW1hZ2VzO1xuICAgICAgICBpZiAocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzWzBdPy50YWdzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGltYWdlcyA9XG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChpbWFnZTogYW55KSA9PiBpbWFnZT8udGFnc1swXT8ubmFtZSA9PT0gJ1RvcFNsaWRlcidcbiAgICAgICAgICAgICAgICApID8/IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaW1hZ2VzID0gcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzKSxcbiAgICAgICAgICAgIGl0ZW1zOiBpbWFnZXMubGVuZ3RoXG4gICAgICAgICAgICAgICAgPyBpbWFnZXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWFnZXM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1hZ2VzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWFnZXMsIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpbWFnZXM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpbWFnZXM/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGl0ZW1zTW9iaWxlOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXNtb2JpbGU/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblRvcFNsaWRlckl0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8ubG9nbz8uWzBdLCBmYWxzZSksXG4gICAgICAgICAgICBsb2dvVGl0bGU6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvdGl0bGU/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHZpZGVvRGF0YToge1xuICAgICAgICAgICAgICAgIC8vIHRpdGxlOiBwcm9wcz8udmlkZW8/LnRpdGxlLFxuICAgICAgICAgICAgICAgIHNyYzogcHJvcHM/LnRleHRzPy52aWRlbyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndmlkZW8vbXA0JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvblRvcFNsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwVG9wU2xpZGVyVmlkZW8oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uVG9wU2xpZGVyVmlkZW9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZpZGVvRGF0YToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udmlkZW8/LnRpdGxlLFxuICAgICAgICAgICAgICAgIHNyYzogcHJvcHM/LnZpZGVvPy5zcmMsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3ZpZGVvL21wNCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc21hbGxWaWRlb0RhdGE6IHByb3BzPy52aWRlbz8ubW9iaWxlXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy52aWRlbz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgc3JjOiBwcm9wcz8udmlkZW8/Lm1vYmlsZSxcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndmlkZW8vbXA0JyxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGxhYmVsSW5mb3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbW9iaWxlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgIH0gYXMgQmFieWxvblRvcFNsaWRlclZpZGVvSTtcbiAgICB9XG5cbiAgICBtYXBUb3BTbGlkZXJWMihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2VcbiAgICApOiBCYWJ5bG9uVG9wU2xpZGVyVjJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHByb3BzXG4gICAgICAgICAgICA/ICh7XG4gICAgICAgICAgICAgICAgICByaWdodFNpZGU6IHJpZ2h0U2lkZSxcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblNsaWRlcjRjb2xMYWJlbHNcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBsYWJlbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8udGV4dCxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0gYXMgQmFieWxvblRvcFNsaWRlclYySSlcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcEluZm9JbWcoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHJpZ2h0U2lkZTogYm9vbGVhbiA9IGZhbHNlLFxuICAgICAgICB0ZXh0Q29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25JbmZvSW1nSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByaWdodFNpZGU6IHJpZ2h0U2lkZSxcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBidXR0b25zOiBwcm9wcz8uYnV0dG9uc1xuICAgICAgICAgICAgICAgID8gVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9ucz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PiBsaW5rPy5saW5rVmFsdWUgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbiA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbj8uY29udGFpbixcbiAgICAgICAgICAgIHRleHQ6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uc3VidGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5zdWJ0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBuZHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/Lm5kdGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5uZHRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5uZHRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgbGVzc0J0bjogcHJvcHM/LnRleHRzPy5zZWVMZXNzLFxuICAgICAgICAgICAgbW9yZUJ0bjogcHJvcHM/LnRleHRzPy5zZWVNb3JlLFxuICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGFkdmFudGFnZXM6IHByb3BzPy5WZW50YWphcz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+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/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm9JbWdJO1xuICAgIH1cblxuICAgIG1hcEluZm9JbWdTbGlkZXIoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHJpZ2h0U2lkZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgKTogQmFieWxvbkluZm9JbWdTbGlkZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgLy8gVE9ETzogYWRkIHRvcEJHLCBib3R0b21CR1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmlnaHRTaWRlOiByaWdodFNpZGUsXG4gICAgICAgICAgICB0b3BDb2xvcjogcHJvcHM/LnRleHRzPy50b3BDb2xvcixcbiAgICAgICAgICAgIGJvdHRvbUNvbG9yOiBwcm9wcz8udGV4dHM/LmJvdHRvbUNvbG9yLFxuICAgICAgICAgICAgbGVzc0J0bjogcHJvcHM/LnRleHRzPy5zZWVMZXNzLFxuICAgICAgICAgICAgbW9yZUJ0bjogcHJvcHM/LnRleHRzPy5zZWVNb3JlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBuZHRpdGxlOiBpdGVtPy5uZF90aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSW5mb0ltZ1NsaWRlckl0ZW1JXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvSW1nU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBJbmZvSW50cm8ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25JbmZvSW50cm9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbiA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbj8uY29udGFpbixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMsXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0b3BCRzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LnRvcGJnPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBib3R0b21CRzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJvdHRvbWJnPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0b3BDb2xvcjogcHJvcHM/LnRleHRzPy50b3BDb2xvcixcbiAgICAgICAgICAgIGJvdHRvbUNvbG9yOiBwcm9wcz8udGV4dHM/LkJvdHRvbUNvbG9yLFxuICAgICAgICAgICAgbG9nbzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmxvZ28/LlswXSwgZmFsc2UpLFxuICAgICAgICAgICAgbG9nbzI6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvMj8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbj8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbj8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidXR0b25Nb2RhbDogcHJvcHM/LnRleHRzPy5wb3B1cG1vZGFsLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvSW50cm9JO1xuICAgIH1cblxuICAgIG1hcEhlYWRlcihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgbWVudTogYW55LFxuICAgICAgICBoZWFkZXI6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6XG4gICAgICAgIHwgQmFieWxvbkhlYWRlckJvb2tTaG93SVxuICAgICAgICB8IEJhYnlsb25IZWFkZXJDbGVhcklcbiAgICAgICAgfCBCYWJ5bG9uSGVhZGVyTWVudUNlbnRlcklcbiAgICAgICAgfCBCYWJ5bG9uSGVhZGVyTWVudUxvZ29DZW50ZXJJXG4gICAgICAgIHwgQmFieWxvbkhlYWRlck1lbnVTaG93SSB7XG4gICAgICAgIGNvbnN0IGxpbmsgPSBtZW51LmxpbmtzPy5sb2dvTGluaz8uZmxhdCgpPy5bMF07XG4gICAgICAgIGNvbnN0IGhlYWRlckJ1dHRvbnMgPSBwcm9wcztcblxuICAgICAgICBpZiAoaGVhZGVyQnV0dG9ucykge1xuICAgICAgICAgICAgdGhpcy5mbG9hdGluZ0J1dHRvbnMgPSB7XG4gICAgICAgICAgICAgICAgdGV4dHM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGJhYnlsb24tJHtoZWFkZXJCdXR0b25zLnRleHRzPy50cmFuc2Zlckljb259YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8udHJhbnNmZXIsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBiYWJ5bG9uLSR7aGVhZGVyQnV0dG9ucy50ZXh0cz8uY2hlY2tpbkljb259YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8uY2hlY2tpbixcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGJhYnlsb24tJHtoZWFkZXJCdXR0b25zLnRleHRzPy53aGF0c2FwcH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGhlYWRlckJ1dHRvbnM/LnRleHRzPy53aGF0c2FwcCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHRleHRzQnV0dG9uczoge1xuICAgICAgICAgICAgICAgICAgICBtZW51VGV4dDogaGVhZGVyQnV0dG9ucz8udGV4dHM/Lm1lbnV0ZXh0LFxuICAgICAgICAgICAgICAgICAgICBib29rdGV4dDogaGVhZGVyQnV0dG9ucz8udGV4dHM/LmJvb2t0ZXh0LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaGVhZGVyQnV0dG9ucz8ubGlua3MpLFxuICAgICAgICAgICAgfSBhcyBCYWJ5bG9uRmxvYXRpbmdCdXR0b25zSTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0ZXh0czogaGVhZGVyPy50ZXh0cyxcbiAgICAgICAgICAgIGZsb2F0aW5nQnV0dG9uczogdGhpcy5mbG9hdGluZ0J1dHRvbnMsXG4gICAgICAgICAgICBsYW5nOiB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmxvY2F0ZT8udG9VcHBlckNhc2UoKSxcbiAgICAgICAgICAgIGJ0bkJvb2s6IHsgbGFiZWw6IGhlYWRlckJ1dHRvbnM/LnRleHRzPy5ib29rTm93IH0sXG4gICAgICAgICAgICBzaG9wOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8uc2hvcFxuICAgICAgICAgICAgICAgID8gYGljb24tJHtoZWFkZXJCdXR0b25zPy50ZXh0cz8uc2hvcH1gXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhoZWFkZXJCdXR0b25zPy5saW5rcyksXG4gICAgICAgICAgICBsaW5rTG9nbzoge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rPy5sYWJlbCxcbiAgICAgICAgICAgICAgICB1cmw6IGxpbms/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICBsaW5rVHlwZTogbGluaz8ubGlua1R5cGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWVudTogbWVudT8ubmF2Py5tYXAoXG4gICAgICAgICAgICAgICAgKG1lbnU6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG1lbnU/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IG1lbnU/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiBtZW51Py5saW5rVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBtZW51Py50cmFuc2xhdGlvbnM/LlswXT8ubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbWVudT8udHJhbnNsYXRpb25zPy5bMF0/Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG1lbnU/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogbWVudT8uY2hpbGRyZW4/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hpbGQ6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGNoaWxkPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBjaGlsZD8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6IGNoaWxkPy5saW5rVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBjaGlsZD8udHJhbnNsYXRpb25zPy5bMF0/Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGNoaWxkPy50cmFuc2xhdGlvbnM/LlswXT8ubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2hpbGQ/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IG1lbnU/Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uTWVudUJ1dHRvbklcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBtZW51SW5mbzogdGhpcy5tYXBNZW51KG1lbnUsIHVuZGVmaW5lZCksXG4gICAgICAgIH0gYXNcbiAgICAgICAgICAgIHwgQmFieWxvbkhlYWRlckJvb2tTaG93SVxuICAgICAgICAgICAgfCBCYWJ5bG9uSGVhZGVyQ2xlYXJJXG4gICAgICAgICAgICB8IEJhYnlsb25IZWFkZXJNZW51Q2VudGVySVxuICAgICAgICAgICAgfCBCYWJ5bG9uSGVhZGVyTWVudUxvZ29DZW50ZXJJXG4gICAgICAgICAgICB8IEJhYnlsb25IZWFkZXJNZW51U2hvd0k7XG4gICAgfVxuXG4gICAgLy9UT0RPOiBXYWl0IGZvciBiYWNrIGluZm9cbiAgICBtYXBNZW51KFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBzb2NpYWxNZWRpYTogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbk1lbnVJbmZvSSB7XG4gICAgICAgIGNvbnN0IGxpbmtzID0gVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgIHByb3BzPy5uYXY/Lm1hcCgobGluazogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLmxpbmssXG4gICAgICAgICAgICAgICAgbGFiZWw6IGxpbmsudHJhbnNsYXRpb25zPy5bMF0/Lm5hbWUsXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBjb250YWN0ID0gKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJhdyA9IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5jb250YWN0Py5bMF0pOyAvLyBwLmVqLiBbdW5kZWZpbmVkLCB1bmRlZmluZWRdXG4gICAgICAgICAgICBjb25zdCBsaW5rcyA9IEFycmF5LmlzQXJyYXkocmF3KSA/IHJhdy5maWx0ZXIoQm9vbGVhbikgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIGNvbnN0IHJhd1RpdGxlID1cbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5jb250YWN0VGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5jb250YWN0VGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZT8uY29udGFpbjtcblxuICAgICAgICAgICAgY29uc3QgdGl0bGUgPVxuICAgICAgICAgICAgICAgIHR5cGVvZiByYXdUaXRsZSA9PT0gJ3N0cmluZycgJiYgcmF3VGl0bGUudHJpbSgpLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IHJhd1RpdGxlLnRyaW0oKVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgaWYgKCFsaW5rcz8ubGVuZ3RoICYmICF0aXRsZSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi4obGlua3M/Lmxlbmd0aCA/IHsgbGlua3MgfSA6IHt9KSxcbiAgICAgICAgICAgICAgICAuLi4odGl0bGUgPyB7IHRpdGxlIH0gOiB7fSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KSgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsaW5rczogbGlua3M/LnNsaWNlKDAsIDYpLFxuICAgICAgICAgICAgYm90dG9tTGlua3M6IGxpbmtzPy5zbGljZSg2KSxcbiAgICAgICAgICAgIGFkZHJlc3M6IHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiBwcm9wcz8uYWRkcmVzcz8uWzBdPy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgIGNpdHk6IHByb3BzPy5hZGRyZXNzPy5bMF0/LmNpdHksXG4gICAgICAgICAgICAgICAgY291bnRyeTogcHJvcHM/LmFkZHJlc3M/LlswXT8uY291bnRyeSxcbiAgICAgICAgICAgICAgICBjcDogcHJvcHM/LmFkZHJlc3M/LlswXT8uY3AsXG4gICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgcHJvdmluY2U6IHByb3BzPy5hZGRyZXNzPy5bMF0/LnByb3ZpbmNlLFxuICAgICAgICAgICAgICAgIHVybDogcHJvcHM/LmFkZHJlc3M/LlswXT8ubGluayxcbiAgICAgICAgICAgICAgICBsaW5rczoge1xuICAgICAgICAgICAgICAgICAgICB1cmw6IHByb3BzPy5hZGRyZXNzPy5bMF0/LmxpbmssXG4gICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29udGFjdDogY29udGFjdCxcbiAgICAgICAgICAgIHNvY2lhbE1lZGlhOiBzb2NpYWxNZWRpYT8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgYmFieWxvbi0ke2l0ZW0ubmFtZT8udG9Mb3dlckNhc2UoKX1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtLnVybCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW4/LlswXSA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltZ0JhY2tncm91bmQ6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5iYWNrZ3JvdW5kPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBsaW5rTG9nbzoge1xuICAgICAgICAgICAgICAgIHVybDogcHJvcHM/LmxpbmtzPy5sb2dvTGluaz8uWzBdPy5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgbGlua1R5cGU6IHByb3BzPy5saW5rcz8ubG9nb0xpbms/LlswXT8ubGlua1R5cGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIGNvbnRhY3RUaXRsZTogcHJvcHM/LnRleHRzPy5jb250YWN0VGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBhZGRyZXNzVGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIGNvbnRhY3RUaXRsZTogcHJvcHM/LnRleHRzPy5jb250YWN0VGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgYWRkcmVzc1RpdGxlOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbk1lbnVJbmZvSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvMmltZyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2VcbiAgICApOiBCYWJ5bG9uSW5mbzJpbWdJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJpZ2h0U2lkZTogcmlnaHRTaWRlLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8udGV4dCxcbiAgICAgICAgICAgICAgICBpdGVtMTogcHJvcHM/LnRleHRzPy5pdGVtMSxcbiAgICAgICAgICAgICAgICBpdGVtMVRleHQ6IHByb3BzPy50ZXh0cz8uaXRlbTFUZXh0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1hZ2Vzc21hbGw6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlc3NtYWxsLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYWR2YW50YWdlczogcHJvcHM/LlZlbnRhamFzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmljb259YCxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mbzJpbWdJO1xuICAgIH1cblxuICAgIG1hcEluZm8yY29saW1nKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICByaWdodFNpZGU6IGJvb2xlYW4gPSBmYWxzZVxuICAgICk6IEJhYnlsb25JbmZvMkNvbEltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmlnaHRTaWRlOiByaWdodFNpZGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzbWFsbGltYWdlOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5zbWFsbGltYWdlLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvMkNvbEltZ0k7XG4gICAgfVxuXG4gICAgbWFwWmlnemFnKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICByaWdodFNpZGU6IGJvb2xlYW4gPSBmYWxzZVxuICAgICk6IEJhYnlsb25JbmZvMmltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgaW1hZ2VzOiAoc3RyaW5nIHwgQmFieWxvbkltYWdlSSlbXSB8IHVuZGVmaW5lZCA9IFtdO1xuICAgICAgICBsZXQgdGV4dHMsIHRhZ3M7XG4gICAgICAgIGlmIChwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMpIHtcbiAgICAgICAgICAgIGltYWdlcyA9IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGV4dHMgPSB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICAgICAodHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgIGNvbnRlbnR0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50dGl0bGU/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50dGl0bGUsXG4gICAgICAgICAgICAgICAgY29udGVudHN1YnRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnRzdWJ0aXRsZT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnRzdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICBjb250ZW50ZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudGRlc2NyaXB0aW9uPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudGRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8ubG9nbz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgaWNvbnM6IHByb3BzPy5WZW50YWphcz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtPy50aXRsZSB8fCBpdGVtPy50ZXh0XG4gICAgICAgICAgICAgICAgKT8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgICAgIGljb246IGl0ZW0uaWNvbiA/IGBpY29uLSR7aXRlbS5pY29ufWAgOiAnJyxcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgaWNvblRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/Lmljb250aXRsZT8uY29udGFpbiA/PyBwcm9wcz8udGV4dHM/Lmljb250aXRsZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0YWdzID0ge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjb250ZW50dGl0bGU6IHByb3BzPy50ZXh0cz8uY29udGVudHRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY29udGVudHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRlbnRzdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5jb250ZW50ZGVzY3JpcHRpb24/LnRhZyxcbiAgICAgICAgICAgICAgICBpY29uVGl0bGU6IHByb3BzPy50ZXh0cz8uaWNvbnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByaWdodFNpZGU6IHJpZ2h0U2lkZSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnMuZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0ZXh0cyxcbiAgICAgICAgICAgIGltYWdlcyxcbiAgICAgICAgICAgIHRhZ3MsXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm8yaW1nSTtcbiAgICB9XG5cbiAgICBtYXBHcmlkR2FsbGVyeShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm9JbWdJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgaXNJbkVudW0gPSA8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KFxuICAgICAgICAgICAgZW51bU9iajogVCxcbiAgICAgICAgICAgIHZhbHVlOiBhbnlcbiAgICAgICAgKTogdmFsdWUgaXMgVFtrZXlvZiBUXSA9PiBPYmplY3QudmFsdWVzKGVudW1PYmopLmluY2x1ZGVzKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBob3ZlcjogcHJvcHM/LnRleHRzPy5ob3ZlcixcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgICAgIHZpZXc6IGlzSW5FbnVtKFZpZXdzVHlwZSwgcHJvcHM/Lm11bHRpbWVkaWE/LnZpZXcpXG4gICAgICAgICAgICAgICAgPyBwcm9wcz8ubXVsdGltZWRpYT8udmlld1xuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb0ltZ0k7XG4gICAgfVxuXG4gICAgbWFwSW5mb0dyaWQocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25JbmZvR3JpZEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9ucy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogaXRlbS5idXR0b25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uYnV0dG9ucy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+IGxpbms/LmxpbmtWYWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBpdGVtLmxpbmtzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubGlua3MuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PiBsaW5rPy5saW5rVmFsdWUgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApPy5bMF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkluZm9HcmlkSXRlbUlcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm9HcmlkSTtcbiAgICB9XG5cbiAgICBtYXBCYW5uZXJHYWxsZXJ5KFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkJhbm5lckdhbGxlcnlJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhvdmVyOiBwcm9wcz8udGV4dHM/LmhvdmVyLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMsXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkJhbm5lckdhbGxlcnlJO1xuICAgIH1cblxuICAgIG1hcEJhbm5lck5ld3NsZXR0ZXIoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIGlkZW50aWZpZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25CYW5uZXJOZXdzbGV0dGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgaG92ZXI6IHByb3BzPy50ZXh0cz8uaG92ZXIsXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB9IGFzIEJhYnlsb25CYW5uZXJOZXdzbGV0dGVySTtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXJDb2xsMihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2VcbiAgICApOiBCYWJ5bG9uVG9wU2xpZGVyVjJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHByb3BzXG4gICAgICAgICAgICA/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/IHJvb21zLnNsaWNlKDAsIDUpIDogcm9vbXMsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uUm9vbXNHcmlkSTtcbiAgICB9XG5cbiAgICBtYXBSb29tc1NsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblJvb21zU2xpZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZUNvbnRhaW46IHtcbiAgICAgICAgICAgICAgICAgICAgdGFnOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0aXRsZUNvbnRhaW46IHtcbiAgICAgICAgICAgICAgICAgICAgdGFnOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJvb21zOiBwcm9wcz8ucm9vbXNcbiAgICAgICAgICAgICAgICA/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKHJvb206IGFueSwgaW5kZXg6IG51bWJlciwgc2VsZjogYW55W10pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZpbmRJbmRleCgocikgPT4gci5pZCA9PT0gcm9vbS5pZCkgPT09IGluZGV4XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zPy5zbGljZSgpLnJldmVyc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/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/LnRleHRzPy5zdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRzOiBwcm9wcz8udGV4dHMsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICB0ZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIGlkOiAnbWVuc2FqZScsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRNZXNzYWdlLFxuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dE1lc3NhZ2UpLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0TWVzc2FnZVBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JSZXF1aXJlZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb25kaXRpb25zOiBwcm9wcz8udGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICBjb25kaXRpb25zMjogcHJvcHM/LnRleHRzPy5jb25kaXRpb25zMixcbiAgICAgICAgICAgIGRyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uZHJvcGRvd25UaXRsZSxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBuZFByb3BzQ29uc3VsdD8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdWx0VHlwZUlkOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wLmNvbnN1bHRfdHlwZV9pZCA/PyBwcm9wLmNvbnN1bHRUeXBlSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogcHJvcC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcm9wLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uZHJvcGRvd25QbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclJlcXVpcmVkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhvdGVsRHJvcDpcbiAgICAgICAgICAgICAgICBwcm9wcz8uaG90ZWxzPy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5ob3RlbERyb3BUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBwcm9wLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcm9wLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaG90ZWxEcm9wUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yUmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSBhcyBzdHJpbmcsXG4gICAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAnbm9tYnJlJyxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXROYW1lLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXROYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXROYW1lUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogJ3N1cm5hbWUnLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRTdXJuYW1lcyA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dGxhc3RuYW1lLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dFN1cm5hbWVzID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dGxhc3RuYW1lXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dFN1cm5hbWVzUGxhY2VIb2xkZXIgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRsYXN0bmFtZVBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JSZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/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/LnBob25lLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSBhcyAoeyBzbWFsbFRleHQ/OiBzdHJpbmcgfSAmIEJhYnlsb25CdXR0b25JKVtdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcENvbnRhY3RNYXAocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Db250YWN0TWFwYUkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29udGVudFVybDogcHJvcHM/LnRleHRzPy5waG9uZUljb24sXG4gICAgICAgICAgICBtYXBJbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBtYXBJbWFnZU1vYmlsZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzbW9iaWxlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkNvbnRhY3RNYXBhSTtcbiAgICB9XG5cbiAgICBtYXBDb250YWN0SG93KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQ29udGFjdEhvd0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uVmVudGFqYXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmljb259YCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkNvbnRhY3RNYXBJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25Db250YWN0SG93STtcbiAgICB9XG5cbiAgICBtYXBXZWJtYXAocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25XZWJtYXBJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxpbmtzOiAoXG4gICAgICAgICAgICAgICAgcHJvcHM/LnBhZ2VzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBsaW5rLnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2ludGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICAgICAgKSBhcyBCYWJ5bG9uQnV0dG9uSVtdXG4gICAgICAgICAgICApLmZpbHRlcihcbiAgICAgICAgICAgICAgICAobGluaykgPT5cbiAgICAgICAgICAgICAgICAgICAgbGluay51cmw/LnNwbGl0KCcvJylbMV0gPT09XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8ubG9jYXRlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSBhcyBzdHJpbmcsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBMZWdhbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkxlZ2FsSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbnRhaW4sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/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/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgIH0gYXMgQmFieWxvbkZlYXR1cmVzU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBCYW5uZXJJbmZvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQmFubmVySW5mb0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy50aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8ucHJldGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgdmlkZW86IHByb3BzPy50ZXh0cz8uWydWaWRlby1saW5rJ10sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25CYW5uZXJJbmZvSTtcbiAgICB9XG5cbiAgICBtYXBSb29tRGV0YWlsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uUm9vbURldGFpbEkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXByb3BzPy5yb29tKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIG11bHRpbWVkaWEsIGJ1dHRvbnMgfSA9IHByb3BzPy5yb29tO1xuICAgICAgICBsZXQgZGV0YWlsQnV0dG9ucyA9IHByb3BzLmJ1dHRvbnM/Lmxlbmd0aCA/IHByb3BzLmJ1dHRvbnMgOiBidXR0b25zO1xuICAgICAgICBpZiAoYnV0dG9ucy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBkZXRhaWxCdXR0b25zID0gW2J1dHRvbnNbMV1dO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICB0ZXh0cz8uYWRkaXRpb25hbDQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgIHRleHRzPy5hZGRpdGlvbmFsNCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIHRleHRzPy5hZGRpdGlvbmFsNCAhPT0gJydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8uYWRkaXRpb25hbDRcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgZXF1aXBtZW50VGl0bGU6IHRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhkZXRhaWxCdXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5yb29tPy5zZXJ2aWNlc1xuICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0/LnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8uc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodjogc3RyaW5nKSA9PiB2LnRyaW0oKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhSb29tU2VydmljZVR5cGUuRXF1aXBtZW50KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0/LmNsYXNzfWAsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB9KSkgYXMgQmFieWxvbkVxdWlwbWVudEl0ZW1bXSxcbiAgICAgICAgICAgIHNob3dMZXNzOiBwcm9wcz8udGV4dHM/LnNob3dMZXNzLFxuICAgICAgICAgICAgc2hvd01vcmU6IHByb3BzPy50ZXh0cz8uc2hvd01vcmUsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJvb21UZXh0czogdGV4dHMsXG4gICAgICAgIH0gYXMgQmFieWxvblJvb21EZXRhaWxJO1xuICAgIH1cblxuICAgIG1hcFRvcFNsaWRlclRodW1icyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblRvcFNsaWRlclRodW1ic0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBmcm9tOiBwcm9wcz8udGV4dHM/LmZyb20sXG4gICAgICAgICAgICBwcmljZTogcHJvcHM/LnRleHRzPy5wcmljZSxcbiAgICAgICAgICAgIGN1cnJlbmN5OiBwcm9wcz8udGV4dHM/LmN1cnJlbmN5LFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgaW1hZ2U6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW4/Lm1hcCgoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT4gKHtcbiAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0pLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIEJhYnlsb25Ub3BTbGlkZXJUaHVtYnNJO1xuICAgIH1cblxuICAgIG1hcFJvb21zTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblJvb21zTGlzdEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3RGaWx0ZXJzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBuZEZpbHRlcnM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/LnJvb21zXG4gICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZHJvb21GaWx0ZXJJZDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJpc3RpY3NGaWx0ZXJJZDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucz8uc2xpY2UoKS5yZXZlcnNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0/LnByaWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlVGV4dDogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVxdWlwbWVudDogaXRlbT8uc2VydmljZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKCh2OiBzdHJpbmcpID0+IHYudHJpbSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9vbVNlcnZpY2VUeXBlLmNoYXJhY3RlcmlzdGljc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmNsYXNzfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblJvb21zTGlzdEVxdWlwbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubXVsdGltZWRpYT8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbWc6IGFueSkgPT4gaW1nPy5jb3ZlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHx8IGl0ZW0/Lm11bHRpbWVkaWE/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5tdWx0aW1lZGlhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGl0ZW0/Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblJvb21zTGlzdEl0ZW1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnNvcnQoKGE6IEJhYnlsb25Sb29tc0xpc3RJdGVtLCBiOiBCYWJ5bG9uUm9vbXNMaXN0SXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGEub3JkZXIgPz8gMCkgLSAoYi5vcmRlciA/PyAwKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uUm9vbXNDb2xzSTtcbiAgICB9XG5cbiAgICBtYXBDb21pbmdTb29uKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQ29taW5nU29vbkkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW1hZ2VzOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSW1hZ2VJXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbG9nbzogcHJvcHM/Lm11bHRpbWVkaWE/LmxvZ28/Lm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSW1hZ2VJXG4gICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgdGV4dHM6IHByb3BzPy50ZXh0cyxcbiAgICAgICAgICAgIHNvY2lhbE1lZGlhOiBwcm9wcz8uc29jaWFsTWVkaWEsXG4gICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcyk/LlswXSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQ29taW5nU29vbkk7XG4gICAgfVxuXG4gICAgbWFwT2ZmZXJEZXRhaWwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25PZmZlckRldGFpbEkge1xuICAgICAgICBjb25zdCBvZmZlciA9IHByb3BzPy5vZmZlcj8uWzBdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6IG9mZmVyPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogb2ZmZXI/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBvZmZlcj8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgbmRUaXRsZTogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgIGxhYmVsRGlzY291bnQ6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICBsYWJlbEZyb206IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICBjdXJyZW5jeTogb2ZmZXI/LmN1cnJlbmN5LFxuICAgICAgICAgICAgcHJpY2U6IG9mZmVyPy5wcmljZSxcbiAgICAgICAgICAgIGRpc2NvdW50OiBvZmZlcj8uZGlzY291bnQsXG4gICAgICAgICAgICBjb25kaXRpb25zOiBvZmZlcj8udGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUob2ZmZXI/Lm11bHRpbWVkaWE/LlswXSwgZmFsc2UpLFxuICAgICAgICAgICAgbXVsdGltZWRpYTogdGhpcy5tYXBJbWFnZXMob2ZmZXI/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3MpPy5bMF0sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMob2ZmZXI/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBzZXJ2aWNlczogdGhpcy5tYXBHbG9iYWxTZXJ2aWNlcyhvZmZlcj8uc2VydmljZXMpLFxuICAgICAgICB9IGFzIEJhYnlsb25PZmZlckRldGFpbEk7XG4gICAgfVxuXG4gICAgbWFwT2ZmZXJzTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbk9mZmVyc0xpc3RJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm9mZmVycz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogaXRlbT8uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtPy5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5OiBpdGVtPy5jdXJyZW5jeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2NvdW50OiBpdGVtPy5kaXNjb3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ6IGl0ZW0/Lm11bHRpbWVkaWE/LlswXT8uYWx0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVCdXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlZU9mZmVyQnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxGcm9tOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbERpc2NvdW50OiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBob21lOiBpdGVtPy5zaXRlcz8uWzBdPy5ob21lLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9wdXA6IGl0ZW0/LnNpdGVzPy5bMF0/LnBvcHVwLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uT2ZmZXJzTGlzdEl0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBwbGFjZWhvbGRlckltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbk9mZmVyc0xpc3RJO1xuICAgIH1cblxuICAgIG1hcEZhcShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkZhcUkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5sb2NhdGlvbkhvd1xuICAgICAgICAgICAgICAgID8gcHJvcHM/LmxvY2F0aW9uSG93Py5pdGVtcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChmYXE6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBmYXEudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZmFxLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSXRlbUlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IHByb3BzPy5pdGVtcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChmYXE6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBmYXEudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZmFxLnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JdGVtSVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltZzogcHJvcHM/LmxvY2F0aW9uTWFwXG4gICAgICAgICAgICAgICAgPyB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubG9jYXRpb25NYXA/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25GYXFJO1xuICAgIH1cblxuICAgIG1hcFN0YXRpY0Zvb3Rlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblN0YXRpY0Zvb3Rlckkge1xuICAgICAgICAvLyBGdW5jaW9uIHRlbXBvcmFsIGhhc3RhIHF1ZSBlbCBiYWNrIGRldnVlbHZhIGxhIGxpc3RhIGRlIGhvdGVsZXNcbiAgICAgICAgY29uc3QgZHluYW1pY0hvdGVsc0FkcmVzc2VzID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWRkcmVzc2VzTWFwOiB7IFtrZXk6IHN0cmluZ106IFBhcnRpYWw8QmFieWxvbkFkZHJlc3NJdGVtPiB9ID1cbiAgICAgICAgICAgICAgICB7fTtcbiAgICAgICAgICAgIGlmICghcHJvcHM/LnRleHRzKSByZXR1cm47XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhwcm9wcz8udGV4dHMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChrZXkuc3RhcnRzV2l0aCgnYWRkcmVzc2xpc3QnKSAmJiBwcm9wcz8udGV4dHNba2V5XSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IGtleS5tYXRjaCgvYWRkcmVzc2xpc3QoXFxkKykoLiopLyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBtYXRjaFsxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gbWF0Y2hbMl07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYWRkcmVzc2VzTWFwW2luZGV4XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3Nlc01hcFtpbmRleF0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBwYXJzZUludChpbmRleCwgMTApLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcHJvcHM/LnRleHRzW2tleV07XG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnVGl0bGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzZXNNYXBbaW5kZXhdLm5hbWUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnQWRkcmVzcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3Nlc01hcFtpbmRleF0uYWRkcmVzcyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzZXNNYXBbaW5kZXhdLmZ1bGxfYWRkcmVzcyA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdUZWxmJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZHJlc3Nlc01hcFtpbmRleF0gYXMgYW55KS5waG9uZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoYWRkcmVzc2VzTWFwKSBhcyBCYWJ5bG9uQWRkcmVzc0l0ZW1bXTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/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/LmNvbnRhY3RMaW5rcz8uWzBdKSxcbiAgICAgICAgICAgIGZvb3RlckxpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uZm9vdGVyTGlua3M/LlswXSksXG4gICAgICAgICAgICBhZGRyZXNzOiBBcnJheS5pc0FycmF5KHByb3BzPy5hZGRyZXNzKVxuICAgICAgICAgICAgICAgID8gcHJvcHM/LmFkZHJlc3MubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChhZGRyZXNzOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogYWRkcmVzcy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGFkZHJlc3MubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6IGFkZHJlc3MuYWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IGFkZHJlc3MuY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpbmNlOiBhZGRyZXNzLnByb3ZpbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeTogYWRkcmVzcy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3A6IGFkZHJlc3MuY3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGFkZHJlc3MubGluayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxfYWRkcmVzczogYWRkcmVzcy5mdWxsQWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkFkZHJlc3NJdGVtXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgICAgIGFkZHJlc3NIb3RlbHM6XG4gICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShwcm9wcz8uYWRkcmVzc0hvdGVscykgJiZcbiAgICAgICAgICAgICAgICBwcm9wcz8uYWRkcmVzc0hvdGVscy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LmFkZHJlc3NIb3RlbHMubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkcmVzczogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogYWRkcmVzcy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBhZGRyZXNzLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogYWRkcmVzcy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IGFkZHJlc3MuY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aW5jZTogYWRkcmVzcy5wcm92aW5jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5OiBhZGRyZXNzLmNvdW50cnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3A6IGFkZHJlc3MuY3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhZGRyZXNzLmxpbmssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmU6IGFkZHJlc3MucGhvbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw6IGFkZHJlc3MuZW1haWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbF9hZGRyZXNzOiBhZGRyZXNzLmZ1bGxBZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkFkZHJlc3NJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICA6ICgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGR5bmFtaWNBZGRyZXNzZXMgPSBkeW5hbWljSG90ZWxzQWRyZXNzZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGR5bmFtaWNBZGRyZXNzZXMgJiYgZHluYW1pY0FkZHJlc3Nlcy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGR5bmFtaWNBZGRyZXNzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgIH0pKCksXG4gICAgICAgICAgICBzb2NpYWxNZWRpYTogcHJvcHM/LnNvY2lhbE1lZGlhPy5tYXAoXG4gICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBiYWJ5bG9uLSR7bGluay5uYW1lPy50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGxpbmsudXJsLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvcHlyaWdodDpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5jb3B5cmlnaHQgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5jb3B5cmlnaHRcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmNvcHlyaWdodD8uY29udGFpbixcbiAgICAgICAgICAgIG5hdjogcHJvcHM/Lm5hdj8ubWFwKFxuICAgICAgICAgICAgICAgIChuYXY6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBuYXYubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbmF2LnVybCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYmFja2dyb3VuZD8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBhbHQ6IHByb3BzPy5tdWx0aW1lZGlhPy5iYWNrZ3JvdW5kPy50aXRsZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8ubG9nbz8uWzBdLCBmYWxzZSksXG4gICAgICAgICAgICAvLyBpbnB1dDogcHJvcHM/LnRleHRzPy5uZXdzbGV0dGVyRGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6ICduZXdzbGV0dGVyJyxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dEhvbGRlcixcbiAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8ubmV3c0Vycm9yRW1haWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGVnYWxBZHZpc2U6IHByb3BzPy50ZXh0cz8uc3Vic2NyaWJlcixcbiAgICAgICAgICAgIGFkZGl0aW9uYWxMaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICBwcm9wcz8ubGlua3M/LmFkZGl0aW9uYWxGb290ZXJMaW5rc1swXT8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+ICEhYnRuPy5sYWJlbFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvblN0YXRpY0Zvb3Rlckk7XG4gICAgfVxuXG4gICAgbWFwR2FsbGVyeShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkdhbGxlcnlJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJvb21zQnRuOiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzPy50ZXh0cz8uZmlsdGVyUm9vbXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmlsdGVyc0J0bjoge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcz8udGV4dHM/LmZpbHRlckNhdGVnb3JpZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmlsdGVyczogcHJvcHM/LmZpbHRlcnM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsOiBpdGVtLmFsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb206IGl0ZW0ucm9vbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb21zOiBpdGVtLnJvb21zLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uR2FsbGVyeUZpbHRlclxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltYWdlczogcHJvcHM/LmZpbHRlcnNcbiAgICAgICAgICAgICAgICA/LnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgYWNjOiB7IG11bHRpbWVkaWE6IGFueVtdOyBmaWx0ZXJJbmRleDogbnVtYmVyIH1bXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVySW5kZXg6IG51bWJlclxuICAgICAgICAgICAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIubXVsdGltZWRpYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG11bHRpbWVkaWFXaXRoRmlsdGVyID0gZmlsdGVyLm11bHRpbWVkaWEubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZmlsdGVySW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE6IG11bHRpbWVkaWFXaXRoRmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVySW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5mbGF0TWFwKCh7IG11bHRpbWVkaWEgfTogYW55KSA9PiBtdWx0aW1lZGlhKVxuICAgICAgICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZywgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogaW1nPy5maWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uR2FsbGVyeUl0ZW1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25HYWxsZXJ5STtcbiAgICB9XG5cbiAgICBtYXBMYW5ndWFnZU1vZGFsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uTGFuZ3VhZ2VNb2RhbEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubGFuZ3VhZ2VzLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IHByb3BzPy5sYW5ndWFnZXM/LmZpbmQoXG4gICAgICAgICAgICAgICAgKGxuZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICBsbmcuaWQgPT09IHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8uaWRcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkxhbmd1YWdlTW9kYWxJO1xuICAgIH1cblxuICAgIG1hcEVuZ2luZShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkVuZ2luZUkgfCBCYWJ5bG9uRW5naW5lTW9kYWxJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG9ubHlBZHVsdHM6IHByb3BzPy5vbmx5QWR1bHRzLFxuICAgICAgICAgICAgZGVmYXVsdEJ1dHRvbjogcHJvcHM/LmRlZmF1bHRJbnRlcm5hbEJ1dHRvbixcbiAgICAgICAgICAgIGJ1dHRvbjogeyBsYWJlbDogcHJvcHM/LnRleHRzPy5tb3RvclN1Ym1pdCwgdXJsOiBwcm9wcz8udXJsIH0sXG4gICAgICAgICAgICBkYXRlcGlja2VyRGF0YToge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm1vdG9yRGF0ZVRpdGxlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGd1ZXN0c0lucHV0OiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubW90b3JHdWVzdHNJbnB1dEhvbGRlcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcm9tb0lucHV0OiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubW90b3JQcm9tb0hvbGRlcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBndWVzdHM6IHtcbiAgICAgICAgICAgICAgICBidG46IHsgbGFiZWw6IHByb3BzPy50ZXh0cz8ubW90b3JBcHBseSB9LFxuICAgICAgICAgICAgICAgIGFkdWx0c0Ryb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yQWR1bHRzVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhwcm9wcz8ubWF4QWR1bHRzLCAxKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGtpZHNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvcktpZHNUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgc21hbGxUaXRsZTogcHJvcHM/LnRleHRzPy5tb3RvcktpZHNTbWFsbExhYmVsLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLmdlbmVyYXRlQWdlc09wdGlvbnMocHJvcHM/Lm1heENoaWxkcmVuKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJhYmllc0Ryb3Bkb3duOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubWF4QmFiaWVzID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckJhYmllc1RpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxUaXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckJhYmllc1NtYWxsVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLmdlbmVyYXRlQWdlc09wdGlvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm1heEJhYmllc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgYWdlc0Ryb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tYXhBZ2VDaGlsZHJlbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tYXhBZ2VCYWJpZXMgKyAxXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBhZ2VzTGFiZWw6IHByb3BzPy50ZXh0cz8ubW90b3JBZ2VzVGl0bGUsXG4gICAgICAgICAgICAgICAga2lkc0xhYmVsOiBwcm9wcz8udGV4dHM/Lm1vdG9yS2lkTGFiZWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JUaXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yU3VidGl0bGUsXG4gICAgICAgICAgICB1cmw6IHByb3BzPy51cmwsXG4gICAgICAgICAgICBob3RlbDogcHJvcHM/LmhvdGVscz8uWzBdLFxuICAgICAgICAgICAgY29kaWdvOiBwcm9wcz8uY29kaWdvID8gcHJvcHM/LmNvZGlnbyA6ICdkZW1vX2MydF9jbGllbnRlcycsIC8vdG8gY2hhbmdlLCBkb250IGNvbWUgZnJvbSBiYWNrXG4gICAgICAgICAgICBnbFZhbHVlOiBwcm9wcz8uZ2xWYWx1ZSxcbiAgICAgICAgICAgIGhvdGVsc0lucHV0OiBwcm9wcz8udGV4dHM/Lm1vdG9yRHJvcERvd25OYW1lLFxuICAgICAgICAgICAgaG90ZWxzUGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubW90b3JEcm9wRG93bkhvbGRlcixcbiAgICAgICAgICAgIGhvdGVsczoge1xuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5ob3RlbHM/Lm1hcCgoaG90ZWw6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogaG90ZWw/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHRpY2tlcjogaG90ZWw/LnRpY2tlcixcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBob3RlbD8udXJsLFxuICAgICAgICAgICAgICAgICAgICBpZDogaG90ZWw/LmlkLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbkVuZ2luZU1vZGFsSSB8IEJhYnlsb25FbmdpbmVJO1xuICAgIH1cbiAgICBtYXBTbGlkZXIzSXRlbXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25TbGlkZXIzSXRlbXNJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtLnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25TbGlkZXJJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25TbGlkZXIzSXRlbXNJO1xuICAgIH1cblxuICAgIG1hcEhvdGVsc1NsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkhvdGVsc1NsaWRlckkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIGhvdGVsczogcHJvcHM/LmhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbS5tdWx0aW1lZGlhPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogaXRlbS5tdWx0aW1lZGlhPy5bMF0/LmFsdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25TbGlkZXJJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25Ib3RlbHNTbGlkZXJJO1xuICAgIH1cblxuICAgIG1hcEhvdGVsc0xpc3QocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Ib3RlbHNMaXN0SSB7XG4gICAgICAgIC8vIFRPRE86IFJldmlzYXIgbWFwcGVvIGRlIGltw6FnZW5lc1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIGhvdGVsczogcHJvcHM/LmhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbT8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dE1vcmU6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ6IGl0ZW0/Lm11bHRpbWVkaWE/LlswXT8uYWx0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0/LnByaWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZlRpdGxlOiBwcm9wcz8udGV4dHM/LmZvb3RlclRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZlN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LmZvb3RlclByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZXM6IGl0ZW0/LnNlcnZpY2VzTGlzdD8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0/LmNsYXNzfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICAgICAgICBidG5MZXNzOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgICAgICBidG5Nb3JlOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDQsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25TbGlkZXJJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25Ib3RlbHNMaXN0STtcbiAgICB9XG5cbiAgICBtYXBJbmZvNEltZyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm80aW1nSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGltYWdlMTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1hZ2UyOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXNbMV0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZTM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lc1syXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltYWdlNDogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzWzNdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvNGltZ0k7XG4gICAgfVxuXG4gICAgbWFwU2VydmljZXNTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25TZXJ2aWNlc1NsaWRlckkge1xuICAgICAgICBjb25zdCBhZHZlbnQgPSBwcm9wcz8uc2VydmljZXNTZXJ2aWNlID8/IHByb3BzPy5WZW50YWphcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFkdmFudGFnZXM6IGFkdmVudD8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0ubmFtZSA/PyBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uY2xhc3MgPz8gaXRlbS5pY29ufWAsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgQmFieWxvblNlcnZpY2VzU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBBZHZhbnRhZ2VzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQWR2YW50YWdlc0kge1xuICAgICAgICBjb25zdCB2ZW50YWphcyA9IHByb3BzPy5WZW50YWphcyA/PyBwcm9wcz8ubGlzdHMgPz8gcHJvcHM/Lkxpc3RzO1xuICAgICAgICBjb25zdCBhZHYgPSB2ZW50YWphcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgIH0pKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgYWR2YW50YWdlczogYWR2LFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlZU1vcmU6IHByb3BzPy50ZXh0cz8uYWR2YW50YWdlc3NlZW1vcmUsXG4gICAgICAgICAgICBzZWVMZXNzOiBwcm9wcz8udGV4dHM/LmFkdmFudGFnZXNzZWVsZXNzLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5hZHZhbnRhZ2VzaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQWR2YW50YWdlc0k7XG4gICAgfVxuXG4gICAgbWFwSW5mb0JpZyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm9CaWdJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8ucHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LnRpdGxlLFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5idXR0b25zXG4gICAgICAgICAgICApPy5bMF0sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1nU21hbGw6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzFdID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5uZGltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm9CaWdJO1xuICAgIH1cblxuICAgIG1hcEluZm9aaWdaYWdWMihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm9aaWd6YWdWMkkge1xuICAgICAgICBjb25zdCBbaW1hZ2VdID1cbiAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZSB8fCBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMgfHwgW107XG4gICAgICAgIGNvbnN0IFtpbWFnZTJdID1cbiAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZTIgfHwgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlc3NtYWxsIHx8IFtdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaW1hZ2U/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/LnRleHQsXG4gICAgICAgICAgICBsaW5rczogZmlsdGVyZWRMaW5rcy5tYXAoKGxpbms6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpY29uOiBgYmFieWxvbi0ke2xpbmsubmFtZT8udG9Mb3dlckNhc2UoKX1gLFxuICAgICAgICAgICAgICAgIHVybDogbGluay51cmwsXG4gICAgICAgICAgICAgICAgbGFiZWw6IGxpbmsubmFtZSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uRm9vdGVyU29jaWFsSTtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXIyaXRlbXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25TbGlkZXIyaXRlbXNJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBpdGVtczogcHJvcHMuaG90ZWxzXG4gICAgICAgICAgICAgICAgPyBwcm9wcz8uaG90ZWxzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8uY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0OiBpdGVtPy5tdWx0aW1lZGlhPy5bMF0/LmFsdCxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgc2VydmljZXM6IGl0ZW0/LnNlcnZpY2VzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uY2xhc3N9YCxcbiAgICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICA6IHByb3BzPy5yb29tcz8ubWFwKChpdGVtOiBhbnkpID0+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+IGJ0bj8ubGlua1ZhbHVlICE9PSBudWxsKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0Py50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpID8/XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD8udGV4dGNvbG9yLFxuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpID8/IGNvbXBvbmVudD8udGV4dGNvbG9yLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb2xvcj8udHJpbSgpID8/XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD8udGV4dGNvbG9yLFxuICAgICAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8uY29sb3I/LnRyaW0oKSA/P1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ/LnRleHRjb2xvcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbkhlYWRJbnRyb0k7XG4gICAgfVxuXG4gICAgbWFwRXh0ZXJuYWxTY3JpcHQoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uRXh0ZXJuYWxTY3JpcHRJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNjcmlwdDogcHJvcHM/LnRleHRzPy5Db250YWluZXIsXG4gICAgICAgICAgICBtc2dfbG9hZGluZzogcHJvcHM/LnRleHRzPy5sb2FkaW5nID8/ICdDYXJnYW5kby4uLicsXG4gICAgICAgIH0gYXMgQmFieWxvbkV4dGVybmFsU2NyaXB0STtcbiAgICB9XG5cbiAgICBtYXBCbG9nTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkJsb2dMaXN0SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBwb3N0cyA9IHByb3BzPy5ibG9nPy5wb3N0cz8ubWFwKChwb3N0OiBhbnkpID0+ICh7XG4gICAgICAgICAgICBpZDogcG9zdD8uaWQsXG4gICAgICAgICAgICB0aXRsZTogcG9zdD8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHBvc3Q/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwb3N0Py50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBhZGRpdGlvbmFsMTogcG9zdD8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwb3N0Py5tdWx0aW1lZGlhPy5bMF0sIGZhbHNlKSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocG9zdD8uYnV0dG9ucyksXG4gICAgICAgICAgICBwb3N0VXJsOiBVdGlscy5tYXBCdXR0b25zKHBvc3Q/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBjYXRlZ29yeTogcG9zdD8uY2F0ZWdvcnksXG4gICAgICAgICAgICBkYXRlOiBwb3N0Py5kYXRlID8gbmV3IERhdGUocG9zdC5kYXRlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGFjdGl2ZTogcG9zdD8uYWN0aXZlLFxuICAgICAgICB9KSk7XG5cbiAgICAgICAgcG9zdHMgPSBwb3N0cy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKGEuZGF0ZSAmJiBiLmRhdGUpIHJldHVybiBiLmRhdGUgLSBhLmRhdGU7IC8vIGFtYm9zIGNvbiBmZWNoYVxuICAgICAgICAgICAgaWYgKGEuZGF0ZSAmJiAhYi5kYXRlKSByZXR1cm4gLTE7IC8vIGEgdGllbmUgZmVjaGEsIGIgbm9cbiAgICAgICAgICAgIGlmICghYS5kYXRlICYmIGIuZGF0ZSkgcmV0dXJuIDE7IC8vIGIgdGllbmUgZmVjaGEsIGEgbm9cbiAgICAgICAgICAgIHJldHVybiAwOyAvLyBuaW5ndW5vIHRpZW5lIGZlY2hhXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIE9idGVuZXIgbG9zIDQgcG9zdHMgbcOhcyByZWNpZW50ZXNcbiAgICAgICAgcG9zdHMgPVxuICAgICAgICAgICAgcG9zdHM/LmZpbHRlcigocG9zdDogeyBhY3RpdmU6IGJvb2xlYW4gfSkgPT4gcG9zdC5hY3RpdmUpID8/XG4gICAgICAgICAgICBwb3N0cyA/P1xuICAgICAgICAgICAgW107XG5cbiAgICAgICAgY29uc3QgbGF0ZXN0UG9zdHMgPSBwb3N0cz8uc2xpY2UoMCwgNCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy50YWcsXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWFyY2hQbGFjZUhvbGRlcjogcHJvcHM/LnRleHRzPy5zZWFyY2hQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIG5vdGZvdW5kVGV4dDogcHJvcHM/LnRleHRzPy5zZWFyY2hOb3RGb3VuZCxcbiAgICAgICAgICAgIHBvc3RzOiBwb3N0cyxcbiAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllc1xuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8uY29udGFpbixcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IHByb3BzPy5wb3N0Q2F0ZWdvcmllcz8ubWFwKChjYXRlZ29yeTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGlkOiBjYXRlZ29yeT8uaWQsXG4gICAgICAgICAgICAgICAgdGl0bGU6IGNhdGVnb3J5Py5uYW1lLFxuICAgICAgICAgICAgICAgIHBvc3RzOiBjYXRlZ29yeT8udG90YWxQb3N0cyxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXNcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LmNvbnRhaW4sXG4gICAgICAgICAgICBsYXRlc3RQb3N0czogbGF0ZXN0UG9zdHMsXG4gICAgICAgICAgICBhbnRlcmlvcjogcHJvcHM/LnRleHRzPy5hbnRlcmlvcixcbiAgICAgICAgICAgIHNpZ3VpZW50ZTogcHJvcHM/LnRleHRzPy5zaWd1aWVudGUsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbWFwQmxvZ0RldGFpbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkJsb2dEZXRhaWxzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQb3N0SWQgPSBwcm9wcz8ucG9zdD8uaWQ7XG4gICAgICAgIGNvbnN0IHBvc3RzID0gcHJvcHM/LnJlbGF0ZWRQb3N0cz8ubWFwKChwb3N0OiBhbnkpID0+ICh7XG4gICAgICAgICAgICBpZDogcG9zdD8uaWQsXG4gICAgICAgICAgICB0aXRsZTogcG9zdD8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHBvc3Q/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwb3N0Py50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHBvc3Q/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHBvc3Q/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgcG9zdFVybDogVXRpbHMubWFwQnV0dG9ucyhwb3N0Py5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IHBvc3Q/LmNhdGVnb3J5LFxuICAgICAgICAgICAgZGF0ZTogcG9zdD8uZGF0ZSA/IG5ldyBEYXRlKHBvc3QuZGF0ZSkgOiB1bmRlZmluZWQsXG4gICAgICAgIH0pKTtcblxuICAgICAgICBjb25zdCBjYW5kaWRhdGVzID0gKHBvc3RzIHx8IFtdKS5maWx0ZXIoXG4gICAgICAgICAgICAocDogYW55KSA9PiBwPy5pZCAhPT0gY3VycmVudFBvc3RJZFxuICAgICAgICApO1xuXG4gICAgICAgIGxldCByZWxhdGVkUG9zdHNDb25zdCA9XG4gICAgICAgICAgICBjYW5kaWRhdGVzXG4gICAgICAgICAgICAgICAgLmZpbHRlcigocDogYW55KSA9PiBwPy5kYXRlKVxuICAgICAgICAgICAgICAgIC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gKGIuZGF0ZSBhcyBhbnkpIC0gKGEuZGF0ZSBhcyBhbnkpKVxuICAgICAgICAgICAgICAgIC5zbGljZSgwLCA0KSB8fCBbXTtcbiAgICAgICAgaWYgKHJlbGF0ZWRQb3N0c0NvbnN0Lmxlbmd0aCA8IDQpIHtcbiAgICAgICAgICAgIGNvbnN0IHdpdGhvdXREYXRlID0gY2FuZGlkYXRlcy5maWx0ZXIoKHA6IGFueSkgPT4gIXA/LmRhdGUpO1xuICAgICAgICAgICAgcmVsYXRlZFBvc3RzQ29uc3QgPSByZWxhdGVkUG9zdHNDb25zdC5jb25jYXQoXG4gICAgICAgICAgICAgICAgd2l0aG91dERhdGUuc2xpY2UoMCwgNCAtIHJlbGF0ZWRQb3N0c0NvbnN0Lmxlbmd0aClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy5wb3N0Py50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnBvc3Q/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8ucG9zdD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYWRkaXRpb25hbDE6IHByb3BzPy5wb3N0Py50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICBhZGRpdGlvbmFsMjogcHJvcHM/LnBvc3Q/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBwcm9wcz8ucG9zdD8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgYWRkaXRpb25hbDQ6IHByb3BzPy5wb3N0Py50ZXh0cz8uYWRkaXRpb25hbDQsXG4gICAgICAgICAgICBkYXRlOiBwcm9wcz8ucG9zdD8uZGF0ZSA/IG5ldyBEYXRlKHByb3BzPy5wb3N0Py5kYXRlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGNhdGVnb3J5OiBwcm9wcz8ucG9zdD8uY2F0ZWdvcnksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy50YWcsXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWFyY2hQbGFjZUhvbGRlcjogcHJvcHM/LnRleHRzPy5zZWFyY2hQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllc1xuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8uY29udGFpbixcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IHByb3BzPy5wb3N0Q2F0ZWdvcmllcz8ubWFwKChjYXRlZ29yeTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGlkOiBjYXRlZ29yeT8uaWQsXG4gICAgICAgICAgICAgICAgdGl0bGU6IGNhdGVnb3J5Py5uYW1lLFxuICAgICAgICAgICAgICAgIHBvc3RzOiBjYXRlZ29yeT8udG90YWxQb3N0cyxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHJlbGF0ZWRQb3N0c1RpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb250YWluLFxuICAgICAgICAgICAgcmVsYXRlZFBvc3RzOiByZWxhdGVkUG9zdHNDb25zdCxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIHNoYXJlOiBwcm9wcz8udGV4dHM/LnNoYXJlLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ucG9zdD8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQmxvZ0RldGFpbHNJO1xuICAgIH1cblxuICAgIG1hcE1vZGFsTXVsdGlwbGVNb3RvcnMoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uTW9kYWxNdWx0aXBsZU1vdG9yc0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbG9nbzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICBwcm9wcz8ubGlua3NcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8ubGlua3M/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4/LmxpbmtWYWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8uYnV0dG9ucz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+IGJ0bj8ubGlua1ZhbHVlICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uTW9kYWxNdWx0aXBsZU1vdG9yc0k7XG4gICAgfVxuICAgIG1hcE9mZmVyQmFubmVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uT2ZmZXJQb3B1cEkgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgb2ZmZXJEYXRhO1xuICAgICAgICBpZiAocHJvcHM/Lm9mZmVycz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3Qgb2ZmZXIgPSBwcm9wcz8ub2ZmZXJzPy5bMF07XG4gICAgICAgICAgICBvZmZlckRhdGEgPSB7XG4gICAgICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG9mZmVyPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBvZmZlcj8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogb2ZmZXI/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDE6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMzogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDQ6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMob2ZmZXI/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICBvZmZlcj8ubXVsdGltZWRpYT8ubGVuZ3RoID4gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAob2ZmZXI/Lm11bHRpbWVkaWE/LmZpbmQoKGltZzogYW55KSA9PiBpbWcuY292ZXIpID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZlcj8ubXVsdGltZWRpYT8uWzBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAob2ZmZXI/Lm11bHRpbWVkaWE/LlswXSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmRlZmF1bHRpbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxCdXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9ucz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4/LmxpbmtWYWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0gYXMgQmFieWxvbk9mZmVyUG9wdXBJO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZmZlckRhdGEgPz8gb2ZmZXJEYXRhO1xuICAgIH1cblxuICAgIG1hcE1vZGFsUG9wdXAocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Nb2RhbFBvcHVwSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRIb2xkZXIsXG4gICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgob3B0aW9uOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IG9wdGlvbj8udGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG9wdGlvbj8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgdGl0bGU6IG9wdGlvbj8udGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG9wdGlvbj8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG9wdGlvbiwgZmFsc2UpLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5tb2RhbGltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbk1vZGFsUG9wdXBJO1xuICAgIH1cblxuICAgIG1hcFByZXNzTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblByZXNzTGlzdEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKT8uWzBdLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgIH0gYXMgQmFieWxvblByZXNzTGlzdEk7XG4gICAgfVxuXG4gICAgbWFwQWN0aW9uQmFubmVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQWN0aW9uQmFubmVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmFjdGlvbmJhbm5lcmltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZTI6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5hY3Rpb25iYW5uZXJpbWFnZTI/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIHRhYmxlOiBwcm9wcz8udGV4dHM/LnRhYmxlLFxuICAgICAgICAgICAgc2FsYTE6IHByb3BzPy50ZXh0cz8uc2FsYTEsXG4gICAgICAgICAgICBzYWxhMjogcHJvcHM/LnRleHRzPy5zYWxhMixcbiAgICAgICAgfSBhcyBCYWJ5bG9uQWN0aW9uQmFubmVySTtcbiAgICB9XG4gICAgbWFwSW5mb1ppZ1phZ0NvdW50ZXIoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uSW5mb1ppZ1phZ0NvdW50ZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IGltYWdlczogKHN0cmluZyB8IEJhYnlsb25JbWFnZUkpW10gfCB1bmRlZmluZWQgPSBbXTtcbiAgICAgICAgbGV0IHRleHRzLCB0YWdzO1xuICAgICAgICBjb25zdCBkYXRlU3RhcnQgPSBwcm9wcz8udGV4dHM/LmRhdGVzdGFydDtcbiAgICAgICAgY29uc3QgZGF0ZUZpbmlzaCA9IHByb3BzPy50ZXh0cz8uZGF0ZWZpbmlzaDtcbiAgICAgICAgaWYgKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcykge1xuICAgICAgICAgICAgaW1hZ2VzID0gdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMsXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0ZXh0cyA9IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICAgICAodHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgICAgICh0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCksXG4gICAgICAgICAgICAgICAgY29udGVudHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnR0aXRsZT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnR0aXRsZSxcbiAgICAgICAgICAgICAgICBjb250ZW50c3VidGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudHN1YnRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudHN1YnRpdGxlLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50ZGVzY3JpcHRpb24/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50ZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgbG9nbzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBpY29uczogcHJvcHM/LlZlbnRhamFzPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/LnRpdGxlIHx8IGl0ZW0/LnRleHRcbiAgICAgICAgICAgICAgICApPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmljb259YCxcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgaWNvblRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/Lmljb250aXRsZT8uY29udGFpbiA/PyBwcm9wcz8udGV4dHM/Lmljb250aXRsZSxcbiAgICAgICAgICAgICAgICBkYXlzVGV4dDogcHJvcHM/LnRleHRzPy5kYXlzdGV4dCxcbiAgICAgICAgICAgICAgICBob3Vyc1RleHQ6IHByb3BzPy50ZXh0cz8uaG91cnN0ZXh0LFxuICAgICAgICAgICAgICAgIG1pbnV0ZXNUZXh0OiBwcm9wcz8udGV4dHM/Lm1pbnV0ZXN0ZXh0LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRhZ3MgPSB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNvbnRlbnR0aXRsZTogcHJvcHM/LnRleHRzPy5jb250ZW50dGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjb250ZW50c3VidGl0bGU6IHByb3BzPy50ZXh0cz8uY29udGVudHN1YnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY29udGVudGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmNvbnRlbnRkZXNjcmlwdGlvbj8udGFnLFxuICAgICAgICAgICAgICAgIGljb25UaXRsZTogcHJvcHM/LnRleHRzPy5pY29udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnMuZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0ZXh0cyxcbiAgICAgICAgICAgIGltYWdlcyxcbiAgICAgICAgICAgIHRhZ3MsXG4gICAgICAgICAgICBkYXRlU3RhcnQsXG4gICAgICAgICAgICBkYXRlRmluaXNoLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvWmlnWmFnQ291bnRlckk7XG4gICAgfVxuICAgIG1hcEdyQzJJbWcocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25HckMySW1nSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgKHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/LmhvdGVscz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgYWx0OiBpdGVtPy5tdWx0aW1lZGlhPy5bMF0/LmFsdCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIEJhYnlsb25HckMySW1nSTtcbiAgICB9XG4gICAgbWFwTGlzQzRUeHRJY28ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25MaXNDNFR4dEljb0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gcHJvcHM7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlUmVzcG9uc2Uge1xuICAgIHBhdGg6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgIHRodW1ibmFpbHM6IHtcbiAgICAgICAgMzc1OiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICAgICAgNTQwOiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICAgICAgNzY4OiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICAgICAgODAwOiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICAgICAgMTAyNDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDEyODA6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgICAgICAxMzY2OiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICB9O1xuICAgIGNvdmVyOiBudW1iZXI7XG4gICAgdGFncz86IGFueVtdO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHByZXRpdGxlPzogc3RyaW5nO1xuICAgIHN1YnRpdGxlPzogc3RyaW5nO1xuICAgIG5kVGl0bGU/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgbGlua3M/OiBhbnlbXTtcbiAgICBidXR0b25zPzogYW55W107XG4gICAgYWx0Pzogc3RyaW5nO1xuICAgIGFjdGl2ZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VSZXNwb25zZVBhdGgge1xuICAgIG9yaWdpbmFsOiBzdHJpbmc7XG4gICAgd2VicDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudHNBZGRvbnMge1xuICAgIGNvbnRhY3RPZmZpY2U/OiBhbnk7XG4gICAgbWVudVNvY2lhbE1lZGlhPzogeyBbazogc3RyaW5nXTogc3RyaW5nIH1bXTtcbiAgICBjb25zdWx0VHlwZT86IENvbnN1bHRUeXBlSTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJPcHRpb24ge1xuICAgIGlkPzogbnVtYmVyO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgY2hpbGRyZW4/OiBGaWx0ZXJPcHRpb247XG59XG4iXX0=